mirror of
https://github.com/kiwix/kiwix-android.git
synced 2025-09-08 23:07:26 -04:00
#12 Make three options to deactivate sidebars, tabs and reading - deactivate based on build
This commit is contained in:
parent
fe5a94fe80
commit
0153b4514d
@ -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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
@ -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();
|
||||||
|
@ -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
|
||||||
}
|
}
|
||||||
|
@ -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)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user