package com.robert.maps.applib.utils;
import java.io.File;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import android.app.ProgressDialog;
import android.content.Context;
import android.os.Handler;
import android.os.Message;
import android.preference.Preference;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import com.robert.maps.applib.R;
public class OnlineCachePreference extends Preference {
private String mID;
private Button btnClear;
private ExecutorService mThreadExecutor = Executors.newSingleThreadExecutor(new SimpleThreadFactory("OnlineCachePreference"));
private ProgressDialog mProgressDialog;
private SimpleInvalidationHandler mHandler;
public OnlineCachePreference(Context context, String aID) {
super(context);
mID = aID;
setWidgetLayoutResource(R.layout.preference_widget_btn_clear);
setTitle(R.string.pref_onlinecacheclear);
setSummaryStr();
mHandler = new SimpleInvalidationHandler();
}
void setSummaryStr() {
final String name = mID+".sqlitedb";
long size = 0;
final File folder = Ut.getRMapsMainDir(getContext(), "cache");
if(folder != null) {
File[] files = folder.listFiles();
if(files != null) {
for (int i = 0; i < files.length; i++) {
if(files[i].getName().startsWith(name)) {
size += files[i].length();
}
}
}
}
setSummary(mID + String.format(getContext().getString(R.string.pref_onlinecacheclear_summary), (int) size / 1024));
}
@Override
protected void onBindView(View view) {
super.onBindView(view);
btnClear = (Button) view.findViewById(R.id.btnClear);
btnClear.setOnClickListener(new OnClickListener() {
// @Override
public void onClick(View v) {
mProgressDialog = Ut.ShowWaitDialog(getContext(), 0);
mThreadExecutor.execute(new Runnable(){
public void run() {
final String name = mID+".sqlitedb";
final File folder = Ut.getRMapsMainDir(getContext(), "cache");
if(folder != null) {
File[] files = folder.listFiles();
if(files != null) {
for (int i = 0; i < files.length; i++) {
if(files[i].getName().startsWith(name)) {
files[i].delete();
}
}
}
}
Message.obtain(OnlineCachePreference.this.mHandler).sendToTarget();
OnlineCachePreference.this.mProgressDialog.dismiss();
}});
}
});
}
private class SimpleInvalidationHandler extends Handler {
@Override
public void handleMessage(final Message msg) {
OnlineCachePreference.this.setSummaryStr();
}
}
}