3d092f033a22be2552c65598598e558b97e520e8
[pub/Android/ownCloud.git] / actionbarsherlock / src / com / actionbarsherlock / app / SherlockFragmentActivity.java
1 package com.actionbarsherlock.app;
2
3 import android.content.res.Configuration;
4 import android.os.Bundle;
5 import android.support.v4.app.Watson;
6 import android.util.Log;
7 import android.view.KeyEvent;
8 import android.view.View;
9 import android.view.ViewGroup.LayoutParams;
10 import android.view.Window;
11 import com.actionbarsherlock.ActionBarSherlock;
12 import com.actionbarsherlock.view.ActionMode;
13 import com.actionbarsherlock.view.Menu;
14 import com.actionbarsherlock.view.MenuInflater;
15 import com.actionbarsherlock.view.MenuItem;
16
17 import static com.actionbarsherlock.ActionBarSherlock.OnActionModeFinishedListener;
18 import static com.actionbarsherlock.ActionBarSherlock.OnActionModeStartedListener;
19
20 /** @see {@link android.support.v4.app.Watson} */
21 public class SherlockFragmentActivity extends Watson implements OnActionModeStartedListener, OnActionModeFinishedListener {
22 private static final boolean DEBUG = false;
23 private static final String TAG = "SherlockFragmentActivity";
24
25 private ActionBarSherlock mSherlock;
26 private boolean mIgnoreNativeCreate = false;
27 private boolean mIgnoreNativePrepare = false;
28 private boolean mIgnoreNativeSelected = false;
29
30 protected final ActionBarSherlock getSherlock() {
31 if (mSherlock == null) {
32 mSherlock = ActionBarSherlock.wrap(this, ActionBarSherlock.FLAG_DELEGATE);
33 }
34 return mSherlock;
35 }
36
37
38 ///////////////////////////////////////////////////////////////////////////
39 // Action bar and mode
40 ///////////////////////////////////////////////////////////////////////////
41
42 public ActionBar getSupportActionBar() {
43 return getSherlock().getActionBar();
44 }
45
46 public ActionMode startActionMode(ActionMode.Callback callback) {
47 return getSherlock().startActionMode(callback);
48 }
49
50 @Override
51 public void onActionModeStarted(ActionMode mode) {}
52
53 @Override
54 public void onActionModeFinished(ActionMode mode) {}
55
56
57 ///////////////////////////////////////////////////////////////////////////
58 // General lifecycle/callback dispatching
59 ///////////////////////////////////////////////////////////////////////////
60
61 @Override
62 public void onConfigurationChanged(Configuration newConfig) {
63 super.onConfigurationChanged(newConfig);
64 getSherlock().dispatchConfigurationChanged(newConfig);
65 }
66
67 @Override
68 protected void onPostResume() {
69 super.onPostResume();
70 getSherlock().dispatchPostResume();
71 }
72
73 @Override
74 protected void onPause() {
75 getSherlock().dispatchPause();
76 super.onPause();
77 }
78
79 @Override
80 protected void onStop() {
81 getSherlock().dispatchStop();
82 super.onStop();
83 }
84
85 @Override
86 protected void onDestroy() {
87 getSherlock().dispatchDestroy();
88 super.onDestroy();
89 }
90
91 @Override
92 protected void onPostCreate(Bundle savedInstanceState) {
93 getSherlock().dispatchPostCreate(savedInstanceState);
94 super.onPostCreate(savedInstanceState);
95 }
96
97 @Override
98 protected void onTitleChanged(CharSequence title, int color) {
99 getSherlock().dispatchTitleChanged(title, color);
100 super.onTitleChanged(title, color);
101 }
102
103 @Override
104 public final boolean onMenuOpened(int featureId, android.view.Menu menu) {
105 if (getSherlock().dispatchMenuOpened(featureId, menu)) {
106 return true;
107 }
108 return super.onMenuOpened(featureId, menu);
109 }
110
111 @Override
112 public void onPanelClosed(int featureId, android.view.Menu menu) {
113 getSherlock().dispatchPanelClosed(featureId, menu);
114 super.onPanelClosed(featureId, menu);
115 }
116
117 @Override
118 public boolean dispatchKeyEvent(KeyEvent event) {
119 if (getSherlock().dispatchKeyEvent(event)) {
120 return true;
121 }
122 return super.dispatchKeyEvent(event);
123 }
124
125 @Override
126 protected void onSaveInstanceState(Bundle outState) {
127 super.onSaveInstanceState(outState);
128 getSherlock().dispatchSaveInstanceState(outState);
129 }
130
131 @Override
132 protected void onRestoreInstanceState(Bundle savedInstanceState) {
133 super.onRestoreInstanceState(savedInstanceState);
134 getSherlock().dispatchRestoreInstanceState(savedInstanceState);
135 }
136
137 ///////////////////////////////////////////////////////////////////////////
138 // Native menu handling
139 ///////////////////////////////////////////////////////////////////////////
140
141 public MenuInflater getSupportMenuInflater() {
142 if (DEBUG) Log.d(TAG, "[getSupportMenuInflater]");
143
144 return getSherlock().getMenuInflater();
145 }
146
147 public void invalidateOptionsMenu() {
148 if (DEBUG) Log.d(TAG, "[invalidateOptionsMenu]");
149
150 getSherlock().dispatchInvalidateOptionsMenu();
151 }
152
153 public void supportInvalidateOptionsMenu() {
154 if (DEBUG) Log.d(TAG, "[supportInvalidateOptionsMenu]");
155
156 invalidateOptionsMenu();
157 }
158
159 @Override
160 public final boolean onCreatePanelMenu(int featureId, android.view.Menu menu) {
161 if (DEBUG) Log.d(TAG, "[onCreatePanelMenu] featureId: " + featureId + ", menu: " + menu);
162
163 if (featureId == Window.FEATURE_OPTIONS_PANEL && !mIgnoreNativeCreate) {
164 mIgnoreNativeCreate = true;
165 boolean result = getSherlock().dispatchCreateOptionsMenu(menu);
166 mIgnoreNativeCreate = false;
167
168 if (DEBUG) Log.d(TAG, "[onCreatePanelMenu] returning " + result);
169 return result;
170 }
171 return super.onCreatePanelMenu(featureId, menu);
172 }
173
174 @Override
175 public final boolean onCreateOptionsMenu(android.view.Menu menu) {
176 return true;
177 }
178
179 @Override
180 public final boolean onPreparePanel(int featureId, View view, android.view.Menu menu) {
181 if (DEBUG) Log.d(TAG, "[onPreparePanel] featureId: " + featureId + ", view: " + view + ", menu: " + menu);
182
183 if (featureId == Window.FEATURE_OPTIONS_PANEL && !mIgnoreNativePrepare) {
184 mIgnoreNativePrepare = true;
185 boolean result = getSherlock().dispatchPrepareOptionsMenu(menu);
186 mIgnoreNativePrepare = false;
187
188 if (DEBUG) Log.d(TAG, "[onPreparePanel] returning " + result);
189 return result;
190 }
191 return super.onPreparePanel(featureId, view, menu);
192 }
193
194 @Override
195 public final boolean onPrepareOptionsMenu(android.view.Menu menu) {
196 return true;
197 }
198
199 @Override
200 public final boolean onMenuItemSelected(int featureId, android.view.MenuItem item) {
201 if (DEBUG) Log.d(TAG, "[onMenuItemSelected] featureId: " + featureId + ", item: " + item);
202
203 if (featureId == Window.FEATURE_OPTIONS_PANEL && !mIgnoreNativeSelected) {
204 mIgnoreNativeSelected = true;
205 boolean result = getSherlock().dispatchOptionsItemSelected(item);
206 mIgnoreNativeSelected = false;
207
208 if (DEBUG) Log.d(TAG, "[onMenuItemSelected] returning " + result);
209 return result;
210 }
211 return super.onMenuItemSelected(featureId, item);
212 }
213
214 @Override
215 public final boolean onOptionsItemSelected(android.view.MenuItem item) {
216 return false;
217 }
218
219 @Override
220 public void openOptionsMenu() {
221 if (!getSherlock().dispatchOpenOptionsMenu()) {
222 super.openOptionsMenu();
223 }
224 }
225
226 @Override
227 public void closeOptionsMenu() {
228 if (!getSherlock().dispatchCloseOptionsMenu()) {
229 super.closeOptionsMenu();
230 }
231 }
232
233
234 ///////////////////////////////////////////////////////////////////////////
235 // Sherlock menu handling
236 ///////////////////////////////////////////////////////////////////////////
237
238 public boolean onCreateOptionsMenu(Menu menu) {
239 return true;
240 }
241
242 public boolean onPrepareOptionsMenu(Menu menu) {
243 return true;
244 }
245
246 public boolean onOptionsItemSelected(MenuItem item) {
247 return false;
248 }
249
250
251 ///////////////////////////////////////////////////////////////////////////
252 // Content
253 ///////////////////////////////////////////////////////////////////////////
254
255 @Override
256 public void addContentView(View view, LayoutParams params) {
257 getSherlock().addContentView(view, params);
258 }
259
260 @Override
261 public void setContentView(int layoutResId) {
262 getSherlock().setContentView(layoutResId);
263 }
264
265 @Override
266 public void setContentView(View view, LayoutParams params) {
267 getSherlock().setContentView(view, params);
268 }
269
270 @Override
271 public void setContentView(View view) {
272 getSherlock().setContentView(view);
273 }
274
275 public void requestWindowFeature(long featureId) {
276 getSherlock().requestFeature((int)featureId);
277 }
278
279
280 ///////////////////////////////////////////////////////////////////////////
281 // Progress Indication
282 ///////////////////////////////////////////////////////////////////////////
283
284 public void setSupportProgress(int progress) {
285 getSherlock().setProgress(progress);
286 }
287
288 public void setSupportProgressBarIndeterminate(boolean indeterminate) {
289 getSherlock().setProgressBarIndeterminate(indeterminate);
290 }
291
292 public void setSupportProgressBarIndeterminateVisibility(boolean visible) {
293 getSherlock().setProgressBarIndeterminateVisibility(visible);
294 }
295
296 public void setSupportProgressBarVisibility(boolean visible) {
297 getSherlock().setProgressBarVisibility(visible);
298 }
299
300 public void setSupportSecondaryProgress(int secondaryProgress) {
301 getSherlock().setSecondaryProgress(secondaryProgress);
302 }
303 }