diff --git a/res/layout/menu.xml b/res/layout/menu.xml new file mode 100644 index 0000000..b001962 --- /dev/null +++ b/res/layout/menu.xml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/res/values/strings.xml b/res/values/strings.xml index 1183b41..221b9a1 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -7,4 +7,5 @@ Ingen nettilkobling. Du må være tilkoblet nettet for å se programmet. Ingen nettilkobling. Programmet er altså ikke oppdatert. Booke band, tappe øl eller lede politiske debatter? Du vil garantert finne noe av interesse hvis du har lyst til å bli aktiv i en av de mange foreningene som driver DNS. Her lærer vi alt du ikke hører om på forelesningene. Praktisk erfaring og utfordringer som kan være gull verdt når den voksne verden en gang banker på døren.\n\nHva vil du huske fra studietiden? Lesesalen? Pensum? Eksamensnerver? Det er nå du har sjansen til å skape minnene som varer hele livet. Venner, fester, gallamiddager og nach så lenge du orker.\n\n “Vi gir deg minnene fra studietiden du aldri vil glemme.”\n\nTa kontakt på blimed@studentersamfundet.no for mer informasjon! + Refresh diff --git a/src/com/studentersamfundet/app/FeedFetcher.java b/src/com/studentersamfundet/app/FeedFetcher.java index 72dec3b..0862162 100644 --- a/src/com/studentersamfundet/app/FeedFetcher.java +++ b/src/com/studentersamfundet/app/FeedFetcher.java @@ -55,19 +55,19 @@ public class FeedFetcher { /** * Fetches list of events from the web. - * @param URL String containing address to the rss-feed. - * @param c Context from which this function is called. + * @param forcedUpdate specifies if we HAVE TO update local file, or let + * the function decide. * @return Returns list of events as a XML NodeList * @throws IOException Is thrown if the app cannot download the file from * the internet and there is no local copy. */ - public NodeList fetch() throws IOException { + public NodeList fetch(boolean forcedUpdate) throws IOException { InputStream in = null; NodeList itemNodes = null; /* Update the local file if possible. */ try { - if (doesFileNeedUpdate(context)) { + if (forcedUpdate || doesFileNeedUpdate(context)) { in = openHttpConnection(); saveFile(in, context); } diff --git a/src/com/studentersamfundet/app/ui/ProgramListActivity.java b/src/com/studentersamfundet/app/ui/ProgramListActivity.java index 09c3b0e..5c5d833 100644 --- a/src/com/studentersamfundet/app/ui/ProgramListActivity.java +++ b/src/com/studentersamfundet/app/ui/ProgramListActivity.java @@ -8,6 +8,9 @@ import android.content.Intent; import android.os.Bundle; import android.text.Html; import android.view.LayoutInflater; +import android.view.Menu; +import android.view.MenuInflater; +import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.view.View.OnClickListener; @@ -38,11 +41,34 @@ public class ProgramListActivity extends BaseDnsActivity { this.feed = new FeedFetcher(this, feedURL); this.parser = new XmlParser(); - // Do we have intarwebs? + createList(false); + } + + @Override + public boolean onCreateOptionsMenu(Menu menu) { + MenuInflater inflater = getMenuInflater(); + inflater.inflate(R.layout.menu, menu); + return true; + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + + switch (item.getItemId()) { + case R.id.menu_refresh: + this.createList(true); + return true; + default: + return super.onOptionsItemSelected(item); + } + } + + protected void createList(boolean forcedUpdate) { + // Do we have intarwebs? // YAY = Fetch the feed. // NAY = Inform about no connection. try { - NodeList itemNodes = feed.fetch(); + NodeList itemNodes = feed.fetch(forcedUpdate); dataHandler = parser.parse(itemNodes); } catch (IOException e) {