• R/O
  • HTTP
  • SSH
  • HTTPS

提交

标签
No Tags

Frequently used words (click to add to your profile)

javaandroidc++linuxc#windowsobjective-ccocoaqtpython誰得phprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

packages/apps/Gallery2


Commit MetaInfo

修订版d6db8eab6df048b9065834113a6d46a885af01d3 (tree)
时间2011-08-24 17:49:06
作者Owen Lin <owenlin@goog...>
CommiterOwen Lin

Log Message

Fix shortcup broken issue.

fix: 5154308

Change-Id: I5cd2ef8efb84d4f356b3fe93106bddf10e0823cc

更改概述

  • modified: AndroidManifest.xml (diff)
  • modified: res/xml/widget_info.xml (diff)
  • modified: src/com/android/gallery3d/app/GalleryAppImpl.java (diff)
  • delete: src/com/android/gallery3d/{widget => gadget}/LocalPhotoSource.java
  • delete: src/com/android/gallery3d/{widget => gadget}/MediaSetSource.java
  • delete: src/com/android/gallery3d/{widget => gadget}/WidgetClickHandler.java
  • delete: src/com/android/gallery3d/{widget => gadget}/WidgetConfigure.java
  • delete: src/com/android/gallery3d/{widget => gadget}/WidgetDatabaseHelper.java
  • delete: src/com/android/gallery3d/{widget => gadget}/WidgetService.java
  • delete: src/com/android/gallery3d/{widget => gadget}/WidgetSource.java
  • delete: src/com/android/gallery3d/{widget => gadget}/WidgetTypeChooser.java
  • delete: src/com/android/gallery3d/{widget => gadget}/WidgetUtils.java
  • delete: src/com/android/gallery3d/{widget/WidgetProvider.java => gadget/PhotoAppWidgetProvider.java}

差异

--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -66,6 +66,17 @@
6666 <data android:mimeType="application/x-mpegurl" />
6767 </intent-filter>
6868 </activity>
69+
70+ <!-- we add the activity-alias for shortcut backward compatibility -->
71+ <activity-alias android:name="com.cooliris.media.Gallery"
72+ android:targetActivity="com.android.gallery3d.app.Gallery"
73+ android:configChanges="keyboardHidden|orientation|screenSize"
74+ android:label="string/app_name">
75+ <intent-filter>
76+ <action android:name="android.intent.action.MAIN" />
77+ </intent-filter>
78+ </activity-alias>
79+
6980 <activity android:name="com.android.gallery3d.app.Gallery" android:label="@string/app_name"
7081 android:configChanges="keyboardHidden|orientation|screenSize">
7182 <intent-filter>
@@ -200,18 +211,18 @@
200211 android:syncable="false"
201212 android:grantUriPermissions="true"
202213 android:authorities="com.android.gallery3d.provider" />
203- <activity android:name="com.android.gallery3d.widget.WidgetClickHandler" />
214+ <activity android:name="com.android.gallery3d.gadget.WidgetClickHandler" />
204215 <activity android:name="com.android.gallery3d.app.DialogPicker"
205216 android:configChanges="keyboardHidden|orientation|screenSize"
206217 android:theme="@style/DialogPickerTheme"/>
207218 <activity android:name="com.android.gallery3d.app.AlbumPicker"
208219 android:configChanges="keyboardHidden|orientation|screenSize"
209220 android:theme="@style/DialogPickerTheme"/>
210- <activity android:name="com.android.gallery3d.widget.WidgetTypeChooser"
221+ <activity android:name="com.android.gallery3d.gadget.WidgetTypeChooser"
211222 android:configChanges="keyboardHidden|orientation|screenSize"
212223 android:theme="@style/DialogPickerTheme"/>
213224
214- <receiver android:name="com.android.gallery3d.widget.WidgetProvider"
225+ <receiver android:name="com.android.gallery3d.gadget.PhotoAppWidgetProvider"
215226 android:label="@string/appwidget_title">
216227 <intent-filter>
217228 <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
@@ -226,9 +237,9 @@
226237 <data android:scheme="package"/>
227238 </intent-filter>
228239 </receiver>
229- <service android:name="com.android.gallery3d.widget.WidgetService"
240+ <service android:name="com.android.gallery3d.gadget.WidgetService"
230241 android:permission="android.permission.BIND_REMOTEVIEWS"/>
231- <activity android:name="com.android.gallery3d.widget.WidgetConfigure"
242+ <activity android:name="com.android.gallery3d.gadget.WidgetConfigure"
232243 android:configChanges="keyboardHidden|orientation|screenSize"
233244 android:theme="@style/android:Theme.Translucent.NoTitleBar">
234245 <intent-filter>
--- a/res/xml/widget_info.xml
+++ b/res/xml/widget_info.xml
@@ -5,4 +5,4 @@
55 android:updatePeriodMillis="86400000"
66 android:previewImage="@drawable/preview"
77 android:initialLayout="@layout/appwidget_main"
8- android:configure="com.android.gallery3d.widget.WidgetConfigure"/>
8+ android:configure="com.android.gallery3d.gadget.WidgetConfigure"/>
--- a/src/com/android/gallery3d/app/GalleryAppImpl.java
+++ b/src/com/android/gallery3d/app/GalleryAppImpl.java
@@ -19,10 +19,10 @@ package com.android.gallery3d.app;
1919 import com.android.gallery3d.data.DataManager;
2020 import com.android.gallery3d.data.DownloadCache;
2121 import com.android.gallery3d.data.ImageCacheService;
22+import com.android.gallery3d.gadget.WidgetUtils;
2223 import com.android.gallery3d.picasasource.PicasaSource;
2324 import com.android.gallery3d.util.GalleryUtils;
2425 import com.android.gallery3d.util.ThreadPool;
25-import com.android.gallery3d.widget.WidgetUtils;
2626
2727 import android.app.Application;
2828 import android.content.Context;
--- a/src/com/android/gallery3d/widget/LocalPhotoSource.java
+++ b/src/com/android/gallery3d/gadget/LocalPhotoSource.java
@@ -14,7 +14,7 @@
1414 * limitations under the License.
1515 */
1616
17-package com.android.gallery3d.widget;
17+package com.android.gallery3d.gadget;
1818
1919 import com.android.gallery3d.app.GalleryApp;
2020 import com.android.gallery3d.common.Utils;
--- a/src/com/android/gallery3d/widget/MediaSetSource.java
+++ b/src/com/android/gallery3d/gadget/MediaSetSource.java
@@ -14,7 +14,7 @@
1414 * limitations under the License.
1515 */
1616
17-package com.android.gallery3d.widget;
17+package com.android.gallery3d.gadget;
1818
1919 import com.android.gallery3d.common.Utils;
2020 import com.android.gallery3d.data.ContentListener;
--- a/src/com/android/gallery3d/widget/WidgetProvider.java
+++ b/src/com/android/gallery3d/gadget/PhotoAppWidgetProvider.java
@@ -14,21 +14,23 @@
1414 * limitations under the License.
1515 */
1616
17-package com.android.gallery3d.widget;
17+package com.android.gallery3d.gadget;
1818
1919 import com.android.gallery3d.R;
20-import com.android.gallery3d.widget.WidgetDatabaseHelper.Entry;
20+import com.android.gallery3d.gadget.WidgetDatabaseHelper.Entry;
2121
2222 import android.app.PendingIntent;
2323 import android.appwidget.AppWidgetManager;
2424 import android.appwidget.AppWidgetProvider;
2525 import android.content.Context;
2626 import android.content.Intent;
27+import android.graphics.Bitmap;
28+import android.graphics.BitmapFactory;
2729 import android.net.Uri;
2830 import android.util.Log;
2931 import android.widget.RemoteViews;
3032
31-public class WidgetProvider extends AppWidgetProvider {
33+public class PhotoAppWidgetProvider extends AppWidgetProvider {
3234
3335 private static final String TAG = "WidgetProvider";
3436
@@ -88,12 +90,26 @@ public class WidgetProvider extends AppWidgetProvider {
8890 static RemoteViews buildFrameWidget(Context context, int appWidgetId, Entry entry) {
8991 RemoteViews views = new RemoteViews(
9092 context.getPackageName(), R.layout.photo_frame);
91- views.setImageViewBitmap(R.id.photo, entry.image);
92- Intent clickIntent = new Intent(context,
93- WidgetClickHandler.class).setData(entry.imageUri);
94- PendingIntent pendingClickIntent = PendingIntent.getActivity(context, 0,
95- clickIntent, PendingIntent.FLAG_CANCEL_CURRENT);
96- views.setOnClickPendingIntent(R.id.photo, pendingClickIntent);
93+ try {
94+ byte[] data = entry.imageData;
95+ Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
96+ views.setImageViewBitmap(R.id.photo, bitmap);
97+ } catch (Throwable t) {
98+ Log.w(TAG, "cannot load widget image: " + appWidgetId, t);
99+ }
100+
101+ if (entry.imageUri != null) {
102+ try {
103+ Uri uri = Uri.parse(entry.imageUri);
104+ Intent clickIntent = new Intent(context, WidgetClickHandler.class)
105+ .setData(uri);
106+ PendingIntent pendingClickIntent = PendingIntent.getActivity(context, 0,
107+ clickIntent, PendingIntent.FLAG_CANCEL_CURRENT);
108+ views.setOnClickPendingIntent(R.id.photo, pendingClickIntent);
109+ } catch (Throwable t) {
110+ Log.w(TAG, "cannot load widget uri: " + appWidgetId, t);
111+ }
112+ }
97113 return views;
98114 }
99115
--- a/src/com/android/gallery3d/widget/WidgetClickHandler.java
+++ b/src/com/android/gallery3d/gadget/WidgetClickHandler.java
@@ -14,7 +14,7 @@
1414 * limitations under the License.
1515 */
1616
17-package com.android.gallery3d.widget;
17+package com.android.gallery3d.gadget;
1818
1919 import com.android.gallery3d.R;
2020 import com.android.gallery3d.app.Gallery;
--- a/src/com/android/gallery3d/widget/WidgetConfigure.java
+++ b/src/com/android/gallery3d/gadget/WidgetConfigure.java
@@ -14,7 +14,7 @@
1414 * limitations under the License.
1515 */
1616
17-package com.android.gallery3d.widget;
17+package com.android.gallery3d.gadget;
1818
1919 import com.android.gallery3d.R;
2020 import com.android.gallery3d.app.AlbumPicker;
@@ -72,7 +72,7 @@ public class WidgetConfigure extends Activity {
7272
7373 private void updateWidgetAndFinish(WidgetDatabaseHelper.Entry entry) {
7474 AppWidgetManager manager = AppWidgetManager.getInstance(this);
75- RemoteViews views = WidgetProvider.buildWidget(this, mAppWidgetId, entry);
75+ RemoteViews views = PhotoAppWidgetProvider.buildWidget(this, mAppWidgetId, entry);
7676 manager.updateAppWidget(mAppWidgetId, views);
7777 setResult(RESULT_OK, new Intent().putExtra(
7878 AppWidgetManager.EXTRA_APPWIDGET_ID, mAppWidgetId));
--- a/src/com/android/gallery3d/widget/WidgetDatabaseHelper.java
+++ b/src/com/android/gallery3d/gadget/WidgetDatabaseHelper.java
@@ -14,7 +14,7 @@
1414 * limitations under the License.
1515 */
1616
17-package com.android.gallery3d.widget;
17+package com.android.gallery3d.gadget;
1818
1919 import com.android.gallery3d.common.Utils;
2020
@@ -25,11 +25,11 @@ import android.database.sqlite.SQLiteDatabase;
2525 import android.database.sqlite.SQLiteException;
2626 import android.database.sqlite.SQLiteOpenHelper;
2727 import android.graphics.Bitmap;
28-import android.graphics.BitmapFactory;
2928 import android.net.Uri;
3029 import android.util.Log;
3130
3231 import java.io.ByteArrayOutputStream;
32+import java.util.ArrayList;
3333
3434 public class WidgetDatabaseHelper extends SQLiteOpenHelper {
3535 private static final String TAG = "PhotoDatabaseHelper";
@@ -60,17 +60,18 @@ public class WidgetDatabaseHelper extends SQLiteOpenHelper {
6060 public static class Entry {
6161 public int widgetId;
6262 public int type;
63- public Uri imageUri;
64- public Bitmap image;
63+ public String imageUri;
64+ public byte imageData[];
6565 public String albumPath;
6666
67+ private Entry() {}
68+
6769 private Entry(int id, Cursor cursor) {
6870 widgetId = id;
6971 type = cursor.getInt(INDEX_WIDGET_TYPE);
70-
7172 if (type == TYPE_SINGLE_PHOTO) {
72- imageUri = Uri.parse(cursor.getString(INDEX_IMAGE_URI));
73- image = loadBitmap(cursor, INDEX_PHOTO_BLOB);
73+ imageUri = cursor.getString(INDEX_IMAGE_URI);
74+ imageData = cursor.getBlob(INDEX_PHOTO_BLOB);
7475 } else if (type == TYPE_ALBUM) {
7576 albumPath = cursor.getString(INDEX_ALBUM_PATH);
7677 }
@@ -91,16 +92,79 @@ public class WidgetDatabaseHelper extends SQLiteOpenHelper {
9192 + FIELD_PHOTO_BLOB + " BLOB)");
9293 }
9394
95+ private void saveData(SQLiteDatabase db, int oldVersion, ArrayList<Entry> data) {
96+ if (oldVersion <= 2) {
97+ Cursor cursor = db.query("photos",
98+ new String[] {FIELD_APPWIDGET_ID, FIELD_PHOTO_BLOB},
99+ null, null, null, null, null);
100+ if (cursor == null) return;
101+ try {
102+ while (cursor.moveToNext()) {
103+ Entry entry = new Entry();
104+ entry.type = TYPE_SINGLE_PHOTO;
105+ entry.widgetId = cursor.getInt(0);
106+ entry.imageData = cursor.getBlob(1);
107+ data.add(entry);
108+ }
109+ } finally {
110+ cursor.close();
111+ }
112+ } else if (oldVersion == 3) {
113+ Utils.debug("saveData of version: %s", oldVersion);
114+ Cursor cursor = db.query("photos",
115+ new String[] {FIELD_APPWIDGET_ID, FIELD_PHOTO_BLOB, FIELD_IMAGE_URI},
116+ null, null, null, null, null);
117+ if (cursor == null) return;
118+ try {
119+ while (cursor.moveToNext()) {
120+ Entry entry = new Entry();
121+ entry.type = TYPE_SINGLE_PHOTO;
122+ entry.widgetId = cursor.getInt(0);
123+ entry.imageData = cursor.getBlob(1);
124+ entry.imageUri = cursor.getString(2);
125+
126+ Utils.debug("store widget[%s] - %s", entry.widgetId, entry.imageUri);
127+ data.add(entry);
128+ }
129+ } finally {
130+ cursor.close();
131+ }
132+ }
133+ }
134+
135+ private void restoreData(SQLiteDatabase db, ArrayList<Entry> data) {
136+ db.beginTransaction();
137+ try {
138+ for (Entry entry : data) {
139+ ContentValues values = new ContentValues();
140+ values.put(FIELD_APPWIDGET_ID, entry.widgetId);
141+ values.put(FIELD_WIDGET_TYPE, entry.type);
142+ values.put(FIELD_IMAGE_URI, entry.imageUri);
143+ values.put(FIELD_PHOTO_BLOB, entry.imageData);
144+ values.put(FIELD_ALBUM_PATH, entry.albumPath);
145+ db.insert(TABLE_WIDGETS, null, values);
146+ }
147+ db.setTransactionSuccessful();
148+ } finally {
149+ db.endTransaction();
150+ }
151+ }
152+
94153 @Override
95154 public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
96155 int version = oldVersion;
97156
98157 if (version != DATABASE_VERSION) {
158+ ArrayList<Entry> data = new ArrayList<Entry>();
159+ saveData(db, oldVersion, data);
160+
99161 Log.w(TAG, "destroying all old data.");
100162 // Table "photos" is renamed to "widget" in version 4
101163 db.execSQL("DROP TABLE IF EXISTS photos");
102164 db.execSQL("DROP TABLE IF EXISTS " + TABLE_WIDGETS);
103165 onCreate(db);
166+
167+ restoreData(db, data);
104168 }
105169 }
106170
@@ -146,12 +210,6 @@ public class WidgetDatabaseHelper extends SQLiteOpenHelper {
146210 }
147211 }
148212
149- private static Bitmap loadBitmap(Cursor cursor, int columnIndex) {
150- byte[] data = cursor.getBlob(columnIndex);
151- if (data == null) return null;
152- return BitmapFactory.decodeByteArray(data, 0, data.length);
153- }
154-
155213 public Entry getEntry(int appWidgetId) {
156214 Cursor cursor = null;
157215 try {
--- a/src/com/android/gallery3d/widget/WidgetService.java
+++ b/src/com/android/gallery3d/gadget/WidgetService.java
@@ -14,7 +14,7 @@
1414 * limitations under the License.
1515 */
1616
17-package com.android.gallery3d.widget;
17+package com.android.gallery3d.gadget;
1818
1919 import com.android.gallery3d.R;
2020 import com.android.gallery3d.app.GalleryApp;
--- a/src/com/android/gallery3d/widget/WidgetSource.java
+++ b/src/com/android/gallery3d/gadget/WidgetSource.java
@@ -14,7 +14,7 @@
1414 * limitations under the License.
1515 */
1616
17-package com.android.gallery3d.widget;
17+package com.android.gallery3d.gadget;
1818
1919 import com.android.gallery3d.data.ContentListener;
2020
--- a/src/com/android/gallery3d/widget/WidgetTypeChooser.java
+++ b/src/com/android/gallery3d/gadget/WidgetTypeChooser.java
@@ -14,7 +14,7 @@
1414 * limitations under the License.
1515 */
1616
17-package com.android.gallery3d.widget;
17+package com.android.gallery3d.gadget;
1818
1919 import com.android.gallery3d.R;
2020
--- a/src/com/android/gallery3d/widget/WidgetUtils.java
+++ b/src/com/android/gallery3d/gadget/WidgetUtils.java
@@ -14,7 +14,7 @@
1414 * limitations under the License.
1515 */
1616
17-package com.android.gallery3d.widget;
17+package com.android.gallery3d.gadget;
1818
1919 import com.android.gallery3d.R;
2020 import com.android.gallery3d.data.MediaItem;