/*
DroidBeard - a free, open-source Android app for managing SickBeard
Copyright (C) 2014-2015 Robert Carr
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see http://www.gnu.org/licenses/.
*/
package com.rastating.droidbeard;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.graphics.Color;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import com.rastating.droidbeard.entities.ShowSearchResult;
import com.rastating.droidbeard.net.AddShowTask;
import com.rastating.droidbeard.net.ApiResponseListener;
import com.rastating.droidbeard.net.SearchTvDBTask;
import com.rastating.droidbeard.net.SickbeardAsyncTask;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
public class ShowSearch extends Activity implements ApiResponseListener<ShowSearchResult[]> {
private EditText mCriteria;
private ProgressDialog mDialog;
private ListView mListView;
private Button mSearchButton;
private SearchTvDBTask mTask;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_show_search);
mCriteria = (EditText) findViewById(R.id.criteria);
mListView = (ListView) findViewById(R.id.list_view);
mSearchButton = (Button) findViewById(R.id.search);
mSearchButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
showProgressDialog("Searching The TVDB", "Please wait...");
mTask = new SearchTvDBTask(ShowSearch.this);
mTask.addResponseListener(ShowSearch.this);
mTask.start(mCriteria.getText().toString());
}
});
mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
TextView idView = (TextView) view.findViewById(R.id.id);
boolean isTVRageResult = ((TextView) view.findViewById(R.id.tvrage_result)).getText().toString().equals("1");
long id = Long.valueOf(idView.getText().toString());
showProgressDialog("Adding Show", "Please wait...");
AddShowTask task = new AddShowTask(ShowSearch.this, isTVRageResult);
task.addResponseListener(new ApiResponseListener<Boolean>() {
@Override
public void onApiRequestFinished(SickbeardAsyncTask sender, Boolean result) {
mDialog.dismiss();
AlertDialog.Builder builder = new AlertDialog.Builder(ShowSearch.this);
builder.setTitle("Show Queued")
.setMessage("The show has been queued to be added in Sickbeard.")
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
ShowSearch.this.finish();
}
})
.create()
.show();
}
});
task.start(id);
}
});
Preferences preferences = new Preferences(this);
if (!preferences.hasAcknowledgedShowAddingHelp()) {
showToolTip();
}
}
@Override
protected void onDestroy() {
super.onDestroy();
if (mTask != null) {
mTask.cancel(true);
}
}
@Override
public void onApiRequestFinished(SickbeardAsyncTask sender, ShowSearchResult[] results) {
mTask = null;
mDialog.dismiss();
if (results != null) {
ArrayList<Map<String, String>> data = new ArrayList<Map<String, String>>(results.length);
for (ShowSearchResult result : results) {
HashMap<String, String> item = new HashMap<String, String>();
item.put("name", result.getName());
item.put("first_aired", result.getFirstAired());
item.put("id", String.valueOf(result.getId()));
item.put("tvrage_result", result.getIsTVRageResult() ? "1" : "0");
data.add(item);
}
String[] from = new String[] { "name", "first_aired", "id", "tvrage_result" };
int[] to = new int[] { R.id.name, R.id.first_aired, R.id.id, R.id.tvrage_result };
SimpleAdapter adapter = new SimpleAdapter(this, data, R.layout.tvdb_result_item, from, to) {
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = super.getView(position, convertView, parent);
if (position % 2 == 0) {
view.setBackgroundResource(R.drawable.alternate_list_item_bg);
} else {
view.setBackgroundColor(Color.TRANSPARENT);
}
return view;
}
};
mListView.setAdapter(adapter);
}
else {
mListView.setAdapter(null);
}
}
private void showProgressDialog(String caption, String message) {
mDialog = new ProgressDialog(ShowSearch.this);
mDialog.setTitle(caption);
mDialog.setMessage(message);
mDialog.setCancelable(false);
mDialog.setIndeterminate(true);
mDialog.show();
}
private void showToolTip() {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
LayoutInflater inflater = LayoutInflater.from(this);
View view = inflater.inflate(R.layout.tooltip_dialog, null);
final CheckBox checkBox = (CheckBox) view.findViewById(R.id.do_not_show_again);
builder.setView(view);
builder.setTitle("DroidBeard Tip");
builder.setMessage("Before adding a show through DroidBeard, you must first ensure you have setup your default options in SickBeard; such as the storage location and quality settings. This can be done in the 'Add Shows' page in SickBeard itself.");
builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
if (checkBox.isChecked()) {
Preferences preferences = new Preferences(ShowSearch.this);
preferences.putBoolean(Preferences.ACKNOWLEDGED_SHOW_ADDING_HELP, true);
}
}
});
builder.show();
}
}