summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorTony Mantler <nicoya@google.com>2013-09-12 20:43:11 -0700
committerAndroid Git Automerger <android-git-automerger@android.com>2013-09-12 20:43:11 -0700
commitd1afa1fe8e17098770f2cbe67a66f008410e7743 (patch)
treebf5311dd59689f94d95f9766b92fca9e065e4194 /src
parent87815fac6176baaf773af77e824333f6cf5a02ac (diff)
parent01d8b440ee0fa3531ba54d5152506f801a809a32 (diff)
downloadandroid_packages_apps_UnifiedEmail-d1afa1fe8e17098770f2cbe67a66f008410e7743.tar.gz
android_packages_apps_UnifiedEmail-d1afa1fe8e17098770f2cbe67a66f008410e7743.tar.bz2
android_packages_apps_UnifiedEmail-d1afa1fe8e17098770f2cbe67a66f008410e7743.zip
am 01d8b440: Merge "Add extra checks to widget to make sure it clears when the account goes away" into jb-ub-mail-ur10
* commit '01d8b440ee0fa3531ba54d5152506f801a809a32': Add extra checks to widget to make sure it clears when the account goes away
Diffstat (limited to 'src')
-rw-r--r--src/com/android/mail/widget/BaseWidgetProvider.java11
-rw-r--r--src/com/android/mail/widget/WidgetService.java29
2 files changed, 30 insertions, 10 deletions
diff --git a/src/com/android/mail/widget/BaseWidgetProvider.java b/src/com/android/mail/widget/BaseWidgetProvider.java
index 8d0be1155..98a5ad67f 100644
--- a/src/com/android/mail/widget/BaseWidgetProvider.java
+++ b/src/com/android/mail/widget/BaseWidgetProvider.java
@@ -52,7 +52,6 @@ public abstract class BaseWidgetProvider extends AppWidgetProvider {
public static final String EXTRA_FOLDER_URI = "folder-uri";
public static final String EXTRA_FOLDER_CONVERSATION_LIST_URI = "folder-conversation-list-uri";
public static final String EXTRA_FOLDER_DISPLAY_NAME = "folder-display-name";
- public static final String EXTRA_UNREAD = "unread";
public static final String EXTRA_UPDATE_ALL_WIDGETS = "update-all-widgets";
public static final String WIDGET_ACCOUNT_PREFIX = "widget-account-";
@@ -139,8 +138,8 @@ public abstract class BaseWidgetProvider extends AppWidgetProvider {
} else if (Utils.ACTION_NOTIFY_DATASET_CHANGED.equals(action)) {
// Receive notification for a certain account.
final Bundle extras = intent.getExtras();
- final Uri accountUri = (Uri)extras.getParcelable(Utils.EXTRA_ACCOUNT_URI);
- final Uri folderUri = (Uri)extras.getParcelable(Utils.EXTRA_FOLDER_URI);
+ final Uri accountUri = extras.getParcelable(Utils.EXTRA_ACCOUNT_URI);
+ final Uri folderUri = extras.getParcelable(Utils.EXTRA_FOLDER_URI);
final boolean updateAllWidgets = extras.getBoolean(EXTRA_UPDATE_ALL_WIDGETS, false);
if (accountUri == null && Utils.isEmpty(folderUri) && !updateAllWidgets) {
@@ -383,12 +382,12 @@ public abstract class BaseWidgetProvider extends AppWidgetProvider {
WidgetService.class);
}
- private final void migrateAllLegacyWidgetInformation(Context context) {
+ private void migrateAllLegacyWidgetInformation(Context context) {
final int[] currentWidgetIds = getCurrentWidgetIds(context);
migrateLegacyWidgets(context, currentWidgetIds);
}
- private final void migrateLegacyWidgets(Context context, int[] widgetIds) {
+ private void migrateLegacyWidgets(Context context, int[] widgetIds) {
for (int widgetId : widgetIds) {
// We only want to bother to attempt to upgrade a widget if we don't already
// have information about.
@@ -398,7 +397,7 @@ public abstract class BaseWidgetProvider extends AppWidgetProvider {
}
}
- private final void validateAllWidgetInformation(Context context) {
+ private void validateAllWidgetInformation(Context context) {
final int[] widgetIds = getCurrentWidgetIds(context);
for (int widgetId : widgetIds) {
final String accountFolder = MailPrefs.get(context).getWidgetConfiguration(widgetId);
diff --git a/src/com/android/mail/widget/WidgetService.java b/src/com/android/mail/widget/WidgetService.java
index daf57ce03..7ad609580 100644
--- a/src/com/android/mail/widget/WidgetService.java
+++ b/src/com/android/mail/widget/WidgetService.java
@@ -60,7 +60,7 @@ public class WidgetService extends RemoteViewsService {
/**
* Lock to avoid race condition between widgets.
*/
- private static Object sWidgetLock = new Object();
+ private static final Object sWidgetLock = new Object();
private static final String LOG_TAG = LogTag.getLogTag();
@@ -202,6 +202,7 @@ public class WidgetService extends RemoteViewsService {
private static final int FOLDER_LOADER_ID = 0;
private static final int CONVERSATION_CURSOR_LOADER_ID = 1;
+ private static final int ACCOUNT_LOADER_ID = 2;
private final Context mContext;
private final int mAppWidgetId;
@@ -214,6 +215,7 @@ public class WidgetService extends RemoteViewsService {
private CursorLoader mConversationCursorLoader;
private Cursor mConversationCursor;
private CursorLoader mFolderLoader;
+ private CursorLoader mAccountLoader;
private FolderUpdateHandler mFolderUpdateHandler;
private int mFolderCount;
private boolean mShouldShowViewMore;
@@ -232,8 +234,8 @@ public class WidgetService extends RemoteViewsService {
mFolderType = intent.getIntExtra(WidgetProvider.EXTRA_FOLDER_TYPE, FolderType.DEFAULT);
mFolderDisplayName = intent.getStringExtra(WidgetProvider.EXTRA_FOLDER_DISPLAY_NAME);
- Uri folderUri = intent.getParcelableExtra(WidgetProvider.EXTRA_FOLDER_URI);
- Uri folderConversationListUri =
+ final Uri folderUri = intent.getParcelableExtra(WidgetProvider.EXTRA_FOLDER_URI);
+ final Uri folderConversationListUri =
intent.getParcelableExtra(WidgetProvider.EXTRA_FOLDER_CONVERSATION_LIST_URI);
if (folderUri != null && folderConversationListUri != null) {
mFolderUri = folderUri;
@@ -241,6 +243,7 @@ public class WidgetService extends RemoteViewsService {
} else {
// This is a old intent created in version UR8 (or earlier).
String folderString = intent.getStringExtra(Utils.EXTRA_FOLDER);
+ //noinspection deprecation
Folder folder = Folder.fromString(folderString);
if (folder != null) {
mFolderUri = folder.folderUri.fullUri;
@@ -304,6 +307,10 @@ public class WidgetService extends RemoteViewsService {
res.getInteger(R.integer.widget_folder_refresh_delay_ms));
mFolderUpdateHandler.scheduleTask();
+ mAccountLoader = new CursorLoader(mContext, mAccount.uri,
+ UIProvider.ACCOUNTS_PROJECTION_NO_CAPABILITIES, null, null, null);
+ mAccountLoader.registerListener(ACCOUNT_LOADER_ID, this);
+ mAccountLoader.startLoading();
}
@Override
@@ -325,6 +332,12 @@ public class WidgetService extends RemoteViewsService {
mFolderLoader.unregisterListener(this);
mFolderLoader = null;
}
+
+ if (mAccountLoader != null) {
+ mAccountLoader.reset();
+ mAccountLoader.unregisterListener(this);
+ mAccountLoader = null;
+ }
}
@Override
@@ -360,7 +373,7 @@ public class WidgetService extends RemoteViewsService {
* Returns the number of conversations that should be shown in the widget. This method
* doesn't update the boolean that indicates that the "show more" item should be included
* in the list.
- * @return
+ * @return count
*/
private int getConversationCount() {
synchronized (sWidgetLock) {
@@ -519,6 +532,11 @@ public class WidgetService extends RemoteViewsService {
final RemoteViews remoteViews =
new RemoteViews(mContext.getPackageName(), R.layout.widget);
+ if (!mService.isWidgetConfigured(mContext, mAppWidgetId, mAccount)) {
+ BaseWidgetProvider.updateWidget(mContext, mAppWidgetId, mAccount, mFolderType,
+ mFolderUri, mFolderConversationListUri, mFolderDisplayName);
+ }
+
if (loader == mFolderLoader) {
if (!isDataValid(data)) {
return;
@@ -586,6 +604,9 @@ public class WidgetService extends RemoteViewsService {
mContext.getString(R.string.no_conversations));
appWidgetManager.partiallyUpdateAppWidget(mAppWidgetId, remoteViews);
}
+ } else if (loader == mAccountLoader) {
+ BaseWidgetProvider.updateWidget(mContext, mAppWidgetId, mAccount, mFolderType,
+ mFolderUri, mFolderConversationListUri, mFolderDisplayName);
}
}