diff options
Diffstat (limited to 'src/com/android/gallery3d/ui/CacheStorageUsageInfo.java')
-rw-r--r-- | src/com/android/gallery3d/ui/CacheStorageUsageInfo.java | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/src/com/android/gallery3d/ui/CacheStorageUsageInfo.java b/src/com/android/gallery3d/ui/CacheStorageUsageInfo.java new file mode 100644 index 000000000..46f7a2433 --- /dev/null +++ b/src/com/android/gallery3d/ui/CacheStorageUsageInfo.java @@ -0,0 +1,90 @@ +/* + * Copyright (C) 2010 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.gallery3d.ui; + +import android.content.Context; +import android.os.StatFs; + +import com.android.gallery3d.app.AbstractGalleryActivity; +import com.android.gallery3d.util.ThreadPool.JobContext; + +import java.io.File; + +public class CacheStorageUsageInfo { + @SuppressWarnings("unused") + private static final String TAG = "CacheStorageUsageInfo"; + + // number of bytes the storage has. + private long mTotalBytes; + + // number of bytes already used. + private long mUsedBytes; + + // number of bytes used for the cache (should be less then usedBytes). + private long mUsedCacheBytes; + + // number of bytes used for the cache if all pending downloads (and removals) are completed. + private long mTargetCacheBytes; + + private AbstractGalleryActivity mActivity; + private Context mContext; + private long mUserChangeDelta; + + public CacheStorageUsageInfo(AbstractGalleryActivity activity) { + mActivity = activity; + mContext = activity.getAndroidContext(); + } + + public void increaseTargetCacheSize(long delta) { + mUserChangeDelta += delta; + } + + public void loadStorageInfo(JobContext jc) { + File cacheDir = mContext.getExternalCacheDir(); + if (cacheDir == null) { + cacheDir = mContext.getCacheDir(); + } + + String path = cacheDir.getAbsolutePath(); + StatFs stat = new StatFs(path); + long blockSize = stat.getBlockSize(); + long availableBlocks = stat.getAvailableBlocks(); + long totalBlocks = stat.getBlockCount(); + + mTotalBytes = blockSize * totalBlocks; + mUsedBytes = blockSize * (totalBlocks - availableBlocks); + mUsedCacheBytes = mActivity.getDataManager().getTotalUsedCacheSize(); + mTargetCacheBytes = mActivity.getDataManager().getTotalTargetCacheSize(); + } + + public long getTotalBytes() { + return mTotalBytes; + } + + public long getExpectedUsedBytes() { + return mUsedBytes - mUsedCacheBytes + mTargetCacheBytes + mUserChangeDelta; + } + + public long getUsedBytes() { + // Should it be usedBytes - usedCacheBytes + targetCacheBytes ? + return mUsedBytes; + } + + public long getFreeBytes() { + return mTotalBytes - mUsedBytes; + } +} |