Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Open sidebar
halo
packages_apps_Gallery2
Commits
f6e687bc
Commit
f6e687bc
authored
12 years ago
by
John Reck
Browse files
Options
Download
Email Patches
Plain Diff
Support clicking on photos to view them
Change-Id: I511af0cbe46c833d81cbbd563b9c2b4feec2bffe
parent
d3d2e276
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
85 additions
and
31 deletions
+85
-31
AndroidManifest.xml
AndroidManifest.xml
+21
-15
src/com/android/photos/AlbumSetFragment.java
src/com/android/photos/AlbumSetFragment.java
+3
-3
src/com/android/photos/PhotoSetFragment.java
src/com/android/photos/PhotoSetFragment.java
+32
-5
src/com/android/photos/data/PhotoSetLoader.java
src/com/android/photos/data/PhotoSetLoader.java
+7
-2
src/com/android/photos/shims/LoaderCompatShim.java
src/com/android/photos/shims/LoaderCompatShim.java
+4
-2
src/com/android/photos/shims/MediaItemsLoader.java
src/com/android/photos/shims/MediaItemsLoader.java
+9
-2
src/com/android/photos/shims/MediaSetLoader.java
src/com/android/photos/shims/MediaSetLoader.java
+9
-2
No files found.
AndroidManifest.xml
View file @
f6e687bc
...
...
@@ -88,7 +88,8 @@
</intent-filter>
</activity>
<activity
android:name=
"com.android.photos.GalleryActivity"
<activity
android:name=
"com.android.photos.GalleryActivity"
android:label=
"@string/app_name"
android:configChanges=
"keyboardHidden|orientation|screenSize"
android:theme=
"@style/Theme.Photos.Gallery"
...
...
@@ -111,6 +112,25 @@
<data
android:mimeType=
"image/*"
/>
<data
android:mimeType=
"video/*"
/>
</intent-filter>
<!-- We do NOT support the PICK intent, we add these intent-filter for
backward compatibility. Handle it as GET_CONTENT. -->
<intent-filter>
<action
android:name=
"android.intent.action.PICK"
/>
<category
android:name=
"android.intent.category.DEFAULT"
/>
<data
android:mimeType=
"image/*"
/>
<data
android:mimeType=
"video/*"
/>
</intent-filter>
<intent-filter>
<action
android:name=
"android.intent.action.PICK"
/>
<category
android:name=
"android.intent.category.DEFAULT"
/>
<data
android:mimeType=
"vnd.android.cursor.dir/image"
/>
<data
android:mimeType=
"vnd.android.cursor.dir/video"
/>
</intent-filter>
</activity>
<activity
android:name=
"com.android.gallery3d.app.Gallery"
android:label=
"@string/app_name"
android:configChanges=
"keyboardHidden|orientation|screenSize"
>
<intent-filter>
<action
android:name=
"android.intent.action.VIEW"
/>
<category
android:name=
"android.intent.category.DEFAULT"
/>
...
...
@@ -151,20 +171,6 @@
<data
android:mimeType=
"video/3gpp2"
/>
<data
android:mimeType=
"application/sdp"
/>
</intent-filter>
<!-- We do NOT support the PICK intent, we add these intent-filter for
backward compatibility. Handle it as GET_CONTENT. -->
<intent-filter>
<action
android:name=
"android.intent.action.PICK"
/>
<category
android:name=
"android.intent.category.DEFAULT"
/>
<data
android:mimeType=
"image/*"
/>
<data
android:mimeType=
"video/*"
/>
</intent-filter>
<intent-filter>
<action
android:name=
"android.intent.action.PICK"
/>
<category
android:name=
"android.intent.category.DEFAULT"
/>
<data
android:mimeType=
"vnd.android.cursor.dir/image"
/>
<data
android:mimeType=
"vnd.android.cursor.dir/video"
/>
</intent-filter>
</activity>
<activity
android:name=
"com.android.photos.FullscreenViewer"
...
...
This diff is collapsed.
Click to expand it.
src/com/android/photos/AlbumSetFragment.java
View file @
f6e687bc
...
...
@@ -38,7 +38,7 @@ import android.widget.Toast;
import
com.android.gallery3d.R
;
import
com.android.photos.data.AlbumSetLoader
;
import
com.android.photos.
drawables.DrawableFactory
;
import
com.android.photos.
shims.LoaderCompatShim
;
import
com.android.photos.shims.MediaSetLoader
;
import
java.util.Date
;
...
...
@@ -108,9 +108,9 @@ public class AlbumSetFragment extends Fragment implements OnItemClickListener,
private
static
class
AlbumSetCursorAdapter
extends
CursorAdapter
{
private
DrawableFactory
<
Cursor
>
mDrawableFactory
;
private
LoaderCompatShim
<
Cursor
>
mDrawableFactory
;
public
void
setDrawableFactory
(
DrawableFactory
<
Cursor
>
factory
)
{
public
void
setDrawableFactory
(
LoaderCompatShim
<
Cursor
>
factory
)
{
mDrawableFactory
=
factory
;
}
private
Date
mDate
=
new
Date
();
// Used for converting timestamps for display
...
...
This diff is collapsed.
Click to expand it.
src/com/android/photos/PhotoSetFragment.java
View file @
f6e687bc
...
...
@@ -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
;
}
...
...
This diff is collapsed.
Click to expand it.
src/com/android/photos/data/PhotoSetLoader.java
View file @
f6e687bc
...
...
@@ -27,9 +27,9 @@ import android.provider.MediaStore.Files;
import
android.provider.MediaStore.Files.FileColumns
;
import
com.android.photos.drawables.DataUriThumbnailDrawable
;
import
com.android.photos.
drawables.DrawableFactory
;
import
com.android.photos.
shims.LoaderCompatShim
;
public
class
PhotoSetLoader
extends
CursorLoader
implements
DrawableFactory
<
Cursor
>
{
public
class
PhotoSetLoader
extends
CursorLoader
implements
LoaderCompatShim
<
Cursor
>
{
private
static
final
Uri
CONTENT_URI
=
Files
.
getContentUri
(
"external"
);
public
static
final
String
[]
PROJECTION
=
new
String
[]
{
...
...
@@ -85,4 +85,9 @@ public class PhotoSetLoader extends CursorLoader implements DrawableFactory<Curs
item
.
getInt
(
INDEX_WIDTH
),
item
.
getInt
(
INDEX_HEIGHT
));
return
drawable
;
}
@Override
public
Uri
uriForItem
(
Cursor
item
)
{
return
null
;
}
}
This diff is collapsed.
Click to expand it.
src/com/android/photos/
drawables/DrawableFactory
.java
→
src/com/android/photos/
shims/LoaderCompatShim
.java
View file @
f6e687bc
...
...
@@ -14,11 +14,13 @@
* limitations under the License.
*/
package
com.android.photos.
drawable
s
;
package
com.android.photos.
shim
s
;
import
android.graphics.drawable.Drawable
;
import
android.net.Uri
;
public
interface
DrawableFactory
<
T
>
{
public
interface
LoaderCompatShim
<
T
>
{
Drawable
drawableForItem
(
T
item
,
Drawable
recycle
);
Uri
uriForItem
(
T
item
);
}
This diff is collapsed.
Click to expand it.
src/com/android/photos/shims/MediaItemsLoader.java
View file @
f6e687bc
...
...
@@ -21,6 +21,7 @@ import android.content.Context;
import
android.database.Cursor
;
import
android.database.MatrixCursor
;
import
android.graphics.drawable.Drawable
;
import
android.net.Uri
;
import
android.provider.MediaStore.Files.FileColumns
;
import
android.util.SparseArray
;
...
...
@@ -32,13 +33,12 @@ import com.android.gallery3d.data.MediaSet.ItemConsumer;
import
com.android.gallery3d.data.MediaSet.SyncListener
;
import
com.android.gallery3d.util.Future
;
import
com.android.photos.data.PhotoSetLoader
;
import
com.android.photos.drawables.DrawableFactory
;
/**
* Returns all MediaItems in a MediaSet, wrapping them in a cursor to appear
* like a PhotoSetLoader
*/
public
class
MediaItemsLoader
extends
AsyncTaskLoader
<
Cursor
>
implements
DrawableFactory
<
Cursor
>
{
public
class
MediaItemsLoader
extends
AsyncTaskLoader
<
Cursor
>
implements
LoaderCompatShim
<
Cursor
>
{
private
static
final
SyncListener
sNullListener
=
new
SyncListener
()
{
@Override
...
...
@@ -148,4 +148,11 @@ public class MediaItemsLoader extends AsyncTaskLoader<Cursor> implements Drawabl
return
MediaItem
.
getTargetSize
(
MediaItem
.
TYPE_MICROTHUMBNAIL
);
}
@Override
public
Uri
uriForItem
(
Cursor
item
)
{
int
index
=
item
.
getInt
(
PhotoSetLoader
.
INDEX_ID
);
MediaItem
mi
=
mMediaItems
.
get
(
index
);
return
mi
==
null
?
null
:
mi
.
getContentUri
();
}
}
This diff is collapsed.
Click to expand it.
src/com/android/photos/shims/MediaSetLoader.java
View file @
f6e687bc
...
...
@@ -21,6 +21,7 @@ import android.content.Context;
import
android.database.Cursor
;
import
android.database.MatrixCursor
;
import
android.graphics.drawable.Drawable
;
import
android.net.Uri
;
import
com.android.gallery3d.data.ContentListener
;
import
com.android.gallery3d.data.DataManager
;
...
...
@@ -29,7 +30,6 @@ import com.android.gallery3d.data.MediaSet;
import
com.android.gallery3d.data.MediaSet.SyncListener
;
import
com.android.gallery3d.util.Future
;
import
com.android.photos.data.AlbumSetLoader
;
import
com.android.photos.drawables.DrawableFactory
;
import
java.util.ArrayList
;
...
...
@@ -37,7 +37,7 @@ import java.util.ArrayList;
* Returns all MediaSets in a MediaSet, wrapping them in a cursor to appear
* like a AlbumSetLoader.
*/
public
class
MediaSetLoader
extends
AsyncTaskLoader
<
Cursor
>
implements
DrawableFactory
<
Cursor
>{
public
class
MediaSetLoader
extends
AsyncTaskLoader
<
Cursor
>
implements
LoaderCompatShim
<
Cursor
>{
private
static
final
SyncListener
sNullListener
=
new
SyncListener
()
{
@Override
...
...
@@ -140,4 +140,11 @@ public class MediaSetLoader extends AsyncTaskLoader<Cursor> implements DrawableF
public
static
int
getThumbnailSize
()
{
return
MediaItem
.
getTargetSize
(
MediaItem
.
TYPE_MICROTHUMBNAIL
);
}
@Override
public
Uri
uriForItem
(
Cursor
item
)
{
int
index
=
item
.
getInt
(
AlbumSetLoader
.
INDEX_ID
);
MediaSet
ms
=
mMediaSet
.
getSubMediaSet
(
index
);
return
ms
==
null
?
null
:
ms
.
getContentUri
();
}
}
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment