From bccf1b44f6c7e5e5db48ebb3c7ba3a1f601d1518 Mon Sep 17 00:00:00 2001 From: Scott Jackson Date: Mon, 13 Jan 2014 18:59:39 -0800 Subject: Fix clearing background download notification --- src/github/daneren2005/dsub/service/DownloadServiceImpl.java | 1 + 1 file changed, 1 insertion(+) (limited to 'src') diff --git a/src/github/daneren2005/dsub/service/DownloadServiceImpl.java b/src/github/daneren2005/dsub/service/DownloadServiceImpl.java index 90713466..30a230ac 100644 --- a/src/github/daneren2005/dsub/service/DownloadServiceImpl.java +++ b/src/github/daneren2005/dsub/service/DownloadServiceImpl.java @@ -498,6 +498,7 @@ public class DownloadServiceImpl extends Service implements DownloadService { currentDownloading = null; } backgroundDownloadList.clear(); + Util.hideDownloadingNotification(this); } @Override -- cgit v1.2.3 From e0cb5de9f0c164f79254eb289d22bfb3d2a35d20 Mon Sep 17 00:00:00 2001 From: Mark Adamson Date: Tue, 14 Jan 2014 22:40:01 +0000 Subject: Added optional "local network SSID" to server settings --- AndroidManifest.xml | 1 + res/values/strings.xml | 3 ++- .../daneren2005/dsub/activity/SettingsActivity.java | 8 ++++++++ src/github/daneren2005/dsub/util/Constants.java | 1 + src/github/daneren2005/dsub/util/Util.java | 16 +++++++++++++++- 5 files changed, 27 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 5f97baaa..0a7dabbf 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -26,6 +26,7 @@ + Unused Name Server address - Internal network address + Local network + Local network address Username Password Open in browser diff --git a/src/github/daneren2005/dsub/activity/SettingsActivity.java b/src/github/daneren2005/dsub/activity/SettingsActivity.java index a1a58758..d72430e5 100644 --- a/src/github/daneren2005/dsub/activity/SettingsActivity.java +++ b/src/github/daneren2005/dsub/activity/SettingsActivity.java @@ -322,6 +322,10 @@ public class SettingsActivity extends PreferenceActivity implements SharedPrefer serverUrlPreference.setSummary(serverUrlPreference.getText()); screen.setSummary(serverUrlPreference.getText()); + + final EditTextPreference serverLocalNetworkSSIDPreference = new EditTextPreference(this); + serverLocalNetworkSSIDPreference.setKey(Constants.PREFERENCES_KEY_SERVER_LOCAL_NETWORK_SSID + instance); + serverLocalNetworkSSIDPreference.setTitle(R.string.settings_server_local_network_ssid); final EditTextPreference serverInternalUrlPreference = new EditTextPreference(this); serverInternalUrlPreference.setKey(Constants.PREFERENCES_KEY_SERVER_INTERNAL_URL + instance); @@ -402,6 +406,7 @@ public class SettingsActivity extends PreferenceActivity implements SharedPrefer screen.addPreference(serverNamePreference); screen.addPreference(serverUrlPreference); + screen.addPreference(serverLocalNetworkSSIDPreference); screen.addPreference(serverInternalUrlPreference); screen.addPreference(serverUsernamePreference); screen.addPreference(serverPasswordPreference); @@ -533,6 +538,7 @@ public class SettingsActivity extends PreferenceActivity implements SharedPrefer private class ServerSettings { private EditTextPreference serverName; private EditTextPreference serverUrl; + private EditTextPreference serverLocalNetworkSSID; private EditTextPreference serverInternalUrl; private EditTextPreference username; private PreferenceScreen screen; @@ -542,6 +548,7 @@ public class SettingsActivity extends PreferenceActivity implements SharedPrefer screen = (PreferenceScreen) findPreference("server" + instance); serverName = (EditTextPreference) findPreference(Constants.PREFERENCES_KEY_SERVER_NAME + instance); serverUrl = (EditTextPreference) findPreference(Constants.PREFERENCES_KEY_SERVER_URL + instance); + serverLocalNetworkSSID = (EditTextPreference) findPreference(Constants.PREFERENCES_KEY_SERVER_LOCAL_NETWORK_SSID + instance); serverInternalUrl = (EditTextPreference) findPreference(Constants.PREFERENCES_KEY_SERVER_INTERNAL_URL + instance); username = (EditTextPreference) findPreference(Constants.PREFERENCES_KEY_USERNAME + instance); @@ -594,6 +601,7 @@ public class SettingsActivity extends PreferenceActivity implements SharedPrefer public void update() { serverName.setSummary(serverName.getText()); serverUrl.setSummary(serverUrl.getText()); + serverLocalNetworkSSID.setSummary(serverLocalNetworkSSID.getText()); serverInternalUrl.setSummary(serverInternalUrl.getText()); username.setSummary(username.getText()); screen.setSummary(serverUrl.getText()); diff --git a/src/github/daneren2005/dsub/util/Constants.java b/src/github/daneren2005/dsub/util/Constants.java index 6eb859a8..1e56fbd4 100644 --- a/src/github/daneren2005/dsub/util/Constants.java +++ b/src/github/daneren2005/dsub/util/Constants.java @@ -77,6 +77,7 @@ public final class Constants { public static final String PREFERENCES_KEY_SERVER_NAME = "serverName"; public static final String PREFERENCES_KEY_SERVER_URL = "serverUrl"; public static final String PREFERENCES_KEY_SERVER_INTERNAL_URL = "serverInternalUrl"; + public static final String PREFERENCES_KEY_SERVER_LOCAL_NETWORK_SSID = "serverLocalNetworkSSID"; public static final String PREFERENCES_KEY_SERVER_VERSION = "serverVersion"; public static final String PREFERENCES_KEY_TEST_CONNECTION = "serverTestConnection"; public static final String PREFERENCES_KEY_OPEN_BROWSER = "openBrowser"; diff --git a/src/github/daneren2005/dsub/util/Util.java b/src/github/daneren2005/dsub/util/Util.java index 51e64686..a6c416ca 100644 --- a/src/github/daneren2005/dsub/util/Util.java +++ b/src/github/daneren2005/dsub/util/Util.java @@ -38,6 +38,7 @@ import android.media.AudioManager; import android.media.AudioManager.OnAudioFocusChangeListener; import android.net.ConnectivityManager; import android.net.NetworkInfo; +import android.net.wifi.WifiInfo; import android.net.wifi.WifiManager; import android.os.Build; import android.os.Environment; @@ -65,6 +66,7 @@ import github.daneren2005.dsub.receiver.MediaButtonIntentReceiver; import github.daneren2005.dsub.service.DownloadFile; import github.daneren2005.dsub.service.DownloadService; import github.daneren2005.dsub.service.DownloadServiceImpl; + import org.apache.http.HttpEntity; import java.io.ByteArrayOutputStream; @@ -358,7 +360,9 @@ public final class Util { StringBuilder builder = new StringBuilder(); String serverUrl = prefs.getString(Constants.PREFERENCES_KEY_SERVER_URL + instance, null); - if(allowAltAddress && Util.isWifiConnected(context)) { + if(allowAltAddress && + (prefs.getString(Constants.PREFERENCES_KEY_SERVER_LOCAL_NETWORK_SSID + instance, "").equals("") && Util.isWifiConnected(context)) + || prefs.getString(Constants.PREFERENCES_KEY_SERVER_LOCAL_NETWORK_SSID + instance, "").equals(Util.getSSID(context))) { String internalUrl = prefs.getString(Constants.PREFERENCES_KEY_SERVER_INTERNAL_URL + instance, null); if(internalUrl != null && !"".equals(internalUrl) && !"http://".equals(internalUrl)) { serverUrl = internalUrl; @@ -847,6 +851,16 @@ public final class Util { boolean connected = networkInfo != null && networkInfo.isConnected(); return connected && (networkInfo.getType() == ConnectivityManager.TYPE_WIFI); } + public static String getSSID(Context context) { + if (isWifiConnected(context)) { + WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); + if (wifiManager.getConnectionInfo() != null && wifiManager.getConnectionInfo().getSSID() != null) { + return wifiManager.getConnectionInfo().getSSID().replace("\"", ""); + } + return null; + } + return null; + } public static boolean isExternalStoragePresent() { return Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState()); -- cgit v1.2.3 From b344e977dc7ee76ed46a46f5cecdb9823f511bde Mon Sep 17 00:00:00 2001 From: Scott Jackson Date: Tue, 14 Jan 2014 20:08:22 -0800 Subject: Broadcast track info on every avrcp intent --- .../dsub/service/DownloadServiceImpl.java | 2 +- src/github/daneren2005/dsub/util/Util.java | 51 +++++++++++++--------- 2 files changed, 31 insertions(+), 22 deletions(-) (limited to 'src') diff --git a/src/github/daneren2005/dsub/service/DownloadServiceImpl.java b/src/github/daneren2005/dsub/service/DownloadServiceImpl.java index 30a230ac..2f3dce53 100644 --- a/src/github/daneren2005/dsub/service/DownloadServiceImpl.java +++ b/src/github/daneren2005/dsub/service/DownloadServiceImpl.java @@ -952,7 +952,7 @@ public class DownloadServiceImpl extends Service implements DownloadService { boolean show = playerState == PlayerState.STARTED; boolean pause = playerState == PlayerState.PAUSED; boolean hide = playerState == PlayerState.STOPPED; - Util.broadcastPlaybackStatusChange(this, playerState); + Util.broadcastPlaybackStatusChange(this, (currentPlaying != null) ? currentPlaying.getSong() : null, playerState); this.playerState = playerState; diff --git a/src/github/daneren2005/dsub/util/Util.java b/src/github/daneren2005/dsub/util/Util.java index 51e64686..6b7ec29c 100644 --- a/src/github/daneren2005/dsub/util/Util.java +++ b/src/github/daneren2005/dsub/util/Util.java @@ -1200,32 +1200,13 @@ public final class Util { File albumArtFile = FileUtil.getAlbumArtFile(context, song); intent.putExtra("coverart", albumArtFile.getAbsolutePath()); - - avrcpIntent.putExtra("playing", true); - avrcpIntent.putExtra("track", song.getTitle()); - avrcpIntent.putExtra("artist", song.getArtist()); - avrcpIntent.putExtra("album", song.getAlbum()); - avrcpIntent.putExtra("ListSize",(long) downloadService.getSongs().size()); - avrcpIntent.putExtra("id", (long) downloadService.getCurrentPlayingIndex()+1); - avrcpIntent.putExtra("duration", (long) downloadService.getPlayerDuration()); - avrcpIntent.putExtra("position", (long) downloadService.getPlayerPosition()); - avrcpIntent.putExtra("coverart", albumArtFile.getAbsolutePath()); } else { intent.putExtra("title", ""); intent.putExtra("artist", ""); intent.putExtra("album", ""); intent.putExtra("coverart", ""); - - avrcpIntent.putExtra("playing", false); - avrcpIntent.putExtra("track", ""); - avrcpIntent.putExtra("artist", ""); - avrcpIntent.putExtra("album", ""); - avrcpIntent.putExtra("ListSize",(long)0); - avrcpIntent.putExtra("id", (long) 0); - avrcpIntent.putExtra("duration", (long )0); - avrcpIntent.putExtra("position", (long) 0); - avrcpIntent.putExtra("coverart", ""); } + addTrackInfo(context, song, avrcpIntent); context.sendBroadcast(intent); context.sendBroadcast(avrcpIntent); @@ -1234,7 +1215,7 @@ public final class Util { /** *

Broadcasts the given player state as the one being set.

*/ - public static void broadcastPlaybackStatusChange(Context context, PlayerState state) { + public static void broadcastPlaybackStatusChange(Context context, MusicDirectory.Entry song, PlayerState state) { Intent intent = new Intent(EVENT_PLAYSTATE_CHANGED); Intent avrcpIntent = new Intent(AVRCP_PLAYSTATE_CHANGED); @@ -1258,11 +1239,39 @@ public final class Util { default: return; // No need to broadcast. } + addTrackInfo(context, song, avrcpIntent); context.sendBroadcast(intent); context.sendBroadcast(avrcpIntent); } + private static void addTrackInfo(Context context, MusicDirectory.Entry song, Intent intent) { + if (song != null) { + DownloadService downloadService = (DownloadServiceImpl)context; + File albumArtFile = FileUtil.getAlbumArtFile(context, song); + + intent.putExtra("playing", true); + intent.putExtra("track", song.getTitle()); + intent.putExtra("artist", song.getArtist()); + intent.putExtra("album", song.getAlbum()); + intent.putExtra("ListSize", (long) downloadService.getSongs().size()); + intent.putExtra("id", (long) downloadService.getCurrentPlayingIndex() + 1); + intent.putExtra("duration", (long) downloadService.getPlayerDuration()); + intent.putExtra("position", (long) downloadService.getPlayerPosition()); + intent.putExtra("coverart", albumArtFile.getAbsolutePath()); + } else { + intent.putExtra("playing", false); + intent.putExtra("track", ""); + intent.putExtra("artist", ""); + intent.putExtra("album", ""); + intent.putExtra("ListSize", (long) 0); + intent.putExtra("id", (long) 0); + intent.putExtra("duration", (long) 0); + intent.putExtra("position", (long) 0); + intent.putExtra("coverart", ""); + } + } + /** * Resolves the default text color for notifications. * -- cgit v1.2.3 From 4fa8a0b25d9cd56ef92ed6300a05e47a05ac51e2 Mon Sep 17 00:00:00 2001 From: Scott Jackson Date: Wed, 15 Jan 2014 07:48:58 -0800 Subject: #249 Hide star button if stars are hidden in settings --- .../dsub/fragments/DownloadFragment.java | 24 +++++++++++++--------- 1 file changed, 14 insertions(+), 10 deletions(-) (limited to 'src') diff --git a/src/github/daneren2005/dsub/fragments/DownloadFragment.java b/src/github/daneren2005/dsub/fragments/DownloadFragment.java index de721f7d..f345334f 100644 --- a/src/github/daneren2005/dsub/fragments/DownloadFragment.java +++ b/src/github/daneren2005/dsub/fragments/DownloadFragment.java @@ -178,17 +178,21 @@ public class DownloadFragment extends SubsonicFragment implements OnGestureListe toggleListButton =rootView.findViewById(R.id.download_toggle_list); starButton = (ImageButton)rootView.findViewById(R.id.download_star); - starButton.setOnClickListener(new OnClickListener() { - @Override - public void onClick(View v) { - DownloadFile currentDownload = getDownloadService().getCurrentPlaying(); - if (currentDownload != null) { - MusicDirectory.Entry currentSong = currentDownload.getSong(); - toggleStarred(currentSong); - starButton.setImageResource(currentSong.isStarred() ? android.R.drawable.btn_star_big_on : android.R.drawable.btn_star_big_off); + if(Util.getPreferences(context).getBoolean(Constants.PREFERENCES_KEY_MENU_STAR, true)) { + starButton.setOnClickListener(new OnClickListener() { + @Override + public void onClick(View v) { + DownloadFile currentDownload = getDownloadService().getCurrentPlaying(); + if (currentDownload != null) { + MusicDirectory.Entry currentSong = currentDownload.getSong(); + toggleStarred(currentSong); + starButton.setImageResource(currentSong.isStarred() ? android.R.drawable.btn_star_big_on : android.R.drawable.btn_star_big_off); + } } - } - }); + }); + } else { + starButton.setVisibility(View.GONE); + } View.OnTouchListener touchListener = new View.OnTouchListener() { @Override -- cgit v1.2.3 From 7eedd18dec1c7613c035d9daab780bb515840f1d Mon Sep 17 00:00:00 2001 From: Scott Jackson Date: Wed, 15 Jan 2014 17:41:53 -0800 Subject: Make it more obvious when it's a server error --- res/values/strings.xml | 1 + src/github/daneren2005/dsub/service/parser/AbstractParser.java | 3 +++ 2 files changed, 4 insertions(+) (limited to 'src') diff --git a/res/values/strings.xml b/res/values/strings.xml index 33edb30b..d62e8ea9 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -436,6 +436,7 @@ Wrong username or password. Not authorized. Check user permissions in Subsonic server. Got %d artists. + Server error: %s Refresh Select folder diff --git a/src/github/daneren2005/dsub/service/parser/AbstractParser.java b/src/github/daneren2005/dsub/service/parser/AbstractParser.java index 1a457754..9db40dad 100644 --- a/src/github/daneren2005/dsub/service/parser/AbstractParser.java +++ b/src/github/daneren2005/dsub/service/parser/AbstractParser.java @@ -50,6 +50,9 @@ public abstract class AbstractParser { int code = getInteger("code"); String message; switch (code) { + case 0: + message = context.getResources().getString(R.string.parser_server_error, get("message")); + break; case 20: message = context.getResources().getString(R.string.parser_upgrade_client); break; -- cgit v1.2.3 From f011b0afbe23f2bed11770abca1f5daa7ea6e895 Mon Sep 17 00:00:00 2001 From: Scott Jackson Date: Wed, 15 Jan 2014 18:11:49 -0800 Subject: #252 Parse entries as PodcastEpisode in offline mode --- .../dsub/service/OfflineMusicService.java | 88 +++++++++++++--------- 1 file changed, 51 insertions(+), 37 deletions(-) (limited to 'src') diff --git a/src/github/daneren2005/dsub/service/OfflineMusicService.java b/src/github/daneren2005/dsub/service/OfflineMusicService.java index 80ad375a..fdeb373c 100644 --- a/src/github/daneren2005/dsub/service/OfflineMusicService.java +++ b/src/github/daneren2005/dsub/service/OfflineMusicService.java @@ -37,6 +37,7 @@ import github.daneren2005.dsub.domain.Artist; import github.daneren2005.dsub.domain.Bookmark; import github.daneren2005.dsub.domain.Genre; import github.daneren2005.dsub.domain.Indexes; +import github.daneren2005.dsub.domain.PodcastEpisode; import github.daneren2005.dsub.domain.RemoteStatus; import github.daneren2005.dsub.domain.Lyrics; import github.daneren2005.dsub.domain.MusicDirectory; @@ -116,22 +117,25 @@ public class OfflineMusicService extends RESTMusicService { @Override public MusicDirectory getMusicDirectory(String id, String artistName, boolean refresh, Context context, ProgressListener progressListener) throws Exception { - File dir = new File(id); - MusicDirectory result = new MusicDirectory(); - result.setName(dir.getName()); - - Set names = new HashSet(); - - for (File file : FileUtil.listMediaFiles(dir)) { - String name = getName(file); - if (name != null & !names.contains(name)) { - names.add(name); - result.addChild(createEntry(context, file, name)); - } - } - result.sortChildren(); - return result; + return getMusicDirectory(id, artistName, refresh, context, progressListener, false); } + private MusicDirectory getMusicDirectory(String id, String artistName, boolean refresh, Context context, ProgressListener progressListener, boolean isPodcast) throws Exception { + File dir = new File(id); + MusicDirectory result = new MusicDirectory(); + result.setName(dir.getName()); + + Set names = new HashSet(); + + for (File file : FileUtil.listMediaFiles(dir)) { + String name = getName(file); + if (name != null & !names.contains(name)) { + names.add(name); + result.addChild(createEntry(context, file, name, true, isPodcast)); + } + } + result.sortChildren(); + return result; + } private String getName(File file) { String name = file.getName(); @@ -151,18 +155,28 @@ public class OfflineMusicService extends RESTMusicService { return createEntry(context, file, name, true); } private MusicDirectory.Entry createEntry(Context context, File file, String name, boolean load) { - MusicDirectory.Entry entry = new MusicDirectory.Entry(); - entry.setDirectory(file.isDirectory()); - entry.setId(file.getPath()); - entry.setParent(file.getParent()); - entry.setSize(file.length()); - String root = FileUtil.getMusicDirectory(context).getPath(); + return createEntry(context, file, name, load, false); + } + private MusicDirectory.Entry createEntry(Context context, File file, String name, boolean load, boolean isPodcast) { + MusicDirectory.Entry entry; + if(isPodcast) { + PodcastEpisode episode = new PodcastEpisode(); + episode.setStatus("completed"); + entry = episode; + } else { + entry = new MusicDirectory.Entry(); + } + entry.setDirectory(file.isDirectory()); + entry.setId(file.getPath()); + entry.setParent(file.getParent()); + entry.setSize(file.length()); + String root = FileUtil.getMusicDirectory(context).getPath(); if(!file.getParentFile().getParentFile().getPath().equals(root)) { entry.setGrandParent(file.getParentFile().getParent()); } - entry.setPath(file.getPath().replaceFirst("^" + root + "/" , "")); + entry.setPath(file.getPath().replaceFirst("^" + root + "/" , "")); String title = name; - if (file.isFile()) { + if (file.isFile()) { File artistFolder = file.getParentFile().getParentFile(); File albumFolder = file.getParentFile(); if(artistFolder.getPath().equals(root)) { @@ -170,8 +184,8 @@ public class OfflineMusicService extends RESTMusicService { } else { entry.setArtist(artistFolder.getName()); } - entry.setAlbum(albumFolder.getName()); - + entry.setAlbum(albumFolder.getName()); + int index = name.indexOf('-'); if(index != -1) { try { @@ -181,24 +195,24 @@ public class OfflineMusicService extends RESTMusicService { // Failed parseInt, just means track filled out } } - + if(load) { entry.loadMetadata(file); } - } - - entry.setTitle(title); - entry.setSuffix(FileUtil.getExtension(file.getName().replace(".complete", ""))); + } - File albumArt = FileUtil.getAlbumArtFile(context, entry); - if (albumArt.exists()) { - entry.setCoverArt(albumArt.getPath()); - } + entry.setTitle(title); + entry.setSuffix(FileUtil.getExtension(file.getName().replace(".complete", ""))); + + File albumArt = FileUtil.getAlbumArtFile(context, entry); + if (albumArt.exists()) { + entry.setCoverArt(albumArt.getPath()); + } if(FileUtil.isVideoFile(file)) { entry.setVideo(true); } - return entry; - } + return entry; + } @Override public Bitmap getCoverArt(Context context, MusicDirectory.Entry entry, int size, ProgressListener progressListener) throws Exception { @@ -613,7 +627,7 @@ public class OfflineMusicService extends RESTMusicService { @Override public MusicDirectory getPodcastEpisodes(boolean refresh, String id, Context context, ProgressListener progressListener) throws Exception { - return getMusicDirectory(FileUtil.getPodcastDirectory(context, id).getPath(), null, false, context, progressListener); + return getMusicDirectory(FileUtil.getPodcastDirectory(context, id).getPath(), null, false, context, progressListener, true); } @Override -- cgit v1.2.3 From afc140247616764807523c0ea123d8708d9adec3 Mon Sep 17 00:00:00 2001 From: Scott Jackson Date: Thu, 16 Jan 2014 07:29:19 -0800 Subject: Minor tweaks to setttings layout --- res/values/strings.xml | 2 +- src/github/daneren2005/dsub/activity/SettingsActivity.java | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/res/values/strings.xml b/res/values/strings.xml index d2b06e3e..0c0623c6 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -244,7 +244,7 @@ Unused Name Server address - Local network + Local network SSID Local network address Username Password diff --git a/src/github/daneren2005/dsub/activity/SettingsActivity.java b/src/github/daneren2005/dsub/activity/SettingsActivity.java index d72430e5..92cf5d8f 100644 --- a/src/github/daneren2005/dsub/activity/SettingsActivity.java +++ b/src/github/daneren2005/dsub/activity/SettingsActivity.java @@ -406,13 +406,13 @@ public class SettingsActivity extends PreferenceActivity implements SharedPrefer screen.addPreference(serverNamePreference); screen.addPreference(serverUrlPreference); - screen.addPreference(serverLocalNetworkSSIDPreference); screen.addPreference(serverInternalUrlPreference); + screen.addPreference(serverLocalNetworkSSIDPreference); screen.addPreference(serverUsernamePreference); screen.addPreference(serverPasswordPreference); - screen.addPreference(serverRemoveServerPreference); screen.addPreference(serverTestConnectionPreference); screen.addPreference(serverOpenBrowser); + screen.addPreference(serverRemoveServerPreference); screen.setOrder(instance); -- cgit v1.2.3 From b11f8d72673ee0f4cf874e18795c5e25fc62f5f0 Mon Sep 17 00:00:00 2001 From: Scott Jackson Date: Thu, 16 Jan 2014 07:36:23 -0800 Subject: Fix internal network being used if SSID is non-null but internal address is null --- src/github/daneren2005/dsub/util/Util.java | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/github/daneren2005/dsub/util/Util.java b/src/github/daneren2005/dsub/util/Util.java index 57684d33..05267699 100644 --- a/src/github/daneren2005/dsub/util/Util.java +++ b/src/github/daneren2005/dsub/util/Util.java @@ -360,12 +360,13 @@ public final class Util { StringBuilder builder = new StringBuilder(); String serverUrl = prefs.getString(Constants.PREFERENCES_KEY_SERVER_URL + instance, null); - if(allowAltAddress && - (prefs.getString(Constants.PREFERENCES_KEY_SERVER_LOCAL_NETWORK_SSID + instance, "").equals("") && Util.isWifiConnected(context)) - || prefs.getString(Constants.PREFERENCES_KEY_SERVER_LOCAL_NETWORK_SSID + instance, "").equals(Util.getSSID(context))) { - String internalUrl = prefs.getString(Constants.PREFERENCES_KEY_SERVER_INTERNAL_URL + instance, null); - if(internalUrl != null && !"".equals(internalUrl) && !"http://".equals(internalUrl)) { - serverUrl = internalUrl; + if(allowAltAddress && Util.isWifiConnected(context)) { + String SSID = prefs.getString(Constants.PREFERENCES_KEY_SERVER_LOCAL_NETWORK_SSID + instance, ""); + if("".equals(SSID) || SSID.equals(Util.getSSID(context))) { + String internalUrl = prefs.getString(Constants.PREFERENCES_KEY_SERVER_INTERNAL_URL + instance, null); + if(internalUrl != null && !"".equals(internalUrl) && !"http://".equals(internalUrl)) { + serverUrl = internalUrl; + } } } -- cgit v1.2.3 From 9f874cf673ee8ed82c70c5ae35b0ab4a0a2aa6ef Mon Sep 17 00:00:00 2001 From: Scott Jackson Date: Thu, 16 Jan 2014 08:25:33 -0800 Subject: Set dialog titles, give internal SSID hint --- res/values/strings.xml | 1 + src/github/daneren2005/dsub/activity/SettingsActivity.java | 14 ++++++++++++++ 2 files changed, 15 insertions(+) (limited to 'src') diff --git a/res/values/strings.xml b/res/values/strings.xml index 0c0623c6..b1fbb3c3 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -245,6 +245,7 @@ Name Server address Local network SSID + Current SSID: %s Local network address Username Password diff --git a/src/github/daneren2005/dsub/activity/SettingsActivity.java b/src/github/daneren2005/dsub/activity/SettingsActivity.java index 92cf5d8f..9d0b5bbd 100644 --- a/src/github/daneren2005/dsub/activity/SettingsActivity.java +++ b/src/github/daneren2005/dsub/activity/SettingsActivity.java @@ -82,6 +82,7 @@ public class SettingsActivity extends PreferenceActivity implements SharedPrefer private EditTextPreference chatRefreshRate; private ListPreference videoPlayer; private ListPreference syncInterval; + private String internalSSID; private int serverCount = 3; private SharedPreferences settings; @@ -93,6 +94,12 @@ public class SettingsActivity extends PreferenceActivity implements SharedPrefer super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.settings); + internalSSID = Util.getSSID(this); + if(internalSSID == null) { + internalSSID = ""; + } + internalSSID = this.getResources().getString(R.string.settings_server_local_network_ssid_hint, internalSSID); + theme = (ListPreference) findPreference(Constants.PREFERENCES_KEY_THEME); maxBitrateWifi = (ListPreference) findPreference(Constants.PREFERENCES_KEY_MAX_BITRATE_WIFI); maxBitrateMobile = (ListPreference) findPreference(Constants.PREFERENCES_KEY_MAX_BITRATE_MOBILE); @@ -303,6 +310,7 @@ public class SettingsActivity extends PreferenceActivity implements SharedPrefer serverNamePreference.setKey(Constants.PREFERENCES_KEY_SERVER_NAME + instance); serverNamePreference.setDefaultValue(getResources().getString(R.string.settings_server_unused)); serverNamePreference.setTitle(R.string.settings_server_name); + serverNamePreference.setDialogTitle(R.string.settings_server_name); if (serverNamePreference.getText() == null) { serverNamePreference.setText(getResources().getString(R.string.settings_server_unused)); @@ -315,6 +323,7 @@ public class SettingsActivity extends PreferenceActivity implements SharedPrefer serverUrlPreference.getEditText().setInputType(InputType.TYPE_TEXT_VARIATION_URI); serverUrlPreference.setDefaultValue("http://yourhost"); serverUrlPreference.setTitle(R.string.settings_server_address); + serverUrlPreference.setDialogTitle(R.string.settings_server_address); if (serverUrlPreference.getText() == null) { serverUrlPreference.setText("http://yourhost"); @@ -326,23 +335,28 @@ public class SettingsActivity extends PreferenceActivity implements SharedPrefer final EditTextPreference serverLocalNetworkSSIDPreference = new EditTextPreference(this); serverLocalNetworkSSIDPreference.setKey(Constants.PREFERENCES_KEY_SERVER_LOCAL_NETWORK_SSID + instance); serverLocalNetworkSSIDPreference.setTitle(R.string.settings_server_local_network_ssid); + serverLocalNetworkSSIDPreference.setDialogTitle(R.string.settings_server_local_network_ssid); + serverLocalNetworkSSIDPreference.setDialogMessage(internalSSID); final EditTextPreference serverInternalUrlPreference = new EditTextPreference(this); serverInternalUrlPreference.setKey(Constants.PREFERENCES_KEY_SERVER_INTERNAL_URL + instance); serverInternalUrlPreference.getEditText().setInputType(InputType.TYPE_TEXT_VARIATION_URI); serverInternalUrlPreference.setDefaultValue("http://"); serverInternalUrlPreference.setTitle(R.string.settings_server_internal_address); + serverInternalUrlPreference.setDialogTitle(R.string.settings_server_internal_address); serverInternalUrlPreference.setSummary(serverInternalUrlPreference.getText()); final EditTextPreference serverUsernamePreference = new EditTextPreference(this); serverUsernamePreference.setKey(Constants.PREFERENCES_KEY_USERNAME + instance); serverUsernamePreference.setTitle(R.string.settings_server_username); + serverUsernamePreference.setDialogTitle(R.string.settings_server_username); final EditTextPreference serverPasswordPreference = new EditTextPreference(this); serverPasswordPreference.setKey(Constants.PREFERENCES_KEY_PASSWORD + instance); serverPasswordPreference.getEditText().setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD); serverPasswordPreference.setSummary("***"); serverPasswordPreference.setTitle(R.string.settings_server_password); + serverPasswordPreference.setDialogTitle(R.string.settings_server_password); final Preference serverOpenBrowser = new Preference(this); serverOpenBrowser.setKey(Constants.PREFERENCES_KEY_OPEN_BROWSER); -- cgit v1.2.3 From a0befc8d40b01b903ee0fa67a0ef32d6403888bb Mon Sep 17 00:00:00 2001 From: Scott Jackson Date: Thu, 16 Jan 2014 19:11:01 -0800 Subject: #254 cache whether license is valid or not --- src/github/daneren2005/dsub/service/CachedMusicService.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/github/daneren2005/dsub/service/CachedMusicService.java b/src/github/daneren2005/dsub/service/CachedMusicService.java index b93a6e1e..4da3aec2 100644 --- a/src/github/daneren2005/dsub/service/CachedMusicService.java +++ b/src/github/daneren2005/dsub/service/CachedMusicService.java @@ -82,7 +82,16 @@ public class CachedMusicService implements MusicService { checkSettingsChanged(context); Boolean result = cachedLicenseValid.get(); if (result == null) { - result = musicService.isLicenseValid(context, progressListener); + result = FileUtil.deserialize(context, getCacheName(context, "license"), Boolean.class); + + if(result == null) { + result = musicService.isLicenseValid(context, progressListener); + + // Only save a copy license is valid + if(result == true) { + FileUtil.serialize(context, (Boolean) result, getCacheName(context, "license")); + } + } cachedLicenseValid.set(result, result ? 30L * 60L : 2L * 60L, TimeUnit.SECONDS); } return result; -- cgit v1.2.3 From 21df175198b4137681da5ca63fd7032c5597b842 Mon Sep 17 00:00:00 2001 From: Scott Jackson Date: Thu, 16 Jan 2014 19:21:09 -0800 Subject: Only delete podcasts when would normally call playNext --- src/github/daneren2005/dsub/service/DownloadServiceImpl.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/github/daneren2005/dsub/service/DownloadServiceImpl.java b/src/github/daneren2005/dsub/service/DownloadServiceImpl.java index 2f3dce53..170c549b 100644 --- a/src/github/daneren2005/dsub/service/DownloadServiceImpl.java +++ b/src/github/daneren2005/dsub/service/DownloadServiceImpl.java @@ -1300,6 +1300,11 @@ public class DownloadServiceImpl extends Service implements DownloadService { Log.i(TAG, "Ending position " + pos + " of " + duration); if (!isPartial || (downloadFile.isWorkDone() && (Math.abs(duration - pos) < 10000))) { playNext(); + + // Finished loading, delete when list is cleared + if(downloadFile.getSong() instanceof PodcastEpisode) { + toDelete.add(downloadFile); + } } else { // If file is not completely downloaded, restart the playback from the current position. synchronized (DownloadServiceImpl.this) { @@ -1319,11 +1324,6 @@ public class DownloadServiceImpl extends Service implements DownloadService { } } - // Finished loading, delete when list is cleared - if(downloadFile.getSong() instanceof PodcastEpisode) { - toDelete.add(downloadFile); - } - wakeLock.release(); } }); -- cgit v1.2.3 From f9612cbea3869b87d52772149d391286aae08640 Mon Sep 17 00:00:00 2001 From: Scott Jackson Date: Thu, 16 Jan 2014 20:30:03 -0800 Subject: #244 Move sync to own section, disable when enable is unchecked --- res/xml/settings.xml | 39 +++++++++++++--------- .../dsub/activity/SettingsActivity.java | 28 ++++++++++++++++ 2 files changed, 51 insertions(+), 16 deletions(-) (limited to 'src') diff --git a/res/xml/settings.xml b/res/xml/settings.xml index 5d1a1ce6..30b2e584 100644 --- a/res/xml/settings.xml +++ b/res/xml/settings.xml @@ -206,6 +206,25 @@ android:persistent="false"/> + + + + + + + + + @@ -233,6 +252,10 @@ android:summary="@string/settings.sync_notification_summary" android:key="syncNotification" android:defaultValue="true"/> + + + - - - - - - - Date: Fri, 17 Jan 2014 16:09:01 -0800 Subject: Remove wakelock killing for idiotic S3 --- src/github/daneren2005/dsub/service/DownloadServiceImpl.java | 2 -- 1 file changed, 2 deletions(-) (limited to 'src') diff --git a/src/github/daneren2005/dsub/service/DownloadServiceImpl.java b/src/github/daneren2005/dsub/service/DownloadServiceImpl.java index 170c549b..287959b4 100644 --- a/src/github/daneren2005/dsub/service/DownloadServiceImpl.java +++ b/src/github/daneren2005/dsub/service/DownloadServiceImpl.java @@ -1323,8 +1323,6 @@ public class DownloadServiceImpl extends Service implements DownloadService { } } } - - wakeLock.release(); } }); } -- cgit v1.2.3 From a8a19d4fcc46f8e4753d40e21b69e4df75f11535 Mon Sep 17 00:00:00 2001 From: Scott Jackson Date: Sat, 18 Jan 2014 09:49:26 -0800 Subject: Fix not being able to clear out internal IP --- src/github/daneren2005/dsub/activity/SettingsActivity.java | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'src') diff --git a/src/github/daneren2005/dsub/activity/SettingsActivity.java b/src/github/daneren2005/dsub/activity/SettingsActivity.java index b5524ccf..8ec90367 100644 --- a/src/github/daneren2005/dsub/activity/SettingsActivity.java +++ b/src/github/daneren2005/dsub/activity/SettingsActivity.java @@ -615,6 +615,11 @@ public class SettingsActivity extends PreferenceActivity implements SharedPrefer public boolean onPreferenceChange(Preference preference, Object value) { try { String url = (String) value; + // Allow blank internal IP address + if("".equals(url) || url == null) { + return true; + } + new URL(url); if (url.contains(" ") || url.contains("@") || url.contains("_")) { throw new Exception(); -- cgit v1.2.3 From 99fec3f3de854d4fa358713595b8ab5b26873aac Mon Sep 17 00:00:00 2001 From: Scott Jackson Date: Sat, 18 Jan 2014 10:54:24 -0800 Subject: #250 Keep track of index --- src/github/daneren2005/dsub/service/DownloadServiceImpl.java | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/github/daneren2005/dsub/service/DownloadServiceImpl.java b/src/github/daneren2005/dsub/service/DownloadServiceImpl.java index 287959b4..600f2d52 100644 --- a/src/github/daneren2005/dsub/service/DownloadServiceImpl.java +++ b/src/github/daneren2005/dsub/service/DownloadServiceImpl.java @@ -104,6 +104,7 @@ public class DownloadServiceImpl extends Service implements DownloadService { private final Scrobbler scrobbler = new Scrobbler(); private RemoteController remoteController; private DownloadFile currentPlaying; + private int currentPlayingIndex = -1; private DownloadFile nextPlaying; private DownloadFile currentDownloading; private CancellableTask bufferTask; @@ -329,6 +330,7 @@ public class DownloadServiceImpl extends Service implements DownloadService { } else { if (currentPlaying == null) { currentPlaying = downloadList.get(0); + currentPlayingIndex = 0; currentPlaying.setPlaying(true); } checkDownloads(); @@ -604,6 +606,11 @@ public class DownloadServiceImpl extends Service implements DownloadService { this.currentPlaying.setPlaying(false); } this.currentPlaying = currentPlaying; + if(currentPlaying == null) { + currentPlayingIndex = -1; + } else { + currentPlayingIndex = downloadList.indexOf(currentPlaying); + } if (currentPlaying != null) { Util.broadcastNewTrackInfo(this, currentPlaying.getSong()); @@ -641,8 +648,8 @@ public class DownloadServiceImpl extends Service implements DownloadService { } @Override - public synchronized int getCurrentPlayingIndex() { - return downloadList.indexOf(currentPlaying); + public int getCurrentPlayingIndex() { + return currentPlayingIndex; } private int getNextPlayingIndex() { int index = getCurrentPlayingIndex(); -- cgit v1.2.3 From b6bb20380fe2ab87d0e1415cd02bf3f6f3f14196 Mon Sep 17 00:00:00 2001 From: Scott Jackson Date: Sun, 19 Jan 2014 13:32:49 -0800 Subject: #253 Try to base query off of tags --- src/github/daneren2005/dsub/util/Util.java | 34 +++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/github/daneren2005/dsub/util/Util.java b/src/github/daneren2005/dsub/util/Util.java index 05267699..e944f125 100644 --- a/src/github/daneren2005/dsub/util/Util.java +++ b/src/github/daneren2005/dsub/util/Util.java @@ -421,7 +421,14 @@ public final class Util { } public static String parseOfflineIDSearch(Context context, String id, String cacheLocation) { - String name = id.replace(cacheLocation, ""); + // Try to get this info based off of tags first + String name = parseOfflineIDSearch(id); + if(name != null) { + return name; + } + + // Otherwise go nuts trying to parse from file structure + name = id.replace(cacheLocation, ""); if(name.startsWith("/")) { name = name.substring(1); } @@ -458,6 +465,31 @@ public final class Util { return name; } + public static String parseOfflineIDSearch(String id) { + MusicDirectory.Entry entry = new MusicDirectory.Entry(); + File file = new File(id); + + if(file.exists()) { + entry.loadMetadata(file); + + if(entry.getArtist() != null) { + String title = file.getName(); + int index = title.lastIndexOf("."); + title = index == -1 ? title : title.substring(0, index); + title = title.substring(title.indexOf('-') + 1); + + String query = "artist:\"" + entry.getArtist() + "\"" + + " AND title:\"" + title + "\""; + + return query; + } else { + return null; + } + } else { + return null; + } + } + public static String getContentType(HttpEntity entity) { if (entity == null || entity.getContentType() == null) { return null; -- cgit v1.2.3