View Javadoc

1   /***
2    *     Ambient - A music player for the Android platform
3    Copyright (C) 2007 Martin Vysny
4    
5    This program is free software: you can redistribute it and/or modify
6    it under the terms of the GNU General Public License as published by
7    the Free Software Foundation, either version 3 of the License, or
8    (at your option) any later version.
9    
10   This program is distributed in the hope that it will be useful,
11   but WITHOUT ANY WARRANTY; without even the implied warranty of
12   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13   GNU General Public License for more details.
14  
15   You should have received a copy of the GNU General Public License
16   along with this program.  If not, see <http://www.gnu.org/licenses/>.
17   */
18  package sk.baka.ambient;
19  
20  import sk.baka.ambient.collection.CollectionUtils;
21  import sk.baka.ambient.playlist.Random;
22  import sk.baka.ambient.playlist.Repeat;
23  
24  /***
25   * Enumerates all actions that can be taken.
26   * 
27   * @author Martin Vysny
28   */
29  public enum ActionsEnum {
30  	/***
31  	 * Opens the playlist management menu - you can sort or shuffle the
32  	 * playlist, add or remove tracks, save and open playlists.
33  	 */
34  	PlaylistManagement(R.drawable.playlist48, R.string.playlist_mgmt),
35  	/***
36  	 * Opens or hides the collection browser.
37  	 */
38  	ShowCollection(R.drawable.collection48, R.string.collection),
39  	/***
40  	 * Opens or hides the file browser.
41  	 */
42  	ShowFileBrowser(R.drawable.files48, R.string.fb),
43  	/***
44  	 * Opens or hides the player.
45  	 */
46  	ShowPlayer(R.drawable.player48, R.string.player),
47  	/***
48  	 * Opens or hides the context view.
49  	 */
50  	ShowContext(R.drawable.lyrics, R.string.context),
51  	/***
52  	 * Shows or hides karaoke for current track.
53  	 */
54  	ShowKaraoke(R.drawable.karaoke48, R.string.karaoke),
55  	/***
56  	 * Deletes karaoke for current track.
57  	 */
58  	RefreshKaraoke(R.drawable.refresh, R.string.refreshKaraoke),
59  	/***
60  	 * Opens or hides the Magnatune view.
61  	 */
62  	ShowMagnatune(R.drawable.magnatune, R.string.magnatune),
63  	/***
64  	 * Navigates back.
65  	 */
66  	Back(R.drawable.back48, R.string.back),
67  	/***
68  	 * Goes offline.
69  	 */
70  	GoOffline(R.drawable.online, R.string.goOffline),
71  	/***
72  	 * Goes online.
73  	 */
74  	GoOnline(R.drawable.offline, R.string.goOnline),
75  	/***
76  	 * Shows configuration window that configures Ambient.
77  	 */
78  	Configure(R.drawable.config48, R.string.configure),
79  	/***
80  	 * Clears the playlist.
81  	 */
82  	PlaylistClear(R.drawable.playlist_clear48, R.string.playlist_clear),
83  	/***
84  	 * Shuffles the playlist.
85  	 */
86  	PlaylistShuffle(R.drawable.playlist_shuffle48, R.string.playlist_shuffle),
87  	/***
88  	 * Sorts the playlist by album ordering, see
89  	 * {@link CollectionUtils#ALBUM_ORDER_COMPARATOR} for details.
90  	 */
91  	PlaylistSortByAlbums(R.drawable.playlist_sort, R.string.playlist_sort),
92  	/***
93  	 * Saves current playlist.
94  	 */
95  	PlaylistSave(R.drawable.playlist_save, R.string.playlist_ls),
96  	/***
97  	 * Sets normal play order.
98  	 */
99  	RandomNo(R.drawable.random_no, R.string.normal_song_order),
100 	/***
101 	 * Play random tracks.
102 	 */
103 	RandomTracks(R.drawable.random_track, R.string.random_tracks),
104 	/***
105 	 * Play random albums.
106 	 */
107 	RandomAlbums(R.drawable.random_album, R.string.random_albums),
108 	/***
109 	 * Play random albums and tracks in the albums.
110 	 */
111 	RandomAlbumsTracks(R.drawable.random_album_track,
112 			R.string.random_albums_tracks),
113 	/***
114 	 * Play random albums and tracks in the albums.
115 	 */
116 	RandomAlbumsPlaylist(R.drawable.random_album_playlist,
117 			R.string.random_albums_playlist),
118 	/***
119 	 * Does not repeat anything.
120 	 */
121 	RepeatNothing(R.drawable.repeat_no, R.string.repeat_nothing),
122 	/***
123 	 * Repeat single track over and over.
124 	 */
125 	RepeatTrack(R.drawable.repeat_track, R.string.repeat_track),
126 	/***
127 	 * Repeats an album.
128 	 */
129 	RepeatAlbum(R.drawable.repeat_album, R.string.repeat_album),
130 	/***
131 	 * Repeats playlist.
132 	 */
133 	RepeatPlaylist(R.drawable.repeat_playlist, R.string.repeat_playlist),
134 	/***
135 	 * Queues selected tracks.
136 	 */
137 	QueueTracks(R.drawable.queue, R.string.queue_track),
138 	/***
139 	 * Clears the track queue.
140 	 */
141 	QueueClear(R.drawable.dequeue, R.string.clear_queue),
142 	/***
143 	 * Moves to the next song in the playlist.
144 	 */
145 	PlaybackNext(R.drawable.next48, R.string.next_song),
146 	/***
147 	 * Moves to the previous song in the playlist.
148 	 */
149 	PlaybackPrevious(R.drawable.prev48, R.string.prev_song),
150 	/***
151 	 * Stops the playback.
152 	 */
153 	PlaybackStop(R.drawable.stop48, R.string.stop),
154 	/***
155 	 * Starts the playback.
156 	 */
157 	PlaybackPlay(R.drawable.play48, R.string.play),
158 	/***
159 	 * Pauses the playback.
160 	 */
161 	PlaybackPause(R.drawable.pause48, R.string.pause),
162 	/***
163 	 * Shows the statistics.
164 	 */
165 	ShowStatistics(R.drawable.statistics, R.string.show_statistics),
166 	/***
167 	 * Hides Ambient and minimizes it.
168 	 */
169 	Minimize(R.drawable.back48, R.string.minimize),
170 	/***
171 	 * Activates static playlist.
172 	 */
173 	PlaylistStatic(R.drawable.staticplaylist, R.string.static_playlist),
174 	/***
175 	 * Activates dynamic playlist.
176 	 */
177 	PlaylistDynamic(R.drawable.dynamicplaylist, R.string.dynamic_playlist),
178 	/***
179 	 * Quits (closes) the application.
180 	 */
181 	Quit(R.drawable.quit, R.string.quit),
182 	/***
183 	 * Rescans the magnatune collection.
184 	 */
185 	MagnatuneRescan(R.drawable.refresh, R.string.magnatune_rescan),
186 	/***
187 	 * Shows the track's license.
188 	 */
189 	ShowLicense(R.drawable.magnatune, R.string.show_license),
190 	/***
191 	 * Opens the "buy" link.
192 	 */
193 	BuyAlbum(R.drawable.magnatune, R.string.buyAlbum),
194 	/***
195 	 * Shows the artist page.
196 	 */
197 	ShowArtistPage(R.drawable.magnatune, R.string.showArtistPage),
198 	/***
199 	 * Flips the visibility of "filtering by a year" in the collection.
200 	 */
201 	CollectionYear(R.drawable.year, R.string.coll_year),
202 	/***
203 	 * Shows the track lyrics.
204 	 */
205 	ShowLyrics(R.drawable.lyrics, R.string.show_lyrics),
206 	/***
207 	 * Shows the shoutcast view.
208 	 */
209 	ShowShoutcast(R.drawable.shoutcast48, R.string.showShoutcast),
210 	/***
211 	 * Shows the Ampache browser.
212 	 */
213 	ShowAmpache(R.drawable.ampache, R.string.ampache),
214 	/***
215 	 * Configure the Ampache connection.
216 	 */
217 	AmpacheConfigureClient(R.drawable.config48,
218 			R.string.ampacheConfigureConnection),
219 	/***
220 	 * Synchronize tracks with the Ampache server.
221 	 */
222 	AmpacheSynchronize(R.drawable.synchronize, R.string.ampacheSynchronize),
223 	/***
224 	 * Switch between the radio name/current track display.
225 	 */
226 	ShoutcastNameTrackSwitch(R.drawable.magnatune,
227 			R.string.shoutcastNameTrackSwitch),
228 	/***
229 	 * Shows the About dialog.
230 	 */
231 	About(R.drawable.button_i, R.string.aboutTitle),
232 	/***
233 	 * Shows a wiki page about selected artist.
234 	 */
235 	ShowWiki(R.drawable.wikipedia, R.string.show_wiki),
236 	/***
237 	 * Starts the embedded Ampache server. Local action.
238 	 */
239 	AmpacheStartServer(R.drawable.ampache_embedded_off,
240 			R.string.ampacheServerStart),
241 	/***
242 	 * Stops the embedded Ampache server. Local action.
243 	 */
244 	AmpacheStopServer(R.drawable.ampache_embedded_on,
245 			R.string.ampacheServerStop),
246 	/***
247 	 * Positions the file browser back to the root directory.
248 	 */
249 	GoToRoot(R.drawable.root, R.string.goToRoot),
250 	/***
251 	 * Deletes selected files.
252 	 */
253 	DeleteSelected(R.drawable.quit, R.string.deleteSelectedFiles);
254 	/***
255 	 * The icon resource of the action.
256 	 */
257 	public final int icon;
258 
259 	/***
260 	 * The caption resource.
261 	 */
262 	public final int caption;
263 
264 	private ActionsEnum(final int icon, final int caption) {
265 		this.icon = icon;
266 		this.caption = caption;
267 	}
268 
269 	/***
270 	 * Returns action for given random constant.
271 	 * 
272 	 * @param random
273 	 *            the random constant, must not be <code>null</code>.
274 	 * @return non-null action
275 	 */
276 	public static ActionsEnum getAction(final Random random) {
277 		switch (random) {
278 		case ALBUM:
279 			return RandomAlbums;
280 		case NONE:
281 			return RandomNo;
282 		case TRACK:
283 			return RandomTracks;
284 		case ALBUM_TRACK:
285 			return RandomAlbumsTracks;
286 		case ALBUM_PLAYLIST:
287 			return RandomAlbumsPlaylist;
288 		}
289 		throw new Error();
290 	}
291 
292 	/***
293 	 * Returns action for given random constant.
294 	 * 
295 	 * @param repeat
296 	 *            the random constant, must not be <code>null</code>.
297 	 * @return non-null action
298 	 */
299 	public static ActionsEnum getAction(final Repeat repeat) {
300 		switch (repeat) {
301 		case ALBUM:
302 			return RepeatAlbum;
303 		case NO:
304 			return RepeatNothing;
305 		case TRACK:
306 			return RepeatTrack;
307 		case PLAYLIST:
308 			return RepeatPlaylist;
309 		}
310 		throw new Error();
311 	}
312 }