mirror of
https://github.com/foobnix/LibreraReader.git
synced 2025-10-06 00:02:43 +02:00
refactoring
This commit is contained in:
@@ -49,8 +49,7 @@
|
|||||||
android:theme="@style/StyledIndicatorsWhite"
|
android:theme="@style/StyledIndicatorsWhite"
|
||||||
android:usesCleartextTraffic="true"
|
android:usesCleartextTraffic="true"
|
||||||
android:vmSafeMode="${appSafeMode}"
|
android:vmSafeMode="${appSafeMode}"
|
||||||
tools:overrideLibrary="androidx.car.app"
|
tools:overrideLibrary="androidx.car.app">
|
||||||
tools:replace="label, icon, roundIcon">
|
|
||||||
|
|
||||||
<meta-data
|
<meta-data
|
||||||
android:name="android.webkit.WebView.MetricsOptOut"
|
android:name="android.webkit.WebView.MetricsOptOut"
|
||||||
|
@@ -15,6 +15,7 @@ import android.os.AsyncTask;
|
|||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
import android.os.Environment;
|
import android.os.Environment;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
|
import android.os.Looper;
|
||||||
import android.provider.DocumentsContract;
|
import android.provider.DocumentsContract;
|
||||||
import android.text.format.DateFormat;
|
import android.text.format.DateFormat;
|
||||||
import android.text.format.Formatter;
|
import android.text.format.Formatter;
|
||||||
@@ -1147,10 +1148,10 @@ public class ExtUtils {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public static void sharePage(final DocumentController dc, int page) {
|
public static void sharePage(final DocumentController dc, int page) {
|
||||||
sharePage(dc.getActivity(), dc.getCurrentBook(), page, dc.getPageUrl(page).toString());
|
sharePage(dc.getActivity(), dc.getCurrentBook(), page, dc.getPageUrl(page).toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void sharePage(final Activity a, final File file, int page, String pageUrl) {
|
private static void sharePage(final Activity a, final File file, int page, String pageUrl) {
|
||||||
|
|
||||||
|
|
||||||
@@ -1421,7 +1422,7 @@ public class ExtUtils {
|
|||||||
View view = LayoutInflater.from(a).inflate(R.layout.dialog_loading_book, null, false);
|
View view = LayoutInflater.from(a).inflate(R.layout.dialog_loading_book, null, false);
|
||||||
final TextView text = (TextView) view.findViewById(R.id.text1);
|
final TextView text = (TextView) view.findViewById(R.id.text1);
|
||||||
|
|
||||||
handler = new Handler() {
|
handler = new Handler(Looper.getMainLooper()) {
|
||||||
@Override
|
@Override
|
||||||
public void handleMessage(android.os.Message msg) {
|
public void handleMessage(android.os.Message msg) {
|
||||||
text.setText(a.getString(R.string.please_wait) + " " + msg.what + "%");
|
text.setText(a.getString(R.string.please_wait) + " " + msg.what + "%");
|
||||||
|
@@ -2,23 +2,20 @@ package com.foobnix.pdf.info;
|
|||||||
|
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
|
import android.os.Looper;
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
|
|
||||||
|
import com.foobnix.LibreraApp;
|
||||||
import com.foobnix.android.utils.Apps;
|
import com.foobnix.android.utils.Apps;
|
||||||
import com.foobnix.android.utils.LOG;
|
import com.foobnix.android.utils.LOG;
|
||||||
import com.foobnix.ui2.MainTabs2;
|
import com.foobnix.ui2.MainTabs2;
|
||||||
import com.google.android.gms.ads.AdView;
|
import com.google.android.gms.ads.AdView;
|
||||||
|
|
||||||
import com.google.android.gms.ads.LoadAdError;
|
import com.google.android.gms.ads.LoadAdError;
|
||||||
import com.google.android.gms.ads.MobileAds;
|
import com.google.android.gms.ads.MobileAds;
|
||||||
import com.google.android.gms.ads.interstitial.InterstitialAd;
|
import com.google.android.gms.ads.interstitial.InterstitialAd;
|
||||||
import com.google.android.gms.ads.interstitial.InterstitialAdLoadCallback;
|
import com.google.android.gms.ads.interstitial.InterstitialAdLoadCallback;
|
||||||
|
|
||||||
import com.foobnix.LibreraApp;
|
|
||||||
import com.google.android.ump.ConsentInformation;
|
|
||||||
import com.google.android.ump.UserMessagingPlatform;
|
|
||||||
|
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
@@ -32,7 +29,7 @@ public class MyADSProvider {
|
|||||||
private Activity a;
|
private Activity a;
|
||||||
|
|
||||||
public void createHandler() {
|
public void createHandler() {
|
||||||
handler = new Handler();
|
handler = new Handler(Looper.getMainLooper());
|
||||||
try {
|
try {
|
||||||
Class.forName("android.os.AsyncTask");
|
Class.forName("android.os.AsyncTask");
|
||||||
} catch (Throwable ignore) {
|
} catch (Throwable ignore) {
|
||||||
@@ -51,7 +48,7 @@ public class MyADSProvider {
|
|||||||
// LOG.d("ADS, can not Request Ads");
|
// LOG.d("ADS, can not Request Ads");
|
||||||
// return;
|
// return;
|
||||||
// }
|
// }
|
||||||
LOG.d("ADS, can Request Ads");
|
LOG.d("ADS, can Request Ads");
|
||||||
|
|
||||||
|
|
||||||
if (withInterstitial) {
|
if (withInterstitial) {
|
||||||
|
@@ -8,6 +8,7 @@ import android.content.DialogInterface.OnDismissListener;
|
|||||||
import android.graphics.Bitmap;
|
import android.graphics.Bitmap;
|
||||||
import android.graphics.Color;
|
import android.graphics.Color;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
|
import android.os.Looper;
|
||||||
import android.text.InputType;
|
import android.text.InputType;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
import android.view.Gravity;
|
import android.view.Gravity;
|
||||||
@@ -48,7 +49,6 @@ import com.foobnix.android.utils.Views;
|
|||||||
import com.foobnix.android.utils.WebViewUtils;
|
import com.foobnix.android.utils.WebViewUtils;
|
||||||
import com.foobnix.dao2.FileMeta;
|
import com.foobnix.dao2.FileMeta;
|
||||||
import com.foobnix.drive.GFile;
|
import com.foobnix.drive.GFile;
|
||||||
import com.foobnix.ext.Fb2Extractor;
|
|
||||||
import com.foobnix.hypen.HypenUtils;
|
import com.foobnix.hypen.HypenUtils;
|
||||||
import com.foobnix.model.AppProfile;
|
import com.foobnix.model.AppProfile;
|
||||||
import com.foobnix.model.AppSP;
|
import com.foobnix.model.AppSP;
|
||||||
@@ -937,7 +937,7 @@ public class Dialogs {
|
|||||||
l.setPadding(Dips.dpToPx(5), Dips.dpToPx(5), Dips.dpToPx(5), Dips.dpToPx(5));
|
l.setPadding(Dips.dpToPx(5), Dips.dpToPx(5), Dips.dpToPx(5), Dips.dpToPx(5));
|
||||||
l.setOrientation(LinearLayout.VERTICAL);
|
l.setOrientation(LinearLayout.VERTICAL);
|
||||||
|
|
||||||
final Handler handler = new Handler();
|
final Handler handler = new Handler(Looper.getMainLooper());
|
||||||
|
|
||||||
final Runnable actionWrapper = new Runnable() {
|
final Runnable actionWrapper = new Runnable() {
|
||||||
|
|
||||||
|
@@ -28,6 +28,7 @@ import android.net.Uri;
|
|||||||
import android.os.AsyncTask;
|
import android.os.AsyncTask;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
|
import android.os.Looper;
|
||||||
import android.speech.tts.TextToSpeech.OnInitListener;
|
import android.speech.tts.TextToSpeech.OnInitListener;
|
||||||
import android.text.Html;
|
import android.text.Html;
|
||||||
import android.text.format.DateFormat;
|
import android.text.format.DateFormat;
|
||||||
@@ -1521,7 +1522,7 @@ public class DragingDialogs {
|
|||||||
final String searchingString = anchor.getContext().getString(R.string.searching_please_wait_);
|
final String searchingString = anchor.getContext().getString(R.string.searching_please_wait_);
|
||||||
final int count = controller.getPageCount();
|
final int count = controller.getPageCount();
|
||||||
|
|
||||||
final Handler hMessage = new Handler() {
|
final Handler hMessage = new Handler(Looper.getMainLooper()) {
|
||||||
@Override
|
@Override
|
||||||
public void handleMessage(android.os.Message msg) {
|
public void handleMessage(android.os.Message msg) {
|
||||||
int pageNumber = msg.what;
|
int pageNumber = msg.what;
|
||||||
@@ -1587,7 +1588,7 @@ public class DragingDialogs {
|
|||||||
searchString = matcher.group(1);
|
searchString = matcher.group(1);
|
||||||
firstPage = Integer.parseInt(matcher.group(2));
|
firstPage = Integer.parseInt(matcher.group(2));
|
||||||
lastPage = Integer.parseInt(matcher.group(3));
|
lastPage = Integer.parseInt(matcher.group(3));
|
||||||
}else{
|
} else {
|
||||||
Toast.makeText(controller.getActivity(), R.string.msg_unexpected_error, Toast.LENGTH_SHORT).show();
|
Toast.makeText(controller.getActivity(), R.string.msg_unexpected_error, Toast.LENGTH_SHORT).show();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -1626,7 +1627,7 @@ public class DragingDialogs {
|
|||||||
hMessage.sendEmptyMessage(pageNumber);
|
hMessage.sendEmptyMessage(pageNumber);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}, firstPage-1, lastPage);
|
}, firstPage - 1, lastPage);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@@ -7,6 +7,7 @@ import android.net.Uri;
|
|||||||
import android.os.AsyncTask;
|
import android.os.AsyncTask;
|
||||||
import android.os.Environment;
|
import android.os.Environment;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
|
import android.os.Looper;
|
||||||
import android.os.Message;
|
import android.os.Message;
|
||||||
import android.view.KeyEvent;
|
import android.view.KeyEvent;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
@@ -161,7 +162,7 @@ public class MultyDocSearchDialog {
|
|||||||
});
|
});
|
||||||
editPath.setText(Model.get().path);
|
editPath.setText(Model.get().path);
|
||||||
|
|
||||||
final Handler updater2 = new Handler() {
|
final Handler updater2 = new Handler(Looper.getMainLooper()) {
|
||||||
@Override
|
@Override
|
||||||
public void handleMessage(Message msg) {
|
public void handleMessage(Message msg) {
|
||||||
adapter.notifyDataSetChanged();
|
adapter.notifyDataSetChanged();
|
||||||
@@ -169,7 +170,7 @@ public class MultyDocSearchDialog {
|
|||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
final Handler updater1 = new Handler() {
|
final Handler updater1 = new Handler(Looper.getMainLooper()) {
|
||||||
@Override
|
@Override
|
||||||
public void handleMessage(Message msg) {
|
public void handleMessage(Message msg) {
|
||||||
infoView1.setText((Model.get().currentPage + 1) + "/" + Model.get().currentPagesCount + " " + Model.get().currentDoc);
|
infoView1.setText((Model.get().currentPage + 1) + "/" + Model.get().currentPagesCount + " " + Model.get().currentDoc);
|
||||||
@@ -302,7 +303,7 @@ public class MultyDocSearchDialog {
|
|||||||
if (!Model.get().isSearcingRun) {
|
if (!Model.get().isSearcingRun) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
Model.get().currentDoc = String.format("[%s/%s]", num, books) +new File(filePath).getName();
|
Model.get().currentDoc = String.format("[%s/%s]", num, books) + new File(filePath).getName();
|
||||||
final int page = searchInThePDF(filePath, Model.get().text, updater1);
|
final int page = searchInThePDF(filePath, Model.get().text, updater1);
|
||||||
|
|
||||||
if (page != -1) {
|
if (page != -1) {
|
||||||
|
@@ -6,6 +6,7 @@ import android.content.DialogInterface;
|
|||||||
import android.graphics.Bitmap;
|
import android.graphics.Bitmap;
|
||||||
import android.graphics.Color;
|
import android.graphics.Color;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
|
import android.os.Looper;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.View.OnClickListener;
|
import android.view.View.OnClickListener;
|
||||||
@@ -62,7 +63,7 @@ public class ColorsDialog {
|
|||||||
super();
|
super();
|
||||||
final View view = LayoutInflater.from(c).inflate(R.layout.dialog_colors, null, false);
|
final View view = LayoutInflater.from(c).inflate(R.layout.dialog_colors, null, false);
|
||||||
|
|
||||||
handler = new Handler();
|
handler = new Handler(Looper.getMainLooper());
|
||||||
|
|
||||||
int colorText = magicBlackColor(colorTextDef);
|
int colorText = magicBlackColor(colorTextDef);
|
||||||
int colorBg = magicBlackColor(colorBgDef);
|
int colorBg = magicBlackColor(colorBgDef);
|
||||||
|
@@ -8,11 +8,11 @@ import android.app.Activity;
|
|||||||
import android.app.AlertDialog;
|
import android.app.AlertDialog;
|
||||||
import android.content.DialogInterface;
|
import android.content.DialogInterface;
|
||||||
import android.content.DialogInterface.OnClickListener;
|
import android.content.DialogInterface.OnClickListener;
|
||||||
import android.content.res.ColorStateList;
|
|
||||||
import android.graphics.Color;
|
import android.graphics.Color;
|
||||||
import android.graphics.PorterDuff;
|
import android.graphics.PorterDuff;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
|
import android.os.Looper;
|
||||||
import android.view.Gravity;
|
import android.view.Gravity;
|
||||||
import android.view.KeyEvent;
|
import android.view.KeyEvent;
|
||||||
import android.view.MenuItem;
|
import android.view.MenuItem;
|
||||||
@@ -94,8 +94,8 @@ import java.util.concurrent.TimeUnit;
|
|||||||
public class DocumentWrapperUI {
|
public class DocumentWrapperUI {
|
||||||
|
|
||||||
final DocumentController dc;
|
final DocumentController dc;
|
||||||
final Handler handler = new Handler();
|
final Handler handler = new Handler(Looper.getMainLooper());
|
||||||
final Handler handlerTimer = new Handler();
|
final Handler handlerTimer = new Handler(Looper.getMainLooper());
|
||||||
|
|
||||||
|
|
||||||
public View.OnClickListener onLockUnlock = new View.OnClickListener() {
|
public View.OnClickListener onLockUnlock = new View.OnClickListener() {
|
||||||
@@ -1426,8 +1426,8 @@ public class DocumentWrapperUI {
|
|||||||
|
|
||||||
|
|
||||||
//line1.getBackground().
|
//line1.getBackground().
|
||||||
TintUtil.setStrokeColorWithDash(line1,tintColor);
|
TintUtil.setStrokeColorWithDash(line1, tintColor);
|
||||||
TintUtil.setStrokeColorWithDash(line2,tintColor);
|
TintUtil.setStrokeColorWithDash(line2, tintColor);
|
||||||
|
|
||||||
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
@@ -1717,7 +1717,7 @@ public class DocumentWrapperUI {
|
|||||||
menuLayout.setVisibility(View.GONE);
|
menuLayout.setVisibility(View.GONE);
|
||||||
bottomBar.setVisibility(View.GONE);
|
bottomBar.setVisibility(View.GONE);
|
||||||
//adFrame.setVisibility(View.GONE);
|
//adFrame.setVisibility(View.GONE);
|
||||||
// adFrame.setClickable(false);
|
// adFrame.setClickable(false);
|
||||||
imageMenuArrow.setImageResource(android.R.drawable.arrow_down_float);
|
imageMenuArrow.setImageResource(android.R.drawable.arrow_down_float);
|
||||||
|
|
||||||
// speedSeekBar.setVisibility(View.GONE);
|
// speedSeekBar.setVisibility(View.GONE);
|
||||||
@@ -1749,8 +1749,8 @@ public class DocumentWrapperUI {
|
|||||||
|
|
||||||
bottomBar.setVisibility(View.VISIBLE);
|
bottomBar.setVisibility(View.VISIBLE);
|
||||||
//adFrame.setVisibility(View.VISIBLE);
|
//adFrame.setVisibility(View.VISIBLE);
|
||||||
// adFrame.setClickable(true);
|
// adFrame.setClickable(true);
|
||||||
// adFrame.setTag(null);
|
// adFrame.setTag(null);
|
||||||
|
|
||||||
imageMenuArrow.setImageResource(android.R.drawable.arrow_up_float);
|
imageMenuArrow.setImageResource(android.R.drawable.arrow_up_float);
|
||||||
|
|
||||||
@@ -1801,8 +1801,8 @@ public class DocumentWrapperUI {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void hideAds() {
|
public void hideAds() {
|
||||||
// adFrame.setTag("");
|
// adFrame.setTag("");
|
||||||
// adFrame.setVisibility(View.GONE);
|
// adFrame.setVisibility(View.GONE);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void nextChose(boolean animate) {
|
public void nextChose(boolean animate) {
|
||||||
|
@@ -6,6 +6,7 @@ import android.graphics.drawable.Drawable;
|
|||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
|
import android.os.Looper;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
@@ -22,7 +23,6 @@ import com.bumptech.glide.load.engine.DiskCacheStrategy;
|
|||||||
import com.bumptech.glide.request.target.CustomTarget;
|
import com.bumptech.glide.request.target.CustomTarget;
|
||||||
import com.bumptech.glide.request.transition.Transition;
|
import com.bumptech.glide.request.transition.Transition;
|
||||||
import com.foobnix.android.utils.LOG;
|
import com.foobnix.android.utils.LOG;
|
||||||
import com.foobnix.android.utils.TxtUtils;
|
|
||||||
import com.foobnix.pdf.info.IMG;
|
import com.foobnix.pdf.info.IMG;
|
||||||
import com.foobnix.pdf.info.R;
|
import com.foobnix.pdf.info.R;
|
||||||
import com.foobnix.pdf.info.wrapper.MagicHelper;
|
import com.foobnix.pdf.info.wrapper.MagicHelper;
|
||||||
@@ -81,7 +81,7 @@ public class ImagePageFragment extends Fragment {
|
|||||||
text.setTextColor(MagicHelper.getTextColor());
|
text.setTextColor(MagicHelper.getTextColor());
|
||||||
//TxtUtils.setLinkTextColor(text);
|
//TxtUtils.setLinkTextColor(text);
|
||||||
|
|
||||||
handler = new Handler();
|
handler = new Handler(Looper.getMainLooper());
|
||||||
handler.postDelayed(new Runnable() {
|
handler.postDelayed(new Runnable() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@@ -10,6 +10,7 @@ import android.graphics.Paint.Style;
|
|||||||
import android.graphics.RectF;
|
import android.graphics.RectF;
|
||||||
import android.graphics.drawable.BitmapDrawable;
|
import android.graphics.drawable.BitmapDrawable;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
|
import android.os.Looper;
|
||||||
import android.util.AttributeSet;
|
import android.util.AttributeSet;
|
||||||
import android.util.Pair;
|
import android.util.Pair;
|
||||||
import android.view.GestureDetector;
|
import android.view.GestureDetector;
|
||||||
@@ -19,6 +20,7 @@ import android.view.animation.AccelerateDecelerateInterpolator;
|
|||||||
import android.widget.Scroller;
|
import android.widget.Scroller;
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
|
|
||||||
|
import com.foobnix.LibreraApp;
|
||||||
import com.foobnix.android.utils.Apps;
|
import com.foobnix.android.utils.Apps;
|
||||||
import com.foobnix.android.utils.Dips;
|
import com.foobnix.android.utils.Dips;
|
||||||
import com.foobnix.android.utils.LOG;
|
import com.foobnix.android.utils.LOG;
|
||||||
@@ -26,7 +28,6 @@ import com.foobnix.android.utils.TxtUtils;
|
|||||||
import com.foobnix.android.utils.Vibro;
|
import com.foobnix.android.utils.Vibro;
|
||||||
import com.foobnix.model.AppSP;
|
import com.foobnix.model.AppSP;
|
||||||
import com.foobnix.model.AppState;
|
import com.foobnix.model.AppState;
|
||||||
import com.foobnix.pdf.info.ExtUtils;
|
|
||||||
import com.foobnix.pdf.info.R;
|
import com.foobnix.pdf.info.R;
|
||||||
import com.foobnix.pdf.info.model.BookCSS;
|
import com.foobnix.pdf.info.model.BookCSS;
|
||||||
import com.foobnix.pdf.info.view.BrightnessHelper;
|
import com.foobnix.pdf.info.view.BrightnessHelper;
|
||||||
@@ -42,8 +43,6 @@ import com.foobnix.pdf.search.activity.msg.TextWordsMessage;
|
|||||||
import com.foobnix.sys.ClickUtils;
|
import com.foobnix.sys.ClickUtils;
|
||||||
import com.foobnix.sys.TempHolder;
|
import com.foobnix.sys.TempHolder;
|
||||||
|
|
||||||
import com.foobnix.LibreraApp;
|
|
||||||
|
|
||||||
import org.ebookdroid.core.codec.Annotation;
|
import org.ebookdroid.core.codec.Annotation;
|
||||||
import org.ebookdroid.core.codec.PageLink;
|
import org.ebookdroid.core.codec.PageLink;
|
||||||
import org.ebookdroid.droids.mupdf.codec.TextWord;
|
import org.ebookdroid.droids.mupdf.codec.TextWord;
|
||||||
@@ -112,7 +111,7 @@ public class PageImaveView extends View {
|
|||||||
public PageImaveView(final Context context, final AttributeSet attrs) {
|
public PageImaveView(final Context context, final AttributeSet attrs) {
|
||||||
super(context, attrs);
|
super(context, attrs);
|
||||||
|
|
||||||
handler = new Handler();
|
handler = new Handler(Looper.getMainLooper());
|
||||||
scroller = new Scroller(getContext(), new AccelerateDecelerateInterpolator());
|
scroller = new Scroller(getContext(), new AccelerateDecelerateInterpolator());
|
||||||
imageGestureListener = new ImageSimpleGestureListener();
|
imageGestureListener = new ImageSimpleGestureListener();
|
||||||
gestureDetector = new GestureDetector(context, imageGestureListener);
|
gestureDetector = new GestureDetector(context, imageGestureListener);
|
||||||
|
@@ -8,6 +8,7 @@ import android.content.DialogInterface.OnClickListener;
|
|||||||
import android.graphics.PointF;
|
import android.graphics.PointF;
|
||||||
import android.graphics.RectF;
|
import android.graphics.RectF;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
|
import android.os.Looper;
|
||||||
import android.text.InputType;
|
import android.text.InputType;
|
||||||
import android.util.Pair;
|
import android.util.Pair;
|
||||||
import android.view.KeyEvent;
|
import android.view.KeyEvent;
|
||||||
@@ -76,7 +77,7 @@ public class VerticalModeController extends DocumentController {
|
|||||||
super(activity);
|
super(activity);
|
||||||
this.ctr = ctr;
|
this.ctr = ctr;
|
||||||
CoreSettings.getInstance().fullScreen = AppState.get().fullScreenMode == AppState.FULL_SCREEN_FULLSCREEN;
|
CoreSettings.getInstance().fullScreen = AppState.get().fullScreenMode == AppState.FULL_SCREEN_FULLSCREEN;
|
||||||
handler = new Handler();
|
handler = new Handler(Looper.getMainLooper());
|
||||||
TempHolder.get().loadingCancelled = false;
|
TempHolder.get().loadingCancelled = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -649,7 +650,7 @@ public class VerticalModeController extends DocumentController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void commit() {
|
public void commit() {
|
||||||
new Handler().postDelayed(new Runnable() {
|
new Handler(Looper.getMainLooper()).postDelayed(new Runnable() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
@@ -688,7 +689,7 @@ public class VerticalModeController extends DocumentController {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onCloseActivityFinal(Runnable run) {
|
public void onCloseActivityFinal(Runnable run) {
|
||||||
TempHolder.get().loadingCancelled = true;
|
TempHolder.get().loadingCancelled = true;
|
||||||
stopTimer();
|
stopTimer();
|
||||||
ctr.closeActivityFinal(run);
|
ctr.closeActivityFinal(run);
|
||||||
}
|
}
|
||||||
|
@@ -8,6 +8,7 @@ import android.content.Intent;
|
|||||||
import android.graphics.Color;
|
import android.graphics.Color;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
|
import android.os.Looper;
|
||||||
import android.util.AttributeSet;
|
import android.util.AttributeSet;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.MenuItem;
|
import android.view.MenuItem;
|
||||||
@@ -22,7 +23,6 @@ import android.widget.TextView;
|
|||||||
import com.foobnix.android.utils.Apps;
|
import com.foobnix.android.utils.Apps;
|
||||||
import com.foobnix.android.utils.LOG;
|
import com.foobnix.android.utils.LOG;
|
||||||
import com.foobnix.android.utils.TxtUtils;
|
import com.foobnix.android.utils.TxtUtils;
|
||||||
import com.foobnix.model.AppState;
|
|
||||||
import com.foobnix.pdf.info.R;
|
import com.foobnix.pdf.info.R;
|
||||||
import com.foobnix.pdf.info.TintUtil;
|
import com.foobnix.pdf.info.TintUtil;
|
||||||
import com.foobnix.pdf.info.Urls;
|
import com.foobnix.pdf.info.Urls;
|
||||||
@@ -180,7 +180,7 @@ public class TTSControlsView extends FrameLayout {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
handler = new Handler();
|
handler = new Handler(Looper.getMainLooper());
|
||||||
seekMp3 = (SeekBar) view.findViewById(R.id.seekMp3);
|
seekMp3 = (SeekBar) view.findViewById(R.id.seekMp3);
|
||||||
seekCurrent = (TextView) view.findViewById(R.id.seekCurrent);
|
seekCurrent = (TextView) view.findViewById(R.id.seekCurrent);
|
||||||
seekMax = (TextView) view.findViewById(R.id.seekMax);
|
seekMax = (TextView) view.findViewById(R.id.seekMax);
|
||||||
|
@@ -12,6 +12,7 @@ import android.graphics.drawable.Drawable;
|
|||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
|
import android.os.Looper;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.widget.RemoteViews;
|
import android.widget.RemoteViews;
|
||||||
|
|
||||||
@@ -25,7 +26,6 @@ import com.bumptech.glide.request.transition.Transition;
|
|||||||
import com.foobnix.LibreraApp;
|
import com.foobnix.LibreraApp;
|
||||||
import com.foobnix.android.utils.Apps;
|
import com.foobnix.android.utils.Apps;
|
||||||
import com.foobnix.android.utils.LOG;
|
import com.foobnix.android.utils.LOG;
|
||||||
import com.foobnix.android.utils.ResultResponse;
|
|
||||||
import com.foobnix.android.utils.TxtUtils;
|
import com.foobnix.android.utils.TxtUtils;
|
||||||
import com.foobnix.dao2.FileMeta;
|
import com.foobnix.dao2.FileMeta;
|
||||||
import com.foobnix.model.AppSP;
|
import com.foobnix.model.AppSP;
|
||||||
@@ -34,7 +34,6 @@ import com.foobnix.pdf.info.ExtUtils;
|
|||||||
import com.foobnix.pdf.info.IMG;
|
import com.foobnix.pdf.info.IMG;
|
||||||
import com.foobnix.pdf.info.R;
|
import com.foobnix.pdf.info.R;
|
||||||
import com.foobnix.pdf.info.model.BookCSS;
|
import com.foobnix.pdf.info.model.BookCSS;
|
||||||
import com.foobnix.pdf.info.widget.RecentBooksWidget;
|
|
||||||
import com.foobnix.pdf.info.widget.TTSWidget;
|
import com.foobnix.pdf.info.widget.TTSWidget;
|
||||||
import com.foobnix.pdf.search.activity.HorizontalViewActivity;
|
import com.foobnix.pdf.search.activity.HorizontalViewActivity;
|
||||||
import com.foobnix.sys.ImageExtractor;
|
import com.foobnix.sys.ImageExtractor;
|
||||||
@@ -76,7 +75,7 @@ public class TTSNotification {
|
|||||||
@TargetApi(26)
|
@TargetApi(26)
|
||||||
public static void initChannels(Context context) {
|
public static void initChannels(Context context) {
|
||||||
TTSNotification.context = context;
|
TTSNotification.context = context;
|
||||||
handler = new Handler();
|
handler = new Handler(Looper.getMainLooper());
|
||||||
|
|
||||||
if (Build.VERSION.SDK_INT < 26) {
|
if (Build.VERSION.SDK_INT < 26) {
|
||||||
return;
|
return;
|
||||||
|
@@ -5,6 +5,7 @@ import android.content.res.Configuration;
|
|||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
|
import android.os.Looper;
|
||||||
|
|
||||||
import androidx.fragment.app.FragmentActivity;
|
import androidx.fragment.app.FragmentActivity;
|
||||||
|
|
||||||
@@ -14,7 +15,6 @@ import com.foobnix.model.AppState;
|
|||||||
import com.foobnix.pdf.info.IMG;
|
import com.foobnix.pdf.info.IMG;
|
||||||
import com.foobnix.pdf.info.MyADSProvider;
|
import com.foobnix.pdf.info.MyADSProvider;
|
||||||
import com.foobnix.pdf.info.R;
|
import com.foobnix.pdf.info.R;
|
||||||
import com.foobnix.pdf.search.view.CloseAppDialog;
|
|
||||||
import com.foobnix.tts.TTSEngine;
|
import com.foobnix.tts.TTSEngine;
|
||||||
import com.foobnix.tts.TTSNotification;
|
import com.foobnix.tts.TTSNotification;
|
||||||
|
|
||||||
@@ -49,7 +49,7 @@ public abstract class AdsFragmentActivity extends FragmentActivity {
|
|||||||
super.onCreate(arg0);
|
super.onCreate(arg0);
|
||||||
myAds.intetrstialTimeout = intetrstialTimeoutSec;
|
myAds.intetrstialTimeout = intetrstialTimeoutSec;
|
||||||
myAds.createHandler();
|
myAds.createHandler();
|
||||||
handler = new Handler();
|
handler = new Handler(Looper.getMainLooper());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@@ -8,6 +8,7 @@ import android.content.Intent;
|
|||||||
import android.graphics.RectF;
|
import android.graphics.RectF;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
|
import android.os.Looper;
|
||||||
|
|
||||||
import androidx.core.app.NotificationCompat;
|
import androidx.core.app.NotificationCompat;
|
||||||
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
|
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
|
||||||
@@ -99,7 +100,7 @@ public class BooksService extends IntentService {
|
|||||||
|
|
||||||
public BooksService() {
|
public BooksService() {
|
||||||
super("BooksService");
|
super("BooksService");
|
||||||
handler = new Handler();
|
handler = new Handler(Looper.getMainLooper());
|
||||||
LOG.d("BooksService", "Create");
|
LOG.d("BooksService", "Create");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -13,6 +13,7 @@ import android.net.Uri;
|
|||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
|
import android.os.Looper;
|
||||||
import android.view.KeyEvent;
|
import android.view.KeyEvent;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.View.OnClickListener;
|
import android.view.View.OnClickListener;
|
||||||
@@ -321,7 +322,7 @@ public class MainTabs2 extends AdsFragmentActivity {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
handler = new Handler();
|
handler = new Handler(Looper.getMainLooper());
|
||||||
isEink = Dips.isEInk();
|
isEink = Dips.isEInk();
|
||||||
|
|
||||||
TintUtil.setStatusBarColor(this);
|
TintUtil.setStatusBarColor(this);
|
||||||
|
@@ -12,6 +12,7 @@ import android.graphics.Color;
|
|||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
|
import android.os.Looper;
|
||||||
import android.text.Html;
|
import android.text.Html;
|
||||||
import android.text.format.DateUtils;
|
import android.text.format.DateUtils;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
@@ -335,7 +336,7 @@ public class PrefFragment2 extends UIFragment {
|
|||||||
final LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
|
final LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
|
||||||
layoutParams.setMargins(Dips.dpToPx(2), Dips.dpToPx(2), Dips.dpToPx(2), Dips.dpToPx(2));
|
layoutParams.setMargins(Dips.dpToPx(2), Dips.dpToPx(2), Dips.dpToPx(2), Dips.dpToPx(2));
|
||||||
|
|
||||||
final Handler handler = new Handler();
|
final Handler handler = new Handler(Looper.getMainLooper());
|
||||||
final Runnable ask2 = new Runnable() {
|
final Runnable ask2 = new Runnable() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@@ -11,6 +11,7 @@ import android.graphics.Color;
|
|||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.Environment;
|
import android.os.Environment;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
|
import android.os.Looper;
|
||||||
import android.text.Editable;
|
import android.text.Editable;
|
||||||
import android.text.TextWatcher;
|
import android.text.TextWatcher;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
@@ -353,7 +354,7 @@ public class SearchFragment2 extends UIFragment<FileMeta> {
|
|||||||
|
|
||||||
NO_SERIES = " (" + getString(R.string.without_series) + ")";
|
NO_SERIES = " (" + getString(R.string.without_series) + ")";
|
||||||
|
|
||||||
handler = new Handler();
|
handler = new Handler(Looper.getMainLooper());
|
||||||
|
|
||||||
secondTopPanel = view.findViewById(R.id.secondTopPanel);
|
secondTopPanel = view.findViewById(R.id.secondTopPanel);
|
||||||
countBooks = (TextView) view.findViewById(R.id.countBooks);
|
countBooks = (TextView) view.findViewById(R.id.countBooks);
|
||||||
@@ -448,7 +449,7 @@ public class SearchFragment2 extends UIFragment<FileMeta> {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
Prefs.get().remove(SearchAllBooksWorker.SEARCH_ERRORS,0);
|
Prefs.get().remove(SearchAllBooksWorker.SEARCH_ERRORS, 0);
|
||||||
recyclerView.scrollToPosition(0);
|
recyclerView.scrollToPosition(0);
|
||||||
seachAll();
|
seachAll();
|
||||||
}
|
}
|
||||||
|
@@ -8,6 +8,7 @@ import android.content.res.Configuration;
|
|||||||
import android.os.AsyncTask;
|
import android.os.AsyncTask;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
|
import android.os.Looper;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.widget.ImageView;
|
import android.widget.ImageView;
|
||||||
|
|
||||||
@@ -21,6 +22,7 @@ import androidx.recyclerview.widget.RecyclerView;
|
|||||||
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
|
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
|
||||||
|
|
||||||
import com.bumptech.glide.Glide;
|
import com.bumptech.glide.Glide;
|
||||||
|
import com.foobnix.LibreraApp;
|
||||||
import com.foobnix.android.utils.Apps;
|
import com.foobnix.android.utils.Apps;
|
||||||
import com.foobnix.android.utils.Dips;
|
import com.foobnix.android.utils.Dips;
|
||||||
import com.foobnix.android.utils.LOG;
|
import com.foobnix.android.utils.LOG;
|
||||||
@@ -43,7 +45,6 @@ import com.foobnix.ui2.adapter.FileMetaAdapter;
|
|||||||
import com.foobnix.ui2.fast.FastScrollRecyclerView;
|
import com.foobnix.ui2.fast.FastScrollRecyclerView;
|
||||||
import com.foobnix.ui2.fast.FastScrollStateChangeListener;
|
import com.foobnix.ui2.fast.FastScrollStateChangeListener;
|
||||||
|
|
||||||
import com.foobnix.LibreraApp;
|
|
||||||
import org.greenrobot.eventbus.EventBus;
|
import org.greenrobot.eventbus.EventBus;
|
||||||
import org.greenrobot.eventbus.Subscribe;
|
import org.greenrobot.eventbus.Subscribe;
|
||||||
import org.greenrobot.eventbus.ThreadMode;
|
import org.greenrobot.eventbus.ThreadMode;
|
||||||
@@ -79,7 +80,7 @@ public abstract class UIFragment<T> extends Fragment {
|
|||||||
@Override
|
@Override
|
||||||
public void onAttach(Context context) {
|
public void onAttach(Context context) {
|
||||||
super.onAttach(context);
|
super.onAttach(context);
|
||||||
handler = new Handler();
|
handler = new Handler(Looper.getMainLooper());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -137,7 +138,7 @@ public abstract class UIFragment<T> extends Fragment {
|
|||||||
|
|
||||||
public abstract void resetFragment();
|
public abstract void resetFragment();
|
||||||
|
|
||||||
public void onDoubleClick(){
|
public void onDoubleClick() {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -10,6 +10,7 @@ import android.content.res.Configuration;
|
|||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
|
import android.os.Looper;
|
||||||
import android.util.DisplayMetrics;
|
import android.util.DisplayMetrics;
|
||||||
import android.view.KeyEvent;
|
import android.view.KeyEvent;
|
||||||
import android.view.MotionEvent;
|
import android.view.MotionEvent;
|
||||||
@@ -20,7 +21,6 @@ import com.foobnix.android.utils.Dips;
|
|||||||
import com.foobnix.android.utils.Intents;
|
import com.foobnix.android.utils.Intents;
|
||||||
import com.foobnix.android.utils.Keyboards;
|
import com.foobnix.android.utils.Keyboards;
|
||||||
import com.foobnix.android.utils.LOG;
|
import com.foobnix.android.utils.LOG;
|
||||||
import com.foobnix.android.utils.TxtUtils;
|
|
||||||
import com.foobnix.drive.GFile;
|
import com.foobnix.drive.GFile;
|
||||||
import com.foobnix.model.AppBook;
|
import com.foobnix.model.AppBook;
|
||||||
import com.foobnix.model.AppProfile;
|
import com.foobnix.model.AppProfile;
|
||||||
@@ -159,7 +159,7 @@ public class VerticalViewActivity extends AbstractActionActivity<VerticalViewAct
|
|||||||
|
|
||||||
// ADS.activate(this, adView);
|
// ADS.activate(this, adView);
|
||||||
|
|
||||||
handler = new Handler();
|
handler = new Handler(Looper.getMainLooper());
|
||||||
|
|
||||||
getController().onBookLoaded(new Runnable() {
|
getController().onBookLoaded(new Runnable() {
|
||||||
|
|
||||||
@@ -178,8 +178,6 @@ public class VerticalViewActivity extends AbstractActionActivity<VerticalViewAct
|
|||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@@ -1,225 +0,0 @@
|
|||||||
package org.emdev.ui.actions;
|
|
||||||
|
|
||||||
|
|
||||||
import android.app.Activity;
|
|
||||||
|
|
||||||
import org.emdev.utils.LengthUtils;
|
|
||||||
|
|
||||||
import java.lang.reflect.InvocationHandler;
|
|
||||||
import java.lang.reflect.Method;
|
|
||||||
import java.lang.reflect.Proxy;
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.LinkedList;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
public class EventDispatcher {
|
|
||||||
|
|
||||||
|
|
||||||
private final Activity m_base;
|
|
||||||
|
|
||||||
private final InvokationType m_type;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Supported interfaces.
|
|
||||||
*/
|
|
||||||
private final Class<?>[] m_interfaces;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Real listeners.
|
|
||||||
*/
|
|
||||||
private final Map<Class<?>, List<Object>> m_listeners = new HashMap<Class<?>, List<Object>>();
|
|
||||||
|
|
||||||
private final Object m_proxy;
|
|
||||||
|
|
||||||
private final InvocationHandler m_handler;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Constructor
|
|
||||||
*
|
|
||||||
* @param type
|
|
||||||
* invocation type
|
|
||||||
* @param target
|
|
||||||
* target object
|
|
||||||
* @param listeners
|
|
||||||
* a list of listener interfaces
|
|
||||||
*/
|
|
||||||
public EventDispatcher(final Activity base, final InvokationType type, final Class<?>... listeners) {
|
|
||||||
|
|
||||||
if (LengthUtils.isEmpty(listeners)) {
|
|
||||||
throw new IllegalArgumentException("Listeners list cannot be empty");
|
|
||||||
}
|
|
||||||
|
|
||||||
for (final Class<?> listener : listeners) {
|
|
||||||
if (listener == null) {
|
|
||||||
throw new IllegalArgumentException("Listener class cannot be null");
|
|
||||||
}
|
|
||||||
if (!listener.isInterface()) {
|
|
||||||
throw new IllegalArgumentException("Listener class should be an interface");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
m_base = base;
|
|
||||||
m_type = type;
|
|
||||||
m_handler = new Handler();
|
|
||||||
m_interfaces = listeners;
|
|
||||||
m_proxy = Proxy.newProxyInstance(this.getClass().getClassLoader(), listeners, m_handler);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Adds the target listener.
|
|
||||||
*
|
|
||||||
* @param listener
|
|
||||||
* the listener to add
|
|
||||||
*/
|
|
||||||
public void addListener(final Object listener) {
|
|
||||||
if (listener != null) {
|
|
||||||
for (final Class<?> listenerClass : m_interfaces) {
|
|
||||||
if (listenerClass.isInstance(listener)) {
|
|
||||||
List<Object> list = m_listeners.get(listenerClass);
|
|
||||||
if (list == null) {
|
|
||||||
list = new LinkedList<Object>();
|
|
||||||
m_listeners.put(listenerClass, list);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!list.contains(listener)) {
|
|
||||||
list.add(listener);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Removes the target listener.
|
|
||||||
*
|
|
||||||
* @param listener
|
|
||||||
* the listener to remove
|
|
||||||
*/
|
|
||||||
public void removeListener(final Object listener) {
|
|
||||||
if (listener != null) {
|
|
||||||
for (final Class<?> listenerClass : m_interfaces) {
|
|
||||||
if (listenerClass.isInstance(listener)) {
|
|
||||||
final List<Object> list = m_listeners.get(listenerClass);
|
|
||||||
if (list != null) {
|
|
||||||
list.remove(listener);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets a listener of the given type.
|
|
||||||
*
|
|
||||||
* @param <Listener>
|
|
||||||
* listener type
|
|
||||||
* @return listener proxy object casted to the given type
|
|
||||||
*/
|
|
||||||
@SuppressWarnings("unchecked")
|
|
||||||
public <Listener> Listener getListener() {
|
|
||||||
return (Listener) m_proxy;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This class implements invocation handler for event listeners.
|
|
||||||
*/
|
|
||||||
private class Handler implements InvocationHandler {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Processes a method invocation on a proxy instance and returns the
|
|
||||||
* result.
|
|
||||||
*
|
|
||||||
* @param proxy
|
|
||||||
* the proxy instance that the method was invoked on
|
|
||||||
* @param method
|
|
||||||
* the <code>Method</code> instance corresponding to
|
|
||||||
* the interface method invoked on the proxy instance.
|
|
||||||
* @param args
|
|
||||||
* an array of objects containing the values of the
|
|
||||||
* arguments passed in the method invocation on the proxy
|
|
||||||
* instance.
|
|
||||||
* @return the value to return from the method invocation on the
|
|
||||||
* proxy instance.
|
|
||||||
* @throws Throwable
|
|
||||||
* the exception to throw from the method
|
|
||||||
* invocation on the proxy instance.
|
|
||||||
* @see InvocationHandler#invoke(Object, Method, Object[])
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public Object invoke(final Object proxy, final Method method, final Object[] args) throws Throwable {
|
|
||||||
final Class<?> listenerClass = method.getDeclaringClass();
|
|
||||||
final List<Object> targets = m_listeners.get(listenerClass);
|
|
||||||
if (LengthUtils.isNotEmpty(targets)) {
|
|
||||||
final Task task = new Task(targets, method, args);
|
|
||||||
switch (m_type) {
|
|
||||||
case AsyncUI:
|
|
||||||
m_base.runOnUiThread(task);
|
|
||||||
break;
|
|
||||||
case SeparatedThread:
|
|
||||||
new Thread(task,"@T event invoke").start();
|
|
||||||
break;
|
|
||||||
case Direct:
|
|
||||||
default:
|
|
||||||
task.run();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This class implements thread task for listener invocation.
|
|
||||||
*/
|
|
||||||
private class Task implements Runnable {
|
|
||||||
|
|
||||||
private final List<Object> m_targets;
|
|
||||||
|
|
||||||
private final Method m_method;
|
|
||||||
|
|
||||||
private final Object[] m_args;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Constructor
|
|
||||||
*
|
|
||||||
* @param method
|
|
||||||
* called method
|
|
||||||
* @param args
|
|
||||||
* method parameters
|
|
||||||
*/
|
|
||||||
public Task(final List<Object> targets, final Method method, final Object[] args) {
|
|
||||||
m_targets = targets;
|
|
||||||
m_method = method;
|
|
||||||
m_args = args;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* @see java.lang.Runnable#run()
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public synchronized void run() {
|
|
||||||
directInvoke();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Direct invoke of the action.
|
|
||||||
*
|
|
||||||
* @param method
|
|
||||||
* called method
|
|
||||||
* @param args
|
|
||||||
* method parameters
|
|
||||||
*/
|
|
||||||
protected void directInvoke() {
|
|
||||||
for (final Object target : m_targets) {
|
|
||||||
try {
|
|
||||||
m_method.invoke(target, m_args);
|
|
||||||
} catch (final Throwable ex) {
|
|
||||||
ex.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@@ -9,6 +9,7 @@ import android.graphics.Paint;
|
|||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
import android.os.HandlerThread;
|
import android.os.HandlerThread;
|
||||||
|
import android.os.Looper;
|
||||||
import android.os.Message;
|
import android.os.Message;
|
||||||
import android.view.MotionEvent;
|
import android.view.MotionEvent;
|
||||||
import android.view.ScaleGestureDetector;
|
import android.view.ScaleGestureDetector;
|
||||||
@@ -29,7 +30,8 @@ public class TestActivity extends Activity implements View.OnTouchListener,
|
|||||||
static int dx = 0;
|
static int dx = 0;
|
||||||
static int dy = 0;
|
static int dy = 0;
|
||||||
ScaleGestureDetector scaleGestureDetector;
|
ScaleGestureDetector scaleGestureDetector;
|
||||||
static float zoom =1;
|
static float zoom = 1;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onCreate(Bundle savedInstanceState) {
|
public void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
@@ -40,7 +42,7 @@ public class TestActivity extends Activity implements View.OnTouchListener,
|
|||||||
|
|
||||||
setContentView(mSurface);
|
setContentView(mSurface);
|
||||||
|
|
||||||
Handler h = new Handler();
|
Handler h = new Handler(Looper.getMainLooper());
|
||||||
h.postDelayed(new Runnable() {
|
h.postDelayed(new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
@@ -49,10 +51,10 @@ public class TestActivity extends Activity implements View.OnTouchListener,
|
|||||||
}
|
}
|
||||||
}, 200);
|
}, 200);
|
||||||
|
|
||||||
scaleGestureDetector = new ScaleGestureDetector(this, new ScaleGestureDetector.OnScaleGestureListener() {
|
scaleGestureDetector = new ScaleGestureDetector(this, new ScaleGestureDetector.OnScaleGestureListener() {
|
||||||
@Override
|
@Override
|
||||||
public boolean onScale(ScaleGestureDetector detector) {
|
public boolean onScale(ScaleGestureDetector detector) {
|
||||||
zoom =zoom* detector.getScaleFactor();
|
zoom = zoom * detector.getScaleFactor();
|
||||||
LOG.d("ScaleGestureDetector onScale", detector.getScaleFactor(), detector.getCurrentSpan(), detector.getPreviousSpan());
|
LOG.d("ScaleGestureDetector onScale", detector.getScaleFactor(), detector.getCurrentSpan(), detector.getPreviousSpan());
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
@@ -79,7 +81,6 @@ public class TestActivity extends Activity implements View.OnTouchListener,
|
|||||||
int initX, initY;
|
int initX, initY;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public boolean onTouch(View v, MotionEvent event) {
|
public boolean onTouch(View v, MotionEvent event) {
|
||||||
boolean res = scaleGestureDetector.onTouchEvent(event);
|
boolean res = scaleGestureDetector.onTouchEvent(event);
|
||||||
if (event.getAction() == MotionEvent.ACTION_DOWN) {
|
if (event.getAction() == MotionEvent.ACTION_DOWN) {
|
||||||
@@ -89,8 +90,8 @@ public class TestActivity extends Activity implements View.OnTouchListener,
|
|||||||
}
|
}
|
||||||
if (event.getAction() == MotionEvent.ACTION_MOVE) {
|
if (event.getAction() == MotionEvent.ACTION_MOVE) {
|
||||||
// mThread.addItem((int) event.getX(), (int) event.getY());
|
// mThread.addItem((int) event.getX(), (int) event.getY());
|
||||||
dx = (int) event.getX()-initX;
|
dx = (int) event.getX() - initX;
|
||||||
dy = (int)event.getY()-initY;
|
dy = (int) event.getY() - initY;
|
||||||
}
|
}
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
@@ -200,12 +201,12 @@ public class TestActivity extends Activity implements View.OnTouchListener,
|
|||||||
// Clear Canvas first
|
// Clear Canvas first
|
||||||
c.drawColor(Color.BLACK);
|
c.drawColor(Color.BLACK);
|
||||||
|
|
||||||
c.translate(dx*3,dy*3);
|
c.translate(dx * 3, dy * 3);
|
||||||
c.scale(zoom,zoom);
|
c.scale(zoom, zoom);
|
||||||
//c.getMatrix().postTranslate(dx,dy);
|
//c.getMatrix().postTranslate(dx,dy);
|
||||||
//c.getMatrix().preScale(2,2);
|
//c.getMatrix().preScale(2,2);
|
||||||
|
|
||||||
c.drawRect(1,1,mDrawingWidth-1, mDrawingHeight-1,bPaint);
|
c.drawRect(1, 1, mDrawingWidth - 1, mDrawingHeight - 1, bPaint);
|
||||||
|
|
||||||
// Draw each item
|
// Draw each item
|
||||||
for (DrawingItem item : mLocations) {
|
for (DrawingItem item : mLocations) {
|
||||||
@@ -230,7 +231,6 @@ public class TestActivity extends Activity implements View.OnTouchListener,
|
|||||||
c.restore();
|
c.restore();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Release to be rendered to the screen
|
// Release to be rendered to the screen
|
||||||
mDrawingSurface.unlockCanvasAndPost(c);
|
mDrawingSurface.unlockCanvasAndPost(c);
|
||||||
break;
|
break;
|
||||||
|
@@ -12,12 +12,12 @@ plugins {
|
|||||||
|
|
||||||
android {
|
android {
|
||||||
namespace = "mobi.librera.appcompose"
|
namespace = "mobi.librera.appcompose"
|
||||||
compileSdk = 36
|
compileSdk = rootProject.extra["compileSdk"] as Int
|
||||||
|
|
||||||
defaultConfig {
|
defaultConfig {
|
||||||
applicationId = "mobi.librera.appcompose"
|
applicationId = "mobi.librera.appcompose"
|
||||||
minSdk = 30
|
minSdk = rootProject.extra["minSdk"] as Int
|
||||||
targetSdk = 36
|
targetSdk = rootProject.extra["targetSdk"] as Int
|
||||||
versionCode = 1
|
versionCode = 1
|
||||||
versionName = "1.0"
|
versionName = "1.0"
|
||||||
|
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
plugins {
|
plugins {
|
||||||
id("com.android.application") version "8.11.1" apply false
|
id("com.android.application") version "8.12.0" apply false
|
||||||
id("com.android.library") version "8.11.1" apply false
|
id("com.android.library") version "8.12.0" apply false
|
||||||
id("org.jetbrains.kotlin.android") version "2.2.0" apply false
|
id("org.jetbrains.kotlin.android") version "2.2.0" apply false
|
||||||
id("org.jetbrains.kotlin.plugin.compose") version "2.2.0" apply false
|
id("org.jetbrains.kotlin.plugin.compose") version "2.2.0" apply false
|
||||||
id("androidx.room") version "2.7.2" apply false
|
id("androidx.room") version "2.7.2" apply false
|
||||||
|
@@ -7,11 +7,18 @@ plugins {
|
|||||||
|
|
||||||
android {
|
android {
|
||||||
namespace = "com.foobnix.googledrive"
|
namespace = "com.foobnix.googledrive"
|
||||||
compileSdk = 36
|
compileSdk = rootProject.extra["compileSdk"] as Int
|
||||||
|
|
||||||
defaultConfig {
|
defaultConfig {
|
||||||
minSdk = 24
|
minSdk = rootProject.extra["minSdk"] as Int
|
||||||
targetSdk = 36
|
}
|
||||||
|
|
||||||
|
lint {
|
||||||
|
targetSdk = rootProject.extra["targetSdk"] as Int
|
||||||
|
}
|
||||||
|
|
||||||
|
testOptions {
|
||||||
|
targetSdk = rootProject.extra["targetSdk"] as Int
|
||||||
}
|
}
|
||||||
|
|
||||||
compileOptions {
|
compileOptions {
|
||||||
|
Reference in New Issue
Block a user