зеркало из https://github.com/mozilla/gecko-dev.git
Bug 721354 - Add API to AboutHomeContent to trigger updates (r=blassey)
This commit is contained in:
Родитель
87852b042b
Коммит
611d1421b2
|
@ -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);
|
||||||
|
|
Загрузка…
Ссылка в новой задаче