mirror of
https://github.com/kiwix/kiwix-android.git
synced 2025-09-08 06:42:21 -04:00
Settings, i.p. allow changing Zoom (Work in progress)
note that recommendation is actually to use fragment instead of activity on Honeycomb or newer (so reconsider changing it).
This commit is contained in:
parent
6c84338b86
commit
721a2c9d6c
@ -29,6 +29,8 @@ android:anyDensity="true"
|
|||||||
<data android:pathPattern=".*\\..*\\..*\\..*\\.zim.*"/>
|
<data android:pathPattern=".*\\..*\\..*\\..*\\.zim.*"/>
|
||||||
<data android:mimeType="*/*" />
|
<data android:mimeType="*/*" />
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
|
</activity>
|
||||||
|
<activity android:name=".KiwixSettings">
|
||||||
</activity>
|
</activity>
|
||||||
<provider
|
<provider
|
||||||
android:name=".ZimContentProvider"
|
android:name=".ZimContentProvider"
|
||||||
|
@ -58,6 +58,13 @@
|
|||||||
android:orderInCategory="0"
|
android:orderInCategory="0"
|
||||||
android:showAsAction="never" />
|
android:showAsAction="never" />
|
||||||
|
|
||||||
|
<item android:id="@+id/menu_settings"
|
||||||
|
android:title="@string/menu_settings"
|
||||||
|
android:icon="@drawable/navigation_forward"
|
||||||
|
android:orderInCategory="0"
|
||||||
|
android:showAsAction="never"/>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</menu>
|
</menu>
|
||||||
|
@ -6,6 +6,7 @@
|
|||||||
<string name="menu_home">Home</string>
|
<string name="menu_home">Home</string>
|
||||||
<string name="menu_forward">Forward</string>
|
<string name="menu_forward">Forward</string>
|
||||||
<string name="menu_back">Back</string>
|
<string name="menu_back">Back</string>
|
||||||
|
<string name="menu_settings">Settings</string>
|
||||||
<string name="menu_search">Search article</string>
|
<string name="menu_search">Search article</string>
|
||||||
<string name="menu_searchintext">Find in page</string>
|
<string name="menu_searchintext">Find in page</string>
|
||||||
<string name="search_label">Search</string>
|
<string name="search_label">Search</string>
|
||||||
@ -16,4 +17,25 @@
|
|||||||
<string name="error_fileinvalid">Error: The selected file is not a valid ZIM file.</string>
|
<string name="error_fileinvalid">Error: The selected file is not a valid ZIM file.</string>
|
||||||
<string name="error_articlenotfound">Error: Loading article \"%1$s\" failed.</string>
|
<string name="error_articlenotfound">Error: Loading article \"%1$s\" failed.</string>
|
||||||
<string name="error_articleurlnotfound">Error: Loading article (Url: %1$s) failed.</string>
|
<string name="error_articleurlnotfound">Error: Loading article (Url: %1$s) failed.</string>
|
||||||
|
<string name="pref_display_title">Display</string>
|
||||||
|
<string name="pref_zoom_title">Zoom</string>
|
||||||
|
<string name="pref_zoom_summary">%s</string>
|
||||||
|
<string name="pref_zoom_dialogtitle">Zoom</string>
|
||||||
|
<string-array
|
||||||
|
name="pref_zoom_entries">
|
||||||
|
<item>Automatic</item>
|
||||||
|
<item>Small</item>
|
||||||
|
<item>Medium</item>
|
||||||
|
<item>Large</item>
|
||||||
|
</string-array>
|
||||||
|
|
||||||
|
<string-array
|
||||||
|
name="pref_zoom_entryvalues"
|
||||||
|
translatable="false">
|
||||||
|
<item>automatic</item>
|
||||||
|
<item>small</item>
|
||||||
|
<item>medium</item>
|
||||||
|
<item>large</item>
|
||||||
|
</string-array>
|
||||||
|
|
||||||
</resources>
|
</resources>
|
||||||
|
24
res/xml/preferences.xml
Normal file
24
res/xml/preferences.xml
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
<PreferenceCategory
|
||||||
|
android:key="pref_display"
|
||||||
|
android:title="@string/pref_display_title">
|
||||||
|
|
||||||
|
|
||||||
|
<ListPreference
|
||||||
|
android:key="pref_zoom"
|
||||||
|
android:title="@string/pref_zoom_title"
|
||||||
|
android:summary="@string/pref_zoom_summary"
|
||||||
|
android:dialogTitle="@string/pref_zoom_dialogtitle"
|
||||||
|
android:entries="@array/pref_zoom_entries"
|
||||||
|
android:entryValues="@array/pref_zoom_entryvalues"
|
||||||
|
android:defaultValue="automatic" />
|
||||||
|
|
||||||
|
</PreferenceCategory>
|
||||||
|
<!-- PreferenceCategory
|
||||||
|
android:title="INFO"
|
||||||
|
android:key="pref_key_info">
|
||||||
|
|
||||||
|
|
||||||
|
</PreferenceCategory>-->
|
||||||
|
|
||||||
|
</PreferenceScreen>
|
@ -20,8 +20,11 @@ import android.content.pm.LabeledIntent;
|
|||||||
import android.content.res.Configuration;
|
import android.content.res.Configuration;
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
|
import android.preference.PreferenceFragment;
|
||||||
|
import android.preference.PreferenceManager;
|
||||||
import android.text.Editable;
|
import android.text.Editable;
|
||||||
import android.text.TextWatcher;
|
import android.text.TextWatcher;
|
||||||
|
import android.util.DisplayMetrics;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.view.KeyEvent;
|
import android.view.KeyEvent;
|
||||||
import android.view.Menu;
|
import android.view.Menu;
|
||||||
@ -55,6 +58,7 @@ public class KiwixMobileActivity extends Activity {
|
|||||||
private ArrayAdapter<String> adapter;
|
private ArrayAdapter<String> adapter;
|
||||||
protected boolean requestClearHistoryAfterLoad;
|
protected boolean requestClearHistoryAfterLoad;
|
||||||
private static final int ZIMFILESELECT_REQUEST_CODE = 1234;
|
private static final int ZIMFILESELECT_REQUEST_CODE = 1234;
|
||||||
|
private static final int PREFERENCES_REQUEST_CODE = 1235;
|
||||||
private static final String PREFS_KIWIX_MOBILE = "kiwix-mobile";
|
private static final String PREFS_KIWIX_MOBILE = "kiwix-mobile";
|
||||||
private AutoCompleteTextView articleSearchtextView;
|
private AutoCompleteTextView articleSearchtextView;
|
||||||
private LinearLayout articleSearchBar;
|
private LinearLayout articleSearchBar;
|
||||||
@ -225,21 +229,13 @@ public class KiwixMobileActivity extends Activity {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
loadPref();
|
||||||
//Pinch to zoom
|
//Pinch to zoom
|
||||||
webView.getSettings().setBuiltInZoomControls(true);
|
webView.getSettings().setBuiltInZoomControls(true);
|
||||||
//webView.getSettings().setLoadsImagesAutomatically(false);
|
//webView.getSettings().setLoadsImagesAutomatically(false);
|
||||||
//Does not make much sense to cache data from zim files.(Not clear whether
|
//Does not make much sense to cache data from zim files.(Not clear whether
|
||||||
// this actually has any effect)
|
// this actually has any effect)
|
||||||
webView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
|
webView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
|
||||||
//Workaround to avoid that default zoom is very small on tablets
|
|
||||||
// TODO: find better solution, e.g. user configurable zoom setting
|
|
||||||
if (isTablet(getBaseContext())) {
|
|
||||||
Log.d("kiwix", " Device is tablet -> setDefaultZoom(WebSettings.ZoomDensity.CLOSE)");
|
|
||||||
webView.getSettings().setDefaultZoom(WebSettings.ZoomDensity.CLOSE);
|
|
||||||
} else {
|
|
||||||
Log.d("kiwix", " Device is phone-> setDefaultZoom(WebSettings.ZoomDensity.MEDIUM)");
|
|
||||||
webView.getSettings().setDefaultZoom(WebSettings.ZoomDensity.MEDIUM);
|
|
||||||
}
|
|
||||||
if (getIntent().getData()!=null) {
|
if (getIntent().getData()!=null) {
|
||||||
String filePath = getIntent().getData().getEncodedPath();
|
String filePath = getIntent().getData().getEncodedPath();
|
||||||
Log.d("kiwix", " Kiwix started from a filemanager. Intent filePath: "+filePath+" -> open this zimfile and load main page");
|
Log.d("kiwix", " Kiwix started from a filemanager. Intent filePath: "+filePath+" -> open this zimfile and load main page");
|
||||||
@ -267,9 +263,26 @@ public class KiwixMobileActivity extends Activity {
|
|||||||
showWelcome();
|
showWelcome();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private void loadPref(){
|
||||||
|
SharedPreferences mySharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
|
||||||
|
String pref_zoom = mySharedPreferences.getString("pref_zoom", "automatic");
|
||||||
|
if (pref_zoom.equals("automatic")) {
|
||||||
|
setDefaultZoom();
|
||||||
|
} else if (pref_zoom.equals("medium")) {
|
||||||
|
webView.getSettings().setDefaultZoom(WebSettings.ZoomDensity.MEDIUM);
|
||||||
|
} else if (pref_zoom.equals("small")) {
|
||||||
|
webView.getSettings().setDefaultZoom(WebSettings.ZoomDensity.FAR);
|
||||||
|
} else if (pref_zoom.equals("large")) {
|
||||||
|
webView.getSettings().setDefaultZoom(WebSettings.ZoomDensity.CLOSE);
|
||||||
|
} else {
|
||||||
|
Log.w("kiwix", "pref_displayZoom value ("+pref_zoom+" unknown. Assuming automatic");
|
||||||
|
webView.getSettings().setDefaultZoom(WebSettings.ZoomDensity.MEDIUM);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -340,8 +353,16 @@ public class KiwixMobileActivity extends Activity {
|
|||||||
showHelp();
|
showHelp();
|
||||||
break;
|
break;
|
||||||
case R.id.menu_openfile:
|
case R.id.menu_openfile:
|
||||||
|
|
||||||
selectZimFile();
|
selectZimFile();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case R.id.menu_settings:
|
||||||
|
// Display the fragment as the main content.
|
||||||
|
Intent i = new Intent(this, KiwixSettings.class);
|
||||||
|
startActivityForResult(i, PREFERENCES_REQUEST_CODE);
|
||||||
|
break;
|
||||||
|
|
||||||
}
|
}
|
||||||
return super.onOptionsItemSelected(item);
|
return super.onOptionsItemSelected(item);
|
||||||
}
|
}
|
||||||
@ -430,6 +451,11 @@ public class KiwixMobileActivity extends Activity {
|
|||||||
// Create a File from this Uri
|
// Create a File from this Uri
|
||||||
openZimFile(file, true);
|
openZimFile(file, true);
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
|
case PREFERENCES_REQUEST_CODE:
|
||||||
|
|
||||||
|
loadPref();
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -532,4 +558,35 @@ public class KiwixMobileActivity extends Activity {
|
|||||||
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
|
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
|
||||||
imm.hideSoftInputFromWindow(articleSearchtextView.getWindowToken(),0);
|
imm.hideSoftInputFromWindow(articleSearchtextView.getWindowToken(),0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void setDefaultZoom() {
|
||||||
|
DisplayMetrics metrics = new DisplayMetrics();
|
||||||
|
getWindowManager().getDefaultDisplay().getMetrics(metrics);
|
||||||
|
|
||||||
|
//Cleaner than approach used in 1.0 to set CLOSE for tables, MEDIUM for phones.
|
||||||
|
// However, unfortunately at least on Samsung Galaxy Tab 2 density is medium.
|
||||||
|
// Anyway, user can now override so it should be ok.
|
||||||
|
switch (metrics.densityDpi) {
|
||||||
|
case DisplayMetrics.DENSITY_HIGH:
|
||||||
|
Log.d("kiwix", "setDefaultZoom for Display DENSITY_HIGH-> ZoomDensity.FAR ");
|
||||||
|
webView.getSettings().setDefaultZoom(WebSettings.ZoomDensity.FAR);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case DisplayMetrics.DENSITY_MEDIUM:
|
||||||
|
Log.d("kiwix", "setDefaultZoom for Display DENSITY_MEDIUM-> ZoomDensity.MEDIUM ");
|
||||||
|
webView.getSettings().setDefaultZoom(WebSettings.ZoomDensity.MEDIUM);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case DisplayMetrics.DENSITY_LOW:
|
||||||
|
Log.d("kiwix", "setDefaultZoom for Display DENSITY_LOW-> ZoomDensity.CLOSE ");
|
||||||
|
webView.getSettings().setDefaultZoom(WebSettings.ZoomDensity.CLOSE);
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
Log.d("kiwix", "setDefaultZoom for Display OTHER -> ZoomDensity.MEDIUM ");
|
||||||
|
webView.getSettings().setDefaultZoom(WebSettings.ZoomDensity.MEDIUM);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
15
src/org/kiwix/kiwixmobile/KiwixSettings.java
Normal file
15
src/org/kiwix/kiwixmobile/KiwixSettings.java
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
package org.kiwix.kiwixmobile;
|
||||||
|
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.preference.PreferenceActivity;
|
||||||
|
|
||||||
|
|
||||||
|
public class KiwixSettings extends PreferenceActivity {
|
||||||
|
@Override
|
||||||
|
public void onCreate(Bundle savedInstanceState) {
|
||||||
|
super.onCreate(savedInstanceState);
|
||||||
|
// Load the preferences from an XML resource
|
||||||
|
addPreferencesFromResource(R.xml.preferences);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user