Skip to content
Snippets Groups Projects
BaseActivity.java 2.04 KiB
Newer Older
package org.briarproject.android;

import android.os.Bundle;
import android.os.IBinder;
import android.support.annotation.CallSuper;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.view.inputmethod.InputMethodManager;

import org.briarproject.android.event.AppBus;
import org.briarproject.android.event.ErrorEvent;
import org.briarproject.api.event.Event;
import org.briarproject.api.event.EventListener;

import javax.inject.Inject;

import static android.view.WindowManager.LayoutParams.FLAG_SECURE;
import static android.view.inputmethod.InputMethodManager.SHOW_IMPLICIT;
import static org.briarproject.android.TestingConstants.PREVENT_SCREENSHOTS;
public abstract class BaseActivity extends AppCompatActivity implements
		EventListener {
	protected ActivityComponent activityComponent;

	@Inject
	protected AppBus appBus;
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);

		if (PREVENT_SCREENSHOTS) getWindow().addFlags(FLAG_SECURE);
		AndroidComponent applicationComponent =
				((BriarApplication) getApplication()).getApplicationComponent();

		activityComponent = DaggerActivityComponent.builder()
				.androidComponent(applicationComponent)
				.activityModule(new ActivityModule(this))
				.build();

		injectActivity(activityComponent);
	@Override
	protected void onResume() {
		super.onResume();
		appBus.addListener(this);
	@Override
	protected void onPause() {
		appBus.removeListener(this);
		super.onPause();
	@Override
	@CallSuper
	public void eventOccurred(Event e) {
		if (e instanceof ErrorEvent) {
			finish();
		}
	public abstract void injectActivity(ActivityComponent component);

	protected void showSoftKeyboard(View view) {
		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);