package com.alorma.github.ui.activity.base;
import android.accounts.Account;
import android.app.ProgressDialog;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.support.annotation.NonNull;
import android.support.annotation.StringRes;
import android.support.annotation.StyleRes;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import com.afollestad.materialdialogs.MaterialDialog;
import com.alorma.github.GitskariosApplication;
import com.alorma.github.R;
import com.alorma.github.account.AccountNameProvider;
import com.alorma.github.injector.component.ApplicationComponent;
import com.alorma.github.log.LogWrapper;
import com.alorma.github.track.Tracker;
import com.alorma.github.ui.activity.AccountsManager;
import com.alorma.github.ui.fragment.preference.GitskariosPreferenceFragment;
import com.alorma.github.utils.AttributesUtils;
import com.alorma.github.utils.KeyboardUtils;
import java.util.List;
import javax.inject.Inject;
public class BaseActivity extends AppCompatActivity {
public static final String EXTRA_WITH_TOKEN = "EXTRA_WITH_TOKEN";
protected MaterialDialog dialog;
private Toolbar toolbar;
private AccountsManager accountsManager;
private ProgressDialog progressDialog;
@Inject protected AccountNameProvider accountNameProvider;
@Inject protected Tracker tracker;
@Inject protected LogWrapper logWrapper;
@Override
protected void onCreate(Bundle savedInstanceState) {
configureTheme();
super.onCreate(savedInstanceState);
injectComponents();
accountsManager = new AccountsManager();
tracker.trackActivity(this);
logWrapper.i("LogWrapper", this.getClass().getName());
}
private void injectComponents() {
GitskariosApplication application = (GitskariosApplication) getApplication();
ApplicationComponent applicationComponent = application.getApplicationComponent();
applicationComponent.inject(this);
injectComponents(applicationComponent);
}
protected void injectComponents(ApplicationComponent applicationComponent) {
}
private void configureTheme() {
try {
SharedPreferences defaultSharedPreferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
String pref_theme = defaultSharedPreferences.getString(GitskariosPreferenceFragment.PREF_THEME, getString(R.string.theme_light));
configureTheme("theme_dark".equalsIgnoreCase(pref_theme));
} catch (Exception e) {
configureTheme(false);
}
}
private void configureTheme(boolean dark) {
if (dark) {
setTheme(getAppDarkTheme());
} else {
setTheme(getAppLightTheme());
}
}
protected int getAppLightTheme() {
return R.style.AppTheme;
}
protected int getAppDarkTheme() {
return R.style.AppTheme_Dark;
}
@Override
public void setContentView(int layoutResID) {
super.setContentView(layoutResID);
if (isToolbarEnabled()) {
toolbar = (Toolbar) findViewById(getToolbarId());
if (toolbar != null) {
toolbar.setTitle(R.string.app_name);
setSupportActionBar(toolbar);
toolbar.setBackgroundColor(AttributesUtils.getPrimaryColor(this));
}
}
}
public boolean isToolbarEnabled() {
return true;
}
public Toolbar getToolbar() {
return toolbar;
}
public int getToolbarId() {
return R.id.toolbar;
}
@Override
public void setTitle(CharSequence title) {
if (toolbar != null) {
toolbar.setTitle(title);
} else {
super.setTitle(title);
}
}
@Override
public void setTitle(int titleId) {
if (titleId != 0) {
if (toolbar != null) {
toolbar.setTitle(titleId);
}
super.setTitle(titleId);
}
}
@NonNull
protected List<Account> getAccounts() {
return accountsManager.getAccounts(this);
}
protected void removeAccount(Account selectedAccount, final AccountsManager.RemoveAccountCallback removeAccountCallback) {
accountsManager.removeAccount(this, selectedAccount, removeAccountCallback);
}
protected void getContent() {
}
protected void showProgressDialog(@StringRes int text) {
if (progressDialog == null) {
try {
progressDialog = new ProgressDialog(this);
progressDialog.setMessage(getString(text));
progressDialog.setCancelable(false);
progressDialog.setCanceledOnTouchOutside(false);
progressDialog.show();
} catch (Exception e) {
e.printStackTrace();
}
}
}
@Override
public void onPause() {
super.onPause();
if (dialog != null && dialog.isShowing()) {
KeyboardUtils.lowerKeyboard(this);
}
}
protected void hideProgressDialog() {
if (progressDialog != null) {
progressDialog.dismiss();
progressDialog = null;
}
}
}