diff options
19 files changed, 207 insertions, 62 deletions
diff --git a/org.fox.ttrss/src/main/AndroidManifest.xml b/org.fox.ttrss/src/main/AndroidManifest.xml index 0db6432f..370e1f71 100644 --- a/org.fox.ttrss/src/main/AndroidManifest.xml +++ b/org.fox.ttrss/src/main/AndroidManifest.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="org.fox.ttrss" - android:versionCode="264" - android:versionName="1.59" > + android:versionCode="267" + android:versionName="1.62" > <uses-sdk android:minSdkVersion="9" diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/ArticlePager.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/ArticlePager.java index 6f45432b..3015eec0 100644 --- a/org.fox.ttrss/src/main/java/org/fox/ttrss/ArticlePager.java +++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/ArticlePager.java @@ -233,7 +233,7 @@ public class ArticlePager extends Fragment { put("view_mode", m_activity.getViewMode()); put("skip", String.valueOf(fskip)); put("include_nested", "true"); - put("order_by", m_prefs.getBoolean("oldest_first", false) ? "date_reverse" : ""); + put("order_by", m_activity.getSortMode()); if (feed.is_cat) put("is_cat", "true"); @@ -279,7 +279,7 @@ public class ArticlePager extends Fragment { GlobalState.getInstance().m_activeFeed = m_feed; } - m_activity.initMenu(); + m_activity.invalidateOptionsMenu(); if (!m_activity.isCompatMode() && m_prefs.getBoolean("dim_status_bar", false)) { getView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE); diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/FeedCategoriesFragment.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/FeedCategoriesFragment.java index 5ec0ba60..740d43b9 100644 --- a/org.fox.ttrss/src/main/java/org/fox/ttrss/FeedCategoriesFragment.java +++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/FeedCategoriesFragment.java @@ -257,7 +257,7 @@ public class FeedCategoriesFragment extends Fragment implements OnItemClickListe refresh(false); - m_activity.initMenu(); + m_activity.invalidateOptionsMenu(); } @Override diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/FeedsActivity.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/FeedsActivity.java index 622fdda3..49c482ab 100644 --- a/org.fox.ttrss/src/main/java/org/fox/ttrss/FeedsActivity.java +++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/FeedsActivity.java @@ -2,6 +2,9 @@ package org.fox.ttrss; import android.annotation.SuppressLint; +import android.app.AlertDialog; +import android.app.Dialog; +import android.content.DialogInterface; import android.content.Intent; import android.content.SharedPreferences; import android.os.Bundle; @@ -294,11 +297,63 @@ public class FeedsActivity extends OnlineActivity implements HeadlinesEventListe switch (item.getItemId()) { case android.R.id.home: - onBackPressed(); + //getSupportFragmentManager().popBackStack(); return true; - case R.id.show_feeds: + case R.id.headlines_toggle_sort_order: + Dialog dialog = new Dialog(this); + + String sortMode = getSortMode(); + + int selectedIndex = 0; + + if (sortMode.equals("feed_dates")) { + selectedIndex = 1; + } else if (sortMode.equals("date_reverse")) { + selectedIndex = 2; + } else if (sortMode.equals("title")) { + selectedIndex = 3; + } + + AlertDialog.Builder builder = new AlertDialog.Builder(this) + .setTitle(getString(R.string.headlines_sort_articles_title)) + .setSingleChoiceItems( + new String[] { + getString(R.string.headlines_sort_default), + getString(R.string.headlines_sort_newest_first), + getString(R.string.headlines_sort_oldest_first), + getString(R.string.headlines_sort_title) + }, + selectedIndex, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, + int which) { + switch (which) { + case 0: + setSortMode("default"); + break; + case 1: + setSortMode("feed_dates"); + break; + case 2: + setSortMode("date_reverse"); + break; + case 3: + setSortMode("title"); + break; + } + dialog.cancel(); + + refresh(); + } + }); + + dialog = builder.create(); + dialog.show(); + + return true; + case R.id.show_feeds: setUnreadOnly(!getUnreadOnly()); - initMenu(); + invalidateOptionsMenu(); refresh(); return true; case R.id.update_feeds: @@ -310,10 +365,15 @@ public class FeedsActivity extends OnlineActivity implements HeadlinesEventListe return super.onOptionsItemSelected(item); } } - + + @Override + public void onBackPressed() { + finish(); + } + @Override protected void loginSuccess(boolean refresh) { - initMenu(); + invalidateOptionsMenu(); if (refresh) refresh(); } @@ -330,12 +390,12 @@ public class FeedsActivity extends OnlineActivity implements HeadlinesEventListe @Override public void onResume() { super.onResume(); - initMenu(); + invalidateOptionsMenu(); } @Override public void onArticleListSelectionChange(ArticleList m_selectedArticles) { - initMenu(); + invalidateOptionsMenu(); } public void openFeedArticles(Feed feed) { @@ -368,7 +428,7 @@ public class FeedsActivity extends OnlineActivity implements HeadlinesEventListe overridePendingTransition(R.anim.right_slide_in, 0); } else { - initMenu(); + invalidateOptionsMenu(); } } diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/FeedsFragment.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/FeedsFragment.java index ab54c698..a5b0a37a 100644 --- a/org.fox.ttrss/src/main/java/org/fox/ttrss/FeedsFragment.java +++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/FeedsFragment.java @@ -304,7 +304,7 @@ public class FeedsFragment extends Fragment implements OnItemClickListener, OnSh parentBtn.setOnClickListener(new OnClickListener() { @Override public void onClick(View view) { - m_activity.onBackPressed(); + m_activity.getSupportFragmentManager().popBackStack(); } }); } else { @@ -350,7 +350,7 @@ public class FeedsFragment extends Fragment implements OnItemClickListener, OnSh refresh(false); - m_activity.initMenu(); + m_activity.invalidateOptionsMenu(); } @Override diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/HeadlinesActivity.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/HeadlinesActivity.java index 4a04526f..fb68247d 100644 --- a/org.fox.ttrss/src/main/java/org/fox/ttrss/HeadlinesActivity.java +++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/HeadlinesActivity.java @@ -151,7 +151,7 @@ public class HeadlinesActivity extends OnlineActivity implements HeadlinesEventL protected void loginSuccess(boolean refresh) { Log.d(TAG, "loginSuccess"); - initMenu(); + invalidateOptionsMenu(); if (refresh) refresh(); } @@ -221,7 +221,7 @@ public class HeadlinesActivity extends OnlineActivity implements HeadlinesEventL @Override public void onArticleListSelectionChange(ArticleList m_selectedArticles) { - initMenu(); + invalidateOptionsMenu(); } @Override @@ -267,7 +267,7 @@ public class HeadlinesActivity extends OnlineActivity implements HeadlinesEventL GlobalState.getInstance().m_activeArticle = article; - initMenu(); + invalidateOptionsMenu(); } diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/HeadlinesFragment.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/HeadlinesFragment.java index 69d6033a..646ac11e 100644 --- a/org.fox.ttrss/src/main/java/org/fox/ttrss/HeadlinesFragment.java +++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/HeadlinesFragment.java @@ -377,7 +377,7 @@ public class HeadlinesFragment extends Fragment implements OnItemClickListener, notifyUpdated(); } - m_activity.initMenu(); + m_activity.invalidateOptionsMenu(); } @Override @@ -541,7 +541,7 @@ public class HeadlinesFragment extends Fragment implements OnItemClickListener, put("offset", String.valueOf(0)); put("skip", String.valueOf(fskip)); put("include_nested", "true"); - put("order_by", m_prefs.getBoolean("oldest_first", false) ? "date_reverse" : ""); + put("order_by", m_activity.getSortMode()); if (isCat) put("is_cat", "true"); diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/OnlineActivity.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/OnlineActivity.java index 244f40a4..2d1a0a84 100644 --- a/org.fox.ttrss/src/main/java/org/fox/ttrss/OnlineActivity.java +++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/OnlineActivity.java @@ -113,7 +113,7 @@ public class OnlineActivity extends CommonActivity { ArticleList selected = hf.getSelectedArticles(); if (selected.size() > 0) { selected.clear(); - initMenu(); + invalidateOptionsMenu(); hf.notifyUpdated(); } } @@ -908,7 +908,7 @@ public class OnlineActivity extends CommonActivity { break; } dialog.cancel(); - initMenu(); + invalidateOptionsMenu(); } }); @@ -934,7 +934,7 @@ public class OnlineActivity extends CommonActivity { ArticleList selected = hf.getSelectedArticles(); if (selected.size() > 0) { selected.clear(); - initMenu(); + invalidateOptionsMenu(); hf.notifyUpdated(); } } @@ -949,7 +949,7 @@ public class OnlineActivity extends CommonActivity { toggleArticlesUnread(selected); hf.notifyUpdated(); - initMenu(); + invalidateOptionsMenu(); } } return true; @@ -963,7 +963,7 @@ public class OnlineActivity extends CommonActivity { toggleArticlesMarked(selected); hf.notifyUpdated(); - initMenu(); + invalidateOptionsMenu(); } } return true; @@ -977,7 +977,7 @@ public class OnlineActivity extends CommonActivity { toggleArticlesPublished(selected); hf.notifyUpdated(); - initMenu(); + invalidateOptionsMenu(); } } return true; @@ -1008,7 +1008,7 @@ public class OnlineActivity extends CommonActivity { if (tmp.size() > 0) { toggleArticlesUnread(tmp); hf.notifyUpdated(); - initMenu(); + invalidateOptionsMenu(); } } } @@ -1331,7 +1331,7 @@ public class OnlineActivity extends CommonActivity { ApiRequest req = new ApiRequest(getApplicationContext()) { protected void onPostExecute(JsonElement result) { //toast(article.marked ? R.string.notify_article_marked : R.string.notify_article_unmarked); - initMenu(); + invalidateOptionsMenu(); } }; @@ -1354,7 +1354,7 @@ public class OnlineActivity extends CommonActivity { ApiRequest req = new ApiRequest(getApplicationContext()) { protected void onPostExecute(JsonElement result) { //toast(article.published ? R.string.notify_article_published : R.string.notify_article_unpublished); - initMenu(); + invalidateOptionsMenu(); } }; @@ -1723,13 +1723,23 @@ public class OnlineActivity extends CommonActivity { } - public void setViewMode(String viewMode) { + public String getSortMode() { + return m_prefs.getString("headlines_sort_mode", "default"); + } + + public void setSortMode(String sortMode) { + SharedPreferences.Editor editor = m_prefs.edit(); + editor.putString("headlines_sort_mode", sortMode); + editor.commit(); + } + + public void setViewMode(String viewMode) { SharedPreferences.Editor editor = m_prefs.edit(); editor.putString("view_mode", viewMode); editor.commit(); } - - public String getViewMode() { + + public String getViewMode() { return m_prefs.getString("view_mode", "adaptive"); } diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineActivity.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineActivity.java index 6059bf2f..56e95400 100644 --- a/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineActivity.java +++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineActivity.java @@ -171,7 +171,7 @@ public class OfflineActivity extends CommonActivity { setContentView(R.layout.login); - initMenu(); + invalidateOptionsMenu(); Intent intent = getIntent(); @@ -389,7 +389,7 @@ public class OfflineActivity extends CommonActivity { int which) { selectArticles(ohf.getFeedId(), ohf.getFeedIsCat(), which); - initMenu(); + invalidateOptionsMenu(); refresh(); dialog.cancel(); @@ -788,7 +788,7 @@ public class OfflineActivity extends CommonActivity { ohf.refresh(); } - initMenu(); + invalidateOptionsMenu(); } public void catchupFeed(int feedId, boolean isCat) { @@ -823,7 +823,21 @@ public class OfflineActivity extends CommonActivity { editor.putString("offline_view_mode", viewMode); editor.commit(); } - + + /* public boolean getOldestFirst() { + return getSortMode().equals("oldest_first"); + } + + public String getSortMode() { + return m_prefs.getString("offline_headlines_sort_mode", "default"); + } + + public void setSortMode(String sortMode) { + SharedPreferences.Editor editor = m_prefs.edit(); + editor.putString("offline_headlines_sort_mode", sortMode); + editor.commit(); + } */ + public String getViewMode() { return m_prefs.getString("offline_view_mode", "adaptive"); } diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineFeedsActivity.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineFeedsActivity.java index 7decee7b..b82f2486 100644 --- a/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineFeedsActivity.java +++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineFeedsActivity.java @@ -1,7 +1,11 @@ package org.fox.ttrss.offline; import android.annotation.SuppressLint; +import android.app.AlertDialog; +import android.app.Dialog; +import android.content.DialogInterface; import android.content.Intent; +import android.content.SharedPreferences; import android.database.sqlite.SQLiteStatement; import android.os.Bundle; import android.os.Handler; @@ -100,8 +104,6 @@ public class OfflineFeedsActivity extends OfflineActivity implements OfflineHead ft.commit(); } - - initMenu(); } protected void onPostCreate(Bundle savedInstanceState) { @@ -129,11 +131,58 @@ public class OfflineFeedsActivity extends OfflineActivity implements OfflineHead switch (item.getItemId()) { case android.R.id.home: - onBackPressed(); + //getSupportFragmentManager().popBackStack(); return true; + case R.id.headlines_toggle_sort_order: + /* SharedPreferences.Editor editor = m_prefs.edit(); + editor.putBoolean("offline_oldest_first", !m_prefs.getBoolean("offline_oldest_first", false)); + editor.commit(); + refresh(); */ + + Dialog dialog = new Dialog(this); + + int selectedIndex = m_prefs.getBoolean("offline_oldest_first", false) ? 1 : 0; + + AlertDialog.Builder builder = new AlertDialog.Builder(this) + .setTitle(getString(R.string.headlines_sort_articles_title)) + .setSingleChoiceItems( + new String[] { + getString(R.string.headlines_sort_default), + getString(R.string.headlines_sort_oldest_first) + }, + selectedIndex, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, + int which) { + switch (which) { + case 0: + if (true) { + SharedPreferences.Editor editor = m_prefs.edit(); + editor.putBoolean("offline_oldest_first", false); + editor.commit(); + } + break; + case 1: + if (true) { + SharedPreferences.Editor editor = m_prefs.edit(); + editor.putBoolean("offline_oldest_first", true); + editor.commit(); + } + break; + } + dialog.cancel(); + + refresh(); + } + }); + + dialog = builder.create(); + dialog.show(); + + return true; case R.id.show_feeds: setUnreadOnly(!getUnreadOnly()); - initMenu(); + invalidateOptionsMenu(); refresh(); return true; default: @@ -215,8 +264,13 @@ public class OfflineFeedsActivity extends OfflineActivity implements OfflineHead ft.commit(); } } - - public void onFeedSelected(int feedId) { + + @Override + public void onBackPressed() { + finish(); + } + + public void onFeedSelected(int feedId) { onFeedSelected(feedId, false, true); } @@ -267,7 +321,7 @@ public class OfflineFeedsActivity extends OfflineActivity implements OfflineHead stmt.close(); } - initMenu(); + invalidateOptionsMenu(); if (open) { OfflineHeadlinesFragment hf = (OfflineHeadlinesFragment) getSupportFragmentManager().findFragmentByTag(FRAG_HEADLINES); @@ -284,8 +338,6 @@ public class OfflineFeedsActivity extends OfflineActivity implements OfflineHead } else { refresh(); } - - initMenu(); } diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineFeedsFragment.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineFeedsFragment.java index 65f34398..ea6e59e3 100644 --- a/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineFeedsFragment.java +++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineFeedsFragment.java @@ -179,7 +179,7 @@ public class OfflineFeedsFragment extends Fragment implements OnItemClickListene parentBtn.setOnClickListener(new OnClickListener() { @Override public void onClick(View view) { - m_activity.onBackPressed(); + m_activity.getSupportFragmentManager().popBackStack(); } }); } else { diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineHeadlinesActivity.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineHeadlinesActivity.java index 18bf63cd..51cfefeb 100644 --- a/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineHeadlinesActivity.java +++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineHeadlinesActivity.java @@ -116,8 +116,6 @@ public class OfflineHeadlinesActivity extends OfflineActivity implements Offline } } - - initMenu(); } protected void onPostCreate(Bundle savedInstanceState) { @@ -172,7 +170,7 @@ public class OfflineHeadlinesActivity extends OfflineActivity implements Offline GlobalState.getInstance().m_selectedArticleId = articleId; - initMenu(); + invalidateOptionsMenu(); refresh(); } diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineHeadlinesFragment.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineHeadlinesFragment.java index 245be57b..324f57fb 100644 --- a/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineHeadlinesFragment.java +++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineHeadlinesFragment.java @@ -245,7 +245,7 @@ public class OfflineHeadlinesFragment extends Fragment implements OnItemClickLis refresh(); - m_activity.initMenu(); + m_activity.invalidateOptionsMenu(); } public void refresh() { @@ -658,7 +658,7 @@ public class OfflineHeadlinesFragment extends Fragment implements OnItemClickLis refresh(); - m_activity.initMenu(); + m_activity.invalidateOptionsMenu(); } }); diff --git a/org.fox.ttrss/src/main/res/drawable-hdpi/ic_action_sort_by_size.png b/org.fox.ttrss/src/main/res/drawable-hdpi/ic_action_sort_by_size.png Binary files differnew file mode 100644 index 00000000..d4404a37 --- /dev/null +++ b/org.fox.ttrss/src/main/res/drawable-hdpi/ic_action_sort_by_size.png diff --git a/org.fox.ttrss/src/main/res/drawable-xhdpi/ic_action_sort_by_size.png b/org.fox.ttrss/src/main/res/drawable-xhdpi/ic_action_sort_by_size.png Binary files differnew file mode 100644 index 00000000..700b9763 --- /dev/null +++ b/org.fox.ttrss/src/main/res/drawable-xhdpi/ic_action_sort_by_size.png diff --git a/org.fox.ttrss/src/main/res/menu/main_menu.xml b/org.fox.ttrss/src/main/res/menu/main_menu.xml index 673435b8..2bb72bc9 100644 --- a/org.fox.ttrss/src/main/res/menu/main_menu.xml +++ b/org.fox.ttrss/src/main/res/menu/main_menu.xml @@ -55,11 +55,17 @@ android:title="@string/headlines_mark_as_read"/> <item android:id="@+id/headlines_select" - app:showAsAction="ifRoom" + app:showAsAction="" android:icon="@drawable/ic_select_all_light" android:title="@string/headlines_select"/> <item + android:id="@+id/headlines_toggle_sort_order" + android:icon="@drawable/ic_action_sort_by_size" + app:showAsAction="ifRoom" + android:title="@string/toggle_sort_order"/> + + <item android:id="@+id/headlines_view_mode" app:showAsAction="" android:title="@string/headlines_view_mode"/> diff --git a/org.fox.ttrss/src/main/res/menu/offline_menu.xml b/org.fox.ttrss/src/main/res/menu/offline_menu.xml index cebeaf09..6f576cdd 100644 --- a/org.fox.ttrss/src/main/res/menu/offline_menu.xml +++ b/org.fox.ttrss/src/main/res/menu/offline_menu.xml @@ -16,6 +16,7 @@ <group android:id="@+id/menu_group_headlines" > <item android:id="@+id/search" + app:showAsAction="ifRoom" android:icon="@drawable/ic_search_light" android:title="@string/search"/> <item @@ -26,8 +27,15 @@ <item android:id="@+id/headlines_select" android:icon="@drawable/ic_select_all_light" - app:showAsAction="ifRoom" + app:showAsAction="" android:title="@string/headlines_select"/> + + <item + android:id="@+id/headlines_toggle_sort_order" + android:icon="@drawable/ic_action_sort_by_size" + app:showAsAction="ifRoom" + android:title="@string/toggle_sort_order"/> + <item android:id="@+id/headlines_view_mode" app:showAsAction="" diff --git a/org.fox.ttrss/src/main/res/values/strings.xml b/org.fox.ttrss/src/main/res/values/strings.xml index b271472b..35d13b58 100644 --- a/org.fox.ttrss/src/main/res/values/strings.xml +++ b/org.fox.ttrss/src/main/res/values/strings.xml @@ -242,5 +242,11 @@ <string name="action_settings">Settings</string> <string name="error_loading_image">Error loading image.</string> <string name="open_parent">Open parent</string> + <string name="toggle_sort_order">Toggle oldest first</string> + <string name="headlines_sort_default">Default</string> + <string name="headlines_sort_newest_first">Newest first</string> + <string name="headlines_sort_oldest_first">Oldest first</string> + <string name="headlines_sort_title">Title</string> + <string name="headlines_sort_articles_title">Sort articles</string> </resources> diff --git a/org.fox.ttrss/src/main/res/xml/preferences.xml b/org.fox.ttrss/src/main/res/xml/preferences.xml index 7ee21f84..ec1c6418 100644 --- a/org.fox.ttrss/src/main/res/xml/preferences.xml +++ b/org.fox.ttrss/src/main/res/xml/preferences.xml @@ -106,11 +106,6 @@ <CheckBoxPreference android:defaultValue="false" - android:key="oldest_first" - android:summary="@string/requires_api5" - android:title="@string/offline_oldest_first" /> - <CheckBoxPreference - android:defaultValue="false" android:key="headlines_mark_read_scroll" android:summary="@string/pref_headlines_mark_read_scroll_long" android:title="@string/pref_headlines_mark_read_scroll" /> @@ -171,10 +166,6 @@ android:key="offline_image_cache_enabled" android:summary="@string/offline_image_cache_enabled_summary" android:title="@string/offline_image_cache_enabled" /> - <CheckBoxPreference - android:defaultValue="false" - android:key="offline_oldest_first" - android:title="@string/offline_oldest_first" /> </PreferenceCategory> <PreferenceCategory android:title="@string/debugging" > <CheckBoxPreference |