private void prepareAnimationBackToFilmstrip(int slotIndex) { if (mAlbumDataAdapter == null || !mAlbumDataAdapter.isActive(slotIndex)) return; MediaItem item = mAlbumDataAdapter.get(slotIndex); if (item == null) return; TransitionStore transitions = mActivity.getTransitionStore(); transitions.put(PhotoPage.KEY_INDEX_HINT, slotIndex); transitions.put(PhotoPage.KEY_OPEN_ANIMATION_RECT, mSlotView.getSlotRect(slotIndex, mRootPane)); }
// Show sync error toast when all the following conditions are met: // (1) both loading and sync are done, // (2) sync result is error, // (3) the page is still active, and // (4) no photo is shown or loading fails. private void showSyncErrorIfNecessary(boolean loadingFailed) { if ((mLoadingBits == 0) && (mSyncResult == MediaSet.SYNC_RESULT_ERROR) && mIsActive && (loadingFailed || (mAlbumDataAdapter.size() == 0))) { Toast.makeText(mActivity, R.string.sync_album_error, Toast.LENGTH_LONG).show(); } }
public void onLongTap(int slotIndex) { if (mGetContent) return; MediaItem item = mAlbumDataAdapter.get(slotIndex); if (item == null) return; mSelectionManager.setAutoLeaveSelectionMode(true); mSelectionManager.toggle(item.getPath()); mSlotView.invalidate(); }
@Override protected void onDestroy() { super.onDestroy(); if (mAlbumDataAdapter != null) { mAlbumDataAdapter.setLoadingListener(null); } mActionModeHandler.destroy(); }
private void switchToFilmstrip() { if (mAlbumDataAdapter.size() < 1) return; int targetPhoto = mSlotView.getVisibleStart(); prepareAnimationBackToFilmstrip(targetPhoto); if (mLaunchedFromPhotoPage) { onBackPressed(); } else { pickPhoto(targetPhoto, true); } }
@Override public int getItemIndex(Path path) { int start = mSlotView.getVisibleStart(); int end = mSlotView.getVisibleEnd(); for (int i = start; i < end; ++i) { MediaItem item = mAlbumDataAdapter.get(i); if (item != null && item.getPath() == path) return i; } return -1; }
private void clearLoadingBit(int loadTaskBit) { mLoadingBits &= ~loadTaskBit; if (mLoadingBits == 0 && mIsActive) { if (mAlbumDataAdapter.size() == 0) { Intent result = new Intent(); result.putExtra(KEY_EMPTY_ALBUM, true); setStateResult(Activity.RESULT_OK, result); mActivity.getStateManager().finishState(this); } } }
private void initializeData(Bundle data) { mMediaSetPath = Path.fromString(data.getString(KEY_MEDIA_PATH)); mParentMediaSetString = data.getString(KEY_PARENT_MEDIA_PATH); mMediaSet = mActivity.getDataManager().getMediaSet(mMediaSetPath); if (mMediaSet == null) { Utils.fail("MediaSet is null. Path = %s", mMediaSetPath); } mSelectionManager.setSourceMediaSet(mMediaSet); mAlbumDataAdapter = new AlbumDataLoader(mActivity, mMediaSet); mAlbumDataAdapter.setLoadingListener(new MyLoadingListener()); mAlbumView.setModel(mAlbumDataAdapter); }
private void onSingleTapUp(int slotIndex) { if (!mIsActive) return; if (mSelectionManager.inSelectionMode()) { MediaItem item = mAlbumDataAdapter.get(slotIndex); if (item == null) return; // Item not ready yet, ignore the click mSelectionManager.toggle(item.getPath()); mSlotView.invalidate(); } else { // Render transition in pressed state mAlbumView.setPressedIndex(slotIndex); mAlbumView.setPressedUp(); mHandler.sendMessageDelayed( mHandler.obtainMessage(MSG_PICK_PHOTO, slotIndex, 0), FadeTexture.DURATION); } }
@Override protected void onPause() { super.onPause(); mIsActive = false; if (mSelectionManager.inSelectionMode()) { mSelectionManager.leaveSelectionMode(); } mAlbumView.setSlotFilter(null); mActionModeHandler.pause(); mAlbumDataAdapter.pause(); mAlbumView.pause(); DetailsHelper.pause(); if (!mGetContent) { mActivity.getGalleryActionBar().disableAlbumModeMenu(true); } if (mSyncTask != null) { mSyncTask.cancel(); mSyncTask = null; clearLoadingBit(BIT_LOADING_SYNC); } }
@Override protected void onResume() { super.onResume(); mIsActive = true; mResumeEffect = mActivity.getTransitionStore().get(KEY_RESUME_ANIMATION); if (mResumeEffect != null) { mAlbumView.setSlotFilter(mResumeEffect); mResumeEffect.setPositionProvider(mPositionProvider); mResumeEffect.start(); } setContentPane(mRootPane); boolean enableHomeButton = (mActivity.getStateManager().getStateCount() > 1) | mParentMediaSetString != null; GalleryActionBar actionBar = mActivity.getGalleryActionBar(); actionBar.setDisplayOptions(enableHomeButton, false); if (!mGetContent) { actionBar.enableAlbumModeMenu(GalleryActionBar.ALBUM_GRID_MODE_SELECTED, this); } // Set the reload bit here to prevent it exit this page in clearLoadingBit(). setLoadingBit(BIT_LOADING_RELOAD); mLoadingFailed = false; mAlbumDataAdapter.resume(); mAlbumView.resume(); mAlbumView.setPressedIndex(-1); mActionModeHandler.resume(); if (!mInitialSynced) { setLoadingBit(BIT_LOADING_SYNC); mSyncTask = mMediaSet.requestSync(this); } mInCameraAndWantQuitOnPause = mInCameraApp; }
private void pickPhoto(int slotIndex, boolean startInFilmstrip) { if (!mIsActive) return; if (!startInFilmstrip) { // Launch photos in lights out mode mActivity.getGLRoot().setLightsOutMode(true); } MediaItem item = mAlbumDataAdapter.get(slotIndex); if (item == null) return; // Item not ready yet, ignore the click if (mGetContent) { onGetContent(item); } else if (mLaunchedFromPhotoPage) { TransitionStore transitions = mActivity.getTransitionStore(); transitions.put(PhotoPage.KEY_ALBUMPAGE_TRANSITION, PhotoPage.MSG_ALBUMPAGE_PICKED); transitions.put(PhotoPage.KEY_INDEX_HINT, slotIndex); onBackPressed(); } else { // Get into the PhotoPage. // mAlbumView.savePositions(PositionRepository.getInstance(mActivity)); Bundle data = new Bundle(); data.putInt(PhotoPage.KEY_INDEX_HINT, slotIndex); data.putParcelable( PhotoPage.KEY_OPEN_ANIMATION_RECT, mSlotView.getSlotRect(slotIndex, mRootPane)); data.putString(PhotoPage.KEY_MEDIA_SET_PATH, mMediaSetPath.toString()); data.putString(PhotoPage.KEY_MEDIA_ITEM_PATH, item.getPath().toString()); data.putInt(PhotoPage.KEY_ALBUMPAGE_TRANSITION, PhotoPage.MSG_ALBUMPAGE_STARTED); data.putBoolean(PhotoPage.KEY_START_IN_FILMSTRIP, startInFilmstrip); data.putBoolean(PhotoPage.KEY_IN_CAMERA_ROLL, mMediaSet.isCameraRoll()); if (startInFilmstrip) { mActivity.getStateManager().switchState(this, FilmstripPage.class, data); } else { mActivity.getStateManager().startStateForResult(SinglePhotoPage.class, REQUEST_PHOTO, data); } } }