package net.coding.program.setting; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.support.v7.app.AlertDialog; import android.view.LayoutInflater; import android.view.View; import android.widget.CheckBox; import android.widget.EditText; import android.widget.TextView; import com.tencent.android.tpush.XGPushManager; import net.coding.program.MainActivity; import net.coding.program.MyApp; import net.coding.program.R; import net.coding.program.common.guide.GuideActivity; import net.coding.program.common.ui.BaseFragment; import net.coding.program.common.util.FileUtil; import net.coding.program.model.AccountInfo; import net.coding.program.project.detail.file.FileSaveHelp; import org.androidannotations.annotations.AfterViews; import org.androidannotations.annotations.Background; import org.androidannotations.annotations.Click; import org.androidannotations.annotations.EFragment; import org.androidannotations.annotations.UiThread; import org.androidannotations.annotations.ViewById; import java.io.File; import java.util.regex.Pattern; @EFragment(R.layout.fragment_setting) public class SettingFragment extends BaseFragment { @ViewById CheckBox allNotify; @ViewById TextView cacheSize; @AfterViews void init() { boolean mLastNotifySetting = AccountInfo.getNeedPush(getActivity()); allNotify.setChecked(mLastNotifySetting); setHasOptionsMenu(true); updateCacheSize(); } @Background void updateCacheSize() { File[] cacheDir = getAllCacheDir(); long size = 0; for (File dir : cacheDir) { size += getFileSize(dir); } String sizeString = String.format("%.2f MB", (double) size / 1024 /1024); dispayCacheSize(sizeString); } File[] getAllCacheDir() { return new File[] { getActivity().getCacheDir(), getActivity().getExternalCacheDir() }; } long getFileSize(File file) { if (file == null) { return 0; } if (file.isDirectory()) { long size = 0; for (File item : file.listFiles()) { size += getFileSize(item); } return size; } else { return file.length(); } } void deleteFiles(File file) { if (file == null) { return; } if (file.isDirectory()) { for (File item : file.listFiles()) { deleteFiles(item); } file.delete(); } else if (file.isFile()){ file.delete(); } } @UiThread void dispayCacheSize(String size) { cacheSize.setText(size); } @Click void accountSetting() { AccountSetting_.intent(this).start(); } @Click void pushSetting() { // NotifySetting_.intent(this).start(); allNotify.performClick(); } @Click void allNotify() { AccountInfo.setNeedPush(getActivity(), allNotify.isChecked()); Intent intent = new Intent(MainActivity.BroadcastPushStyle); getActivity().sendBroadcast(intent); } @Click void downloadPathSetting() { final SharedPreferences share = getActivity().getSharedPreferences(FileUtil.DOWNLOAD_SETTING, Context.MODE_PRIVATE); String path = new FileSaveHelp(getActivity()).getFileDownloadPath(); LayoutInflater li = LayoutInflater.from(getActivity()); View v1 = li.inflate(R.layout.dialog_input, null); final EditText input = (EditText) v1.findViewById(R.id.value); final String oldPath = path; input.setText(oldPath); new AlertDialog.Builder(getActivity()) .setTitle("下载路径设置") .setView(v1) .setPositiveButton("确定", (dialog, which) -> { String newPath = input.getText().toString(); final String namePatternStr = "[,`~!@#$%^&*:;()''\"\"><|.\\ =]";// if(folder.name.match(/[,`~!@#$%^&*:;()''""><|.\ /=]/g)) Pattern namePattern = Pattern.compile(namePatternStr); if (newPath.equals("")) { showButtomToast("路径不能为空"); } else if (namePattern.matcher(newPath).find()) { showButtomToast("路径:" + newPath + " 不能采用"); } else if (!oldPath.equals(newPath)) { SharedPreferences.Editor editor = share.edit(); editor.putString(FileUtil.DOWNLOAD_PATH, newPath); editor.commit(); } }) .setNegativeButton("取消", null) .show(); } @Click void aboutCoding() { AboutActivity_.intent(SettingFragment.this).start(); } @Click void clearCache() { new AlertDialog.Builder(getActivity()) .setMessage(R.string.clear_cache_message) .setPositiveButton("确定", ((dialog, which) -> { File[] cacheDir = getAllCacheDir(); for (File item : cacheDir) { deleteFiles(item); } showMiddleToast("清除缓存成功"); updateCacheSize(); })) .setNegativeButton("取消", null) .show(); } @Click void loginOut() { showDialog(MyApp.sUserObject.global_key, "退出当前账号?", (dialog, which) -> { XGPushManager.registerPush(getActivity(), "*"); AccountInfo.loginOut(getActivity()); startActivity(new Intent(getActivity(), GuideActivity.class)); getActivity().finish(); }); } }