summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBobby Georgescu <georgescu@google.com>2013-03-20 12:03:17 -0700
committerBobby Georgescu <georgescu@google.com>2013-03-20 14:07:28 -0700
commita40965b95af786ed2aa13ff63e38b92881f3c315 (patch)
tree1eb2959a791302c8a95164275e812daff143b7d0
parent932aee29ce7ad3f77ee7c5e57082efb638b75d65 (diff)
downloadandroid_packages_apps_Snap-a40965b95af786ed2aa13ff63e38b92881f3c315.tar.gz
android_packages_apps_Snap-a40965b95af786ed2aa13ff63e38b92881f3c315.tar.bz2
android_packages_apps_Snap-a40965b95af786ed2aa13ff63e38b92881f3c315.zip
Refactor fragment/activity coupling in new Gallery
Change-Id: I7cc54b352197e1975cff286f4add7d0f42637841
-rw-r--r--src/com/android/photos/AlbumActivity.java13
-rw-r--r--src/com/android/photos/AlbumFragment.java30
-rw-r--r--src/com/android/photos/AlbumSetFragment.java25
-rw-r--r--src/com/android/photos/GalleryActivity.java24
-rw-r--r--src/com/android/photos/GalleryFragmentHost.java21
-rw-r--r--src/com/android/photos/MultiChoiceManager.java19
-rw-r--r--src/com/android/photos/PhotoSetFragment.java24
7 files changed, 100 insertions, 56 deletions
diff --git a/src/com/android/photos/AlbumActivity.java b/src/com/android/photos/AlbumActivity.java
index a6e7ef79d..7488a5cee 100644
--- a/src/com/android/photos/AlbumActivity.java
+++ b/src/com/android/photos/AlbumActivity.java
@@ -19,25 +19,30 @@ package com.android.photos;
import android.app.Activity;
import android.os.Bundle;
-public class AlbumActivity extends Activity {
+public class AlbumActivity extends Activity implements GalleryFragmentHost {
public static final String KEY_ALBUM_URI = AlbumFragment.KEY_ALBUM_URI;
public static final String KEY_ALBUM_TITLE = "AlbumTitle";
- private SelectionManager mSelectionManager;
+ private MultiChoiceManager mMultiChoiceManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Bundle intentExtras = getIntent().getExtras();
- mSelectionManager = new SelectionManager(this);
+ mMultiChoiceManager = new MultiChoiceManager(this);
if (savedInstanceState == null) {
AlbumFragment albumFragment = new AlbumFragment();
+ mMultiChoiceManager.setDelegate(albumFragment);
albumFragment.setArguments(intentExtras);
- albumFragment.setSelectionManager(mSelectionManager);
getFragmentManager().beginTransaction().add(android.R.id.content,
albumFragment).commit();
}
getActionBar().setTitle(intentExtras.getString(KEY_ALBUM_TITLE));
}
+
+ @Override
+ public MultiChoiceManager getMultiChoiceManager() {
+ return mMultiChoiceManager;
+ }
}
diff --git a/src/com/android/photos/AlbumFragment.java b/src/com/android/photos/AlbumFragment.java
index 377da0970..36416c6f6 100644
--- a/src/com/android/photos/AlbumFragment.java
+++ b/src/com/android/photos/AlbumFragment.java
@@ -16,6 +16,7 @@
package com.android.photos;
+import android.app.Activity;
import android.app.Fragment;
import android.app.LoaderManager.LoaderCallbacks;
import android.content.Context;
@@ -42,7 +43,7 @@ import com.android.photos.shims.MediaItemsLoader;
import java.util.ArrayList;
public class AlbumFragment extends Fragment implements OnItemClickListener,
- LoaderCallbacks<Cursor>, MultiChoiceManager.Delegate, SelectionManager.Client {
+ LoaderCallbacks<Cursor>, MultiChoiceManager.Delegate {
protected static final String KEY_ALBUM_URI = "AlbumUri";
private static final int LOADER_ALBUM = 1;
@@ -53,17 +54,14 @@ public class AlbumFragment extends Fragment implements OnItemClickListener,
private boolean mInitialLoadComplete = false;
private LoaderCompatShim<Cursor> mLoaderCompatShim;
private PhotoThumbnailAdapter mAdapter;
- private MultiChoiceManager mMultiChoiceManager;
- private SelectionManager mSelectionManager;
private String mAlbumPath;
+ private GalleryFragmentHost mHost;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Context context = getActivity();
mAdapter = new PhotoThumbnailAdapter(context);
- mMultiChoiceManager = new MultiChoiceManager(context, this);
- mMultiChoiceManager.setSelectionManager(mSelectionManager);
Bundle args = getArguments();
if (args != null) {
mAlbumPath = args.getString(KEY_ALBUM_URI, null);
@@ -71,14 +69,6 @@ public class AlbumFragment extends Fragment implements OnItemClickListener,
}
@Override
- public void setSelectionManager(SelectionManager manager) {
- mSelectionManager = manager;
- if (mMultiChoiceManager != null) {
- mMultiChoiceManager.setSelectionManager(manager);
- }
- }
-
- @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View root = inflater.inflate(R.layout.photo_set, container, false);
@@ -90,7 +80,7 @@ public class AlbumFragment extends Fragment implements OnItemClickListener,
mEmptyView.setVisibility(View.GONE);
mAlbumView.setAdapter(mAdapter);
mAlbumView.setChoiceMode(GridView.CHOICE_MODE_MULTIPLE_MODAL);
- mAlbumView.setMultiChoiceModeListener(mMultiChoiceManager);
+ mAlbumView.setMultiChoiceModeListener(mHost.getMultiChoiceManager());
getLoaderManager().initLoader(LOADER_ALBUM, null, this);
updateEmptyStatus();
return root;
@@ -104,6 +94,18 @@ public class AlbumFragment extends Fragment implements OnItemClickListener,
}
@Override
+ public void onAttach(Activity activity) {
+ super.onAttach(activity);
+ mHost = (GalleryFragmentHost) activity;
+ }
+
+ @Override
+ public void onDetach() {
+ super.onDetach();
+ mHost = null;
+ }
+
+ @Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
if (mLoaderCompatShim == null) {
diff --git a/src/com/android/photos/AlbumSetFragment.java b/src/com/android/photos/AlbumSetFragment.java
index 17dc69c97..6bfc05127 100644
--- a/src/com/android/photos/AlbumSetFragment.java
+++ b/src/com/android/photos/AlbumSetFragment.java
@@ -16,6 +16,7 @@
package com.android.photos;
+import android.app.Activity;
import android.app.Fragment;
import android.app.LoaderManager.LoaderCallbacks;
import android.content.Context;
@@ -32,7 +33,6 @@ import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.GridView;
-import android.widget.Toast;
import com.android.gallery3d.R;
import com.android.photos.adapters.AlbumSetCursorAdapter;
@@ -44,14 +44,13 @@ import java.util.ArrayList;
public class AlbumSetFragment extends Fragment implements OnItemClickListener,
- LoaderCallbacks<Cursor>, MultiChoiceManager.Delegate, SelectionManager.Client {
+ LoaderCallbacks<Cursor>, MultiChoiceManager.Delegate {
private GridView mAlbumSetView;
private View mEmptyView;
private AlbumSetCursorAdapter mAdapter;
private LoaderCompatShim<Cursor> mLoaderCompatShim;
- private MultiChoiceManager mMultiChoiceManager;
- private SelectionManager mSelectionManager;
+ private GalleryFragmentHost mHost;
private static final int LOADER_ALBUMSET = 1;
@@ -60,16 +59,18 @@ public class AlbumSetFragment extends Fragment implements OnItemClickListener,
super.onCreate(savedInstanceState);
Context context = getActivity();
mAdapter = new AlbumSetCursorAdapter(context);
- mMultiChoiceManager = new MultiChoiceManager(context, this);
- mMultiChoiceManager.setSelectionManager(mSelectionManager);
}
@Override
- public void setSelectionManager(SelectionManager manager) {
- mSelectionManager = manager;
- if (mMultiChoiceManager != null) {
- mMultiChoiceManager.setSelectionManager(manager);
- }
+ public void onAttach(Activity activity) {
+ super.onAttach(activity);
+ mHost = (GalleryFragmentHost) activity;
+ }
+
+ @Override
+ public void onDetach() {
+ super.onDetach();
+ mHost = null;
}
@Override
@@ -81,7 +82,7 @@ public class AlbumSetFragment extends Fragment implements OnItemClickListener,
mEmptyView.setVisibility(View.GONE);
mAlbumSetView.setAdapter(mAdapter);
mAlbumSetView.setChoiceMode(GridView.CHOICE_MODE_MULTIPLE_MODAL);
- mAlbumSetView.setMultiChoiceModeListener(mMultiChoiceManager);
+ mAlbumSetView.setMultiChoiceModeListener(mHost.getMultiChoiceManager());
mAlbumSetView.setOnItemClickListener(this);
getLoaderManager().initLoader(LOADER_ALBUMSET, null, this);
updateEmptyStatus();
diff --git a/src/com/android/photos/GalleryActivity.java b/src/com/android/photos/GalleryActivity.java
index ddf04e365..78824d1ba 100644
--- a/src/com/android/photos/GalleryActivity.java
+++ b/src/com/android/photos/GalleryActivity.java
@@ -21,29 +21,29 @@ import android.app.ActionBar.Tab;
import android.app.Activity;
import android.app.Fragment;
import android.app.FragmentTransaction;
-import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.v13.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.Menu;
import android.view.MenuItem;
+import android.view.ViewGroup;
import com.android.camera.CameraActivity;
import com.android.gallery3d.R;
import java.util.ArrayList;
-public class GalleryActivity extends Activity {
+public class GalleryActivity extends Activity implements GalleryFragmentHost {
- private SelectionManager mSelectionManager;
+ private MultiChoiceManager mMultiChoiceManager;
private ViewPager mViewPager;
private TabsAdapter mTabsAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
- mSelectionManager = new SelectionManager(this);
+ mMultiChoiceManager = new MultiChoiceManager(this);
mViewPager = new ViewPager(this);
mViewPager.setId(R.id.viewpager);
setContentView(mViewPager);
@@ -134,11 +134,8 @@ public class GalleryActivity extends Activity {
@Override
public Fragment getItem(int position) {
TabInfo info = mTabs.get(position);
- Fragment item = Fragment.instantiate(mActivity, info.clss.getName(),
+ return Fragment.instantiate(mActivity, info.clss.getName(),
info.args);
- ((SelectionManager.Client) item).setSelectionManager(
- mActivity.mSelectionManager);
- return item;
}
@Override
@@ -152,6 +149,12 @@ public class GalleryActivity extends Activity {
}
@Override
+ public void setPrimaryItem(ViewGroup container, int position, Object object) {
+ super.setPrimaryItem(container, position, object);
+ mActivity.mMultiChoiceManager.setDelegate((MultiChoiceManager.Delegate) object);
+ }
+
+ @Override
public void onPageScrollStateChanged(int state) {
}
@@ -173,4 +176,9 @@ public class GalleryActivity extends Activity {
public void onTabReselected(Tab tab, FragmentTransaction ft) {
}
}
+
+ @Override
+ public MultiChoiceManager getMultiChoiceManager() {
+ return mMultiChoiceManager;
+ }
}
diff --git a/src/com/android/photos/GalleryFragmentHost.java b/src/com/android/photos/GalleryFragmentHost.java
new file mode 100644
index 000000000..e533df1aa
--- /dev/null
+++ b/src/com/android/photos/GalleryFragmentHost.java
@@ -0,0 +1,21 @@
+/*
+ * Copyright (C) 2013 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.photos;
+
+public interface GalleryFragmentHost {
+ public MultiChoiceManager getMultiChoiceManager();
+}
diff --git a/src/com/android/photos/MultiChoiceManager.java b/src/com/android/photos/MultiChoiceManager.java
index d339cb721..0e25c740e 100644
--- a/src/com/android/photos/MultiChoiceManager.java
+++ b/src/com/android/photos/MultiChoiceManager.java
@@ -32,9 +32,7 @@ import android.widget.ShareActionProvider;
import android.widget.ShareActionProvider.OnShareTargetSelectedListener;
import com.android.gallery3d.R;
-import com.android.gallery3d.app.MuteVideo;
import com.android.gallery3d.app.TrimVideo;
-import com.android.gallery3d.data.MediaItem;
import com.android.gallery3d.data.MediaObject;
import com.android.gallery3d.filtershow.FilterShowActivity;
import com.android.gallery3d.util.GalleryUtils;
@@ -65,13 +63,19 @@ public class MultiChoiceManager implements MultiChoiceModeListener,
private ArrayList<Uri> mSelectedShareableUrisArray = new ArrayList<Uri>();
- public MultiChoiceManager(Context context, Delegate delegate) {
- mContext = context;
- mDelegate = delegate;
+ public MultiChoiceManager(Activity activity) {
+ mContext = activity;
+ mSelectionManager = new SelectionManager(activity);
}
- public void setSelectionManager(SelectionManager selectionManager) {
- mSelectionManager = selectionManager;
+ public void setDelegate(Delegate delegate) {
+ if (mDelegate == delegate) {
+ return;
+ }
+ if (mActionMode != null) {
+ mActionMode.finish();
+ }
+ mDelegate = delegate;
}
@Override
@@ -95,6 +99,7 @@ public class MultiChoiceManager implements MultiChoiceModeListener,
return GalleryUtils.MIME_TYPE_ALL;
}
}
+
@Override
public void onItemCheckedStateChanged(ActionMode mode, int position, long id,
boolean checked) {
diff --git a/src/com/android/photos/PhotoSetFragment.java b/src/com/android/photos/PhotoSetFragment.java
index 769f13113..c6ec0328d 100644
--- a/src/com/android/photos/PhotoSetFragment.java
+++ b/src/com/android/photos/PhotoSetFragment.java
@@ -16,6 +16,7 @@
package com.android.photos;
+import android.app.Activity;
import android.app.Fragment;
import android.app.LoaderManager.LoaderCallbacks;
import android.content.Context;
@@ -42,7 +43,7 @@ import com.android.photos.shims.MediaItemsLoader;
import java.util.ArrayList;
public class PhotoSetFragment extends Fragment implements OnItemClickListener,
- LoaderCallbacks<Cursor>, MultiChoiceManager.Delegate, SelectionManager.Client {
+ LoaderCallbacks<Cursor>, MultiChoiceManager.Delegate {
private static final int LOADER_PHOTOSET = 1;
@@ -52,24 +53,25 @@ public class PhotoSetFragment extends Fragment implements OnItemClickListener,
private boolean mInitialLoadComplete = false;
private LoaderCompatShim<Cursor> mLoaderCompatShim;
private PhotoThumbnailAdapter mAdapter;
- private MultiChoiceManager mMultiChoiceManager;
- private SelectionManager mSelectionManager;
+ private GalleryFragmentHost mHost;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Context context = getActivity();
mAdapter = new PhotoThumbnailAdapter(context);
- mMultiChoiceManager = new MultiChoiceManager(context, this);
- mMultiChoiceManager.setSelectionManager(mSelectionManager);
}
@Override
- public void setSelectionManager(SelectionManager manager) {
- mSelectionManager = manager;
- if (mMultiChoiceManager != null) {
- mMultiChoiceManager.setSelectionManager(manager);
- }
+ public void onAttach(Activity activity) {
+ super.onAttach(activity);
+ mHost = (GalleryFragmentHost) activity;
+ }
+
+ @Override
+ public void onDetach() {
+ super.onDetach();
+ mHost = null;
}
@Override
@@ -84,7 +86,7 @@ public class PhotoSetFragment extends Fragment implements OnItemClickListener,
mEmptyView.setVisibility(View.GONE);
mPhotoSetView.setAdapter(mAdapter);
mPhotoSetView.setChoiceMode(GridView.CHOICE_MODE_MULTIPLE_MODAL);
- mPhotoSetView.setMultiChoiceModeListener(mMultiChoiceManager);
+ mPhotoSetView.setMultiChoiceModeListener(mHost.getMultiChoiceManager());
getLoaderManager().initLoader(LOADER_PHOTOSET, null, this);
updateEmptyStatus();
return root;