Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 798f4a91 authored by Bobby Georgescu's avatar Bobby Georgescu Committed by Android (Google) Code Review
Browse files

Merge "Hold WakeLock for batch delete operation" into gb-ub-photos-arches

parents 8d8cdf7f 0385a1ab
Loading
Loading
Loading
Loading
+8 −1
Original line number Original line Diff line number Diff line
@@ -151,6 +151,8 @@ public class ActionModeHandler implements Callback, PopupList.OnPopupItemClickLi
        mListener = listener;
        mListener = listener;
    }
    }


    private WakeLockHoldingProgressListener mDeleteProgressListener;

    @Override
    @Override
    public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
    public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
        GLRoot root = mActivity.getGLRoot();
        GLRoot root = mActivity.getGLRoot();
@@ -173,9 +175,14 @@ public class ActionModeHandler implements Callback, PopupList.OnPopupItemClickLi
            int action = item.getItemId();
            int action = item.getItemId();
            if (action == R.id.action_import) {
            if (action == R.id.action_import) {
                listener = new ImportCompleteListener(mActivity);
                listener = new ImportCompleteListener(mActivity);
            } else if (item.getItemId() == R.id.action_delete) {
            } else if (action == R.id.action_delete) {
                confirmMsg = mActivity.getResources().getQuantityString(
                confirmMsg = mActivity.getResources().getQuantityString(
                        R.plurals.delete_selection, mSelectionManager.getSelectedCount());
                        R.plurals.delete_selection, mSelectionManager.getSelectedCount());
                if (mDeleteProgressListener == null) {
                    mDeleteProgressListener = new WakeLockHoldingProgressListener(mActivity,
                            "Gallery Delete Progress Listener");
                }
                listener = mDeleteProgressListener;
            }
            }
            mMenuExecutor.onMenuClicked(item, confirmMsg, listener);
            mMenuExecutor.onMenuClicked(item, confirmMsg, listener);
        } finally {
        } finally {
+6 −30
Original line number Original line Diff line number Diff line
@@ -16,10 +16,7 @@


package com.android.gallery3d.ui;
package com.android.gallery3d.ui;


import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.os.Bundle;
import android.os.PowerManager;
import android.widget.Toast;
import android.widget.Toast;


import com.android.gallery3d.R;
import com.android.gallery3d.R;
@@ -27,19 +24,16 @@ import com.android.gallery3d.app.AbstractGalleryActivity;
import com.android.gallery3d.app.AlbumPage;
import com.android.gallery3d.app.AlbumPage;
import com.android.gallery3d.util.MediaSetUtils;
import com.android.gallery3d.util.MediaSetUtils;


public class ImportCompleteListener implements MenuExecutor.ProgressListener {
public class ImportCompleteListener extends WakeLockHoldingProgressListener {
    private AbstractGalleryActivity mActivity;
    private static final String WAKE_LOCK_LABEL = "Gallery Album Import";
    private PowerManager.WakeLock mWakeLock;


    public ImportCompleteListener(AbstractGalleryActivity galleryActivity) {
    public ImportCompleteListener(AbstractGalleryActivity galleryActivity) {
        mActivity = galleryActivity;
        super(galleryActivity, WAKE_LOCK_LABEL);
        PowerManager pm =
                (PowerManager) ((Activity) mActivity).getSystemService(Context.POWER_SERVICE);
        mWakeLock = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "Gallery Album Import");
    }
    }


    @Override
    @Override
    public void onProgressComplete(int result) {
    public void onProgressComplete(int result) {
        super.onProgressComplete(result);
        int message;
        int message;
        if (result == MenuExecutor.EXECUTION_RESULT_SUCCESS) {
        if (result == MenuExecutor.EXECUTION_RESULT_SUCCESS) {
            message = R.string.import_complete;
            message = R.string.import_complete;
@@ -47,31 +41,13 @@ public class ImportCompleteListener implements MenuExecutor.ProgressListener {
        } else {
        } else {
            message = R.string.import_fail;
            message = R.string.import_fail;
        }
        }
        Toast.makeText(mActivity.getAndroidContext(), message, Toast.LENGTH_LONG).show();
        Toast.makeText(getActivity().getAndroidContext(), message, Toast.LENGTH_LONG).show();
        mWakeLock.release();
    }

    @Override
    public void onProgressUpdate(int index) {
    }

    @Override
    public void onProgressStart() {
        mWakeLock.acquire();
    }
    }


    private void goToImportedAlbum() {
    private void goToImportedAlbum() {
        String pathOfImportedAlbum = "/local/all/" + MediaSetUtils.IMPORTED_BUCKET_ID;
        String pathOfImportedAlbum = "/local/all/" + MediaSetUtils.IMPORTED_BUCKET_ID;
        Bundle data = new Bundle();
        Bundle data = new Bundle();
        data.putString(AlbumPage.KEY_MEDIA_PATH, pathOfImportedAlbum);
        data.putString(AlbumPage.KEY_MEDIA_PATH, pathOfImportedAlbum);
        mActivity.getStateManager().startState(AlbumPage.class, data);
        getActivity().getStateManager().startState(AlbumPage.class, data);
    }

    @Override
    public void onConfirmDialogDismissed(boolean confirmed) {
    }

    @Override
    public void onConfirmDialogShown() {
    }
    }
}
}
+66 −0
Original line number Original line Diff line number Diff line
/*
 * Copyright (C) 2012 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.android.gallery3d.ui;

import android.app.Activity;
import android.content.Context;
import android.os.PowerManager;

import com.android.gallery3d.app.AbstractGalleryActivity;

public class WakeLockHoldingProgressListener implements MenuExecutor.ProgressListener {
    static private final String DEFAULT_WAKE_LOCK_LABEL = "Gallery Progress Listener";
    private AbstractGalleryActivity mActivity;
    private PowerManager.WakeLock mWakeLock;

    public WakeLockHoldingProgressListener(AbstractGalleryActivity galleryActivity) {
        this(galleryActivity, DEFAULT_WAKE_LOCK_LABEL);
    }

    public WakeLockHoldingProgressListener(AbstractGalleryActivity galleryActivity, String label) {
        mActivity = galleryActivity;
        PowerManager pm =
                (PowerManager) ((Activity) mActivity).getSystemService(Context.POWER_SERVICE);
        mWakeLock = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, label);
    }

    @Override
    public void onProgressComplete(int result) {
        mWakeLock.release();
    }

    @Override
    public void onProgressStart() {
        mWakeLock.acquire();
    }

    protected AbstractGalleryActivity getActivity() {
        return mActivity;
    }

    @Override
    public void onProgressUpdate(int index) {
    }

    @Override
    public void onConfirmDialogDismissed(boolean confirmed) {
    }

    @Override
    public void onConfirmDialogShown() {
    }
}