mirror of
https://github.com/kiwix/kiwix-android.git
synced 2025-09-11 08:27:50 -04:00
Added InputManager and fixed a NPE for the Tabs.
This commit is contained in:
parent
390fd6708e
commit
8c4b169d3e
@ -2,6 +2,8 @@ package org.kiwix.kiwixmobile;
|
|||||||
|
|
||||||
import android.app.ActionBar;
|
import android.app.ActionBar;
|
||||||
import android.app.FragmentTransaction;
|
import android.app.FragmentTransaction;
|
||||||
|
import android.content.ClipData;
|
||||||
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
@ -23,6 +25,7 @@ import android.view.ViewGroup;
|
|||||||
import android.view.ViewParent;
|
import android.view.ViewParent;
|
||||||
import android.view.Window;
|
import android.view.Window;
|
||||||
import android.view.WindowManager;
|
import android.view.WindowManager;
|
||||||
|
import android.view.inputmethod.InputMethodManager;
|
||||||
import android.widget.HorizontalScrollView;
|
import android.widget.HorizontalScrollView;
|
||||||
import android.widget.LinearLayout;
|
import android.widget.LinearLayout;
|
||||||
import android.widget.Spinner;
|
import android.widget.Spinner;
|
||||||
@ -126,10 +129,13 @@ public class KiwixMobileActivity extends FragmentActivity implements ActionBar.T
|
|||||||
|
|
||||||
mCurrentFragment = getCurrentVisibleFragment();
|
mCurrentFragment = getCurrentVisibleFragment();
|
||||||
|
|
||||||
|
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
|
||||||
|
|
||||||
switch (item.getItemId()) {
|
switch (item.getItemId()) {
|
||||||
|
|
||||||
case R.id.menu_home:
|
case R.id.menu_home:
|
||||||
case android.R.id.home:
|
case android.R.id.home:
|
||||||
|
imm.hideSoftInputFromWindow(mCurrentFragment.articleSearchtextView.getWindowToken(), 0);
|
||||||
mCurrentFragment.openMainPage();
|
mCurrentFragment.openMainPage();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -146,12 +152,14 @@ public class KiwixMobileActivity extends FragmentActivity implements ActionBar.T
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case R.id.menu_forward:
|
case R.id.menu_forward:
|
||||||
|
imm.hideSoftInputFromWindow(mCurrentFragment.articleSearchtextView.getWindowToken(), 0);
|
||||||
if (mCurrentFragment.webView.canGoForward()) {
|
if (mCurrentFragment.webView.canGoForward()) {
|
||||||
mCurrentFragment.webView.goForward();
|
mCurrentFragment.webView.goForward();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case R.id.menu_back:
|
case R.id.menu_back:
|
||||||
|
imm.hideSoftInputFromWindow(mCurrentFragment.articleSearchtextView.getWindowToken(), 0);
|
||||||
if (mCurrentFragment.webView.canGoBack()) {
|
if (mCurrentFragment.webView.canGoBack()) {
|
||||||
mCurrentFragment.menu.findItem(R.id.menu_forward).setVisible(true);
|
mCurrentFragment.menu.findItem(R.id.menu_forward).setVisible(true);
|
||||||
mCurrentFragment.webView.goBack();
|
mCurrentFragment.webView.goBack();
|
||||||
@ -466,7 +474,9 @@ public class KiwixMobileActivity extends FragmentActivity implements ActionBar.T
|
|||||||
|
|
||||||
getCurrentVisibleFragment().handleTabDeleteCross();
|
getCurrentVisibleFragment().handleTabDeleteCross();
|
||||||
|
|
||||||
v.startDrag(null, shadowBuilder, v, 0);
|
ClipData data = ClipData.newPlainText("", "");
|
||||||
|
|
||||||
|
v.startDrag(data, shadowBuilder, v, 0);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -13,8 +13,8 @@ import android.graphics.Color;
|
|||||||
import android.graphics.PorterDuff;
|
import android.graphics.PorterDuff;
|
||||||
import android.graphics.drawable.Drawable;
|
import android.graphics.drawable.Drawable;
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.os.Environment;
|
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
|
import android.os.Environment;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
import android.os.Looper;
|
import android.os.Looper;
|
||||||
import android.os.Message;
|
import android.os.Message;
|
||||||
@ -25,27 +25,27 @@ import android.text.InputType;
|
|||||||
import android.text.TextWatcher;
|
import android.text.TextWatcher;
|
||||||
import android.util.DisplayMetrics;
|
import android.util.DisplayMetrics;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
import android.view.ContextMenu;
|
||||||
import android.view.DragEvent;
|
import android.view.DragEvent;
|
||||||
import android.view.KeyEvent;
|
import android.view.KeyEvent;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.Menu;
|
import android.view.Menu;
|
||||||
import android.view.MenuInflater;
|
import android.view.MenuInflater;
|
||||||
|
import android.view.MenuItem;
|
||||||
|
import android.view.MenuItem.OnMenuItemClickListener;
|
||||||
import android.view.MotionEvent;
|
import android.view.MotionEvent;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.MenuItem;
|
|
||||||
import android.view.View.MeasureSpec;
|
import android.view.View.MeasureSpec;
|
||||||
import android.view.View.OnTouchListener;
|
|
||||||
import android.view.ContextMenu;
|
|
||||||
import android.view.View.OnCreateContextMenuListener;
|
import android.view.View.OnCreateContextMenuListener;
|
||||||
|
import android.view.View.OnTouchListener;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
import android.view.MenuItem.OnMenuItemClickListener;
|
|
||||||
import android.view.animation.AnimationUtils;
|
import android.view.animation.AnimationUtils;
|
||||||
import android.view.inputmethod.InputMethodManager;
|
import android.view.inputmethod.InputMethodManager;
|
||||||
import android.webkit.WebChromeClient;
|
import android.webkit.WebChromeClient;
|
||||||
import android.webkit.WebSettings;
|
import android.webkit.WebSettings;
|
||||||
import android.webkit.WebView;
|
import android.webkit.WebView;
|
||||||
import android.webkit.WebViewClient;
|
|
||||||
import android.webkit.WebView.HitTestResult;
|
import android.webkit.WebView.HitTestResult;
|
||||||
|
import android.webkit.WebViewClient;
|
||||||
import android.widget.AdapterView;
|
import android.widget.AdapterView;
|
||||||
import android.widget.AdapterView.OnItemClickListener;
|
import android.widget.AdapterView.OnItemClickListener;
|
||||||
import android.widget.ArrayAdapter;
|
import android.widget.ArrayAdapter;
|
||||||
@ -60,13 +60,11 @@ import android.widget.TextView.OnEditorActionListener;
|
|||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
import java.io.FileOutputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.io.FileInputStream;
|
|
||||||
import java.io.OutputStream;
|
import java.io.OutputStream;
|
||||||
import java.io.InputStream;
|
import java.util.ArrayList;
|
||||||
import java.io.FileOutputStream;
|
|
||||||
|
|
||||||
public class KiwixMobileFragment extends Fragment {
|
public class KiwixMobileFragment extends Fragment {
|
||||||
|
|
||||||
@ -106,6 +104,8 @@ public class KiwixMobileFragment extends Fragment {
|
|||||||
|
|
||||||
public ImageButton exitFullscreenButton;
|
public ImageButton exitFullscreenButton;
|
||||||
|
|
||||||
|
public AutoCompleteTextView articleSearchtextView;
|
||||||
|
|
||||||
protected boolean requestClearHistoryAfterLoad;
|
protected boolean requestClearHistoryAfterLoad;
|
||||||
|
|
||||||
protected boolean requestInitAllMenuItems;
|
protected boolean requestInitAllMenuItems;
|
||||||
@ -118,8 +118,6 @@ public class KiwixMobileFragment extends Fragment {
|
|||||||
|
|
||||||
private boolean isButtonEnabled = true;
|
private boolean isButtonEnabled = true;
|
||||||
|
|
||||||
private AutoCompleteTextView articleSearchtextView;
|
|
||||||
|
|
||||||
private ArrayAdapter<String> adapter;
|
private ArrayAdapter<String> adapter;
|
||||||
|
|
||||||
private Button mBackToTopButton;
|
private Button mBackToTopButton;
|
||||||
@ -310,6 +308,9 @@ public class KiwixMobileFragment extends Fragment {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
|
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
|
||||||
|
InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(
|
||||||
|
Context.INPUT_METHOD_SERVICE);
|
||||||
|
imm.hideSoftInputFromWindow(articleSearchtextView.getWindowToken(), 0);
|
||||||
articleSearchtextView.setText(parent.getItemAtPosition(position).toString());
|
articleSearchtextView.setText(parent.getItemAtPosition(position).toString());
|
||||||
openArticleFromSearch();
|
openArticleFromSearch();
|
||||||
}
|
}
|
||||||
@ -325,7 +326,9 @@ public class KiwixMobileFragment extends Fragment {
|
|||||||
|
|
||||||
articleSearchtextView.setInputType(InputType.TYPE_CLASS_TEXT);
|
articleSearchtextView.setInputType(InputType.TYPE_CLASS_TEXT);
|
||||||
|
|
||||||
final Handler saveHandler = new Handler() {
|
final Handler saveHandler = new
|
||||||
|
Handler() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void handleMessage(Message msg) {
|
public void handleMessage(Message msg) {
|
||||||
String url = (String) msg.getData().get("url");
|
String url = (String) msg.getData().get("url");
|
||||||
@ -335,11 +338,14 @@ public class KiwixMobileFragment extends Fragment {
|
|||||||
url = url.substring(url.lastIndexOf('/') + 1, url.length());
|
url = url.substring(url.lastIndexOf('/') + 1, url.length());
|
||||||
url = url.substring(url.indexOf("%3A") + 3, url.length());
|
url = url.substring(url.indexOf("%3A") + 3, url.length());
|
||||||
int dotIndex = url.lastIndexOf('.');
|
int dotIndex = url.lastIndexOf('.');
|
||||||
File storageDir = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), url);
|
File storageDir = new File(Environment.getExternalStoragePublicDirectory(
|
||||||
|
Environment.DIRECTORY_PICTURES), url);
|
||||||
String newurl = url;
|
String newurl = url;
|
||||||
for (int i = 2; storageDir.exists(); i++) {
|
for (int i = 2; storageDir.exists(); i++) {
|
||||||
newurl = url.substring(0, dotIndex) + "_" + i + url.substring(dotIndex, url.length());
|
newurl = url.substring(0, dotIndex) + "_" + i + url
|
||||||
storageDir = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), newurl);
|
.substring(dotIndex, url.length());
|
||||||
|
storageDir = new File(Environment.getExternalStoragePublicDirectory(
|
||||||
|
Environment.DIRECTORY_PICTURES), newurl);
|
||||||
}
|
}
|
||||||
|
|
||||||
Uri source = Uri.parse(src);
|
Uri source = Uri.parse(src);
|
||||||
@ -347,7 +353,8 @@ public class KiwixMobileFragment extends Fragment {
|
|||||||
|
|
||||||
String toastText;
|
String toastText;
|
||||||
try {
|
try {
|
||||||
InputStream istream = getActivity().getContentResolver().openInputStream(source);
|
InputStream istream = getActivity().getContentResolver()
|
||||||
|
.openInputStream(source);
|
||||||
OutputStream ostream = new FileOutputStream(storageDir);
|
OutputStream ostream = new FileOutputStream(storageDir);
|
||||||
|
|
||||||
byte[] buffer = new byte[1024];
|
byte[] buffer = new byte[1024];
|
||||||
@ -362,16 +369,20 @@ public class KiwixMobileFragment extends Fragment {
|
|||||||
Log.d("kiwix", "Couldn't save image", e);
|
Log.d("kiwix", "Couldn't save image", e);
|
||||||
toastText = getResources().getString(R.string.save_image_error);
|
toastText = getResources().getString(R.string.save_image_error);
|
||||||
} finally {
|
} finally {
|
||||||
toastText = String.format(getResources().getString(R.string.save_image_saved), newurl);
|
toastText = String
|
||||||
|
.format(getResources().getString(R.string.save_image_saved), newurl);
|
||||||
}
|
}
|
||||||
|
|
||||||
Toast toast = Toast.makeText(getActivity().getApplicationContext(), toastText, Toast.LENGTH_LONG);
|
Toast toast = Toast.makeText(getActivity().getApplicationContext(), toastText,
|
||||||
|
Toast.LENGTH_LONG);
|
||||||
toast.show();
|
toast.show();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
final Handler viewHandler = new Handler() {
|
final Handler viewHandler = new
|
||||||
|
|
||||||
|
Handler() {
|
||||||
@Override
|
@Override
|
||||||
public void handleMessage(Message msg) {
|
public void handleMessage(Message msg) {
|
||||||
String url = (String) msg.getData().get("url");
|
String url = (String) msg.getData().get("url");
|
||||||
@ -389,7 +400,9 @@ public class KiwixMobileFragment extends Fragment {
|
|||||||
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
|
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
|
||||||
final HitTestResult result = ((WebView) v).getHitTestResult();
|
final HitTestResult result = ((WebView) v).getHitTestResult();
|
||||||
if (result.getType() == HitTestResult.SRC_IMAGE_ANCHOR_TYPE) {
|
if (result.getType() == HitTestResult.SRC_IMAGE_ANCHOR_TYPE) {
|
||||||
menu.add(0, 1, 0, getResources().getString(R.string.save_image)).setOnMenuItemClickListener(new OnMenuItemClickListener() {
|
menu.add(0, 1, 0, getResources().getString(R.string.save_image))
|
||||||
|
.setOnMenuItemClickListener(
|
||||||
|
new OnMenuItemClickListener() {
|
||||||
public boolean onMenuItemClick(MenuItem item) {
|
public boolean onMenuItemClick(MenuItem item) {
|
||||||
Message msg = saveHandler.obtainMessage();
|
Message msg = saveHandler.obtainMessage();
|
||||||
webView.requestFocusNodeHref(msg);
|
webView.requestFocusNodeHref(msg);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user