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 java.io.Serializable;
21  
22  import sk.baka.ambient.activity.AmpacheClientBean;
23  import sk.baka.ambient.activity.main.MainActivity;
24  import sk.baka.ambient.playerservice.PlayerStateEnum;
25  import sk.baka.ambient.playlist.IPlaylistStrategy;
26  import sk.baka.ambient.playlist.Random;
27  import sk.baka.ambient.playlist.Repeat;
28  
29  /***
30   * A serializable application state.
31   * 
32   * @author Martin Vysny
33   */
34  public final class AppState implements Serializable {
35  	/***
36  	 * 
37  	 */
38  	private static final long serialVersionUID = 6222503996948628518L;
39  
40  	/***
41  	 * The playlist strategy.
42  	 */
43  	public IPlaylistStrategy playlist;
44  
45  	/***
46  	 * State of playback.
47  	 */
48  	public PlayerStateEnum state = PlayerStateEnum.Stopped;
49  
50  	/***
51  	 * Position in playback, in milliseconds.
52  	 */
53  	public int position = 0;
54  
55  	/***
56  	 * The repeat state.
57  	 */
58  	public Repeat repeat = Repeat.NO;
59  
60  	/***
61  	 * The random state.
62  	 */
63  	public Random random = Random.NONE;
64  
65  	/***
66  	 * The {@link MainActivity} visible controller.
67  	 */
68  	public int visibleController = -1;
69  
70  	/***
71  	 * Are we online?
72  	 */
73  	public boolean online = false;
74  
75  	/***
76  	 * Is GUI zoomed?
77  	 */
78  	public boolean zoomed = false;
79  
80  	/***
81  	 * The Ampache client configuration.
82  	 */
83  	public AmpacheClientBean ampacheClient;
84  
85  	/***
86  	 * A welcome dialog was shown for this version of Ambient.
87  	 */
88  	public String welcomeVersion;
89  
90  	/***
91  	 * Implemented by components that are aware of the global application state.
92  	 * 
93  	 * @author Martin Vysny
94  	 */
95  	public static interface IAppStateAware {
96  		/***
97  		 * Cherry-picks values from the application state and reinitializes
98  		 * itself.
99  		 * 
100 		 * @param state
101 		 *            the just-loaded state
102 		 */
103 		void reinit(final AppState state);
104 
105 		/***
106 		 * Stores the components state into the global state. Must not alter
107 		 * settings not applicable for this component.
108 		 * 
109 		 * @param state
110 		 *            the object to store to.
111 		 */
112 		void storeState(final AppState state);
113 	}
114 }