/** * galaxy inc. * meetup client for android */ package com.galaxy.picasa.store; import java.io.File; import java.io.IOException; import java.util.Iterator; import java.util.List; import android.app.Service; import android.content.Context; import android.content.Intent; import android.content.pm.ResolveInfo; import android.content.pm.ServiceInfo; import android.net.Uri; import android.os.Bundle; import android.os.Environment; import android.os.IBinder; import android.text.TextUtils; import android.util.Log; import com.android.gallery3d.common.Utils; import com.galaxy.meetup.client.util.FIFEUtil; import com.galaxy.meetup.client.util.ImageProxyUtil; /** * * @author sihai * */ public class PicasaStoreFacade { private static File sCacheDir; private static PicasaStoreFacade sInstance; private static Class sNetworkReceiver; private Uri mAlbumCoversUri; private String mAuthority; private Uri mCachedFingerprintUri; private final Context mContext; private Uri mFingerprintUri; private MatrixStoreInfo mLocalInfo; private MatrixStoreInfo mMasterInfo; private Uri mPhotosUri; private Uri mRecalculateFingerprintUri; private PicasaStoreFacade(Context context) { mContext = context.getApplicationContext(); updatePicasaSyncInfo(true); } public static void broadcastOperationReport(String s, long l, long l1, int i, long l2, long l3) { if (sInstance != null && sNetworkReceiver != null) { Context context = sInstance.mContext; Intent intent = new Intent(context, sNetworkReceiver); intent.setAction("com.google.android.picasastore.op_report"); intent.putExtra("op_name", s); intent.putExtra("total_time", l); intent.putExtra("net_duration", l1); intent.putExtra("transaction_count", i); intent.putExtra("sent_bytes", l2); intent.putExtra("received_bytes", l3); context.sendBroadcast(intent); } } public static String convertImageUrl(String s, int i, boolean flag) { String s1; if (FIFEUtil.isFifeHostedUrl(s)) { String s2 = FIFEUtil.getImageUrlOptions(s); boolean flag1 = s2.contains("I"); boolean flag2 = s2.contains("k"); StringBuilder stringbuilder = new StringBuilder(); stringbuilder.append('s').append(i); stringbuilder.append("-no"); if (flag) stringbuilder.append("-c"); if (flag1) stringbuilder.append("-I"); if (flag2) stringbuilder.append("-k"); s1 = FIFEUtil.setImageUrlOptions(stringbuilder.toString(), s).toString(); } else { if (flag) Log.w("gp.PicasaStore", "not a FIFE url, ignore the crop option"); s1 = ImageProxyUtil.setImageUrlSize(i, s); } return s1; } public static File createCacheFile(long l, String s) { File file = getCacheDirectory(); if(file == null) { return null; } // TODO return null; } public static synchronized PicasaStoreFacade get(Context context) { PicasaStoreFacade r; if (sInstance == null) sInstance = new PicasaStoreFacade(context); r = sInstance; return r; } public static File getAlbumCoverCacheFile(long l, String s, String s1) { File file = getCacheDirectory(); File file1; if(file == null) file1 = null; else file1 = new File(file, (new StringBuilder("picasa_covers/")).append(getAlbumCoverKey(l, s)).append(s1).toString()); return file1; } public static String getAlbumCoverKey(long l, String s) { return (new StringBuilder()).append(l).append('_').append(Utils.crc64Long(s)).toString(); } public static synchronized File getCacheDirectory() { try { boolean flag = false; if(null == sCacheDir) { File file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), "cache/com.google.android.googlephotos"); sCacheDir = file; if(!file.isDirectory()) { flag = sCacheDir.mkdirs(); } if(flag) { File file1 = new File(sCacheDir, ".nomedia"); if(!file1.exists()) file1.createNewFile(); } } } catch (IOException ioexception) { Log.w("gp.PicasaStore", (new StringBuilder("fail to create '.nomedia' in ")).append(sCacheDir).toString()); sCacheDir = null; } return sCacheDir; } public static File getCacheFile(long l, String s) { File file = getCacheDirectory(); if(file == null) { return null; } File file2 = null; String s1 = (new StringBuilder()).append(l).append(s).toString(); int i = (int)(l % 10L); String s2 = (new StringBuilder("picasa--")).append(i).toString(); for(int j = 0; j < 5; j++) { File file1 = new File(file, s2); if(!file1.exists()) { file2 = null; } if(file1.isDirectory()) { file2 = new File(file1, s1); if(file2.exists()) { return file2; } } s2 = (new StringBuilder()).append(s2).append("e").toString(); } file2 = null; return file2; } public static void setNetworkReceiver(Class class1) { sNetworkReceiver = class1; } private synchronized void updatePicasaSyncInfo(boolean flag) { // TODO } public final String getAuthority() { return mAuthority; } public final Uri getFingerprintUri() { return mFingerprintUri; } public final Uri getFingerprintUri(boolean flag, boolean flag1) { Uri uri; if (flag) uri = mRecalculateFingerprintUri; else if (flag1) uri = mCachedFingerprintUri; else uri = mFingerprintUri; return uri; } public final Uri getPhotoUri(long l, String s, String s1) { return mPhotosUri.buildUpon().appendPath(String.valueOf(l)) .appendQueryParameter("type", s) .appendQueryParameter("content_url", s1).build(); } public final boolean isMaster() { boolean flag; if (mMasterInfo == mLocalInfo) flag = true; else flag = false; return flag; } public final void onPackageAdded() { updatePicasaSyncInfo(false); } public final void onPackageRemoved() { updatePicasaSyncInfo(false); } public static class DummyService extends Service { public IBinder onBind(Intent intent) { return null; } public DummyService() { } } static final class MatrixStoreInfo { public final String authority; public final String packageName; public final int priority; public MatrixStoreInfo(String s, String s1, int i) { packageName = s; authority = s1; priority = i; } } }