diff options
Diffstat (limited to 'src/com/android/photos/PhotoSetFragment.java')
-rw-r--r-- | src/com/android/photos/PhotoSetFragment.java | 37 |
1 files changed, 32 insertions, 5 deletions
diff --git a/src/com/android/photos/PhotoSetFragment.java b/src/com/android/photos/PhotoSetFragment.java index 5911ad0c8..18587fcf3 100644 --- a/src/com/android/photos/PhotoSetFragment.java +++ b/src/com/android/photos/PhotoSetFragment.java @@ -19,32 +19,40 @@ 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.graphics.drawable.Drawable; +import android.net.Uri; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.ViewGroup.LayoutParams; +import android.widget.AdapterView; +import android.widget.AdapterView.OnItemClickListener; import android.widget.CursorAdapter; import android.widget.GridView; import android.widget.ImageView; import com.android.gallery3d.R; +import com.android.gallery3d.app.Gallery; import com.android.photos.data.PhotoSetLoader; -import com.android.photos.drawables.DrawableFactory; +import com.android.photos.shims.LoaderCompatShim; import com.android.photos.shims.MediaItemsLoader; import com.android.photos.views.GalleryThumbnailView.GalleryThumbnailAdapter; -public class PhotoSetFragment extends Fragment implements LoaderCallbacks<Cursor> { +public class PhotoSetFragment extends Fragment implements LoaderCallbacks<Cursor>, + OnItemClickListener { private static final int LOADER_PHOTOSET = 1; private GridView mPhotoSetView; private View mEmptyView; private ThumbnailAdapter mAdapter; + private boolean mInitialLoadComplete = false; + private LoaderCompatShim<Cursor> mLoaderCompatShim; @Override public void onCreate(Bundle savedInstanceState) { @@ -59,6 +67,7 @@ public class PhotoSetFragment extends Fragment implements LoaderCallbacks<Cursor mPhotoSetView = (GridView) root.findViewById(android.R.id.list); // TODO: Remove once UI stabilizes mPhotoSetView.setColumnWidth(MediaItemsLoader.getThumbnailSize()); + mPhotoSetView.setOnItemClickListener(this); mEmptyView = root.findViewById(android.R.id.empty); mEmptyView.setVisibility(View.GONE); mPhotoSetView.setAdapter(mAdapter); @@ -70,7 +79,22 @@ public class PhotoSetFragment extends Fragment implements LoaderCallbacks<Cursor private void updateEmptyStatus() { boolean empty = (mAdapter == null || mAdapter.getCount() == 0); mPhotoSetView.setVisibility(empty ? View.GONE : View.VISIBLE); - mEmptyView.setVisibility(empty ? View.VISIBLE : View.GONE); + 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 @@ -78,6 +102,8 @@ public class PhotoSetFragment extends Fragment implements LoaderCallbacks<Cursor // TODO: Switch to PhotoSetLoader MediaItemsLoader loader = new MediaItemsLoader(getActivity()); mAdapter.setDrawableFactory(loader); + mInitialLoadComplete = false; + mLoaderCompatShim = loader; return loader; } @@ -85,6 +111,7 @@ public class PhotoSetFragment extends Fragment implements LoaderCallbacks<Cursor public void onLoadFinished(Loader<Cursor> loader, Cursor data) { mAdapter.swapCursor(data); + mInitialLoadComplete = true; updateEmptyStatus(); } @@ -94,14 +121,14 @@ public class PhotoSetFragment extends Fragment implements LoaderCallbacks<Cursor private static class ThumbnailAdapter extends CursorAdapter implements GalleryThumbnailAdapter { private LayoutInflater mInflater; - private DrawableFactory<Cursor> mDrawableFactory; + private LoaderCompatShim<Cursor> mDrawableFactory; public ThumbnailAdapter(Context context) { super(context, null, false); mInflater = LayoutInflater.from(context); } - public void setDrawableFactory(DrawableFactory<Cursor> factory) { + public void setDrawableFactory(LoaderCompatShim<Cursor> factory) { mDrawableFactory = factory; } |