You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tasks/astrid/src/main/java/com/todoroo/astrid/activity/SortSelectionActivity.java

153 lines
5.3 KiB
Java

/**
* Copyright (c) 2012 Todoroo Inc
*
* See the file "LICENSE" for the full license governing this code.
*/
package com.todoroo.astrid.activity;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.view.View;
import android.widget.CheckBox;
import android.widget.RadioButton;
import org.tasks.R;
import com.todoroo.astrid.core.SortHelper;
/**
* Shows the sort / hidden dialog
*
* @author Tim Su <tim@todoroo.com>
*
*/
public class SortSelectionActivity {
public interface OnSortSelectedListener {
public void onSortSelected(boolean always, int flags, int sort);
}
/**
* Create the dialog
* @param activity
* @return
*/
public static AlertDialog createDialog(Activity activity, boolean showDragDrop,
OnSortSelectedListener listener, int flags, int sort) {
View body = activity.getLayoutInflater().inflate(R.layout.sort_selection_dialog, null);
if((flags & SortHelper.FLAG_REVERSE_SORT) > 0) {
((CheckBox) body.findViewById(R.id.reverse)).setChecked(true);
}
if((flags & SortHelper.FLAG_SHOW_COMPLETED) > 0) {
((CheckBox) body.findViewById(R.id.completed)).setChecked(true);
}
if((flags & SortHelper.FLAG_SHOW_HIDDEN) > 0) {
((CheckBox) body.findViewById(R.id.hidden)).setChecked(true);
}
if((flags & SortHelper.FLAG_SHOW_DELETED) > 0) {
((CheckBox) body.findViewById(R.id.deleted)).setChecked(true);
}
if(!showDragDrop) {
body.findViewById(R.id.sort_drag).setVisibility(View.GONE);
}
if(showDragDrop && (flags & SortHelper.FLAG_DRAG_DROP) > 0) {
((RadioButton) body.findViewById(R.id.sort_drag)).setChecked(true);
} else {
switch(sort) {
case SortHelper.SORT_ALPHA:
((RadioButton)body.findViewById(R.id.sort_alpha)).setChecked(true);
break;
case SortHelper.SORT_DUE:
((RadioButton)body.findViewById(R.id.sort_due)).setChecked(true);
break;
case SortHelper.SORT_IMPORTANCE:
((RadioButton)body.findViewById(R.id.sort_importance)).setChecked(true);
break;
case SortHelper.SORT_MODIFIED:
((RadioButton)body.findViewById(R.id.sort_modified)).setChecked(true);
break;
default:
((RadioButton)body.findViewById(R.id.sort_smart)).setChecked(true);
}
}
body.findViewById(R.id.sort_drag).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// disable reverse
}
});
AlertDialog dialog = new AlertDialog.Builder(activity).
setTitle(R.string.TLA_menu_sort).
setView(body).
setPositiveButton(R.string.SSD_save_always,
new DialogOkListener(body, listener, true)).
setNegativeButton(R.string.SSD_save_temp,
new DialogOkListener(body, listener, false)).
create();
dialog.setOwnerActivity(activity);
return dialog;
}
// --- internal implementation
private SortSelectionActivity() {
// use the static method
}
private static class DialogOkListener implements OnClickListener {
private final OnSortSelectedListener listener;
private final boolean always;
private final View body;
public DialogOkListener(View body, OnSortSelectedListener listener, boolean always) {
this.body = body;
this.listener = listener;
this.always = always;
}
@Override
public void onClick(DialogInterface view, int button) {
int flags = 0;
int sort = 0;
if(((CheckBox)body.findViewById(R.id.reverse)).isChecked()) {
flags |= SortHelper.FLAG_REVERSE_SORT;
}
if(((CheckBox)body.findViewById(R.id.completed)).isChecked()) {
flags |= SortHelper.FLAG_SHOW_COMPLETED;
}
if(((CheckBox)body.findViewById(R.id.hidden)).isChecked()) {
flags |= SortHelper.FLAG_SHOW_HIDDEN;
}
if(((CheckBox)body.findViewById(R.id.deleted)).isChecked()) {
flags |= SortHelper.FLAG_SHOW_DELETED;
}
if(((RadioButton)body.findViewById(R.id.sort_drag)).isChecked()) {
flags |= SortHelper.FLAG_DRAG_DROP;
}
if(((RadioButton)body.findViewById(R.id.sort_alpha)).isChecked()) {
sort = SortHelper.SORT_ALPHA;
} else if(((RadioButton)body.findViewById(R.id.sort_due)).isChecked()) {
sort = SortHelper.SORT_DUE;
} else if(((RadioButton)body.findViewById(R.id.sort_importance)).isChecked()) {
sort = SortHelper.SORT_IMPORTANCE;
} else if(((RadioButton)body.findViewById(R.id.sort_modified)).isChecked()) {
sort = SortHelper.SORT_MODIFIED;
} else {
sort = SortHelper.SORT_AUTO;
}
listener.onSortSelected(always, flags, sort);
}
}
}