summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorBobby Georgescu <georgescu@google.com>2013-03-19 18:39:02 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2013-03-19 18:39:02 +0000
commitf3c6bd763c84f5a99f57dffe38a345514583dfb1 (patch)
treedf74b0ce7f97413ddab233f37243bda88ad3aab4 /src
parent3f26536bf18efcd9862d1553c4900d4100edd5a5 (diff)
parent2b18812c460e7cc721d4c4c25b3c6f1cf179554d (diff)
downloadandroid_packages_apps_Snap-f3c6bd763c84f5a99f57dffe38a345514583dfb1.tar.gz
android_packages_apps_Snap-f3c6bd763c84f5a99f57dffe38a345514583dfb1.tar.bz2
android_packages_apps_Snap-f3c6bd763c84f5a99f57dffe38a345514583dfb1.zip
Merge "Add album viewing to new Gallery" into gb-ub-photos-bryce
Diffstat (limited to 'src')
-rw-r--r--src/com/android/photos/AlbumActivity.java43
-rw-r--r--src/com/android/photos/AlbumFragment.java190
-rw-r--r--src/com/android/photos/AlbumSetFragment.java11
3 files changed, 241 insertions, 3 deletions
diff --git a/src/com/android/photos/AlbumActivity.java b/src/com/android/photos/AlbumActivity.java
new file mode 100644
index 000000000..a6e7ef79d
--- /dev/null
+++ b/src/com/android/photos/AlbumActivity.java
@@ -0,0 +1,43 @@
+/*
+ * 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;
+
+import android.app.Activity;
+import android.os.Bundle;
+
+public class AlbumActivity extends Activity {
+
+ public static final String KEY_ALBUM_URI = AlbumFragment.KEY_ALBUM_URI;
+ public static final String KEY_ALBUM_TITLE = "AlbumTitle";
+
+ private SelectionManager mSelectionManager;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ Bundle intentExtras = getIntent().getExtras();
+ mSelectionManager = new SelectionManager(this);
+ if (savedInstanceState == null) {
+ AlbumFragment albumFragment = new AlbumFragment();
+ albumFragment.setArguments(intentExtras);
+ albumFragment.setSelectionManager(mSelectionManager);
+ getFragmentManager().beginTransaction().add(android.R.id.content,
+ albumFragment).commit();
+ }
+ getActionBar().setTitle(intentExtras.getString(KEY_ALBUM_TITLE));
+ }
+}
diff --git a/src/com/android/photos/AlbumFragment.java b/src/com/android/photos/AlbumFragment.java
new file mode 100644
index 000000000..377da0970
--- /dev/null
+++ b/src/com/android/photos/AlbumFragment.java
@@ -0,0 +1,190 @@
+/*
+ * 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;
+
+import android.app.Fragment;
+import android.app.LoaderManager.LoaderCallbacks;
+import android.content.Context;
+import android.content.Intent;
+import android.content.Loader;
+import android.database.Cursor;
+import android.net.Uri;
+import android.os.Bundle;
+import android.util.SparseBooleanArray;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.AdapterView;
+import android.widget.AdapterView.OnItemClickListener;
+import android.widget.GridView;
+
+import com.android.gallery3d.R;
+import com.android.gallery3d.app.Gallery;
+import com.android.photos.adapters.PhotoThumbnailAdapter;
+import com.android.photos.data.PhotoSetLoader;
+import com.android.photos.shims.LoaderCompatShim;
+import com.android.photos.shims.MediaItemsLoader;
+
+import java.util.ArrayList;
+
+public class AlbumFragment extends Fragment implements OnItemClickListener,
+ LoaderCallbacks<Cursor>, MultiChoiceManager.Delegate, SelectionManager.Client {
+
+ protected static final String KEY_ALBUM_URI = "AlbumUri";
+ private static final int LOADER_ALBUM = 1;
+
+ private GridView mAlbumView;
+ private View mEmptyView;
+
+ private boolean mInitialLoadComplete = false;
+ private LoaderCompatShim<Cursor> mLoaderCompatShim;
+ private PhotoThumbnailAdapter mAdapter;
+ private MultiChoiceManager mMultiChoiceManager;
+ private SelectionManager mSelectionManager;
+ private String mAlbumPath;
+
+ @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);
+ mAlbumView = (GridView) root.findViewById(android.R.id.list);
+ // TODO: Remove once UI stabilizes
+ mAlbumView.setColumnWidth(MediaItemsLoader.getThumbnailSize());
+ mAlbumView.setOnItemClickListener(this);
+ mEmptyView = root.findViewById(android.R.id.empty);
+ mEmptyView.setVisibility(View.GONE);
+ mAlbumView.setAdapter(mAdapter);
+ mAlbumView.setChoiceMode(GridView.CHOICE_MODE_MULTIPLE_MODAL);
+ mAlbumView.setMultiChoiceModeListener(mMultiChoiceManager);
+ getLoaderManager().initLoader(LOADER_ALBUM, null, this);
+ updateEmptyStatus();
+ return root;
+ }
+
+ private void updateEmptyStatus() {
+ boolean empty = (mAdapter == null || mAdapter.getCount() == 0);
+ mAlbumView.setVisibility(empty ? View.GONE : View.VISIBLE);
+ mEmptyView.setVisibility(empty && mInitialLoadComplete
+ ? View.VISIBLE : View.GONE);
+ }
+
+ @Override
+ public void onItemClick(AdapterView<?> parent, View view, int position,
+ long id) {
+ if (mLoaderCompatShim == null) {
+ // Not fully initialized yet, discard
+ return;
+ }
+ Cursor item = mAdapter.getItem(position);
+ Uri uri = mLoaderCompatShim.uriForItem(item);
+ Intent intent = new Intent(Intent.ACTION_VIEW, uri);
+ intent.setClass(getActivity(), Gallery.class);
+ startActivity(intent);
+ }
+
+ @Override
+ public Loader<Cursor> onCreateLoader(int id, Bundle args) {
+ // TODO: Switch to PhotoSetLoader
+ MediaItemsLoader loader = new MediaItemsLoader(getActivity(), mAlbumPath);
+ mInitialLoadComplete = false;
+ mLoaderCompatShim = loader;
+ mAdapter.setDrawableFactory(mLoaderCompatShim);
+ return loader;
+ }
+
+ @Override
+ public void onLoadFinished(Loader<Cursor> loader,
+ Cursor data) {
+ mAdapter.swapCursor(data);
+ mInitialLoadComplete = true;
+ updateEmptyStatus();
+ }
+
+ @Override
+ public void onLoaderReset(Loader<Cursor> loader) {
+ }
+
+ @Override
+ public int getItemMediaType(Object item) {
+ return ((Cursor) item).getInt(PhotoSetLoader.INDEX_MEDIA_TYPE);
+ }
+
+ @Override
+ public int getItemSupportedOperations(Object item) {
+ return ((Cursor) item).getInt(PhotoSetLoader.INDEX_SUPPORTED_OPERATIONS);
+ }
+
+ @Override
+ public Object getItemAtPosition(int position) {
+ return mAdapter.getItem(position);
+ }
+
+ private ArrayList<Uri> mSubItemUriTemp = new ArrayList<Uri>(1);
+ @Override
+ public ArrayList<Uri> getSubItemUrisForItem(Object item) {
+ mSubItemUriTemp.clear();
+ mSubItemUriTemp.add(mLoaderCompatShim.uriForItem((Cursor) item));
+ return mSubItemUriTemp;
+ }
+
+
+ @Override
+ public Object getPathForItemAtPosition(int position) {
+ return mLoaderCompatShim.getPathForItem(mAdapter.getItem(position));
+ }
+
+ @Override
+ public void deleteItemWithPath(Object itemPath) {
+ mLoaderCompatShim.deleteItemWithPath(itemPath);
+ }
+
+ @Override
+ public SparseBooleanArray getSelectedItemPositions() {
+ return mAlbumView.getCheckedItemPositions();
+ }
+
+ @Override
+ public int getSelectedItemCount() {
+ return mAlbumView.getCheckedItemCount();
+ }
+
+ @Override
+ public Uri getItemUri(Object item) {
+ return mLoaderCompatShim.uriForItem((Cursor) item);
+ }
+}
diff --git a/src/com/android/photos/AlbumSetFragment.java b/src/com/android/photos/AlbumSetFragment.java
index 20c6db4c9..17dc69c97 100644
--- a/src/com/android/photos/AlbumSetFragment.java
+++ b/src/com/android/photos/AlbumSetFragment.java
@@ -19,6 +19,7 @@ package com.android.photos;
import android.app.Fragment;
import android.app.LoaderManager.LoaderCallbacks;
import android.content.Context;
+import android.content.Intent;
import android.content.Loader;
import android.database.Cursor;
import android.net.Uri;
@@ -120,9 +121,13 @@ public class AlbumSetFragment extends Fragment implements OnItemClickListener,
return;
}
Cursor item = (Cursor) mAdapter.getItem(pos);
- Toast.makeText(v.getContext(),
- "Tapped " + item.getInt(AlbumSetLoader.INDEX_ID),
- Toast.LENGTH_SHORT).show();
+ Context context = getActivity();
+ Intent intent = new Intent(context, AlbumActivity.class);
+ intent.putExtra(AlbumActivity.KEY_ALBUM_URI,
+ mLoaderCompatShim.getPathForItem(item).toString());
+ intent.putExtra(AlbumActivity.KEY_ALBUM_TITLE,
+ item.getString(AlbumSetLoader.INDEX_TITLE));
+ context.startActivity(intent);
}
@Override