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;
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;
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;
public class FilterShowActivity extends FragmentActivity implements OnItemClickListener,
OnShareTargetSelectedListener, DialogInterface.OnShowListener,
- DialogInterface.OnDismissListener{
+ DialogInterface.OnDismissListener, PopupMenu.OnDismissListener{
private String mAction = "";
MasterImage mMasterImage = null;
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;
private boolean mIsBound = false;
private Menu mMenu;
private DialogInterface mCurrentDialog = null;
+ private PopupMenu mCurrentMenu = null;
private boolean mLoadingVisible = true;
public ProcessingService getProcessingService() {
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,
}
public void updateCategories() {
+ if (mMasterImage == null) {
+ return;
+ }
ImagePreset preset = mMasterImage.getPreset();
mCategoryLooksAdapter.reflectImagePreset(preset);
mCategoryBordersAdapter.reflectImagePreset(preset);
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;
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);
}
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() {
fillCategories();
loadMainPanel();
+ if (mCurrentMenu != null) {
+ mCurrentMenu.dismiss();
+ mCurrentMenu = null;
+ }
if (mCurrentDialog != null) {
mCurrentDialog.dismiss();
mCurrentDialog = null;
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();
}