"...res/git@code.briarproject.org:goapunk/briar.git" did not exist on "2687e79593db1595b5f5bff508a88fba1c4de87f"
Newer
Older

Ernir Erlingsson
committed
package org.briarproject.android;
import android.os.Bundle;
import android.os.IBinder;
import android.support.v7.app.AppCompatActivity;

Ernir Erlingsson
committed
import android.view.inputmethod.InputMethodManager;

Ernir Erlingsson
committed
import org.briarproject.android.controller.ActivityLifecycleController;
import org.briarproject.android.forum.ForumModule;

Ernir Erlingsson
committed
import java.util.ArrayList;
import java.util.List;
import static android.view.WindowManager.LayoutParams.FLAG_SECURE;
import static android.view.inputmethod.InputMethodManager.SHOW_IMPLICIT;
import static org.briarproject.android.TestingConstants.PREVENT_SCREENSHOTS;

Ernir Erlingsson
committed
public abstract class BaseActivity extends AppCompatActivity
implements DestroyableContext {
protected ActivityComponent activityComponent;
private final List<ActivityLifecycleController> lifecycleControllers =
new ArrayList<>();
private boolean destroyed = false;

Ernir Erlingsson
committed
public abstract void injectActivity(ActivityComponent component);
public void addLifecycleController(ActivityLifecycleController alc) {
lifecycleControllers.add(alc);

Ernir Erlingsson
committed
}
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (PREVENT_SCREENSHOTS) getWindow().addFlags(FLAG_SECURE);
AndroidComponent applicationComponent =
((BriarApplication) getApplication()).getApplicationComponent();
activityComponent = DaggerActivityComponent.builder()
.androidComponent(applicationComponent)
.activityModule(getActivityModule())
.build();
injectActivity(activityComponent);
for (ActivityLifecycleController alc : lifecycleControllers) {
public ActivityComponent getActivityComponent() {
return activityComponent;
}
// This exists to make test overrides easier
protected ActivityModule getActivityModule() {
return new ActivityModule(this);
}
protected ForumModule getForumModule() {
return new ForumModule();
}
protected void onStart() {
super.onStart();

Ernir Erlingsson
committed
for (ActivityLifecycleController alc : lifecycleControllers) {
alc.onActivityStart();

Ernir Erlingsson
committed
}
protected void onStop() {
super.onStop();

Ernir Erlingsson
committed
for (ActivityLifecycleController alc : lifecycleControllers) {
alc.onActivityStop();

Ernir Erlingsson
committed
}

Ernir Erlingsson
committed
protected void onDestroy() {
super.onDestroy();
destroyed = true;

Ernir Erlingsson
committed
for (ActivityLifecycleController alc : lifecycleControllers) {
alc.onActivityDestroy();
@Override
public void runOnUiThreadUnlessDestroyed(final Runnable r) {
runOnUiThread(new Runnable() {
@Override
public void run() {
if (!destroyed && !isFinishing()) r.run();
}
});
Object o = getSystemService(INPUT_METHOD_SERVICE);
((InputMethodManager) o).showSoftInput(view, SHOW_IMPLICIT);
}
public void hideSoftKeyboard(View view) {
IBinder token = view.getWindowToken();
Object o = getSystemService(INPUT_METHOD_SERVICE);
((InputMethodManager) o).hideSoftInputFromWindow(token, 0);