package org.agilespain.kitaos.ui;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.graphics.Typeface;
import android.net.Uri;
import android.os.Bundle;
import android.text.format.DateFormat;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ExpandableListView;
import android.widget.TextView;
import org.agilespain.kitaos.R;
import org.agilespain.kitaos.provider.KitaosContract;
import org.agilespain.kitaos.widget.TalksByHourTreeAdapter;
import org.agilespain.kitaos.widget.TypefaceUtils;
/**
* @author francho (http://francho.org)
*/
public class FragmentTalks extends android.support.v4.app.Fragment implements TalksByHourTreeAdapter.ViewBinder, ExpandableListView.OnChildClickListener {
private TalksByHourTreeAdapter mAdapter = null;
private ExpandableListView mTalksList;
/**
* onCreate
*
* @param savedInstanceState
*/
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Typeface mTitleFont = TypefaceUtils.getTitleFont(this.getActivity());
Typeface mNormalFont = TypefaceUtils.getNormalFont(this.getActivity());
}
/**
* onDestroy
*/
@Override
public void onDestroy() {
super.onDestroy();
// Null out the group cursor. This will cause the group cursor and all of the child cursors
// to be closed.
if (mAdapter != null) {
mAdapter.changeCursor(null);
mAdapter = null;
}
}
/**
* Attach to list view once Fragment is ready to run.
*/
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
if (mTalksList == null) {
return;
}
if (mAdapter == null) {
mAdapter = getTalksAdapter();
}
mTalksList.setAdapter(mAdapter);
mTalksList.setOnChildClickListener(this);
}
/**
* onCreate
*
* @param inflater
* @param container
* @param savedInstanceState
* @return
*/
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
mTalksList = (ExpandableListView) inflater.inflate(R.layout.expandable_list, container, false);
return mTalksList;
}
/**
* getApdater
*
* @return
*/
private TalksByHourTreeAdapter getTalksAdapter() {
Context context = getActivity();
Cursor cursor = context.getContentResolver().query(KitaosContract.Talks.hoursUri(),
new String[]{KitaosContract.Talks.START_DATE, KitaosContract.Talks._ID},
null,
null,
KitaosContract.Talks.START_DATE + " ASC");
TalksByHourTreeAdapter adapter = new TalksByHourTreeAdapter(context,
cursor,
new String[]{KitaosContract.Talks.START_DATE}, // Name for group layouts
new int[]{android.R.id.text1},
new String[]{
KitaosContract.Talks.TITLE,
KitaosContract.Talks.ROOM,
KitaosContract.Talks.SPEAKER
}, // Number for child layouts
new int[]{
R.id.talk_title,
R.id.talk_room,
R.id.talk_speaker
});
adapter.setViewBinder(this);
return adapter;
}
/**
* setViewValue
*
* @param view
* @param cursor
* @param i
* @return
*/
@Override
public boolean setViewValue(View view, Cursor cursor, int i) {
if (view.getId() == android.R.id.text1) {
CharSequence time = DateFormat.format("h:mm aa", cursor.getLong(i));
((TextView) view).setText(time);
return true;
}
return false;
}
@Override
public boolean onChildClick(ExpandableListView expandableListView, View view, int i, int i1, long l) {
Uri uri = KitaosContract.Talks.uri(l);
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(uri);
startActivity(intent);
return true;
}
}