This repository has no description
3.5 kB
95 lines
1package us.lassul.assist;
2
3import android.app.Activity;
4import android.content.Intent;
5import android.os.Bundle;
6import android.text.format.DateUtils;
7import android.view.Gravity;
8import android.view.View;
9import android.view.ViewGroup;
10import android.widget.AdapterView;
11import android.widget.ArrayAdapter;
12import android.widget.FrameLayout;
13import android.widget.ListView;
14import android.widget.TextView;
15import java.util.List;
16
17/** All conversations, newest first; one opens its transcript. */
18public class SessionsActivity extends Activity {
19 private ListView list;
20 private final Runnable redraw = new Runnable() {
21 @Override
22 public void run() {
23 refresh();
24 }
25 };
26
27 @Override
28 protected void onCreate(Bundle state) {
29 super.onCreate(state);
30 getActionBar().setDisplayHomeAsUpEnabled(true);
31 list = new ListView(this);
32 list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
33 @Override
34 public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
35 Conversation conversation = (Conversation) parent.getItemAtPosition(position);
36 startActivity(new Intent(SessionsActivity.this, TranscriptActivity.class)
37 .putExtra(TranscriptActivity.SESSION, conversation.hermesSession));
38 }
39 });
40 TextView empty = new TextView(this);
41 empty.setText("No conversations yet.");
42 empty.setTextColor(Conversation.DIM);
43 empty.setGravity(Gravity.CENTER);
44 FrameLayout root = new FrameLayout(this);
45 root.addView(list);
46 root.addView(empty);
47 list.setEmptyView(empty);
48 Ui.fitBars(this, root, 0);
49 setContentView(root);
50 }
51
52 @Override
53 protected void onResume() {
54 super.onResume();
55 Live.watch(redraw);
56 refresh();
57 }
58
59 @Override
60 protected void onPause() {
61 Live.unwatch(redraw);
62 super.onPause();
63 }
64
65 @Override
66 public boolean onNavigateUp() {
67 finish();
68 return true;
69 }
70
71 private void refresh() {
72 List<Conversation> conversations = Conversation.all(this);
73 Conversation current = Conversation.current(this);
74 final String currentSession = current == null ? null : current.hermesSession;
75 list.setAdapter(new ArrayAdapter<Conversation>(
76 this, android.R.layout.simple_list_item_2, android.R.id.text1, conversations) {
77 @Override
78 public View getView(int position, View convertView, ViewGroup parent) {
79 View row = super.getView(position, convertView, parent);
80 Conversation conversation = getItem(position);
81 String when = DateUtils.formatDateTime(getContext(), conversation.started,
82 DateUtils.FORMAT_SHOW_DATE | DateUtils.FORMAT_SHOW_TIME
83 | DateUtils.FORMAT_ABBREV_MONTH);
84 ((TextView) row.findViewById(android.R.id.text1)).setText(
85 conversation.hermesSession.equals(currentSession)
86 ? when + " · current"
87 : when);
88 TextView title = row.findViewById(android.R.id.text2);
89 title.setText(conversation.title());
90 title.setMaxLines(2);
91 return row;
92 }
93 });
94 }
95}