OSDN Git Service

Revert "Move Gallery2 to androidx."
[android-x86/packages-apps-Gallery2.git] / src / com / android / gallery3d / filtershow / FilterShowActivity.java
index 9d5005e..e627a61 100644 (file)
@@ -46,6 +46,7 @@ import android.support.v4.app.DialogFragment;
 import android.support.v4.app.Fragment;
 import android.support.v4.app.FragmentActivity;
 import android.support.v4.app.FragmentTransaction;
+import android.support.v4.print.PrintHelper;
 import android.util.DisplayMetrics;
 import android.util.Log;
 import android.util.TypedValue;
@@ -59,6 +60,7 @@ import android.view.WindowManager;
 import android.widget.AdapterView;
 import android.widget.AdapterView.OnItemClickListener;
 import android.widget.FrameLayout;
+import android.widget.PopupMenu;
 import android.widget.ShareActionProvider;
 import android.widget.ShareActionProvider.OnShareTargetSelectedListener;
 import android.widget.Spinner;
@@ -117,7 +119,6 @@ import com.android.gallery3d.filtershow.tools.XmpPresets.XMresults;
 import com.android.gallery3d.filtershow.ui.ExportDialog;
 import com.android.gallery3d.filtershow.ui.FramedTextButton;
 import com.android.gallery3d.util.GalleryUtils;
-import com.android.gallery3d.util.PrintJob;
 import com.android.photos.data.GalleryBitmapPool;
 
 import java.io.File;
@@ -129,7 +130,7 @@ import java.util.Vector;
 
 public class FilterShowActivity extends FragmentActivity implements OnItemClickListener,
         OnShareTargetSelectedListener, DialogInterface.OnShowListener,
-        DialogInterface.OnDismissListener{
+        DialogInterface.OnDismissListener, PopupMenu.OnDismissListener{
 
     private String mAction = "";
     MasterImage mMasterImage = null;
@@ -138,6 +139,7 @@ public class FilterShowActivity extends FragmentActivity implements OnItemClickL
 
     public static final String TINY_PLANET_ACTION = "com.android.camera.action.TINY_PLANET";
     public static final String LAUNCH_FULLSCREEN = "launch-fullscreen";
+    public static final boolean RESET_TO_LOADED = false;
     private ImageShow mImageShow = null;
 
     private View mSaveButton = null;
@@ -191,6 +193,7 @@ public class FilterShowActivity extends FragmentActivity implements OnItemClickL
     private boolean mIsBound = false;
     private Menu mMenu;
     private DialogInterface mCurrentDialog = null;
+    private PopupMenu mCurrentMenu = null;
     private boolean mLoadingVisible = true;
 
     public ProcessingService getProcessingService() {
@@ -293,7 +296,7 @@ public class FilterShowActivity extends FragmentActivity implements OnItemClickL
         MainPanel panel = new MainPanel();
         FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
         transaction.replace(R.id.main_panel_container, panel, MainPanel.FRAGMENT_TAG);
-        transaction.commit();
+        transaction.commitAllowingStateLoss();
     }
 
     public void loadEditorPanel(FilterRepresentation representation,
@@ -699,6 +702,9 @@ public class FilterShowActivity extends FragmentActivity implements OnItemClickL
     }
 
     public void updateCategories() {
+        if (mMasterImage == null) {
+            return;
+        }
         ImagePreset preset = mMasterImage.getPreset();
         mCategoryLooksAdapter.reflectImagePreset(preset);
         mCategoryBordersAdapter.reflectImagePreset(preset);
@@ -708,6 +714,20 @@ public class FilterShowActivity extends FragmentActivity implements OnItemClickL
         return findViewById(id);
     }
 
+    public void onShowMenu(PopupMenu menu) {
+        mCurrentMenu = menu;
+        menu.setOnDismissListener(this);
+    }
+
+    @Override
+    public void onDismiss(PopupMenu popupMenu){
+        if (mCurrentMenu == null) {
+            return;
+        }
+        mCurrentMenu.setOnDismissListener(null);
+        mCurrentMenu = null;
+    }
+
     @Override
     public void onShow(DialogInterface dialog) {
         mCurrentDialog = dialog;
@@ -989,6 +1009,10 @@ public class FilterShowActivity extends FragmentActivity implements OnItemClickL
         MenuItem undoItem = mMenu.findItem(R.id.undoButton);
         MenuItem redoItem = mMenu.findItem(R.id.redoButton);
         MenuItem resetItem = mMenu.findItem(R.id.resetHistoryButton);
+        MenuItem printItem = mMenu.findItem(R.id.printButton);
+        if (!PrintHelper.systemSupportsPrint()) {
+            printItem.setVisible(false);
+        }
         mMasterImage.getHistory().setMenuItems(undoItem, redoItem, resetItem);
     }
 
@@ -1060,7 +1084,8 @@ public class FilterShowActivity extends FragmentActivity implements OnItemClickL
 
     public void print() {
         Bitmap bitmap = MasterImage.getImage().getHighresImage();
-        PrintJob.printBitmap(this, "ImagePrint", bitmap);
+        PrintHelper printer = new PrintHelper(this);
+        printer.printBitmap("ImagePrint", bitmap);
     }
 
     public void addNewPreset() {
@@ -1232,6 +1257,10 @@ public class FilterShowActivity extends FragmentActivity implements OnItemClickL
         fillCategories();
         loadMainPanel();
 
+        if (mCurrentMenu != null) {
+            mCurrentMenu.dismiss();
+            mCurrentMenu = null;
+        }
         if (mCurrentDialog != null) {
             mCurrentDialog.dismiss();
             mCurrentDialog = null;
@@ -1264,8 +1293,17 @@ public class FilterShowActivity extends FragmentActivity implements OnItemClickL
         HistoryManager adapter = mMasterImage.getHistory();
         adapter.reset();
         HistoryItem historyItem = adapter.getItem(0);
-        ImagePreset original = new ImagePreset(historyItem.getImagePreset());
-        mMasterImage.setPreset(original, historyItem.getFilterRepresentation(), true);
+        ImagePreset original = null;
+        if (RESET_TO_LOADED) {
+            original = new ImagePreset(historyItem.getImagePreset());
+        } else {
+            original = new ImagePreset();
+        }
+        FilterRepresentation rep = null;
+        if (historyItem != null) {
+            rep = historyItem.getFilterRepresentation();
+        }
+        mMasterImage.setPreset(original, rep, true);
         invalidateViews();
         backToMain();
     }