package org.sugr.gearshift.ui.util;
import android.support.v7.app.AlertDialog;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.TextView;
import org.sugr.gearshift.G;
import org.sugr.gearshift.R;
import org.sugr.gearshift.core.TransmissionSession;
import org.sugr.gearshift.service.DataService;
import org.sugr.gearshift.service.DataServiceManager;
import org.sugr.gearshift.service.DataServiceManagerInterface;
import org.sugr.gearshift.ui.BaseTorrentActivity;
import org.sugr.gearshift.ui.TransmissionSessionInterface;
import org.sugr.gearshift.util.CheatSheet;
public class QueueManagementDialogHelper {
private BaseTorrentActivity activity;
private AlertDialog dialog;
public QueueManagementDialogHelper(BaseTorrentActivity activity) {
if (!(activity instanceof TransmissionSessionInterface)
|| !(activity instanceof DataServiceManagerInterface)) {
throw new IllegalArgumentException("Invalid activity instance");
}
this.activity = activity;
}
public AlertDialog showDialog(final String[] hashStrings) {
LayoutInflater inflater = activity.getLayoutInflater();
final TransmissionSession session = activity.getSession();
final DataServiceManager manager = activity.getDataServiceManager();
if (session == null || manager == null) {
return null;
}
final View view = inflater.inflate(R.layout.torrent_queue_management_popup, null);
final AlertDialog.Builder builder = new AlertDialog.Builder(activity)
.setView(view)
.setTitle(R.string.queue_management);
if (dialog != null) {
dialog.dismiss();
}
dialog = builder.create();
dialog.show();
TextView label = (TextView) dialog.findViewById(R.id.queue_label);
label.setText(activity.getResources().getQuantityString(R.plurals.queue_label, hashStrings.length));
View button = dialog.findViewById(R.id.queue_top);
CheatSheet.setup(button);
button.setOnClickListener(v -> {
manager.setTorrentAction(hashStrings, G.TorrentAction.QUEUE_MOVE_TOP);
activity.setRefreshing(true, DataService.Requests.SET_TORRENT_ACTION);
dialog.dismiss();
});
button = dialog.findViewById(R.id.queue_up);
CheatSheet.setup(button);
button.setOnClickListener(v -> {
manager.setTorrentAction(hashStrings, G.TorrentAction.QUEUE_MOVE_UP);
activity.setRefreshing(true, DataService.Requests.SET_TORRENT_ACTION);
dialog.dismiss();
});
button = dialog.findViewById(R.id.queue_down);
CheatSheet.setup(button);
button.setOnClickListener(v -> {
manager.setTorrentAction(hashStrings, G.TorrentAction.QUEUE_MOVE_DOWN);
activity.setRefreshing(true, DataService.Requests.SET_TORRENT_ACTION);
dialog.dismiss();
});
button = dialog.findViewById(R.id.queue_bottom);
CheatSheet.setup(button);
button.setOnClickListener(v -> {
manager.setTorrentAction(hashStrings, G.TorrentAction.QUEUE_MOVE_BOTTOM);
activity.setRefreshing(true, DataService.Requests.SET_TORRENT_ACTION);
dialog.dismiss();
});
return dialog;
}
public void reset() {
if (dialog != null) {
dialog.dismiss();
dialog = null;
}
}
}