diff --git a/src/com/studentersamfundet/app/DataHandler.java b/src/com/studentersamfundet/app/DataHandler.java index baa57de..3e48c8f 100644 --- a/src/com/studentersamfundet/app/DataHandler.java +++ b/src/com/studentersamfundet/app/DataHandler.java @@ -1,13 +1,17 @@ package com.studentersamfundet.app; +import java.io.Serializable; +import java.util.Collection; +import java.util.LinkedHashSet; import java.util.LinkedList; -import java.util.List; import java.util.Set; import java.util.TreeSet; -public class DataHandler { - private List events = new LinkedList(); - private List news = new LinkedList(); +public class DataHandler implements Serializable { + private static final long serialVersionUID = 6787541405689146002L; + + private Collection events = new LinkedHashSet(); + private Collection news = new LinkedList(); private Set eventCategories = new TreeSet(); public void insertEvent(String id, @@ -22,8 +26,6 @@ public class DataHandler { String priceMem, String ticketUriStr) { int intId = Integer.parseInt(id); - if (getEvent(intId) != null) - return; Event event = new Event(intId, title, description, date, location, text, category, imageUri); diff --git a/src/com/studentersamfundet/app/Event.java b/src/com/studentersamfundet/app/Event.java index 505f0b9..c379843 100644 --- a/src/com/studentersamfundet/app/Event.java +++ b/src/com/studentersamfundet/app/Event.java @@ -8,11 +8,11 @@ import java.util.Date; import android.net.Uri; public class Event implements Serializable { - private static final long serialVersionUID = 1L; - public static final String ALL = "Alle"; - + private static final long serialVersionUID = -5222901012434000257L; private static final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm"); + public static final String ALL = "Alle"; + public final int id; public final String title; private String description; @@ -118,4 +118,16 @@ public class Event implements Serializable { this.memberPrice = memberPrice; this.ticketUriStr = ticketUri; } + + public int hashCode() { + return this.id; + } + + public boolean equals(Object o2) { + if (o2 instanceof Event) { + Event e2 = (Event)o2; + return this.id == e2.id; + } + return false; + } } diff --git a/src/com/studentersamfundet/app/FeedFetcher.java b/src/com/studentersamfundet/app/FeedFetcher.java index e83b84c..3a38127 100644 --- a/src/com/studentersamfundet/app/FeedFetcher.java +++ b/src/com/studentersamfundet/app/FeedFetcher.java @@ -5,6 +5,7 @@ import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; +import java.io.Serializable; import java.net.HttpURLConnection; import java.net.URL; import java.net.URLConnection; @@ -19,14 +20,12 @@ import org.xml.sax.SAXException; import android.content.Context; -public class FeedFetcher { - private final String LOCAL_FILENAME = "dns_events"; - - private Context context; +public class FeedFetcher implements Serializable { + private static final long serialVersionUID = 3408406671996232103L; + private static final String LOCAL_FILENAME = "dns_events"; private String url; - public FeedFetcher(Context context, String url) { - this.context = context; + public FeedFetcher(String url) { this.url = url; } @@ -61,54 +60,67 @@ public class FeedFetcher { * @throws IOException Is thrown if the app cannot download the file from * the internet and there is no local copy. */ - public NodeList fetch(boolean forcedUpdate) throws IOException { - InputStream in = null; - NodeList itemNodes = null; - - /* Update the local file if possible. */ - try { - if (forcedUpdate || doesFileNeedUpdate(context)) { - in = openHttpConnection(); - saveFile(in, context); - } - - } catch(IOException e) { - /* OK, so we failed to update it. It doesn't matter yet, because we can try to... */ - } finally { - if (in != null) - in.close(); - } - - /* ...load local file: */ - in = loadFile(context); // if we fail here, we fail ultimately. Throw the Exception! - - Document doc = null; - DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); - DocumentBuilder db; - - try { - db = dbf.newDocumentBuilder(); - doc = db.parse(in); - } catch (ParserConfigurationException e) { - /* This should never happen. */ - } catch (SAXException e) { - /* This shouldn't happen unless the xml returned by the server - * is somehow invalid. If it happens, the best course of action - * is to pretend we failed to download the event list (it's - * close enough and it simplifies exception-handling). */ - throw new IOException("Bad response from server."); - } - - doc.getDocumentElement().normalize(); - - // Retrieve all the nodes. - itemNodes = doc.getElementsByTagName("item"); - in.close(); - - return itemNodes; + public NodeList fetch(Context context, boolean forcedUpdate) throws IOException { + NodeList itemNodes = null; + InputStream in = null; + + /* Update the local file if possible. */ + try { + if (forcedUpdate || doesFileNeedUpdate(context)) { + in = openHttpConnection(); + saveFile(in, context); + } + + } catch(IOException e) { + /* OK, so we failed to update it. It doesn't matter yet, because we can try to... */ + } finally { + if (in != null) + in.close(); + } + + /* ...load local file: */ + in = loadFile(context); // if we fail here, we fail ultimately. Throw the Exception! + itemNodes = parseInputStream(in); + in.close(); + + return itemNodes; } - private boolean doesFileNeedUpdate(Context c) throws IOException { + public static NodeList loadLocalData(Context c) throws IOException { + NodeList nodes; + + InputStream is = loadFile(c); + nodes = parseInputStream(is); + is.close(); + + return nodes; + } + + private static NodeList parseInputStream(InputStream iStream) throws IOException { + Document doc = null; + DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); + DocumentBuilder db; + + try { + db = dbf.newDocumentBuilder(); + doc = db.parse(iStream); + } catch (ParserConfigurationException e) { + /* This should never happen. */ + } catch (SAXException e) { + /* This shouldn't happen unless the xml returned by the server + * is somehow invalid. If it happens, the best course of action + * is to pretend we failed to download the event list (it's + * close enough and it simplifies exception-handling). */ + throw new IOException("Bad response from server."); + } + + doc.getDocumentElement().normalize(); + + // Retrieve all the nodes. + return doc.getElementsByTagName("item"); + } + + private static boolean doesFileNeedUpdate(Context c) throws IOException { /** Maximum amount of time before the file needs updating, in ms: */ final long maxInterval = 1000 * 60 * 60; // one hour @@ -121,7 +133,7 @@ public class FeedFetcher { return now - lastMod > maxInterval; } - private void saveFile(InputStream in, Context c) throws IOException, FileNotFoundException { + private static void saveFile(InputStream in, Context c) throws IOException, FileNotFoundException { final int BUFFER_SIZE = 128; OutputStream os = c.openFileOutput(LOCAL_FILENAME, Context.MODE_PRIVATE); @@ -135,7 +147,7 @@ public class FeedFetcher { os.close(); } - private InputStream loadFile(Context c) throws FileNotFoundException { + private static InputStream loadFile(Context c) throws FileNotFoundException { return c.openFileInput(LOCAL_FILENAME); } } diff --git a/src/com/studentersamfundet/app/IRSSParser.java b/src/com/studentersamfundet/app/IRSSParser.java new file mode 100644 index 0000000..72415d8 --- /dev/null +++ b/src/com/studentersamfundet/app/IRSSParser.java @@ -0,0 +1,7 @@ +package com.studentersamfundet.app; + +import org.w3c.dom.NodeList; + +public interface IRSSParser { + public DataHandler parse(NodeList nodes); +} diff --git a/src/com/studentersamfundet/app/News.java b/src/com/studentersamfundet/app/News.java index 68f16b6..ee32772 100644 --- a/src/com/studentersamfundet/app/News.java +++ b/src/com/studentersamfundet/app/News.java @@ -1,16 +1,17 @@ package com.studentersamfundet.app; +import java.io.Serializable; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; -import android.net.Uri; - -public class News { +public class News implements Serializable { + private static final long serialVersionUID = 4015441794784305793L; + public String title; public String description; public String content; - public Uri link; + public String link; public Date pubDate; private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); @@ -19,7 +20,7 @@ public class News { this.title = title.trim(); this.description = description.trim(); this.content = content.trim(); - this.link = Uri.parse(link.trim()); + this.link = link.trim(); try { this.pubDate = sdf.parse(pubDate.trim()); diff --git a/src/com/studentersamfundet/app/RSSParserNews.java b/src/com/studentersamfundet/app/RSSParserNews.java index 562d98e..f56a418 100644 --- a/src/com/studentersamfundet/app/RSSParserNews.java +++ b/src/com/studentersamfundet/app/RSSParserNews.java @@ -4,7 +4,7 @@ import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; -public class RSSParserNews { +public class RSSParserNews implements IRSSParser { private final DataHandler dh; public RSSParserNews() { diff --git a/src/com/studentersamfundet/app/RSSParserProgram.java b/src/com/studentersamfundet/app/RSSParserProgram.java index 7accb81..deee2fa 100644 --- a/src/com/studentersamfundet/app/RSSParserProgram.java +++ b/src/com/studentersamfundet/app/RSSParserProgram.java @@ -4,7 +4,7 @@ import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; -public class RSSParserProgram { +public class RSSParserProgram implements IRSSParser { private final DataHandler dh; public RSSParserProgram() { diff --git a/src/com/studentersamfundet/app/ui/BaseDnsActivity.java b/src/com/studentersamfundet/app/ui/BaseDnsActivity.java index 2b6ac5a..0b1ef25 100644 --- a/src/com/studentersamfundet/app/ui/BaseDnsActivity.java +++ b/src/com/studentersamfundet/app/ui/BaseDnsActivity.java @@ -11,30 +11,21 @@ public abstract class BaseDnsActivity extends Activity { protected Handler handler = new Handler(); public void clickHandler(View v) { - Intent intent = new Intent(); + Intent intent = null; /* Program button was pushed: */ if (v.getId() == R.id.main_menu_program) { - intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT - | Intent.FLAG_ACTIVITY_SINGLE_TOP); - - intent.setClass(this, EventListActivity.class); + intent = setupNewIntent(EventListActivity.class); startActivity(intent); /* Join button was pushed: */ } else if (v.getId() == R.id.main_menu_join) { - intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY - | Intent.FLAG_ACTIVITY_SINGLE_TOP); - - intent.setClass(this, JoinUsActivity.class); + intent = setupNewIntent(JoinUsActivity.class); startActivity(intent); /* The header was pushed: */ } else if (v.getId() == R.id.header) { - intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP - | Intent.FLAG_ACTIVITY_SINGLE_TOP); - - intent.setClass(this, DnsActivity.class); + intent = setupNewIntent(DnsActivity.class); startActivity(intent); } } @@ -42,4 +33,13 @@ public abstract class BaseDnsActivity extends Activity { public void doNothing(View v) { /* As promised. */ } + + protected Intent setupNewIntent(Class cl) { + Intent intent = new Intent(); + intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP + | Intent.FLAG_ACTIVITY_SINGLE_TOP); + intent.setClass(this, cl); + + return intent; + } } diff --git a/src/com/studentersamfundet/app/ui/BaseListActivity.java b/src/com/studentersamfundet/app/ui/BaseListActivity.java new file mode 100644 index 0000000..0096b4c --- /dev/null +++ b/src/com/studentersamfundet/app/ui/BaseListActivity.java @@ -0,0 +1,138 @@ +package com.studentersamfundet.app.ui; + +import java.io.IOException; + +import org.w3c.dom.NodeList; + +import com.studentersamfundet.app.DataHandler; +import com.studentersamfundet.app.Event; +import com.studentersamfundet.app.FeedFetcher; +import com.studentersamfundet.app.IRSSParser; +import com.studentersamfundet.app.R; +import com.studentersamfundet.app.RSSParserProgram; + +import android.content.Context; +import android.content.Intent; +import android.os.AsyncTask; +import android.os.Bundle; +import android.view.View; +import android.widget.ListAdapter; +import android.widget.ListView; +import android.widget.ProgressBar; +import android.widget.Toast; + +public abstract class BaseListActivity extends BaseDnsActivity { + private DataHandler dataHandler; + private FeedFetcher feed; + private IRSSParser parser; + + private boolean isUpdated = false; + + + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + /* Fetch the feed fetcher: */ + Intent i = getIntent(); + this.feed = (FeedFetcher)i.getExtras().get("feed"); + if (this.feed == null) + throw new RuntimeException("This activity must be fed a feed feeder."); + + /* Create the parser: */ + this.parser = new RSSParserProgram(); + + /* DataHandler will be set later. */ + } + + protected final DataHandler getDataHandler() { + if (!isUpdated && dataHandler == null) + throw new RuntimeException("You have to create and run list creator first!"); + + return this.dataHandler; + } + + protected abstract ListAdapter createAdapter(T[] objects); + protected abstract ListCreator getListCreator(Context c, int idList, int idProgressBar); + + protected abstract class ListCreator extends AsyncTask { + private String category = Event.ALL; + private boolean forcedUpdate = false; + + private final Context context; + private final int idList; + private final int idProgressBar; + + public ListCreator(Context context, int idList, int idProgressBar) { + this.context = context; + this.idList = idList; + this.idProgressBar = idProgressBar; + } + + protected String getCategory() { + return this.category; + } + + protected void setCategory(String category) { + this.category = category; + } + + protected boolean getForcedUpdate() { + return this.forcedUpdate; + } + + protected void setForcedUpdate(boolean forcedUpdate) { + this.forcedUpdate = forcedUpdate; + } + + @Override + protected void onPreExecute() { + if (forcedUpdate) { + dataHandler = null; + } + + ListView list = (ListView)findViewById(idList); + list.setVisibility(View.GONE); + + ProgressBar pb = (ProgressBar)findViewById(idProgressBar); + pb.setVisibility(View.VISIBLE); + } + + @Override + protected Boolean doInBackground(Void ... v) { + // Do we have intarwebs? + // YAY = Fetch the feed. + // NAY = Inform about no connection. + try { + if (dataHandler == null) { + NodeList itemNodes = feed.fetch(BaseListActivity.this, this.forcedUpdate); + dataHandler = parser.parse(itemNodes); + } + return true; + + } catch (IOException e) { + return false; + } + } + + @Override + protected void onPostExecute(Boolean result) { + isUpdated = true; + + if (result) { + ListView list = (ListView)findViewById(idList); + T[] objects = getObjects(); + ListAdapter adapter = createAdapter(objects); + list.setAdapter(adapter); + list.setVisibility(View.VISIBLE); + + ProgressBar pb = (ProgressBar)findViewById(idProgressBar); + pb.setVisibility(View.GONE); + } else { + Toast toast = Toast.makeText(context, R.string.error_noconnection_noupdate, Toast.LENGTH_LONG); + toast.show(); + } + } + + abstract protected T[] getObjects(); + } +} diff --git a/src/com/studentersamfundet/app/ui/DnsActivity.java b/src/com/studentersamfundet/app/ui/DnsActivity.java index 1c038ce..b2a89a4 100644 --- a/src/com/studentersamfundet/app/ui/DnsActivity.java +++ b/src/com/studentersamfundet/app/ui/DnsActivity.java @@ -12,10 +12,15 @@ import android.view.animation.Animation; import android.widget.TextView; import android.widget.Toast; +import com.studentersamfundet.app.FeedFetcher; import com.studentersamfundet.app.R; public class DnsActivity extends BaseDnsActivity { - String[] openingHoursHouse = { + public static final String feedURL = "http://studentersamfundet.no/rss/lars_program_feed.php"; + + private FeedFetcher feedFetcher; + + private String[] openingHoursHouse = { "10.00 - 01.00", "10.00 - 01.00", "10.00 - 01.00", @@ -24,7 +29,7 @@ public class DnsActivity extends BaseDnsActivity { "12.00 - 03.00", "12.00 - 20.00"}; - String[] openingHoursGB = { + private String[] openingHoursGB = { "13.00 - 01.00", "13.00 - 01.00", "13.00 - 01.00", @@ -33,7 +38,7 @@ public class DnsActivity extends BaseDnsActivity { "16.00 - 03.00", "Stengt"}; - String[] openingHoursBC = { + private String[] openingHoursBC = { "19.00 - 00.00", "19.00 - 00.00", "19.00 - 00.00", @@ -48,6 +53,9 @@ public class DnsActivity extends BaseDnsActivity { super.onCreate(savedInstanceState); setContentView(R.layout.main); + /* Initialize necessary variables: */ + feedFetcher = new FeedFetcher(feedURL); + /* Set opening hours: */ TextView tvNeuf = (TextView)findViewById(R.id.main_menu_hours_neuf); TextView tvBC = (TextView)findViewById(R.id.main_menu_hours_bc); @@ -138,22 +146,12 @@ public class DnsActivity extends BaseDnsActivity { } public void programButton(View v) { - Intent intent = new Intent(); - - intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT - | Intent.FLAG_ACTIVITY_SINGLE_TOP); - intent.setClass(this, EventListActivity.class); - + Intent intent = setupNewIntent(EventListActivity.class); startActivity(intent); } public void ticketButton(View v) { - Intent intent = new Intent(); - - intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT - | Intent.FLAG_ACTIVITY_SINGLE_TOP); - intent.setClass(this, EventListTicketsActivity.class); - + Intent intent = setupNewIntent(EventListTicketsActivity.class); startActivity(intent); } @@ -162,12 +160,15 @@ public class DnsActivity extends BaseDnsActivity { } public void joinButton(View v) { - Intent intent = new Intent(); - - intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); - intent.setClass(this, JoinUsActivity.class); - + Intent intent = setupNewIntent(JoinUsActivity.class); startActivity(intent); } + + protected Intent setupNewIntent(Class cl) { + Intent intent = super.setupNewIntent(cl); + intent.putExtra("feed", feedFetcher); + + return intent; + } } \ No newline at end of file diff --git a/src/com/studentersamfundet/app/ui/EventListActivity.java b/src/com/studentersamfundet/app/ui/EventListActivity.java index 561eb24..7ab8ad5 100644 --- a/src/com/studentersamfundet/app/ui/EventListActivity.java +++ b/src/com/studentersamfundet/app/ui/EventListActivity.java @@ -7,13 +7,11 @@ import java.net.MalformedURLException; import java.net.URL; import java.text.SimpleDateFormat; -import org.w3c.dom.NodeList; - import android.app.Dialog; +import android.content.Context; import android.content.Intent; import android.graphics.Bitmap; import android.graphics.BitmapFactory; -import android.os.AsyncTask; import android.os.Bundle; import android.text.Html; import android.view.LayoutInflater; @@ -26,26 +24,16 @@ import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.ImageView; import android.widget.ListAdapter; -import android.widget.ListView; -import android.widget.ProgressBar; import android.widget.TextView; import android.widget.Toast; -import com.studentersamfundet.app.DataHandler; import com.studentersamfundet.app.Event; -import com.studentersamfundet.app.FeedFetcher; import com.studentersamfundet.app.R; -import com.studentersamfundet.app.RSSParserProgram; import com.studentersamfundet.app.ui.ChooseCategoryDialog.Callback; -public class EventListActivity extends BaseDnsActivity { - public static final String feedURL = "http://studentersamfundet.no/rss/lars_program_feed.php"; +public class EventListActivity extends BaseListActivity { public static final int imageSize = 80; - protected FeedFetcher feed; - protected RSSParserProgram parser; - protected DataHandler dataHandler; - private String currentCategory = Event.ALL; @Override @@ -53,10 +41,7 @@ public class EventListActivity extends BaseDnsActivity { super.onCreate(savedInstanceState); setContentView(R.layout.event_list); - this.feed = new FeedFetcher(this, feedURL); - this.parser = new RSSParserProgram(); - - ListCreator lc = getListCreator(Event.ALL, false); + ListCreator lc = getListCreator(this, R.id.event_list, R.id.event_list_progress_bar); lc.execute(); } @@ -72,7 +57,8 @@ public class EventListActivity extends BaseDnsActivity { switch (item.getItemId()) { case R.id.menu_refresh: - ListCreator lc = getListCreator(Event.ALL, true); + ListCreator lc = getListCreator(this, R.id.event_list, R.id.event_list_progress_bar); + lc.setForcedUpdate(true); lc.execute(); return true; @@ -90,13 +76,13 @@ public class EventListActivity extends BaseDnsActivity { if (currentCategory.equals(Event.ALL)) { super.onBackPressed(); } else { - ListCreator lc = getListCreator(Event.ALL, false); + ListCreator lc = getListCreator(this, R.id.event_list, R.id.event_list_progress_bar); lc.execute(); } } - - - protected ListAdapter createAdapter(Event[] events) { + + protected ListAdapter createAdapter(T[] objects) { + Event[] events = (Event[])objects; ListAdapter adapter = new ArrayAdapter(this, R.layout.event_list_row, R.id.event_list_row_text, events) { @Override @@ -167,84 +153,30 @@ public class EventListActivity extends BaseDnsActivity { if (message.length < 1) message = new String[] { Event.ALL }; - ListCreator lc = getListCreator(message[0], false); + ListCreator lc = getListCreator(EventListActivity.this, R.id.event_list, R.id.event_list_progress_bar); + lc.setCategory(message[0]); lc.execute(); } }; - if (dataHandler != null) { - Dialog dialog = new ChooseCategoryDialog(this, callback, dataHandler.getEventCategories()); + if (getDataHandler() != null) { + Dialog dialog = new ChooseCategoryDialog(this, callback, getDataHandler().getEventCategories()); dialog.show(); } else { Toast.makeText(this, R.string.error_loading, Toast.LENGTH_SHORT); } } - protected class ListCreator extends AsyncTask { - protected String category; - protected boolean forcedUpdate; - - public ListCreator(String category, boolean forcedUpdate) { - this.category = category; - this.forcedUpdate = forcedUpdate; - } - - @Override - protected void onPreExecute() { - if (forcedUpdate) { - dataHandler = null; - } - - ListView list = (ListView)findViewById(R.id.event_list); - list.setVisibility(View.GONE); - - ProgressBar pb = (ProgressBar)findViewById(R.id.event_list_progress_bar); - pb.setVisibility(View.VISIBLE); - } - - @Override - protected Boolean doInBackground(Void ... v) { - // Do we have intarwebs? - // YAY = Fetch the feed. - // NAY = Inform about no connection. - try { - if (dataHandler == null) { - NodeList itemNodes = feed.fetch(this.forcedUpdate); - dataHandler = parser.parse(itemNodes); - } - return true; - - } catch (IOException e) { - return false; - } - } - - @Override - protected void onPostExecute(Boolean result) { - if (result) { - ListView list = (ListView)findViewById(R.id.event_list); - Event[] events = getEvents(); - ListAdapter adapter = createAdapter(events); - list.setAdapter(adapter); - list.setVisibility(View.VISIBLE); - - ProgressBar pb = (ProgressBar)findViewById(R.id.event_list_progress_bar); - pb.setVisibility(View.GONE); - - currentCategory = category; - } else { - Toast toast = Toast.makeText(EventListActivity.this, R.string.error_noconnection_noupdate, Toast.LENGTH_LONG); - toast.show(); - } - } - - protected Event[] getEvents() { - return dataHandler.getEvents(this.category); - } - } + - protected ListCreator getListCreator(String category, boolean forcedUpdate) { - return new ListCreator(category, forcedUpdate); + protected ListCreator getListCreator(Context context, int idList, int idProgressBar) { + return new ListCreator(context, idList, idProgressBar) { + + @Override + protected Event[] getObjects() { + return getDataHandler().getEvents(Event.ALL); + } + }; } protected OnClickListener getShortClickListener (final Event e) { diff --git a/src/com/studentersamfundet/app/ui/EventListTicketsActivity.java b/src/com/studentersamfundet/app/ui/EventListTicketsActivity.java index fd8f268..c727b3a 100644 --- a/src/com/studentersamfundet/app/ui/EventListTicketsActivity.java +++ b/src/com/studentersamfundet/app/ui/EventListTicketsActivity.java @@ -1,48 +1,34 @@ package com.studentersamfundet.app.ui; +import android.content.Context; import android.content.Intent; import android.net.Uri; import android.view.View; import android.view.View.OnClickListener; -import android.view.View.OnLongClickListener; import com.studentersamfundet.app.Event; public class EventListTicketsActivity extends EventListActivity { - - class TicketListCreator extends ListCreator { - public TicketListCreator(String category, boolean forcedUpdate) { - super(category, forcedUpdate); - } - - @Override - protected Event[] getEvents() { - return dataHandler.getEventsWithTickets(); - } - } - @Override - protected ListCreator getListCreator(String category, boolean forcedUpdate) { - return new TicketListCreator(category, forcedUpdate); - } - - protected OnClickListener getShortClickListener (final Event e) { - return new OnClickListener() { - public void onClick(View v) { - Uri webDestination = e.getTicketUri(); - - Intent webIntent = new Intent(Intent.ACTION_VIEW, webDestination); - startActivity(webIntent); - - } - }; - } - - protected OnLongClickListener getLongClickListener (final Event e) { - return new OnLongClickListener() { - public boolean onLongClick(View v) { - return false; - } - }; - } + protected ListCreator getListCreator(Context context, int idList, int idProgressBar) { + return new ListCreator(context, idList, idProgressBar) { + @Override + protected Event[] getObjects() { + return getDataHandler().getEventsWithTickets(); + } + }; + } + + @Override + protected OnClickListener getShortClickListener (final Event e) { + return new OnClickListener() { + public void onClick(View v) { + Uri webDestination = e.getTicketUri(); + + Intent webIntent = new Intent(Intent.ACTION_VIEW, webDestination); + startActivity(webIntent); + + } + }; + } }