package cri.sanity.screen;
import cri.sanity.*;
import cri.sanity.util.*;
import java.io.File;
import android.content.Intent;
import android.os.Bundle;
import android.preference.Preference;
public class RecordActivity extends ScreenActivity
{
private static final String REC_START_HEADSET = K.REC_START_HEADSET + K.WS;
private static final String REC_STOP_LIMIT = K.REC_STOP_LIMIT + K.WS;
private static final String REC_START_TIMES = K.REC_START_TIMES + K.WS;
private boolean speakerCall;
//---- Activity override
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
updateEnabled();
on("rec_browse", new Click(){ public boolean on(){
startActivity(new Intent(A.app(), BrowseActivity.class));
return true;
}});
on("rec_scan", new Change(){ public boolean on(){
boolean res = (Boolean)value? scanEnable() : scanDisable();
if(!res) Alert.msg(String.format(A.s(R.string.err_scan), scanFn()));
return res;
}});
on(K.REC_START, new Change(){ public boolean on(){
final boolean on = (Boolean)value;
setEnabled(K.REC_START_SPEAKER, on && (A.is(K.SPEAKER_AUTO) || speakerCall));
return true;
}});
on(K.REC_STOP, new Change(){ public boolean on(){
final boolean on = (Boolean)value;
setEnabled(K.REC_STOP_SPEAKER, on && (A.is(K.SPEAKER_AUTO) || speakerCall));
setEnabled(REC_STOP_LIMIT, on && A.isFull());
return true;
}});
on(K.REC_START_SPEAKER, new Change(){ public boolean on(){
setEnabled(REC_START_TIMES, (Boolean)value || A.geti(K.REC_START_HEADSET)!=RecService.ACT_HEADSET_SKIP);
return true;
}});
on(REC_START_HEADSET, new Change(){ public boolean on(){
setEnabled(REC_START_TIMES, A.is(K.REC_START_SPEAKER) || !Integer.toString(RecService.ACT_HEADSET_SKIP).equals((String)value));
return true;
}});
if(!A.isFull()) {
final Preference p = pref(REC_STOP_LIMIT);
p.setEnabled(false);
p.setSummary(p.getSummary()+" "+A.s(R.string.full_only)+'.');
}
}
@Override
public void onResume()
{
super.onResume();
updateEnabled();
}
//---- private static api
private void updateEnabled() {
speakerCall = A.geti(K.SPEAKER_CALL) != 0;
boolean speakerAuto = speakerCall || A.is(K.SPEAKER_AUTO);
boolean recStop = A.is(K.REC_STOP);
setEnabled(K.REC_START_SPEAKER, speakerAuto && A.is(K.REC_START));
setEnabled(K.REC_STOP_SPEAKER , speakerAuto && recStop);
setEnabled( REC_STOP_LIMIT , recStop && A.isFull());
setEnabled( REC_START_TIMES , A.is(K.REC_START_SPEAKER) || A.geti(K.REC_START_HEADSET)!=RecService.ACT_HEADSET_SKIP);
setChecked( "rec_scan" , scanAllowed());
}
// manage multimedia scanner
private static boolean scanAllowed() { return !scanFile().exists(); }
private static File scanFile () { return new File(scanFn()); }
private static String scanFn () { return A.sdcardDir() + "/.nomedia"; }
private static boolean scanEnable () {
final File f = scanFile();
try { f.delete(); } catch(Exception e) {}
return !f.exists();
}
private static boolean scanDisable() {
final File f = scanFile();
try { f.createNewFile(); } catch(Exception e) {}
return f.exists();
}
}