mirror of
https://github.com/k0shk0sh/FastHub.git
synced 2026-01-25 14:47:05 +00:00
So that you have the chance to switch accounts, Google Smart Lock will be disabled until a successful log in.
580 lines
23 KiB
Java
580 lines
23 KiB
Java
package com.fastaccess.ui.base;
|
|
|
|
import android.app.ActivityManager;
|
|
import android.content.Intent;
|
|
import android.graphics.BitmapFactory;
|
|
import android.os.Bundle;
|
|
import android.os.Handler;
|
|
import android.support.annotation.DrawableRes;
|
|
import android.support.annotation.LayoutRes;
|
|
import android.support.annotation.NonNull;
|
|
import android.support.annotation.Nullable;
|
|
import android.support.annotation.StringRes;
|
|
import android.support.design.widget.AppBarLayout;
|
|
import android.support.design.widget.NavigationView;
|
|
import android.support.v4.view.GravityCompat;
|
|
import android.support.v4.widget.DrawerLayout;
|
|
import android.support.v7.widget.Toolbar;
|
|
import android.text.TextUtils;
|
|
import android.view.Menu;
|
|
import android.view.MenuItem;
|
|
import android.view.View;
|
|
import android.view.ViewTreeObserver;
|
|
import android.widget.TextView;
|
|
import android.widget.Toast;
|
|
|
|
import com.fastaccess.App;
|
|
import com.fastaccess.BuildConfig;
|
|
import com.fastaccess.R;
|
|
import com.fastaccess.data.dao.model.Login;
|
|
import com.fastaccess.helper.AppHelper;
|
|
import com.fastaccess.helper.BundleConstant;
|
|
import com.fastaccess.helper.Bundler;
|
|
import com.fastaccess.helper.InputHelper;
|
|
import com.fastaccess.helper.PrefGetter;
|
|
import com.fastaccess.helper.PrefHelper;
|
|
import com.fastaccess.helper.ViewHelper;
|
|
import com.fastaccess.ui.base.mvp.BaseMvp;
|
|
import com.fastaccess.ui.base.mvp.presenter.BasePresenter;
|
|
import com.fastaccess.ui.modules.about.FastHubAboutActivity;
|
|
import com.fastaccess.ui.modules.changelog.ChangelogBottomSheetDialog;
|
|
import com.fastaccess.ui.modules.gists.GistsListActivity;
|
|
import com.fastaccess.ui.modules.login.LoginChooserActivity;
|
|
import com.fastaccess.ui.modules.main.MainActivity;
|
|
import com.fastaccess.ui.modules.main.donation.DonationActivity;
|
|
import com.fastaccess.ui.modules.main.orgs.OrgListDialogFragment;
|
|
import com.fastaccess.ui.modules.notification.NotificationActivity;
|
|
import com.fastaccess.ui.modules.pinned.PinnedReposActivity;
|
|
import com.fastaccess.ui.modules.repos.RepoPagerActivity;
|
|
import com.fastaccess.ui.modules.settings.SettingsActivity;
|
|
import com.fastaccess.ui.modules.user.UserPagerActivity;
|
|
import com.fastaccess.ui.widgets.AvatarLayout;
|
|
import com.fastaccess.ui.widgets.dialog.MessageDialogView;
|
|
import com.fastaccess.ui.widgets.dialog.ProgressDialogFragment;
|
|
import com.google.android.gms.auth.api.Auth;
|
|
import com.nostra13.universalimageloader.core.ImageLoader;
|
|
|
|
import java.util.ArrayList;
|
|
|
|
import butterknife.BindView;
|
|
import butterknife.ButterKnife;
|
|
import es.dmoral.toasty.Toasty;
|
|
import icepick.Icepick;
|
|
import icepick.State;
|
|
|
|
/**
|
|
* Created by Kosh on 24 May 2016, 8:48 PM
|
|
*/
|
|
|
|
public abstract class BaseActivity<V extends BaseMvp.FAView, P extends BasePresenter<V>> extends AdActivity<V, P> implements
|
|
BaseMvp.FAView, NavigationView.OnNavigationItemSelectedListener {
|
|
|
|
@State boolean isProgressShowing;
|
|
@Nullable @BindView(R.id.toolbar) Toolbar toolbar;
|
|
@Nullable @BindView(R.id.appbar) public AppBarLayout appbar;
|
|
@Nullable @BindView(R.id.drawer) public DrawerLayout drawer;
|
|
@Nullable @BindView(R.id.extrasNav) public NavigationView extraNav;
|
|
|
|
private static int REFRESH_CODE = 64;
|
|
|
|
private long backPressTimer;
|
|
private Toast toast;
|
|
|
|
@LayoutRes protected abstract int layout();
|
|
|
|
protected abstract boolean isTransparent();
|
|
|
|
protected abstract boolean canBack();
|
|
|
|
protected abstract boolean isSecured();
|
|
|
|
@Override protected void onSaveInstanceState(Bundle outState) {
|
|
super.onSaveInstanceState(outState);
|
|
Icepick.saveInstanceState(this, outState);
|
|
}
|
|
|
|
@Override protected void onCreate(@Nullable Bundle savedInstanceState) {
|
|
setupTheme();
|
|
AppHelper.updateAppLanguage(this);
|
|
super.onCreate(savedInstanceState);
|
|
if (layout() != 0) {
|
|
setContentView(layout());
|
|
ButterKnife.bind(this);
|
|
}
|
|
if (!isSecured()) {
|
|
if (!isLoggedIn()) {
|
|
onRequireLogin();
|
|
return;
|
|
}
|
|
}
|
|
Icepick.setDebug(BuildConfig.DEBUG);
|
|
if (savedInstanceState != null && !savedInstanceState.isEmpty()) {
|
|
Icepick.restoreInstanceState(this, savedInstanceState);
|
|
}
|
|
setupToolbarAndStatusBar(toolbar);
|
|
showHideAds();
|
|
if (savedInstanceState == null && PrefGetter.showWhatsNew()) {
|
|
new ChangelogBottomSheetDialog().show(getSupportFragmentManager(), "ChangelogBottomSheetDialog");
|
|
}
|
|
setupNavigationView(extraNav);
|
|
setupDrawer();
|
|
}
|
|
|
|
@Override public boolean onCreateOptionsMenu(Menu menu) {
|
|
return super.onCreateOptionsMenu(menu);
|
|
}
|
|
|
|
@Override public boolean onOptionsItemSelected(MenuItem item) {
|
|
if (canBack()) {
|
|
if (item.getItemId() == android.R.id.home) {
|
|
onBackPressed();
|
|
return true;
|
|
}
|
|
}
|
|
return super.onOptionsItemSelected(item);
|
|
}
|
|
|
|
@Override public void onDialogDismissed() {
|
|
|
|
}//pass
|
|
|
|
@Override public void onMessageDialogActionClicked(boolean isOk, @Nullable Bundle bundle) {
|
|
if (isOk && bundle != null) {
|
|
boolean logout = bundle.getBoolean("logout");
|
|
if (logout){
|
|
onRequireLogin();
|
|
if(App.getInstance().getGoogleApiClient().isConnected())
|
|
Auth.CredentialsApi.disableAutoSignIn(App.getInstance().getGoogleApiClient());
|
|
}
|
|
}
|
|
}//pass
|
|
|
|
@Override public void showMessage(@StringRes int titleRes, @StringRes int msgRes) {
|
|
showMessage(getString(titleRes), getString(msgRes));
|
|
}
|
|
|
|
@Override public void showMessage(@NonNull String titleRes, @NonNull String msgRes) {
|
|
hideProgress();
|
|
if (toast != null) toast.cancel();
|
|
toast = titleRes.equals(getString(R.string.error))
|
|
? Toasty.error(getApplicationContext(), msgRes, Toast.LENGTH_LONG)
|
|
: Toasty.info(getApplicationContext(), msgRes, Toast.LENGTH_LONG);
|
|
toast.show();
|
|
}
|
|
|
|
@Override public void showErrorMessage(@NonNull String msgRes) {
|
|
showMessage(getString(R.string.error), msgRes);
|
|
}
|
|
|
|
@Override public boolean isLoggedIn() {
|
|
return !InputHelper.isEmpty(PrefGetter.getToken()) && Login.getUser() != null;
|
|
}
|
|
|
|
@Override public void showProgress(@StringRes int resId) {
|
|
String msg = getString(R.string.in_progress);
|
|
if (resId != 0) {
|
|
msg = getString(resId);
|
|
}
|
|
if (!isProgressShowing) {
|
|
ProgressDialogFragment fragment = (ProgressDialogFragment) AppHelper.getFragmentByTag(getSupportFragmentManager(),
|
|
ProgressDialogFragment.TAG);
|
|
if (fragment == null) {
|
|
isProgressShowing = true;
|
|
fragment = ProgressDialogFragment.newInstance(msg, false);
|
|
fragment.show(getSupportFragmentManager(), ProgressDialogFragment.TAG);
|
|
}
|
|
}
|
|
}
|
|
|
|
@Override public void hideProgress() {
|
|
ProgressDialogFragment fragment = (ProgressDialogFragment) AppHelper.getFragmentByTag(getSupportFragmentManager(),
|
|
ProgressDialogFragment.TAG);
|
|
if (fragment != null) {
|
|
isProgressShowing = false;
|
|
fragment.dismiss();
|
|
}
|
|
}
|
|
|
|
@Override public void onRequireLogin() {
|
|
Toasty.warning(this, getString(R.string.unauthorized_user), Toast.LENGTH_LONG).show();
|
|
ImageLoader.getInstance().clearDiskCache();
|
|
ImageLoader.getInstance().clearMemoryCache();
|
|
PrefHelper.clearKey("token");
|
|
App.getInstance().getDataStore()
|
|
.delete(Login.class)
|
|
.get()
|
|
.value();
|
|
Intent intent = new Intent(this, LoginChooserActivity.class);
|
|
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
|
|
startActivity(intent);
|
|
finishAffinity();
|
|
}
|
|
|
|
@Override public boolean onNavigationItemSelected(@NonNull MenuItem item) {
|
|
if (drawer != null) {
|
|
drawer.closeDrawer(GravityCompat.START);
|
|
}
|
|
if (item.isChecked()) return false;
|
|
new Handler().postDelayed(() -> {
|
|
if (isFinishing()) return;
|
|
if (item.getItemId() == R.id.navToRepo) {
|
|
onNavToRepoClicked();
|
|
} else if (item.getItemId() == R.id.supportDev) {
|
|
startActivity(new Intent(this, DonationActivity.class));
|
|
} else if (item.getItemId() == R.id.gists) {
|
|
GistsListActivity.startActivity(this, false);
|
|
} else if (item.getItemId() == R.id.pinnedMenu) {
|
|
PinnedReposActivity.startActivity(this);
|
|
} else if (item.getItemId() == R.id.mainView) {
|
|
Intent intent = new Intent(this, MainActivity.class);
|
|
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
|
|
startActivity(intent);
|
|
finish();
|
|
} else if (item.getItemId() == R.id.profile) {
|
|
startActivity(UserPagerActivity.createIntent(this, Login.getUser().getLogin()));
|
|
} else if (item.getItemId() == R.id.logout) {
|
|
onLogoutPressed();
|
|
} else if (item.getItemId() == R.id.settings) {
|
|
onOpenSettings();
|
|
} else if (item.getItemId() == R.id.about) {
|
|
startActivity(new Intent(this, FastHubAboutActivity.class));
|
|
} else if (item.getItemId() == R.id.orgs) {
|
|
onOpenOrgsDialog();
|
|
} else if (item.getItemId() == R.id.notifications) {
|
|
startActivity(new Intent(this, NotificationActivity.class));
|
|
}
|
|
}, 250);
|
|
return false;
|
|
}
|
|
|
|
@Override public void onBackPressed() {
|
|
if (drawer != null && drawer.isDrawerOpen(GravityCompat.START)) {
|
|
drawer.closeDrawer(GravityCompat.START);
|
|
} else {
|
|
boolean clickTwiceToExit = !PrefGetter.isTwiceBackButtonDisabled();
|
|
superOnBackPressed(clickTwiceToExit);
|
|
}
|
|
}
|
|
|
|
@Override public void onLogoutPressed() {
|
|
MessageDialogView.newInstance(getString(R.string.logout), getString(R.string.confirm_message),
|
|
Bundler.start()
|
|
.put(BundleConstant.YES_NO_EXTRA, true)
|
|
.put("logout", true)
|
|
.end())
|
|
.show(getSupportFragmentManager(), MessageDialogView.TAG);
|
|
}
|
|
|
|
@Override public void onThemeChanged() {
|
|
if (this instanceof MainActivity) {
|
|
recreate();
|
|
} else {
|
|
Intent intent = new Intent(this, MainActivity.class);
|
|
intent.putExtras(Bundler.start().put(BundleConstant.YES_NO_EXTRA, true).end());
|
|
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
|
|
startActivity(intent);
|
|
finish();
|
|
}
|
|
}
|
|
|
|
@Override public void onOpenSettings() {
|
|
startActivityForResult(new Intent(this, SettingsActivity.class), REFRESH_CODE);
|
|
}
|
|
|
|
@Override
|
|
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
|
|
if(requestCode==REFRESH_CODE)
|
|
if(resultCode==RESULT_OK)
|
|
recreate();
|
|
super.onActivityResult(requestCode, resultCode, data);
|
|
}
|
|
|
|
protected void selectHome(boolean hideRepo) {
|
|
if (extraNav != null) {
|
|
if (hideRepo) {
|
|
extraNav.getMenu().findItem(R.id.navToRepo).setVisible(false);
|
|
extraNav.getMenu().findItem(R.id.mainView).setVisible(true);
|
|
return;
|
|
}
|
|
extraNav.getMenu().findItem(R.id.navToRepo).setVisible(false);
|
|
extraNav.getMenu().findItem(R.id.mainView).setCheckable(true);
|
|
extraNav.getMenu().findItem(R.id.mainView).setChecked(true);
|
|
}
|
|
}
|
|
|
|
protected void selectProfile() {
|
|
selectHome(true);
|
|
if (extraNav != null) {
|
|
extraNav.getMenu().findItem(R.id.profile).setCheckable(true);
|
|
extraNav.getMenu().findItem(R.id.profile).setChecked(true);
|
|
}
|
|
}
|
|
|
|
protected void selectPinned() {
|
|
if (extraNav != null) {
|
|
extraNav.getMenu().findItem(R.id.pinnedMenu).setCheckable(true);
|
|
extraNav.getMenu().findItem(R.id.pinnedMenu).setChecked(true);
|
|
}
|
|
}
|
|
|
|
protected void onSelectNotifications() {
|
|
if (extraNav != null) {
|
|
extraNav.getMenu().findItem(R.id.notifications).setCheckable(true);
|
|
extraNav.getMenu().findItem(R.id.notifications).setChecked(true);
|
|
}
|
|
}
|
|
|
|
protected void onOpenOrgsDialog() {
|
|
OrgListDialogFragment.newInstance().show(getSupportFragmentManager(), "OrgListDialogFragment");
|
|
}
|
|
|
|
protected void showNavToRepoItem() {
|
|
if (extraNav != null) {
|
|
extraNav.getMenu().findItem(R.id.navToRepo).setVisible(true);
|
|
}
|
|
}
|
|
|
|
protected void onNavToRepoClicked() {}
|
|
|
|
private void setupToolbarAndStatusBar(@Nullable Toolbar toolbar) {
|
|
changeStatusBarColor(isTransparent());
|
|
if (toolbar != null) {
|
|
setSupportActionBar(toolbar);
|
|
if (canBack()) {
|
|
if (getSupportActionBar() != null) {
|
|
getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_back);
|
|
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
|
if (canBack()) {
|
|
View navIcon = getToolbarNavigationIcon(toolbar);
|
|
if (navIcon != null) {
|
|
navIcon.setOnLongClickListener(v -> {
|
|
Intent intent = new Intent(this, MainActivity.class);
|
|
startActivity(intent);
|
|
finish();
|
|
return true;
|
|
});
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
protected void setToolbarIcon(@DrawableRes int res) {
|
|
if (getSupportActionBar() != null) {
|
|
getSupportActionBar().setHomeAsUpIndicator(res);
|
|
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
|
}
|
|
}
|
|
|
|
protected void hideShowShadow(boolean show) {
|
|
if (appbar != null) {
|
|
appbar.setElevation(show ? getResources().getDimension(R.dimen.spacing_micro) : 0.0f);
|
|
}
|
|
}
|
|
|
|
protected void changeStatusBarColor(boolean isTransparent) {
|
|
if (!isTransparent) {
|
|
getWindow().setStatusBarColor(ViewHelper.getPrimaryDarkColor(this));
|
|
}
|
|
}
|
|
|
|
private void setupTheme() {
|
|
int themeMode = PrefGetter.getThemeType(getApplicationContext());
|
|
int themeColor = PrefGetter.getThemeColor(getApplicationContext());
|
|
if (themeMode == PrefGetter.LIGHT) {
|
|
switch (themeColor) {
|
|
case PrefGetter.RED:
|
|
setTheme(R.style.ThemeLight_Red);
|
|
break;
|
|
case PrefGetter.PINK:
|
|
setTheme(R.style.ThemeLight_Pink);
|
|
break;
|
|
case PrefGetter.PURPLE:
|
|
setTheme(R.style.ThemeLight_Purple);
|
|
break;
|
|
case PrefGetter.DEEP_PURPLE:
|
|
setTheme(R.style.ThemeLight_DeepPurple);
|
|
break;
|
|
case PrefGetter.INDIGO:
|
|
setTheme(R.style.ThemeLight_Indigo);
|
|
break;
|
|
case PrefGetter.BLUE:
|
|
setTheme(R.style.ThemeLight);
|
|
break;
|
|
case PrefGetter.LIGHT_BLUE:
|
|
setTheme(R.style.ThemeLight_LightBlue);
|
|
break;
|
|
case PrefGetter.CYAN:
|
|
setTheme(R.style.ThemeLight_Cyan);
|
|
break;
|
|
case PrefGetter.TEAL:
|
|
setTheme(R.style.ThemeLight_Teal);
|
|
break;
|
|
case PrefGetter.GREEN:
|
|
setTheme(R.style.ThemeLight_Green);
|
|
break;
|
|
case PrefGetter.LIGHT_GREEN:
|
|
setTheme(R.style.ThemeLight_LightGreen);
|
|
break;
|
|
case PrefGetter.LIME:
|
|
setTheme(R.style.ThemeLight_Lime);
|
|
break;
|
|
case PrefGetter.YELLOW:
|
|
setTheme(R.style.ThemeLight_Yellow);
|
|
break;
|
|
case PrefGetter.AMBER:
|
|
setTheme(R.style.ThemeLight_Amber);
|
|
break;
|
|
case PrefGetter.ORANGE:
|
|
setTheme(R.style.ThemeLight_Orange);
|
|
break;
|
|
case PrefGetter.DEEP_ORANGE:
|
|
setTheme(R.style.ThemeLight_DeepOrange);
|
|
break;
|
|
default:
|
|
setTheme(R.style.ThemeLight);
|
|
}
|
|
} else if (themeMode == PrefGetter.DARK) {
|
|
switch (themeColor) {
|
|
case PrefGetter.RED:
|
|
setTheme(R.style.ThemeDark_Red);
|
|
break;
|
|
case PrefGetter.PINK:
|
|
setTheme(R.style.ThemeDark_Pink);
|
|
break;
|
|
case PrefGetter.PURPLE:
|
|
setTheme(R.style.ThemeDark_Purple);
|
|
break;
|
|
case PrefGetter.DEEP_PURPLE:
|
|
setTheme(R.style.ThemeDark_DeepPurple);
|
|
break;
|
|
case PrefGetter.INDIGO:
|
|
setTheme(R.style.ThemeDark_Indigo);
|
|
break;
|
|
case PrefGetter.BLUE:
|
|
setTheme(R.style.ThemeDark);
|
|
break;
|
|
case PrefGetter.LIGHT_BLUE:
|
|
setTheme(R.style.ThemeDark_LightBlue);
|
|
break;
|
|
case PrefGetter.CYAN:
|
|
setTheme(R.style.ThemeDark_Cyan);
|
|
break;
|
|
case PrefGetter.TEAL:
|
|
setTheme(R.style.ThemeDark_Teal);
|
|
break;
|
|
case PrefGetter.GREEN:
|
|
setTheme(R.style.ThemeDark_Green);
|
|
break;
|
|
case PrefGetter.LIGHT_GREEN:
|
|
setTheme(R.style.ThemeDark_LightGreen);
|
|
break;
|
|
case PrefGetter.LIME:
|
|
setTheme(R.style.ThemeDark_Lime);
|
|
break;
|
|
case PrefGetter.YELLOW:
|
|
setTheme(R.style.ThemeDark_Yellow);
|
|
break;
|
|
case PrefGetter.AMBER:
|
|
setTheme(R.style.ThemeDark_Amber);
|
|
break;
|
|
case PrefGetter.ORANGE:
|
|
setTheme(R.style.ThemeDark_Orange);
|
|
break;
|
|
case PrefGetter.DEEP_ORANGE:
|
|
setTheme(R.style.ThemeDark_DeepOrange);
|
|
break;
|
|
default:
|
|
setTheme(R.style.ThemeDark);
|
|
}
|
|
}
|
|
setTaskDescription(new ActivityManager.TaskDescription(getString(R.string.app_name),
|
|
BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher), ViewHelper.getPrimaryColor(this)));
|
|
}
|
|
|
|
protected void setupNavigationView(@Nullable NavigationView extraNav) {
|
|
if (extraNav != null) {
|
|
extraNav.setNavigationItemSelectedListener(this);
|
|
Login userModel = Login.getUser();
|
|
if (userModel != null) {
|
|
View view = extraNav.getHeaderView(0);
|
|
if (view != null) {
|
|
((AvatarLayout) view.findViewById(R.id.avatarLayout)).setUrl(userModel.getAvatarUrl(), userModel.getLogin());
|
|
((TextView) view.findViewById(R.id.username)).setText(userModel.getLogin());
|
|
if (!InputHelper.isEmpty(userModel.getName())) {
|
|
((TextView) view.findViewById(R.id.email)).setText(userModel.getName());
|
|
} else {
|
|
view.findViewById(R.id.email).setVisibility(View.GONE);
|
|
}
|
|
view.findViewById(R.id.userHolder).setOnClickListener(v -> UserPagerActivity.startActivity(this, userModel.getLogin()));
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
private void setupDrawer() {
|
|
if (drawer != null && !(this instanceof MainActivity)) {
|
|
if (!PrefGetter.isNavDrawerHintShowed()) {
|
|
drawer.getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
|
|
@Override public boolean onPreDraw() {
|
|
drawer.openDrawer(GravityCompat.START);
|
|
drawer.addDrawerListener(new DrawerLayout.SimpleDrawerListener() {
|
|
@Override public void onDrawerOpened(View drawerView) {
|
|
super.onDrawerOpened(drawerView);
|
|
drawerView.postDelayed(() -> {
|
|
if (drawer != null) {
|
|
drawer.closeDrawer(GravityCompat.START);
|
|
drawer.removeDrawerListener(this);
|
|
}
|
|
}, 1000);
|
|
}
|
|
});
|
|
drawer.getViewTreeObserver().removeOnPreDrawListener(this);
|
|
return true;
|
|
}
|
|
});
|
|
}
|
|
}
|
|
}
|
|
|
|
private void superOnBackPressed(boolean didClickTwice) {
|
|
if (this instanceof MainActivity) {
|
|
if (didClickTwice) {
|
|
if (canExit()) {
|
|
super.onBackPressed();
|
|
}
|
|
} else {
|
|
super.onBackPressed();
|
|
}
|
|
} else {
|
|
super.onBackPressed();
|
|
}
|
|
}
|
|
|
|
private boolean canExit() {
|
|
if (backPressTimer + 2000 > System.currentTimeMillis()) {
|
|
return true;
|
|
} else {
|
|
Toast.makeText(getBaseContext(), R.string.press_again_to_exit, Toast.LENGTH_SHORT).show();
|
|
}
|
|
backPressTimer = System.currentTimeMillis();
|
|
return false;
|
|
}
|
|
|
|
@Nullable private View getToolbarNavigationIcon(Toolbar toolbar) {
|
|
boolean hadContentDescription = TextUtils.isEmpty(toolbar.getNavigationContentDescription());
|
|
String contentDescription = !hadContentDescription ? String.valueOf(toolbar.getNavigationContentDescription()) : "navigationIcon";
|
|
toolbar.setNavigationContentDescription(contentDescription);
|
|
ArrayList<View> potentialViews = new ArrayList<>();
|
|
toolbar.findViewsWithText(potentialViews, contentDescription, View.FIND_VIEWS_WITH_CONTENT_DESCRIPTION);
|
|
View navIcon = null;
|
|
if (potentialViews.size() > 0) {
|
|
navIcon = potentialViews.get(0);
|
|
}
|
|
if (hadContentDescription) toolbar.setNavigationContentDescription(null);
|
|
return navIcon;
|
|
}
|
|
}
|