#2235 history fragment works fully in App module, not Custom

This commit is contained in:
HissPirat 2020-07-28 16:07:01 +02:00
parent 8f0b20717e
commit 0517b77e4e
8 changed files with 39 additions and 20 deletions

View File

@ -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()

View File

@ -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)
} }
} }

View File

@ -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)
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) 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)

View File

@ -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" />

View File

@ -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 = "")
} }

View File

@ -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());
} }

View File

@ -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) { if (page.zimFilePath != zimReaderContainer.zimCanonicalPath) {
putExtra(EXTRA_CHOSE_X_FILE, page.zimFilePath) (activity as CoreMainActivity).openPage(page.url, page.zimFilePath!!)
}
}
)
if (page.zimFilePath != zimReaderContainer.zimCanonicalPath) {
(activity as CoreMainActivity).openPage(page.url, page.zimFilePath)
} else { } else {
(activity as CoreMainActivity).openPage(page.url) (activity as CoreMainActivity).openPage(page.url)
} }

View File

@ -85,7 +85,7 @@ class CustomMainActivity : CoreMainActivity() {
// //
} }
override fun openPage(pageUrl: String, zimFilePath: String?) { override fun openPage(pageUrl: String, zimFilePath: String) {
// //
} }
} }