From e4ffff8c3f46f75ce7d79dd2acadad22dedd548a Mon Sep 17 00:00:00 2001 From: cip Date: Sun, 7 Apr 2013 00:22:09 +0200 Subject: [PATCH 1/5] android remove unused code --- .../kiwixmobile/KiwixMobileActivity.java | 27 ++----------------- .../kiwix/kiwixmobile/ZimContentProvider.java | 1 - 2 files changed, 2 insertions(+), 26 deletions(-) diff --git a/src/org/kiwix/kiwixmobile/KiwixMobileActivity.java b/src/org/kiwix/kiwixmobile/KiwixMobileActivity.java index 723971a4b..6f388dde3 100644 --- a/src/org/kiwix/kiwixmobile/KiwixMobileActivity.java +++ b/src/org/kiwix/kiwixmobile/KiwixMobileActivity.java @@ -1,10 +1,8 @@ package org.kiwix.kiwixmobile; -import java.io.ByteArrayOutputStream; + import java.io.File; -import java.io.IOException; -import java.io.InputStream; import java.util.ArrayList; import android.annotation.SuppressLint; import android.app.Activity; @@ -414,28 +412,7 @@ public class KiwixMobileActivity extends Activity { imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,0); } - private String readTextFromResource(int resourceID) - { - InputStream raw = getResources().openRawResource(resourceID); - ByteArrayOutputStream stream = new ByteArrayOutputStream(); - int i; - try - { - i = raw.read(); - while (i != -1) - { - stream.write(i); - i = raw.read(); - } - raw.close(); - } - catch (IOException e) - { - e.printStackTrace(); - } - return stream.toString(); - } - + private void showWelcome() { webView.loadUrl("file:///android_res/raw/welcome.html"); } diff --git a/src/org/kiwix/kiwixmobile/ZimContentProvider.java b/src/org/kiwix/kiwixmobile/ZimContentProvider.java index e68237351..4c3d8b80f 100644 --- a/src/org/kiwix/kiwixmobile/ZimContentProvider.java +++ b/src/org/kiwix/kiwixmobile/ZimContentProvider.java @@ -67,7 +67,6 @@ public class ZimContentProvider extends ContentProvider { } } - public native boolean getTitle(JNIKiwixString title); public static String getMainPage() { if (jniKiwix==null) From a51f37923745b7623b04ab7bca924c5cd7fda06a Mon Sep 17 00:00:00 2001 From: cip Date: Sun, 7 Apr 2013 00:23:32 +0200 Subject: [PATCH 2/5] android fix crash home clicked while no zim file loaded Note that this in addition should be fixed in c code (getrandompage does not crash if no zim file loaded, getmainpage crashes) Note that still not ideal: Either disable buttons, or at least display better error message. --- .../kiwix/kiwixmobile/KiwixMobileActivity.java | 16 +++++++--------- .../kiwix/kiwixmobile/ZimContentProvider.java | 15 +++++++-------- 2 files changed, 14 insertions(+), 17 deletions(-) diff --git a/src/org/kiwix/kiwixmobile/KiwixMobileActivity.java b/src/org/kiwix/kiwixmobile/KiwixMobileActivity.java index 6f388dde3..15f226def 100644 --- a/src/org/kiwix/kiwixmobile/KiwixMobileActivity.java +++ b/src/org/kiwix/kiwixmobile/KiwixMobileActivity.java @@ -348,7 +348,7 @@ public class KiwixMobileActivity extends Activity { webView.showFindDialog("", true); break; case R.id.menu_home: - loadMainPage(); + openMainPage(); break; case R.id.menu_forward: if(webView.canGoForward() == true){ @@ -425,7 +425,6 @@ public class KiwixMobileActivity extends Activity { webView.loadUrl("file:///android_res/raw/help.html"); } - @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { switch (requestCode) { @@ -471,7 +470,7 @@ public class KiwixMobileActivity extends Activity { // but to be on save side don't clear history in such cases. if (clearHistory) requestClearHistoryAfterLoad=true; - loadMainPage(); + openMainPage(); return true; } else { Toast.makeText(this, getResources().getString(R.string.error_fileinvalid), Toast.LENGTH_LONG).show(); @@ -483,11 +482,7 @@ public class KiwixMobileActivity extends Activity { return false; } - private void loadMainPage() { - String article = ZimContentProvider.getMainPage(); - webView.loadUrl(Uri.parse(ZimContentProvider.CONTENT_URI - + article).toString()); - } + @Override @@ -548,7 +543,10 @@ public class KiwixMobileActivity extends Activity { } - + private boolean openMainPage() { + String articleUrl = ZimContentProvider.getMainPage(); + return openArticle(articleUrl); + } public boolean isTablet(Context context) { return (context.getResources().getConfiguration().screenLayout diff --git a/src/org/kiwix/kiwixmobile/ZimContentProvider.java b/src/org/kiwix/kiwixmobile/ZimContentProvider.java index 4c3d8b80f..aae50a5ef 100644 --- a/src/org/kiwix/kiwixmobile/ZimContentProvider.java +++ b/src/org/kiwix/kiwixmobile/ZimContentProvider.java @@ -56,7 +56,7 @@ public class ZimContentProvider extends ContentProvider { return zimFileName; } public static String getZimFileTitle() { - if (jniKiwix==null) + if (jniKiwix==null || zimFileName==null) return null; else { JNIKiwixString title = new JNIKiwixString(); @@ -67,9 +67,8 @@ public class ZimContentProvider extends ContentProvider { } } - - public static String getMainPage() { - if (jniKiwix==null) + public static String getMainPage() { + if (jniKiwix==null || zimFileName==null) return null; else { return jniKiwix.getMainPage(); @@ -77,7 +76,7 @@ public class ZimContentProvider extends ContentProvider { } public static boolean searchSuggestions(String prefix, int count) { - if (jniKiwix==null) + if (jniKiwix==null || zimFileName==null) return false; else { return jniKiwix.searchSuggestions(prefix, count); @@ -85,7 +84,7 @@ public class ZimContentProvider extends ContentProvider { } public static String getNextSuggestion() { - if (jniKiwix==null) + if (jniKiwix==null || zimFileName==null) return null; else { JNIKiwixString title=new JNIKiwixString(); @@ -99,7 +98,7 @@ public class ZimContentProvider extends ContentProvider { } public static String getPageUrlFromTitle(String title) { - if (jniKiwix==null) + if (jniKiwix==null || zimFileName==null) return null; else { JNIKiwixString url=new JNIKiwixString(); @@ -112,7 +111,7 @@ public class ZimContentProvider extends ContentProvider { } public static String getRandomArticleUrl() { - if (jniKiwix==null) + if (jniKiwix==null || zimFileName==null) return null; else { JNIKiwixString url=new JNIKiwixString(); From 7b1422a4b94b49d37bbf819c3e9042580ec368d0 Mon Sep 17 00:00:00 2001 From: cip Date: Sun, 7 Apr 2013 00:33:07 +0200 Subject: [PATCH 3/5] android disable randomarticle/search/home buttons when no zim file loaded Still not perfect, as unfortunately if in actionbar disabled state not shown graphically (only in overflow greyed out) --- res/menu/main.xml | 3 +++ src/org/kiwix/kiwixmobile/KiwixMobileActivity.java | 5 +++++ 2 files changed, 8 insertions(+) diff --git a/res/menu/main.xml b/res/menu/main.xml index 6ca4aed2d..356179a9c 100644 --- a/res/menu/main.xml +++ b/res/menu/main.xml @@ -20,6 +20,7 @@ @@ -39,6 +40,7 @@ @@ -54,6 +56,7 @@ android:showAsAction="never" /> diff --git a/src/org/kiwix/kiwixmobile/KiwixMobileActivity.java b/src/org/kiwix/kiwixmobile/KiwixMobileActivity.java index 15f226def..52d48fc8f 100644 --- a/src/org/kiwix/kiwixmobile/KiwixMobileActivity.java +++ b/src/org/kiwix/kiwixmobile/KiwixMobileActivity.java @@ -52,6 +52,7 @@ public class KiwixMobileActivity extends Activity { private static final String PREFS_KIWIX_MOBILE = "kiwix-mobile"; private AutoCompleteTextView articleSearchtextView; private LinearLayout articleSearchBar; + private Menu menu; public class AutoCompleteAdapter extends ArrayAdapter implements Filterable { @@ -328,6 +329,7 @@ public class KiwixMobileActivity extends Activity { public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.main, menu); + this.menu = menu; return true; } @@ -470,6 +472,9 @@ public class KiwixMobileActivity extends Activity { // but to be on save side don't clear history in such cases. if (clearHistory) requestClearHistoryAfterLoad=true; + menu.findItem(R.id.menu_home).setEnabled(true); + menu.findItem(R.id.menu_randomarticle).setEnabled(true); + menu.findItem(R.id.menu_search).setEnabled(true); openMainPage(); return true; } else { From b872d9522b400bfdd49f3ba3c4c02cc3a8188e95 Mon Sep 17 00:00:00 2001 From: cip Date: Sun, 7 Apr 2013 00:39:01 +0200 Subject: [PATCH 4/5] android hide randomarticle/search/home buttons when no zim file loaded --- res/menu/main.xml | 11 ++++++----- src/org/kiwix/kiwixmobile/KiwixMobileActivity.java | 6 +++--- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/res/menu/main.xml b/res/menu/main.xml index 356179a9c..f11ec6d3b 100644 --- a/res/menu/main.xml +++ b/res/menu/main.xml @@ -20,7 +20,7 @@ @@ -39,8 +39,8 @@ @@ -52,11 +52,12 @@ diff --git a/src/org/kiwix/kiwixmobile/KiwixMobileActivity.java b/src/org/kiwix/kiwixmobile/KiwixMobileActivity.java index 52d48fc8f..92a45c2bb 100644 --- a/src/org/kiwix/kiwixmobile/KiwixMobileActivity.java +++ b/src/org/kiwix/kiwixmobile/KiwixMobileActivity.java @@ -472,9 +472,9 @@ public class KiwixMobileActivity extends Activity { // but to be on save side don't clear history in such cases. if (clearHistory) requestClearHistoryAfterLoad=true; - menu.findItem(R.id.menu_home).setEnabled(true); - menu.findItem(R.id.menu_randomarticle).setEnabled(true); - menu.findItem(R.id.menu_search).setEnabled(true); + menu.findItem(R.id.menu_home).setVisible(true); + menu.findItem(R.id.menu_randomarticle).setVisible(true); + menu.findItem(R.id.menu_search).setVisible(true); openMainPage(); return true; } else { From e4eb5481f594b0e4b059f0924aac6bf68e4396b0 Mon Sep 17 00:00:00 2001 From: cip Date: Sun, 7 Apr 2013 09:56:30 +0200 Subject: [PATCH 5/5] android fix regression introduced in 33f311f9d87f2564 crash on opening kiwix, in case zim file loaded on startup --- .../kiwixmobile/KiwixMobileActivity.java | 22 ++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/src/org/kiwix/kiwixmobile/KiwixMobileActivity.java b/src/org/kiwix/kiwixmobile/KiwixMobileActivity.java index 92a45c2bb..c744e5232 100644 --- a/src/org/kiwix/kiwixmobile/KiwixMobileActivity.java +++ b/src/org/kiwix/kiwixmobile/KiwixMobileActivity.java @@ -46,6 +46,7 @@ public class KiwixMobileActivity extends Activity { private WebView webView; private ArrayAdapter adapter; protected boolean requestClearHistoryAfterLoad; + protected boolean requestShowAllMenuItems; protected int requestWebReloadOnFinished; private static final int ZIMFILESELECT_REQUEST_CODE = 1234; private static final int PREFERENCES_REQUEST_CODE = 1235; @@ -120,6 +121,7 @@ public class KiwixMobileActivity extends Activity { super.onCreate(savedInstanceState); requestClearHistoryAfterLoad=false; requestWebReloadOnFinished = 0; + requestShowAllMenuItems = false; this.requestWindowFeature(Window.FEATURE_PROGRESS); @@ -329,7 +331,11 @@ public class KiwixMobileActivity extends Activity { public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.main, menu); + this.menu = menu; + if (requestShowAllMenuItems) { + showAllMenuItems(); + } return true; } @@ -472,9 +478,13 @@ public class KiwixMobileActivity extends Activity { // but to be on save side don't clear history in such cases. if (clearHistory) requestClearHistoryAfterLoad=true; - menu.findItem(R.id.menu_home).setVisible(true); - menu.findItem(R.id.menu_randomarticle).setVisible(true); - menu.findItem(R.id.menu_search).setVisible(true); + if (menu!=null) { + showAllMenuItems(); + } else { + // Menu may not be initialized yet. In this case + // signal to menu create to show + requestShowAllMenuItems = true; + } openMainPage(); return true; } else { @@ -487,6 +497,12 @@ public class KiwixMobileActivity extends Activity { return false; } + private void showAllMenuItems() { + menu.findItem(R.id.menu_home).setVisible(true); + menu.findItem(R.id.menu_randomarticle).setVisible(true); + menu.findItem(R.id.menu_search).setVisible(true); + } +