mirror of
https://github.com/moparisthebest/k-9
synced 2024-11-02 00:25:10 -04:00
Use the Android framework to manage the find folder dialog
This commit is contained in:
parent
ff4d6a66c8
commit
3f29b95846
@ -24,6 +24,7 @@ import android.widget.AdapterView.OnItemClickListener;
|
|||||||
import com.fsck.k9.*;
|
import com.fsck.k9.*;
|
||||||
import com.fsck.k9.Account.FolderMode;
|
import com.fsck.k9.Account.FolderMode;
|
||||||
import com.fsck.k9.activity.FolderInfoHolder;
|
import com.fsck.k9.activity.FolderInfoHolder;
|
||||||
|
import com.fsck.k9.activity.FolderList.FolderListAdapter.FolderListFilter;
|
||||||
import com.fsck.k9.activity.setup.Prefs;
|
import com.fsck.k9.activity.setup.Prefs;
|
||||||
import com.fsck.k9.activity.setup.AccountSettings;
|
import com.fsck.k9.activity.setup.AccountSettings;
|
||||||
import com.fsck.k9.activity.setup.FolderSettings;
|
import com.fsck.k9.activity.setup.FolderSettings;
|
||||||
@ -50,8 +51,11 @@ import java.util.List;
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
public class FolderList extends K9ListActivity {
|
public class FolderList extends K9ListActivity {
|
||||||
|
/*
|
||||||
|
* Constants for showDialog() etc.
|
||||||
|
*/
|
||||||
private static final int DIALOG_MARK_ALL_AS_READ = 1;
|
private static final int DIALOG_MARK_ALL_AS_READ = 1;
|
||||||
|
private static final int DIALOG_FIND_FOLDER = 2;
|
||||||
|
|
||||||
private static final String EXTRA_ACCOUNT = "account";
|
private static final String EXTRA_ACCOUNT = "account";
|
||||||
|
|
||||||
@ -414,6 +418,7 @@ public class FolderList extends K9ListActivity {
|
|||||||
if (mAccount.getFolderPushMode() != FolderMode.NONE) {
|
if (mAccount.getFolderPushMode() != FolderMode.NONE) {
|
||||||
MailService.actionRestartPushers(this, null);
|
MailService.actionRestartPushers(this, null);
|
||||||
}
|
}
|
||||||
|
mAdapter.getFilter().filter(null);
|
||||||
onRefresh(false);
|
onRefresh(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -429,44 +434,7 @@ public class FolderList extends K9ListActivity {
|
|||||||
* Filter {@link #mAdapter} with the user-input.
|
* Filter {@link #mAdapter} with the user-input.
|
||||||
*/
|
*/
|
||||||
private void onEnterFilter() {
|
private void onEnterFilter() {
|
||||||
final AlertDialog.Builder filterAlert = new AlertDialog.Builder(this);
|
showDialog(DIALOG_FIND_FOLDER);
|
||||||
|
|
||||||
final EditText input = new EditText(this);
|
|
||||||
input.addTextChangedListener(new TextWatcher() {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onTextChanged(CharSequence s, int start, int before, int count) {
|
|
||||||
mAdapter.getFilter().filter(input.getText().toString());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void beforeTextChanged(CharSequence s, int start, int count,
|
|
||||||
int after) {
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void afterTextChanged(Editable s) {
|
|
||||||
}
|
|
||||||
});
|
|
||||||
input.setHint(R.string.folder_list_filter_hint);
|
|
||||||
filterAlert.setView(input);
|
|
||||||
|
|
||||||
filterAlert.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
|
|
||||||
public void onClick(DialogInterface dialog, int whichButton) {
|
|
||||||
String value = input.getText().toString().trim();
|
|
||||||
mAdapter.getFilter().filter(value);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
filterAlert.setNegativeButton("Cancel",
|
|
||||||
new DialogInterface.OnClickListener() {
|
|
||||||
public void onClick(DialogInterface dialog, int whichButton) {
|
|
||||||
mAdapter.getFilter().filter("");
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
filterAlert.show();
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onEditPrefs() {
|
private void onEditPrefs() {
|
||||||
@ -686,19 +654,59 @@ public class FolderList extends K9ListActivity {
|
|||||||
@Override
|
@Override
|
||||||
public Dialog onCreateDialog(int id) {
|
public Dialog onCreateDialog(int id) {
|
||||||
switch (id) {
|
switch (id) {
|
||||||
case DIALOG_MARK_ALL_AS_READ:
|
case DIALOG_MARK_ALL_AS_READ:
|
||||||
return ConfirmationDialog.create(this, id,
|
return ConfirmationDialog.create(this, id, R.string.mark_all_as_read_dlg_title,
|
||||||
R.string.mark_all_as_read_dlg_title,
|
getString(R.string.mark_all_as_read_dlg_instructions_fmt,
|
||||||
getString(R.string.mark_all_as_read_dlg_instructions_fmt,
|
mSelectedContextFolder.displayName),
|
||||||
mSelectedContextFolder.displayName),
|
R.string.okay_action, R.string.cancel_action,
|
||||||
R.string.okay_action,
|
new Runnable() {
|
||||||
R.string.cancel_action,
|
@Override
|
||||||
new Runnable() {
|
public void run() {
|
||||||
@Override
|
markAllAsRead();
|
||||||
public void run() {
|
}
|
||||||
markAllAsRead();
|
});
|
||||||
}
|
case DIALOG_FIND_FOLDER: {
|
||||||
});
|
AlertDialog.Builder builder = new AlertDialog.Builder(this);
|
||||||
|
builder.setTitle(R.string.filter_folders_action);
|
||||||
|
|
||||||
|
final EditText input = new EditText(this);
|
||||||
|
input.setId(R.id.filter_folders);
|
||||||
|
input.setHint(R.string.folder_list_filter_hint);
|
||||||
|
input.addTextChangedListener(new TextWatcher() {
|
||||||
|
@Override
|
||||||
|
public void onTextChanged(CharSequence s, int start, int before, int count) {
|
||||||
|
mAdapter.getFilter().filter(input.getText());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void beforeTextChanged(CharSequence s, int start, int count,
|
||||||
|
int after) { /* not used */ }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void afterTextChanged(Editable s) { /* not used */ }
|
||||||
|
});
|
||||||
|
|
||||||
|
builder.setView(input);
|
||||||
|
|
||||||
|
builder.setPositiveButton(getString(R.string.okay_action),
|
||||||
|
new DialogInterface.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(DialogInterface dialog, int whichButton) {
|
||||||
|
String value = input.getText().toString();
|
||||||
|
mAdapter.getFilter().filter(value);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
builder.setNegativeButton(getString(R.string.cancel_action),
|
||||||
|
new DialogInterface.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(DialogInterface dialog, int whichButton) {
|
||||||
|
mAdapter.getFilter().filter(null);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
return builder.create();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return super.onCreateDialog(id);
|
return super.onCreateDialog(id);
|
||||||
@ -707,14 +715,27 @@ public class FolderList extends K9ListActivity {
|
|||||||
@Override
|
@Override
|
||||||
public void onPrepareDialog(int id, Dialog dialog) {
|
public void onPrepareDialog(int id, Dialog dialog) {
|
||||||
switch (id) {
|
switch (id) {
|
||||||
case DIALOG_MARK_ALL_AS_READ:
|
case DIALOG_MARK_ALL_AS_READ: {
|
||||||
((AlertDialog)dialog).setMessage(getString(R.string.mark_all_as_read_dlg_instructions_fmt,
|
AlertDialog alertDialog = (AlertDialog) dialog;
|
||||||
mSelectedContextFolder.displayName));
|
alertDialog.setMessage(getString(R.string.mark_all_as_read_dlg_instructions_fmt,
|
||||||
|
mSelectedContextFolder.displayName));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case DIALOG_FIND_FOLDER: {
|
||||||
|
AlertDialog alertDialog = (AlertDialog) dialog;
|
||||||
|
EditText input = (EditText) alertDialog.findViewById(R.id.filter_folders);
|
||||||
|
|
||||||
break;
|
// Populate the EditText with the current search term
|
||||||
|
FolderListFilter filter = (FolderListFilter) mAdapter.getFilter();
|
||||||
|
input.setText(filter.getSearchTerm());
|
||||||
|
|
||||||
default:
|
// Place the cursor at the end of the text
|
||||||
super.onPrepareDialog(id, dialog);
|
input.setSelection(input.getText().length());
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
default: {
|
||||||
|
super.onPrepareDialog(id, dialog);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1187,6 +1208,11 @@ public class FolderList extends K9ListActivity {
|
|||||||
* @author Marcus@Wolschon.biz
|
* @author Marcus@Wolschon.biz
|
||||||
*/
|
*/
|
||||||
public class FolderListFilter extends Filter {
|
public class FolderListFilter extends Filter {
|
||||||
|
private CharSequence mSearchTerm;
|
||||||
|
|
||||||
|
public CharSequence getSearchTerm() {
|
||||||
|
return mSearchTerm;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Do the actual search.
|
* Do the actual search.
|
||||||
@ -1196,6 +1222,7 @@ public class FolderList extends K9ListActivity {
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
protected FilterResults performFiltering(CharSequence searchTerm) {
|
protected FilterResults performFiltering(CharSequence searchTerm) {
|
||||||
|
mSearchTerm = searchTerm;
|
||||||
FilterResults results = new FilterResults();
|
FilterResults results = new FilterResults();
|
||||||
|
|
||||||
if ((searchTerm == null) || (searchTerm.length() == 0)) {
|
if ((searchTerm == null) || (searchTerm.length() == 0)) {
|
||||||
|
Loading…
Reference in New Issue
Block a user