106c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware/* 206c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware * Copyright (C) 2009 The Android Open Source Project 306c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware * 406c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware * Licensed under the Apache License, Version 2.0 (the "License"); 506c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware * you may not use this file except in compliance with the License. 606c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware * You may obtain a copy of the License at 706c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware * 806c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware * http://www.apache.org/licenses/LICENSE-2.0 906c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware * 1006c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware * Unless required by applicable law or agreed to in writing, software 1106c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware * distributed under the License is distributed on an "AS IS" BASIS, 1206c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1306c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware * See the License for the specific language governing permissions and 1406c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware * limitations under the License. 1506c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware */ 1606c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware 1706c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiwarepackage com.android.gallery3d.app; 1806c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware 1906c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiwareimport android.app.Dialog; 2006c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiwareimport android.content.ContentResolver; 2106c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiwareimport android.content.DialogInterface; 2206c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiwareimport android.content.DialogInterface.OnCancelListener; 2306c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiwareimport android.content.Intent; 2406c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiwareimport android.net.Uri; 2506c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiwareimport android.os.Bundle; 2606c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiwareimport android.view.InputDevice; 2706c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiwareimport android.view.MotionEvent; 2806c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiwareimport android.view.View; 2906c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiwareimport android.view.Window; 3006c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiwareimport android.view.WindowManager; 3106c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiwareimport android.widget.Toast; 3206c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware 3306c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiwareimport com.android.gallery3d.R; 3406c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiwareimport com.android.gallery3d.common.Utils; 3506c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiwareimport com.android.gallery3d.data.DataManager; 3606c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiwareimport com.android.gallery3d.data.MediaItem; 3706c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiwareimport com.android.gallery3d.data.MediaSet; 3806c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiwareimport com.android.gallery3d.data.Path; 3906c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiwareimport com.android.gallery3d.picasasource.PicasaSource; 4006c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiwareimport com.android.gallery3d.util.GalleryUtils; 4106c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware 4206c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiwarepublic final class GalleryActivity extends AbstractGalleryActivity implements OnCancelListener { 4306c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware public static final String EXTRA_SLIDESHOW = "slideshow"; 4406c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware public static final String EXTRA_DREAM = "dream"; 4506c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware public static final String EXTRA_CROP = "crop"; 4606c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware 4706c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware public static final String ACTION_REVIEW = "com.android.camera.action.REVIEW"; 4806c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware public static final String KEY_GET_CONTENT = "get-content"; 4906c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware public static final String KEY_GET_ALBUM = "get-album"; 5006c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware public static final String KEY_TYPE_BITS = "type-bits"; 5106c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware public static final String KEY_MEDIA_TYPES = "mediaTypes"; 5206c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware public static final String KEY_DISMISS_KEYGUARD = "dismiss-keyguard"; 5306c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware 5406c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware private static final String TAG = "GalleryActivity"; 5506c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware private Dialog mVersionCheckDialog; 5606c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware 5706c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware @Override 5806c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware protected void onCreate(Bundle savedInstanceState) { 5906c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware super.onCreate(savedInstanceState); 6006c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware requestWindowFeature(Window.FEATURE_ACTION_BAR); 6106c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware requestWindowFeature(Window.FEATURE_ACTION_BAR_OVERLAY); 6206c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware 6306c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware if (getIntent().getBooleanExtra(KEY_DISMISS_KEYGUARD, false)) { 6406c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware getWindow().addFlags( 6506c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD); 6606c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware } 6706c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware 6806c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware setContentView(R.layout.main); 6906c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware 7006c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware if (savedInstanceState != null) { 7106c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware getStateManager().restoreFromState(savedInstanceState); 7206c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware } else { 7306c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware initializeByIntent(); 7406c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware } 7506c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware } 7606c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware 7706c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware private void initializeByIntent() { 7806c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware Intent intent = getIntent(); 7906c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware String action = intent.getAction(); 8006c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware 8106c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware if (Intent.ACTION_GET_CONTENT.equalsIgnoreCase(action)) { 8206c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware startGetContent(intent); 8306c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware } else if (Intent.ACTION_PICK.equalsIgnoreCase(action)) { 8406c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware // We do NOT really support the PICK intent. Handle it as 8506c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware // the GET_CONTENT. However, we need to translate the type 8606c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware // in the intent here. 8706c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware Log.w(TAG, "action PICK is not supported"); 8806c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware String type = Utils.ensureNotNull(intent.getType()); 8906c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware if (type.startsWith("vnd.android.cursor.dir/")) { 9006c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware if (type.endsWith("/image")) intent.setType("image/*"); 9106c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware if (type.endsWith("/video")) intent.setType("video/*"); 9206c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware } 9306c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware startGetContent(intent); 9406c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware } else if (Intent.ACTION_VIEW.equalsIgnoreCase(action) 9506c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware || ACTION_REVIEW.equalsIgnoreCase(action)){ 9606c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware startViewAction(intent); 9706c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware } else { 9806c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware startDefaultPage(); 9906c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware } 10006c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware } 10106c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware 10206c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware public void startDefaultPage() { 10306c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware PicasaSource.showSignInReminder(this); 10406c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware Bundle data = new Bundle(); 10506c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware data.putString(AlbumSetPage.KEY_MEDIA_PATH, 10606c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware getDataManager().getTopSetPath(DataManager.INCLUDE_ALL)); 10706c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware getStateManager().startState(AlbumSetPage.class, data); 10806c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware mVersionCheckDialog = PicasaSource.getVersionCheckDialog(this); 10906c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware if (mVersionCheckDialog != null) { 11006c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware mVersionCheckDialog.setOnCancelListener(this); 11106c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware } 11206c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware } 11306c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware 11406c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware private void startGetContent(Intent intent) { 11506c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware Bundle data = intent.getExtras() != null 11606c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware ? new Bundle(intent.getExtras()) 11706c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware : new Bundle(); 11806c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware data.putBoolean(KEY_GET_CONTENT, true); 11906c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware int typeBits = GalleryUtils.determineTypeBits(this, intent); 12006c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware data.putInt(KEY_TYPE_BITS, typeBits); 12106c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware data.putString(AlbumSetPage.KEY_MEDIA_PATH, 12206c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware getDataManager().getTopSetPath(typeBits)); 12306c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware getStateManager().startState(AlbumSetPage.class, data); 12406c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware } 12506c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware 12606c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware private String getContentType(Intent intent) { 12706c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware String type = intent.getType(); 12806c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware if (type != null) { 12906c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware return GalleryUtils.MIME_TYPE_PANORAMA360.equals(type) 13006c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware ? MediaItem.MIME_TYPE_JPEG : type; 13106c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware } 13206c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware 13306c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware Uri uri = intent.getData(); 13406c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware try { 13506c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware return getContentResolver().getType(uri); 13606c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware } catch (Throwable t) { 13706c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware Log.w(TAG, "get type fail", t); 13806c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware return null; 13906c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware } 14006c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware } 14106c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware 14206c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware private void startViewAction(Intent intent) { 14306c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware Boolean slideshow = intent.getBooleanExtra(EXTRA_SLIDESHOW, false); 14406c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware if (slideshow) { 14506c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware getActionBar().hide(); 14606c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware DataManager manager = getDataManager(); 14706c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware Path path = manager.findPathByUri(intent.getData(), intent.getType()); 14806c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware if (path == null || manager.getMediaObject(path) 14906c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware instanceof MediaItem) { 15006c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware path = Path.fromString( 15106c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware manager.getTopSetPath(DataManager.INCLUDE_IMAGE)); 15206c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware } 15306c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware Bundle data = new Bundle(); 15406c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware data.putString(SlideshowPage.KEY_SET_PATH, path.toString()); 15506c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware data.putBoolean(SlideshowPage.KEY_RANDOM_ORDER, true); 15606c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware data.putBoolean(SlideshowPage.KEY_REPEAT, true); 15706c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware if (intent.getBooleanExtra(EXTRA_DREAM, false)) { 15806c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware data.putBoolean(SlideshowPage.KEY_DREAM, true); 15906c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware } 16006c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware getStateManager().startState(SlideshowPage.class, data); 16106c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware } else { 16206c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware Bundle data = new Bundle(); 16306c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware DataManager dm = getDataManager(); 16406c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware Uri uri = intent.getData(); 16506c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware String contentType = getContentType(intent); 16606c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware if (contentType == null) { 16706c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware Toast.makeText(this, 16806c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware R.string.no_such_item, Toast.LENGTH_LONG).show(); 16906c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware finish(); 17006c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware return; 17106c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware } 17206c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware if (uri == null) { 17306c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware int typeBits = GalleryUtils.determineTypeBits(this, intent); 17406c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware data.putInt(KEY_TYPE_BITS, typeBits); 17506c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware data.putString(AlbumSetPage.KEY_MEDIA_PATH, 17606c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware getDataManager().getTopSetPath(typeBits)); 17706c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware getStateManager().startState(AlbumSetPage.class, data); 17806c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware } else if (contentType.startsWith( 17906c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware ContentResolver.CURSOR_DIR_BASE_TYPE)) { 18006c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware int mediaType = intent.getIntExtra(KEY_MEDIA_TYPES, 0); 18106c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware if (mediaType != 0) { 18206c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware uri = uri.buildUpon().appendQueryParameter( 18306c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware KEY_MEDIA_TYPES, String.valueOf(mediaType)) 18406c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware .build(); 18506c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware } 18606c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware Path setPath = dm.findPathByUri(uri, null); 18706c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware MediaSet mediaSet = null; 18806c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware if (setPath != null) { 18906c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware mediaSet = (MediaSet) dm.getMediaObject(setPath); 19006c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware } 19106c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware if (mediaSet != null) { 19206c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware if (mediaSet.isLeafAlbum()) { 19306c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware data.putString(AlbumPage.KEY_MEDIA_PATH, setPath.toString()); 19406c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware data.putString(AlbumPage.KEY_PARENT_MEDIA_PATH, 19506c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware dm.getTopSetPath(DataManager.INCLUDE_ALL)); 19606c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware getStateManager().startState(AlbumPage.class, data); 19706c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware } else { 19806c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware data.putString(AlbumSetPage.KEY_MEDIA_PATH, setPath.toString()); 19906c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware getStateManager().startState(AlbumSetPage.class, data); 20006c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware } 20106c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware } else { 20206c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware startDefaultPage(); 20306c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware } 20406c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware } else { 20506c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware Path itemPath = dm.findPathByUri(uri, contentType); 20606c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware Path albumPath = dm.getDefaultSetOf(itemPath); 20706c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware 20806c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware data.putString(PhotoPage.KEY_MEDIA_ITEM_PATH, itemPath.toString()); 20906c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware data.putBoolean(PhotoPage.KEY_READONLY, true); 21006c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware 21106c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware // TODO: Make the parameter "SingleItemOnly" public so other 21206c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware // activities can reference it. 21306c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware boolean singleItemOnly = (albumPath == null) 21406c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware || intent.getBooleanExtra("SingleItemOnly", false); 21506c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware if (!singleItemOnly) { 21606c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware data.putString(PhotoPage.KEY_MEDIA_SET_PATH, albumPath.toString()); 21706c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware // when FLAG_ACTIVITY_NEW_TASK is set, (e.g. when intent is fired 21806c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware // from notification), back button should behave the same as up button 21906c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware // rather than taking users back to the home screen 22006c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware if (intent.getBooleanExtra(PhotoPage.KEY_TREAT_BACK_AS_UP, false) 22106c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware || ((intent.getFlags() & Intent.FLAG_ACTIVITY_NEW_TASK) != 0)) { 22206c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware data.putBoolean(PhotoPage.KEY_TREAT_BACK_AS_UP, true); 22306c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware } 22406c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware } 22506c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware 22606c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware getStateManager().startState(SinglePhotoPage.class, data); 22706c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware } 22806c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware } 22906c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware } 23006c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware 23106c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware @Override 23206c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware protected void onResume() { 23306c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware Utils.assertTrue(getStateManager().getStateCount() > 0); 23406c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware super.onResume(); 23506c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware if (mVersionCheckDialog != null) { 23606c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware mVersionCheckDialog.show(); 23706c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware } 23806c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware } 23906c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware 24006c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware @Override 24106c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware protected void onPause() { 24206c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware super.onPause(); 24306c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware if (mVersionCheckDialog != null) { 24406c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware mVersionCheckDialog.dismiss(); 24506c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware } 24606c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware } 24706c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware 24806c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware @Override 24906c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware public void onCancel(DialogInterface dialog) { 25006c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware if (dialog == mVersionCheckDialog) { 25106c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware mVersionCheckDialog = null; 25206c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware } 25306c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware } 25406c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware 25506c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware @Override 25606c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware public boolean onGenericMotionEvent(MotionEvent event) { 25706c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware final boolean isTouchPad = (event.getSource() 25806c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware & InputDevice.SOURCE_CLASS_POSITION) != 0; 25906c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware if (isTouchPad) { 26006c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware float maxX = event.getDevice().getMotionRange(MotionEvent.AXIS_X).getMax(); 26106c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware float maxY = event.getDevice().getMotionRange(MotionEvent.AXIS_Y).getMax(); 26206c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware View decor = getWindow().getDecorView(); 26306c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware float scaleX = decor.getWidth() / maxX; 26406c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware float scaleY = decor.getHeight() / maxY; 26506c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware float x = event.getX() * scaleX; 26606c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware //x = decor.getWidth() - x; // invert x 26706c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware float y = event.getY() * scaleY; 26806c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware //y = decor.getHeight() - y; // invert y 26906c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware MotionEvent touchEvent = MotionEvent.obtain(event.getDownTime(), 27006c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware event.getEventTime(), event.getAction(), x, y, event.getMetaState()); 27106c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware return dispatchTouchEvent(touchEvent); 27206c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware } 27306c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware return super.onGenericMotionEvent(event); 27406c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware } 27506c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware} 276