Bug 721354 - Add API to AboutHomeContent to trigger updates (r=blassey)

This commit is contained in:
Lucas Rocha 2012-01-27 10:08:21 +00:00
Родитель 87852b042b
Коммит 611d1421b2
2 изменённых файлов: 35 добавлений и 29 удалений

Просмотреть файл

@ -46,6 +46,7 @@ import java.io.IOException;
import java.net.URL; import java.net.URL;
import java.net.MalformedURLException; import java.net.MalformedURLException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.EnumSet;
import java.util.zip.ZipEntry; import java.util.zip.ZipEntry;
import java.util.zip.ZipFile; import java.util.zip.ZipFile;
@ -97,6 +98,14 @@ public class AboutHomeContent extends ScrollView {
private static final int NUMBER_OF_COLS_PORTRAIT = 2; private static final int NUMBER_OF_COLS_PORTRAIT = 2;
private static final int NUMBER_OF_COLS_LANDSCAPE = 3; private static final int NUMBER_OF_COLS_LANDSCAPE = 3;
static enum UpdateFlags {
TOP_SITES,
PREVIOUS_TABS,
RECOMMENDED_ADDONS;
public static final EnumSet<UpdateFlags> ALL = EnumSet.allOf(UpdateFlags.class);
}
private Cursor mCursor; private Cursor mCursor;
UriLoadCallback mUriLoadCallback = null; UriLoadCallback mUriLoadCallback = null;
private LayoutInflater mInflater; private LayoutInflater mInflater;
@ -241,7 +250,7 @@ public class AboutHomeContent extends ScrollView {
return NUMBER_OF_COLS_PORTRAIT; return NUMBER_OF_COLS_PORTRAIT;
} }
private void loadTopSites(Activity activity) { private void loadTopSites(final Activity activity) {
if (mCursor != null) if (mCursor != null)
activity.stopManagingCursor(mCursor); activity.stopManagingCursor(mCursor);
@ -258,6 +267,9 @@ public class AboutHomeContent extends ScrollView {
mCursor = BrowserDB.getTopSites(resolver, NUMBER_OF_TOP_SITES_PORTRAIT); mCursor = BrowserDB.getTopSites(resolver, NUMBER_OF_TOP_SITES_PORTRAIT);
activity.startManagingCursor(mCursor); activity.startManagingCursor(mCursor);
GeckoApp.mAppContext.mMainHandler.post(new Runnable() {
public void run() {
if (mTopSitesAdapter == null) {
mTopSitesAdapter = new TopSitesCursorAdapter(activity, mTopSitesAdapter = new TopSitesCursorAdapter(activity,
R.layout.abouthome_topsite_item, R.layout.abouthome_topsite_item,
mCursor, mCursor,
@ -265,23 +277,29 @@ public class AboutHomeContent extends ScrollView {
URLColumns.THUMBNAIL }, URLColumns.THUMBNAIL },
new int[] { R.id.title, R.id.thumbnail }); new int[] { R.id.title, R.id.thumbnail });
GeckoApp.mAppContext.mMainHandler.post(new Runnable() {
public void run() {
mTopSitesGrid.setNumColumns(getNumberOfColumns());
mTopSitesGrid.setAdapter(mTopSitesAdapter);
mTopSitesAdapter.setViewBinder(new TopSitesViewBinder()); mTopSitesAdapter.setViewBinder(new TopSitesViewBinder());
mTopSitesGrid.setAdapter(mTopSitesAdapter);
} else {
mTopSitesAdapter.changeCursor(mCursor);
}
mTopSitesGrid.setNumColumns(getNumberOfColumns());
updateLayout(startupMode, syncIsSetup); updateLayout(startupMode, syncIsSetup);
} }
}); });
} }
void init(final Activity activity) { void update(final Activity activity, final EnumSet<UpdateFlags> flags) {
GeckoAppShell.getHandler().post(new Runnable() { GeckoAppShell.getHandler().post(new Runnable() {
public void run() { public void run() {
if (flags.contains(UpdateFlags.TOP_SITES))
loadTopSites(activity); loadTopSites(activity);
if (flags.contains(UpdateFlags.PREVIOUS_TABS))
readLastTabs(activity); readLastTabs(activity);
if (flags.contains(UpdateFlags.RECOMMENDED_ADDONS))
readRecommendedAddons(activity); readRecommendedAddons(activity);
} }
}); });
@ -292,19 +310,7 @@ public class AboutHomeContent extends ScrollView {
} }
public void onActivityContentChanged(Activity activity) { public void onActivityContentChanged(Activity activity) {
GeckoAppShell.getHandler().post(new Runnable() { update(activity, EnumSet.of(UpdateFlags.TOP_SITES));
public void run() {
final GeckoApp.StartupMode startupMode = GeckoApp.mAppContext.getStartupMode();
final boolean syncIsSetup = isSyncSetup();
GeckoApp.mAppContext.mMainHandler.post(new Runnable() {
public void run() {
mTopSitesGrid.setAdapter(mTopSitesAdapter);
updateLayout(startupMode, syncIsSetup);
}
});
}
});
} }
@Override @Override

Просмотреть файл

@ -1103,7 +1103,7 @@ abstract public class GeckoApp
mAutoCompletePopup.hide(); mAutoCompletePopup.hide();
if (mAboutHomeContent == null && mShow) { if (mAboutHomeContent == null && mShow) {
mAboutHomeContent = new AboutHomeContent(GeckoApp.mAppContext); mAboutHomeContent = new AboutHomeContent(GeckoApp.mAppContext);
mAboutHomeContent.init(GeckoApp.mAppContext); mAboutHomeContent.update(GeckoApp.mAppContext, AboutHomeContent.UpdateFlags.ALL);
mAboutHomeContent.setUriLoadCallback(new AboutHomeContent.UriLoadCallback() { mAboutHomeContent.setUriLoadCallback(new AboutHomeContent.UriLoadCallback() {
public void callback(String url) { public void callback(String url) {
mBrowserToolbar.setProgressVisibility(true); mBrowserToolbar.setProgressVisibility(true);