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.Bundle;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
import android.view.Menu;
|
||||||
|
import android.view.MenuItem;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.Window;
|
import android.view.Window;
|
||||||
import android.widget.AdapterView;
|
import android.widget.AdapterView;
|
||||||
@ -13,6 +15,7 @@ import android.widget.Filter;
|
|||||||
import android.widget.ListView;
|
import android.widget.ListView;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
import com.fsck.k9.*;
|
import com.fsck.k9.*;
|
||||||
|
import com.fsck.k9.Account.FolderMode;
|
||||||
import com.fsck.k9.controller.MessagingController;
|
import com.fsck.k9.controller.MessagingController;
|
||||||
import com.fsck.k9.controller.MessagingListener;
|
import com.fsck.k9.controller.MessagingListener;
|
||||||
import com.fsck.k9.mail.Folder;
|
import com.fsck.k9.mail.Folder;
|
||||||
@ -34,6 +37,20 @@ public class ChooseFolder extends K9ListActivity
|
|||||||
boolean showOptionNone = false;
|
boolean showOptionNone = false;
|
||||||
boolean showDisplayableOnly = 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_ACCOUNT = "com.fsck.k9.ChooseFolder_account";
|
||||||
public static final String EXTRA_CUR_FOLDER = "com.fsck.k9.ChooseFolder_curfolder";
|
public static final String EXTRA_CUR_FOLDER = "com.fsck.k9.ChooseFolder_curfolder";
|
||||||
public static final String EXTRA_SEL_FOLDER = "com.fsck.k9.ChooseFolder_selfolder";
|
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()
|
private MessagingListener mListener = new MessagingListener()
|
||||||
{
|
{
|
||||||
@Override
|
@Override
|
||||||
@ -207,15 +273,7 @@ public class ChooseFolder extends K9ListActivity
|
|||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Account.FolderMode aMode = Account.FolderMode.ALL;
|
Account.FolderMode aMode = mMode;
|
||||||
if (showDisplayableOnly)
|
|
||||||
{
|
|
||||||
aMode = account.getFolderDisplayMode();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
aMode = account.getFolderTargetMode();
|
|
||||||
}
|
|
||||||
Preferences prefs = Preferences.getPreferences(getApplication().getApplicationContext());
|
Preferences prefs = Preferences.getPreferences(getApplication().getApplicationContext());
|
||||||
ArrayList<String> localFolders = new ArrayList<String>();
|
ArrayList<String> localFolders = new ArrayList<String>();
|
||||||
|
|
||||||
|
@ -1613,19 +1613,19 @@ public class FolderList extends K9ListActivity
|
|||||||
|
|
||||||
SearchSpecification searchSpec = new SearchSpecification()
|
SearchSpecification searchSpec = new SearchSpecification()
|
||||||
{
|
{
|
||||||
@Override
|
//interface has no override @Override
|
||||||
public String[] getAccountUuids()
|
public String[] getAccountUuids()
|
||||||
{
|
{
|
||||||
return new String[] { account.getUuid() };
|
return new String[] { account.getUuid() };
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
//interface has no override @Override
|
||||||
public Flag[] getForbiddenFlags()
|
public Flag[] getForbiddenFlags()
|
||||||
{
|
{
|
||||||
return UNREAD_FLAG_ARRAY;
|
return UNREAD_FLAG_ARRAY;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
//interface has no override @Override
|
||||||
public String getQuery()
|
public String getQuery()
|
||||||
{
|
{
|
||||||
return "";
|
return "";
|
||||||
|
@ -135,4 +135,8 @@ public class FolderListFilter<T> extends Filter
|
|||||||
// Send notification that the data set changed now
|
// Send notification that the data set changed now
|
||||||
mFolders.notifyDataSetChanged();
|
mFolders.notifyDataSetChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void invalidate() {
|
||||||
|
mOriginalValues = null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user