diff --git a/AndroidManifest.xml b/AndroidManifest.xml index e90338a..cceda87 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -3,7 +3,7 @@ package="com.lsiegert" android:versionCode="1" android:versionName="1.0"> - + diff --git a/assets/NUHockey.sqlite b/assets/NUHockey.sqlite index 730b8d4..82c17ab 100644 Binary files a/assets/NUHockey.sqlite and b/assets/NUHockey.sqlite differ diff --git a/bin/NUHockey.apk b/bin/NUHockey.apk index cd8750d..15b8fda 100644 Binary files a/bin/NUHockey.apk and b/bin/NUHockey.apk differ diff --git a/bin/classes.dex b/bin/classes.dex index b68e753..eed61f3 100644 Binary files a/bin/classes.dex and b/bin/classes.dex differ diff --git a/bin/com/lsiegert/DatabaseHelper.class b/bin/com/lsiegert/DatabaseHelper.class index ecde326..05b3fdf 100644 Binary files a/bin/com/lsiegert/DatabaseHelper.class and b/bin/com/lsiegert/DatabaseHelper.class differ diff --git a/bin/com/lsiegert/NUHockey.class b/bin/com/lsiegert/NUHockey.class index 3ca419c..b637c16 100644 Binary files a/bin/com/lsiegert/NUHockey.class and b/bin/com/lsiegert/NUHockey.class differ diff --git a/bin/com/lsiegert/R$drawable.class b/bin/com/lsiegert/R$drawable.class index 1adfb03..8f074df 100644 Binary files a/bin/com/lsiegert/R$drawable.class and b/bin/com/lsiegert/R$drawable.class differ diff --git a/bin/com/lsiegert/R$id.class b/bin/com/lsiegert/R$id.class index ed098fb..2a3ecb7 100644 Binary files a/bin/com/lsiegert/R$id.class and b/bin/com/lsiegert/R$id.class differ diff --git a/bin/com/lsiegert/R$layout.class b/bin/com/lsiegert/R$layout.class index c2e6166..2b84143 100644 Binary files a/bin/com/lsiegert/R$layout.class and b/bin/com/lsiegert/R$layout.class differ diff --git a/bin/com/lsiegert/R$string.class b/bin/com/lsiegert/R$string.class index f559f7a..4cbe1dc 100644 Binary files a/bin/com/lsiegert/R$string.class and b/bin/com/lsiegert/R$string.class differ diff --git a/bin/com/lsiegert/RSSActivity.class b/bin/com/lsiegert/RSSActivity.class index 50fb947..3680ba3 100644 Binary files a/bin/com/lsiegert/RSSActivity.class and b/bin/com/lsiegert/RSSActivity.class differ diff --git a/bin/com/lsiegert/RosterActivity.class b/bin/com/lsiegert/RosterActivity.class index fdb51c8..168f0ca 100644 Binary files a/bin/com/lsiegert/RosterActivity.class and b/bin/com/lsiegert/RosterActivity.class differ diff --git a/bin/com/lsiegert/RosterAdapter.class b/bin/com/lsiegert/RosterAdapter.class index 6813ae6..96ef654 100644 Binary files a/bin/com/lsiegert/RosterAdapter.class and b/bin/com/lsiegert/RosterAdapter.class differ diff --git a/bin/com/lsiegert/ScheduleActivity.class b/bin/com/lsiegert/ScheduleActivity.class index e121fc4..dddfc65 100644 Binary files a/bin/com/lsiegert/ScheduleActivity.class and b/bin/com/lsiegert/ScheduleActivity.class differ diff --git a/bin/com/lsiegert/ScheduleAdapter.class b/bin/com/lsiegert/ScheduleAdapter.class index b8d57ff..82d4753 100644 Binary files a/bin/com/lsiegert/ScheduleAdapter.class and b/bin/com/lsiegert/ScheduleAdapter.class differ diff --git a/bin/com/lsiegert/StatsActivity.class b/bin/com/lsiegert/StatsActivity.class index 165478f..51c22c2 100644 Binary files a/bin/com/lsiegert/StatsActivity.class and b/bin/com/lsiegert/StatsActivity.class differ diff --git a/bin/resources.ap_ b/bin/resources.ap_ index 8323ebc..2b106b2 100644 Binary files a/bin/resources.ap_ and b/bin/resources.ap_ differ diff --git a/gen/com/lsiegert/R.java b/gen/com/lsiegert/R.java index dfb31d0..e7694af 100644 --- a/gen/com/lsiegert/R.java +++ b/gen/com/lsiegert/R.java @@ -14,47 +14,55 @@ public static final class drawable { public static final int ic_tab_artists_grey=0x7f020000; public static final int ic_tab_artists_white=0x7f020001; public static final int ic_tab_roster=0x7f020002; - public static final int ic_tab_rss=0x7f020003; - public static final int ic_tab_schedule=0x7f020004; - public static final int ic_tab_stats=0x7f020005; - public static final int icon=0x7f020006; + public static final int ic_tab_roster_grey=0x7f020003; + public static final int ic_tab_roster_white=0x7f020004; + public static final int ic_tab_rss=0x7f020005; + public static final int ic_tab_rss_gray=0x7f020006; + public static final int ic_tab_rss_grey=0x7f020007; + public static final int ic_tab_rss_white=0x7f020008; + public static final int ic_tab_schedule=0x7f020009; + public static final int ic_tab_stats=0x7f02000a; + public static final int icon=0x7f02000b; + public static final int icon_terrible=0x7f02000c; } public static final class id { - public static final int RosterListView=0x7f050001; - public static final int ScheduleListView=0x7f050009; - public static final int StatsListView=0x7f05000e; - public static final int TextView01=0x7f050008; - public static final int attended=0x7f05000d; - public static final int date=0x7f05000a; - public static final int hometown=0x7f050007; + public static final int RosterListView=0x7f050002; + public static final int ScheduleListView=0x7f05000a; + public static final int StatsListView=0x7f050010; + public static final int TextView01=0x7f050009; + public static final int attended=0x7f05000f; + public static final int date=0x7f05000c; + public static final int hometown=0x7f050008; public static final int list_header_title=0x7f050000; - public static final int name=0x7f050004; - public static final int number=0x7f050003; - public static final int opponent=0x7f05000b; - public static final int position=0x7f050005; - public static final int score=0x7f05000c; - public static final int widget29=0x7f050002; - public static final int year=0x7f050006; + public static final int list_item_title=0x7f050001; + public static final int name=0x7f050005; + public static final int number=0x7f050004; + public static final int opponent=0x7f05000d; + public static final int position=0x7f050006; + public static final int score=0x7f05000e; + public static final int widget2=0x7f050003; + public static final int widget29=0x7f05000b; + public static final int year=0x7f050007; } public static final class layout { public static final int list_header=0x7f030000; - public static final int main=0x7f030001; - public static final int roster=0x7f030002; - public static final int roster_row=0x7f030003; - public static final int rss=0x7f030004; - public static final int rss_row=0x7f030005; - public static final int schedule=0x7f030006; - public static final int schedule_row=0x7f030007; - public static final int stats=0x7f030008; + public static final int list_item=0x7f030001; + public static final int main=0x7f030002; + public static final int roster=0x7f030003; + public static final int roster_row=0x7f030004; + public static final int rss=0x7f030005; + public static final int rss_row=0x7f030006; + public static final int schedule=0x7f030007; + public static final int schedule_row=0x7f030008; + public static final int stats=0x7f030009; } public static final class string { - public static final int app_name=0x7f040001; - public static final int databaseVersion=0x7f040007; - public static final int hello=0x7f040000; - public static final int roster=0x7f040002; - public static final int rss=0x7f040004; - public static final int schedule=0x7f040003; - public static final int season_prompt=0x7f040006; - public static final int stats=0x7f040005; + public static final int app_name=0x7f040000; + public static final int databaseVersion=0x7f040006; + public static final int roster=0x7f040001; + public static final int rss=0x7f040003; + public static final int schedule=0x7f040002; + public static final int season_prompt=0x7f040005; + public static final int stats=0x7f040004; } } diff --git a/res/drawable/ic_tab_roster.xml b/res/drawable/ic_tab_roster.xml index ebb714b..1e47a0c 100644 --- a/res/drawable/ic_tab_roster.xml +++ b/res/drawable/ic_tab_roster.xml @@ -1,8 +1,8 @@ - - + \ No newline at end of file diff --git a/res/drawable/ic_tab_roster_grey.png b/res/drawable/ic_tab_roster_grey.png new file mode 100644 index 0000000..cbd360e Binary files /dev/null and b/res/drawable/ic_tab_roster_grey.png differ diff --git a/res/drawable/ic_tab_roster_white.png b/res/drawable/ic_tab_roster_white.png new file mode 100644 index 0000000..cb872a1 Binary files /dev/null and b/res/drawable/ic_tab_roster_white.png differ diff --git a/res/drawable/ic_tab_rss.xml b/res/drawable/ic_tab_rss.xml index ebb714b..86d8f0b 100644 --- a/res/drawable/ic_tab_rss.xml +++ b/res/drawable/ic_tab_rss.xml @@ -1,8 +1,8 @@ - - + \ No newline at end of file diff --git a/res/drawable/ic_tab_rss_gray.png b/res/drawable/ic_tab_rss_gray.png new file mode 100644 index 0000000..91523db Binary files /dev/null and b/res/drawable/ic_tab_rss_gray.png differ diff --git a/res/drawable/ic_tab_rss_grey.png b/res/drawable/ic_tab_rss_grey.png new file mode 100644 index 0000000..91523db Binary files /dev/null and b/res/drawable/ic_tab_rss_grey.png differ diff --git a/res/drawable/ic_tab_rss_white.png b/res/drawable/ic_tab_rss_white.png new file mode 100644 index 0000000..7cab681 Binary files /dev/null and b/res/drawable/ic_tab_rss_white.png differ diff --git a/res/drawable/icon_terrible.png b/res/drawable/icon_terrible.png new file mode 100644 index 0000000..81d968d Binary files /dev/null and b/res/drawable/icon_terrible.png differ diff --git a/res/layout/list_header.xml b/res/layout/list_header.xml index 8d3ba6f..52342a8 100644 --- a/res/layout/list_header.xml +++ b/res/layout/list_header.xml @@ -6,5 +6,6 @@ android:layout_height="wrap_content" android:paddingTop="2dip" android:paddingBottom="2dip" - android:paddingLeft="5dip" - style="?android:attr/listSeparatorTextViewStyle" /> \ No newline at end of file + android:paddingLeft="5dip" + style="?android:attr/listSeparatorTextViewStyle" + android:textAppearance="?android:attr/textAppearanceLarge" /> \ No newline at end of file diff --git a/res/layout/list_item.xml b/res/layout/list_item.xml new file mode 100644 index 0000000..f2f1ece --- /dev/null +++ b/res/layout/list_item.xml @@ -0,0 +1,11 @@ + + \ No newline at end of file diff --git a/res/layout/roster.xml b/res/layout/roster.xml index f1b153c..ae2f020 100644 --- a/res/layout/roster.xml +++ b/res/layout/roster.xml @@ -1,9 +1,7 @@ - - - \ No newline at end of file + + \ No newline at end of file diff --git a/res/layout/roster_row.xml b/res/layout/roster_row.xml index 9b05a23..9a3dcce 100644 --- a/res/layout/roster_row.xml +++ b/res/layout/roster_row.xml @@ -1,56 +1,55 @@ - - \ No newline at end of file + \ No newline at end of file diff --git a/res/layout/rss_row.xml b/res/layout/rss_row.xml index ba071a7..d4b2f78 100644 --- a/res/layout/rss_row.xml +++ b/res/layout/rss_row.xml @@ -1,5 +1,5 @@ + android:layout_height="wrap_content" + android:textAppearance="?android:attr/textAppearanceMedium"/> diff --git a/res/values/strings.xml b/res/values/strings.xml index 4e989db..a5ffb60 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -1,11 +1,10 @@ - Hello World, NUHockey! Northeastern Hockey Roster Schedule RSS Your Stats Select a season - 2 + 3 diff --git a/src/com/lsiegert/DatabaseHelper.java b/src/com/lsiegert/DatabaseHelper.java index 6a23934..631eccf 100644 --- a/src/com/lsiegert/DatabaseHelper.java +++ b/src/com/lsiegert/DatabaseHelper.java @@ -29,8 +29,7 @@ public class DatabaseHelper extends SQLiteOpenHelper{ * @param context */ public DatabaseHelper(Context context) { - - super(context, DB_NAME, null, 1); + super(context, DB_NAME, null, R.string.databaseVersion); this.myContext = context; } @@ -42,7 +41,7 @@ public void createDatabase() throws IOException{ boolean dbExists = checkDatabase(); SQLiteDatabase db_Read = null; - if(dbExists){ + if(false){ //do nothing - database already exists }else{ db_Read = this.getReadableDatabase(); @@ -145,7 +144,7 @@ public Cursor getGamesBySeason(String season) { return myDb.query("Games", null, "season = ?", new String[]{season}, null, null, "date"); } - // W-L-T record across games the user has attended + // W-L-T record across all games the user has attended public String getRecord() { String wins = "select _id from Games where nuscore > oppscore and attended=1"; String losses = "select _id from Games where nuscore < oppscore and attended=1"; @@ -156,9 +155,43 @@ public String getRecord() { return w + "-" + l + "-" + t; } - // total number of goals in games the user has attended - public int getTotalGoalsSeen() { - Cursor goals = myDb.rawQuery("select sum(nuscore) from Games where attended=1", null); - return goals.getInt(0); + // W-L-T record across games the user has attended, by location + public String getRecordByLocation(String location){ + String wins = "select _id from Games where nuscore > oppscore and attended=1 and location=?"; + String losses = "select _id from Games where nuscore < oppscore and attended=1 and location=?"; + String ties = "select _id from Games where nuscore = oppscore and attended=1 and location=?"; + String[] args = new String[]{location}; + int w = myDb.rawQuery(wins, args).getCount(); + int l = myDb.rawQuery(losses, args).getCount(); + int t = myDb.rawQuery(ties, args).getCount(); + return w + "-" + l + "-" + t; + } + + public int getNumOfTeams() { + String query = "select distinct opponent from Games where attended=1"; + return myDb.rawQuery(query, null).getCount(); + } + + public int getNumOfGoals() { + String query = "select nuscore from Games where attended=1"; + Cursor allGoals = myDb.rawQuery(query, null); + allGoals.moveToFirst(); + int totalGoals = 0; + while (!allGoals.isAfterLast()) { + totalGoals = totalGoals + allGoals.getInt(0); + allGoals.moveToNext(); + } + return totalGoals; + } + + public int getNumOfShutouts() { + String query = "select _id from Games where attended=1 and oppscore=0"; + return myDb.rawQuery(query, null).getCount(); + } + + public int getNumOfWinsAtAgganis() { + String query ="select _id from Games where attended=1 and " + + "nuscore>oppscore and opponent='boston university' and location='away'"; + return myDb.rawQuery(query, null).getCount(); } } \ No newline at end of file diff --git a/src/com/lsiegert/ScheduleActivity.java b/src/com/lsiegert/ScheduleActivity.java index 8f3ef2f..eec2b9c 100644 --- a/src/com/lsiegert/ScheduleActivity.java +++ b/src/com/lsiegert/ScheduleActivity.java @@ -25,11 +25,13 @@ public void onCreate(Bundle savedInstanceState) { SeparatedListAdapter adapter = new SeparatedListAdapter(this); Cursor seasons = dbHelper.getAllSeasons(); + startManagingCursor(seasons); seasons.moveToFirst(); while (!seasons.isAfterLast()) { String season = seasons.getString(0); Cursor games = dbHelper.getGamesBySeason(season); + startManagingCursor(games); ScheduleAdapter scheduleAdapter = new ScheduleAdapter(this, R.layout.schedule_row, games, null, null, dbHelper); adapter.addSection(season, scheduleAdapter); seasons.moveToNext(); @@ -37,6 +39,4 @@ public void onCreate(Bundle savedInstanceState) { setListAdapter(adapter); } - - } \ No newline at end of file diff --git a/src/com/lsiegert/ScheduleAdapter.java b/src/com/lsiegert/ScheduleAdapter.java index f981ab6..31f1f07 100644 --- a/src/com/lsiegert/ScheduleAdapter.java +++ b/src/com/lsiegert/ScheduleAdapter.java @@ -3,6 +3,7 @@ import android.content.ContentValues; import android.content.Context; import android.database.Cursor; +import android.graphics.Color; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -62,7 +63,17 @@ else if (location.contains("away")) { } TextView gameScore = (TextView) convertView.findViewById(R.id.score); - gameScore.setText(games.getString(4) + "-" + games.getString(5)); + int nuscore = games.getInt(4); + int oppscore = games.getInt(5); + + gameScore.setText(nuscore + "-" + oppscore); + if (nuscore > oppscore) { + gameScore.setTextColor(Color.GREEN); + } + else if (nuscore < oppscore) { + gameScore.setTextColor(Color.RED); + } + else { gameScore.setTextColor(Color.WHITE); } CheckBox checkBox = (CheckBox) convertView.findViewById(R.id.attended); checkBox.setTag(Integer.parseInt(this.games.getString(this.games.getColumnIndex("_id")))); diff --git a/src/com/lsiegert/StatsActivity.java b/src/com/lsiegert/StatsActivity.java index 30db0ad..c5280c7 100644 --- a/src/com/lsiegert/StatsActivity.java +++ b/src/com/lsiegert/StatsActivity.java @@ -1,32 +1,65 @@ package com.lsiegert; -import android.app.Activity; -import android.database.SQLException; +import java.util.HashMap; +import java.util.Map; + +import android.app.ListActivity; import android.os.Bundle; -import android.widget.TextView; +import android.widget.ArrayAdapter; +import android.widget.ListView; -public class StatsActivity extends Activity { - private DatabaseHelper myDbHelper; - private TextView textview; +public class StatsActivity extends ListActivity { + private DatabaseHelper dbHelper = null; + private ListView listView = null; - public void onCreate(Bundle savedInstanceState) { + @Override + public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - myDbHelper = new DatabaseHelper(this); - - textview = new TextView(this); - setContentView(textview); - - try { - myDbHelper.openDatabase(); - } catch(SQLException sqle){ - throw sqle; - } + + listView = getListView(); + + if (dbHelper == null) { + dbHelper = new DatabaseHelper(this); + } + + dbHelper.openDatabase(); } + + public final static String ITEM_TITLE = "title"; + public final static String ITEM_CAPTION = "caption"; + + public Map createItem(String title, String caption) { + Map item = new HashMap(); + item.put(ITEM_TITLE, title); + item.put(ITEM_CAPTION, caption); + return item; + } public void onResume() { super.onResume(); - String record = myDbHelper.getRecord(); - - textview.setText(record); + String record = dbHelper.getRecord(); + String homeRecord = dbHelper.getRecordByLocation("home"); + String awayRecord = dbHelper.getRecordByLocation("away"); + String neutralRecord = dbHelper.getRecordByLocation("neutral"); + int winsAtAgganis = dbHelper.getNumOfWinsAtAgganis(); + int numTeams = dbHelper.getNumOfTeams(); + int goals = dbHelper.getNumOfGoals(); + int shutouts = dbHelper.getNumOfShutouts(); + + // create our list and custom adapter + SeparatedListAdapter adapter = new SeparatedListAdapter(this); + adapter.addSection("Records", new ArrayAdapter(this, + R.layout.list_item, new String[] { "Overall: " + record, + "Home: " + homeRecord, + "Away: " + awayRecord, + "Neutral: " + neutralRecord})); + + adapter.addSection("Statistics", new ArrayAdapter(this, + R.layout.list_item, new String[] { "Goals: " + goals, + "Shutouts: " + shutouts, + "Opponents: " + numTeams, + "Wins at agganis: " + winsAtAgganis})); + + setListAdapter(adapter); } } \ No newline at end of file