From 416d155e85ec4fbc2562c804beec7a70a06f72e7 Mon Sep 17 00:00:00 2001 From: lpetrus Date: Sun, 2 Sep 2012 15:10:57 +0200 Subject: Small tablet support (< 8") * Portrait mode ** feed list is now smaller and article list is bigger * Landscape mode ** small tablets display always only two columns --- src/org/fox/ttrss/CommonActivity.java | 25 +++++++++++++++++++- src/org/fox/ttrss/MainActivity.java | 32 ++++++++++++++++++++++---- src/org/fox/ttrss/offline/OfflineActivity.java | 6 +++-- 3 files changed, 56 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/org/fox/ttrss/CommonActivity.java b/src/org/fox/ttrss/CommonActivity.java index e39115da..f514290b 100644 --- a/src/org/fox/ttrss/CommonActivity.java +++ b/src/org/fox/ttrss/CommonActivity.java @@ -2,10 +2,11 @@ package org.fox.ttrss; import org.fox.ttrss.util.DatabaseHelper; -import android.content.res.Configuration; import android.database.sqlite.SQLiteDatabase; import android.os.Bundle; import android.support.v4.app.FragmentActivity; +import android.util.DisplayMetrics; +import android.util.FloatMath; import android.util.Log; import android.view.Display; import android.widget.Toast; @@ -23,12 +24,30 @@ public class CommonActivity extends FragmentActivity { private boolean m_smallScreenMode = true; private boolean m_compatMode = false; + private boolean m_smallTablet = false; protected void setSmallScreen(boolean smallScreen) { Log.d(TAG, "m_smallScreenMode=" + smallScreen); m_smallScreenMode = smallScreen; } + protected void setupSmallTabletFlag() { + + DisplayMetrics displayMetrics = new DisplayMetrics(); + getWindowManager().getDefaultDisplay().getMetrics(displayMetrics); + + float inHeight = displayMetrics.heightPixels / displayMetrics.ydpi; + float inWidth = displayMetrics.widthPixels / displayMetrics.xdpi; + + float inDiag = FloatMath.sqrt(inHeight * inHeight + inWidth * inWidth); + + if (inDiag < 8) { + m_smallTablet = true; + } + + Log.d(TAG, "m_smallTabletMode=" + m_smallTablet); + } + private void initDatabase() { DatabaseHelper dh = new DatabaseHelper(getApplicationContext()); @@ -67,6 +86,10 @@ public class CommonActivity extends FragmentActivity { public boolean isSmallScreen() { return m_smallScreenMode; } + + public boolean isSmallTablet() { + return m_smallTablet; + } public boolean isCompatMode() { return m_compatMode; diff --git a/src/org/fox/ttrss/MainActivity.java b/src/org/fox/ttrss/MainActivity.java index ce49b77a..4a4c3eee 100644 --- a/src/org/fox/ttrss/MainActivity.java +++ b/src/org/fox/ttrss/MainActivity.java @@ -645,6 +645,8 @@ public class MainActivity extends CommonActivity implements OnlineServices { setContentView(R.layout.main); setSmallScreen(findViewById(R.id.headlines_fragment) == null); + + setupSmallTabletFlag(); IntentFilter filter = new IntentFilter(); filter.addAction(OfflineDownloadService.INTENT_ACTION_SUCCESS); @@ -662,7 +664,7 @@ public class MainActivity extends CommonActivity implements OnlineServices { if (!isCompatMode()) { if (!isSmallScreen()) { - findViewById(R.id.feeds_fragment).setVisibility(m_selectedArticle != null && isPortrait() ? View.GONE : View.VISIBLE); + findViewById(R.id.feeds_fragment).setVisibility(m_selectedArticle != null && (isPortrait() || isSmallTablet()) ? View.GONE : View.VISIBLE); findViewById(R.id.article_fragment).setVisibility(m_selectedArticle != null ? View.VISIBLE : View.GONE); } @@ -998,8 +1000,8 @@ public class MainActivity extends CommonActivity implements OnlineServices { if (m_selectedArticle != null) { closeArticle(); refresh(); - /* } else if (m_activeFeed != null) { - closeFeed(); */ + } else if (m_activeFeed != null) { + closeFeed(); } else if (m_activeCategory != null) { closeCategory(); } else if (allowQuit) { @@ -1008,6 +1010,28 @@ public class MainActivity extends CommonActivity implements OnlineServices { } } + + private void closeFeed() { + if (m_activeFeed != null) { + FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); + ft.replace(R.id.headlines_fragment, new DummyFragment(), ""); + ft.commit(); + + if (m_activeFeed.is_cat) { + FeedCategoriesFragment cats = (FeedCategoriesFragment) getSupportFragmentManager().findFragmentByTag(FRAG_CATS); + cats.setSelectedCategory(null); + } else { + FeedsFragment feeds = (FeedsFragment) getSupportFragmentManager().findFragmentByTag(FRAG_FEEDS); + feeds.setSelectedFeed(null); + } + + m_activeFeed = null; + + initMainMenu(); + } + } + + @SuppressWarnings("unchecked") @Override public boolean onOptionsItemSelected(MenuItem item) { @@ -1864,7 +1888,7 @@ public class MainActivity extends CommonActivity implements OnlineServices { ft.hide(getSupportFragmentManager().findFragmentByTag(FRAG_HEADLINES)); ft.add(R.id.fragment_container, frag, FRAG_ARTICLE); } else { - findViewById(R.id.feeds_fragment).setVisibility(isPortrait() ? View.GONE : View.VISIBLE); + findViewById(R.id.feeds_fragment).setVisibility(isPortrait() || isSmallTablet() ? View.GONE : View.VISIBLE); findViewById(R.id.article_fragment).setVisibility(View.VISIBLE); ft.replace(R.id.article_fragment, frag, FRAG_ARTICLE); diff --git a/src/org/fox/ttrss/offline/OfflineActivity.java b/src/org/fox/ttrss/offline/OfflineActivity.java index 49864a7c..496603fc 100644 --- a/src/org/fox/ttrss/offline/OfflineActivity.java +++ b/src/org/fox/ttrss/offline/OfflineActivity.java @@ -291,10 +291,12 @@ public class OfflineActivity extends CommonActivity implements setContentView(R.layout.main); setSmallScreen(findViewById(R.id.headlines_fragment) == null); + + setupSmallTabletFlag(); if (!isCompatMode()) { if (!isSmallScreen()) { - findViewById(R.id.feeds_fragment).setVisibility(m_selectedArticleId != 0 && isPortrait() ? View.GONE : View.VISIBLE); + findViewById(R.id.feeds_fragment).setVisibility(m_selectedArticleId != 0 && (isPortrait() || isSmallTablet()) ? View.GONE : View.VISIBLE); findViewById(R.id.article_fragment).setVisibility(m_selectedArticleId != 0 ? View.VISIBLE : View.GONE); } @@ -1399,7 +1401,7 @@ public class OfflineActivity extends CommonActivity implements ft.hide(getSupportFragmentManager().findFragmentByTag(FRAG_HEADLINES)); ft.add(R.id.fragment_container, frag, FRAG_ARTICLE); } else { - findViewById(R.id.feeds_fragment).setVisibility(isPortrait() ? View.GONE : View.VISIBLE); + findViewById(R.id.feeds_fragment).setVisibility(isPortrait() || isSmallTablet() ? View.GONE : View.VISIBLE); findViewById(R.id.article_fragment).setVisibility(View.VISIBLE); ft.replace(R.id.article_fragment, frag, FRAG_ARTICLE); -- cgit v1.2.3-54-g00ecf