#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
import android.os.Bundle
import androidx.annotation.IdRes
import androidx.appcompat.app.AppCompatActivity
import androidx.navigation.NavDirections
@ -41,6 +42,9 @@ fun AppCompatActivity.navigate(action: NavDirections) =
fun AppCompatActivity.navigate(@IdRes fragmentId: Int) =
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
get() = kiwixComponent
.activityComponentBuilder()

View File

@ -24,6 +24,7 @@ import android.view.MenuItem
import androidx.appcompat.app.ActionBarDrawerToggle
import androidx.appcompat.view.ActionMode
import androidx.appcompat.widget.Toolbar
import androidx.core.os.bundleOf
import androidx.navigation.NavController
import androidx.navigation.findNavController
import androidx.navigation.ui.AppBarConfiguration
@ -158,8 +159,8 @@ class KiwixMainActivity : CoreMainActivity() {
closeNavigationDrawer()
}
override fun openPage(pageUrl: String, zimFilePath: String?) {
navigate(R.id.navigation_reader)
// openZimFile(file)
override fun openPage(pageUrl: String, zimFilePath: String) {
val bundle = bundleOf("pageUrl" to pageUrl, "zimFileUri" to zimFilePath)
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.VISIBLE
import android.view.ViewGroup
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import androidx.core.net.toFile
import androidx.drawerlayout.widget.DrawerLayout
@ -74,7 +75,17 @@ class ReaderFragment : CoreReaderFragment() {
override fun onActivityCreated(savedInstanceState: Bundle?) {
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
noOpenBookButton.setOnClickListener {
activity.navigate(
@ -86,6 +97,16 @@ class ReaderFragment : CoreReaderFragment() {
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() {
drawerLayout = requireActivity().findViewById(R.id.navigation_container)
tableDrawerRightContainer = requireActivity().findViewById(R.id.reader_drawer_nav_view)

View File

@ -27,6 +27,11 @@
android:name="zimFileUri"
android:defaultValue=""
app:argType="string" />
<argument
android:name="pageUrl"
android:defaultValue=""
app:argType="string" />
<action
android:id="@+id/action_navigation_reader_to_navigation_library"
app:destination="@id/navigation_library" />

View File

@ -125,5 +125,5 @@ abstract class CoreMainActivity : BaseActivity(), WebViewProvider,
abstract fun openSettingsActivity()
abstract fun openHistoryActivity()
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 + ")()");
}
private void loadUrlWithCurrentWebview(String url) {
protected void loadUrlWithCurrentWebview(String url) {
loadUrl(url, getCurrentWebView());
}

View File

@ -18,31 +18,19 @@
package org.kiwix.kiwixmobile.core.page.viewmodel.effects
import android.app.Activity
import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import org.kiwix.kiwixmobile.core.base.SideEffect
import org.kiwix.kiwixmobile.core.main.CoreMainActivity
import org.kiwix.kiwixmobile.core.page.adapter.Page
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(
private val page: Page,
private val zimReaderContainer: ZimReaderContainer
) : SideEffect<Unit> {
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) {
(activity as CoreMainActivity).openPage(page.url, page.zimFilePath)
(activity as CoreMainActivity).openPage(page.url, page.zimFilePath!!)
} else {
(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) {
//
}
}