Clean up EventListActivity
[unical.git] / src / ro / ieval / unical / EventListActivity.java
index 7379d59c6a1dcdcb897906a92237dddb6d8e1641..642b77f2115d05cc0b25b45b0964d79bb3ba7f9e 100644 (file)
@@ -1,44 +1,25 @@
 package ro.ieval.unical;
 
-import java.util.Arrays;
-import java.util.Comparator;
-
-import android.app.Activity;
+import android.app.ListActivity;
+import android.content.Context;
 import android.content.Intent;
 import android.os.Bundle;
+import android.view.LayoutInflater;
 import android.view.Menu;
 import android.view.MenuInflater;
 import android.view.MenuItem;
 import android.view.View;
-import android.widget.AdapterView;
+import android.view.ViewGroup;
 import android.widget.AdapterView.OnItemClickListener;
+import android.widget.AdapterView;
+import android.widget.ArrayAdapter;
 import android.widget.ListView;
+import android.widget.TextView;
+import java.util.Arrays;
+import java.util.Comparator;
+import java.util.Date;
 
-
-public class EventListActivity extends Activity {
-       
-       long dtstart,dtend;
-       //Used to refresh events if the user wants to display only certain events
-       //Sry for bad english
-       //Muie la comisie
-       private void displayEvents() {
-               final Event events[]=Event.getAllEvents(getBaseContext());
-           final ListView lv = (ListView) findViewById(R.id.eventlist);
-               Arrays.sort(events,new EventComparator());
-
-               final EventAdapter adapter = new EventAdapter(this, events);
-               lv.setAdapter(adapter);
-               lv.setOnItemClickListener(new OnItemClickListener() {
-
-                       @Override
-                       public void onItemClick(final AdapterView<?> arg0, final View arg1, final int arg2,
-                                       final long arg3) {
-                               DisplayEventActivity.displayEvent(EventListActivity.this,events[arg2]);
-                       }
-                       
-               });
-       }
-       
+public final class EventListActivity extends ListActivity {
        private static class EventComparator implements Comparator<Event> {
                @Override
                public int compare(final Event lhs, final Event rhs) {
@@ -51,31 +32,73 @@ public class EventListActivity extends Activity {
 
        }
 
+       private class EventAdapter extends ArrayAdapter<Event> {
+               public EventAdapter() {//NOPMD
+                       super(EventListActivity.this, R.layout.event_row_layout);
+               }
+
+               @Override
+                       public View getView(final int position, final View convertView, final ViewGroup parent) {
+                       final LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+                       final View rowView = inflater.inflate(R.layout.event_row_layout, parent, false);
+                       final TextView title = (TextView) rowView.findViewById(R.id.smalleventtitle);
+                       final TextView dstart = (TextView) rowView.findViewById(R.id.smalldatestart);
+                       final TextView dend = (TextView) rowView.findViewById(R.id.smalldateend);
+                       final View header = rowView.findViewById(R.id.rowHeader);
+                       header.setBackgroundColor(events[position].eventColour);
+                       title.setText(events[position].title);
+                       dstart.setText(new Date(events[position].dtstart).toString());
+                       dend.setText(new Date(events[position].dtend).toString());
+
+                       return rowView;
+               }
+       }
+
+       private Event[] events;
+
+       @Override
+       public void onListItemClick(final ListView view, final View v, final int pos, final long id) {
+               DisplayEventActivity.displayEvent(this, events[pos]);
+       }
+
+       private void displayEvents() {
+               events = Event.getAllEvents(this);
+
+               Arrays.sort(events, new EventComparator());
+               int idx=-1;//index of the first event to be displayed
+               for(int i=0; i<events.length; ++i)
+                       if(idx==-1 && events[i].dtend>new Date().getTime()) idx=i;
+               if(idx==-1) idx=0;
+
+               setListAdapter(new EventAdapter());
+               getListView().setSelectionFromTop(idx, 0);
+       }
+
        @Override
        protected void onCreate(final Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
-               setContentView(R.layout.event_list);
-               
                displayEvents();
        }
-       
+
        @Override
        public boolean onCreateOptionsMenu(final Menu menu) {
                final MenuInflater inflater = getMenuInflater();
-           inflater.inflate(R.menu.main, menu);
+               inflater.inflate(R.menu.event_list, menu);
                return true;
        }
-       
+
        @Override
        public boolean onOptionsItemSelected(final MenuItem item) {
-           switch (item.getItemId()) {
-               case R.id.NewEvent:
-                       final Intent i=new Intent(this,AddEventActivity.class);
-                               startActivity(i);
-                   return true;
-               default:
-                   return false;
-           }
+               switch (item.getItemId()) {
+                       case R.id.add_event:
+                               startActivity(new Intent(this,AddEventActivity.class));
+                               return true;
+                       case R.id.refresh:
+                               displayEvents();
+                               return true;
+                       default:
+                               return false;
+               }
        }
-       
+
 }
This page took 0.011185 seconds and 4 git commands to generate.