#12 Make three options to deactivate sidebars, tabs and reading - deactivate based on build

This commit is contained in:
Sean Mac Gillicuddy 2020-02-12 11:11:23 +00:00
parent fe5a94fe80
commit 0153b4514d
5 changed files with 112 additions and 39 deletions

View File

@ -213,6 +213,9 @@ private fun NamedDomainObjectContainer<ProductFlavor>.create(
applicationIdSuffix = ".kiwixcustom${customApp.name}" applicationIdSuffix = ".kiwixcustom${customApp.name}"
buildConfigField("String", "ZIM_URL", "\"${customApp.url}\"") buildConfigField("String", "ZIM_URL", "\"${customApp.url}\"")
buildConfigField("String", "ENFORCED_LANG", "\"${customApp.enforcedLanguage}\"") buildConfigField("String", "ENFORCED_LANG", "\"${customApp.enforcedLanguage}\"")
buildConfigField("Boolean", "DISABLE_SIDEBAR", "false")
buildConfigField("Boolean", "DISABLE_READ_ALOUD", "false")
buildConfigField("Boolean", "DISABLE_TABS", "false")
configureStrings(customApp.displayName) configureStrings(customApp.displayName)
} }
} }

View File

@ -57,13 +57,17 @@ abstract class ActivityModule {
menu: Menu, menu: Menu,
webViews: MutableList<KiwixWebView>, webViews: MutableList<KiwixWebView>,
urlIsValid: Boolean, urlIsValid: Boolean,
menuClickListener: MenuClickListener menuClickListener: MenuClickListener,
disableReadAloud: Boolean,
disableTabs: Boolean
): MainMenu = MainMenu( ): MainMenu = MainMenu(
activity, activity,
zimReaderContainer.zimFileReader, zimReaderContainer.zimFileReader,
menu, menu,
webViews, webViews,
urlIsValid, urlIsValid,
disableReadAloud,
disableTabs,
menuClickListener menuClickListener
) )
} }

View File

@ -175,7 +175,7 @@ public abstract class CoreMainActivity extends BaseActivity
@BindView(R2.id.activity_main_fullscreen_button) @BindView(R2.id.activity_main_fullscreen_button)
ImageButton exitFullscreenButton; ImageButton exitFullscreenButton;
@BindView(R2.id.activity_main_drawer_layout) @BindView(R2.id.activity_main_drawer_layout)
DrawerLayout drawerLayout; protected DrawerLayout drawerLayout;
@BindView(R2.id.activity_main_nav_view) @BindView(R2.id.activity_main_nav_view)
NavigationView tableDrawerRightContainer; NavigationView tableDrawerRightContainer;
@BindView(R2.id.activity_main_content_frame) @BindView(R2.id.activity_main_content_frame)
@ -285,7 +285,7 @@ public abstract class CoreMainActivity extends BaseActivity
Menu menu = mode.getMenu(); Menu menu = mode.getMenu();
// Inflate custom menu icon. // Inflate custom menu icon.
getMenuInflater().inflate(R.menu.menu_webview_action, menu); getMenuInflater().inflate(R.menu.menu_webview_action, menu);
readAloudSelection(menu); configureWebViewSelectionHandler(menu);
} }
super.onActionModeStarted(mode); super.onActionModeStarted(mode);
} }
@ -296,7 +296,7 @@ public abstract class CoreMainActivity extends BaseActivity
super.onActionModeFinished(mode); super.onActionModeFinished(mode);
} }
private void readAloudSelection(Menu menu) { protected void configureWebViewSelectionHandler(Menu menu) {
if (menu != null) { if (menu != null) {
menu.findItem(R.id.menu_speak_text) menu.findItem(R.id.menu_speak_text)
.setOnMenuItemClickListener(item -> { .setOnMenuItemClickListener(item -> {
@ -525,7 +525,7 @@ public abstract class CoreMainActivity extends BaseActivity
ContextCompat.getDrawable(this, R.drawable.ic_round_add_white_36dp)); ContextCompat.getDrawable(this, R.drawable.ic_round_add_white_36dp));
actionBar.setDisplayShowTitleEnabled(false); actionBar.setDisplayShowTitleEnabled(false);
drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED); setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
bottomToolbar.setVisibility(View.GONE); bottomToolbar.setVisibility(View.GONE);
contentFrame.setVisibility(View.GONE); contentFrame.setVisibility(View.GONE);
progressBar.setVisibility(View.GONE); progressBar.setVisibility(View.GONE);
@ -550,7 +550,7 @@ public abstract class CoreMainActivity extends BaseActivity
actionBar.setDisplayHomeAsUpEnabled(false); actionBar.setDisplayHomeAsUpEnabled(false);
actionBar.setDisplayShowTitleEnabled(true); actionBar.setDisplayShowTitleEnabled(true);
drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED); setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED);
closeAllTabsButton.setImageDrawable( closeAllTabsButton.setImageDrawable(
ContextCompat.getDrawable(this, R.drawable.ic_close_black_24dp)); ContextCompat.getDrawable(this, R.drawable.ic_close_black_24dp));
startAnimation(tabSwitcherRoot, R.anim.slide_up); startAnimation(tabSwitcherRoot, R.anim.slide_up);
@ -563,6 +563,10 @@ public abstract class CoreMainActivity extends BaseActivity
} }
} }
protected void setDrawerLockMode(int lockMode) {
drawerLayout.setDrawerLockMode(lockMode);
}
@OnClick(R2.id.bottom_toolbar_arrow_back) @OnClick(R2.id.bottom_toolbar_arrow_back)
void goBack() { void goBack() {
if (getCurrentWebView().canGoBack()) { if (getCurrentWebView().canGoBack()) {
@ -1506,10 +1510,14 @@ public abstract class CoreMainActivity extends BaseActivity
@Override @Override
public boolean onCreateOptionsMenu(Menu menu) { public boolean onCreateOptionsMenu(Menu menu) {
mainMenu = menuFactory.create(menu, webViewList, !urlIsInvalid(), this); mainMenu = createMainMenu(menu);
return true; return true;
} }
@NotNull protected MainMenu createMainMenu(Menu menu) {
return menuFactory.create(menu, webViewList, !urlIsInvalid(), this, false, false);
}
protected boolean urlIsInvalid() { protected boolean urlIsInvalid() {
return getCurrentWebView().getUrl() == null; return getCurrentWebView().getUrl() == null;
} }
@ -1675,28 +1683,32 @@ public abstract class CoreMainActivity extends BaseActivity
} }
if (handleEvent) { if (handleEvent) {
AlertDialog.Builder builder = new AlertDialog.Builder(this); showOpenInNewTabDialog(url);
builder.setPositiveButton(android.R.string.yes, (dialog, id) -> {
if (isOpenNewTabInBackground) {
newTabInBackground(url);
Snackbar.make(snackbarRoot, R.string.new_tab_snack_bar, Snackbar.LENGTH_LONG)
.setAction(getString(R.string.open), v -> {
if (webViewList.size() > 1) selectTab(webViewList.size() - 1);
})
.setActionTextColor(getResources().getColor(R.color.white))
.show();
} else {
newTab(url);
}
});
builder.setNegativeButton(android.R.string.no, null);
builder.setMessage(getString(R.string.open_in_new_tab));
AlertDialog dialog = builder.create();
dialog.show();
} }
} }
protected void showOpenInNewTabDialog(String url) {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setPositiveButton(android.R.string.yes, (dialog, id) -> {
if (isOpenNewTabInBackground) {
newTabInBackground(url);
Snackbar.make(snackbarRoot, R.string.new_tab_snack_bar, Snackbar.LENGTH_LONG)
.setAction(getString(R.string.open), v -> {
if (webViewList.size() > 1) selectTab(webViewList.size() - 1);
})
.setActionTextColor(getResources().getColor(R.color.white))
.show();
} else {
newTab(url);
}
});
builder.setNegativeButton(android.R.string.no, null);
builder.setMessage(getString(R.string.open_in_new_tab));
AlertDialog dialog = builder.create();
dialog.show();
}
@Override @Override
public void setHomePage(View view) { public void setHomePage(View view) {
getCurrentWebView().deactivateNightMode(); getCurrentWebView().deactivateNightMode();

View File

@ -22,6 +22,7 @@ import android.content.res.Configuration
import android.view.Menu import android.view.Menu
import android.view.MenuItem import android.view.MenuItem
import android.widget.TextView import android.widget.TextView
import androidx.core.view.isVisible
import org.kiwix.kiwixmobile.core.Intents.internal import org.kiwix.kiwixmobile.core.Intents.internal
import org.kiwix.kiwixmobile.core.R import org.kiwix.kiwixmobile.core.R
import org.kiwix.kiwixmobile.core.extensions.ActivityExtensions.intent import org.kiwix.kiwixmobile.core.extensions.ActivityExtensions.intent
@ -42,6 +43,8 @@ class MainMenu(
menu: Menu, menu: Menu,
webViews: MutableList<KiwixWebView>, webViews: MutableList<KiwixWebView>,
urlIsValid: Boolean, urlIsValid: Boolean,
disableReadAloud: Boolean = false,
disableTabs: Boolean = false,
private val menuClickListener: MenuClickListener private val menuClickListener: MenuClickListener
) { ) {
@ -50,7 +53,9 @@ class MainMenu(
menu: Menu, menu: Menu,
webViews: MutableList<KiwixWebView>, webViews: MutableList<KiwixWebView>,
urlIsValid: Boolean, urlIsValid: Boolean,
menuClickListener: MenuClickListener menuClickListener: MenuClickListener,
disableReadAloud: Boolean,
disableTabs: Boolean
): MainMenu ): MainMenu
} }
@ -72,29 +77,39 @@ class MainMenu(
} }
private val search = menu.findItem(R.id.menu_search) private val search = menu.findItem(R.id.menu_search)
private val tabSwitcher = menu.findItem(R.id.menu_tab_switcher) private var tabSwitcher: MenuItem? = menu.findItem(R.id.menu_tab_switcher)
private val tabSwitcherTextView = private var tabSwitcherTextView: TextView? =
tabSwitcher.actionView.findViewById<TextView>(R.id.ic_tab_switcher_text) tabSwitcher?.actionView?.findViewById(R.id.ic_tab_switcher_text)
private val bookmarks = menu.findItem(R.id.menu_bookmarks_list) private val bookmarks = menu.findItem(R.id.menu_bookmarks_list)
private val history = menu.findItem(R.id.menu_history) private val history = menu.findItem(R.id.menu_history)
private val library = menu.findItem(R.id.menu_openfile) private val library = menu.findItem(R.id.menu_openfile)
private val addNote = menu.findItem(R.id.menu_add_note) private val addNote = menu.findItem(R.id.menu_add_note)
private val randomArticle = menu.findItem(R.id.menu_random_article) private val randomArticle = menu.findItem(R.id.menu_random_article)
private val fullscreen = menu.findItem(R.id.menu_fullscreen) private val fullscreen = menu.findItem(R.id.menu_fullscreen)
private val readAloud = menu.findItem(R.id.menu_read_aloud) private var readAloud: MenuItem? = menu.findItem(R.id.menu_read_aloud)
private val hostBooks = menu.findItem(R.id.menu_host_books) private val hostBooks = menu.findItem(R.id.menu_host_books)
private val help = menu.findItem(R.id.menu_help) private val help = menu.findItem(R.id.menu_help)
private val settings = menu.findItem(R.id.menu_settings) private val settings = menu.findItem(R.id.menu_settings)
private val supportKiwix = menu.findItem(R.id.menu_support_kiwix) private val supportKiwix = menu.findItem(R.id.menu_support_kiwix)
init { init {
if (disableReadAloud) {
readAloud?.isVisible = false
readAloud = null
}
if (disableTabs) {
tabSwitcher?.isVisible = false
tabSwitcherTextView?.isVisible = false
tabSwitcher = null
tabSwitcherTextView = null
}
randomArticle.setShowAsAction( randomArticle.setShowAsAction(
if (activity.resources.configuration.orientation == Configuration.ORIENTATION_LANDSCAPE) if (activity.resources.configuration.orientation == Configuration.ORIENTATION_LANDSCAPE)
MenuItem.SHOW_AS_ACTION_IF_ROOM MenuItem.SHOW_AS_ACTION_IF_ROOM
else else
MenuItem.SHOW_AS_ACTION_NEVER MenuItem.SHOW_AS_ACTION_NEVER
) )
tabSwitcher.actionView.setOnClickListener { menuClickListener.onTabMenuClicked() } tabSwitcher?.actionView?.setOnClickListener { menuClickListener.onTabMenuClicked() }
help.menuItemClickListener { activity.start<HelpActivity>() } help.menuItemClickListener { activity.start<HelpActivity>() }
settings.menuItemClickListener { settings.menuItemClickListener {
activity.startActivityForResult( activity.startActivityForResult(
@ -149,7 +164,7 @@ class MainMenu(
} }
fun updateTabIcon(tabs: Int) { fun updateTabIcon(tabs: Int) {
tabSwitcherTextView.text = if (tabs > 99) ":D" else "$tabs" tabSwitcherTextView?.text = if (tabs > 99) ":D" else "$tabs"
} }
private fun navigateToSearch(zimFileReader: ZimFileReader): Boolean { private fun navigateToSearch(zimFileReader: ZimFileReader): Boolean {
@ -164,15 +179,15 @@ class MainMenu(
} }
fun onTextToSpeechStartedTalking() { fun onTextToSpeechStartedTalking() {
readAloud.setTitle(R.string.menu_read_aloud_stop) readAloud?.setTitle(R.string.menu_read_aloud_stop)
} }
fun onTextToSpeechStoppedTalking() { fun onTextToSpeechStoppedTalking() {
readAloud.setTitle(R.string.menu_read_aloud) readAloud?.setTitle(R.string.menu_read_aloud)
} }
private fun setVisibility(visibility: Boolean, vararg menuItems: MenuItem) { private fun setVisibility(visibility: Boolean, vararg menuItems: MenuItem?) {
menuItems.forEach { it.isVisible = visibility } menuItems.forEach { it?.isVisible = visibility }
} }
fun tryExpandSearch(zimFileReader: ZimFileReader?) { fun tryExpandSearch(zimFileReader: ZimFileReader?) {
@ -182,8 +197,8 @@ class MainMenu(
} }
} }
private fun MenuItem.menuItemClickListener(function: (MenuItem) -> Unit) { private fun MenuItem?.menuItemClickListener(function: (MenuItem) -> Unit) {
setOnMenuItemClickListener { this?.setOnMenuItemClickListener {
function.invoke(it) function.invoke(it)
true true
} }

View File

@ -28,11 +28,14 @@ import android.os.Bundle
import android.provider.Settings import android.provider.Settings
import android.util.Log import android.util.Log
import android.view.Menu import android.view.Menu
import android.widget.ImageView
import androidx.core.app.ActivityCompat import androidx.core.app.ActivityCompat
import androidx.core.content.ContextCompat import androidx.core.content.ContextCompat
import androidx.drawerlayout.widget.DrawerLayout
import org.kiwix.kiwixmobile.core.di.components.CoreComponent import org.kiwix.kiwixmobile.core.di.components.CoreComponent
import org.kiwix.kiwixmobile.core.extensions.ActivityExtensions.start import org.kiwix.kiwixmobile.core.extensions.ActivityExtensions.start
import org.kiwix.kiwixmobile.core.main.CoreMainActivity import org.kiwix.kiwixmobile.core.main.CoreMainActivity
import org.kiwix.kiwixmobile.core.main.MainMenu
import org.kiwix.kiwixmobile.core.main.WebViewCallback import org.kiwix.kiwixmobile.core.main.WebViewCallback
import org.kiwix.kiwixmobile.core.reader.ZimReaderContainer import org.kiwix.kiwixmobile.core.reader.ZimReaderContainer
import org.kiwix.kiwixmobile.core.utils.DialogShower import org.kiwix.kiwixmobile.core.utils.DialogShower
@ -72,6 +75,19 @@ class CustomMainActivity : CoreMainActivity() {
return return
} }
openObbOrZim() openObbOrZim()
setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED)
if (BuildConfig.DISABLE_SIDEBAR) {
val toolbarToc = findViewById<ImageView>(R.id.bottom_toolbar_toc)
toolbarToc.isEnabled = false
toolbarToc.alpha = .25f
}
}
override fun setDrawerLockMode(lockMode: Int) {
super.setDrawerLockMode(
if (BuildConfig.DISABLE_SIDEBAR) DrawerLayout.LOCK_MODE_LOCKED_CLOSED
else lockMode
)
} }
@TargetApi(VERSION_CODES.M) @TargetApi(VERSION_CODES.M)
@ -152,4 +168,27 @@ class CustomMainActivity : CoreMainActivity() {
override fun manageZimFiles(tab: Int) { override fun manageZimFiles(tab: Int) {
// Do nothing // Do nothing
} }
override fun createMainMenu(menu: Menu?): MainMenu {
return menuFactory.create(
menu!!,
webViewList,
!urlIsInvalid(),
this,
BuildConfig.DISABLE_READ_ALOUD,
BuildConfig.DISABLE_TABS
)
}
override fun showOpenInNewTabDialog(url: String?) {
if (BuildConfig.DISABLE_TABS) return
super.showOpenInNewTabDialog(url)
}
override fun configureWebViewSelectionHandler(menu: Menu?) {
if (BuildConfig.DISABLE_READ_ALOUD) {
menu?.findItem(org.kiwix.kiwixmobile.core.R.id.menu_speak_text)?.isVisible = false
}
super.configureWebViewSelectionHandler(menu)
}
} }