package dk.dr.radio.akt;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTransaction;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.TextView;
import com.androidquery.AQuery;
import java.util.ArrayList;
import java.util.Collections;
import dk.dr.radio.data.DRData;
import dk.dr.radio.data.DRJson;
import dk.dr.radio.data.Grunddata;
import dk.dr.radio.data.Kanal;
import dk.dr.radio.data.Lydkilde;
import dk.dr.radio.data.SenestLyttede;
import dk.dr.radio.data.Udsendelse;
import dk.dr.radio.diverse.App;
import dk.dr.radio.diverse.Log;
import dk.dr.radio.diverse.Sidevisning;
import dk.dr.radio.v3.R;
public class Senest_lyttede_frag extends Basisfragment implements AdapterView.OnItemClickListener, Runnable, View.OnClickListener {
private ListView listView;
private ArrayList<SenestLyttede.SenestLyttet> liste = new ArrayList<SenestLyttede.SenestLyttet>();
protected View rod;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
rod = inflater.inflate(R.layout.senest_lyttede, container, false);
AQuery aq = new AQuery(rod);
listView = aq.id(R.id.listView).adapter(adapter).itemClicked(this).getListView();
listView.setEmptyView(aq.id(R.id.tom).typeface(App.skrift_gibson_fed).text(R.string.Ingen_senest_lyttede).getView());
opdaterListe();
TextView overskrift = aq.id(R.id.overskrift).typeface(App.skrift_gibson_fed).text(R.string.Senest_lyttede).getTextView();
overskrift.setVisibility(View.VISIBLE);
udvikling_checkDrSkrifter(rod, this + " rod");
// Vi ændrer ikke i listen imens den vises, så vi behøver ikke observere afspilleren
//DRData.instans.afspiller.observatører.add(this);
//App.netværk.observatører.add(this);
opdaterListe();
return rod;
}
@Override
public void onDestroyView() {
super.onDestroyView();
//DRData.instans.afspiller.observatører.remove(this);
//App.netværk.observatører.remove(this);
}
@Override
public void onResume() {
super.onResume();
opdaterListe();
}
@Override
public void run() {
opdaterListe();
}
private void opdaterListe() {
try {
liste.clear();
liste.addAll(DRData.instans.senestLyttede.getListe());
Collections.reverse(liste);
} catch (Exception e1) {
Log.rapporterFejl(e1);
}
adapter.notifyDataSetChanged();
}
@Override
public void onClick(View v) {
Lydkilde udsendelse = ((Viewholder) v.getTag()).sl.lydkilde;
DRData.instans.afspiller.setLydkilde(udsendelse);
DRData.instans.afspiller.startAfspilning();
}
private static class Viewholder {
public AQuery aq;
public TextView titel;
public TextView dato;
public TextView varighed;
public View stiplet_linje;
public View hør;
public SenestLyttede.SenestLyttet sl;
}
private BaseAdapter adapter = new Basisadapter() {
@Override
public int getCount() {
return liste.size();
}
@Override
public View getView(int position, View v, ViewGroup parent) {
Viewholder vh;
SenestLyttede.SenestLyttet sl = liste.get(position);
if (v == null) {
v = getLayoutInflater(null).inflate(R.layout.programserie_elem2_udsendelse, parent, false);
vh = new Viewholder();
AQuery a = vh.aq = new AQuery(v);
vh.titel = a.id(R.id.titel).typeface(App.skrift_gibson_fed).getTextView();
vh.dato = a.id(R.id.dato).typeface(App.skrift_gibson).getTextView();
vh.varighed = a.id(R.id.varighed).typeface(App.skrift_gibson).getTextView();
vh.stiplet_linje = a.id(R.id.stiplet_linje).getView();
vh.hør = a.id(R.id.hør).tag(vh).clicked(Senest_lyttede_frag.this).typeface(App.skrift_gibson).getView();
v.setTag(vh);
} else {
vh = (Viewholder) v.getTag();
}
vh.sl = sl;
vh.stiplet_linje.setVisibility(position > 0 ? View.VISIBLE : View.INVISIBLE); // Første stiplede linje på udsendelse væk
if (sl.lydkilde instanceof Kanal) {
Kanal k = (Kanal) sl.lydkilde;
vh.titel.setText(k.navn + " (Direkte)");
vh.dato.setVisibility(View.GONE);
} else if (sl.lydkilde instanceof Udsendelse) {
Udsendelse u = (Udsendelse) sl.lydkilde;
vh.titel.setText(u.titel);
vh.dato.setVisibility(View.VISIBLE);
Kanal k = u.getKanal();
vh.dato.setText((k == Grunddata.ukendtKanal ? "" : (k.navn + " - ")) + getString(R.string._kl_, DRJson.getDagsbeskrivelse(u.startTid).toLowerCase(), u.startTidKl));
} else {
Log.rapporterFejl(new Exception("forkert type"), sl.lydkilde);
}
vh.varighed.setText(getString(R.string.LYTTET_)+ getString(R.string._kl_, DRJson.getDagsbeskrivelse(vh.sl.tidpunkt) , DRJson.klokkenformat.format(vh.sl.tidpunkt)).toUpperCase());
udvikling_checkDrSkrifter(v, this.getClass() + " ");
return v;
}
};
@Override
public void onItemClick(AdapterView<?> listView, View v, int position, long id) {
if (getActivity()==null) return;
Fragment f;
Lydkilde k = liste.get(position).lydkilde;
if (k instanceof Kanal) {
f = Fragmentfabrikering.kanal((Kanal) k);
} else if (k instanceof Udsendelse) {
f = Fragmentfabrikering.udsendelse((Udsendelse) k);
} else {
Log.rapporterFejl(new IllegalStateException("Ukendt type"), k);
return;
}
getActivity().getSupportFragmentManager().beginTransaction()
.replace(R.id.indhold_frag, f)
.addToBackStack(null)
.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN)
.commit();
Sidevisning.vist(Udsendelse_frag.class, k.slug);
}
}