/** * galaxy inc. * meetup client for android */ package com.galaxy.meetup.client.android; import java.util.HashSet; import java.util.Set; import WriteReviewOperation.MediaRef; import android.content.Context; import android.database.Cursor; import android.net.Uri; import com.galaxy.meetup.client.android.content.EsAccount; import com.galaxy.meetup.client.util.MediaStoreUtils; /** * * @author sihai * */ public class CameraAlbumLoader extends EsCursorLoader implements Pageable { protected static final Uri sMediaStoreUri[]; private int mExcludedCount; private Set mExcludedUris; private boolean mHasMore; private int mLoadLimit; private boolean mPageable; static { Uri auri[] = new Uri[4]; auri[0] = android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI; auri[1] = MediaStoreUtils.PHONE_STORAGE_IMAGES_URI; auri[2] = android.provider.MediaStore.Video.Media.EXTERNAL_CONTENT_URI; auri[3] = MediaStoreUtils.PHONE_STORAGE_VIDEO_URI; sMediaStoreUri = auri; } public CameraAlbumLoader(Context context, EsAccount esaccount) { this(context, true, 1); } public CameraAlbumLoader(Context context, EsAccount esaccount, MediaRef amediaref[]) { this(context, esaccount); if(mExcludedUris != null) { mExcludedUris.clear(); if(amediaref == null) mExcludedUris = null; } if(amediaref != null && amediaref.length > 0) { if(mExcludedUris == null) mExcludedUris = new HashSet(amediaref.length); int i = amediaref.length; for(int j = 0; j < i; j++) { MediaRef mediaref = amediaref[j]; if(mediaref.hasLocalUri()) mExcludedUris.add(mediaref.getLocalUri().toString()); } } } private CameraAlbumLoader(Context context, boolean flag, int i) { super(context, null); int j = 16; mLoadLimit = j; mPageable = true; if(!mPageable) j = -1; mLoadLimit = j; } protected Cursor buildMatrixCursor(Context context, Cursor acursor[], Uri auri[]) { // TODO return null; } public final Cursor esLoadInBackground() { // TODO return null; } public final int getCurrentPage() { int i = -1; if(mPageable && mLoadLimit != i) i = mLoadLimit / 16; return i; } public final int getExcludedCount() { return mExcludedCount; } public final boolean hasMore() { boolean flag; if(mPageable && mHasMore) flag = true; else flag = false; return flag; } public final boolean isDataSourceLoading() { return false; } public final void loadMore() { if(hasMore()) { mLoadLimit = 48 + mLoadLimit; onContentChanged(); } } public final void setLoadingListener(Pageable.LoadingListener loadinglistener) { } //===================================================================================== // Inner class //===================================================================================== private static interface CorrectedMediaStoreColumn { public static final String DATE_TAKEN = String.format("case when (datetaken >= %1$d and datetaken < %2$d) then datetaken * 1000 when (datetaken >= %3$d and datetaken < %4$d) then datetaken when (datetaken >= %5$d and datetaken < %6$d) then datetaken / 1000 else 0 end as %7$s", Long.valueOf(0x9660180L), Long.valueOf(0x70c81200L), Long.valueOf(0x24b675dc00L), Long.valueOf(0x1b88d865000L), Long.valueOf(0x8f68bc636000L), Long.valueOf(0x6b8e8d4a88000L), "corrected_date_taken"); } protected static interface PhotoQuery { public static final String[] PROJECTION = new String[]{"_id", CorrectedMediaStoreColumn.DATE_TAKEN, "_display_name"}; } }