Skip to content

Commit

Permalink
Merge branch 'master-application-preloader-dpr'
Browse files Browse the repository at this point in the history
  • Loading branch information
Dharmang Soni committed Jun 18, 2014
2 parents d53590d + 13c532b commit 11337ec
Show file tree
Hide file tree
Showing 5 changed files with 122 additions and 13 deletions.
8 changes: 7 additions & 1 deletion res/layout/activity_main.xml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,13 @@
android:id="@+id/fragment_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#ffffff" />
android:background="#ffffff" >

<include
android:id="@+id/application_loader"
layout="@layout/application_preloader"
android:visibility="gone" />
</FrameLayout>

<ListView
android:id="@+id/left_drawer"
Expand Down
28 changes: 28 additions & 0 deletions res/layout/application_preloader.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#a24689"
android:gravity="center_horizontal"
android:orientation="vertical"
android:paddingTop="?android:attr/actionBarSize" >

<ImageView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="50dp"
android:contentDescription="@string/imgcontentDescription"
android:src="@drawable/odoo_small"
android:tint="#fff" />

<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_vertical|center_horizontal" >

<ProgressBar
android:id="@+id/progressBar1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>

</FrameLayout>
31 changes: 20 additions & 11 deletions src/com/odoo/App.java
Original file line number Diff line number Diff line change
Expand Up @@ -18,14 +18,14 @@
*/
package com.odoo;

import com.odoo.support.OEUser;

import odoo.Odoo;
import android.app.Application;
import android.util.Log;

import com.odoo.auth.OdooAccountManager;
import com.odoo.support.OEUser;

public class App extends Application {
public class App extends Application implements
MainActivity.OnOdooInstanceCreateListener {

public static final String TAG = App.class.getSimpleName();
public static Odoo mOEInstance = null;
Expand All @@ -34,28 +34,37 @@ public class App extends Application {
public void onCreate() {
Log.d(TAG, "App->onCreate()");
super.onCreate();
}

public Odoo createInstance() {
Odoo odoo = null;
OEUser user = OEUser.current(getApplicationContext());
if (user != null) {
try {
mOEInstance = new Odoo(user.getHost(),
user.isAllowSelfSignedSSL());
mOEInstance.authenticate(user.getUsername(),
user.getPassword(), user.getDatabase());
odoo = new Odoo(user.getHost(), user.isAllowSelfSignedSSL());
odoo.authenticate(user.getUsername(), user.getPassword(),
user.getDatabase());
} catch (Exception e) {
e.printStackTrace();
}
}
if (!OdooAccountManager.isAnyUser(getApplicationContext())) {
mOEInstance = null;
}
return odoo;
}

public Odoo getOEInstance() {
Log.d(TAG, "App->getOEInstance()");
if (mOEInstance == null) {
mOEInstance = createInstance();
}
return mOEInstance;
}

public void setOEInstance(Odoo odoo) {
mOEInstance = odoo;
}

@Override
public void onOdooInstanceCreated(Odoo odoo) {
setOEInstance(odoo);
}
}
61 changes: 60 additions & 1 deletion src/com/odoo/MainActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
import java.util.ArrayList;
import java.util.List;

import odoo.Odoo;
import android.accounts.Account;
import android.app.AlertDialog;
import android.app.Dialog;
Expand All @@ -34,6 +35,7 @@
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.Color;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v4.app.ActionBarDrawerToggle;
import android.support.v4.app.Fragment;
Expand Down Expand Up @@ -63,6 +65,7 @@
import com.odoo.support.fragment.FragmentListener;
import com.odoo.util.Base64Helper;
import com.odoo.util.OEAppRater;
import com.odoo.util.OdooTaskWaiter;
import com.odoo.util.OnBackButtonPressedListener;
import com.odoo.util.PreferenceManager;
import com.odoo.util.drawer.DrawerAdatper;
Expand All @@ -75,7 +78,8 @@
* The Class MainActivity.
*/
public class MainActivity extends FragmentActivity implements
DrawerItem.DrawerItemClickListener, FragmentListener, DrawerListener {
DrawerItem.DrawerItemClickListener, FragmentListener, DrawerListener,
OdooTaskWaiter {

public static final String TAG = "com.odoo.MainActivity";
public static final int RESULT_SETTINGS = 1;
Expand Down Expand Up @@ -104,13 +108,27 @@ public enum SettingKeys {
private OnBackButtonPressedListener backPressed = null;
private boolean mTwoPane;

App mApp = null;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getActionBar().setIcon(R.drawable.ic_odoo_o);
mContext = this;
mFragment = getSupportFragmentManager();
mApp = (App) getApplication();
if (mApp.getOEInstance() == null && savedInstanceState == null) {
CreateOdooInstance odooInstance = new CreateOdooInstance(
savedInstanceState);
odooInstance.execute();
} else {
onTaskDone(savedInstanceState);
}
}

@Override
public void onTaskDone(Bundle savedInstanceState) {
initTouchListener();
initDrawerControls();
if (findViewById(R.id.fragment_detail_container) != null) {
Expand Down Expand Up @@ -779,4 +797,45 @@ public void restart() {
public boolean isTwoPane() {
return mTwoPane;
}

class CreateOdooInstance extends AsyncTask<Void, Odoo, Odoo> {
Bundle mSavedInstanceState = null;
App mApp = null;

public CreateOdooInstance(Bundle savedInstanceState) {
mSavedInstanceState = savedInstanceState;
mApp = (App) getApplication();
}

@Override
protected void onPreExecute() {
super.onPreExecute();
findViewById(R.id.application_loader).setVisibility(View.VISIBLE);
getActionBar().hide();
}

@Override
protected Odoo doInBackground(Void... params) {
try {
Thread.sleep(1500);
} catch (Exception e) {
e.printStackTrace();
}
return mApp.createInstance();
}

@Override
protected void onPostExecute(Odoo result) {
super.onPostExecute(result);
findViewById(R.id.application_loader).setVisibility(View.GONE);
OnOdooInstanceCreateListener app = mApp;
app.onOdooInstanceCreated(result);
onTaskDone(mSavedInstanceState);
getActionBar().show();
}
}

public interface OnOdooInstanceCreateListener {
public void onOdooInstanceCreated(Odoo odoo);
}
}
7 changes: 7 additions & 0 deletions src/com/odoo/util/OdooTaskWaiter.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package com.odoo.util;

import android.os.Bundle;

public interface OdooTaskWaiter {
public void onTaskDone(Bundle savedInstance);
}

0 comments on commit 11337ec

Please sign in to comment.