From 04366e58f18be6b9d1c3954285abd4bc4e70268e Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Fri, 31 Oct 2014 14:21:50 +0300 Subject: [PATCH] add drawer stuff to offline headlines activity --- .../ttrss/offline/OfflineFeedsActivity.java | 2 +- .../offline/OfflineHeadlinesActivity.java | 56 +++++++++++++++++-- .../offline/OfflineHeadlinesFragment.java | 20 +++++-- 3 files changed, 68 insertions(+), 10 deletions(-) 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 8f85bd7d..e753424f 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 @@ -240,7 +240,7 @@ public class OfflineFeedsActivity extends OfflineActivity implements OfflineHead .beginTransaction(); OfflineHeadlinesFragment hf = new OfflineHeadlinesFragment(); - hf.initialize(feedId, isCat); + hf.initialize(feedId, isCat, false); ft.replace(R.id.headlines_fragment, hf, FRAG_HEADLINES); ft.commit(); 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 b77221ff..18bf63cd 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 @@ -10,8 +10,11 @@ import android.preference.PreferenceManager; import android.provider.BaseColumns; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentTransaction; +import android.support.v4.widget.DrawerLayout; +import android.support.v7.app.ActionBarDrawerToggle; import android.util.Log; import android.view.MenuItem; +import android.view.View; import org.fox.ttrss.GlobalState; import org.fox.ttrss.R; @@ -20,6 +23,9 @@ public class OfflineHeadlinesActivity extends OfflineActivity implements Offline private final String TAG = this.getClass().getSimpleName(); protected SharedPreferences m_prefs; + + private ActionBarDrawerToggle m_drawerToggle; + private DrawerLayout m_drawerLayout; @SuppressLint("NewApi") @Override @@ -32,8 +38,34 @@ public class OfflineHeadlinesActivity extends OfflineActivity implements Offline super.onCreate(savedInstanceState); setContentView(R.layout.headlines_articles); - - getSupportActionBar().setDisplayHomeAsUpEnabled(true); + + m_drawerLayout = (DrawerLayout) findViewById(R.id.headlines_drawer); + + if (m_drawerLayout != null) { + + m_drawerToggle = new ActionBarDrawerToggle(this, m_drawerLayout, R.string.blank, R.string.blank) { + @Override + public void onDrawerOpened(View drawerView) { + super.onDrawerOpened(drawerView); + + invalidateOptionsMenu(); + } + + @Override + public void onDrawerClosed(View drawerView) { + super.onDrawerClosed(drawerView); + + invalidateOptionsMenu(); + } + }; + + m_drawerLayout.setDrawerListener(m_drawerToggle); + m_drawerToggle.setDrawerIndicatorEnabled(true); + + } + + getSupportActionBar().setDisplayHomeAsUpEnabled(true); + getSupportActionBar().setHomeButtonEnabled(true); setStatusBarTint(); setSmallScreen(findViewById(R.id.sw600dp_anchor) == null); @@ -52,7 +84,7 @@ public class OfflineHeadlinesActivity extends OfflineActivity implements Offline String searchQuery = i.getStringExtra("searchQuery"); OfflineHeadlinesFragment hf = new OfflineHeadlinesFragment(); - hf.initialize(feedId, isCat); + hf.initialize(feedId, isCat, true); OfflineArticlePager af = new OfflineArticlePager(); af.initialize(articleId, feedId, isCat); @@ -88,9 +120,19 @@ public class OfflineHeadlinesActivity extends OfflineActivity implements Offline initMenu(); } + protected void onPostCreate(Bundle savedInstanceState) { + super.onPostCreate(savedInstanceState); + // Sync the toggle state after onRestoreInstanceState has occurred. + if (m_drawerToggle != null) m_drawerToggle.syncState(); + } + @Override public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { + if (m_drawerToggle != null && m_drawerToggle.onOptionsItemSelected(item)) { + return true; + } + + switch (item.getItemId()) { case android.R.id.home: finish(); overridePendingTransition(0, R.anim.right_slide_out); @@ -115,7 +157,11 @@ public class OfflineHeadlinesActivity extends OfflineActivity implements Offline } if (open) { - OfflineArticlePager af = (OfflineArticlePager) getSupportFragmentManager().findFragmentByTag(FRAG_ARTICLE); + if (m_drawerLayout != null) { + m_drawerLayout.closeDrawers(); + } + + OfflineArticlePager af = (OfflineArticlePager) getSupportFragmentManager().findFragmentByTag(FRAG_ARTICLE); af.setArticleId(articleId); } else { 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 8b46570e..56e90248 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 @@ -66,10 +66,13 @@ public class OfflineHeadlinesFragment extends Fragment implements OnItemClickLis private OfflineHeadlinesEventListener m_listener; private OfflineActivity m_activity; private SwipeRefreshLayout m_swipeLayout; + + private boolean m_compactLayoutMode = false; - public void initialize(int feedId, boolean isCat) { + public void initialize(int feedId, boolean isCat, boolean compactMode) { m_feedId = feedId; m_feedIsCat = isCat; + m_compactLayoutMode = compactMode; } @Override @@ -276,6 +279,7 @@ public class OfflineHeadlinesFragment extends Fragment implements OnItemClickLis //m_selectedArticles = savedInstanceState.getParcelableArrayList("selectedArticles"); m_searchQuery = (String) savedInstanceState.getCharSequence("searchQuery"); m_feedIsCat = savedInstanceState.getBoolean("feedIsCat"); + m_compactLayoutMode = savedInstanceState.getBoolean("compactLayoutMode"); } else { m_activity.getWritableDb().execSQL("UPDATE articles SET selected = 0 "); } @@ -405,6 +409,8 @@ public class OfflineHeadlinesFragment extends Fragment implements OnItemClickLis //out.putParcelableArrayList("selectedArticles", m_selectedArticles); out.putCharSequence("searchQuery", m_searchQuery); out.putBoolean("feedIsCat", m_feedIsCat); + + out.putBoolean("compactLayoutMode", m_compactLayoutMode); } /* public void setLoadingStatus(int status, boolean showProgress) { @@ -586,7 +592,7 @@ public class OfflineHeadlinesFragment extends Fragment implements OnItemClickLis TextView te = (TextView)v.findViewById(R.id.excerpt); if (te != null) { - if (!m_prefs.getBoolean("headlines_show_content", true)) { + if ((m_compactLayoutMode && m_activity.isSmallScreen()) || !m_prefs.getBoolean("headlines_show_content", true)) { te.setVisibility(View.GONE); } else { String excerpt = Jsoup.parse(article.getString(article.getColumnIndex("content"))).text(); @@ -664,7 +670,7 @@ public class OfflineHeadlinesFragment extends Fragment implements OnItemClickLis flavorImageHolder.setVisibility(View.GONE); } - ImageView ib = (ImageView) v.findViewById(R.id.article_menu_button); + ImageView ib = (ImageView) v.findViewById(R.id.article_menu_button); if (ib != null) { //if (m_activity.isDarkTheme()) @@ -678,7 +684,13 @@ public class OfflineHeadlinesFragment extends Fragment implements OnItemClickLis }); } - return v; + View headlineFooter = v.findViewById(R.id.headline_footer); + + if (headlineFooter != null && m_compactLayoutMode && m_activity.isSmallScreen()) { + headlineFooter.setVisibility(View.GONE); + } + + return v; } private void adjustTitleTextView(int score, TextView tv, int position) {