diff options
-rw-r--r-- | subsonic-android/res/drawable-hdpi-v4/main_offline.png | bin | 0 -> 1405 bytes | |||
-rw-r--r-- | subsonic-android/res/layout/main_buttons.xml | 13 | ||||
-rw-r--r-- | subsonic-android/res/values/strings.xml | 3 | ||||
-rw-r--r-- | subsonic-android/src/github/daneren2005/dsub/activity/MainActivity.java | 31 | ||||
-rw-r--r-- | subsonic-android/src/github/daneren2005/dsub/util/Constants.java | 1 | ||||
-rw-r--r-- | subsonic-android/src/github/daneren2005/dsub/util/Util.java | 13 |
6 files changed, 46 insertions, 15 deletions
diff --git a/subsonic-android/res/drawable-hdpi-v4/main_offline.png b/subsonic-android/res/drawable-hdpi-v4/main_offline.png Binary files differnew file mode 100644 index 00000000..a1d27cec --- /dev/null +++ b/subsonic-android/res/drawable-hdpi-v4/main_offline.png diff --git a/subsonic-android/res/layout/main_buttons.xml b/subsonic-android/res/layout/main_buttons.xml index 48d5b53f..c5b3b43a 100644 --- a/subsonic-android/res/layout/main_buttons.xml +++ b/subsonic-android/res/layout/main_buttons.xml @@ -41,6 +41,19 @@ </LinearLayout>
</LinearLayout>
+
+ <TextView
+ android:id="@+id/main_offline"
+ android:text="@string/main.offline"
+ android:drawablePadding="12dip"
+ android:drawableLeft="@drawable/main_offline"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:textAppearance="?android:attr/textAppearanceMedium"
+ android:gravity="center_vertical"
+ android:paddingLeft="6dp"
+ android:paddingBottom="4dp"
+ android:minHeight="50dip"/>
<TextView
android:id="@+id/main_albums"
diff --git a/subsonic-android/res/values/strings.xml b/subsonic-android/res/values/strings.xml index 264bf973..5b0e5a76 100644 --- a/subsonic-android/res/values/strings.xml +++ b/subsonic-android/res/values/strings.xml @@ -29,7 +29,8 @@ set up your personal server (available from <b>subsonic.org</b>), please go to <b>Settings</b> and change the configuration to connect to it.</string>
<string name="main.select_server">Select server</string>
<string name="main.shuffle">Shuffle play</string>
- <string name="main.offline">Offline</string>
+ <string name="main.offline">Go Offline</string>
+ <string name="main.online">Go Online</string>
<string name="main.settings">Settings</string>
<string name="main.albums_title">Albums</string>
<string name="main.albums_newest">Recently added</string>
diff --git a/subsonic-android/src/github/daneren2005/dsub/activity/MainActivity.java b/subsonic-android/src/github/daneren2005/dsub/activity/MainActivity.java index 82f51057..4da6d689 100644 --- a/subsonic-android/src/github/daneren2005/dsub/activity/MainActivity.java +++ b/subsonic-android/src/github/daneren2005/dsub/activity/MainActivity.java @@ -51,7 +51,6 @@ public class MainActivity extends SubsonicTabActivity { private static final int MENU_ITEM_SERVER_1 = 101; private static final int MENU_ITEM_SERVER_2 = 102; private static final int MENU_ITEM_SERVER_3 = 103; - private static final int MENU_ITEM_OFFLINE = 104; private static boolean infoDialogDisplayed; @@ -72,6 +71,8 @@ public class MainActivity extends SubsonicTabActivity { final View serverButton = buttons.findViewById(R.id.main_select_server); final TextView serverTextView = (TextView) serverButton.findViewById(R.id.main_select_server_2); + final TextView offlineButton = (TextView) buttons.findViewById(R.id.main_offline); + offlineButton.setText(Util.isOffline(this) ? R.string.main_online : R.string.main_offline); final View albumsTitle = buttons.findViewById(R.id.main_albums); final View albumsNewestButton = buttons.findViewById(R.id.main_albums_newest); @@ -90,7 +91,10 @@ public class MainActivity extends SubsonicTabActivity { ListView list = (ListView) findViewById(R.id.main_list); MergeAdapter adapter = new MergeAdapter(); - adapter.addViews(Arrays.asList(serverButton), true); + if (!Util.isOffline(this)) { + adapter.addViews(Arrays.asList(serverButton), true); + } + adapter.addView(offlineButton, true); if (!Util.isOffline(this)) { adapter.addView(albumsTitle, false); adapter.addViews(Arrays.asList(albumsNewestButton, albumsRandomButton, albumsHighestButton, albumsStarredButton, albumsRecentButton, albumsFrequentButton), true); @@ -103,7 +107,9 @@ public class MainActivity extends SubsonicTabActivity { public void onItemClick(AdapterView<?> parent, View view, int position, long id) { if (view == serverButton) { dummyView.showContextMenu(); - } else if (view == albumsNewestButton) { + } else if (view == offlineButton) { + toggleOffline(); + } else if (view == albumsNewestButton) { showAlbumList("newest"); } else if (view == albumsRandomButton) { showAlbumList("random"); @@ -168,6 +174,13 @@ public class MainActivity extends SubsonicTabActivity { editor.putString(Constants.PREFERENCES_KEY_CACHE_LOCATION, FileUtil.getDefaultMusicDirectory().getPath()); editor.commit(); } + + if (!prefs.contains(Constants.PREFERENCES_KEY_OFFLINE)) { + SharedPreferences.Editor editor = prefs.edit(); + editor.putBoolean(Constants.PREFERENCES_KEY_OFFLINE, false); + editor.putInt(Constants.PREFERENCES_KEY_SERVER_INSTANCE, 1); + editor.commit(); + } } @Override @@ -182,14 +195,10 @@ public class MainActivity extends SubsonicTabActivity { android.view.MenuItem menuItem1 = menu.add(MENU_GROUP_SERVER, MENU_ITEM_SERVER_1, MENU_ITEM_SERVER_1, Util.getServerName(this, 1)); android.view.MenuItem menuItem2 = menu.add(MENU_GROUP_SERVER, MENU_ITEM_SERVER_2, MENU_ITEM_SERVER_2, Util.getServerName(this, 2)); android.view.MenuItem menuItem3 = menu.add(MENU_GROUP_SERVER, MENU_ITEM_SERVER_3, MENU_ITEM_SERVER_3, Util.getServerName(this, 3)); - android.view.MenuItem menuItem4 = menu.add(MENU_GROUP_SERVER, MENU_ITEM_OFFLINE, MENU_ITEM_OFFLINE, Util.getServerName(this, 0)); menu.setGroupCheckable(MENU_GROUP_SERVER, true, true); menu.setHeaderTitle(R.string.main_select_server); switch (Util.getActiveServer(this)) { - case 0: - menuItem4.setChecked(true); - break; case 1: menuItem1.setChecked(true); break; @@ -205,9 +214,6 @@ public class MainActivity extends SubsonicTabActivity { @Override public boolean onContextItemSelected(android.view.MenuItem menuItem) { switch (menuItem.getItemId()) { - case MENU_ITEM_OFFLINE: - setActiveServer(0); - break; case MENU_ITEM_SERVER_1: setActiveServer(1); break; @@ -257,4 +263,9 @@ public class MainActivity extends SubsonicTabActivity { intent.putExtra(Constants.INTENT_EXTRA_NAME_ALBUM_LIST_OFFSET, 0); Util.startActivityWithoutTransition(this, intent); } + + private void toggleOffline() { + Util.setOffline(this, !Util.isOffline(this)); + restart(); + } }
\ No newline at end of file diff --git a/subsonic-android/src/github/daneren2005/dsub/util/Constants.java b/subsonic-android/src/github/daneren2005/dsub/util/Constants.java index a761614f..2d67d3c9 100644 --- a/subsonic-android/src/github/daneren2005/dsub/util/Constants.java +++ b/subsonic-android/src/github/daneren2005/dsub/util/Constants.java @@ -78,6 +78,7 @@ public final class Constants { public static final String PREFERENCES_KEY_RANDOM_SIZE = "randomSize"; public static final String PREFERENCES_KEY_SLEEP_TIMER = "sleepTimer"; public static final String PREFERENCES_KEY_SLEEP_TIMER_DURATION = "sleepTimerDuration"; + public static final String PREFERENCES_KEY_OFFLINE = "offline"; // Name of the preferences file. public static final String PREFERENCES_FILE_NAME = "github.daneren2005.dsub_preferences"; diff --git a/subsonic-android/src/github/daneren2005/dsub/util/Util.java b/subsonic-android/src/github/daneren2005/dsub/util/Util.java index f4a3dc4c..b6ad69bb 100644 --- a/subsonic-android/src/github/daneren2005/dsub/util/Util.java +++ b/subsonic-android/src/github/daneren2005/dsub/util/Util.java @@ -112,8 +112,16 @@ public final class Util { } public static boolean isOffline(Context context) { - return getActiveServer(context) == 0; + SharedPreferences prefs = getPreferences(context); + return prefs.getBoolean(Constants.PREFERENCES_KEY_OFFLINE, false); } + + public static void setOffline(Context context, boolean offline) { + SharedPreferences prefs = getPreferences(context); + SharedPreferences.Editor editor = prefs.edit(); + editor.putBoolean(Constants.PREFERENCES_KEY_OFFLINE, offline); + editor.commit(); + } public static boolean isScreenLitOnDownload(Context context) { SharedPreferences prefs = getPreferences(context); @@ -153,9 +161,6 @@ public final class Util { } public static String getServerName(Context context, int instance) { - if (instance == 0) { - return context.getResources().getString(R.string.main_offline); - } SharedPreferences prefs = getPreferences(context); return prefs.getString(Constants.PREFERENCES_KEY_SERVER_NAME + instance, null); } |