This is the new pattern: all activity onCreate methods check to see if the app is...
authorkenstir <kenstir@gmail.com>
Tue, 26 Nov 2013 03:49:51 +0000 (22:49 -0500)
committerkenstir <kenstir@gmail.com>
Tue, 26 Nov 2013 03:49:51 +0000 (22:49 -0500)
Open-ILS/src/Android/AndroidManifest.xml
Open-ILS/src/Android/res/layout/activity_junk.xml [deleted file]
Open-ILS/src/Android/src/org/evergreen/android/JunkActivity.java [deleted file]
Open-ILS/src/Android/src/org/evergreen/android/accountAccess/LoginController.java
Open-ILS/src/Android/src/org/evergreen/android/accountAccess/bookbags/BookbagsListView.java
Open-ILS/src/Android/src/org/evergreen/android/searchCatalog/SearchCatalogListView.java
Open-ILS/src/Android/src/org/evergreen/android/views/StartupActivity.java [deleted file]
Open-ILS/src/Android/src/org/evergreen/android/views/splashscreen/SplashActivity.java

index 7058fa7..7cc616a 100644 (file)
         </activity>\r
         <activity android:name="org.evergreen.android.accountAccess.bookbags.BookBagDetails" >\r
         </activity>\r
-        <activity\r
-            android:name="org.evergreen.android.views.StartupActivity"\r
-            android:label="@string/ou_app_name"\r
-            android:windowSoftInputMode="adjustResize|stateVisible" >\r
-        </activity>\r
+\r
         <activity\r
             android:name="org.evergreen_ils.auth.AuthenticatorActivity"\r
             android:label="@string/ou_account_label"\r
                 android:name="android.accounts.AccountAuthenticator"\r
                 android:resource="@xml/authenticator" />\r
         </service>\r
-\r
-        <activity\r
-            android:name="org.evergreen.android.JunkActivity"\r
-            android:label="@string/title_activity_junk" >\r
-        </activity>\r
     </application>\r
 \r
 </manifest>\r
diff --git a/Open-ILS/src/Android/res/layout/activity_junk.xml b/Open-ILS/src/Android/res/layout/activity_junk.xml
deleted file mode 100644 (file)
index ba9e16d..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:tools="http://schemas.android.com/tools"
-    android:id="@+id/LinearLayout1"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:orientation="vertical"
-    android:paddingBottom="@dimen/activity_vertical_margin"
-    android:paddingLeft="@dimen/activity_horizontal_margin"
-    android:paddingRight="@dimen/activity_horizontal_margin"
-    android:paddingTop="@dimen/activity_vertical_margin"
-    tools:context=".JunkActivity" >
-
-    <TextView
-        android:id="@+id/junkTextView"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:text="token"
-        android:textAppearance="?android:attr/textAppearanceLarge" />
-
-    <EditText
-        android:id="@+id/junkTokenText"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:ems="10" >
-
-        <requestFocus />
-    </EditText>
-
-    <TextView
-        android:id="@+id/junkUsernameLabel"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:text="username"
-        android:textAppearance="?android:attr/textAppearanceLarge" />
-
-    <EditText
-        android:id="@+id/junkUsernameText"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:ems="10" />
-
-    <Button
-        android:id="@+id/junkButton"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:text="try again" />
-
-</LinearLayout>
\ No newline at end of file
diff --git a/Open-ILS/src/Android/src/org/evergreen/android/JunkActivity.java b/Open-ILS/src/Android/src/org/evergreen/android/JunkActivity.java
deleted file mode 100644 (file)
index 36853ef..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-package org.evergreen.android;
-
-import org.evergreen.android.accountAccess.LoginController;
-
-import android.app.Activity;
-import android.os.Bundle;
-import android.view.View.OnClickListener;
-import android.view.View;
-import android.widget.Button;
-import android.widget.EditText;
-import android.widget.TextView;
-
-public class JunkActivity extends Activity {
-    
-    private Button b;
-    //private TextView tv;
-    private EditText t,t2;
-    private String auth_token = null;
-
-    @Override
-    protected void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        setContentView(R.layout.activity_junk);
-        b = (Button) findViewById(R.id.junkButton);
-        b.setOnClickListener(new OnClickListener() {
-            public void onClick(View v) {
-                if (auth_token == null) {
-                    LoginController.getInstance(JunkActivity.this).login();
-                }
-            }
-        });
-        t = (EditText) findViewById(R.id.junkTokenText);
-        t2 = (EditText) findViewById(R.id.junkUsernameText);
-        String account_name = LoginController.getInstance(this).getAccountName();
-        auth_token = LoginController.getInstance(this).getAuthToken();
-        t.setText((auth_token==null)?"null":auth_token);
-        t2.setText((account_name==null)?"null":account_name);
-        
-        if (auth_token == null) {
-            LoginController.getInstance(this).login();
-        }
-    }
-}
index bf215c5..05d5d73 100644 (file)
@@ -1,9 +1,7 @@
 package org.evergreen.android.accountAccess;
 
-import org.evergreen.android.JunkActivity;
 import org.evergreen.android.R;
 import org.evergreen.android.globals.AppPreferences;
-import org.evergreen.android.views.StartupActivity;
 import org.evergreen_ils.auth.Const;
 
 import android.accounts.Account;
@@ -12,7 +10,6 @@ import android.accounts.AccountManagerCallback;
 import android.accounts.AccountManagerFuture;
 import android.app.Activity;
 import android.app.AlertDialog;
-import android.content.Context;
 import android.content.DialogInterface;
 import android.content.Intent;
 import android.os.AsyncTask;
index a09a2cd..d5067cc 100644 (file)
@@ -30,6 +30,7 @@ import org.evergreen.android.globals.NoNetworkAccessException;
 import org.evergreen.android.globals.Utils;
 import org.evergreen.android.searchCatalog.SearchCatalogListView;
 import org.evergreen.android.views.AccountScreenDashboard;
+import org.evergreen.android.views.splashscreen.SplashActivity;
 
 import android.app.Activity;
 import android.app.ProgressDialog;
@@ -82,8 +83,11 @@ public class BookbagsListView extends Activity {
 
     @Override
     public void onCreate(Bundle savedInstanceState) {
-        // TODO Auto-generated method stub
         super.onCreate(savedInstanceState);
+        if (!SplashActivity.isAppInitialized()) {
+            SplashActivity.restartApp(this);
+            return;
+        }
 
         setContentView(R.layout.bookbag_list);
 
@@ -241,14 +245,7 @@ public class BookbagsListView extends Activity {
             }
         };
 
-        Thread getBookBags = new Thread(getBookbagsRunnable);
-
-        if (accountAccess.isAuthenticated()) {
-            getBookBags.start();
-        } else
-            Toast.makeText(context,
-                    "You must be authenticated to retrieve circ records",
-                    Toast.LENGTH_LONG);
+        new Thread(getBookbagsRunnable).start();
     }
 
     @Override
index f238ec4..641f20e 100644 (file)
@@ -35,6 +35,7 @@ import org.evergreen.android.globals.NoNetworkAccessException;
 import org.evergreen.android.globals.Utils;
 import org.evergreen.android.views.AccountScreenDashboard;
 import org.evergreen.android.views.ApplicationPreferences;
+import org.evergreen.android.views.splashscreen.SplashActivity;
 
 import android.app.Activity;
 import android.app.AlertDialog;
@@ -135,6 +136,11 @@ public class SearchCatalogListView extends Activity {
     @Override
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
+        if (!SplashActivity.isAppInitialized()) {
+            SplashActivity.restartApp(this);
+            return;
+        }
+
         setContentView(R.layout.search_result_list);
         setTitle("Browse catalog");
 
@@ -825,4 +831,4 @@ public class SearchCatalogListView extends Activity {
             return row;
         }
     }
-}
\ No newline at end of file
+}
diff --git a/Open-ILS/src/Android/src/org/evergreen/android/views/StartupActivity.java b/Open-ILS/src/Android/src/org/evergreen/android/views/StartupActivity.java
deleted file mode 100644 (file)
index 5d9c51d..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-package org.evergreen.android.views;
-
-import org.evergreen.android.R;
-import org.evergreen.android.accountAccess.LoginController;
-import org.evergreen.android.globals.AppPreferences;
-import org.evergreen.android.searchCatalog.SearchCatalogListView;
-import org.evergreen.android.JunkActivity;
-import org.evergreen_ils.auth.Const;
-
-import android.accounts.Account;
-import android.accounts.AccountManager;
-import android.accounts.AccountManagerCallback;
-import android.accounts.AccountManagerFuture;
-import android.app.Activity;
-import android.app.AlertDialog;
-import android.content.DialogInterface;
-import android.content.Intent;
-import android.os.AsyncTask;
-import android.os.Build;
-import android.os.Bundle;
-import android.text.TextUtils;
-import android.util.Log;
-import android.view.ContextThemeWrapper;
-import android.widget.TextView;
-import android.widget.Toast;
-
-/**
- * Activity which displays a login screen to the user, offering registration as
- * well.
- */
-public class StartupActivity extends Activity {
-
-    private String TAG = StartupActivity.class.getSimpleName();
-    private TextView mLoginStatusMessageView;
-    private String mAlertMessage = null;
-
-    @Override
-    protected void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        setContentView(R.layout.activity_startup);
-        
-        mLoginStatusMessageView = (TextView) findViewById(R.id.login_progress_message);
-        
-        LoginController.getInstance(this).loginForActivity(JunkActivity.class);
-    }
-
-    @Override
-    protected void onSaveInstanceState(Bundle outState) {
-        super.onSaveInstanceState(outState);
-    }
-
-    /*
-    @Override
-    public boolean onCreateOptionsMenu(Menu menu) {
-        super.onCreateOptionsMenu(menu);
-        getMenuInflater().inflate(R.menu.startup, menu);
-        return true;
-    }
-    */
-}
index ee756fb..966403b 100644 (file)
@@ -42,15 +42,44 @@ import android.widget.TextView;
 
 public class SplashActivity extends Activity implements LoadingTaskListener {
 
+    private static String TAG = "SplashActivity";
     private TextView mProgressText;
     private Context mContext;
     private ProgressBar mProgressBar;
-    private String TAG = "SplashActivity";
     private AlertDialog mAlertDialog;
     private Button mRetryButton;
     //private SharedPreferences prefs;
     private LoadingTask mTask;
-    
+    private static boolean mInitialized;
+
+    public static boolean isAppInitialized()
+    {
+        return mInitialized;
+    }
+
+    /** android may choose to initialize the app at a non-MAIN activity if the
+     * app crashed or for other reasons.  In these cases we want to force sane
+     * initialization via the SplashActivity.
+     * 
+     * used in all activity class's onCreate() like so:
+     * <code>
+     * if (!SplashActivity.isInitialized) {
+     *     SplashActivity.restartApp(this);
+     *     return;
+     * }
+     * </code>
+     * 
+     * @param a
+     */
+       public static void restartApp(Activity a)
+    {
+               Log.d(TAG, "restartApp> Restarting SplashActivity");
+               final Intent i = new Intent(a, SplashActivity.class);
+               i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
+               a.startActivity(i);
+               a.finish();
+       }
+
     @Override
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
@@ -97,6 +126,7 @@ public class SplashActivity extends Activity implements LoadingTaskListener {
     }
 
     private void startApp() {
+        mInitialized = true;
         Intent intent = new Intent(SplashActivity.this, SearchCatalogListView.class);
         startActivity(intent);
         finish();