package com.sabdroidex.fragments.dialogs;
import android.support.v4.app.FragmentActivity;
import android.util.Log;
import android.widget.Toast;
import com.sabdroidex.R;
import com.sabdroidex.controllers.couchpotato.CouchPotatoController;
import com.sabdroidex.controllers.sickbeard.SickBeardController;
import com.sabdroidex.data.couchpotato.MovieSearch;
import com.sabdroidex.data.sickbeard.ShowSearch;
import com.sabdroidex.fragments.dialogs.couchpotato.AddMovieDialog;
import com.sabdroidex.fragments.dialogs.couchpotato.AddMovieSelectDialog;
import com.sabdroidex.fragments.dialogs.sabnzbd.AddNzbDialog;
import com.sabdroidex.fragments.dialogs.sabnzbd.AddNzbFileDialog;
import com.sabdroidex.fragments.dialogs.sickbeard.AddShowDialog;
import com.sabdroidex.fragments.dialogs.sickbeard.AddShowSelectDialog;
import com.sabdroidex.utils.SABHandler;
public class DialogFragmentManager implements DialogActionsListener {
private static final String TAG = DialogFragmentManager.class.getCanonicalName();
/**
* This is the parent activity which is used to summon the dialogs.
*/
private static FragmentActivity mActivity;
/**
* Instantiating the Handler associated with this
* {@link DialogFragmentManager}.
*/
private final SABHandler messageHandler = new SABHandler() {
public void handleMessage(android.os.Message msg) {
if (msg.what == SickBeardController.MESSAGE.SB_SEARCHTVDB.hashCode()) {
try {
ShowSearch showSearch = (ShowSearch) msg.obj;
showAddShowSelectionDialog(showSearch);
} catch (Exception e) {
Log.w(TAG, e.getLocalizedMessage());
}
}
if (msg.what == SickBeardController.MESSAGE.SHOW_ADDNEW.hashCode()) {
try {
String text = mActivity.getString(R.string.add_show_dialog_title) + " : " + msg.obj;
Toast.makeText(mActivity, text, Toast.LENGTH_LONG).show();
} catch (Exception e) {
Log.w(TAG, e.getLocalizedMessage());
}
}
if (msg.what == CouchPotatoController.MESSAGE.MOVIE_SEARCH.hashCode()) {
try {
MovieSearch movieSearch = (MovieSearch) msg.obj;
showAddMovieSelectionDialog(movieSearch);
} catch (Exception e) {
Log.w(TAG, e.getLocalizedMessage());
}
}
if (msg.what == CouchPotatoController.MESSAGE.MOVIE_ADD.hashCode()) {
// TODO: USE the resource bundle no hard coded strings !!!!!!
if ("Error".equals(msg.obj)) {
Toast.makeText(mActivity, "Failed to add movie\nCheck settings!", Toast.LENGTH_LONG).show();
} else if (!"".equals(msg.obj)) {
Toast.makeText(mActivity, "Added: " + msg.obj, Toast.LENGTH_LONG).show();
}
}
}
};
/**
* Constructor
*
* @param activity
*/
public DialogFragmentManager(FragmentActivity activity) {
mActivity = activity;
}
/**
* Displays a dialog proposing to add a nzb, show, movie, ...
*/
public void showAddDialog() {
AddDialog addDialog = new AddDialog();
AddDialog.setAddDialogListener(this);
addDialog.show(mActivity.getSupportFragmentManager(), "add");
}
/**
* Displays a dialog to add a nzb to sabnzbd
*/
@Override
public void showAddNzbDialog() {
AddNzbDialog addNzbDialog = new AddNzbDialog();
AddNzbDialog.setMessageHandler(messageHandler);
addNzbDialog.show(mActivity.getSupportFragmentManager(), "addnzb");
}
/**
* Displays a dialog to add an opened nzb to sabnzbd
*/
@Override
public void showAddNzbFileDialog(String path) {
AddNzbFileDialog addNzbFileDialog = new AddNzbFileDialog();
AddNzbFileDialog.setMessageHandler(messageHandler);
AddNzbFileDialog.setPath(path);
addNzbFileDialog.show(mActivity.getSupportFragmentManager(), "addnzbfile");
}
/**
* Displays a pop-up dialog when the user wants to add a show to SickBeard
*/
@Override
public void showAddShowDialog() {
AddShowDialog addShowDialog = new AddShowDialog();
AddShowDialog.setMessageHandler(messageHandler);
addShowDialog.show(mActivity.getSupportFragmentManager(), "addshow");
}
/**
* Displays the propositions dialog with the resulting show names found
* after a user search to add a show to Sickbeard.
*
* @param showSearch The result of the search query
*/
private void showAddShowSelectionDialog(final ShowSearch showSearch) {
AddShowSelectDialog addShowSelectDialog = new AddShowSelectDialog();
AddShowSelectDialog.setMessageHandler(messageHandler);
AddShowSelectDialog.setShowSearch(showSearch);
addShowSelectDialog.show(mActivity.getSupportFragmentManager(), "selectshow");
}
@Override
public void showAddMovieDialog() {
AddMovieDialog addMovieDialog = new AddMovieDialog();
AddMovieDialog.setMessageHandler(messageHandler);
addMovieDialog.show(mActivity.getSupportFragmentManager(), "addshow");
}
/**
* Displays the propositions dialog with the resulting movie titles found
* after a user search to add a movie to CouchPotato.
*
* @param movieSearch The result of the search query that will be used to generate the proposition list in the {@link AddMovieSelectDialog}
*/
private void showAddMovieSelectionDialog(final MovieSearch movieSearch) {
AddMovieSelectDialog addMovieSelectDialog = new AddMovieSelectDialog();
AddMovieSelectDialog.setMessageHandler(messageHandler);
AddMovieSelectDialog.setMovieList(movieSearch);
addMovieSelectDialog.show(mActivity.getSupportFragmentManager(), "selectmovie");
}
/**
* Displays a dialog to invite the user to setup his configuration
*/
@Override
public void showSetupDialog() {
SetupDialog setupDialog = new SetupDialog();
setupDialog.show(mActivity.getSupportFragmentManager(), "setup");
}
/**
* Displays a dialog when the application has been updated, it usually
* contains a description of what has been modified in the new version
*/
@Override
public void showNewVersionDialog() {
NewVersionDialog newVersionDialog = new NewVersionDialog();
newVersionDialog.show(mActivity.getSupportFragmentManager(), "newversion");
}
}