mirror of
https://github.com/kiwix/kiwix-android.git
synced 2025-09-10 16:02:05 -04:00
#2235 history fragment works fully in App module, not Custom
This commit is contained in:
parent
8f0b20717e
commit
0517b77e4e
@ -18,6 +18,7 @@
|
|||||||
|
|
||||||
package org.kiwix.kiwixmobile
|
package org.kiwix.kiwixmobile
|
||||||
|
|
||||||
|
import android.os.Bundle
|
||||||
import androidx.annotation.IdRes
|
import androidx.annotation.IdRes
|
||||||
import androidx.appcompat.app.AppCompatActivity
|
import androidx.appcompat.app.AppCompatActivity
|
||||||
import androidx.navigation.NavDirections
|
import androidx.navigation.NavDirections
|
||||||
@ -41,6 +42,9 @@ fun AppCompatActivity.navigate(action: NavDirections) =
|
|||||||
fun AppCompatActivity.navigate(@IdRes fragmentId: Int) =
|
fun AppCompatActivity.navigate(@IdRes fragmentId: Int) =
|
||||||
findNavController(R.id.nav_host_fragment).navigate(fragmentId)
|
findNavController(R.id.nav_host_fragment).navigate(fragmentId)
|
||||||
|
|
||||||
|
fun AppCompatActivity.navigate(@IdRes fragmentId: Int, bundle: Bundle) =
|
||||||
|
findNavController(R.id.nav_host_fragment).navigate(fragmentId, bundle)
|
||||||
|
|
||||||
internal inline val BaseActivity.kiwixActivityComponent
|
internal inline val BaseActivity.kiwixActivityComponent
|
||||||
get() = kiwixComponent
|
get() = kiwixComponent
|
||||||
.activityComponentBuilder()
|
.activityComponentBuilder()
|
||||||
|
@ -24,6 +24,7 @@ import android.view.MenuItem
|
|||||||
import androidx.appcompat.app.ActionBarDrawerToggle
|
import androidx.appcompat.app.ActionBarDrawerToggle
|
||||||
import androidx.appcompat.view.ActionMode
|
import androidx.appcompat.view.ActionMode
|
||||||
import androidx.appcompat.widget.Toolbar
|
import androidx.appcompat.widget.Toolbar
|
||||||
|
import androidx.core.os.bundleOf
|
||||||
import androidx.navigation.NavController
|
import androidx.navigation.NavController
|
||||||
import androidx.navigation.findNavController
|
import androidx.navigation.findNavController
|
||||||
import androidx.navigation.ui.AppBarConfiguration
|
import androidx.navigation.ui.AppBarConfiguration
|
||||||
@ -158,8 +159,8 @@ class KiwixMainActivity : CoreMainActivity() {
|
|||||||
closeNavigationDrawer()
|
closeNavigationDrawer()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun openPage(pageUrl: String, zimFilePath: String?) {
|
override fun openPage(pageUrl: String, zimFilePath: String) {
|
||||||
navigate(R.id.navigation_reader)
|
val bundle = bundleOf("pageUrl" to pageUrl, "zimFileUri" to zimFilePath)
|
||||||
// openZimFile(file)
|
navigate(R.id.navigation_reader, bundle)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -31,6 +31,7 @@ import android.view.View
|
|||||||
import android.view.View.GONE
|
import android.view.View.GONE
|
||||||
import android.view.View.VISIBLE
|
import android.view.View.VISIBLE
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
|
import android.widget.Toast
|
||||||
import androidx.appcompat.app.AppCompatActivity
|
import androidx.appcompat.app.AppCompatActivity
|
||||||
import androidx.core.net.toFile
|
import androidx.core.net.toFile
|
||||||
import androidx.drawerlayout.widget.DrawerLayout
|
import androidx.drawerlayout.widget.DrawerLayout
|
||||||
@ -74,7 +75,17 @@ class ReaderFragment : CoreReaderFragment() {
|
|||||||
|
|
||||||
override fun onActivityCreated(savedInstanceState: Bundle?) {
|
override fun onActivityCreated(savedInstanceState: Bundle?) {
|
||||||
super.onActivityCreated(savedInstanceState)
|
super.onActivityCreated(savedInstanceState)
|
||||||
manageExternalLaunchAndRestoringViewState(args.zimFileUri)
|
if (arguments != null) {
|
||||||
|
val args = ReaderFragmentArgs.fromBundle(requireArguments())
|
||||||
|
if (args.pageUrl.isNotEmpty()) {
|
||||||
|
if (args.zimFileUri.isNotEmpty()) {
|
||||||
|
tryOpeningZimFile(args)
|
||||||
|
}
|
||||||
|
loadUrlWithCurrentWebview(args.pageUrl)
|
||||||
|
} else {
|
||||||
|
manageExternalLaunchAndRestoringViewState(args.zimFileUri)
|
||||||
|
}
|
||||||
|
}
|
||||||
val activity = activity as CoreMainActivity
|
val activity = activity as CoreMainActivity
|
||||||
noOpenBookButton.setOnClickListener {
|
noOpenBookButton.setOnClickListener {
|
||||||
activity.navigate(
|
activity.navigate(
|
||||||
@ -86,6 +97,16 @@ class ReaderFragment : CoreReaderFragment() {
|
|||||||
setFragmentContainerBottomMarginToSizeOfNavBar()
|
setFragmentContainerBottomMarginToSizeOfNavBar()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun tryOpeningZimFile(args: ReaderFragmentArgs) {
|
||||||
|
val file = File(args.zimFileUri)
|
||||||
|
if (!file.exists()) {
|
||||||
|
Toast.makeText(activity, R.string.error_file_not_found, Toast.LENGTH_LONG)
|
||||||
|
.show()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
openZimFile(file)
|
||||||
|
}
|
||||||
|
|
||||||
override fun loadDrawerViews() {
|
override fun loadDrawerViews() {
|
||||||
drawerLayout = requireActivity().findViewById(R.id.navigation_container)
|
drawerLayout = requireActivity().findViewById(R.id.navigation_container)
|
||||||
tableDrawerRightContainer = requireActivity().findViewById(R.id.reader_drawer_nav_view)
|
tableDrawerRightContainer = requireActivity().findViewById(R.id.reader_drawer_nav_view)
|
||||||
|
@ -27,6 +27,11 @@
|
|||||||
android:name="zimFileUri"
|
android:name="zimFileUri"
|
||||||
android:defaultValue=""
|
android:defaultValue=""
|
||||||
app:argType="string" />
|
app:argType="string" />
|
||||||
|
|
||||||
|
<argument
|
||||||
|
android:name="pageUrl"
|
||||||
|
android:defaultValue=""
|
||||||
|
app:argType="string" />
|
||||||
<action
|
<action
|
||||||
android:id="@+id/action_navigation_reader_to_navigation_library"
|
android:id="@+id/action_navigation_reader_to_navigation_library"
|
||||||
app:destination="@id/navigation_library" />
|
app:destination="@id/navigation_library" />
|
||||||
|
@ -125,5 +125,5 @@ abstract class CoreMainActivity : BaseActivity(), WebViewProvider,
|
|||||||
abstract fun openSettingsActivity()
|
abstract fun openSettingsActivity()
|
||||||
abstract fun openHistoryActivity()
|
abstract fun openHistoryActivity()
|
||||||
abstract fun openBookmarksActivity()
|
abstract fun openBookmarksActivity()
|
||||||
abstract fun openPage(pageUrl: String, zimFilePath: String? = null)
|
abstract fun openPage(pageUrl: String, zimFilePath: String = "")
|
||||||
}
|
}
|
||||||
|
@ -789,7 +789,7 @@ public abstract class CoreReaderFragment extends BaseFragment
|
|||||||
loadUrlWithCurrentWebview("javascript:(" + documentParserJs + ")()");
|
loadUrlWithCurrentWebview("javascript:(" + documentParserJs + ")()");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void loadUrlWithCurrentWebview(String url) {
|
protected void loadUrlWithCurrentWebview(String url) {
|
||||||
loadUrl(url, getCurrentWebView());
|
loadUrl(url, getCurrentWebView());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -18,31 +18,19 @@
|
|||||||
|
|
||||||
package org.kiwix.kiwixmobile.core.page.viewmodel.effects
|
package org.kiwix.kiwixmobile.core.page.viewmodel.effects
|
||||||
|
|
||||||
import android.app.Activity
|
|
||||||
import android.content.Intent
|
|
||||||
import androidx.appcompat.app.AppCompatActivity
|
import androidx.appcompat.app.AppCompatActivity
|
||||||
import org.kiwix.kiwixmobile.core.base.SideEffect
|
import org.kiwix.kiwixmobile.core.base.SideEffect
|
||||||
import org.kiwix.kiwixmobile.core.main.CoreMainActivity
|
import org.kiwix.kiwixmobile.core.main.CoreMainActivity
|
||||||
import org.kiwix.kiwixmobile.core.page.adapter.Page
|
import org.kiwix.kiwixmobile.core.page.adapter.Page
|
||||||
import org.kiwix.kiwixmobile.core.reader.ZimReaderContainer
|
import org.kiwix.kiwixmobile.core.reader.ZimReaderContainer
|
||||||
import org.kiwix.kiwixmobile.core.utils.EXTRA_CHOSE_X_FILE
|
|
||||||
import org.kiwix.kiwixmobile.core.utils.EXTRA_CHOSE_X_URL
|
|
||||||
|
|
||||||
data class OpenPage(
|
data class OpenPage(
|
||||||
private val page: Page,
|
private val page: Page,
|
||||||
private val zimReaderContainer: ZimReaderContainer
|
private val zimReaderContainer: ZimReaderContainer
|
||||||
) : SideEffect<Unit> {
|
) : SideEffect<Unit> {
|
||||||
override fun invokeWith(activity: AppCompatActivity) {
|
override fun invokeWith(activity: AppCompatActivity) {
|
||||||
activity.setResult(
|
|
||||||
Activity.RESULT_OK,
|
|
||||||
Intent().putExtra(EXTRA_CHOSE_X_URL, page.url).apply {
|
|
||||||
if (page.zimFilePath != zimReaderContainer.zimCanonicalPath) {
|
|
||||||
putExtra(EXTRA_CHOSE_X_FILE, page.zimFilePath)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
)
|
|
||||||
if (page.zimFilePath != zimReaderContainer.zimCanonicalPath) {
|
if (page.zimFilePath != zimReaderContainer.zimCanonicalPath) {
|
||||||
(activity as CoreMainActivity).openPage(page.url, page.zimFilePath)
|
(activity as CoreMainActivity).openPage(page.url, page.zimFilePath!!)
|
||||||
} else {
|
} else {
|
||||||
(activity as CoreMainActivity).openPage(page.url)
|
(activity as CoreMainActivity).openPage(page.url)
|
||||||
}
|
}
|
||||||
|
@ -85,7 +85,7 @@ class CustomMainActivity : CoreMainActivity() {
|
|||||||
//
|
//
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun openPage(pageUrl: String, zimFilePath: String?) {
|
override fun openPage(pageUrl: String, zimFilePath: String) {
|
||||||
//
|
//
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user