add category support to tablet UI

This commit is contained in:
Andrew Dolgov 2011-11-28 21:36:13 +03:00
parent b150696e79
commit 2b15ba91d4
6 changed files with 54 additions and 15 deletions

View File

@ -7,6 +7,7 @@
</LinearLayout> </LinearLayout>
<LinearLayout android:layout_height="fill_parent" android:orientation="horizontal" android:id="@+id/main" android:layout_width="fill_parent"> <LinearLayout android:layout_height="fill_parent" android:orientation="horizontal" android:id="@+id/main" android:layout_width="fill_parent">
<FrameLayout android:layout_height="match_parent" android:layout_width="300dp" android:layout_weight="0" android:id="@+id/feeds_fragment"></FrameLayout> <FrameLayout android:layout_height="match_parent" android:layout_width="300dp" android:layout_weight="0" android:id="@+id/feeds_fragment"></FrameLayout>
<FrameLayout android:layout_height="match_parent" android:layout_width="300dp" android:layout_weight="0" android:id="@+id/cats_fragment"></FrameLayout>
<LinearLayout <LinearLayout
android:id="@+id/linearLayout2" android:id="@+id/linearLayout2"
android:layout_height="match_parent" android:orientation="vertical" android:layout_width="match_parent"> android:layout_height="match_parent" android:orientation="vertical" android:layout_width="match_parent">

View File

@ -7,6 +7,7 @@
</LinearLayout> </LinearLayout>
<LinearLayout android:layout_height="fill_parent" android:orientation="horizontal" android:id="@+id/main" android:layout_width="fill_parent"> <LinearLayout android:layout_height="fill_parent" android:orientation="horizontal" android:id="@+id/main" android:layout_width="fill_parent">
<FrameLayout android:layout_height="match_parent" android:layout_width="0dp" android:layout_weight="0.3" android:id="@+id/feeds_fragment"></FrameLayout> <FrameLayout android:layout_height="match_parent" android:layout_width="0dp" android:layout_weight="0.3" android:id="@+id/feeds_fragment"></FrameLayout>
<FrameLayout android:layout_height="match_parent" android:layout_width="0dp" android:layout_weight="0.3" android:id="@+id/cats_fragment"></FrameLayout>
<FrameLayout android:layout_height="match_parent" android:layout_width="0dp" android:layout_weight="0.5" android:id="@+id/headlines_fragment"></FrameLayout> <FrameLayout android:layout_height="match_parent" android:layout_width="0dp" android:layout_weight="0.5" android:id="@+id/headlines_fragment"></FrameLayout>
<FrameLayout android:layout_height="match_parent" android:layout_width="0dp" android:layout_weight="0.5" android:id="@+id/article_fragment"></FrameLayout> <FrameLayout android:layout_height="match_parent" android:layout_width="0dp" android:layout_weight="0.5" android:id="@+id/article_fragment"></FrameLayout>
</LinearLayout> </LinearLayout>

View File

@ -17,6 +17,11 @@
android:title="@string/menu_all_feeds" android:title="@string/menu_all_feeds"
android:showAsAction=""/> android:showAsAction=""/>
<item android:id="@+id/back_to_categories"
android:icon="@android:drawable/ic_menu_revert"
android:title="@string/back_to_categories"
android:showAsAction="ifRoom|withText"/>
<item android:id="@+id/close_article" <item android:id="@+id/close_article"
android:icon="@android:drawable/ic_menu_close_clear_cancel" android:icon="@android:drawable/ic_menu_close_clear_cancel"
android:title="@string/close_article" android:title="@string/close_article"

View File

@ -56,4 +56,5 @@
<string name="ttrss_url_summary">URL of your tt-rss installation directory, e.g. http://site.com/tt-rss/</string> <string name="ttrss_url_summary">URL of your tt-rss installation directory, e.g. http://site.com/tt-rss/</string>
<string name="download_feed_icons">Download and display feed icons</string> <string name="download_feed_icons">Download and display feed icons</string>
<string name="enable_cats">Enable feed categories</string> <string name="enable_cats">Enable feed categories</string>
<string name="back_to_categories">Close category</string>
</resources> </resources>

View File

@ -131,6 +131,11 @@ public class FeedsFragment extends Fragment implements OnItemClickListener, OnSh
m_prefs.registerOnSharedPreferenceChangeListener(this); m_prefs.registerOnSharedPreferenceChangeListener(this);
m_feedSelectedListener = (OnFeedSelectedListener) activity; m_feedSelectedListener = (OnFeedSelectedListener) activity;
Feed activeFeed = ((MainActivity)activity).getActiveFeed();
if (activeFeed != null)
m_selectedFeedId = activeFeed.id;
} }
@Override @Override

View File

@ -244,10 +244,20 @@ public class MainActivity extends FragmentActivity implements FeedsFragment.OnFe
} }
} }
} else { } else {
if (m_selectedArticle == null) if (m_selectedArticle == null) {
findViewById(R.id.article_fragment).setVisibility(View.GONE); findViewById(R.id.article_fragment).setVisibility(View.GONE);
else
if (!m_enableCats || m_activeCategory != null)
findViewById(R.id.cats_fragment).setVisibility(View.GONE);
else
findViewById(R.id.feeds_fragment).setVisibility(View.GONE);
} else {
findViewById(R.id.feeds_fragment).setVisibility(View.GONE); findViewById(R.id.feeds_fragment).setVisibility(View.GONE);
findViewById(R.id.cats_fragment).setVisibility(View.GONE);
}
} }
if (m_sessionId != null) { if (m_sessionId != null) {
@ -375,13 +385,7 @@ public class MainActivity extends FragmentActivity implements FeedsFragment.OnFe
findViewById(R.id.main).setAnimation(AnimationUtils.loadAnimation(this, R.anim.slide_right)); findViewById(R.id.main).setAnimation(AnimationUtils.loadAnimation(this, R.anim.slide_right));
} }
findViewById(R.id.feeds_fragment).setVisibility(View.GONE); closeCategory();
findViewById(R.id.cats_fragment).setVisibility(View.VISIBLE);
m_activeCategory = null;
initMainMenu();
refreshCategories();
} else { } else {
finish(); finish();
@ -389,6 +393,14 @@ public class MainActivity extends FragmentActivity implements FeedsFragment.OnFe
} else { } else {
if (m_selectedArticle != null) { if (m_selectedArticle != null) {
closeArticle(); closeArticle();
} else if (m_activeCategory != null) {
findViewById(R.id.feeds_fragment).setVisibility(View.GONE);
findViewById(R.id.cats_fragment).setVisibility(View.VISIBLE);
m_activeCategory = null;
initMainMenu();
refreshCategories();
} else { } else {
finish(); finish();
} }
@ -399,6 +411,16 @@ public class MainActivity extends FragmentActivity implements FeedsFragment.OnFe
return super.onKeyDown(keyCode, event); return super.onKeyDown(keyCode, event);
} }
private void closeCategory() {
findViewById(R.id.feeds_fragment).setVisibility(View.GONE);
findViewById(R.id.cats_fragment).setVisibility(View.VISIBLE);
m_activeCategory = null;
initMainMenu();
refreshCategories();
}
@Override @Override
public boolean onOptionsItemSelected(MenuItem item) { public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) { switch (item.getItemId()) {
@ -418,6 +440,9 @@ public class MainActivity extends FragmentActivity implements FeedsFragment.OnFe
case R.id.close_article: case R.id.close_article:
closeArticle(); closeArticle();
return true; return true;
case R.id.back_to_categories:
closeCategory();
return true;
case R.id.load_more_articles: case R.id.load_more_articles:
viewFeed(m_activeFeed, true); viewFeed(m_activeFeed, true);
return true; return true;
@ -482,7 +507,7 @@ public class MainActivity extends FragmentActivity implements FeedsFragment.OnFe
} }
} }
public void closeArticle() { private void closeArticle() {
if (m_compatMode) { if (m_compatMode) {
findViewById(R.id.main).setAnimation(AnimationUtils.loadAnimation(this, R.anim.slide_right)); findViewById(R.id.main).setAnimation(AnimationUtils.loadAnimation(this, R.anim.slide_right));
} }
@ -547,6 +572,8 @@ public class MainActivity extends FragmentActivity implements FeedsFragment.OnFe
m_menu.findItem(R.id.show_all_articles).setVisible(m_activeFeed != null && m_selectedArticle == null); m_menu.findItem(R.id.show_all_articles).setVisible(m_activeFeed != null && m_selectedArticle == null);
} }
m_menu.findItem(R.id.back_to_categories).setVisible(m_activeCategory != null);
} else { } else {
m_menu.findItem(R.id.login).setVisible(true); m_menu.findItem(R.id.login).setVisible(true);
@ -554,6 +581,7 @@ public class MainActivity extends FragmentActivity implements FeedsFragment.OnFe
m_menu.findItem(R.id.close_article).setVisible(false); m_menu.findItem(R.id.close_article).setVisible(false);
m_menu.findItem(R.id.share_article).setVisible(false); m_menu.findItem(R.id.share_article).setVisible(false);
m_menu.findItem(R.id.load_more_articles).setVisible(false); m_menu.findItem(R.id.load_more_articles).setVisible(false);
m_menu.findItem(R.id.back_to_categories).setVisible(false);
m_menu.findItem(R.id.update_feeds).setVisible(false); m_menu.findItem(R.id.update_feeds).setVisible(false);
m_menu.findItem(R.id.show_feeds).setVisible(false); m_menu.findItem(R.id.show_feeds).setVisible(false);
@ -686,10 +714,8 @@ public class MainActivity extends FragmentActivity implements FeedsFragment.OnFe
initMainMenu(); initMainMenu();
if (m_smallScreenMode) { findViewById(R.id.cats_fragment).setVisibility(View.GONE);
findViewById(R.id.cats_fragment).setVisibility(View.GONE); findViewById(R.id.feeds_fragment).setVisibility(View.VISIBLE);
findViewById(R.id.feeds_fragment).setVisibility(View.VISIBLE);
}
FeedsFragment frag = new FeedsFragment(); FeedsFragment frag = new FeedsFragment();