package com.koushikdutta.desktopsms;
import java.util.HashMap;
import android.app.Activity;
import android.content.Context;
import android.os.Build;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Adapter;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemLongClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
public class ActivityBase extends Activity {
protected Settings mSettings;
boolean mDestroyed = false;
private final static String LOGTAG = ActivityBase.class.getSimpleName();
ListView mListView;
MyAdapter mAdapter;
class MyAdapter extends SeparatedListAdapter {
public MyAdapter(Context context) {
super(context);
}
@Override
public boolean areAllItemsEnabled() {
return false;
}
@Override
public boolean isEnabled(int position) {
if (!super.isEnabled(position))
return false;
ListItem item = (ListItem) getItem(position);
return item.Enabled;
}
}
class MyListAdapter extends ArrayAdapter<ListItem> {
public MyListAdapter(Context context) {
super(context, 0);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ListItem item = getItem(position);
return item.getView(ActivityBase.this, convertView);
}
@Override
public boolean areAllItemsEnabled() {
return false;
}
@Override
public boolean isEnabled(int position) {
ListItem item = getItem(position);
return item.Enabled;
}
}
HashMap<Integer, MyListAdapter> mAdapters = new HashMap<Integer, ActivityBase.MyListAdapter>();
protected MyListAdapter ensureHeader(int sectionName) {
MyListAdapter adapter = mAdapters.get(sectionName);
if (adapter == null) {
adapter = new MyListAdapter(this);
mAdapters.put(sectionName, adapter);
mAdapter.addSection(getString(sectionName), adapter);
mListView.setAdapter(null);
mListView.setAdapter(mAdapter);
}
return adapter;
}
protected ListItem addItem(int sectionName, ListItem item) {
MyListAdapter adapter = mAdapters.get(sectionName);
if (adapter == null) {
adapter = new MyListAdapter(this);
mAdapters.put(sectionName, adapter);
mAdapter.addSection(getString(sectionName), adapter);
mListView.setAdapter(null);
mListView.setAdapter(mAdapter);
//mAdapter.notifyDataSetChanged();
}
adapter.add(item);
return item;
}
protected ListItem findItem(int item) {
String text = getString(item);
for (Adapter adapter: mAdapter.sections.values())
{
MyListAdapter m = (MyListAdapter)adapter;
for (int i = 0; i < m.getCount(); i++) {
ListItem li = m.getItem(i);
if (text.equals(li.Title))
return li;
}
}
return null;
}
protected boolean allowThemeOverride() {
return true;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
if (Build.VERSION.SDK_INT >= 11 && allowThemeOverride())
setTheme(android.R.style.Theme_Holo);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_base);
mListView = (ListView)findViewById(R.id.listview);
mListView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View view, int arg2, long arg3) {
ListItem li = (ListItem)mAdapter.getItem(arg2);
li.onClickInternal(view);
li.onClick(view);
}
});
mListView.setOnItemLongClickListener(new OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
ListItem li = (ListItem)mAdapter.getItem(arg2);
return li.onLongClick();
}
});
mAdapter = new MyAdapter(this);
mListView.setAdapter(mAdapter);
mSettings = Settings.getInstance(this);
}
@Override
protected void onDestroy() {
super.onDestroy();
mDestroyed = true;
}
public int getListItemResource() {
return R.layout.list_item;
}
}