diff --git a/briar-android/AndroidManifest.xml b/briar-android/AndroidManifest.xml index f941a604ad678e49731fe01815cfed7ef5d3f70b..4d65c1f3d6fff1e87f809229bbe4c59d505a2b0e 100644 --- a/briar-android/AndroidManifest.xml +++ b/briar-android/AndroidManifest.xml @@ -23,7 +23,7 @@ <application android:name=".android.BriarApplication" - android:theme="@style/LightTheme" + android:theme="@style/BriarTheme" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:allowBackup="false" > diff --git a/briar-android/build.gradle b/briar-android/build.gradle index f66cb4b952ec31be56b6d7e89637674d793f1817..3e6d17c84737136c217d1038a2df68590f3a43aa 100644 --- a/briar-android/build.gradle +++ b/briar-android/build.gradle @@ -6,6 +6,7 @@ dependencies { compile fileTree(dir: '../briar-core/libs', include: '*.jar') compile project(':briar-core') compile fileTree(dir: 'libs', include: '*.jar') + compile "com.android.support:appcompat-v7:23.1.1" } android { diff --git a/briar-android/libs/android-support-v4.jar b/briar-android/libs/android-support-v4.jar deleted file mode 100644 index 96644edbead012ad77a137527841284253f709d6..0000000000000000000000000000000000000000 Binary files a/briar-android/libs/android-support-v4.jar and /dev/null differ diff --git a/briar-android/res/values-v14/styles.xml b/briar-android/res/values-v14/styles.xml index c1fc08f072d372b00cab63c2724370d4671ef3fc..898a9e4e00922099b9c011de41d77c77cb61b1f3 100644 --- a/briar-android/res/values-v14/styles.xml +++ b/briar-android/res/values-v14/styles.xml @@ -1,15 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> <resources> - <style name="LightTheme" parent="android:Theme.Holo.Light.DarkActionBar"> - <item name="android:actionBarStyle">@style/CustomActionBar</item> - <item name="android:windowBackground">@color/window_background</item> - </style> - <style name="CustomActionBar" - parent="android:Widget.Holo.Light.ActionBar.Solid.Inverse"> - <item name="android:textColor">@color/action_bar_text</item> - <item name="android:background">@color/action_bar_background</item> - </style> - <style name="BriarButton.Default"> <item name="android:textAllCaps">true</item> </style> diff --git a/briar-android/res/values/color.xml b/briar-android/res/values/color.xml index 18e88d64c8bdc0a9de6a0259c71600308856f34b..2f73069b46a3e003bc9496e9eb66cdd9c6b62edc 100644 --- a/briar-android/res/values/color.xml +++ b/briar-android/res/values/color.xml @@ -15,5 +15,8 @@ <color name="settings_title_text">#2D3E50</color> <color name="settings_title_underline">#2D3E50</color> - <color name="text_link">#2D3E50</color> + <color name="briar_text_link">#2D3E50</color> + <color name="briar_green_light">#95d220</color> + <color name="briar_green_dark">#75ab0d</color> + <color name="briar_text_primary">#333333</color> </resources> \ No newline at end of file diff --git a/briar-android/res/values/styles.xml b/briar-android/res/values/styles.xml index 4c59289224e3ce9f970a34d2881a585bde2329c2..51b24afb0ae7eaf6c943b1642d720309fea9b7a7 100644 --- a/briar-android/res/values/styles.xml +++ b/briar-android/res/values/styles.xml @@ -1,10 +1,20 @@ <?xml version="1.0" encoding="utf-8"?> <resources xmlns:android="http://schemas.android.com/apk/res/android"> - <style name="LightTheme" parent="android:Theme.Light"> - <item name="android:windowTitleStyle">@style/WindowTitle</item> - <item name="android:windowTitleBackgroundStyle">@style/WindowTitleBackground</item> - <item name="android:windowBackground">@color/window_background</item> + + <style name="BriarTheme" parent="Theme.AppCompat.Light"> + <item name="actionBarStyle">@style/BriarActionBar</item> + <item name="colorPrimary">@color/briar_green_light</item> + <item name="colorPrimaryDark">@color/briar_green_dark</item> + <item name="android:textColorPrimary">@color/briar_text_primary</item> + <item name="android:textColorLink">@color/briar_text_link</item> + + <!-- The rest of your attributes --> </style> + + <style name="BriarActionBar" parent="Base.Widget.AppCompat.Light.ActionBar.Solid"> + <item name="elevation">1dp</item> + </style> + <style name="WindowTitle"> <item name="android:paddingLeft">5dp</item> <item name="android:textColor">@color/action_bar_text</item> diff --git a/briar-android/src/org/briarproject/android/BaseActivity.java b/briar-android/src/org/briarproject/android/BaseActivity.java index f2b2fdeefb8c67c36cfedefca47c5de545df7cd8..ebba1b22e2e9e36179189106d0d4d2ef19ed9501 100644 --- a/briar-android/src/org/briarproject/android/BaseActivity.java +++ b/briar-android/src/org/briarproject/android/BaseActivity.java @@ -1,28 +1,129 @@ package org.briarproject.android; -import static android.view.inputmethod.InputMethodManager.HIDE_IMPLICIT_ONLY; -import static org.briarproject.android.TestingConstants.PREVENT_SCREENSHOTS; -import static android.view.WindowManager.LayoutParams.FLAG_SECURE; - import android.content.Intent; import android.content.SharedPreferences; +import android.content.res.Configuration; import android.os.Bundle; +import android.support.v7.app.AppCompatActivity; import android.view.inputmethod.InputMethodManager; -import roboguice.activity.RoboActivity; +import com.google.inject.Inject; +import com.google.inject.Key; + +import java.util.HashMap; +import java.util.Map; + +import roboguice.RoboGuice; +import roboguice.activity.event.OnActivityResultEvent; +import roboguice.activity.event.OnConfigurationChangedEvent; +import roboguice.activity.event.OnContentChangedEvent; +import roboguice.activity.event.OnCreateEvent; +import roboguice.activity.event.OnDestroyEvent; +import roboguice.activity.event.OnNewIntentEvent; +import roboguice.activity.event.OnPauseEvent; +import roboguice.activity.event.OnRestartEvent; +import roboguice.activity.event.OnResumeEvent; +import roboguice.activity.event.OnStartEvent; +import roboguice.activity.event.OnStopEvent; +import roboguice.event.EventManager; +import roboguice.inject.ContentViewListener; +import roboguice.inject.RoboInjector; +import roboguice.util.RoboContext; + +import static android.view.WindowManager.LayoutParams.FLAG_SECURE; +import static android.view.inputmethod.InputMethodManager.HIDE_IMPLICIT_ONLY; +import static org.briarproject.android.TestingConstants.PREVENT_SCREENSHOTS; -public abstract class BaseActivity extends RoboActivity { +public abstract class BaseActivity extends AppCompatActivity implements RoboContext { private final static String PREFS_DB = "db"; private final static String KEY_DB_KEY = "key"; + protected EventManager eventManager; + protected HashMap<Key<?>, Object> scopedObjects = new HashMap(); + @Inject + ContentViewListener ignored; + @Override public void onCreate(Bundle savedInstanceState) { + RoboInjector injector = RoboGuice.getInjector(this); + this.eventManager = (EventManager) injector.getInstance(EventManager.class); + injector.injectMembersWithoutViews(this); super.onCreate(savedInstanceState); + this.eventManager.fire(new OnCreateEvent(savedInstanceState)); if (PREVENT_SCREENSHOTS) getWindow().addFlags(FLAG_SECURE); } + protected void onRestart() { + super.onRestart(); + this.eventManager.fire(new OnRestartEvent()); + } + + protected void onStart() { + super.onStart(); + this.eventManager.fire(new OnStartEvent()); + } + + protected void onResume() { + super.onResume(); + this.eventManager.fire(new OnResumeEvent()); + } + + protected void onPause() { + super.onPause(); + this.eventManager.fire(new OnPauseEvent()); + } + + protected void onNewIntent(Intent intent) { + super.onNewIntent(intent); + this.eventManager.fire(new OnNewIntentEvent()); + } + + protected void onStop() { + try { + this.eventManager.fire(new OnStopEvent()); + } finally { + super.onStop(); + } + + } + + protected void onDestroy() { + try { + this.eventManager.fire(new OnDestroyEvent()); + } finally { + try { + RoboGuice.destroyInjector(this); + } finally { + super.onDestroy(); + } + } + + } + + public void onConfigurationChanged(Configuration newConfig) { + Configuration currentConfig = this.getResources().getConfiguration(); + super.onConfigurationChanged(newConfig); + this.eventManager.fire(new OnConfigurationChangedEvent(currentConfig, newConfig)); + } + + public void onContentChanged() { + super.onContentChanged(); + RoboGuice.getInjector(this).injectViewMembers(this); + this.eventManager.fire(new OnContentChangedEvent()); + } + + protected void onActivityResult(int requestCode, int resultCode, Intent data) { + super.onActivityResult(requestCode, resultCode, data); + this.eventManager.fire(new OnActivityResultEvent(requestCode, resultCode, data)); + } + + @Override + public Map<Key<?>, Object> getScopedObjectMap() { + return this.scopedObjects; + } + private SharedPreferences getBriarPrefs(String prefsName) { return getSharedPreferences(prefsName, MODE_PRIVATE); } diff --git a/briar-android/src/org/briarproject/android/SetupActivity.java b/briar-android/src/org/briarproject/android/SetupActivity.java index 6c4bd724b7b2a20984c653f61d31b5ffaeac38ef..46778711ae4e32ab99b8689672c8b7b4998ebf4e 100644 --- a/briar-android/src/org/briarproject/android/SetupActivity.java +++ b/briar-android/src/org/briarproject/android/SetupActivity.java @@ -1,42 +1,5 @@ package org.briarproject.android; -import android.content.Intent; -import android.content.SharedPreferences; -import android.content.SharedPreferences.Editor; -import android.os.Bundle; -import android.view.KeyEvent; -import android.view.View; -import android.view.View.OnClickListener; -import android.view.inputmethod.InputMethodManager; -import android.widget.Button; -import android.widget.EditText; -import android.widget.LinearLayout; -import android.widget.ProgressBar; -import android.widget.ScrollView; -import android.widget.TextView; -import android.widget.TextView.OnEditorActionListener; - -import org.briarproject.R; -import org.briarproject.android.util.LayoutUtils; -import org.briarproject.android.util.StrengthMeter; -import org.briarproject.api.AuthorFactory; -import org.briarproject.api.LocalAuthor; -import org.briarproject.api.android.ReferenceManager; -import org.briarproject.api.crypto.CryptoComponent; -import org.briarproject.api.crypto.CryptoExecutor; -import org.briarproject.api.crypto.KeyPair; -import org.briarproject.api.crypto.PasswordStrengthEstimator; -import org.briarproject.api.crypto.SecretKey; -import org.briarproject.api.db.DatabaseConfig; -import org.briarproject.util.StringUtils; - -import java.util.concurrent.Executor; -import java.util.logging.Logger; - -import javax.inject.Inject; - -import roboguice.activity.RoboActivity; - import static android.content.Intent.FLAG_ACTIVITY_NEW_TASK; import static android.text.InputType.TYPE_CLASS_TEXT; import static android.text.InputType.TYPE_TEXT_FLAG_CAP_WORDS; @@ -56,7 +19,43 @@ import static org.briarproject.android.util.CommonLayoutParams.WRAP_WRAP; import static org.briarproject.api.AuthorConstants.MAX_AUTHOR_NAME_LENGTH; import static org.briarproject.api.crypto.PasswordStrengthEstimator.WEAK; -public class SetupActivity extends RoboActivity implements OnClickListener, +import java.util.concurrent.Executor; +import java.util.logging.Logger; + +import javax.inject.Inject; + +import org.briarproject.R; +import org.briarproject.android.util.LayoutUtils; +import org.briarproject.android.util.StrengthMeter; +import org.briarproject.api.AuthorFactory; +import org.briarproject.api.LocalAuthor; +import org.briarproject.api.android.ReferenceManager; +import org.briarproject.api.crypto.CryptoComponent; +import org.briarproject.api.crypto.CryptoExecutor; +import org.briarproject.api.crypto.KeyPair; +import org.briarproject.api.crypto.PasswordStrengthEstimator; +import org.briarproject.api.crypto.SecretKey; +import org.briarproject.api.db.DatabaseConfig; +import org.briarproject.util.StringUtils; + +import roboguice.activity.RoboActivity; +import android.content.Intent; +import android.content.SharedPreferences; +import android.content.SharedPreferences.Editor; +import android.os.Bundle; +import android.view.KeyEvent; +import android.view.View; +import android.view.View.OnClickListener; +import android.view.inputmethod.InputMethodManager; +import android.widget.Button; +import android.widget.EditText; +import android.widget.LinearLayout; +import android.widget.ProgressBar; +import android.widget.ScrollView; +import android.widget.TextView; +import android.widget.TextView.OnEditorActionListener; + +public class SetupActivity extends BaseActivity implements OnClickListener, OnEditorActionListener { private static final Logger LOG = diff --git a/briar-android/src/org/briarproject/android/StartupFailureActivity.java b/briar-android/src/org/briarproject/android/StartupFailureActivity.java index a93a6354db380b426f592c7d7289a2db9ed21c90..3742156d3f28b55247d9f3551103175334bcdd8b 100644 --- a/briar-android/src/org/briarproject/android/StartupFailureActivity.java +++ b/briar-android/src/org/briarproject/android/StartupFailureActivity.java @@ -11,7 +11,7 @@ import roboguice.activity.RoboActivity; import static org.briarproject.api.lifecycle.LifecycleManager.StartResult; -public class StartupFailureActivity extends RoboActivity { +public class StartupFailureActivity extends BaseActivity { @Override public void onCreate(Bundle state) {