diff --git a/.idea/inspectionProfiles/kiwixAndroidInspections.xml b/.idea/inspectionProfiles/kiwixAndroidInspections.xml
index 929bc1f6b..e0198680e 100644
--- a/.idea/inspectionProfiles/kiwixAndroidInspections.xml
+++ b/.idea/inspectionProfiles/kiwixAndroidInspections.xml
@@ -11,6 +11,7 @@
+
@@ -57,8 +58,8 @@
-
-
+
+
diff --git a/app/src/main/java/org/kiwix/kiwixmobile/main/KiwixMainActivity.kt b/app/src/main/java/org/kiwix/kiwixmobile/main/KiwixMainActivity.kt
index f97ceb307..1e0fc7bd6 100644
--- a/app/src/main/java/org/kiwix/kiwixmobile/main/KiwixMainActivity.kt
+++ b/app/src/main/java/org/kiwix/kiwixmobile/main/KiwixMainActivity.kt
@@ -21,6 +21,7 @@ package org.kiwix.kiwixmobile.main
import android.content.Intent
import android.os.Bundle
import android.util.Log
+import android.view.View
import android.widget.Toast
import androidx.core.net.toFile
import androidx.core.net.toUri
@@ -30,6 +31,7 @@ import org.kiwix.kiwixmobile.core.extensions.start
import org.kiwix.kiwixmobile.core.extensions.toast
import org.kiwix.kiwixmobile.core.main.CoreMainActivity
import org.kiwix.kiwixmobile.core.main.WebViewCallback
+import org.kiwix.kiwixmobile.core.reader.ZimFileReader
import org.kiwix.kiwixmobile.core.reader.ZimReaderContainer
import org.kiwix.kiwixmobile.core.utils.Constants.EXTRA_ZIM_FILE
import org.kiwix.kiwixmobile.core.utils.Constants.TAG_CURRENT_ARTICLES
@@ -45,6 +47,7 @@ import org.kiwix.kiwixmobile.zim_manager.ZimManageActivity
import java.io.File
class KiwixMainActivity : CoreMainActivity() {
+ private val homeUrl = "file:///android_asset/home.html"
override fun injection() {
kiwixActivityComponent.inject(this)
@@ -55,6 +58,21 @@ class KiwixMainActivity : CoreMainActivity() {
manageExternalLaunchAndRestoringViewState()
}
+ override fun onResume() {
+ super.onResume()
+ if (zimReaderContainer.zimFile == null && homeUrl != currentWebView.url) {
+ showHomePage()
+ }
+
+ if (webViewList.isNotEmpty() && currentWebViewIndex < webViewList.size &&
+ webViewList[currentWebViewIndex].url != null &&
+ webViewList[currentWebViewIndex].url == homeUrl &&
+ webViewList[currentWebViewIndex].findViewById(R.id.get_content_card) != null
+ ) {
+ webViewList[currentWebViewIndex].findViewById(R.id.get_content_card).isEnabled = true
+ }
+ }
+
override fun createWebClient(
webViewCallback: WebViewCallback,
zimReaderContainer: ZimReaderContainer
@@ -95,6 +113,24 @@ class KiwixMainActivity : CoreMainActivity() {
}
}
+ override fun hasValidFileAndUrl(url: String?, zimFileReader: ZimFileReader?) =
+ super.hasValidFileAndUrl(url, zimFileReader) && url != homeUrl
+
+ override fun urlIsInvalid() =
+ super.urlIsInvalid() || currentWebView.url == homeUrl
+
+ override fun showHomePage() {
+ currentWebView.removeAllViews()
+ currentWebView.loadUrl(homeUrl)
+ }
+
+ override fun createNewTab() {
+ newTab(homeUrl)
+ }
+
+ override fun isInvalidTitle(zimFileTitle: String?) =
+ super.isInvalidTitle(zimFileTitle) || homeUrl == currentWebView.url
+
private fun uriFromIntent() =
intent.data ?: intent.getStringExtra(EXTRA_ZIM_FILE)?.let {
File(FileUtils.getFileName(it)).toUri()
@@ -133,9 +169,7 @@ class KiwixMainActivity : CoreMainActivity() {
}
override fun manageZimFiles(tab: Int) {
- start {
- putExtra(ZimManageActivity.TAB_EXTRA, tab)
- }
+ start { putExtra(ZimManageActivity.TAB_EXTRA, tab) }
}
override fun onNewIntent(intent: Intent?) {
diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/main/CoreMainActivity.java b/core/src/main/java/org/kiwix/kiwixmobile/core/main/CoreMainActivity.java
index 6852182da..f232be9bf 100644
--- a/core/src/main/java/org/kiwix/kiwixmobile/core/main/CoreMainActivity.java
+++ b/core/src/main/java/org/kiwix/kiwixmobile/core/main/CoreMainActivity.java
@@ -155,8 +155,6 @@ import static org.kiwix.kiwixmobile.core.utils.StyleUtils.dialogStyle;
public abstract class CoreMainActivity extends BaseActivity implements WebViewCallback,
MainContract.View {
- private static final String NEW_TAB = "NEW_TAB";
- private static final String HOME_URL = "file:///android_asset/home.html";
public static boolean isFullscreenOpened;
public static boolean refresh;
public static boolean wifiOnly;
@@ -186,9 +184,9 @@ public abstract class CoreMainActivity extends BaseActivity implements WebViewCa
@BindView(R2.id.activity_main_nav_view)
NavigationView tableDrawerRightContainer;
@BindView(R2.id.activity_main_content_frame)
- FrameLayout contentFrame;
+ protected FrameLayout contentFrame;
@BindView(R2.id.bottom_toolbar)
- LinearLayout bottomToolbar;
+ protected LinearLayout bottomToolbar;
@BindView(R2.id.bottom_toolbar_bookmark)
ImageView bottomToolbarBookmark;
@BindView(R2.id.bottom_toolbar_arrow_back)
@@ -198,7 +196,7 @@ public abstract class CoreMainActivity extends BaseActivity implements WebViewCa
@BindView(R2.id.tab_switcher_recycler_view)
RecyclerView tabRecyclerView;
@BindView(R2.id.activity_main_tab_switcher)
- View tabSwitcherRoot;
+ protected View tabSwitcherRoot;
@BindView(R2.id.tab_switcher_close_all_tabs)
FloatingActionButton closeAllTabsButton;
@BindView(R2.id.snackbar_root)
@@ -211,7 +209,7 @@ public abstract class CoreMainActivity extends BaseActivity implements WebViewCa
@Inject
StorageObserver storageObserver;
@Inject
- ZimReaderContainer zimReaderContainer;
+ protected ZimReaderContainer zimReaderContainer;
private CountDownTimer hideBackToTopTimer = new CountDownTimer(1200, 1200) {
@Override
@@ -238,7 +236,7 @@ public abstract class CoreMainActivity extends BaseActivity implements WebViewCa
private KiwixTextToSpeech tts;
private CompatFindActionModeCallback compatCallback;
private TabsAdapter tabsAdapter;
- private int currentWebViewIndex = 0;
+ protected int currentWebViewIndex = 0;
private File file;
private ActionMode actionMode = null;
private KiwixWebView tempForUndo;
@@ -392,11 +390,11 @@ public abstract class CoreMainActivity extends BaseActivity implements WebViewCa
selectTab(webViewList.size() - 1);
}
if (intent.hasExtra(EXTRA_CHOSE_X_URL)) {
- newTab();
+ newMainPageTab();
getCurrentWebView().loadUrl(intent.getStringExtra(EXTRA_CHOSE_X_URL));
}
if (intent.hasExtra(EXTRA_CHOSE_X_TITLE)) {
- newTab();
+ newMainPageTab();
getCurrentWebView().loadUrl(intent.getStringExtra(EXTRA_CHOSE_X_TITLE));
}
}
@@ -507,7 +505,7 @@ public abstract class CoreMainActivity extends BaseActivity implements WebViewCa
}
}
- private void hideTabSwitcher() {
+ protected void hideTabSwitcher() {
actionBar.setDisplayHomeAsUpEnabled(false);
actionBar.setDisplayShowTitleEnabled(true);
@@ -644,15 +642,15 @@ public abstract class CoreMainActivity extends BaseActivity implements WebViewCa
}
private void updateTitle() {
- String zimFileTitle = zimReaderContainer.getZimFileTitle();
- if (zimFileTitle == null) {
- zimFileTitle = getString(R.string.app_name);
- }
- if (zimFileTitle.trim().isEmpty() || HOME_URL.equals(getCurrentWebView().getUrl())) {
- actionBar.setTitle(createMenuText(getString(R.string.app_name)));
- } else {
- actionBar.setTitle(createMenuText(zimFileTitle));
- }
+ actionBar.setTitle(createMenuText(getValidTitle(zimReaderContainer.getZimFileTitle())));
+ }
+
+ private String getValidTitle(String zimFileTitle) {
+ return isInvalidTitle(zimFileTitle) ? getString(R.string.app_name) : zimFileTitle;
+ }
+
+ protected boolean isInvalidTitle(String zimFileTitle) {
+ return zimFileTitle == null || zimFileTitle.trim().isEmpty();
}
private void setUpTTS() {
@@ -768,7 +766,7 @@ public abstract class CoreMainActivity extends BaseActivity implements WebViewCa
WebViewCallback webViewCallback,
ZimReaderContainer zimReaderContainer);
- private KiwixWebView newTab() {
+ protected KiwixWebView newMainPageTab() {
return newTab(contentUrl(zimReaderContainer.getMainPage()));
}
@@ -830,7 +828,7 @@ public abstract class CoreMainActivity extends BaseActivity implements WebViewCa
}
protected KiwixWebView getCurrentWebView() {
- if (webViewList.size() == 0) return newTab();
+ if (webViewList.size() == 0) return newMainPageTab();
if (currentWebViewIndex < webViewList.size()) {
return webViewList.get(currentWebViewIndex);
} else {
@@ -845,7 +843,7 @@ public abstract class CoreMainActivity extends BaseActivity implements WebViewCa
if (tabSwitcherRoot.getVisibility() == View.VISIBLE) {
hideTabSwitcher();
}
- newTab(HOME_URL);
+ createNewTab();
return true;
} else if (itemId == R.id.menu_add_note) {
if (requestExternalStorageWritePermissionForNotes()) {
@@ -898,6 +896,8 @@ public abstract class CoreMainActivity extends BaseActivity implements WebViewCa
return super.onOptionsItemSelected(item);
}
+ protected abstract void createNewTab();
+
/** Creates the full screen AddNoteDialog, which is a DialogFragment */
private void showAddNoteDialog() {
FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
@@ -986,12 +986,6 @@ public abstract class CoreMainActivity extends BaseActivity implements WebViewCa
}
}
- @Override
- public void showHomePage() {
- getCurrentWebView().removeAllViews();
- getCurrentWebView().loadUrl(HOME_URL);
- }
-
@Override
public void openExternalUrl(Intent intent) {
if (intent.resolveActivity(getPackageManager()) != null) {
@@ -1219,12 +1213,13 @@ public abstract class CoreMainActivity extends BaseActivity implements WebViewCa
private void openHomeScreen() {
new Handler().postDelayed(() -> {
if (webViewList.size() == 0) {
- newTab(HOME_URL);
+ createNewTab();
hideTabSwitcher();
}
}, 300);
}
+
@OnClick(R2.id.bottom_toolbar_bookmark)
public void toggleBookmark() {
//Check maybe need refresh
@@ -1277,17 +1272,7 @@ public abstract class CoreMainActivity extends BaseActivity implements WebViewCa
recreate();
}
presenter.loadCurrentZimBookmarksUrl();
- if (zimReaderContainer.getZimFile() == null &&
- !HOME_URL.equals(getCurrentWebView().getUrl())) {
- showHomePage();
- }
- if (!webViewList.isEmpty() && currentWebViewIndex < webViewList.size() &&
- webViewList.get(currentWebViewIndex).getUrl() != null &&
- webViewList.get(currentWebViewIndex).getUrl().equals(HOME_URL) &&
- webViewList.get(currentWebViewIndex).findViewById(R.id.get_content_card) != null) {
- webViewList.get(currentWebViewIndex).findViewById(R.id.get_content_card).setEnabled(true);
- }
updateBottomToolbarVisibility();
presenter.loadBooks();
@@ -1324,9 +1309,6 @@ public abstract class CoreMainActivity extends BaseActivity implements WebViewCa
startActivityForResult(i, REQUEST_FILE_SEARCH);
}
break;
- case NEW_TAB:
- newTab(HOME_URL);
- break;
}
}
updateWidgets(this);
@@ -1334,8 +1316,7 @@ public abstract class CoreMainActivity extends BaseActivity implements WebViewCa
private void updateBottomToolbarVisibility() {
if (checkNull(bottomToolbar)) {
- if (!HOME_URL.equals(
- getCurrentWebView().getUrl())
+ if (!urlIsInvalid()
&& tabSwitcherRoot.getVisibility() != View.VISIBLE) {
bottomToolbar.setVisibility(View.VISIBLE);
if (getCurrentWebView() instanceof ToolbarStaticKiwixWebView) {
@@ -1507,7 +1488,7 @@ public abstract class CoreMainActivity extends BaseActivity implements WebViewCa
}
if (resultCode == RESULT_HISTORY_CLEARED) {
webViewList.clear();
- newTab();
+ newMainPageTab();
tabsAdapter.notifyDataSetChanged();
}
loadPrefs();
@@ -1522,7 +1503,7 @@ public abstract class CoreMainActivity extends BaseActivity implements WebViewCa
kiwixWebView.clearHistory();
}
webViewList.clear();
- newTab(HOME_URL);
+ createNewTab();
} else {
String title = data.getStringExtra(EXTRA_CHOSE_X_TITLE);
String url = data.getStringExtra(EXTRA_CHOSE_X_URL);
@@ -1550,7 +1531,7 @@ public abstract class CoreMainActivity extends BaseActivity implements WebViewCa
finish();
return;
}
- newTab();
+ newMainPageTab();
if (url != null) {
getCurrentWebView().loadUrl(url);
} else if (title != null) {
@@ -1608,7 +1589,7 @@ public abstract class CoreMainActivity extends BaseActivity implements WebViewCa
menu.findItem(R.id.menu_read_aloud).setVisible(false);
} else {
menu.findItem(R.id.menu_fullscreen).setVisible(true);
- if (urlIsHomeOrNull()) {
+ if (urlIsInvalid()) {
menu.findItem(R.id.menu_search).setVisible(false);
menu.findItem(R.id.menu_read_aloud).setVisible(false);
menu.findItem(R.id.menu_random_article).setVisible(false);
@@ -1621,9 +1602,8 @@ public abstract class CoreMainActivity extends BaseActivity implements WebViewCa
return true;
}
- private boolean urlIsHomeOrNull() {
- return getCurrentWebView().getUrl() == null ||
- getCurrentWebView().getUrl().equals(HOME_URL);
+ protected boolean urlIsInvalid(){
+ return getCurrentWebView().getUrl() == null;
}
private void updateTabSwitcherIcon() {
@@ -1638,15 +1618,10 @@ public abstract class CoreMainActivity extends BaseActivity implements WebViewCa
private void refreshBookmarkSymbol() {
if (checkNull(bottomToolbarBookmark)) {
- if (getCurrentWebView().getUrl() != null &&
- zimReaderContainer.getId() != null &&
- !getCurrentWebView().getUrl().equals(HOME_URL)) {
- int icon = bookmarks.contains(getCurrentWebView().getUrl()) ? R.drawable.ic_bookmark_24dp
- : R.drawable.ic_bookmark_border_24dp;
- bottomToolbarBookmark.setImageResource(icon);
- } else {
- bottomToolbarBookmark.setImageResource(R.drawable.ic_bookmark_border_24dp);
- }
+ bottomToolbarBookmark.setImageResource(
+ bookmarks.contains(getCurrentWebView().getUrl()) ? R.drawable.ic_bookmark_24dp
+ : R.drawable.ic_bookmark_border_24dp
+ );
}
}
@@ -1734,7 +1709,7 @@ public abstract class CoreMainActivity extends BaseActivity implements WebViewCa
updateBottomToolbarArrowsAlpha();
String url = getCurrentWebView().getUrl();
final ZimFileReader zimFileReader = zimReaderContainer.getZimFileReader();
- if (url != null && !url.equals(HOME_URL) && zimFileReader != null) {
+ if (hasValidFileAndUrl(url, zimFileReader)) {
final long timeStamp = System.currentTimeMillis();
SimpleDateFormat sdf =
new SimpleDateFormat("d MMM yyyy", LanguageUtils.getCurrentLocale(this));
@@ -1750,6 +1725,10 @@ public abstract class CoreMainActivity extends BaseActivity implements WebViewCa
updateBottomToolbarVisibility();
}
+ protected boolean hasValidFileAndUrl(String url, ZimFileReader zimFileReader) {
+ return url != null && zimFileReader != null;
+ }
+
@Override
public void webViewFailedLoading(String url) {
String error = String.format(getString(R.string.error_article_url_not_found), url);
diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/utils/files/FileUtils.kt b/core/src/main/java/org/kiwix/kiwixmobile/core/utils/files/FileUtils.kt
index 9cef4eed6..fc92d8c7a 100644
--- a/core/src/main/java/org/kiwix/kiwixmobile/core/utils/files/FileUtils.kt
+++ b/core/src/main/java/org/kiwix/kiwixmobile/core/utils/files/FileUtils.kt
@@ -26,7 +26,6 @@ import android.os.Build.VERSION_CODES
import android.os.Environment
import android.provider.DocumentsContract
import android.util.Log
-import org.kiwix.kiwixmobile.core.CoreApp
import org.kiwix.kiwixmobile.core.downloader.ChunkUtils
import org.kiwix.kiwixmobile.core.entity.LibraryNetworkEntity.Book
import org.kiwix.kiwixmobile.core.extensions.get
@@ -37,10 +36,6 @@ import java.util.ArrayList
object FileUtils {
- private val saveFilePath =
- "${Environment.getExternalStorageDirectory()}${File.separator}Android" +
- "${File.separator}obb${File.separator}${CoreApp.getInstance().packageName}"
-
@JvmStatic fun getFileCacheDir(context: Context): File? =
if (Environment.MEDIA_MOUNTED == Environment.getExternalStorageState()) {
context.externalCacheDir
@@ -95,11 +90,6 @@ object FileUtils {
return false
}
- /**
- * Returns the filename (where the file should be saved) from info about a download
- */
- @JvmStatic fun generateSaveFileName(fileName: String) = "$saveFilePath${File.separator}$fileName"
-
/**
* Helper function to ascertain the existence of a file and return true/false appropriately
*
diff --git a/custom/src/customexample/info.json b/custom/src/customexample/info.json
index e843aa4c0..6e34580fb 100644
--- a/custom/src/customexample/info.json
+++ b/custom/src/customexample/info.json
@@ -4,7 +4,7 @@
"version_name": "2017-07",
"version_code": "1",
"zim_file": "wikipedia_fr_test_2017-07.zim",
- "embed_zim": true,
+ "embed_zim": false,
"ic_launcher": "icon.png",
"enforced_lang": "en"
-}
\ No newline at end of file
+}
diff --git a/custom/src/customexample/main.1.org.kiwix.kiwixcustomexample.obb b/custom/src/customexample/main.1.org.kiwix.kiwixcustomexample.obb
new file mode 100644
index 000000000..789f27252
Binary files /dev/null and b/custom/src/customexample/main.1.org.kiwix.kiwixcustomexample.obb differ
diff --git a/custom/src/main/java/org/kiwix/kiwixmobile/custom/main/CustomMainActivity.kt b/custom/src/main/java/org/kiwix/kiwixmobile/custom/main/CustomMainActivity.kt
index 69c7de7f2..333435c2c 100644
--- a/custom/src/main/java/org/kiwix/kiwixmobile/custom/main/CustomMainActivity.kt
+++ b/custom/src/main/java/org/kiwix/kiwixmobile/custom/main/CustomMainActivity.kt
@@ -39,6 +39,15 @@ import java.io.File
import java.util.Locale
class CustomMainActivity : CoreMainActivity() {
+
+ override fun showHomePage() {
+ Log.e("CustomMain", "tried to show home page")
+ }
+
+ override fun createNewTab() {
+ newMainPageTab()
+ }
+
override fun injection() {
customActivityComponent.inject(this)
}
@@ -111,8 +120,7 @@ class CustomMainActivity : CoreMainActivity() {
)
}
} else {
- val fileName = getExpansionAPKFileName()
- filePath = FileUtils.generateSaveFileName(fileName)
+ filePath = generateExpansionFilePath()
}
Log.d(TAG_KIWIX, "BuildConfig.ZIM_FILE_SIZE = " + BuildConfig.ZIM_FILE_SIZE)
@@ -146,12 +154,10 @@ class CustomMainActivity : CoreMainActivity() {
}
companion object {
- /**
- * Returns the file name (without full path) for an Expansion APK file from the given context.
- *
- * @return String the file name of the expansion file
- */
- @JvmStatic fun getExpansionAPKFileName() =
- "patch.${BuildConfig.CONTENT_VERSION_CODE}.${CoreApp.getInstance().packageName}.obb"
+ private fun getExpansionAPKFileName() =
+ "main.${BuildConfig.CONTENT_VERSION_CODE}.${CoreApp.getInstance().packageName}.obb"
+
+ fun generateExpansionFilePath(fileName: String = getExpansionAPKFileName()) =
+ "${CoreApp.getInstance().obbDir}${File.separator}$fileName"
}
}