From 1ee9b09a6428c3c407cec205472cc2d91e53a5a6 Mon Sep 17 00:00:00 2001 From: Joshua Bahnsen Date: Mon, 30 Dec 2013 22:06:30 -0700 Subject: [PATCH] Try to improve activity transitions and exit properly --- .../androidapp/activity/BookmarkActivity.java | 3 +- .../androidapp/activity/DownloadActivity.java | 7 ++- .../activity/EqualizerActivity.java | 3 +- .../androidapp/activity/HelpActivity.java | 25 +++++----- .../androidapp/activity/MainActivity.java | 16 ++++--- .../activity/PreferenceResultActivity.java | 37 ++++++++++++++ .../activity/QueryReceiverActivity.java | 5 +- .../androidapp/activity/ResultActivity.java | 36 ++++++++++++++ .../androidapp/activity/SearchActivity.java | 12 ++--- .../activity/SelectAlbumActivity.java | 14 +++--- .../activity/SelectArtistActivity.java | 6 +-- .../activity/SelectGenreActivity.java | 6 +-- .../activity/SelectPlaylistActivity.java | 8 ++-- .../androidapp/activity/SettingsActivity.java | 26 +++++----- .../androidapp/activity/ShareActivity.java | 4 +- .../activity/SubsonicTabActivity.java | 48 +++++++++---------- .../activity/VoiceQueryReceiverActivity.java | 5 +- .../ultrasonic/androidapp/util/Constants.java | 1 + .../ultrasonic/androidapp/util/Util.java | 11 ----- 19 files changed, 163 insertions(+), 110 deletions(-) create mode 100644 src/com/thejoshwa/ultrasonic/androidapp/activity/PreferenceResultActivity.java create mode 100644 src/com/thejoshwa/ultrasonic/androidapp/activity/ResultActivity.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/activity/BookmarkActivity.java b/src/com/thejoshwa/ultrasonic/androidapp/activity/BookmarkActivity.java index 3baa0b3a..7e723e3d 100644 --- a/src/com/thejoshwa/ultrasonic/androidapp/activity/BookmarkActivity.java +++ b/src/com/thejoshwa/ultrasonic/androidapp/activity/BookmarkActivity.java @@ -185,7 +185,6 @@ public class BookmarkActivity extends SubsonicTabActivity menuDrawer.setActiveView(browseMenuItem); getBookmarks(); - } private void getBookmarks() @@ -236,7 +235,7 @@ public class BookmarkActivity extends SubsonicTabActivity finish(); Intent intent = getIntent(); intent.putExtra(Constants.INTENT_EXTRA_NAME_REFRESH, true); - Util.startActivityWithoutTransition(this, intent); + startActivityForResultWithoutTransition(this, intent); } @Override diff --git a/src/com/thejoshwa/ultrasonic/androidapp/activity/DownloadActivity.java b/src/com/thejoshwa/ultrasonic/androidapp/activity/DownloadActivity.java index c4b87180..ab1bae84 100644 --- a/src/com/thejoshwa/ultrasonic/androidapp/activity/DownloadActivity.java +++ b/src/com/thejoshwa/ultrasonic/androidapp/activity/DownloadActivity.java @@ -876,7 +876,7 @@ public class DownloadActivity extends SubsonicTabActivity implements OnGestureLi intent.putExtra(Constants.INTENT_EXTRA_NAME_NAME, entry.getArtist()); intent.putExtra(Constants.INTENT_EXTRA_NAME_PARENT_ID, entry.getArtistId()); intent.putExtra(Constants.INTENT_EXTRA_NAME_ARTIST, true); - Util.startActivityWithoutTransition(DownloadActivity.this, intent); + startActivityForResultWithoutTransition(DownloadActivity.this, intent); } return true; @@ -889,7 +889,7 @@ public class DownloadActivity extends SubsonicTabActivity implements OnGestureLi Intent intent = new Intent(this, SelectAlbumActivity.class); intent.putExtra(Constants.INTENT_EXTRA_NAME_ID, entry.getParent()); intent.putExtra(Constants.INTENT_EXTRA_NAME_NAME, entry.getAlbum()); - Util.startActivityWithoutTransition(this, intent); + startActivityForResultWithoutTransition(this, intent); return true; case R.id.menu_lyrics: if (entry == null) @@ -900,7 +900,7 @@ public class DownloadActivity extends SubsonicTabActivity implements OnGestureLi intent = new Intent(this, LyricsActivity.class); intent.putExtra(Constants.INTENT_EXTRA_NAME_ARTIST, entry.getArtist()); intent.putExtra(Constants.INTENT_EXTRA_NAME_TITLE, entry.getTitle()); - Util.startActivityWithoutTransition(this, intent); + startActivityForResultWithoutTransition(this, intent); return true; case R.id.menu_remove: getDownloadService().remove(song); @@ -1238,7 +1238,6 @@ public class DownloadActivity extends SubsonicTabActivity implements OnGestureLi } - @Override public void remove(int which) { diff --git a/src/com/thejoshwa/ultrasonic/androidapp/activity/EqualizerActivity.java b/src/com/thejoshwa/ultrasonic/androidapp/activity/EqualizerActivity.java index bd0de1b0..529ec87c 100644 --- a/src/com/thejoshwa/ultrasonic/androidapp/activity/EqualizerActivity.java +++ b/src/com/thejoshwa/ultrasonic/androidapp/activity/EqualizerActivity.java @@ -18,7 +18,6 @@ */ package com.thejoshwa.ultrasonic.androidapp.activity; -import android.app.Activity; import android.media.audiofx.Equalizer; import android.os.Bundle; import android.view.ContextMenu; @@ -45,7 +44,7 @@ import java.util.Map; * @author Sindre Mehus * @version $Id$ */ -public class EqualizerActivity extends Activity +public class EqualizerActivity extends ResultActivity { private static final int MENU_GROUP_PRESET = 100; diff --git a/src/com/thejoshwa/ultrasonic/androidapp/activity/HelpActivity.java b/src/com/thejoshwa/ultrasonic/androidapp/activity/HelpActivity.java index cbc72841..332affd5 100644 --- a/src/com/thejoshwa/ultrasonic/androidapp/activity/HelpActivity.java +++ b/src/com/thejoshwa/ultrasonic/androidapp/activity/HelpActivity.java @@ -20,7 +20,6 @@ package com.thejoshwa.ultrasonic.androidapp.activity; import android.app.ActionBar; -import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.KeyEvent; @@ -45,7 +44,7 @@ import net.simonvt.menudrawer.Position; * * @author Sindre Mehus */ -public final class HelpActivity extends Activity implements OnClickListener +public final class HelpActivity extends ResultActivity implements OnClickListener { private WebView webView; private ImageView backButton; @@ -256,48 +255,48 @@ public final class HelpActivity extends Activity implements OnClickListener intent = new Intent(this, MainActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); - Util.startActivityWithoutTransition(this, intent); + startActivityForResultWithoutTransition(this, intent); break; case R.id.menu_browse: intent = new Intent(this, SelectArtistActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); - Util.startActivityWithoutTransition(this, intent); + startActivityForResultWithoutTransition(this, intent); break; case R.id.menu_search: intent = new Intent(this, SearchActivity.class); intent.putExtra(Constants.INTENT_EXTRA_REQUEST_SEARCH, true); - Util.startActivityWithoutTransition(this, intent); + startActivityForResultWithoutTransition(this, intent); break; case R.id.menu_playlists: intent = new Intent(this, SelectPlaylistActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); - Util.startActivityWithoutTransition(this, intent); + startActivityForResultWithoutTransition(this, intent); break; case R.id.menu_shares: intent = new Intent(this, ShareActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); - Util.startActivityWithoutTransition(this, intent); + startActivityForResultWithoutTransition(this, intent); break; case R.id.menu_chat: - Util.startActivityWithoutTransition(this, ChatActivity.class); + startActivityForResultWithoutTransition(this, ChatActivity.class); break; case R.id.menu_bookmarks: - Util.startActivityWithoutTransition(this, BookmarkActivity.class); + startActivityForResultWithoutTransition(this, BookmarkActivity.class); break; case R.id.menu_now_playing: - Util.startActivityWithoutTransition(this, DownloadActivity.class); + startActivityForResultWithoutTransition(this, DownloadActivity.class); break; case R.id.menu_settings: - Util.startActivityWithoutTransition(this, SettingsActivity.class); + startActivityForResultWithoutTransition(this, SettingsActivity.class); break; case R.id.menu_about: - Util.startActivityWithoutTransition(this, HelpActivity.class); + startActivityForResultWithoutTransition(this, HelpActivity.class); break; case R.id.menu_exit: intent = new Intent(this, MainActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); intent.putExtra(Constants.INTENT_EXTRA_NAME_EXIT, true); - Util.startActivityWithoutTransition(this, intent); + startActivityForResultWithoutTransition(this, intent); break; } diff --git a/src/com/thejoshwa/ultrasonic/androidapp/activity/MainActivity.java b/src/com/thejoshwa/ultrasonic/androidapp/activity/MainActivity.java index ec354613..6b0f6d90 100644 --- a/src/com/thejoshwa/ultrasonic/androidapp/activity/MainActivity.java +++ b/src/com/thejoshwa/ultrasonic/androidapp/activity/MainActivity.java @@ -74,6 +74,8 @@ public class MainActivity extends SubsonicTabActivity if (getIntent().hasExtra(Constants.INTENT_EXTRA_NAME_EXIT)) { + setResult(Constants.RESULT_CLOSE_ALL); + finish(); exit(); return; } @@ -427,7 +429,7 @@ public class MainActivity extends SubsonicTabActivity case R.id.main_shuffle: final Intent intent1 = new Intent(this, DownloadActivity.class); intent1.putExtra(Constants.INTENT_EXTRA_NAME_SHUFFLE, true); - Util.startActivityWithoutTransition(this, intent1); + startActivityForResultWithoutTransition(this, intent1); return true; } @@ -481,14 +483,14 @@ public class MainActivity extends SubsonicTabActivity intent.putExtra(Constants.INTENT_EXTRA_NAME_ALBUM_LIST_TITLE, title); intent.putExtra(Constants.INTENT_EXTRA_NAME_ALBUM_LIST_SIZE, Util.getMaxAlbums(this)); intent.putExtra(Constants.INTENT_EXTRA_NAME_ALBUM_LIST_OFFSET, 0); - Util.startActivityWithoutTransition(this, intent); + startActivityForResultWithoutTransition(this, intent); } private void showStarredSongs() { final Intent intent = new Intent(this, SelectAlbumActivity.class); intent.putExtra(Constants.INTENT_EXTRA_NAME_STARRED, 1); - Util.startActivityWithoutTransition(this, intent); + startActivityForResultWithoutTransition(this, intent); } private void showRandomSongs() @@ -496,7 +498,7 @@ public class MainActivity extends SubsonicTabActivity final Intent intent = new Intent(this, SelectAlbumActivity.class); intent.putExtra(Constants.INTENT_EXTRA_NAME_RANDOM, 1); intent.putExtra(Constants.INTENT_EXTRA_NAME_ALBUM_LIST_SIZE, Util.getMaxSongs(this)); - Util.startActivityWithoutTransition(this, intent); + startActivityForResultWithoutTransition(this, intent); } private void showArtists() @@ -504,20 +506,20 @@ public class MainActivity extends SubsonicTabActivity final Intent intent = new Intent(this, SelectArtistActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); intent.putExtra(Constants.INTENT_EXTRA_NAME_ALBUM_LIST_TITLE, getResources().getString(R.string.main_artists_title)); - Util.startActivityWithoutTransition(this, intent); + startActivityForResultWithoutTransition(this, intent); } private void showGenres() { final Intent intent = new Intent(this, SelectGenreActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); - Util.startActivityWithoutTransition(this, intent); + startActivityForResultWithoutTransition(this, intent); } private void showVideos() { final Intent intent = new Intent(this, SelectAlbumActivity.class); intent.putExtra(Constants.INTENT_EXTRA_NAME_VIDEOS, 1); - Util.startActivityWithoutTransition(this, intent); + startActivityForResultWithoutTransition(this, intent); } } \ No newline at end of file diff --git a/src/com/thejoshwa/ultrasonic/androidapp/activity/PreferenceResultActivity.java b/src/com/thejoshwa/ultrasonic/androidapp/activity/PreferenceResultActivity.java new file mode 100644 index 00000000..042a10f2 --- /dev/null +++ b/src/com/thejoshwa/ultrasonic/androidapp/activity/PreferenceResultActivity.java @@ -0,0 +1,37 @@ +package com.thejoshwa.ultrasonic.androidapp.activity; + +import android.app.Activity; +import android.content.Intent; +import android.preference.PreferenceActivity; + +import com.thejoshwa.ultrasonic.androidapp.util.Constants; +import com.thejoshwa.ultrasonic.androidapp.util.Util; + +/** + * Created by Joshua Bahnsen on 12/30/13. + */ +public class PreferenceResultActivity extends PreferenceActivity +{ + @Override + protected void onActivityResult(int requestCode, int resultCode, Intent data) + { + switch (resultCode) + { + case Constants.RESULT_CLOSE_ALL: + setResult(Constants.RESULT_CLOSE_ALL); + finish(); + } + super.onActivityResult(requestCode, resultCode, data); + } + + protected void startActivityForResultWithoutTransition(Activity currentActivity, Class newActivity) + { + startActivityForResultWithoutTransition(currentActivity, new Intent(currentActivity, newActivity)); + } + + protected void startActivityForResultWithoutTransition(Activity currentActivity, Intent intent) + { + startActivityForResult(intent, 0); + Util.disablePendingTransition(currentActivity); + } +} diff --git a/src/com/thejoshwa/ultrasonic/androidapp/activity/QueryReceiverActivity.java b/src/com/thejoshwa/ultrasonic/androidapp/activity/QueryReceiverActivity.java index abe49f53..ae14cf03 100644 --- a/src/com/thejoshwa/ultrasonic/androidapp/activity/QueryReceiverActivity.java +++ b/src/com/thejoshwa/ultrasonic/androidapp/activity/QueryReceiverActivity.java @@ -19,7 +19,6 @@ package com.thejoshwa.ultrasonic.androidapp.activity; -import android.app.Activity; import android.app.SearchManager; import android.content.Intent; import android.os.Bundle; @@ -34,7 +33,7 @@ import com.thejoshwa.ultrasonic.androidapp.util.Util; * * @author Sindre Mehus */ -public class QueryReceiverActivity extends Activity +public class QueryReceiverActivity extends ResultActivity { @Override @@ -51,7 +50,7 @@ public class QueryReceiverActivity extends Activity Intent intent = new Intent(QueryReceiverActivity.this, SearchActivity.class); intent.putExtra(Constants.INTENT_EXTRA_NAME_QUERY, query); - Util.startActivityWithoutTransition(QueryReceiverActivity.this, intent); + startActivityForResultWithoutTransition(QueryReceiverActivity.this, intent); } finish(); Util.disablePendingTransition(this); diff --git a/src/com/thejoshwa/ultrasonic/androidapp/activity/ResultActivity.java b/src/com/thejoshwa/ultrasonic/androidapp/activity/ResultActivity.java new file mode 100644 index 00000000..f14d1ad7 --- /dev/null +++ b/src/com/thejoshwa/ultrasonic/androidapp/activity/ResultActivity.java @@ -0,0 +1,36 @@ +package com.thejoshwa.ultrasonic.androidapp.activity; + +import android.app.Activity; +import android.content.Intent; + +import com.thejoshwa.ultrasonic.androidapp.util.Constants; +import com.thejoshwa.ultrasonic.androidapp.util.Util; + +/** + * Created by Joshua Bahnsen on 12/30/13. + */ +public class ResultActivity extends Activity +{ + @Override + protected void onActivityResult(int requestCode, int resultCode, Intent data) + { + switch (resultCode) + { + case Constants.RESULT_CLOSE_ALL: + setResult(Constants.RESULT_CLOSE_ALL); + finish(); + } + super.onActivityResult(requestCode, resultCode, data); + } + + protected void startActivityForResultWithoutTransition(Activity currentActivity, Class newActivity) + { + startActivityForResultWithoutTransition(currentActivity, new Intent(currentActivity, newActivity)); + } + + protected void startActivityForResultWithoutTransition(Activity currentActivity, Intent intent) + { + startActivityForResult(intent, 0); + Util.disablePendingTransition(currentActivity); + } +} diff --git a/src/com/thejoshwa/ultrasonic/androidapp/activity/SearchActivity.java b/src/com/thejoshwa/ultrasonic/androidapp/activity/SearchActivity.java index 512335d1..42b0e990 100644 --- a/src/com/thejoshwa/ultrasonic/androidapp/activity/SearchActivity.java +++ b/src/com/thejoshwa/ultrasonic/androidapp/activity/SearchActivity.java @@ -172,19 +172,19 @@ public class SearchActivity extends SubsonicTabActivity { super.onNewIntent(intent); String query = intent.getStringExtra(Constants.INTENT_EXTRA_NAME_QUERY); - boolean autoplay = intent.getBooleanExtra(Constants.INTENT_EXTRA_NAME_AUTOPLAY, false); - boolean requestsearch = intent.getBooleanExtra(Constants.INTENT_EXTRA_REQUEST_SEARCH, false); + boolean autoPlay = intent.getBooleanExtra(Constants.INTENT_EXTRA_NAME_AUTOPLAY, false); + boolean requestSearch = intent.getBooleanExtra(Constants.INTENT_EXTRA_REQUEST_SEARCH, false); if (query != null) { mergeAdapter = new MergeAdapter(); list.setAdapter(mergeAdapter); - search(query, autoplay); + search(query, autoPlay); } else { populateList(); - if (requestsearch) onSearchRequested(); + if (requestSearch) onSearchRequested(); } } @@ -493,7 +493,7 @@ public class SearchActivity extends SubsonicTabActivity Intent intent = new Intent(this, SelectAlbumActivity.class); intent.putExtra(Constants.INTENT_EXTRA_NAME_ID, artist.getId()); intent.putExtra(Constants.INTENT_EXTRA_NAME_NAME, artist.getName()); - Util.startActivityWithoutTransition(this, intent); + startActivityForResultWithoutTransition(this, intent); } private void onAlbumSelected(MusicDirectory.Entry album, boolean autoplay) @@ -503,7 +503,7 @@ public class SearchActivity extends SubsonicTabActivity intent.putExtra(Constants.INTENT_EXTRA_NAME_NAME, album.getTitle()); intent.putExtra(Constants.INTENT_EXTRA_NAME_IS_ALBUM, album.isDirectory()); intent.putExtra(Constants.INTENT_EXTRA_NAME_AUTOPLAY, autoplay); - Util.startActivityWithoutTransition(SearchActivity.this, intent); + startActivityForResultWithoutTransition(SearchActivity.this, intent); } private void onSongSelected(MusicDirectory.Entry song, boolean save, boolean append, boolean autoplay, boolean playNext) diff --git a/src/com/thejoshwa/ultrasonic/androidapp/activity/SelectAlbumActivity.java b/src/com/thejoshwa/ultrasonic/androidapp/activity/SelectAlbumActivity.java index b742988d..56b8217c 100644 --- a/src/com/thejoshwa/ultrasonic/androidapp/activity/SelectAlbumActivity.java +++ b/src/com/thejoshwa/ultrasonic/androidapp/activity/SelectAlbumActivity.java @@ -123,7 +123,7 @@ public class SelectAlbumActivity extends SubsonicTabActivity intent.putExtra(Constants.INTENT_EXTRA_NAME_IS_ALBUM, entry.isDirectory()); intent.putExtra(Constants.INTENT_EXTRA_NAME_NAME, entry.getTitle()); intent.putExtra(Constants.INTENT_EXTRA_NAME_PARENT_ID, entry.getParent()); - Util.startActivityWithoutTransition(SelectAlbumActivity.this, intent); + startActivityForResultWithoutTransition(SelectAlbumActivity.this, intent); } else if (entry != null && entry.isVideo()) { @@ -394,7 +394,7 @@ public class SelectAlbumActivity extends SubsonicTabActivity finish(); Intent intent = getIntent(); intent.putExtra(Constants.INTENT_EXTRA_NAME_REFRESH, true); - Util.startActivityWithoutTransition(this, intent); + startActivityForResultWithoutTransition(this, intent); } @Override @@ -490,7 +490,7 @@ public class SelectAlbumActivity extends SubsonicTabActivity case R.id.main_shuffle: Intent intent1 = new Intent(this, DownloadActivity.class); intent1.putExtra(Constants.INTENT_EXTRA_NAME_SHUFFLE, true); - Util.startActivityWithoutTransition(this, intent1); + startActivityForResultWithoutTransition(this, intent1); return true; case R.id.select_album_play_all: playAll(); @@ -733,7 +733,7 @@ public class SelectAlbumActivity extends SubsonicTabActivity intent.putExtra(Constants.INTENT_EXTRA_NAME_GENRE_NAME, genre); intent.putExtra(Constants.INTENT_EXTRA_NAME_ALBUM_LIST_SIZE, size); intent.putExtra(Constants.INTENT_EXTRA_NAME_ALBUM_LIST_OFFSET, offset); - Util.startActivityWithoutTransition(SelectAlbumActivity.this, intent); + startActivityForResultWithoutTransition(SelectAlbumActivity.this, intent); } }); @@ -880,7 +880,7 @@ public class SelectAlbumActivity extends SubsonicTabActivity intent.putExtra(Constants.INTENT_EXTRA_NAME_ALBUM_LIST_TYPE, type); intent.putExtra(Constants.INTENT_EXTRA_NAME_ALBUM_LIST_SIZE, size); intent.putExtra(Constants.INTENT_EXTRA_NAME_ALBUM_LIST_OFFSET, offset); - Util.startActivityWithoutTransition(SelectAlbumActivity.this, intent); + startActivityForResultWithoutTransition(SelectAlbumActivity.this, intent); } }); } @@ -1091,7 +1091,7 @@ public class SelectAlbumActivity extends SubsonicTabActivity } } - final int listSize = getIntent().getIntExtra(Constants.INTENT_EXTRA_NAME_ALBUM_LIST_SIZE, 0); + final int listSize = getIntent().getIntExtra(Constants.INTENT_EXTRA_NAME_ALBUM_LIST_SIZE, 0); if (songCount > 0) { @@ -1135,7 +1135,7 @@ public class SelectAlbumActivity extends SubsonicTabActivity intent.putExtra(Constants.INTENT_EXTRA_NAME_RANDOM, 1); intent.putExtra(Constants.INTENT_EXTRA_NAME_ALBUM_LIST_SIZE, listSize); intent.putExtra(Constants.INTENT_EXTRA_NAME_ALBUM_LIST_OFFSET, offset); - Util.startActivityWithoutTransition(SelectAlbumActivity.this, intent); + startActivityForResultWithoutTransition(SelectAlbumActivity.this, intent); } }); } diff --git a/src/com/thejoshwa/ultrasonic/androidapp/activity/SelectArtistActivity.java b/src/com/thejoshwa/ultrasonic/androidapp/activity/SelectArtistActivity.java index 0d8602e0..6b01a155 100644 --- a/src/com/thejoshwa/ultrasonic/androidapp/activity/SelectArtistActivity.java +++ b/src/com/thejoshwa/ultrasonic/androidapp/activity/SelectArtistActivity.java @@ -129,7 +129,7 @@ public class SelectArtistActivity extends SubsonicTabActivity implements Adapter String title = getIntent().getStringExtra(Constants.INTENT_EXTRA_NAME_ALBUM_LIST_TITLE); intent.putExtra(Constants.INTENT_EXTRA_NAME_ALBUM_LIST_TITLE, title); intent.putExtra(Constants.INTENT_EXTRA_NAME_REFRESH, true); - Util.startActivityWithoutTransition(this, intent); + startActivityForResultWithoutTransition(this, intent); } private void selectFolder() @@ -221,7 +221,7 @@ public class SelectArtistActivity extends SubsonicTabActivity implements Adapter intent.putExtra(Constants.INTENT_EXTRA_NAME_NAME, artist.getName()); intent.putExtra(Constants.INTENT_EXTRA_NAME_PARENT_ID, artist.getId()); intent.putExtra(Constants.INTENT_EXTRA_NAME_ARTIST, true); - Util.startActivityWithoutTransition(this, intent); + startActivityForResultWithoutTransition(this, intent); } } } @@ -335,7 +335,7 @@ public class SelectArtistActivity extends SubsonicTabActivity implements Adapter case R.id.main_shuffle: Intent intent = new Intent(this, DownloadActivity.class); intent.putExtra(Constants.INTENT_EXTRA_NAME_SHUFFLE, true); - Util.startActivityWithoutTransition(this, intent); + startActivityForResultWithoutTransition(this, intent); return true; } diff --git a/src/com/thejoshwa/ultrasonic/androidapp/activity/SelectGenreActivity.java b/src/com/thejoshwa/ultrasonic/androidapp/activity/SelectGenreActivity.java index 465298db..37813ac9 100644 --- a/src/com/thejoshwa/ultrasonic/androidapp/activity/SelectGenreActivity.java +++ b/src/com/thejoshwa/ultrasonic/androidapp/activity/SelectGenreActivity.java @@ -102,7 +102,7 @@ public class SelectGenreActivity extends SubsonicTabActivity implements AdapterV finish(); Intent intent = getIntent(); intent.putExtra(Constants.INTENT_EXTRA_NAME_REFRESH, true); - Util.startActivityWithoutTransition(this, intent); + startActivityForResultWithoutTransition(this, intent); } private void load() @@ -154,7 +154,7 @@ public class SelectGenreActivity extends SubsonicTabActivity implements AdapterV intent.putExtra(Constants.INTENT_EXTRA_NAME_GENRE_NAME, genre.getName()); intent.putExtra(Constants.INTENT_EXTRA_NAME_ALBUM_LIST_SIZE, Util.getMaxSongs(this)); intent.putExtra(Constants.INTENT_EXTRA_NAME_ALBUM_LIST_OFFSET, 0); - Util.startActivityWithoutTransition(this, intent); + startActivityForResultWithoutTransition(this, intent); } } @@ -169,7 +169,7 @@ public class SelectGenreActivity extends SubsonicTabActivity implements AdapterV case R.id.main_shuffle: Intent intent = new Intent(this, DownloadActivity.class); intent.putExtra(Constants.INTENT_EXTRA_NAME_SHUFFLE, true); - Util.startActivityWithoutTransition(this, intent); + startActivityForResultWithoutTransition(this, intent); return true; } diff --git a/src/com/thejoshwa/ultrasonic/androidapp/activity/SelectPlaylistActivity.java b/src/com/thejoshwa/ultrasonic/androidapp/activity/SelectPlaylistActivity.java index cd095c41..20c9a15f 100644 --- a/src/com/thejoshwa/ultrasonic/androidapp/activity/SelectPlaylistActivity.java +++ b/src/com/thejoshwa/ultrasonic/androidapp/activity/SelectPlaylistActivity.java @@ -110,7 +110,7 @@ public class SelectPlaylistActivity extends SubsonicTabActivity implements Adapt finish(); Intent intent = new Intent(this, SelectPlaylistActivity.class); intent.putExtra(Constants.INTENT_EXTRA_NAME_REFRESH, true); - Util.startActivityWithoutTransition(this, intent); + startActivityForResultWithoutTransition(this, intent); } private void load() @@ -188,7 +188,7 @@ public class SelectPlaylistActivity extends SubsonicTabActivity implements Adapt intent.putExtra(Constants.INTENT_EXTRA_NAME_PLAYLIST_ID, playlist.getId()); intent.putExtra(Constants.INTENT_EXTRA_NAME_PLAYLIST_NAME, playlist.getName()); intent.putExtra(Constants.INTENT_EXTRA_NAME_AUTOPLAY, true); - Util.startActivityWithoutTransition(SelectPlaylistActivity.this, intent); + startActivityForResultWithoutTransition(SelectPlaylistActivity.this, intent); break; case R.id.playlist_menu_play_shuffled: intent = new Intent(SelectPlaylistActivity.this, SelectAlbumActivity.class); @@ -196,7 +196,7 @@ public class SelectPlaylistActivity extends SubsonicTabActivity implements Adapt intent.putExtra(Constants.INTENT_EXTRA_NAME_PLAYLIST_NAME, playlist.getName()); intent.putExtra(Constants.INTENT_EXTRA_NAME_AUTOPLAY, true); intent.putExtra(Constants.INTENT_EXTRA_NAME_SHUFFLE, true); - Util.startActivityWithoutTransition(SelectPlaylistActivity.this, intent); + startActivityForResultWithoutTransition(SelectPlaylistActivity.this, intent); break; case R.id.playlist_menu_delete: deletePlaylist(playlist); @@ -239,7 +239,7 @@ public class SelectPlaylistActivity extends SubsonicTabActivity implements Adapt Intent intent = new Intent(SelectPlaylistActivity.this, SelectAlbumActivity.class); intent.putExtra(Constants.INTENT_EXTRA_NAME_PLAYLIST_ID, playlist.getId()); intent.putExtra(Constants.INTENT_EXTRA_NAME_PLAYLIST_NAME, playlist.getName()); - Util.startActivityWithoutTransition(SelectPlaylistActivity.this, intent); + startActivityForResultWithoutTransition(SelectPlaylistActivity.this, intent); } private void deletePlaylist(final Playlist playlist) diff --git a/src/com/thejoshwa/ultrasonic/androidapp/activity/SettingsActivity.java b/src/com/thejoshwa/ultrasonic/androidapp/activity/SettingsActivity.java index eac51d83..b9239923 100644 --- a/src/com/thejoshwa/ultrasonic/androidapp/activity/SettingsActivity.java +++ b/src/com/thejoshwa/ultrasonic/androidapp/activity/SettingsActivity.java @@ -28,7 +28,6 @@ import android.preference.CheckBoxPreference; import android.preference.EditTextPreference; import android.preference.ListPreference; import android.preference.Preference; -import android.preference.PreferenceActivity; import android.preference.PreferenceCategory; import android.preference.PreferenceManager; import android.preference.PreferenceScreen; @@ -61,9 +60,8 @@ import java.net.URL; import java.util.LinkedHashMap; import java.util.Map; -public class SettingsActivity extends PreferenceActivity implements SharedPreferences.OnSharedPreferenceChangeListener, OnClickListener +public class SettingsActivity extends PreferenceResultActivity implements SharedPreferences.OnSharedPreferenceChangeListener, OnClickListener { - private static final String TAG = SettingsActivity.class.getSimpleName(); private final Map serverSettings = new LinkedHashMap(); private boolean testingConnection; @@ -815,48 +813,48 @@ public class SettingsActivity extends PreferenceActivity implements SharedPrefer case R.id.menu_home: intent = new Intent(this, MainActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); - Util.startActivityWithoutTransition(this, intent); + startActivityForResultWithoutTransition(this, intent); break; case R.id.menu_browse: intent = new Intent(this, SelectArtistActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); - Util.startActivityWithoutTransition(this, intent); + startActivityForResultWithoutTransition(this, intent); break; case R.id.menu_search: intent = new Intent(this, SearchActivity.class); intent.putExtra(Constants.INTENT_EXTRA_REQUEST_SEARCH, true); - Util.startActivityWithoutTransition(this, intent); + startActivityForResultWithoutTransition(this, intent); break; case R.id.menu_playlists: intent = new Intent(this, SelectPlaylistActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); - Util.startActivityWithoutTransition(this, intent); + startActivityForResultWithoutTransition(this, intent); break; case R.id.menu_shares: intent = new Intent(this, ShareActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); - Util.startActivityWithoutTransition(this, intent); + startActivityForResultWithoutTransition(this, intent); break; case R.id.menu_chat: - Util.startActivityWithoutTransition(this, ChatActivity.class); + startActivityForResultWithoutTransition(this, ChatActivity.class); break; case R.id.menu_bookmarks: - Util.startActivityWithoutTransition(this, BookmarkActivity.class); + startActivityForResultWithoutTransition(this, BookmarkActivity.class); break; case R.id.menu_now_playing: - Util.startActivityWithoutTransition(this, DownloadActivity.class); + startActivityForResultWithoutTransition(this, DownloadActivity.class); break; case R.id.menu_settings: - Util.startActivityWithoutTransition(this, SettingsActivity.class); + startActivityForResultWithoutTransition(this, SettingsActivity.class); break; case R.id.menu_about: - Util.startActivityWithoutTransition(this, HelpActivity.class); + startActivityForResultWithoutTransition(this, HelpActivity.class); break; case R.id.menu_exit: intent = new Intent(this, MainActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); intent.putExtra(Constants.INTENT_EXTRA_NAME_EXIT, true); - Util.startActivityWithoutTransition(this, intent); + startActivityForResultWithoutTransition(this, intent); break; } diff --git a/src/com/thejoshwa/ultrasonic/androidapp/activity/ShareActivity.java b/src/com/thejoshwa/ultrasonic/androidapp/activity/ShareActivity.java index b64b60bb..78f2d80d 100644 --- a/src/com/thejoshwa/ultrasonic/androidapp/activity/ShareActivity.java +++ b/src/com/thejoshwa/ultrasonic/androidapp/activity/ShareActivity.java @@ -112,7 +112,7 @@ public class ShareActivity extends SubsonicTabActivity implements AdapterView.On finish(); Intent intent = new Intent(this, ShareActivity.class); intent.putExtra(Constants.INTENT_EXTRA_NAME_REFRESH, true); - Util.startActivityWithoutTransition(this, intent); + startActivityForResultWithoutTransition(this, intent); } private void load() @@ -219,7 +219,7 @@ public class ShareActivity extends SubsonicTabActivity implements AdapterView.On Intent intent = new Intent(ShareActivity.this, SelectAlbumActivity.class); intent.putExtra(Constants.INTENT_EXTRA_NAME_SHARE_ID, share.getId()); intent.putExtra(Constants.INTENT_EXTRA_NAME_SHARE_NAME, share.getName()); - Util.startActivityWithoutTransition(ShareActivity.this, intent); + startActivityForResultWithoutTransition(ShareActivity.this, intent); } private void deleteShare(final Share share) diff --git a/src/com/thejoshwa/ultrasonic/androidapp/activity/SubsonicTabActivity.java b/src/com/thejoshwa/ultrasonic/androidapp/activity/SubsonicTabActivity.java index bf63b3b2..aa628daf 100644 --- a/src/com/thejoshwa/ultrasonic/androidapp/activity/SubsonicTabActivity.java +++ b/src/com/thejoshwa/ultrasonic/androidapp/activity/SubsonicTabActivity.java @@ -20,7 +20,6 @@ package com.thejoshwa.ultrasonic.androidapp.activity; import android.annotation.SuppressLint; import android.app.ActionBar; -import android.app.Activity; import android.app.AlertDialog; import android.app.Dialog; import android.app.Notification; @@ -91,7 +90,7 @@ import java.util.regex.Pattern; /** * @author Sindre Mehus */ -public class SubsonicTabActivity extends Activity implements OnClickListener +public class SubsonicTabActivity extends ResultActivity implements OnClickListener { private static final String TAG = SubsonicTabActivity.class.getSimpleName(); private static final Pattern COMPILE = Pattern.compile(":"); @@ -254,7 +253,7 @@ public class SubsonicTabActivity extends Activity implements OnClickListener Intent intent = new Intent(this, this.getClass()); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); intent.putExtras(getIntent()); - Util.startActivityWithoutTransition(this, intent); + startActivityForResultWithoutTransition(this, intent); } @Override @@ -542,7 +541,7 @@ public class SubsonicTabActivity extends Activity implements OnClickListener @Override public void onClick(View view) { - Util.startActivityWithoutTransition(SubsonicTabActivity.this, intent); + startActivityForResultWithoutTransition(SubsonicTabActivity.this, intent); } }); @@ -551,7 +550,7 @@ public class SubsonicTabActivity extends Activity implements OnClickListener ImageView nowPlayingControlPlay = (ImageView) nowPlayingView.findViewById(R.id.now_playing_control_play); - SwipeDetector swipeDetector = SwipeDetector.Create(SubsonicTabActivity.this, downloadService); + SwipeDetector swipeDetector = new SwipeDetector(SubsonicTabActivity.this, downloadService); setOnTouchListenerOnUiThread(nowPlayingView, swipeDetector); setOnClickListenerOnUiThread(nowPlayingView, new OnClickListener() @@ -997,7 +996,7 @@ public class SubsonicTabActivity extends Activity implements OnClickListener { if (Util.getShouldTransitionOnPlaybackPreference(SubsonicTabActivity.this)) { - Util.startActivityWithoutTransition(SubsonicTabActivity.this, DownloadActivity.class); + startActivityForResultWithoutTransition(SubsonicTabActivity.this, DownloadActivity.class); } } else if (save) @@ -1164,7 +1163,7 @@ public class SubsonicTabActivity extends Activity implements OnClickListener downloadService.download(songs, save, autoplay, playNext, shuffle, false); if (!append && Util.getShouldTransitionOnPlaybackPreference(SubsonicTabActivity.this)) { - Util.startActivityWithoutTransition(SubsonicTabActivity.this, DownloadActivity.class); + startActivityForResultWithoutTransition(SubsonicTabActivity.this, DownloadActivity.class); } } } @@ -1419,48 +1418,48 @@ public class SubsonicTabActivity extends Activity implements OnClickListener case R.id.menu_home: intent = new Intent(SubsonicTabActivity.this, MainActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); - Util.startActivityWithoutTransition(SubsonicTabActivity.this, intent); + startActivityForResultWithoutTransition(SubsonicTabActivity.this, intent); break; case R.id.menu_browse: intent = new Intent(SubsonicTabActivity.this, SelectArtistActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); - Util.startActivityWithoutTransition(SubsonicTabActivity.this, intent); + startActivityForResultWithoutTransition(SubsonicTabActivity.this, intent); break; case R.id.menu_search: intent = new Intent(SubsonicTabActivity.this, SearchActivity.class); intent.putExtra(Constants.INTENT_EXTRA_REQUEST_SEARCH, true); - Util.startActivityWithoutTransition(SubsonicTabActivity.this, intent); + startActivityForResultWithoutTransition(SubsonicTabActivity.this, intent); break; case R.id.menu_playlists: intent = new Intent(SubsonicTabActivity.this, SelectPlaylistActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); - Util.startActivityWithoutTransition(SubsonicTabActivity.this, intent); + startActivityForResultWithoutTransition(SubsonicTabActivity.this, intent); break; case R.id.menu_shares: intent = new Intent(SubsonicTabActivity.this, ShareActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); - Util.startActivityWithoutTransition(SubsonicTabActivity.this, intent); + startActivityForResultWithoutTransition(SubsonicTabActivity.this, intent); break; case R.id.menu_chat: - Util.startActivityWithoutTransition(SubsonicTabActivity.this, ChatActivity.class); + startActivityForResultWithoutTransition(SubsonicTabActivity.this, ChatActivity.class); break; case R.id.menu_bookmarks: - Util.startActivityWithoutTransition(this, BookmarkActivity.class); + startActivityForResultWithoutTransition(this, BookmarkActivity.class); break; case R.id.menu_now_playing: - Util.startActivityWithoutTransition(SubsonicTabActivity.this, DownloadActivity.class); + startActivityForResultWithoutTransition(SubsonicTabActivity.this, DownloadActivity.class); break; case R.id.menu_settings: - Util.startActivityWithoutTransition(SubsonicTabActivity.this, SettingsActivity.class); + startActivityForResultWithoutTransition(SubsonicTabActivity.this, SettingsActivity.class); break; case R.id.menu_about: - Util.startActivityWithoutTransition(SubsonicTabActivity.this, HelpActivity.class); + startActivityForResultWithoutTransition(SubsonicTabActivity.this, HelpActivity.class); break; case R.id.menu_exit: intent = new Intent(SubsonicTabActivity.this, MainActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); intent.putExtra(Constants.INTENT_EXTRA_NAME_EXIT, true); - Util.startActivityWithoutTransition(SubsonicTabActivity.this, intent); + startActivityForResultWithoutTransition(SubsonicTabActivity.this, intent); break; } @@ -1497,15 +1496,12 @@ public class SubsonicTabActivity extends Activity implements OnClickListener super.onBackPressed(); } - static class SwipeDetector implements OnTouchListener + protected class SwipeDetector implements OnTouchListener { - - public static SwipeDetector Create(SubsonicTabActivity activity, final DownloadService downloadService) + public SwipeDetector(SubsonicTabActivity activity, final DownloadService downloadService) { - SwipeDetector swipeDetector = new SwipeDetector(); - swipeDetector.downloadService = downloadService; - swipeDetector.activity = activity; - return swipeDetector; + this.downloadService = downloadService; + this.activity = activity; } private static final int MIN_DISTANCE = 30; @@ -1560,7 +1556,7 @@ public class SubsonicTabActivity extends Activity implements OnClickListener } } - Util.startActivityWithoutTransition(activity, DownloadActivity.class); + SubsonicTabActivity.this.startActivityForResultWithoutTransition(activity, DownloadActivity.class); return false; } } diff --git a/src/com/thejoshwa/ultrasonic/androidapp/activity/VoiceQueryReceiverActivity.java b/src/com/thejoshwa/ultrasonic/androidapp/activity/VoiceQueryReceiverActivity.java index fb106034..a7c2e18c 100644 --- a/src/com/thejoshwa/ultrasonic/androidapp/activity/VoiceQueryReceiverActivity.java +++ b/src/com/thejoshwa/ultrasonic/androidapp/activity/VoiceQueryReceiverActivity.java @@ -19,7 +19,6 @@ package com.thejoshwa.ultrasonic.androidapp.activity; -import android.app.Activity; import android.app.SearchManager; import android.content.Intent; import android.os.Bundle; @@ -36,7 +35,7 @@ import com.thejoshwa.ultrasonic.androidapp.util.Util; * * @author Sindre Mehus */ -public class VoiceQueryReceiverActivity extends Activity +public class VoiceQueryReceiverActivity extends ResultActivity { @Override @@ -54,7 +53,7 @@ public class VoiceQueryReceiverActivity extends Activity Intent intent = new Intent(VoiceQueryReceiverActivity.this, SearchActivity.class); intent.putExtra(Constants.INTENT_EXTRA_NAME_QUERY, query); intent.putExtra(Constants.INTENT_EXTRA_NAME_AUTOPLAY, true); - Util.startActivityWithoutTransition(VoiceQueryReceiverActivity.this, intent); + startActivityForResultWithoutTransition(VoiceQueryReceiverActivity.this, intent); } finish(); Util.disablePendingTransition(this); diff --git a/src/com/thejoshwa/ultrasonic/androidapp/util/Constants.java b/src/com/thejoshwa/ultrasonic/androidapp/util/Constants.java index 44aa3978..8c5ebe05 100644 --- a/src/com/thejoshwa/ultrasonic/androidapp/util/Constants.java +++ b/src/com/thejoshwa/ultrasonic/androidapp/util/Constants.java @@ -140,6 +140,7 @@ public final class Constants public static final String ALBUM_ART_FILE = "folder.jpeg"; public static final String STARRED = "starred"; public static final String ALPHABETICAL_BY_NAME = "alphabeticalByName"; + public static final int RESULT_CLOSE_ALL = 1337; private Constants() { diff --git a/src/com/thejoshwa/ultrasonic/androidapp/util/Util.java b/src/com/thejoshwa/ultrasonic/androidapp/util/Util.java index af22b79d..43cd4a43 100644 --- a/src/com/thejoshwa/ultrasonic/androidapp/util/Util.java +++ b/src/com/thejoshwa/ultrasonic/androidapp/util/Util.java @@ -830,17 +830,6 @@ public class Util extends DownloadActivity } } - public static void startActivityWithoutTransition(Activity currentActivity, Class newActivity) - { - startActivityWithoutTransition(currentActivity, new Intent(currentActivity, newActivity)); - } - - public static void startActivityWithoutTransition(Activity currentActivity, Intent intent) - { - currentActivity.startActivity(intent); - disablePendingTransition(currentActivity); - } - public static void disablePendingTransition(Activity activity) { activity.overridePendingTransition(0, 0);