mirror of
https://code.briarproject.org/briar/briar.git
synced 2026-02-19 22:29:53 +01:00
Use RoboGuice for injection into Android activities.
This commit is contained in:
Binary file not shown.
BIN
libs/roboguice-2.0.jar
Normal file
BIN
libs/roboguice-2.0.jar
Normal file
Binary file not shown.
18
res/values/roboguice.xml
Normal file
18
res/values/roboguice.xml
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<resources>
|
||||||
|
<string-array name="roboguice_modules">
|
||||||
|
<item>net.sf.briar.HelloWorldModule</item>
|
||||||
|
<item>net.sf.briar.android.AndroidModule</item>
|
||||||
|
<item>net.sf.briar.android.invitation.AndroidInvitationModule</item>
|
||||||
|
<item>net.sf.briar.clock.ClockModule</item>
|
||||||
|
<item>net.sf.briar.crypto.CryptoModule</item>
|
||||||
|
<item>net.sf.briar.db.DatabaseModule</item>
|
||||||
|
<item>net.sf.briar.lifecycle.LifecycleModule</item>
|
||||||
|
<item>net.sf.briar.plugins.PluginsModule</item>
|
||||||
|
<item>net.sf.briar.protocol.ProtocolModule</item>
|
||||||
|
<item>net.sf.briar.protocol.duplex.DuplexProtocolModule</item>
|
||||||
|
<item>net.sf.briar.protocol.simplex.SimplexProtocolModule</item>
|
||||||
|
<item>net.sf.briar.serial.SerialModule</item>
|
||||||
|
<item>net.sf.briar.transport.TransportModule</item>
|
||||||
|
</string-array>
|
||||||
|
</resources>
|
||||||
@@ -1,40 +1,23 @@
|
|||||||
package net.sf.briar;
|
package net.sf.briar;
|
||||||
|
|
||||||
|
import static android.content.Context.MODE_PRIVATE;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
|
||||||
import net.sf.briar.api.crypto.Password;
|
import net.sf.briar.api.crypto.Password;
|
||||||
import net.sf.briar.api.db.DatabaseConfig;
|
import net.sf.briar.api.db.DatabaseConfig;
|
||||||
import net.sf.briar.api.ui.UiCallback;
|
import net.sf.briar.api.ui.UiCallback;
|
||||||
|
import android.app.Application;
|
||||||
|
|
||||||
import com.google.inject.AbstractModule;
|
import com.google.inject.AbstractModule;
|
||||||
|
import com.google.inject.Provides;
|
||||||
|
import com.google.inject.Singleton;
|
||||||
|
|
||||||
public class HelloWorldModule extends AbstractModule {
|
public class HelloWorldModule extends AbstractModule {
|
||||||
|
|
||||||
private final DatabaseConfig config;
|
@Override
|
||||||
private final UiCallback callback;
|
protected void configure() {
|
||||||
|
bind(UiCallback.class).toInstance(new UiCallback() {
|
||||||
public HelloWorldModule(final File dir) {
|
|
||||||
final Password password = new Password() {
|
|
||||||
|
|
||||||
public char[] getPassword() {
|
|
||||||
return "foo bar".toCharArray();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
config = new DatabaseConfig() {
|
|
||||||
|
|
||||||
public File getDataDirectory() {
|
|
||||||
return dir;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Password getPassword() {
|
|
||||||
return password;
|
|
||||||
}
|
|
||||||
|
|
||||||
public long getMaxSize() {
|
|
||||||
return Long.MAX_VALUE;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
callback = new UiCallback() {
|
|
||||||
|
|
||||||
public int showChoice(String[] options, String... message) {
|
public int showChoice(String[] options, String... message) {
|
||||||
return -1;
|
return -1;
|
||||||
@@ -45,12 +28,29 @@ public class HelloWorldModule extends AbstractModule {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void showMessage(String... message) {}
|
public void showMessage(String... message) {}
|
||||||
};
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Provides @Singleton
|
||||||
protected void configure() {
|
DatabaseConfig getDatabaseConfig(final Application app) {
|
||||||
bind(DatabaseConfig.class).toInstance(config);
|
return new DatabaseConfig() {
|
||||||
bind(UiCallback.class).toInstance(callback);
|
|
||||||
|
public File getDataDirectory() {
|
||||||
|
return app.getApplicationContext().getDir("db", MODE_PRIVATE);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Password getPassword() {
|
||||||
|
return new Password() {
|
||||||
|
|
||||||
|
public char[] getPassword() {
|
||||||
|
return "foo bar".toCharArray();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
public long getMaxSize() {
|
||||||
|
return Long.MAX_VALUE;
|
||||||
|
}
|
||||||
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,40 +3,27 @@ package net.sf.briar;
|
|||||||
import static java.util.logging.Level.INFO;
|
import static java.util.logging.Level.INFO;
|
||||||
import static java.util.logging.Level.WARNING;
|
import static java.util.logging.Level.WARNING;
|
||||||
|
|
||||||
import java.io.File;
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.logging.Logger;
|
import java.util.logging.Logger;
|
||||||
|
|
||||||
import net.sf.briar.android.AndroidModule;
|
|
||||||
import net.sf.briar.api.crypto.KeyManager;
|
import net.sf.briar.api.crypto.KeyManager;
|
||||||
import net.sf.briar.api.db.DatabaseComponent;
|
import net.sf.briar.api.db.DatabaseComponent;
|
||||||
import net.sf.briar.api.db.DbException;
|
import net.sf.briar.api.db.DbException;
|
||||||
import net.sf.briar.api.plugins.PluginManager;
|
import net.sf.briar.api.plugins.PluginManager;
|
||||||
import net.sf.briar.clock.ClockModule;
|
|
||||||
import net.sf.briar.crypto.CryptoModule;
|
|
||||||
import net.sf.briar.db.DatabaseModule;
|
|
||||||
import net.sf.briar.lifecycle.LifecycleModule;
|
|
||||||
import net.sf.briar.plugins.PluginsModule;
|
|
||||||
import net.sf.briar.protocol.ProtocolModule;
|
|
||||||
import net.sf.briar.protocol.duplex.DuplexProtocolModule;
|
|
||||||
import net.sf.briar.protocol.simplex.SimplexProtocolModule;
|
|
||||||
import net.sf.briar.serial.SerialModule;
|
|
||||||
import net.sf.briar.transport.TransportModule;
|
|
||||||
import android.app.Service;
|
import android.app.Service;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.os.IBinder;
|
import android.os.IBinder;
|
||||||
|
|
||||||
import com.google.inject.Guice;
|
import com.google.inject.Inject;
|
||||||
import com.google.inject.Injector;
|
|
||||||
|
|
||||||
public class HelloWorldService extends Service implements Runnable {
|
public class HelloWorldService extends Service implements Runnable {
|
||||||
|
|
||||||
private static final Logger LOG =
|
private static final Logger LOG =
|
||||||
Logger.getLogger(HelloWorldService.class.getName());
|
Logger.getLogger(HelloWorldService.class.getName());
|
||||||
|
|
||||||
private DatabaseComponent db = null;
|
@Inject private DatabaseComponent db;
|
||||||
private KeyManager keyManager = null;
|
@Inject private KeyManager keyManager;
|
||||||
private PluginManager pluginManager = null;
|
@Inject private PluginManager pluginManager;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onCreate() {
|
public void onCreate() {
|
||||||
@@ -56,16 +43,6 @@ public class HelloWorldService extends Service implements Runnable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void run() {
|
public void run() {
|
||||||
File dir = getApplicationContext().getDir("db", MODE_PRIVATE);
|
|
||||||
Injector i = Guice.createInjector(new HelloWorldModule(dir),
|
|
||||||
new AndroidModule(), new ClockModule(), new CryptoModule(),
|
|
||||||
new DatabaseModule(), new LifecycleModule(),
|
|
||||||
new PluginsModule(), new ProtocolModule(),
|
|
||||||
new DuplexProtocolModule(), new SimplexProtocolModule(),
|
|
||||||
new SerialModule(), new TransportModule());
|
|
||||||
db = i.getInstance(DatabaseComponent.class);
|
|
||||||
keyManager = i.getInstance(KeyManager.class);
|
|
||||||
pluginManager = i.getInstance(PluginManager.class);
|
|
||||||
try {
|
try {
|
||||||
// Start...
|
// Start...
|
||||||
if(LOG.isLoggable(INFO)) LOG.info("Starting");
|
if(LOG.isLoggable(INFO)) LOG.info("Starting");
|
||||||
|
|||||||
@@ -0,0 +1,14 @@
|
|||||||
|
package net.sf.briar.android.invitation;
|
||||||
|
|
||||||
|
import javax.inject.Singleton;
|
||||||
|
|
||||||
|
import com.google.inject.AbstractModule;
|
||||||
|
|
||||||
|
public class AndroidInvitationModule extends AbstractModule {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void configure() {
|
||||||
|
bind(InvitationManager.class).to(InvitationManagerImpl.class).in(
|
||||||
|
Singleton.class);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -6,7 +6,7 @@ import static android.view.ViewGroup.LayoutParams.MATCH_PARENT;
|
|||||||
import static android.widget.LinearLayout.HORIZONTAL;
|
import static android.widget.LinearLayout.HORIZONTAL;
|
||||||
import static android.widget.LinearLayout.VERTICAL;
|
import static android.widget.LinearLayout.VERTICAL;
|
||||||
import net.sf.briar.R;
|
import net.sf.briar.R;
|
||||||
import android.app.Activity;
|
import roboguice.activity.RoboActivity;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.res.Resources;
|
import android.content.res.Resources;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
@@ -15,9 +15,13 @@ import android.widget.ImageView;
|
|||||||
import android.widget.LinearLayout;
|
import android.widget.LinearLayout;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
|
||||||
public class ConfirmationCodeActivity extends Activity
|
import com.google.inject.Inject;
|
||||||
|
|
||||||
|
public class ConfirmationCodeActivity extends RoboActivity
|
||||||
implements CodeEntryListener {
|
implements CodeEntryListener {
|
||||||
|
|
||||||
|
@Inject private InvitationManager manager;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onCreate(Bundle savedInstanceState) {
|
public void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
@@ -49,8 +53,7 @@ implements CodeEntryListener {
|
|||||||
TextView code = new TextView(this);
|
TextView code = new TextView(this);
|
||||||
code.setGravity(CENTER_HORIZONTAL);
|
code.setGravity(CENTER_HORIZONTAL);
|
||||||
code.setTextSize(50);
|
code.setTextSize(50);
|
||||||
InvitationManager im = InvitationManagerFactory.getInvitationManager();
|
code.setText(manager.getLocalConfirmationCode());
|
||||||
code.setText(im.getLocalConfirmationCode());
|
|
||||||
layout.addView(code);
|
layout.addView(code);
|
||||||
|
|
||||||
CodeEntryWidget codeEntry = new CodeEntryWidget(this);
|
CodeEntryWidget codeEntry = new CodeEntryWidget(this);
|
||||||
@@ -62,9 +65,7 @@ implements CodeEntryListener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void codeEntered(String code) {
|
public void codeEntered(String code) {
|
||||||
InvitationManager im = InvitationManagerFactory.getInvitationManager();
|
if(code.equals(manager.getRemoteConfirmationCode())) {
|
||||||
String remoteConfirmationCode = im.getRemoteConfirmationCode();
|
|
||||||
if(code.equals(String.valueOf(remoteConfirmationCode))) {
|
|
||||||
Intent intent = new Intent(this, WaitForContactActivity.class);
|
Intent intent = new Intent(this, WaitForContactActivity.class);
|
||||||
intent.putExtras(getIntent().getExtras());
|
intent.putExtras(getIntent().getExtras());
|
||||||
startActivity(intent);
|
startActivity(intent);
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import static android.view.ViewGroup.LayoutParams.MATCH_PARENT;
|
|||||||
import static android.widget.LinearLayout.HORIZONTAL;
|
import static android.widget.LinearLayout.HORIZONTAL;
|
||||||
import static android.widget.LinearLayout.VERTICAL;
|
import static android.widget.LinearLayout.VERTICAL;
|
||||||
import net.sf.briar.R;
|
import net.sf.briar.R;
|
||||||
import android.app.Activity;
|
import roboguice.activity.RoboActivity;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.res.Resources;
|
import android.content.res.Resources;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
@@ -15,10 +15,12 @@ import android.widget.LinearLayout;
|
|||||||
import android.widget.ProgressBar;
|
import android.widget.ProgressBar;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
|
||||||
public class ConnectionActivity extends Activity implements ConnectionListener {
|
import com.google.inject.Inject;
|
||||||
|
|
||||||
private final InvitationManager manager =
|
public class ConnectionActivity extends RoboActivity
|
||||||
InvitationManagerFactory.getInvitationManager();
|
implements ConnectionListener {
|
||||||
|
|
||||||
|
@Inject private InvitationManager manager;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onCreate(Bundle savedInstanceState) {
|
public void onCreate(Bundle savedInstanceState) {
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import static android.view.Gravity.CENTER_HORIZONTAL;
|
|||||||
import static android.view.ViewGroup.LayoutParams.MATCH_PARENT;
|
import static android.view.ViewGroup.LayoutParams.MATCH_PARENT;
|
||||||
import static android.widget.LinearLayout.VERTICAL;
|
import static android.widget.LinearLayout.VERTICAL;
|
||||||
import net.sf.briar.R;
|
import net.sf.briar.R;
|
||||||
import android.app.Activity;
|
import roboguice.activity.RoboActivity;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.res.Resources;
|
import android.content.res.Resources;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
@@ -12,11 +12,12 @@ import android.view.ViewGroup.LayoutParams;
|
|||||||
import android.widget.LinearLayout;
|
import android.widget.LinearLayout;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
|
||||||
public class InvitationCodeActivity extends Activity
|
import com.google.inject.Inject;
|
||||||
|
|
||||||
|
public class InvitationCodeActivity extends RoboActivity
|
||||||
implements CodeEntryListener {
|
implements CodeEntryListener {
|
||||||
|
|
||||||
private final InvitationManager manager =
|
@Inject private InvitationManager manager;
|
||||||
InvitationManagerFactory.getInvitationManager();
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onCreate(Bundle savedInstanceState) {
|
public void onCreate(Bundle savedInstanceState) {
|
||||||
|
|||||||
@@ -1,14 +0,0 @@
|
|||||||
package net.sf.briar.android.invitation;
|
|
||||||
|
|
||||||
class InvitationManagerFactory {
|
|
||||||
|
|
||||||
private static final Object LOCK = new Object();
|
|
||||||
private static InvitationManager instance = null; // Locking: lock
|
|
||||||
|
|
||||||
static InvitationManager getInvitationManager() {
|
|
||||||
synchronized(LOCK) {
|
|
||||||
if(instance == null) instance = new InvitationManagerImpl();
|
|
||||||
return instance;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -6,7 +6,7 @@ import static android.view.ViewGroup.LayoutParams.MATCH_PARENT;
|
|||||||
import static android.widget.LinearLayout.HORIZONTAL;
|
import static android.widget.LinearLayout.HORIZONTAL;
|
||||||
import static android.widget.LinearLayout.VERTICAL;
|
import static android.widget.LinearLayout.VERTICAL;
|
||||||
import net.sf.briar.R;
|
import net.sf.briar.R;
|
||||||
import android.app.Activity;
|
import roboguice.activity.RoboActivity;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.view.ViewGroup.LayoutParams;
|
import android.view.ViewGroup.LayoutParams;
|
||||||
@@ -15,9 +15,13 @@ import android.widget.LinearLayout;
|
|||||||
import android.widget.ProgressBar;
|
import android.widget.ProgressBar;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
|
||||||
public class WaitForContactActivity extends Activity
|
import com.google.inject.Inject;
|
||||||
|
|
||||||
|
public class WaitForContactActivity extends RoboActivity
|
||||||
implements ConfirmationListener {
|
implements ConfirmationListener {
|
||||||
|
|
||||||
|
@Inject private InvitationManager manager;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onCreate(Bundle savedInstanceState) {
|
public void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
@@ -49,8 +53,7 @@ implements ConfirmationListener {
|
|||||||
TextView code = new TextView(this);
|
TextView code = new TextView(this);
|
||||||
code.setGravity(CENTER_HORIZONTAL);
|
code.setGravity(CENTER_HORIZONTAL);
|
||||||
code.setTextSize(50);
|
code.setTextSize(50);
|
||||||
InvitationManager im = InvitationManagerFactory.getInvitationManager();
|
code.setText(manager.getLocalConfirmationCode());
|
||||||
code.setText(im.getLocalConfirmationCode());
|
|
||||||
layout.addView(code);
|
layout.addView(code);
|
||||||
|
|
||||||
innerLayout = new LinearLayout(this);
|
innerLayout = new LinearLayout(this);
|
||||||
@@ -69,7 +72,7 @@ implements ConfirmationListener {
|
|||||||
|
|
||||||
setContentView(layout);
|
setContentView(layout);
|
||||||
|
|
||||||
im.startConfirmationWorker(this);
|
manager.startConfirmationWorker(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void confirmationReceived() {
|
public void confirmationReceived() {
|
||||||
|
|||||||
Reference in New Issue
Block a user