1f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin/* 2f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * Copyright (C) 2010 The Android Open Source Project 3f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * 4f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * Licensed under the Apache License, Version 2.0 (the "License"); 5f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * you may not use this file except in compliance with the License. 6f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * You may obtain a copy of the License at 7f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * 8f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * http://www.apache.org/licenses/LICENSE-2.0 9f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * 10f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * Unless required by applicable law or agreed to in writing, software 11f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * distributed under the License is distributed on an "AS IS" BASIS, 12f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * See the License for the specific language governing permissions and 14f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * limitations under the License. 15f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin */ 16f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 17f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Linpackage com.android.gallery3d.picasasource; 18f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 19fe49be45412f8d0f68343662318e73822da486c8Owen Linimport android.app.Activity; 20fe49be45412f8d0f68343662318e73822da486c8Owen Linimport android.app.Dialog; 21fe49be45412f8d0f68343662318e73822da486c8Owen Linimport android.content.Context; 22fe49be45412f8d0f68343662318e73822da486c8Owen Linimport android.os.ParcelFileDescriptor; 23fe49be45412f8d0f68343662318e73822da486c8Owen Lin 24f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Linimport com.android.gallery3d.app.GalleryApp; 2504a9a44fb85263c4590ca68f92adff6f9da360e9Ray Chenimport com.android.gallery3d.data.MediaItem; 26f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Linimport com.android.gallery3d.data.MediaObject; 27f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Linimport com.android.gallery3d.data.MediaSet; 28f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Linimport com.android.gallery3d.data.MediaSource; 29f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Linimport com.android.gallery3d.data.Path; 30f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Linimport com.android.gallery3d.data.PathMatcher; 31f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 32f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Linimport java.io.FileNotFoundException; 33f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 34f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Linpublic class PicasaSource extends MediaSource { 35f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin private static final String TAG = "PicasaSource"; 36f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 37f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin private static final int NO_MATCH = -1; 38f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin private static final int IMAGE_MEDIA_ID = 1; 39f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 40f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin private static final int PICASA_ALBUMSET = 0; 41f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin private static final int MAP_BATCH_COUNT = 100; 42f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 43f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin private GalleryApp mApplication; 44f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin private PathMatcher mMatcher; 45f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 46f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public static final Path ALBUM_PATH = Path.fromString("/picasa/all"); 47f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 48f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public PicasaSource(GalleryApp application) { 49f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin super("picasa"); 50f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin mApplication = application; 51f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin mMatcher = new PathMatcher(); 52f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin mMatcher.add("/picasa/all", PICASA_ALBUMSET); 53f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin mMatcher.add("/picasa/image", PICASA_ALBUMSET); 54f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin mMatcher.add("/picasa/video", PICASA_ALBUMSET); 55f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 56f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 57f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin private static class EmptyAlbumSet extends MediaSet { 58f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 59f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public EmptyAlbumSet(Path path, long version) { 60f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin super(path, version); 61f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 62f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 63f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin @Override 64f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public String getName() { 65f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin return "picasa"; 66f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 67f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 68f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin @Override 69705dc819661cb8c8e839a04577b0641bd6caad53John Reck public long reload() { 70705dc819661cb8c8e839a04577b0641bd6caad53John Reck return mDataVersion; 71f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 72f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 73f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 74f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin @Override 75f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public MediaObject createMediaObject(Path path) { 76f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin switch (mMatcher.match(path)) { 77f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin case PICASA_ALBUMSET: 78f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin return new EmptyAlbumSet(path, MediaObject.nextVersionNumber()); 79f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin default: 80f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin throw new RuntimeException("bad path: " + path); 81f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 82f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 83f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 8404a9a44fb85263c4590ca68f92adff6f9da360e9Ray Chen public static MediaItem getFaceItem(Context context, MediaItem item, int faceIndex) { 8504a9a44fb85263c4590ca68f92adff6f9da360e9Ray Chen throw new UnsupportedOperationException(); 8604a9a44fb85263c4590ca68f92adff6f9da360e9Ray Chen } 8704a9a44fb85263c4590ca68f92adff6f9da360e9Ray Chen 88f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public static boolean isPicasaImage(MediaObject object) { 89f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin return false; 90f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 91f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 92f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public static String getImageTitle(MediaObject image) { 93f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin throw new UnsupportedOperationException(); 94f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 95f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 96f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public static int getImageSize(MediaObject image) { 97f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin throw new UnsupportedOperationException(); 98f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 99f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 100f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public static String getContentType(MediaObject image) { 101f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin throw new UnsupportedOperationException(); 102f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 103f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 104f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public static long getDateTaken(MediaObject image) { 105f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin throw new UnsupportedOperationException(); 106f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 107f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 108f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public static double getLatitude(MediaObject image) { 109f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin throw new UnsupportedOperationException(); 110f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 111f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 112f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public static double getLongitude(MediaObject image) { 113f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin throw new UnsupportedOperationException(); 114f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 115f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 116f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public static int getRotation(MediaObject image) { 117f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin throw new UnsupportedOperationException(); 118f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 119f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 1206f6230e40811effe0b0ca9ba023136b3b36130b7Owen Lin public static long getPicasaId(MediaObject image) { 1216f6230e40811effe0b0ca9ba023136b3b36130b7Owen Lin throw new UnsupportedOperationException(); 1226f6230e40811effe0b0ca9ba023136b3b36130b7Owen Lin } 1236f6230e40811effe0b0ca9ba023136b3b36130b7Owen Lin 1246f6230e40811effe0b0ca9ba023136b3b36130b7Owen Lin public static String getUserAccount(Context context, MediaObject image) { 1256f6230e40811effe0b0ca9ba023136b3b36130b7Owen Lin throw new UnsupportedOperationException(); 1266f6230e40811effe0b0ca9ba023136b3b36130b7Owen Lin } 1276f6230e40811effe0b0ca9ba023136b3b36130b7Owen Lin 128f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public static ParcelFileDescriptor openFile(Context context, MediaObject image, String mode) 129f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin throws FileNotFoundException { 130f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin throw new UnsupportedOperationException(); 131f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 132f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 133f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public static void initialize(Context context) {/*do nothing*/} 134f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 135f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public static void requestSync(Context context) {/*do nothing*/} 136f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 137dbf4ba12afba115888493caa34937643257e2bb1Ray Chen public static void showSignInReminder(Activity context) {/*do nothing*/} 138dbf4ba12afba115888493caa34937643257e2bb1Ray Chen 139f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public static void onPackageAdded(Context context, String packageName) {/*do nothing*/} 140f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 141f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public static void onPackageRemoved(Context context, String packageName) {/*do nothing*/} 142abf2790337692007d5aa0f844e8f6d6f96d0de97Owen Lin 143d091538f6949cca1c73213cea0b9fdf28c878046Chih-Chung Chang public static void onPackageChanged(Context context, String packageName) {/*do nothing*/} 144d091538f6949cca1c73213cea0b9fdf28c878046Chih-Chung Chang 145fe49be45412f8d0f68343662318e73822da486c8Owen Lin public static Dialog getVersionCheckDialog(Activity activity){ 146fe49be45412f8d0f68343662318e73822da486c8Owen Lin return null; 147fe49be45412f8d0f68343662318e73822da486c8Owen Lin } 148f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin} 149