5555import com .actionbarsherlock .view .Menu ;
5656import com .actionbarsherlock .view .MenuItem ;
5757
58+ import java .util .ArrayList ;
59+ import java .util .List ;
60+
5861/**
5962 * BaseActivity Add shared functionality that exists between all Activities
6063 */
@@ -75,6 +78,13 @@ public abstract class BaseActivity<V extends View> extends SherlockFragmentActiv
7578 */
7679 protected final Class <V > viewClass ;
7780
81+ protected final int drawerLayoutId ;
82+
83+ /**
84+ * ListView resource id
85+ */
86+ protected final int listViewId ;
87+
7888 /**
7989 * View
8090 */
@@ -86,27 +96,21 @@ public abstract class BaseActivity<V extends View> extends SherlockFragmentActiv
8696
8797 protected ActionBarDrawerToggle drawerToggle ;
8898
89- protected final int drawerLayoutId ;
90-
9199 protected DrawerLayout drawerLayout ;
92100
93101 protected ListView listView ;
94102
95- /**
96- * ListView resource id
97- */
98- protected final int listViewId ;
99-
100103 /**
101104 * BaseActivity
102- *
103- * @param view View class
104- * @param layout layout resource id
105- * @param menu menu resource id
105+ *
106+ * @param view View class
107+ * @param layout layout resource id
108+ * @param menu menu resource id
106109 * @param drawerLayoutId resource id for the drawerLayout
107- * @param listViewId the resource id for the list view
110+ * @param listViewId the resource id for the list view
108111 */
109- protected BaseActivity (Class <V > view , int layout , int menu , int drawerLayoutId , int listViewId ) {
112+ protected BaseActivity (Class <V > view , int layout , int menu , int drawerLayoutId ,
113+ int listViewId ) {
110114
111115 this .viewClass = view ;
112116 this .layout = layout ;
@@ -117,10 +121,10 @@ protected BaseActivity(Class<V> view, int layout, int menu, int drawerLayoutId,
117121
118122 /**
119123 * BaseActivity
120- *
121- * @param view View class
124+ *
125+ * @param view View class
122126 * @param layout layout resource id
123- * @param menu menu resource id
127+ * @param menu menu resource id
124128 */
125129 protected BaseActivity (Class <V > view , int layout , int menu ) {
126130 this (view , layout , menu , 0 , 0 );
@@ -136,11 +140,13 @@ public void onCreate(Bundle savedInstanceState) {
136140 setContentView (layout );
137141 }
138142
139- if (drawerLayoutId != 0 )
143+ if (drawerLayoutId != 0 ) {
140144 drawerLayout = (DrawerLayout ) findViewById (drawerLayoutId );
145+ }
141146
142- if (listViewId != 0 )
147+ if (listViewId != 0 ) {
143148 listView = (ListView ) findViewById (listViewId );
149+ }
144150
145151 view = Objects .createInstance (viewClass , Activity .class , this );
146152
@@ -233,7 +239,7 @@ public boolean onOptionsItemSelected(MenuItem item) {
233239 } else {
234240 drawerLayout .openDrawer (listView );
235241 }
236-
242+
237243 } else {
238244 finish ();
239245 }
@@ -254,18 +260,7 @@ public void openActivityOrFragment(Intent intent) {
254260
255261 protected void createNavDrawer () {
256262 navDrawerAdapter = new NavDrawerAdapter (this );
257- new LoadingStatusTask (this ).execute ((String )null );
258-
259- }
260-
261- private class NavDrawerItemClickListener implements ListView .OnItemClickListener {
262-
263- @ Override
264- public void onItemClick (AdapterView <?> parent , android .view .View view , int position , long id ) {
265- selectItem (position );
266- view .getFocusables (position );
267- view .setSelected (true );
268- }
263+ new NavDrawerItemTask (this ).execute ((String ) null );
269264
270265 }
271266
@@ -315,50 +310,25 @@ public void onDrawerOpened(android.view.View drawerView) {
315310 }
316311
317312 /**
318- * When using the ActionBarDrawerToggle, you must call it during
319- * onPostCreate() and onConfigurationChanged()...
313+ * When using the ActionBarDrawerToggle, you must call it during onPostCreate() and
314+ * onConfigurationChanged()...
320315 */
321316
322317 @ Override
323318 protected void onPostCreate (Bundle savedInstanceState ) {
324319 super .onPostCreate (savedInstanceState );
325320 // Sync the toggle state after onRestoreInstanceState has occurred.
326- if (drawerToggle != null )
321+ if (drawerToggle != null ) {
327322 drawerToggle .syncState ();
323+ }
328324 }
329325
330326 @ Override
331327 public void onConfigurationChanged (Configuration newConfig ) {
332328 super .onConfigurationChanged (newConfig );
333329 // Pass any configuration change to the drawer toggls
334- if (drawerToggle != null )
330+ if (drawerToggle != null ) {
335331 drawerToggle .onConfigurationChanged (newConfig );
336- }
337-
338- private class LoadingStatusTask extends ProgressTask {
339-
340- protected LoadingStatusTask (Activity activity ) {
341- super (activity );
342- }
343-
344- @ Override
345- protected void onPreExecute () {
346- super .onPreExecute ();
347- dialog .cancel ();
348- }
349-
350- @ Override
351- protected Boolean doInBackground (String ... strings ) {
352- // load all checked syncurl
353- navDrawerAdapter .refresh ();
354- return true ;
355- }
356-
357- @ Override
358- protected void onPostExecute (Boolean success ) {
359- super .onPostExecute (success );
360- initNavDrawer ();
361- selectItem (0 );
362332 }
363333 }
364334
@@ -438,4 +408,71 @@ protected void toastShort(CharSequence message) {
438408 Toast .makeText (this , message .toString (), Toast .LENGTH_SHORT ).show ();
439409 }
440410
411+ private class NavDrawerItemClickListener implements ListView .OnItemClickListener {
412+
413+ @ Override
414+ public void onItemClick (AdapterView <?> parent , android .view .View view , int position ,
415+ long id ) {
416+ selectItem (position );
417+ view .getFocusables (position );
418+ view .setSelected (true );
419+ }
420+
421+ }
422+
423+ private class NavDrawerItemTask extends ProgressTask {
424+
425+ PendingMessagesNavDrawerItem pendingMessagesNavDrawerItem ;
426+
427+ SentMessagesNavDrawerItem sentMessagesNavDrawerItem ;
428+
429+ SyncUrlNavDrawerItem syncUrlNavDrawerItem ;
430+
431+ List <BaseNavDrawerItem > navDrawerItem ;
432+
433+ protected NavDrawerItemTask (Activity activity ) {
434+ super (activity );
435+ pendingMessagesNavDrawerItem
436+ = new PendingMessagesNavDrawerItem (
437+ getString (R .string .pending_messages ),
438+ R .drawable .pending , BaseActivity .this );
439+
440+ sentMessagesNavDrawerItem = new SentMessagesNavDrawerItem (
441+ getString (R .string .sent_messages ),
442+ R .drawable .sent , BaseActivity .this );
443+ syncUrlNavDrawerItem = new SyncUrlNavDrawerItem (getString (
444+ R .string .sync_url ),
445+ R .drawable .sync_url , BaseActivity .this );
446+ navDrawerItem = new ArrayList <BaseNavDrawerItem >();
447+
448+ }
449+
450+ @ Override
451+ protected void onPreExecute () {
452+ super .onPreExecute ();
453+ dialog .cancel ();
454+ }
455+
456+ @ Override
457+ protected Boolean doInBackground (String ... strings ) {
458+ // load all checked syncurl
459+ sentMessagesNavDrawerItem .setCounter ();
460+ pendingMessagesNavDrawerItem .setCounter ();
461+ syncUrlNavDrawerItem .setCounter ();
462+ navDrawerItem .add (pendingMessagesNavDrawerItem );
463+ navDrawerItem .add (sentMessagesNavDrawerItem );
464+ navDrawerItem .add (syncUrlNavDrawerItem );
465+
466+ return true ;
467+ }
468+
469+ @ Override
470+ protected void onPostExecute (Boolean success ) {
471+ super .onPostExecute (success );
472+ navDrawerAdapter .setItems (navDrawerItem );
473+ initNavDrawer ();
474+ selectItem (0 );
475+ }
476+ }
477+
441478}
0 commit comments