diff options
author | Yuli Huang <yuli@google.com> | 2011-09-12 22:25:30 +0800 |
---|---|---|
committer | Yuli Huang <yuli@google.com> | 2011-09-13 00:36:00 +0800 |
commit | ab5055ac921f194f4d43f173881d17cf76719efd (patch) | |
tree | 7b1c64bd30c8185b6363069c006b701a9878cc34 /src/com/android/gallery3d/photoeditor/Toolbar.java | |
parent | 6a5a246ca7973054364f5ee8ca2df3164bf38458 (diff) | |
download | android_packages_apps_Snap-ab5055ac921f194f4d43f173881d17cf76719efd.tar.gz android_packages_apps_Snap-ab5055ac921f194f4d43f173881d17cf76719efd.tar.bz2 android_packages_apps_Snap-ab5055ac921f194f4d43f173881d17cf76719efd.zip |
Fix b/4643148: Make PhotoEditor integrated into Gallery.
1. Move PhotoEditor code/resources into Gallery for single apk.
2. Change PhotoEditor package to com.android.gallery3d.photoeditor.
3. Rename PhotoEditor resources to avoid mess up Gallery resources.
4. Move Doodle effect from fix-effects to color-effects.
5. Update PhotoEditor bottom action-bar background.
Change-Id: I1a2f7d27d89a14fe6a0435575b993ed8b75e6bf4
Diffstat (limited to 'src/com/android/gallery3d/photoeditor/Toolbar.java')
-rw-r--r-- | src/com/android/gallery3d/photoeditor/Toolbar.java | 159 |
1 files changed, 159 insertions, 0 deletions
diff --git a/src/com/android/gallery3d/photoeditor/Toolbar.java b/src/com/android/gallery3d/photoeditor/Toolbar.java new file mode 100644 index 000000000..72f243bab --- /dev/null +++ b/src/com/android/gallery3d/photoeditor/Toolbar.java @@ -0,0 +1,159 @@ +/* + * Copyright (C) 2010 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.photoeditor; + +import android.content.Context; +import android.graphics.Bitmap; +import android.net.Uri; +import android.util.AttributeSet; +import android.view.MotionEvent; +import android.widget.RelativeLayout; + +import com.android.gallery3d.R; + +/** + * Toolbar that contains all tools and handles all operations for editing photo. + */ +public class Toolbar extends RelativeLayout { + + private final ToolbarIdleHandler idleHandler; + private FilterStack filterStack; + private EffectsBar effectsBar; + private ActionBar actionBar; + private Uri sourceUri; + + public Toolbar(Context context, AttributeSet attrs) { + super(context, attrs); + + idleHandler = new ToolbarIdleHandler(context); + setOnHierarchyChangeListener(idleHandler); + } + + @Override + public boolean dispatchTouchEvent(MotionEvent ev) { + idleHandler.killIdle(); + return super.dispatchTouchEvent(ev); + } + + public void initialize(FilterStack filterStack) { + this.filterStack = filterStack; + effectsBar = (EffectsBar) findViewById(R.id.effects_bar); + effectsBar.initialize(filterStack); + actionBar = (ActionBar) findViewById(R.id.action_bar); + actionBar.initialize(createActionBarListener()); + idleHandler.killIdle(); + } + + private ActionBar.ActionBarListener createActionBarListener() { + actionBar = (ActionBar) findViewById(R.id.action_bar); + return new ActionBar.ActionBarListener() { + + @Override + public void onUndo() { + effectsBar.exit(new Runnable() { + + @Override + public void run() { + final SpinnerProgressDialog progressDialog = SpinnerProgressDialog.show( + Toolbar.this); + filterStack.undo(new OnDoneCallback() { + + @Override + public void onDone() { + progressDialog.dismiss(); + } + }); + } + }); + } + + @Override + public void onRedo() { + effectsBar.exit(new Runnable() { + + @Override + public void run() { + final SpinnerProgressDialog progressDialog = SpinnerProgressDialog.show( + Toolbar.this); + filterStack.redo(new OnDoneCallback() { + + @Override + public void onDone() { + progressDialog.dismiss(); + } + }); + } + }); + } + + @Override + public void onSave() { + effectsBar.exit(new Runnable() { + + @Override + public void run() { + savePhoto(null); + } + }); + } + }; + } + + public void openPhoto(Uri uri) { + sourceUri = uri; + + final SpinnerProgressDialog progressDialog = SpinnerProgressDialog.show(this); + new LoadScreennailTask(getContext(), new LoadScreennailTask.Callback() { + + @Override + public void onComplete(final Bitmap bitmap) { + filterStack.setPhotoSource(bitmap, new OnDoneCallback() { + + @Override + public void onDone() { + progressDialog.dismiss(); + } + }); + } + }).execute(sourceUri); + } + + /** + * Saves photo and executes runnable (if provided) after saving done. + */ + public void savePhoto(final Runnable runnable) { + final SpinnerProgressDialog progressDialog = SpinnerProgressDialog.show(this); + filterStack.saveBitmap(new OnDoneBitmapCallback() { + + @Override + public void onDone(Bitmap bitmap) { + new SaveCopyTask(getContext(), sourceUri, new SaveCopyTask.Callback() { + + @Override + public void onComplete(Uri uri) { + // TODO: Handle saving failure. + progressDialog.dismiss(); + actionBar.disableSave(); + if (runnable != null) { + runnable.run(); + } + } + }).execute(bitmap); + } + }); + } +} |