mirror of
https://github.com/moparisthebest/k-9
synced 2025-02-07 02:30:10 -05:00
filter on folder-selection
This commit is contained in:
parent
08b8066441
commit
97001b6edb
39
res/menu/folder_select_option.xml
Normal file
39
res/menu/folder_select_option.xml
Normal file
@ -0,0 +1,39 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<menu xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<!--
|
||||
<item
|
||||
android:title="@string/folder_list_display_mode_label"
|
||||
android:icon="@drawable/ic_show_folders"
|
||||
>
|
||||
<menu>-->
|
||||
<item
|
||||
android:id="@+id/display_all"
|
||||
android:title="@string/folder_list_display_mode_all"
|
||||
android:icon="@drawable/ic_menu_clear"
|
||||
/>
|
||||
<item
|
||||
android:id="@+id/display_1st_class"
|
||||
android:title="@string/folder_list_display_mode_first_class"
|
||||
android:icon="@drawable/ic_menu_clear"
|
||||
/>
|
||||
<item
|
||||
android:id="@+id/display_1st_and_2nd_class"
|
||||
android:title="@string/folder_list_display_mode_first_and_second_class"
|
||||
android:icon="@drawable/ic_menu_clear"
|
||||
/>
|
||||
<item
|
||||
android:id="@+id/display_not_second_class"
|
||||
android:title="@string/folder_list_display_mode_not_second_class"
|
||||
android:icon="@drawable/ic_menu_clear"
|
||||
/>
|
||||
<item
|
||||
android:id="@+id/list_folders"
|
||||
android:title="@string/refresh_folders_action"
|
||||
android:icon="@drawable/ic_menu_refresh"
|
||||
/>
|
||||
|
||||
<!-- </menu>
|
||||
</item>-->
|
||||
|
||||
|
||||
</menu>
|
@ -5,6 +5,8 @@ import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.util.Log;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
import android.view.Window;
|
||||
import android.widget.AdapterView;
|
||||
@ -13,6 +15,7 @@ import android.widget.Filter;
|
||||
import android.widget.ListView;
|
||||
import android.widget.TextView;
|
||||
import com.fsck.k9.*;
|
||||
import com.fsck.k9.Account.FolderMode;
|
||||
import com.fsck.k9.controller.MessagingController;
|
||||
import com.fsck.k9.controller.MessagingListener;
|
||||
import com.fsck.k9.mail.Folder;
|
||||
@ -34,6 +37,20 @@ public class ChooseFolder extends K9ListActivity
|
||||
boolean showOptionNone = false;
|
||||
boolean showDisplayableOnly = false;
|
||||
|
||||
/**
|
||||
* What folders to display.<br/>
|
||||
* Initialized to whatever is configured
|
||||
* but can be overridden via {@link #onOptionsItemSelected(MenuItem)}
|
||||
* while this activity is showing.
|
||||
*/
|
||||
private Account.FolderMode mMode;
|
||||
/**
|
||||
* Current filter used by our ArrayAdapter.<br/>
|
||||
* Created on the fly and invalidated if a new
|
||||
* set of folders is chosen via {@link #onOptionsItemSelected(MenuItem)}
|
||||
*/
|
||||
private FolderListFilter<String> myFilter = null;
|
||||
|
||||
public static final String EXTRA_ACCOUNT = "com.fsck.k9.ChooseFolder_account";
|
||||
public static final String EXTRA_CUR_FOLDER = "com.fsck.k9.ChooseFolder_curfolder";
|
||||
public static final String EXTRA_SEL_FOLDER = "com.fsck.k9.ChooseFolder_selfolder";
|
||||
@ -169,6 +186,55 @@ public class ChooseFolder extends K9ListActivity
|
||||
}
|
||||
}
|
||||
|
||||
@Override public boolean onCreateOptionsMenu(Menu menu)
|
||||
{
|
||||
super.onCreateOptionsMenu(menu);
|
||||
getMenuInflater().inflate(R.menu.folder_select_option, menu);
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override public boolean onOptionsItemSelected(MenuItem item)
|
||||
{
|
||||
switch (item.getItemId())
|
||||
{
|
||||
|
||||
|
||||
case R.id.display_1st_class:
|
||||
{
|
||||
setDisplayMode(FolderMode.FIRST_CLASS);
|
||||
return true;
|
||||
}
|
||||
case R.id.display_1st_and_2nd_class:
|
||||
{
|
||||
setDisplayMode(FolderMode.FIRST_AND_SECOND_CLASS);
|
||||
return true;
|
||||
}
|
||||
case R.id.display_not_second_class:
|
||||
{
|
||||
setDisplayMode(FolderMode.NOT_SECOND_CLASS);
|
||||
return true;
|
||||
}
|
||||
case R.id.display_all:
|
||||
{
|
||||
setDisplayMode(FolderMode.ALL);
|
||||
return true;
|
||||
}
|
||||
default:
|
||||
return super.onOptionsItemSelected(item);
|
||||
}
|
||||
}
|
||||
|
||||
private void setDisplayMode(FolderMode aMode) {
|
||||
mMode = aMode;
|
||||
// invalidate the current filter as it is working on an inval
|
||||
if (myFilter != null) {
|
||||
myFilter.invalidate();
|
||||
}
|
||||
//re-populate the list
|
||||
MessagingController.getInstance(getApplication()).listFolders(mAccount,
|
||||
false, mListener);
|
||||
}
|
||||
|
||||
private MessagingListener mListener = new MessagingListener()
|
||||
{
|
||||
@Override
|
||||
@ -207,15 +273,7 @@ public class ChooseFolder extends K9ListActivity
|
||||
{
|
||||
return;
|
||||
}
|
||||
Account.FolderMode aMode = Account.FolderMode.ALL;
|
||||
if (showDisplayableOnly)
|
||||
{
|
||||
aMode = account.getFolderDisplayMode();
|
||||
}
|
||||
else
|
||||
{
|
||||
aMode = account.getFolderTargetMode();
|
||||
}
|
||||
Account.FolderMode aMode = mMode;
|
||||
Preferences prefs = Preferences.getPreferences(getApplication().getApplicationContext());
|
||||
ArrayList<String> localFolders = new ArrayList<String>();
|
||||
|
||||
|
@ -1613,19 +1613,19 @@ public class FolderList extends K9ListActivity
|
||||
|
||||
SearchSpecification searchSpec = new SearchSpecification()
|
||||
{
|
||||
@Override
|
||||
//interface has no override @Override
|
||||
public String[] getAccountUuids()
|
||||
{
|
||||
return new String[] { account.getUuid() };
|
||||
}
|
||||
|
||||
@Override
|
||||
//interface has no override @Override
|
||||
public Flag[] getForbiddenFlags()
|
||||
{
|
||||
return UNREAD_FLAG_ARRAY;
|
||||
}
|
||||
|
||||
@Override
|
||||
//interface has no override @Override
|
||||
public String getQuery()
|
||||
{
|
||||
return "";
|
||||
|
@ -135,4 +135,8 @@ public class FolderListFilter<T> extends Filter
|
||||
// Send notification that the data set changed now
|
||||
mFolders.notifyDataSetChanged();
|
||||
}
|
||||
|
||||
public void invalidate() {
|
||||
mOriginalValues = null;
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user