/**
DR Radio 2 is developed by Jacob Nordfalk, Hanafi Mughrabi and Frederik Aagaard.
Some parts of the code are loosely based on Sveriges Radio Play for Android.
DR Radio 2 for Android is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License version 2 as published by
the Free Software Foundation.
DR Radio 2 for Android is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with
DR Radio 2 for Android. If not, see <http://www.gnu.org/licenses/>.
*/
package dk.dr.radio.akt;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.preference.ListPreference;
import android.preference.Preference;
import android.preference.Preference.OnPreferenceChangeListener;
import android.preference.PreferenceActivity;
import android.preference.PreferenceScreen;
import android.view.Menu;
import dk.dr.radio.R;
import dk.dr.radio.data.DRData;
import dk.dr.radio.diverse.App;
import dk.dr.radio.diverse.Log;
public class Indstillinger_akt extends PreferenceActivity implements OnPreferenceChangeListener, Runnable {
public static final String åbn_formatindstilling = "åbn_formatindstilling";
private String aktueltLydformat;
private ListPreference lydformatlp;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.indstillinger);
try {
// Find lydformat
PreferenceScreen ps = this.getPreferenceScreen();
final int POS_lydformat = 1;
lydformatlp = (ListPreference) ps.getRootAdapter().getItem(POS_lydformat);
if (!DRData.NØGLE_lydformat.equals(lydformatlp.getKey())) {
if (DRData.udvikling) throw new InternalError("lydformat har skiftet plads, ret i koden");
return; // drop resten af initialiseringen i produktion
}
// Udfyld med værdier der er passende for denne enhed
// Er det Android 2.2 eller derunder kan vi godt fjerne HLS og HLS2
if (Build.VERSION.SDK_INT < 9) {
lydformatlp.setEntries(lavDelarray(lydformatlp.getEntries(), 2));
lydformatlp.setEntryValues(lavDelarray(lydformatlp.getEntryValues(), 2));
}
// Har brugeren trykket på "Format" på afspilleraktiviteten skal format åbnes direkte
if (getIntent().getBooleanExtra(åbn_formatindstilling, false)) try {
// Jeg synes toast alligevel er overflødig. Jacob
//Toast.makeText(this, lydformatlp.getSummary(), Toast.LENGTH_LONG).show();
ps.onItemClick(null, null, POS_lydformat, 0);
} catch (Exception ignored) {
} // Ignorer - se http://www.bugsense.com/dashboard/project/57c90f98/error/11696187
lydformatlp.setOnPreferenceChangeListener(this);
aktueltLydformat = lydformatlp.getValue();
} catch (Exception ex) {
Log.rapporterFejl(ex);
}
}
private CharSequence[] lavDelarray(CharSequence[] entries, int antal) {
CharSequence[] res = new CharSequence[antal];
for (int i = 0; i < antal; i++) res[i] = entries[i];
return res;
}
Handler handler = new Handler();
public boolean onPreferenceChange(Preference preference, Object newValue) {
// På dette tidspunkt er indstillingen ikke gemt endnu, det bliver den
// først når metoden har returneret true.
// Vi venter derfor med at opdatere afspilleren med det nye lydformat
// indtil GUI-tråden er færdig med kaldet til onPreferenceChange() og
// klar igen
handler.post(this);
return true;
}
/**
* Håndtering af MENU-knappen
*/
@Override
public boolean onCreateOptionsMenu(Menu menu) {
menu.add(0, 0, 0, "udvikler");
return super.onCreateOptionsMenu(menu);
}
int onPrepareOptionsMenu = 0;
/**
* Håndtering af MENU-knappen. Vis 'udvikler' efter 10 tryk
*/
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
onPrepareOptionsMenu++;
Log.d("onPrepareOptionsMenu=" + onPrepareOptionsMenu);
menu.findItem(0).setVisible(false);
if (onPrepareOptionsMenu > 9) {
DRData.udvikling = !DRData.udvikling;
App.langToast("udvikling=" + DRData.udvikling);
}
return super.onPrepareOptionsMenu(menu);
}
public void run() {
String nytLydformat = lydformatlp.getValue();
if (nytLydformat.equals(aktueltLydformat)) return;
Log.d("Lydformatet blev ændret fra " + aktueltLydformat + " til " + nytLydformat);
aktueltLydformat = nytLydformat;
DRData drdata = DRData.instans;
String url = drdata.findKanalUrlFraKode(drdata.aktuelKanal);
drdata.afspiller.setKanal(drdata.aktuelKanal.longName, url);
}
}