package edu.fsu.cs.contextprovider.shared;
import java.util.LinkedList;
import edu.fsu.cs.contextprovider.R;
import edu.fsu.cs.contextprovider.shared.AboutActivity.AboutAdapter.AboutItem;
import android.app.ListActivity;
import android.content.ActivityNotFoundException;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager.NameNotFoundException;
import android.net.Uri;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
public class AboutActivity extends ListActivity {
private AboutAdapter aboutAdapter;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
setContentView(R.layout.about);
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.abouttitle);
TextView versionTextView = (TextView) findViewById(R.id.version);
try {
versionTextView.setText(getString(R.string.version) + " " + getPackageManager().getPackageInfo(getPackageName(), 0).versionName);
} catch (NameNotFoundException e) {
}
aboutAdapter = new AboutAdapter(this);
generateDevelopmentItems();
generateMoreInfoItems();
setListAdapter(aboutAdapter);
}
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
AboutItem item = aboutAdapter.getAboutItem(position);
final Intent actionIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(item.getAction()));
try {
startActivity(actionIntent);
} catch (ActivityNotFoundException e) {
Toast.makeText(this, R.string.error_email, Toast.LENGTH_LONG).show();
}
}
private void generateDevelopmentItems() {
aboutAdapter.addSeparator(R.string.development);
aboutAdapter.addItem("Bills Books", "info@mitchtech.net", "mailto:info@mitchtech.net", R.drawable.context64);
}
private void generateMoreInfoItems() {
aboutAdapter.addSeparator(R.string.more_info);
aboutAdapter.addItem(getString(R.string.project_webpage), "http://mitchtech.net/", "http://mitchtech.net/", R.drawable.context64);
}
public class AboutAdapter extends BaseAdapter implements ListAdapter {
private Context context;
private LinkedList<AboutItem> items;
public AboutAdapter(Context context) {
this.context = context;
items = new LinkedList<AboutItem>();
}
public int getCount() {
return items.size();
}
public void addItem(String title, String description, String action, int icon) {
items.add(new AboutItem(title, description, action, icon, false));
}
public void addSeparator(int title) {
items.add(new AboutItem(getString(title), null, null, 0, true));
}
public Object getItem(int position) {
return position;
}
public AboutItem getAboutItem(int position) {
return items.get(position);
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
AboutItem item = items.get(position);
if (item.isSeparator()) {
View aboutView = LayoutInflater.from(context).inflate(R.layout.aboutseparator, null);
TextView titleTextView = (TextView) aboutView.findViewById(R.id.title);
titleTextView.setText(item.getTitle());
return aboutView;
}
View aboutView = LayoutInflater.from(context).inflate(R.layout.aboutitem, null);
TextView titleTextView = (TextView) aboutView.findViewById(R.id.title);
titleTextView.setText(item.getTitle());
TextView detailsTextView = (TextView) aboutView.findViewById(R.id.details);
detailsTextView.setText(item.getDescription());
if (item.getIcon() > 0) {
ImageView iconImageView = (ImageView) aboutView.findViewById(R.id.icon);
iconImageView.setImageResource(item.getIcon());
}
return aboutView;
}
@Override
public boolean areAllItemsEnabled() {
return false;
}
@Override
public boolean isEnabled(int position) {
return !items.get(position).isSeparator() && items.get(position).getAction() != null;
}
public class AboutItem {
private String title;
private String description;
private String action;
private int icon;
private boolean separator;
public AboutItem(String title, String description, String action, int icon, boolean separator) {
this.title = title;
this.description = description;
this.action = action;
this.icon = icon;
this.separator = separator;
}
public String getTitle() {
return title;
}
public String getDescription() {
return description;
}
public String getAction() {
return action;
}
public int getIcon() {
return icon;
}
public boolean isSeparator() {
return separator;
}
}
}
}