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;
+ }
}
package com.android.photos;
+import android.app.Activity;
import android.app.Fragment;
import android.app.LoaderManager.LoaderCallbacks;
import android.content.Context;
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;
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);
}
@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);
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;
}
@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) {
package com.android.photos;
+import android.app.Activity;
import android.app.Fragment;
import android.app.LoaderManager.LoaderCallbacks;
import android.content.Context;
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;
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;
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
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();
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);
@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
}
@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) {
}
public void onTabReselected(Tab tab, FragmentTransaction ft) {
}
}
+
+ @Override
+ public MultiChoiceManager getMultiChoiceManager() {
+ return mMultiChoiceManager;
+ }
}
--- /dev/null
+/*
+ * 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();
+}
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;
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
return GalleryUtils.MIME_TYPE_ALL;
}
}
+
@Override
public void onItemCheckedStateChanged(ActionMode mode, int position, long id,
boolean checked) {
package com.android.photos;
+import android.app.Activity;
import android.app.Fragment;
import android.app.LoaderManager.LoaderCallbacks;
import android.content.Context;
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;
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
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;