properly deselect active feed when going back in tablet mode

other layout-related fixes
This commit is contained in:
Andrew Dolgov 2012-06-24 15:17:26 +04:00
parent c4c6a21ea0
commit 4101ecebee
3 changed files with 43 additions and 31 deletions

View File

@ -584,7 +584,8 @@ public class FeedsFragment extends Fragment implements OnItemClickListener, OnSh
}
public void setSelectedFeed(Feed feed) {
m_selectedFeed = feed;
m_selectedFeed = feed;
m_adapter.notifyDataSetChanged();
}
}

View File

@ -560,15 +560,18 @@ public class MainActivity extends FragmentActivity implements OnlineServices {
private synchronized void refresh() {
Date date = new Date();
boolean canRefresh = date.getTime() - m_lastRefresh > 5000;
if (m_sessionId != null && date.getTime() - m_lastRefresh > 5000) {
if (m_sessionId != null) {
FeedsFragment ff = (FeedsFragment) getSupportFragmentManager()
.findFragmentByTag(FRAG_FEEDS);
if (ff != null) {
Log.d(TAG, "Refreshing feeds...");
ff.refresh(true);
if (canRefresh) ff.refresh(true);
ff.setSelectedFeed(m_activeFeed);
}
FeedCategoriesFragment cf = (FeedCategoriesFragment) getSupportFragmentManager()
@ -576,10 +579,11 @@ public class MainActivity extends FragmentActivity implements OnlineServices {
if (cf != null) {
Log.d(TAG, "Refreshing categories...");
cf.refresh(true);
if (canRefresh) cf.refresh(true);
cf.setSelectedCategory(m_activeCategory);
}
m_lastRefresh = date.getTime();
if (canRefresh) m_lastRefresh = date.getTime();
}
}
@ -1024,6 +1028,8 @@ public class MainActivity extends FragmentActivity implements OnlineServices {
ft.replace(R.id.headlines_fragment, new DummyFragment(), "");
ft.commit();
refresh();
initMainMenu();
} else if (m_activeCategory != null) {
closeCategory();
@ -2303,40 +2309,44 @@ public class MainActivity extends FragmentActivity implements OnlineServices {
}
private void closeFeed() {
if (m_smallScreenMode && m_activeFeed != null) {
if (m_activeFeed.is_cat) {
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
Fragment headlines = getSupportFragmentManager().findFragmentByTag(FRAG_HEADLINES);
FeedCategoriesFragment cats = (FeedCategoriesFragment) getSupportFragmentManager().findFragmentByTag(FRAG_CATS);
ft.show(cats);
ft.remove(headlines);
cats.setSelectedCategory(null);
//ft.replace(R.id.fragment_container, new FeedCategoriesFragment(), FRAG_CATS);
ft.commit();
if (m_activeFeed != null) {
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
if (m_smallScreenMode) {
if (m_activeFeed.is_cat) {
Fragment headlines = getSupportFragmentManager().findFragmentByTag(FRAG_HEADLINES);
FeedCategoriesFragment cats = (FeedCategoriesFragment) getSupportFragmentManager().findFragmentByTag(FRAG_CATS);
ft.show(cats);
ft.remove(headlines);
//cats.setSelectedCategory(null);
//ft.replace(R.id.fragment_container, new FeedCategoriesFragment(), FRAG_CATS);
} else {
Fragment headlines = getSupportFragmentManager().findFragmentByTag(FRAG_HEADLINES);
FeedsFragment feeds = (FeedsFragment) getSupportFragmentManager().findFragmentByTag(FRAG_FEEDS);
ft.show(feeds);
ft.remove(headlines);
//feeds.setSelectedFeed(null);
}
} else {
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
Fragment headlines = getSupportFragmentManager().findFragmentByTag(FRAG_HEADLINES);
FeedsFragment feeds = (FeedsFragment) getSupportFragmentManager().findFragmentByTag(FRAG_FEEDS);
ft.show(feeds);
ft.remove(headlines);
feeds.setSelectedFeed(null);
ft.commit();
}
}
ft.commit();
}
m_activeFeed = null;
refresh();
initMainMenu();
}
@Override

View File

@ -1490,7 +1490,8 @@ public class OfflineActivity extends FragmentActivity implements
ft.hide(getSupportFragmentManager().findFragmentByTag(FRAG_HEADLINES));
ft.add(R.id.fragment_container, frag, FRAG_ARTICLE);
} else {
findViewById(R.id.article_fragment).setVisibility(View.VISIBLE);
findViewById(R.id.feeds_fragment).setVisibility(getOrientation() % 2 != 0 ? View.GONE : View.VISIBLE);
findViewById(R.id.article_fragment).setVisibility(View.VISIBLE);
ft.replace(R.id.article_fragment, frag, FRAG_ARTICLE);
refreshViews();