Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
41a54b76bf | ||
|
|
a09940eb86 | ||
|
|
159b8c13b0 | ||
|
|
498d51ec22 | ||
|
|
24e50da7c9 | ||
|
|
fcc595d9a3 | ||
|
|
d2aecb5eb5 | ||
|
|
e2cfa30052 |
No files matched your search
+4
-5
@@ -34,8 +34,8 @@ android {
|
|||||||
applicationId "moe.tarsin.ehviewer"
|
applicationId "moe.tarsin.ehviewer"
|
||||||
minSdkVersion 26
|
minSdkVersion 26
|
||||||
targetSdkVersion 33
|
targetSdkVersion 33
|
||||||
versionCode 114533
|
versionCode 114535
|
||||||
versionName "1.7.29.1"
|
versionName "1.7.29.3"
|
||||||
resConfigs 'zh', 'zh-rCN', 'zh-rHK', 'zh-rTW', 'es', 'ja', 'ko', 'fr', 'de', 'th'
|
resConfigs 'zh', 'zh-rCN', 'zh-rHK', 'zh-rTW', 'es', 'ja', 'ko', 'fr', 'de', 'th'
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -107,7 +107,7 @@ dependencies {
|
|||||||
implementation "androidx.biometric:biometric-ktx:1.2.0-alpha04"
|
implementation "androidx.biometric:biometric-ktx:1.2.0-alpha04"
|
||||||
implementation "androidx.browser:browser:1.4.0"
|
implementation "androidx.browser:browser:1.4.0"
|
||||||
|
|
||||||
def collection_version = "1.3.0-alpha01"
|
def collection_version = "1.3.0-alpha02"
|
||||||
implementation "androidx.collection:collection:$collection_version"
|
implementation "androidx.collection:collection:$collection_version"
|
||||||
implementation "androidx.collection:collection-ktx:$collection_version"
|
implementation "androidx.collection:collection-ktx:$collection_version"
|
||||||
|
|
||||||
@@ -122,7 +122,7 @@ dependencies {
|
|||||||
implementation "androidx.documentfile:documentfile:1.1.0-alpha01"
|
implementation "androidx.documentfile:documentfile:1.1.0-alpha01"
|
||||||
implementation "androidx.dynamicanimation:dynamicanimation:1.1.0-alpha03"
|
implementation "androidx.dynamicanimation:dynamicanimation:1.1.0-alpha03"
|
||||||
|
|
||||||
def fragment_version = "1.5.0"
|
def fragment_version = "1.5.1"
|
||||||
implementation "androidx.fragment:fragment:$fragment_version"
|
implementation "androidx.fragment:fragment:$fragment_version"
|
||||||
implementation "androidx.fragment:fragment-ktx:$fragment_version"
|
implementation "androidx.fragment:fragment-ktx:$fragment_version"
|
||||||
|
|
||||||
@@ -148,7 +148,6 @@ dependencies {
|
|||||||
|
|
||||||
implementation 'com.drakeet.drawer:drawer:1.0.3'
|
implementation 'com.drakeet.drawer:drawer:1.0.3'
|
||||||
implementation 'com.google.android.material:material:1.7.0-alpha03'
|
implementation 'com.google.android.material:material:1.7.0-alpha03'
|
||||||
implementation 'com.getkeepsafe.taptargetview:taptargetview:1.13.3'
|
|
||||||
implementation 'com.h6ah4i.android.widget.advrecyclerview:advrecyclerview:1.0.0'
|
implementation 'com.h6ah4i.android.widget.advrecyclerview:advrecyclerview:1.0.0'
|
||||||
implementation 'com.squareup.okhttp3:okhttp:5.0.0-alpha.10'
|
implementation 'com.squareup.okhttp3:okhttp:5.0.0-alpha.10'
|
||||||
implementation 'dev.rikka.rikkax.core:core-ktx:1.4.1'
|
implementation 'dev.rikka.rikkax.core:core-ktx:1.4.1'
|
||||||
|
|||||||
@@ -55,8 +55,6 @@ import androidx.recyclerview.widget.RecyclerView;
|
|||||||
import androidx.recyclerview.widget.SimpleItemAnimator;
|
import androidx.recyclerview.widget.SimpleItemAnimator;
|
||||||
import androidx.recyclerview.widget.StaggeredGridLayoutManager;
|
import androidx.recyclerview.widget.StaggeredGridLayoutManager;
|
||||||
|
|
||||||
import com.getkeepsafe.taptargetview.TapTarget;
|
|
||||||
import com.getkeepsafe.taptargetview.TapTargetView;
|
|
||||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
|
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
|
||||||
import com.google.android.material.floatingactionbutton.FloatingActionButton;
|
import com.google.android.material.floatingactionbutton.FloatingActionButton;
|
||||||
import com.h6ah4i.android.widget.advrecyclerview.animator.DraggableItemAnimator;
|
import com.h6ah4i.android.widget.advrecyclerview.animator.DraggableItemAnimator;
|
||||||
@@ -390,90 +388,9 @@ public class DownloadsScene extends ToolbarScene
|
|||||||
|
|
||||||
updateView();
|
updateView();
|
||||||
|
|
||||||
guide();
|
|
||||||
|
|
||||||
return view;
|
return view;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void guide() {
|
|
||||||
if (Settings.getGuideDownloadThumb() && null != mRecyclerView) {
|
|
||||||
mRecyclerView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
|
|
||||||
@Override
|
|
||||||
public void onGlobalLayout() {
|
|
||||||
if (Settings.getGuideDownloadThumb()) {
|
|
||||||
guideDownloadThumb();
|
|
||||||
}
|
|
||||||
if (null != mRecyclerView) {
|
|
||||||
ViewUtils.removeOnGlobalLayoutListener(mRecyclerView.getViewTreeObserver(), this);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
guideDownloadLabels();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void guideDownloadThumb() {
|
|
||||||
MainActivity activity = getMainActivity();
|
|
||||||
if (null == activity || !Settings.getGuideDownloadThumb() || null == mLayoutManager || null == mRecyclerView) {
|
|
||||||
guideDownloadLabels();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
int position = mLayoutManager.findFirstCompletelyVisibleItemPositions(null)[0];
|
|
||||||
if (position < 0) {
|
|
||||||
guideDownloadLabels();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
RecyclerView.ViewHolder holder = mRecyclerView.findViewHolderForAdapterPosition(position);
|
|
||||||
if (null == holder) {
|
|
||||||
guideDownloadLabels();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
TapTargetView.showFor(requireActivity(),
|
|
||||||
TapTarget.forView(((DownloadHolder) holder).thumb,
|
|
||||||
getString(R.string.guide_download_thumb_title),
|
|
||||||
getString(R.string.guide_download_thumb_text))
|
|
||||||
.transparentTarget(true),
|
|
||||||
new TapTargetView.Listener() {
|
|
||||||
@Override
|
|
||||||
public void onTargetDismissed(TapTargetView view, boolean userInitiated) {
|
|
||||||
super.onTargetDismissed(view, userInitiated);
|
|
||||||
Settings.putGuideDownloadThumb(false);
|
|
||||||
guideDownloadLabels();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
private void guideDownloadLabels() {
|
|
||||||
MainActivity activity = getMainActivity();
|
|
||||||
if (null == activity || !Settings.getGuideDownloadLabels()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
Display display = activity.getWindowManager().getDefaultDisplay();
|
|
||||||
Point point = new Point();
|
|
||||||
display.getSize(point);
|
|
||||||
Rect bounds = new Rect(point.x + LayoutUtils.dp2pix(requireContext(), 20),
|
|
||||||
point.y / 3 + LayoutUtils.dp2pix(requireContext(), 20),
|
|
||||||
point.x - LayoutUtils.dp2pix(requireContext(), 20),
|
|
||||||
point.y / 3 - LayoutUtils.dp2pix(requireContext(), 20));
|
|
||||||
|
|
||||||
TapTargetView.showFor(requireActivity(),
|
|
||||||
TapTarget.forBounds(bounds,
|
|
||||||
getString(R.string.guide_download_labels_title),
|
|
||||||
getString(R.string.guide_download_labels_text))
|
|
||||||
.transparentTarget(true),
|
|
||||||
new TapTargetView.Listener() {
|
|
||||||
@Override
|
|
||||||
public void onTargetDismissed(TapTargetView view, boolean userInitiated) {
|
|
||||||
super.onTargetClick(view);
|
|
||||||
Settings.puttGuideDownloadLabels(false);
|
|
||||||
openDrawer(Gravity.RIGHT);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
|
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
|
||||||
super.onViewCreated(view, savedInstanceState);
|
super.onViewCreated(view, savedInstanceState);
|
||||||
|
|||||||
@@ -45,8 +45,6 @@ import androidx.drawerlayout.widget.DrawerLayout;
|
|||||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||||
import androidx.recyclerview.widget.RecyclerView;
|
import androidx.recyclerview.widget.RecyclerView;
|
||||||
|
|
||||||
import com.getkeepsafe.taptargetview.TapTarget;
|
|
||||||
import com.getkeepsafe.taptargetview.TapTargetView;
|
|
||||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
|
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
|
||||||
import com.google.android.material.floatingactionbutton.FloatingActionButton;
|
import com.google.android.material.floatingactionbutton.FloatingActionButton;
|
||||||
import com.hippo.annotation.Implemented;
|
import com.hippo.annotation.Implemented;
|
||||||
@@ -311,40 +309,9 @@ public class FavoritesScene extends BaseScene implements
|
|||||||
mHelper.firstRefresh();
|
mHelper.firstRefresh();
|
||||||
}
|
}
|
||||||
|
|
||||||
guideCollections();
|
|
||||||
|
|
||||||
return view;
|
return view;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void guideCollections() {
|
|
||||||
Activity activity = getMainActivity();
|
|
||||||
if (null == activity || !Settings.getGuideCollections()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
Display display = activity.getWindowManager().getDefaultDisplay();
|
|
||||||
Point point = new Point();
|
|
||||||
display.getSize(point);
|
|
||||||
Rect bounds = new Rect(point.x + LayoutUtils.dp2pix(requireContext(), 20),
|
|
||||||
point.y / 3 + LayoutUtils.dp2pix(requireContext(), 20),
|
|
||||||
point.x - LayoutUtils.dp2pix(requireContext(), 20),
|
|
||||||
point.y / 3 - LayoutUtils.dp2pix(requireContext(), 20));
|
|
||||||
|
|
||||||
TapTargetView.showFor(requireActivity(),
|
|
||||||
TapTarget.forBounds(bounds,
|
|
||||||
getString(R.string.guide_collections_title),
|
|
||||||
getString(R.string.guide_collections_text))
|
|
||||||
.transparentTarget(true),
|
|
||||||
new TapTargetView.Listener() {
|
|
||||||
@Override
|
|
||||||
public void onTargetDismissed(TapTargetView view, boolean userInitiated) {
|
|
||||||
super.onTargetClick(view);
|
|
||||||
Settings.putGuideCollections(false);
|
|
||||||
openDrawer(Gravity.RIGHT);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
// keyword of mUrlBuilder, fav cat of mUrlBuilder, mFavCatArray.
|
// keyword of mUrlBuilder, fav cat of mUrlBuilder, mFavCatArray.
|
||||||
// They changed, call it
|
// They changed, call it
|
||||||
private void updateSearchBar() {
|
private void updateSearchBar() {
|
||||||
|
|||||||
@@ -59,8 +59,6 @@ import androidx.drawerlayout.widget.DrawerLayout;
|
|||||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||||
import androidx.recyclerview.widget.RecyclerView;
|
import androidx.recyclerview.widget.RecyclerView;
|
||||||
|
|
||||||
import com.getkeepsafe.taptargetview.TapTarget;
|
|
||||||
import com.getkeepsafe.taptargetview.TapTargetView;
|
|
||||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
|
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
|
||||||
import com.google.android.material.floatingactionbutton.FloatingActionButton;
|
import com.google.android.material.floatingactionbutton.FloatingActionButton;
|
||||||
import com.h6ah4i.android.widget.advrecyclerview.animator.DraggableItemAnimator;
|
import com.h6ah4i.android.widget.advrecyclerview.animator.DraggableItemAnimator;
|
||||||
@@ -634,40 +632,9 @@ public final class GalleryListScene extends BaseScene
|
|||||||
mHelper.firstRefresh();
|
mHelper.firstRefresh();
|
||||||
}
|
}
|
||||||
|
|
||||||
guideQuickSearch();
|
|
||||||
|
|
||||||
return view;
|
return view;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void guideQuickSearch() {
|
|
||||||
Activity activity = getMainActivity();
|
|
||||||
if (null == activity || !Settings.getGuideQuickSearch()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
Display display = activity.getWindowManager().getDefaultDisplay();
|
|
||||||
Point point = new Point();
|
|
||||||
display.getSize(point);
|
|
||||||
Rect bounds = new Rect(point.x + LayoutUtils.dp2pix(requireContext(), 20),
|
|
||||||
point.y / 3 + LayoutUtils.dp2pix(requireContext(), 20),
|
|
||||||
point.x - LayoutUtils.dp2pix(requireContext(), 20),
|
|
||||||
point.y / 3 - LayoutUtils.dp2pix(requireContext(), 20));
|
|
||||||
|
|
||||||
TapTargetView.showFor(requireActivity(),
|
|
||||||
TapTarget.forBounds(bounds,
|
|
||||||
getString(R.string.guide_quick_search_title),
|
|
||||||
getString(R.string.guide_quick_search_text))
|
|
||||||
.transparentTarget(true),
|
|
||||||
new TapTargetView.Listener() {
|
|
||||||
@Override
|
|
||||||
public void onTargetDismissed(TapTargetView view, boolean userInitiated) {
|
|
||||||
super.onTargetClick(view);
|
|
||||||
Settings.putGuideQuickSearch(false);
|
|
||||||
openDrawer(Gravity.RIGHT);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onDestroyView() {
|
public void onDestroyView() {
|
||||||
super.onDestroyView();
|
super.onDestroyView();
|
||||||
|
|||||||
@@ -756,8 +756,8 @@
|
|||||||
<string name="pick_new_download_location">选择新路径</string>
|
<string name="pick_new_download_location">选择新路径</string>
|
||||||
<string name="dont_show_again">不再显示</string>
|
<string name="dont_show_again">不再显示</string>
|
||||||
<string name="open_settings">打开设置</string>
|
<string name="open_settings">打开设置</string>
|
||||||
<string name="app_link_not_verified_message">对于 Android 12 及更新的版本,您需要手动添加链接到已验证链接才能在 EhViewer 中打开 E-Hentai 链接。</string>
|
<string name="app_link_not_verified_message">对于您的设备,我们强烈建议您使用 1.8 版本。1.7 版本仅为 Android 11 及以下版本设计</string>
|
||||||
<string name="app_link_not_verified_title">应用链接未验证</string>
|
<string name="app_link_not_verified_title">升级 App 版本</string>
|
||||||
<string name="open_by_default">默认打开</string>
|
<string name="open_by_default">默认打开</string>
|
||||||
|
|
||||||
<string name="show_library_version">依赖库之版本</string>
|
<string name="show_library_version">依赖库之版本</string>
|
||||||
|
|||||||
@@ -820,8 +820,8 @@
|
|||||||
<string name="pick_new_download_location">Pick a new location</string>
|
<string name="pick_new_download_location">Pick a new location</string>
|
||||||
<string name="dont_show_again">Don\'t show again</string>
|
<string name="dont_show_again">Don\'t show again</string>
|
||||||
<string name="open_settings">Open settings</string>
|
<string name="open_settings">Open settings</string>
|
||||||
<string name="app_link_not_verified_message">For Android 12 and newer, you need to manually add link to verified links in order to open E-Hentai links in EhViewer.</string>
|
<string name="app_link_not_verified_message">For you device, We strongly recommend you to use version 1.8. version 1.7 is only made for Android 11 and below .</string>
|
||||||
<string name="app_link_not_verified_title">App links not verified</string>
|
<string name="app_link_not_verified_title">Update App Version</string>
|
||||||
<string name="open_by_default">Open by default</string>
|
<string name="open_by_default">Open by default</string>
|
||||||
|
|
||||||
<string name="show_library_version">Library Version</string>
|
<string name="show_library_version">Library Version</string>
|
||||||
|
|||||||
@@ -172,7 +172,6 @@ Java_com_hippo_UriArchiveAccessor_providePassword(JNIEnv *_, jobject thiz, jstri
|
|||||||
free(passwd);
|
free(passwd);
|
||||||
passwd = calloc(len, sizeof(char));
|
passwd = calloc(len, sizeof(char));
|
||||||
strcpy(passwd, (*env)->GetStringUTFChars(env, str, NULL));
|
strcpy(passwd, (*env)->GetStringUTFChars(env, str, NULL));
|
||||||
LOGI("%s%s", "Passwd is ", passwd);
|
|
||||||
archive_alloc();
|
archive_alloc();
|
||||||
while (archive_read_next_header(arc, &entry) == ARCHIVE_OK) {
|
while (archive_read_next_header(arc, &entry) == ARCHIVE_OK) {
|
||||||
if (!filename_is_playable_file(archive_entry_pathname(entry)))
|
if (!filename_is_playable_file(archive_entry_pathname(entry)))
|
||||||
|
|||||||
Reference in new issue
Block a user