package com.wj.dexknife.shell;
import com.wj.dexknife.shell.utils.ClassHelper;
import com.wj.dexknife.shell.utils.Debug;
import com.wj.dexknife.shell.utils.IO;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.util.Properties;
import java.util.jar.Manifest;
/**
* Created by linchaolong on 2015/9/5.
*/
public class Config {
public static final String TAG = Config.class.getSimpleName();
public static final int WINDOW_WIDTH = 960;
public static final int WINDOW_HEIGHT = 500;
public static final String APP_NAME = "ApkToolPlus";
private static String version;
private static Properties config;
private static File configFile = new File(AppManager.getRuntimeDir(), "config.properties");;
public static final String TRUE = "true";
public static final String FALSE = "false";
public static final String kAppOutputDir = "appOutputDir";
public static final String kLogLevel = "logLevel";
public static final String kIsLogOutputFile = "isLogOutputFile";
public static final String kLastPageIndex = "lastPageIndex";
public static final String kLastOpenDecompileDir = "lastOpenDecompileDir";
public static final String kLastOpenRecompileDir = "lastOpenRecompileDir";
public static final String kLastOpenApkSignDir = "lastOpenApkSignDir";
public static final String kLastOpenApkInfoDir = "lastOpenApkInfoDir";
public static final String kLastOpenJar2SmaliDir = "lastOpenJar2SmaliDir";
public static final String kLastOpenClass2SmaliDir = "lastOpenClass2SmaliDir";
public static final String kLastOpenDex2SmaliDir = "lastOpenDex2SmaliDir";
public static final String kLastOpenSmali2DexDir = "lastOpenSmali2DexDir";
public static final String kLastOpenClass2DexDir = "lastOpenClass2DexDir";
public static final String kLastOpenDex2JarDir = "lastOpenDex2JarDir";
public static final String kLastOpenJadDir = "lastOpenJadJarDir";
public static final String kLastOpenJadJarDir = "lastOpenJadJarDir";
public static final String kLastOpenIconDir = "lastOpenIconDir";
public static final String kLastOpenJiaoBiaoDir = "lastOpenJiaoBiaoDir";
public static final String kLastSaveIconDir = "lastSaveIconDir";
public static final String kIconShowBorder = "iconShowBorder";
public static final String kLastJiaGuAddApkDir = "lastJiaGuAddApkDir";
public static final String kLastOpenApkParserDir = "lastOpenApkParserDir";
public static final String kSublimePath = "sublimePath";
public static final String kSublimeCmdParams = "sublimeCmdParams";
public static final String kKeystoreFilePath = "keystoreFilePath";
public static final String kKeystoreAlias = "alias";
public static final String kAliasPassword = "aliasPassword";
public static final String kKeystorePassword = "keystorePassword";
public static final String kLastEasySDKOpenDir = "lastEasySDKOpenDir";
public static final URL DEFAULT_LOADING_IMAGE = ClassHelper.getResourceAsURL("res/gif/loading.gif");
public static final String JIANSHU_URL = "http://www.jianshu.com/u/149dc6683cc7";
public static final String BLOG_URL = "http://blog.csdn.net/linchaolong";
public static final String GITHUB_URL = "https://github.com/linchaolong/ApkToolPlus";
static{
try {
config = new Properties();
if(configFile.exists()){
FileInputStream in = new FileInputStream(configFile);
config.load(in);
in.close();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally {
}
}
public static void init(){
try {
InputStream in = ClassHelper.getResourceAsStream("META-INF/MANIFEST.MF");
Manifest manifest = new Manifest(in);
version = manifest.getMainAttributes().getValue("Manifest-Version");
Debug.d("Manifest-Version="+version);
IO.close(in);
} catch (IOException e) {
e.printStackTrace();
}
Debug.setLogLevel(Config.getInt(kLogLevel, Debug.DEBUG));
if (getDir(kAppOutputDir) == null){
set(Config.kAppOutputDir, AppManager.getOutputDir().getPath());
}
}
public static String getVersion(){
return version;
}
public static void save() {
save(null);
}
public static void save(final Runnable callback){
FileOutputStream out = null;
try {
out = new FileOutputStream(configFile);
config.store(out, APP_NAME + " Config");
if (callback != null) {
callback.run();
}
} catch (IOException e) {
e.printStackTrace();
} finally {
IO.close(out);
}
}
public static File getDir(String key){
String dirPath = Config.get(key, null);
File dir = null;
if(dirPath != null){
dir = new File(dirPath);
if(dir.exists()){
if(dir.isFile() ){
File parentFile = dir.getParentFile();
if(parentFile != null && parentFile.exists()){
dir = parentFile;
}
}
}else{
dir = null;
}
}
return dir;
}
public static boolean getBoolean(String key, boolean defaultVal){
String result = get(key, null);
if(result != null){
return TRUE.equalsIgnoreCase(result);
}
return defaultVal;
}
public static int getInt(String key, int defaultVal) {
String result = get(key, null);
if(result != null){
return Integer.parseInt(result);
}
return defaultVal;
}
public static String get(String key){
return get(key,null);
}
public static String get(String key, String defaultVal){
return config.getProperty(key,defaultVal);
}
public static void set(String key, String val){
config.setProperty(key,val);
}
public static void set(String key, Boolean val){
if(val){
Config.set(key, Config.TRUE);
}else{
Config.set(key,Config.FALSE);
}
}
public static void set(String key, Number value) {
set(key,String.valueOf(value));
}
}