99 lines
2.8 KiB
Java
99 lines
2.8 KiB
Java
package org.bspeice.minimalbible;
|
|
|
|
import android.app.Application;
|
|
import android.content.Context;
|
|
import android.util.Log;
|
|
|
|
import org.crosswire.jsword.book.sword.SwordBookPath;
|
|
|
|
import java.io.File;
|
|
|
|
import dagger.ObjectGraph;
|
|
|
|
public class MinimalBible extends Application {
|
|
|
|
/**
|
|
* The graph used by Dagger to track dependencies
|
|
*/
|
|
private ObjectGraph graph;
|
|
|
|
/**
|
|
* A singleton reference to the Application currently being run.
|
|
* Used mostly so we have a fixed point to get the App Context from
|
|
*/
|
|
private static MinimalBible instance;
|
|
|
|
private String TAG = "MinimalBible";
|
|
|
|
/**
|
|
* Create the application, and persist the application Context
|
|
*/
|
|
public MinimalBible() {
|
|
instance = this;
|
|
}
|
|
|
|
/**
|
|
* Get the Application Context. Please note, all attempts to get the App Context should come
|
|
* through here, and please be sure that the Application won't satisfy what you need.
|
|
* @return The Application Context
|
|
*/
|
|
public static Context getAppContext() {
|
|
return instance;
|
|
}
|
|
|
|
/**
|
|
* Get the Application, rather than just the Application Context. You likely should be using
|
|
* this, rather than {@link #getAppContext()}
|
|
* @return The MinimalBible {@link android.app.Application} object
|
|
*/
|
|
public static MinimalBible getApplication() {
|
|
return (MinimalBible)getAppContext();
|
|
}
|
|
|
|
/**
|
|
* Create the {@link android.app.Application}. Responsible for building and
|
|
* holding on to the master ObjectGraph.
|
|
*/
|
|
@Override
|
|
public void onCreate() {
|
|
//TODO: Is this necessary?
|
|
inject(this);
|
|
setJswordHome();
|
|
}
|
|
|
|
/**
|
|
* Inject a Dagger object
|
|
* @param o The object to be injected
|
|
*/
|
|
public void inject(Object o) {
|
|
getObjGraph().inject(o);
|
|
}
|
|
|
|
public ObjectGraph getObjGraph() {
|
|
if (graph == null) {
|
|
graph = ObjectGraph.create(MinimalBibleModules.class);
|
|
}
|
|
return graph;
|
|
}
|
|
|
|
public void plusObjGraph(Object... modules) {
|
|
graph = graph.plus(modules);
|
|
}
|
|
|
|
/**
|
|
* Notify jSword that it needs to store files in the Android internal directory
|
|
* NOTE: Android will uninstall these files if you uninstall MinimalBible.
|
|
*/
|
|
@SuppressWarnings("null")
|
|
private void setJswordHome() {
|
|
// We need to set the download directory for jSword to stick with
|
|
// Android.
|
|
String home = MinimalBible.getAppContext().getFilesDir().toString();
|
|
Log.d(TAG, "Setting jsword.home to: " + home);
|
|
System.setProperty("jsword.home", home);
|
|
System.setProperty("sword.home", home);
|
|
SwordBookPath.setDownloadDir(new File(home));
|
|
Log.d(TAG, "Sword download path: " + SwordBookPath.getSwordDownloadDir());
|
|
}
|
|
}
|