package cri.sanity;
import cri.sanity.util.*;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.preference.Preference;
public class MainActivity extends ScreenActivity
{
private static final String KEY_UNINSTALL = "uninstall";
private Handler handler;
@Override
public void onCreate(Bundle savedInstanceState) {
handler = new Handler();
secure = false;
nagDefault = false;
skipAllKeys = true;
screener(MainActivity.class, R.xml.prefs);
super.onCreate(savedInstanceState);
screenerAll();
if(nagDefault = setupFull()) startup();
if(!Dev.isBtOn()) A.putc(K.BT_COUNT, 0); // recheck sometimes to avoid false counter
if(A.SDK < 8) setEnabled(KEY_UNINSTALL, false);
else on(KEY_UNINSTALL, new Click(){ public boolean on(){ Alert.msg(A.rawstr(R.raw.uninstall)); return true; }});
}
@Override
public void onResume() {
updateOptions();
super.onResume();
}
@Override
public void onDestroy() {
ungrant();
super.onDestroy();
}
@Override
public void onActivityResult(int code, int res, Intent i) {
if(code != License.CODE) return;
try {
final boolean full = License.result(res, handler, new Runnable(){ public void run(){ startup(); }});
handler.post(new Runnable(){ public void run(){ enableFull(full); }});
} catch(IllegalStateException e) {}
}
@Override
public boolean isMainActivity() { return true; }
//---- private api
private boolean setupFull() {
if(License.isChecked()) {
enableFull(true);
return true;
}
if(!License.check()) {
enableFull(false);
return true;
}
return false;
}
private void enableFull(boolean enable) {
Preference p = pref("donate");
if(enable) {
p.setEnabled(false);
p.setSelectable(false);
if(Conf.FULL) { p.setTitle(R.string.full_title ); p.setSummary(R.string.full_sum ); }
else { p.setTitle(R.string.donated_title); p.setSummary(R.string.donated_sum); }
} else {
on(p, new Click(){ public boolean on(){ return Goto.marketDetails(License.FULL_PKG); }});
p = pref("screen_record");
p.setSummary(p.getSummary()+" "+A.s(R.string.rec_cat_sum_free));
}
}
private void startup() {
if(!A.is(K.AGREE))
firstRun();
else if(P.upgrade())
alertChangeLog();
else if(License.isCompleted() && !A.isFull())
nag = nagDefault = true;
}
private void firstRun() {
Alert.msg(
A.s(R.string.msg_eula_title),
fullName()+"\n\n"+appDesc()+"\n\n"+A.rawstr(R.raw.license),
new Alert.Click(){ public void on(){
A.put(K.AGREE, true);
P.setDefaults();
updateOptions();
dismiss();
if(P.backupExists()) askRestore();
else askAdmin();
}},
new Alert.Click(){ public void on(){ finish(); }},
Alert.OKCANC,
false
);
}
private void askRestore() {
Alert.msg(
A.s(R.string.ask_restore),
new Alert.Click(){ public void on(){
final boolean ok = P.restore();
A.toast(ok? R.string.msg_restore_success : R.string.msg_restore_failed);
if(ok) updateOptions();
dismiss();
askAdmin();
}},
new Alert.Click(){ public void on(){
dismiss();
askAdmin();
}},
Alert.OKCANC
);
}
private void askAdmin() {
if(A.SDK<8 || Admin.isActive()) return;
Alert.msg(
A.rawstr(R.raw.admin_ask_enable),
new Alert.Click(){ public void on(){ Admin.request(MainActivity.this); }},
null,
Alert.OKCANC
);
}
private void updateOptions() {
final boolean enabled = A.isEnabled();
setEnabled("screen_devices" , enabled);
setEnabled("screen_proximity", enabled);
setEnabled("screen_speaker" , enabled);
setEnabled("screen_volume" , enabled);
setEnabled("screen_notify" , enabled);
setEnabled("screen_record" , enabled);
setEnabled("screen_tts" , enabled);
setEnabled("screen_block" , enabled);
}
}