Better date/time formatting
[unical.git] / src / ro / ieval / unical / EventListActivity.java
1 package ro.ieval.unical;
2
3 import android.app.ListActivity;
4 import android.content.Context;
5 import android.content.Intent;
6 import android.os.Bundle;
7 import android.view.LayoutInflater;
8 import android.view.Menu;
9 import android.view.MenuInflater;
10 import android.view.MenuItem;
11 import android.view.View;
12 import android.view.ViewGroup;
13 import android.widget.AdapterView.OnItemClickListener;
14 import android.widget.AdapterView;
15 import android.widget.ArrayAdapter;
16 import android.widget.ListView;
17 import android.widget.TextView;
18 import java.text.DateFormat;
19 import java.util.Arrays;
20 import java.util.Comparator;
21 import java.util.Date;
22
23 public final class EventListActivity extends ListActivity {
24 private static class EventComparator implements Comparator<Event> {
25 @Override
26 public int compare(final Event lhs, final Event rhs) {
27 if(lhs.dtstart < rhs.dtstart)
28 return -1;
29 if(lhs.dtstart == rhs.dtstart)
30 return 0;
31 return 1;
32 }
33
34 }
35
36 private class EventAdapter extends ArrayAdapter<Event> {
37 public EventAdapter() {//NOPMD
38 super(EventListActivity.this, R.layout.event_row_layout, events);
39 }
40
41 @Override
42 public View getView(final int position, final View convertView, final ViewGroup parent) {
43 final LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
44 final View rowView = inflater.inflate(R.layout.event_row_layout, parent, false);
45 final TextView title = (TextView) rowView.findViewById(R.id.smalleventtitle);
46 final TextView dstart = (TextView) rowView.findViewById(R.id.smalldatestart);
47 final TextView dend = (TextView) rowView.findViewById(R.id.smalldateend);
48 final View header = rowView.findViewById(R.id.rowHeader);
49 final DateFormat format = DateFormat.getDateTimeInstance();
50 header.setBackgroundColor(events[position].eventColour);
51 title.setText(events[position].title);
52 dstart.setText(format.format(new Date(events[position].dtstart)));
53 dend.setText(format.format(new Date(events[position].dtend)));
54
55 return rowView;
56 }
57 }
58
59 private Event[] events;
60
61 @Override
62 public void onListItemClick(final ListView view, final View v, final int pos, final long id) {
63 DisplayEventActivity.displayEvent(this, events[pos]._id);
64 }
65
66 private void displayEvents() {
67 events = Event.getAllEvents(this);
68
69 Arrays.sort(events, new EventComparator());
70 int idx=-1;//index of the first event to be displayed
71 for(int i=0; i<events.length; ++i)
72 if(idx==-1 && events[i].dtend>new Date().getTime()) idx=i;
73 if(idx==-1) idx=0;
74
75 setListAdapter(new EventAdapter());
76 getListView().setSelectionFromTop(idx, 0);
77 }
78
79 @Override
80 protected void onStart() {
81 super.onStart();
82 displayEvents();
83 }
84
85 @Override
86 protected void onCreate(final Bundle savedInstanceState) {
87 super.onCreate(savedInstanceState);
88 displayEvents();
89 }
90
91 @Override
92 public boolean onCreateOptionsMenu(final Menu menu) {
93 final MenuInflater inflater = getMenuInflater();
94 inflater.inflate(R.menu.event_list, menu);
95 return true;
96 }
97
98 @Override
99 public boolean onOptionsItemSelected(final MenuItem item) {
100 switch (item.getItemId()) {
101 case R.id.add_event:
102 startActivity(new Intent(this,AddEventActivity.class));
103 return true;
104 case R.id.refresh:
105 displayEvents();
106 return true;
107 default:
108 return false;
109 }
110 }
111
112 }
This page took 0.023958 seconds and 4 git commands to generate.