diff options
author | Andrew Dolgov <[email protected]> | 2011-12-06 09:03:55 +0300 |
---|---|---|
committer | Andrew Dolgov <[email protected]> | 2011-12-06 09:03:55 +0300 |
commit | 72a8b558e6459c0a6631fb16ad34011dbef426d8 (patch) | |
tree | 68c982750045b67bfabe17ee29b978d2456f2378 /src/org | |
parent | d1cb963452b65f8d266d9f57299d0f2619b058cb (diff) |
code cleanup, use separate menu for offline mode, start implementing
menu actions
Diffstat (limited to 'src/org')
-rw-r--r-- | src/org/fox/ttrss/MainActivity.java | 18 | ||||
-rw-r--r-- | src/org/fox/ttrss/OfflineActivity.java | 157 | ||||
-rw-r--r-- | src/org/fox/ttrss/OfflineArticleFragment.java | 2 | ||||
-rw-r--r-- | src/org/fox/ttrss/OfflineFeedsFragment.java | 12 | ||||
-rw-r--r-- | src/org/fox/ttrss/OfflineHeadlinesFragment.java | 31 |
5 files changed, 160 insertions, 60 deletions
diff --git a/src/org/fox/ttrss/MainActivity.java b/src/org/fox/ttrss/MainActivity.java index 21d6b3f5..37297782 100644 --- a/src/org/fox/ttrss/MainActivity.java +++ b/src/org/fox/ttrss/MainActivity.java @@ -696,10 +696,7 @@ public class MainActivity extends FragmentActivity implements FeedsFragment.OnFe @SuppressWarnings("unchecked") @Override public boolean onOptionsItemSelected(MenuItem item) { - HeadlinesFragment hf = null; - - if (m_sessionId != null) - hf = (HeadlinesFragment)getSupportFragmentManager().findFragmentById(R.id.headlines_fragment); + final HeadlinesFragment hf = (HeadlinesFragment)getSupportFragmentManager().findFragmentById(R.id.headlines_fragment); switch (item.getItemId()) { case R.id.preferences: @@ -732,7 +729,6 @@ public class MainActivity extends FragmentActivity implements FeedsFragment.OnFe return true; case R.id.headlines_select: if (hf != null) { - final HeadlinesFragment fhf = hf; Dialog dialog = new Dialog(this); AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle(R.string.headlines_select_dialog); @@ -743,13 +739,13 @@ public class MainActivity extends FragmentActivity implements FeedsFragment.OnFe public void onClick(DialogInterface dialog, int which) { switch (which) { case 0: - fhf.setSelection(HeadlinesFragment.ArticlesSelection.ALL); + hf.setSelection(HeadlinesFragment.ArticlesSelection.ALL); break; case 1: - fhf.setSelection(HeadlinesFragment.ArticlesSelection.UNREAD); + hf.setSelection(HeadlinesFragment.ArticlesSelection.UNREAD); break; case 2: - fhf.setSelection(HeadlinesFragment.ArticlesSelection.NONE); + hf.setSelection(HeadlinesFragment.ArticlesSelection.NONE); break; } dialog.cancel(); @@ -1014,13 +1010,13 @@ public class MainActivity extends FragmentActivity implements FeedsFragment.OnFe m_menu.setGroupVisible(R.id.menu_group_article, false); m_menu.setGroupVisible(R.id.menu_group_headlines_selection, false); - if (m_isOffline) { + /* if (m_isOffline) { m_menu.setGroupVisible(R.id.menu_group_logged_out, false); m_menu.findItem(R.id.go_online).setVisible(true); - } else { + } else { */ m_menu.setGroupVisible(R.id.menu_group_logged_out, true); - } + //} } } } diff --git a/src/org/fox/ttrss/OfflineActivity.java b/src/org/fox/ttrss/OfflineActivity.java index 8fbceb0f..8df855d8 100644 --- a/src/org/fox/ttrss/OfflineActivity.java +++ b/src/org/fox/ttrss/OfflineActivity.java @@ -13,6 +13,7 @@ import android.content.DialogInterface; import android.content.Intent; import android.content.SharedPreferences; import android.content.pm.PackageInfo; +import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteStatement; import android.net.ConnectivityManager; @@ -51,8 +52,8 @@ public class OfflineActivity extends FragmentActivity { private boolean m_compatMode = false; private boolean m_enableCats = false; - private int m_activeOfflineFeedId = 0; - private int m_selectedOfflineArticleId = 0; + private int m_activeFeedId = 0; + private int m_selectedArticleId = 0; private SQLiteDatabase m_readableDb; private SQLiteDatabase m_writableDb; @@ -82,8 +83,8 @@ public class OfflineActivity extends FragmentActivity { if (savedInstanceState != null) { m_unreadOnly = savedInstanceState.getBoolean("unreadOnly"); m_unreadArticlesOnly = savedInstanceState.getBoolean("unreadArticlesOnly"); - m_activeOfflineFeedId = savedInstanceState.getInt("offlineActiveFeedId"); - m_selectedOfflineArticleId = savedInstanceState.getInt("offlineArticleId"); + m_activeFeedId = savedInstanceState.getInt("offlineActiveFeedId"); + m_selectedArticleId = savedInstanceState.getInt("offlineArticleId"); } m_enableCats = m_prefs.getBoolean("enable_cats", false); @@ -119,7 +120,7 @@ public class OfflineActivity extends FragmentActivity { findViewById(R.id.loading_container).setVisibility(View.INVISIBLE); findViewById(R.id.main).setVisibility(View.VISIBLE); - if (m_activeOfflineFeedId == 0) { + if (m_activeFeedId == 0) { FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); OfflineFeedsFragment frag = new OfflineFeedsFragment(); ft.replace(R.id.feeds_fragment, frag); @@ -154,7 +155,7 @@ public class OfflineActivity extends FragmentActivity { } public int getActiveOfflineFeedId() { - return m_activeOfflineFeedId; + return m_activeFeedId; } public void setLoadingStatus(int status, boolean showProgress) { @@ -177,8 +178,23 @@ public class OfflineActivity extends FragmentActivity { out.putBoolean("unreadOnly", m_unreadOnly); out.putBoolean("unreadArticlesOnly", m_unreadArticlesOnly); - out.putInt("offlineActiveFeedId", m_activeOfflineFeedId); - out.putInt("offlineArticleId", m_selectedOfflineArticleId); + out.putInt("offlineActiveFeedId", m_activeFeedId); + out.putInt("offlineArticleId", m_selectedArticleId); + } + + public void setUnreadOnly(boolean unread) { + m_unreadOnly = unread; + + refreshFeeds(); + + /*if (!m_enableCats || m_activeCategory != null ) + refreshFeeds(); + else + refreshCategories(); */ + } + + public boolean getUnreadOnly() { + return m_unreadOnly; } @Override @@ -198,7 +214,7 @@ public class OfflineActivity extends FragmentActivity { @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); - inflater.inflate(R.menu.main_menu, menu); + inflater.inflate(R.menu.offline_menu, menu); m_menu = menu; @@ -206,11 +222,11 @@ public class OfflineActivity extends FragmentActivity { MenuItem item = menu.findItem(R.id.show_feeds); - /* if (getUnreadOnly()) { + if (getUnreadOnly()) { item.setTitle(R.string.menu_all_feeds); } else { item.setTitle(R.string.menu_unread_feeds); - } */ + } return true; } @@ -228,9 +244,9 @@ public class OfflineActivity extends FragmentActivity { if (keyCode == KeyEvent.KEYCODE_BACK) { if (m_smallScreenMode) { - if (m_selectedOfflineArticleId != 0) { + if (m_selectedArticleId != 0) { closeArticle(); - } else if (m_activeOfflineFeedId != 0) { + } else if (m_activeFeedId != 0) { if (m_compatMode) { findViewById(R.id.main).setAnimation(AnimationUtils.loadAnimation(this, R.anim.slide_right)); } @@ -244,14 +260,14 @@ public class OfflineActivity extends FragmentActivity { findViewById(R.id.headlines_fragment).setVisibility(View.GONE); findViewById(R.id.feeds_fragment).setVisibility(View.VISIBLE); //} - m_activeOfflineFeedId = 0; + m_activeFeedId = 0; initMainMenu(); } else { finish(); } } else { - if (m_selectedOfflineArticleId != 0) { + if (m_selectedArticleId != 0) { closeArticle(); } else { finish(); @@ -263,7 +279,33 @@ public class OfflineActivity extends FragmentActivity { return super.onKeyDown(keyCode, event); } - @SuppressWarnings("unchecked") + public Cursor getArticleById(int articleId) { + Cursor c = getReadableDb().query("articles", null, BaseColumns._ID + "=?", + new String[] { String.valueOf(articleId) }, null, null, null); + + c.moveToFirst(); + + return c; + } + + public void shareArticle(int articleId) { + + Cursor article = getArticleById(articleId); + + if (article.isFirst()) { + Intent intent = new Intent(Intent.ACTION_SEND); + + intent.setType("text/plain"); + intent.putExtra(Intent.EXTRA_SUBJECT, article.getString(article.getColumnIndex("title"))); + intent.putExtra(Intent.EXTRA_TEXT, article.getString(article.getColumnIndex("link"))); + + startActivity(Intent.createChooser(intent, getString(R.id.share_article))); + } + + article.close(); + } + + @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { @@ -274,6 +316,19 @@ public class OfflineActivity extends FragmentActivity { case R.id.go_online: switchOnline(); return true; + case R.id.share_article: + shareArticle(m_selectedArticleId); + return true; + case R.id.show_feeds: + setUnreadOnly(!getUnreadOnly()); + + if (getUnreadOnly()) { + item.setTitle(R.string.menu_all_feeds); + } else { + item.setTitle(R.string.menu_unread_feeds); + } + + return true; default: Log.d(TAG, "onOptionsItemSelected, unhandled id=" + item.getItemId()); return super.onOptionsItemSelected(item); @@ -281,7 +336,11 @@ public class OfflineActivity extends FragmentActivity { } public void refreshFeeds() { - // TODO + OfflineFeedsFragment frag = (OfflineFeedsFragment)getSupportFragmentManager().findFragmentById(R.id.feeds_fragment); + + if (frag != null) { + frag.refresh(); + } } private void closeArticle() { @@ -297,7 +356,7 @@ public class OfflineActivity extends FragmentActivity { } - m_selectedOfflineArticleId = 0; + m_selectedArticleId = 0; initMainMenu(); refreshFeeds(); @@ -306,13 +365,57 @@ public class OfflineActivity extends FragmentActivity { public void initMainMenu() { if (m_menu != null) { - m_menu.setGroupVisible(R.id.menu_group_logged_in, false); m_menu.setGroupVisible(R.id.menu_group_feeds, false); m_menu.setGroupVisible(R.id.menu_group_headlines, false); m_menu.setGroupVisible(R.id.menu_group_article, false); m_menu.setGroupVisible(R.id.menu_group_headlines_selection, false); - - m_menu.setGroupVisible(R.id.menu_group_logged_out, false); + + if (m_selectedArticleId != 0) { + m_menu.setGroupVisible(R.id.menu_group_article, true); + + m_menu.setGroupVisible(R.id.menu_group_feeds, false); + + if (m_smallScreenMode) { + m_menu.setGroupVisible(R.id.menu_group_headlines, false); + m_menu.setGroupVisible(R.id.menu_group_headlines_selection, false); + } else { + m_menu.setGroupVisible(R.id.menu_group_headlines, true); + } + + } else { + if (m_activeFeedId != 0) { + + OfflineHeadlinesFragment hf = (OfflineHeadlinesFragment)getSupportFragmentManager().findFragmentById(R.id.headlines_fragment); + + if (hf != null) { + int numSelected = hf.getSelectedArticles().size(); + + if (numSelected != 0) { + m_menu.setGroupVisible(R.id.menu_group_headlines, false); + m_menu.setGroupVisible(R.id.menu_group_headlines_selection, true); + } else { + m_menu.setGroupVisible(R.id.menu_group_headlines, true); + m_menu.setGroupVisible(R.id.menu_group_headlines_selection, false); + } + + } else { + m_menu.setGroupVisible(R.id.menu_group_headlines, true); + m_menu.setGroupVisible(R.id.menu_group_headlines_selection, false); + } + + m_menu.setGroupVisible(R.id.menu_group_feeds, false); + } else { + m_menu.setGroupVisible(R.id.menu_group_feeds, true); + } + + if (!m_smallScreenMode || m_activeFeedId == 0) { + m_menu.findItem(R.id.show_feeds).setVisible(true); + } + + //m_menu.findItem(R.id.back_to_categories).setVisible(m_activeCategory != null); + m_menu.findItem(R.id.back_to_categories).setVisible(false); + + } m_menu.findItem(R.id.go_online).setVisible(true); } } @@ -403,8 +506,8 @@ public class OfflineActivity extends FragmentActivity { } } */ - public void offlineViewFeed(int feedId) { - m_activeOfflineFeedId = feedId; + public void viewFeed(int feedId) { + m_activeFeedId = feedId; initMainMenu(); @@ -420,8 +523,8 @@ public class OfflineActivity extends FragmentActivity { } - public void openOfflineArticle(int articleId, int compatAnimation) { - m_selectedOfflineArticleId = articleId; + public void openArticle(int articleId, int compatAnimation) { + m_selectedArticleId = articleId; initMainMenu(); @@ -456,7 +559,7 @@ public class OfflineActivity extends FragmentActivity { } - public int getSelectedOfflineArticleId() { - return m_selectedOfflineArticleId; + public int getSelectedArticleId() { + return m_selectedArticleId; } }
\ No newline at end of file diff --git a/src/org/fox/ttrss/OfflineArticleFragment.java b/src/org/fox/ttrss/OfflineArticleFragment.java index 43e84d3b..ac7febf8 100644 --- a/src/org/fox/ttrss/OfflineArticleFragment.java +++ b/src/org/fox/ttrss/OfflineArticleFragment.java @@ -205,7 +205,7 @@ public class OfflineArticleFragment extends Fragment implements OnClickListener m_prefs = PreferenceManager.getDefaultSharedPreferences(getActivity().getApplicationContext());
- m_articleId = ((OfflineActivity)activity).getSelectedOfflineArticleId();
+ m_articleId = ((OfflineActivity)activity).getSelectedArticleId();
/* m_articleOps = (ArticleOps)activity;
m_article = m_articleOps.getSelectedArticle();
diff --git a/src/org/fox/ttrss/OfflineFeedsFragment.java b/src/org/fox/ttrss/OfflineFeedsFragment.java index a279d956..d5350e92 100644 --- a/src/org/fox/ttrss/OfflineFeedsFragment.java +++ b/src/org/fox/ttrss/OfflineFeedsFragment.java @@ -54,14 +54,18 @@ public class OfflineFeedsFragment extends Fragment implements OnItemClickListene }
public Cursor createCursor() {
- if (m_cursor != null) m_cursor.close();
+ String unreadOnly = ((OfflineActivity)getActivity()).getUnreadOnly() ? "unread > 0" : null;
return ((OfflineActivity)getActivity()).getReadableDb().query("feeds_unread",
- null, null, null, null, null, "title");
+ null, unreadOnly, null, null, null, "title");
}
public void refresh() {
- m_adapter.changeCursor(createCursor());
+ if (m_cursor != null) m_cursor.close();
+
+ m_cursor = createCursor();
+
+ m_adapter.changeCursor(m_cursor);
m_adapter.notifyDataSetChanged();
}
@@ -127,7 +131,7 @@ public class OfflineFeedsFragment extends Fragment implements OnItemClickListene int feedId = (int) cursor.getLong(0);
Log.d(TAG, "clicked on feed " + feedId);
- ((OfflineActivity)getActivity()).offlineViewFeed(feedId);
+ ((OfflineActivity)getActivity()).viewFeed(feedId);
m_selectedFeedId = feedId;
diff --git a/src/org/fox/ttrss/OfflineHeadlinesFragment.java b/src/org/fox/ttrss/OfflineHeadlinesFragment.java index 0de70235..f6b36b63 100644 --- a/src/org/fox/ttrss/OfflineHeadlinesFragment.java +++ b/src/org/fox/ttrss/OfflineHeadlinesFragment.java @@ -54,8 +54,6 @@ public class OfflineHeadlinesFragment extends Fragment implements OnItemClickLis private Cursor m_cursor;
private ArticleListAdapter m_adapter;
- private ArticleOps m_articleOps;
-
private ImageGetter m_dummyGetter = new ImageGetter() {
@Override
@@ -97,7 +95,11 @@ public class OfflineHeadlinesFragment extends Fragment implements OnItemClickLis }
public void refresh() {
- m_adapter.changeCursor(createCursor());
+ if (m_cursor != null) m_cursor.close();
+
+ m_cursor = createCursor();
+
+ m_adapter.changeCursor(m_cursor);
m_adapter.notifyDataSetChanged();
}
@@ -129,8 +131,6 @@ public class OfflineHeadlinesFragment extends Fragment implements OnItemClickLis }
public Cursor createCursor() {
- if (m_cursor != null) m_cursor.close();
-
return ((OfflineActivity)getActivity()).getReadableDb().query("articles",
null, "feed_id = ?", new String[] { String.valueOf(m_feedId) }, null, null, "updated DESC");
}
@@ -140,7 +140,6 @@ public class OfflineHeadlinesFragment extends Fragment implements OnItemClickLis super.onAttach(activity);
m_feedId = ((OfflineActivity)activity).getActiveOfflineFeedId();
m_prefs = PreferenceManager.getDefaultSharedPreferences(getActivity().getApplicationContext());
- m_articleOps = (ArticleOps) activity;
m_combinedMode = m_prefs.getBoolean("combined_mode", false);
}
@@ -154,21 +153,19 @@ public class OfflineHeadlinesFragment extends Fragment implements OnItemClickLis Cursor cursor = (Cursor)list.getItemAtPosition(position);
m_activeArticleId = cursor.getInt(0);
+
+ SQLiteStatement stmtUpdate = ((OfflineActivity)getActivity()).getWritableDb().compileStatement("UPDATE articles SET unread = 0 " +
+ "WHERE " + BaseColumns._ID + " = ?");
- if (m_combinedMode) {
- SQLiteStatement stmtUpdate = ((OfflineActivity)getActivity()).getWritableDb().compileStatement("UPDATE articles SET unread = 0 " +
- "WHERE " + BaseColumns._ID + " = ?");
-
- stmtUpdate.bindLong(1, m_activeArticleId);
- stmtUpdate.execute();
- stmtUpdate.close();
+ stmtUpdate.bindLong(1, m_activeArticleId);
+ stmtUpdate.execute();
+ stmtUpdate.close();
- refresh();
- } else {
- ((OfflineActivity)getActivity()).openOfflineArticle(m_activeArticleId, 0);
+ if (!m_combinedMode) {
+ ((OfflineActivity)getActivity()).openArticle(m_activeArticleId, 0);
}
-
+ refresh();
}
}
|