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