Support swapping tabs and bookmarks drawers
This commit is contained in:
parent
2f57685610
commit
08161059c9
@ -173,6 +173,7 @@ public abstract class BrowserActivity extends ThemableBrowserActivity implements
|
||||
private boolean mIsFullScreen = false;
|
||||
private boolean mIsImmersive = false;
|
||||
private boolean mShowTabsInDrawer;
|
||||
private boolean mSwapBookmarksAndTabs;
|
||||
private int mOriginalOrientation;
|
||||
private int mBackgroundColor;
|
||||
private int mIconColor;
|
||||
@ -247,6 +248,7 @@ public abstract class BrowserActivity extends ThemableBrowserActivity implements
|
||||
mDisabledIconColor = mDarkTheme ? ContextCompat.getColor(this, R.color.icon_dark_theme_disabled) :
|
||||
ContextCompat.getColor(this, R.color.icon_light_theme_disabled);
|
||||
mShowTabsInDrawer = mPreferences.getShowTabsInDrawer(!isTablet());
|
||||
mSwapBookmarksAndTabs = mPreferences.getBookmarksAndTabsSwapped();
|
||||
|
||||
// initialize background ColorDrawable
|
||||
int primaryColor = ThemeUtils.getPrimaryColor(this);
|
||||
@ -289,7 +291,6 @@ public abstract class BrowserActivity extends ThemableBrowserActivity implements
|
||||
|
||||
final TabsFragment tabsFragment = new TabsFragment();
|
||||
mTabsView = tabsFragment;
|
||||
final int containerId = mShowTabsInDrawer ? R.id.left_drawer : R.id.tabs_toolbar_container;
|
||||
final Bundle tabsFragmentArguments = new Bundle();
|
||||
tabsFragmentArguments.putBoolean(TabsFragment.IS_INCOGNITO, isIncognito());
|
||||
tabsFragmentArguments.putBoolean(TabsFragment.VERTICAL_MODE, mShowTabsInDrawer);
|
||||
@ -303,8 +304,8 @@ public abstract class BrowserActivity extends ThemableBrowserActivity implements
|
||||
final FragmentManager fragmentManager = getSupportFragmentManager();
|
||||
fragmentManager
|
||||
.beginTransaction()
|
||||
.replace(containerId, tabsFragment, TAG_TABS_FRAGMENT)
|
||||
.replace(R.id.right_drawer, bookmarksFragment, TAG_BOOKMARK_FRAGMENT)
|
||||
.replace(getTabsFragmentViewId(), tabsFragment, TAG_TABS_FRAGMENT)
|
||||
.replace(getBookmarksFragmentViewId(), bookmarksFragment, TAG_BOOKMARK_FRAGMENT)
|
||||
.commit();
|
||||
if (mShowTabsInDrawer) {
|
||||
mToolbarLayout.removeView(findViewById(R.id.tabs_toolbar_container));
|
||||
@ -333,7 +334,7 @@ public abstract class BrowserActivity extends ThemableBrowserActivity implements
|
||||
}
|
||||
updateTabNumber(0);
|
||||
} else {
|
||||
mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, mDrawerLeft);
|
||||
mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, mSwapBookmarksAndTabs ? mDrawerRight : mDrawerLeft);
|
||||
mArrowImage.setImageResource(R.drawable.ic_action_home);
|
||||
mArrowImage.setColorFilter(mIconColor, PorterDuff.Mode.SRC_IN);
|
||||
}
|
||||
@ -378,6 +379,7 @@ public abstract class BrowserActivity extends ThemableBrowserActivity implements
|
||||
WebIconDatabase.getInstance().open(getDir("icons", MODE_PRIVATE).getPath());
|
||||
}
|
||||
|
||||
@SuppressWarnings("VariableNotUsedInsideIf")
|
||||
Intent intent = savedInstanceState == null ? getIntent() : null;
|
||||
|
||||
boolean launchedFromHistory = intent != null && (intent.getFlags() & Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY) != 0;
|
||||
@ -395,6 +397,19 @@ public abstract class BrowserActivity extends ThemableBrowserActivity implements
|
||||
}
|
||||
}
|
||||
|
||||
@IdRes
|
||||
private int getBookmarksFragmentViewId() {
|
||||
return mSwapBookmarksAndTabs ? R.id.left_drawer : R.id.right_drawer;
|
||||
}
|
||||
|
||||
private int getTabsFragmentViewId() {
|
||||
if (mShowTabsInDrawer) {
|
||||
return mSwapBookmarksAndTabs ? R.id.right_drawer : R.id.left_drawer;
|
||||
} else {
|
||||
return R.id.tabs_toolbar_container;
|
||||
}
|
||||
}
|
||||
|
||||
static boolean isPanicTrigger(@Nullable Intent intent) {
|
||||
return intent != null && INTENT_PANIC_TRIGGER.equals(intent.getAction());
|
||||
}
|
||||
@ -1239,6 +1254,10 @@ public abstract class BrowserActivity extends ThemableBrowserActivity implements
|
||||
protected void onResume() {
|
||||
super.onResume();
|
||||
Log.d(TAG, "onResume");
|
||||
if (mSwapBookmarksAndTabs != mPreferences.getBookmarksAndTabsSwapped()) {
|
||||
restart();
|
||||
}
|
||||
|
||||
if (mSuggestionsAdapter != null) {
|
||||
mSuggestionsAdapter.refreshPreferences();
|
||||
mSuggestionsAdapter.refreshBookmarks();
|
||||
|
@ -68,7 +68,7 @@ public abstract class ThemableBrowserActivity extends AppCompatActivity {
|
||||
return (getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_XLARGE;
|
||||
}
|
||||
|
||||
private void restart() {
|
||||
protected void restart() {
|
||||
finish();
|
||||
startActivity(new Intent(this, getClass()));
|
||||
}
|
||||
|
@ -31,6 +31,9 @@ public class DisplaySettingsFragment extends LightningPreferenceFragment impleme
|
||||
private static final String SETTINGS_REFLOW = "text_reflow";
|
||||
private static final String SETTINGS_THEME = "app_theme";
|
||||
private static final String SETTINGS_TEXTSIZE = "text_size";
|
||||
private static final String SETTINGS_DRAWERTABS = "cb_drawertabs";
|
||||
private static final String SETTINGS_SWAPTABS = "cb_swapdrawers";
|
||||
|
||||
private static final float XXLARGE = 30.0f;
|
||||
private static final float XLARGE = 26.0f;
|
||||
private static final float LARGE = 22.0f;
|
||||
@ -67,6 +70,8 @@ public class DisplaySettingsFragment extends LightningPreferenceFragment impleme
|
||||
cbviewport = (CheckBoxPreference) findPreference(SETTINGS_VIEWPORT);
|
||||
cboverview = (CheckBoxPreference) findPreference(SETTINGS_OVERVIEWMODE);
|
||||
cbreflow = (CheckBoxPreference) findPreference(SETTINGS_REFLOW);
|
||||
CheckBoxPreference cbDrawerTabs = (CheckBoxPreference) findPreference(SETTINGS_DRAWERTABS);
|
||||
CheckBoxPreference cbSwapTabs = (CheckBoxPreference) findPreference(SETTINGS_SWAPTABS);
|
||||
|
||||
theme.setOnPreferenceClickListener(this);
|
||||
textsize.setOnPreferenceClickListener(this);
|
||||
@ -75,12 +80,16 @@ public class DisplaySettingsFragment extends LightningPreferenceFragment impleme
|
||||
cbviewport.setOnPreferenceChangeListener(this);
|
||||
cboverview.setOnPreferenceChangeListener(this);
|
||||
cbreflow.setOnPreferenceChangeListener(this);
|
||||
cbDrawerTabs.setOnPreferenceChangeListener(this);
|
||||
cbSwapTabs.setOnPreferenceChangeListener(this);
|
||||
|
||||
cbstatus.setChecked(mPreferenceManager.getHideStatusBarEnabled());
|
||||
cbfullscreen.setChecked(mPreferenceManager.getFullScreenEnabled());
|
||||
cbviewport.setChecked(mPreferenceManager.getUseWideViewportEnabled());
|
||||
cboverview.setChecked(mPreferenceManager.getOverviewModeEnabled());
|
||||
cbreflow.setChecked(mPreferenceManager.getTextReflowEnabled());
|
||||
cbDrawerTabs.setChecked(mPreferenceManager.getShowTabsInDrawer(true));
|
||||
cbSwapTabs.setChecked(mPreferenceManager.getBookmarksAndTabsSwapped());
|
||||
|
||||
theme.setSummary(mThemeOptions[mPreferenceManager.getUseTheme()]);
|
||||
}
|
||||
@ -101,27 +110,37 @@ public class DisplaySettingsFragment extends LightningPreferenceFragment impleme
|
||||
|
||||
@Override
|
||||
public boolean onPreferenceChange(@NonNull Preference preference, Object newValue) {
|
||||
boolean checked = false;
|
||||
if (newValue instanceof Boolean) {
|
||||
checked = Boolean.TRUE.equals(newValue);
|
||||
}
|
||||
// switch preferences
|
||||
switch (preference.getKey()) {
|
||||
case SETTINGS_HIDESTATUSBAR:
|
||||
mPreferenceManager.setHideStatusBarEnabled((Boolean) newValue);
|
||||
cbstatus.setChecked((Boolean) newValue);
|
||||
mPreferenceManager.setHideStatusBarEnabled(checked);
|
||||
cbstatus.setChecked(checked);
|
||||
return true;
|
||||
case SETTINGS_FULLSCREEN:
|
||||
mPreferenceManager.setFullScreenEnabled((Boolean) newValue);
|
||||
cbfullscreen.setChecked((Boolean) newValue);
|
||||
mPreferenceManager.setFullScreenEnabled(checked);
|
||||
cbfullscreen.setChecked(checked);
|
||||
return true;
|
||||
case SETTINGS_VIEWPORT:
|
||||
mPreferenceManager.setUseWideViewportEnabled((Boolean) newValue);
|
||||
cbviewport.setChecked((Boolean) newValue);
|
||||
mPreferenceManager.setUseWideViewportEnabled(checked);
|
||||
cbviewport.setChecked(checked);
|
||||
return true;
|
||||
case SETTINGS_OVERVIEWMODE:
|
||||
mPreferenceManager.setOverviewModeEnabled((Boolean) newValue);
|
||||
cboverview.setChecked((Boolean) newValue);
|
||||
mPreferenceManager.setOverviewModeEnabled(checked);
|
||||
cboverview.setChecked(checked);
|
||||
return true;
|
||||
case SETTINGS_REFLOW:
|
||||
mPreferenceManager.setTextReflowEnabled((Boolean) newValue);
|
||||
cbreflow.setChecked((Boolean) newValue);
|
||||
mPreferenceManager.setTextReflowEnabled(checked);
|
||||
cbreflow.setChecked(checked);
|
||||
return true;
|
||||
case SETTINGS_DRAWERTABS:
|
||||
mPreferenceManager.setShowTabsInDrawer(checked);
|
||||
return true;
|
||||
case SETTINGS_SWAPTABS:
|
||||
mPreferenceManager.setBookmarkAndTabsSwapped(checked);
|
||||
return true;
|
||||
default:
|
||||
return false;
|
||||
@ -191,15 +210,15 @@ public class DisplaySettingsFragment extends LightningPreferenceFragment impleme
|
||||
}
|
||||
});
|
||||
picker.setPositiveButton(getResources().getString(R.string.action_ok),
|
||||
new DialogInterface.OnClickListener() {
|
||||
new DialogInterface.OnClickListener() {
|
||||
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
if (mCurrentTheme != mPreferenceManager.getUseTheme()) {
|
||||
getActivity().onBackPressed();
|
||||
}
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
if (mCurrentTheme != mPreferenceManager.getUseTheme()) {
|
||||
getActivity().onBackPressed();
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
picker.setOnCancelListener(new DialogInterface.OnCancelListener() {
|
||||
@Override
|
||||
public void onCancel(DialogInterface dialog) {
|
||||
|
@ -43,8 +43,6 @@ public class GeneralSettingsFragment extends LightningPreferenceFragment impleme
|
||||
private static final String SETTINGS_HOME = "home";
|
||||
private static final String SETTINGS_SEARCHENGINE = "search";
|
||||
private static final String SETTINGS_GOOGLESUGGESTIONS = "google_suggestions";
|
||||
private static final String SETTINGS_DRAWERTABS = "cb_drawertabs";
|
||||
|
||||
private Activity mActivity;
|
||||
private static final int API = android.os.Build.VERSION.SDK_INT;
|
||||
private CharSequence[] mProxyChoices;
|
||||
@ -77,7 +75,6 @@ public class GeneralSettingsFragment extends LightningPreferenceFragment impleme
|
||||
CheckBoxPreference cbJsScript = (CheckBoxPreference) findPreference(SETTINGS_JAVASCRIPT);
|
||||
CheckBoxPreference cbColorMode = (CheckBoxPreference) findPreference(SETTINGS_COLORMODE);
|
||||
CheckBoxPreference cbgooglesuggest = (CheckBoxPreference) findPreference(SETTINGS_GOOGLESUGGESTIONS);
|
||||
CheckBoxPreference cbDrawerTabs = (CheckBoxPreference) findPreference(SETTINGS_DRAWERTABS);
|
||||
|
||||
proxy.setOnPreferenceClickListener(this);
|
||||
useragent.setOnPreferenceClickListener(this);
|
||||
@ -90,7 +87,6 @@ public class GeneralSettingsFragment extends LightningPreferenceFragment impleme
|
||||
cbJsScript.setOnPreferenceChangeListener(this);
|
||||
cbColorMode.setOnPreferenceChangeListener(this);
|
||||
cbgooglesuggest.setOnPreferenceChangeListener(this);
|
||||
cbDrawerTabs.setOnPreferenceChangeListener(this);
|
||||
|
||||
mAgentChoice = mPreferenceManager.getUserAgentChoice();
|
||||
mHomepage = mPreferenceManager.getHomepage();
|
||||
@ -149,7 +145,6 @@ public class GeneralSettingsFragment extends LightningPreferenceFragment impleme
|
||||
cbAds.setChecked(Constants.FULL_VERSION && mPreferenceManager.getAdBlockEnabled());
|
||||
cbColorMode.setChecked(mPreferenceManager.getColorModeEnabled());
|
||||
cbgooglesuggest.setChecked(mPreferenceManager.getGoogleSearchSuggestionsEnabled());
|
||||
cbDrawerTabs.setChecked(mPreferenceManager.getShowTabsInDrawer(true));
|
||||
}
|
||||
|
||||
private void searchUrlPicker() {
|
||||
@ -543,7 +538,7 @@ public class GeneralSettingsFragment extends LightningPreferenceFragment impleme
|
||||
public boolean onPreferenceChange(@NonNull Preference preference, Object newValue) {
|
||||
boolean checked = false;
|
||||
if (newValue instanceof Boolean) {
|
||||
checked = (Boolean) newValue;
|
||||
checked = Boolean.TRUE.equals(newValue);
|
||||
}
|
||||
switch (preference.getKey()) {
|
||||
case SETTINGS_FLASH:
|
||||
@ -574,9 +569,6 @@ public class GeneralSettingsFragment extends LightningPreferenceFragment impleme
|
||||
case SETTINGS_GOOGLESUGGESTIONS:
|
||||
mPreferenceManager.setGoogleSearchSuggestionsEnabled(checked);
|
||||
return true;
|
||||
case SETTINGS_DRAWERTABS:
|
||||
mPreferenceManager.setShowTabsInDrawer(checked);
|
||||
return true;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
|
@ -54,6 +54,7 @@ public class PreferenceManager {
|
||||
public static final String SHOW_TABS_IN_DRAWER = "showTabsInDrawer";
|
||||
public static final String DO_NOT_TRACK = "doNotTrack";
|
||||
public static final String IDENTIFYING_HEADERS = "removeIdentifyingHeaders";
|
||||
public static final String SWAP_BOOKMARKS_AND_TABS = "swapBookmarksAndTabs";
|
||||
|
||||
public static final String USE_PROXY = "useProxy";
|
||||
public static final String PROXY_CHOICE = "proxyChoice";
|
||||
@ -74,6 +75,14 @@ public class PreferenceManager {
|
||||
mPrefs = context.getSharedPreferences(PREFERENCES, 0);
|
||||
}
|
||||
|
||||
public boolean getBookmarksAndTabsSwapped() {
|
||||
return mPrefs.getBoolean(Name.SWAP_BOOKMARKS_AND_TABS, false);
|
||||
}
|
||||
|
||||
public void setBookmarkAndTabsSwapped(boolean swap) {
|
||||
putBoolean(Name.SWAP_BOOKMARKS_AND_TABS, swap);
|
||||
}
|
||||
|
||||
public boolean getAdBlockEnabled() {
|
||||
return mPrefs.getBoolean(Name.BLOCK_ADS, false);
|
||||
}
|
||||
|
@ -225,10 +225,11 @@
|
||||
<string name="dialog_folder">What would you like to do with this folder?</string>
|
||||
<string name="clear_web_storage">Clear Web Storage</string>
|
||||
<string name="clear_web_storage_exit">Clear web storage on exit</string>
|
||||
<string name="message_web_storage_cleared">Web Storage Cleared</string>
|
||||
<string name="message_web_storage_cleared">Web storage cleared</string>
|
||||
<string name="hosts_source">Hosts File Ad Blocking Source</string>
|
||||
<string name="settings_adblock">Ad Block Settings</string>
|
||||
<string name="tabs_in_drawer">Show tabs in Navigation Drawer</string>
|
||||
<string name="tabs_in_drawer">Show tabs in navigation drawer</string>
|
||||
<string name="swap_bookmarks_and_tabs">Swap bookmark and tab drawers</string>
|
||||
<string name="do_not_track">Request \'Do Not Track\'</string>
|
||||
<string name="remove_identifying_headers">Remove Identifying Headers</string>
|
||||
<string name="action_add_to_homescreen">Add to Homescreen</string>
|
||||
|
@ -2,33 +2,41 @@
|
||||
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
|
||||
<PreferenceCategory android:title="@string/settings_display">
|
||||
<CheckBoxPreference
|
||||
android:defaultValue="true"
|
||||
android:key="cb_drawertabs"
|
||||
android:title="@string/tabs_in_drawer"/>
|
||||
<CheckBoxPreference
|
||||
android:defaultValue="true"
|
||||
android:key="cb_swapdrawers"
|
||||
android:title="@string/swap_bookmarks_and_tabs"/>
|
||||
<CheckBoxPreference
|
||||
android:defaultValue="false"
|
||||
android:key="fullScreenOption"
|
||||
android:title="@string/fullScreenOption" />
|
||||
android:title="@string/fullScreenOption"/>
|
||||
<CheckBoxPreference
|
||||
android:defaultValue="true"
|
||||
android:key="fullscreen"
|
||||
android:title="@string/fullscreen" />
|
||||
android:title="@string/fullscreen"/>
|
||||
<CheckBoxPreference
|
||||
android:defaultValue="true"
|
||||
android:key="wideViewPort"
|
||||
android:title="@string/wideViewPort"
|
||||
android:summary="@string/recommended" />
|
||||
android:summary="@string/recommended"
|
||||
android:title="@string/wideViewPort"/>
|
||||
<CheckBoxPreference
|
||||
android:defaultValue="true"
|
||||
android:key="overViewMode"
|
||||
android:title="@string/overViewMode"
|
||||
android:summary="@string/recommended" />
|
||||
android:summary="@string/recommended"
|
||||
android:title="@string/overViewMode"/>
|
||||
<CheckBoxPreference
|
||||
android:defaultValue="false"
|
||||
android:key="text_reflow"
|
||||
android:title="@string/reflow" />
|
||||
android:title="@string/reflow"/>
|
||||
<Preference
|
||||
android:key="app_theme"
|
||||
android:title="@string/theme" />
|
||||
android:title="@string/theme"/>
|
||||
<Preference
|
||||
android:key="text_size"
|
||||
android:title="@string/title_text_size" />
|
||||
android:title="@string/title_text_size"/>
|
||||
</PreferenceCategory>
|
||||
</PreferenceScreen>
|
@ -2,10 +2,6 @@
|
||||
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
|
||||
<PreferenceCategory android:title="@string/settings_general">
|
||||
<CheckBoxPreference
|
||||
android:defaultValue="true"
|
||||
android:key="cb_drawertabs"
|
||||
android:title="@string/tabs_in_drawer" />
|
||||
<CheckBoxPreference
|
||||
android:defaultValue="false"
|
||||
android:key="cb_flash"
|
||||
|
Loading…
Reference in New Issue
Block a user