From 1a5017b43294c7d8d05621c84da1316e64ae2a12 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Mon, 17 Sep 2012 23:20:59 +0400 Subject: various tablet-related improvements --- src/org/fox/ttrss/offline/OfflineArticlePager.java | 21 +++++++ .../fox/ttrss/offline/OfflineFeedsActivity.java | 5 +- .../ttrss/offline/OfflineHeadlinesActivity.java | 71 +++++++++++++++++++++- .../ttrss/offline/OfflineHeadlinesFragment.java | 19 +++++- 4 files changed, 112 insertions(+), 4 deletions(-) (limited to 'src/org/fox/ttrss/offline') diff --git a/src/org/fox/ttrss/offline/OfflineArticlePager.java b/src/org/fox/ttrss/offline/OfflineArticlePager.java index 0209cbfb..618e77db 100644 --- a/src/org/fox/ttrss/offline/OfflineArticlePager.java +++ b/src/org/fox/ttrss/offline/OfflineArticlePager.java @@ -190,4 +190,25 @@ public class OfflineArticlePager extends Fragment { public void setSearchQuery(String searchQuery) { m_searchQuery = searchQuery; } + + public void setArticleId(int articleId) { + m_articleId = articleId; + + m_cursor.moveToFirst(); + + int position = 0; + + while (!m_cursor.isLast()) { + if (m_cursor.getInt(m_cursor.getColumnIndex(BaseColumns._ID)) == m_articleId) { + position = m_cursor.getPosition(); + break; + } + m_cursor.moveToNext(); + } + + ViewPager pager = (ViewPager) getView().findViewById(R.id.article_pager); + + pager.setCurrentItem(position); + + } } diff --git a/src/org/fox/ttrss/offline/OfflineFeedsActivity.java b/src/org/fox/ttrss/offline/OfflineFeedsActivity.java index 7af62970..e4207a4f 100644 --- a/src/org/fox/ttrss/offline/OfflineFeedsActivity.java +++ b/src/org/fox/ttrss/offline/OfflineFeedsActivity.java @@ -42,6 +42,10 @@ public class OfflineFeedsActivity extends OfflineActivity implements OfflineHead if (intent.getIntExtra("feed", -10000) != -10000 || intent.getIntExtra("category", -10000) != -10000 || intent.getIntExtra("article", -10000) != -10000) { + if (!isCompatMode()) { + getActionBar().setDisplayHomeAsUpEnabled(true); + } + FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); int feedId = intent.getIntExtra("feed", -10000); @@ -230,7 +234,6 @@ public class OfflineFeedsActivity extends OfflineActivity implements OfflineHead intent.putExtra("feed", hf.getFeedId()); intent.putExtra("isCat", hf.getFeedIsCat()); intent.putExtra("article", articleId); - intent.putExtra("title", "FIXME-TITLE"); startActivityForResult(intent, 0); } diff --git a/src/org/fox/ttrss/offline/OfflineHeadlinesActivity.java b/src/org/fox/ttrss/offline/OfflineHeadlinesActivity.java index 49ac2b59..c086eafb 100644 --- a/src/org/fox/ttrss/offline/OfflineHeadlinesActivity.java +++ b/src/org/fox/ttrss/offline/OfflineHeadlinesActivity.java @@ -1,11 +1,17 @@ package org.fox.ttrss.offline; +import org.fox.ttrss.GlobalState; +import org.fox.ttrss.HeadlinesFragment; import org.fox.ttrss.R; import android.content.Intent; import android.content.SharedPreferences; +import android.database.Cursor; +import android.database.sqlite.SQLiteStatement; import android.os.Bundle; import android.preference.PreferenceManager; +import android.provider.BaseColumns; +import android.support.v4.app.Fragment; import android.support.v4.app.FragmentTransaction; import android.view.View; @@ -43,7 +49,6 @@ public class OfflineHeadlinesActivity extends OfflineActivity implements Offline boolean isCat = i.getBooleanExtra("isCat", false); int articleId = i.getIntExtra("article", 0); String searchQuery = i.getStringExtra("searchQuery"); - String title = i.getStringExtra("title"); OfflineHeadlinesFragment hf = new OfflineHeadlinesFragment(feedId, isCat); OfflineArticlePager af = new OfflineArticlePager(articleId, feedId, isCat); @@ -59,8 +64,20 @@ public class OfflineHeadlinesActivity extends OfflineActivity implements Offline ft.replace(R.id.article_fragment, af, FRAG_ARTICLE); ft.commit(); + + Cursor c; + + if (isCat) { + c = getCatById(feedId); + } else { + c = getFeedById(feedId); + } - setTitle(title); + if (c != null) { + setTitle(c.getString(c.getColumnIndex("title"))); + c.close(); + } + } } @@ -72,8 +89,58 @@ public class OfflineHeadlinesActivity extends OfflineActivity implements Offline @Override public void onArticleSelected(int articleId, boolean open) { + SQLiteStatement stmt = getWritableDb().compileStatement( + "UPDATE articles SET unread = 0 " + "WHERE " + BaseColumns._ID + + " = ?"); + + stmt.bindLong(1, articleId); + stmt.execute(); + stmt.close(); + + if (open) { + OfflineHeadlinesFragment hf = (OfflineHeadlinesFragment) getSupportFragmentManager().findFragmentByTag(FRAG_HEADLINES); + + /* OfflineArticlePager af = new OfflineArticlePager(articleId, hf.getFeedId(), hf.getFeedIsCat()); + af.setSearchQuery(hf.getSearchQuery()); + + FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); + + ft.replace(R.id.article_fragment, af, FRAG_ARTICLE); + ft.commit(); */ + + OfflineArticlePager af = (OfflineArticlePager) getSupportFragmentManager().findFragmentByTag(FRAG_ARTICLE); + + af.setArticleId(articleId); + + } else { + OfflineHeadlinesFragment hf = (OfflineHeadlinesFragment) getSupportFragmentManager().findFragmentByTag(FRAG_HEADLINES); + + hf.setActiveArticleId(articleId); + } + + GlobalState.getInstance().m_selectedArticleId = articleId; + initMenu(); + refresh(); + } + + @Override + protected void initMenu() { + super.initMenu(); + + if (m_menu != null) { + m_menu.setGroupVisible(R.id.menu_group_feeds, false); + + OfflineHeadlinesFragment hf = (OfflineHeadlinesFragment)getSupportFragmentManager().findFragmentByTag(FRAG_HEADLINES); + + m_menu.setGroupVisible(R.id.menu_group_headlines, hf != null && hf.getSelectedArticleCount() == 0); + m_menu.setGroupVisible(R.id.menu_group_headlines_selection, hf != null && hf.getSelectedArticleCount() != 0); + + Fragment af = getSupportFragmentManager().findFragmentByTag(FRAG_ARTICLE); + + m_menu.setGroupVisible(R.id.menu_group_article, af != null); + } } @Override diff --git a/src/org/fox/ttrss/offline/OfflineHeadlinesFragment.java b/src/org/fox/ttrss/offline/OfflineHeadlinesFragment.java index a7902be8..36acbe11 100644 --- a/src/org/fox/ttrss/offline/OfflineHeadlinesFragment.java +++ b/src/org/fox/ttrss/offline/OfflineHeadlinesFragment.java @@ -5,6 +5,7 @@ import java.text.SimpleDateFormat; import java.util.Date; import java.util.TimeZone; +import org.fox.ttrss.GlobalState; import org.fox.ttrss.R; import org.fox.ttrss.types.Article; import org.fox.ttrss.types.ArticleList; @@ -235,6 +236,16 @@ public class OfflineHeadlinesFragment extends Fragment implements OnItemClickLis @Override public void onResume() { super.onResume(); + + if (GlobalState.getInstance().m_selectedArticleId != 0) { + m_activeArticleId = GlobalState.getInstance().m_selectedArticleId; + GlobalState.getInstance().m_selectedArticleId = 0; + } + + if (m_activeArticleId != 0) { + setActiveArticleId(m_activeArticleId); + } + refresh(); } @@ -451,7 +462,7 @@ public class OfflineHeadlinesFragment extends Fragment implements OnItemClickLis int feedTitleIndex = article.getColumnIndex("feed_title"); if (ft != null && feedTitleIndex != -1 && m_feedIsCat) { - String feedTitle = article.getString(feedTitleIndex); + String feedTitle = article.getString(feedTitleIndex).substring(0, 30); if (feedTitle != null) { ft.setText(feedTitle); @@ -613,6 +624,8 @@ public class OfflineHeadlinesFragment extends Fragment implements OnItemClickLis ListView list = (ListView)getView().findViewById(R.id.headlines); + Log.d(TAG, articleId + " position " + getArticleIdPosition(articleId)); + if (list != null) { list.setSelection(getArticleIdPosition(articleId)); } @@ -666,5 +679,9 @@ public class OfflineHeadlinesFragment extends Fragment implements OnItemClickLis public boolean getFeedIsCat() { return m_feedIsCat; } + + public String getSearchQuery() { + return m_searchQuery; + } } -- cgit v1.2.3-54-g00ecf