/*
* Copyright (C) 2011-2012 sakuramilk <c.sakuramilk@gmail.com>
*
* 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 net.sakuramilk.TweakGS2.RomManager;
import net.sakuramilk.TweakGS2.Config;
import net.sakuramilk.TweakGS2.R;
import net.sakuramilk.util.Constant;
import net.sakuramilk.util.Misc;
import net.sakuramilk.util.SystemCommand;
import net.sakuramilk.widget.TextInputDialog;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.preference.ListPreference;
import android.preference.Preference;
import android.preference.Preference.OnPreferenceChangeListener;
import android.preference.Preference.OnPreferenceClickListener;
import android.preference.PreferenceActivity;
import android.preference.PreferenceScreen;
import android.widget.Toast;
public class RomManagerPreferenceActivity extends PreferenceActivity
implements OnPreferenceClickListener, OnPreferenceChangeListener {
private PreferenceScreen mRebootNormal;
private PreferenceScreen mRebootRecovery;
private PreferenceScreen mRebootDownload;
private ListPreference mNandroidBackup;
private ListPreference mNandroidRestore;
private ListPreference mNandroidManage;
private PreferenceScreen mFlashInstallZip;
private PreferenceScreen mSblBackup;
private PreferenceScreen mEfsBackup;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.rom_manager_pref);
mRebootNormal = (PreferenceScreen)findPreference("reboot_normal");
mRebootNormal.setOnPreferenceClickListener(this);
mRebootRecovery = (PreferenceScreen)findPreference("reboot_recovery");
mRebootRecovery.setOnPreferenceClickListener(this);
mRebootDownload = (PreferenceScreen)findPreference("reboot_download");
mRebootDownload.setOnPreferenceClickListener(this);
mNandroidBackup = (ListPreference)findPreference("nandroid_backup");
mNandroidBackup.setOnPreferenceChangeListener(this);
mNandroidRestore = (ListPreference)findPreference("nandroid_restore");
mNandroidRestore.setOnPreferenceChangeListener(this);
mNandroidManage = (ListPreference)findPreference("nandroid_manage");
mNandroidManage.setOnPreferenceChangeListener(this);
mFlashInstallZip = (PreferenceScreen)findPreference("flash_install_zip");
mFlashInstallZip.setOnPreferenceClickListener(this);
mSblBackup = (PreferenceScreen)findPreference("sbl_backup");
mSblBackup.setOnPreferenceClickListener(this);
mEfsBackup = (PreferenceScreen)findPreference("efs_backup");
mEfsBackup.setOnPreferenceClickListener(this);
}
@Override
public boolean onPreferenceClick(Preference preference) {
if (preference == mRebootNormal) {
final AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
alertDialogBuilder.setTitle(R.string.reboot);
alertDialogBuilder.setMessage(R.string.reboot_summary);
alertDialogBuilder.setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
SystemCommand.reboot("");
}
});
alertDialogBuilder.setNegativeButton(android.R.string.no, null);
alertDialogBuilder.create().show();
} else if (preference == mRebootRecovery) {
final AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
alertDialogBuilder.setTitle(R.string.reboot);
alertDialogBuilder.setMessage(R.string.recovery_summary);
alertDialogBuilder.setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
SystemCommand.reboot("recovery");
}
});
alertDialogBuilder.setNegativeButton(android.R.string.no, null);
alertDialogBuilder.create().show();
} else if (preference == mRebootDownload) {
final AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
alertDialogBuilder.setTitle(R.string.reboot);
alertDialogBuilder.setMessage(R.string.download_summary);
alertDialogBuilder.setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
SystemCommand.reboot("download");
}
});
alertDialogBuilder.setNegativeButton(android.R.string.no, null);
alertDialogBuilder.create().show();
} else if (preference == mFlashInstallZip) {
Intent intent = new Intent(getApplicationContext(), ZipFilePickerActivity.class);
intent.putExtra("title", getText(R.string.select_zip_title));
intent.putExtra("select", "file");
intent.putExtra("filter", ".zip");
this.startActivity(intent);
} else if (preference == mSblBackup) {
String backupDir = Misc.getSdcardPath(true) + Config.TGS2_BACKUP_DIR;
String backupPath = backupDir + "/Sbl_" + Misc.getDateString() + ".bin";
SystemCommand.mkdir(backupDir);
SystemCommand.sbl_backup_for_gs2(backupPath);
Toast.makeText(this, getText(R.string.backup_completed) + "\n" + backupPath, Toast.LENGTH_LONG).show();
} else if (preference == mEfsBackup) {
String backupDir = Misc.getSdcardPath(true) + Config.TGS2_BACKUP_DIR;
String backupPath = backupDir + "/efs_" + Misc.getDateString() + ".img";
SystemCommand.mkdir(backupDir);
SystemCommand.efs_backup_for_gs2(backupPath);
Toast.makeText(this, getText(R.string.backup_completed) + "\n" + backupPath, Toast.LENGTH_LONG).show();
}
return false;
}
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
if (preference == mNandroidBackup) {
final String sdcardPath = Misc.getSdcardPath("internal".equals(newValue));
TextInputDialog dlg = new TextInputDialog(this);
dlg.setFinishTextInputListener(new TextInputDialog.FinishTextInputListener() {
@Override
public void onFinishTextInput(CharSequence input) {
String inputName = input.toString();
inputName = inputName.replace("\n", "").trim();
SystemCommand.backup_rom(sdcardPath + inputName);
SystemCommand.reboot("recovery");
}
});
dlg.show(R.string.backup, R.string.backup_name, Misc.getDateString());
} else if (preference == mNandroidRestore) {
final String sdcardPath = Misc.getSdcardPath("internal".equals(newValue));
Intent intent = new Intent(getApplicationContext(), RestoreDirPickerActivity.class);
intent.putExtra("title", getText(R.string.select_backup_title));
intent.putExtra("select", "dir");
intent.putExtra("mode", "restore");
intent.putExtra("path", sdcardPath + Constant.CWM_BACKUP_DIR);
this.startActivity(intent);
} else if (preference == mNandroidManage) {
final String sdcardPath = Misc.getSdcardPath("internal".equals(newValue));
Intent intent = new Intent(getApplicationContext(), RestoreDirPickerActivity.class);
intent.putExtra("title", getText(R.string.select_backup_title));
intent.putExtra("select", "dir");
intent.putExtra("mode", "manage");
intent.putExtra("path", sdcardPath + Constant.CWM_BACKUP_DIR);
this.startActivity(intent);
}
return false;
}
}