Skip to content

Commit

Permalink
Optimize the category selection of the search dialog
Browse files Browse the repository at this point in the history
优化搜索弹窗category选择
  • Loading branch information
jiangtian616 committed Apr 24, 2024
1 parent 84d99b7 commit 3f09a9b
Show file tree
Hide file tree
Showing 4 changed files with 151 additions and 1 deletion.
2 changes: 2 additions & 0 deletions changelog/v7.5.3.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
- 支持为本地阅读设置预载图片数量
- 下载页支持显示分组下画廊数量
- Sad Panda异常支持直接跳转Wiki
- 优化搜索弹窗category选择
- 修复部分场景下下载图片错误的bug

------------------------------------------------------------------------------------------
Expand All @@ -10,4 +11,5 @@
- Support setting the number of preloaded images for local reading
- Supports displaying the number of galleries in download group
- Lead to Wiki when Sad Panda occurs
- Optimize the category selection of the search dialog
- Fix bug that cannot download images in some scenarios
13 changes: 13 additions & 0 deletions lib/src/model/search_config.dart
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,19 @@ class SearchConfig {
this.searchFavoriteCategoryIndex,
});

void disableAllCategories() {
includeDoujinshi = false;
includeManga = false;
includeArtistCG = false;
includeGameCg = false;
includeWestern = false;
includeNonH = false;
includeImageSet = false;
includeCosplay = false;
includeAsianPorn = false;
includeMisc = false;
}

/// search path
String toPath() {
switch (searchType) {
Expand Down
6 changes: 6 additions & 0 deletions lib/src/widget/eh_gallery_category_tag.dart
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@ class EHGalleryCategoryTag extends StatelessWidget {
final EdgeInsets padding;
final TextStyle textStyle;
final VoidCallback? onTap;
final VoidCallback? onLongPress;
final VoidCallback? onSecondaryTap;

const EHGalleryCategoryTag({
Key? key,
Expand All @@ -24,12 +26,16 @@ class EHGalleryCategoryTag extends StatelessWidget {
this.padding = const EdgeInsets.only(top: 3, bottom: 4, left: 6, right: 6),
this.textStyle = const TextStyle(height: 1, fontSize: 15, color: UIConfig.galleryCategoryTagTextColor),
this.onTap,
this.onLongPress,
this.onSecondaryTap,
}) : super(key: key);

@override
Widget build(BuildContext context) {
return GestureDetector(
onTap: onTap,
onLongPress: onLongPress,
onSecondaryTap: onSecondaryTap,
child: Container(
alignment: Alignment.center,
height: height,
Expand Down
131 changes: 130 additions & 1 deletion lib/src/widget/eh_search_config_dialog.dart
Original file line number Diff line number Diff line change
Expand Up @@ -323,11 +323,35 @@ class _EHSearchConfigDialogState extends State<EHSearchConfigDialog> {
category: 'Doujinshi',
enabled: searchConfig.includeDoujinshi,
onTap: () => setState(() => searchConfig.includeDoujinshi = !searchConfig.includeDoujinshi),
onLongPress: () {
setState(() {
searchConfig.disableAllCategories();
searchConfig.includeDoujinshi = true;
});
},
onSecondaryTap: () {
setState(() {
searchConfig.disableAllCategories();
searchConfig.includeDoujinshi = true;
});
},
),
_buildTag(
category: 'Manga',
enabled: searchConfig.includeManga,
onTap: () => setState(() => searchConfig.includeManga = !searchConfig.includeManga),
onLongPress: () {
setState(() {
searchConfig.disableAllCategories();
searchConfig.includeManga = true;
});
},
onSecondaryTap: () {
setState(() {
searchConfig.disableAllCategories();
searchConfig.includeManga = true;
});
},
),
],
),
Expand All @@ -338,11 +362,35 @@ class _EHSearchConfigDialogState extends State<EHSearchConfigDialog> {
category: 'Image Set',
enabled: searchConfig.includeImageSet,
onTap: () => setState(() => searchConfig.includeImageSet = !searchConfig.includeImageSet),
onLongPress: () {
setState(() {
searchConfig.disableAllCategories();
searchConfig.includeImageSet = true;
});
},
onSecondaryTap: () {
setState(() {
searchConfig.disableAllCategories();
searchConfig.includeImageSet = true;
});
},
),
_buildTag(
category: 'Game CG',
enabled: searchConfig.includeGameCg,
onTap: () => setState(() => searchConfig.includeGameCg = !searchConfig.includeGameCg),
onLongPress: () {
setState(() {
searchConfig.disableAllCategories();
searchConfig.includeGameCg = true;
});
},
onSecondaryTap: () {
setState(() {
searchConfig.disableAllCategories();
searchConfig.includeGameCg = true;
});
},
),
],
).marginOnly(top: 4),
Expand All @@ -353,11 +401,35 @@ class _EHSearchConfigDialogState extends State<EHSearchConfigDialog> {
category: 'Artist CG',
enabled: searchConfig.includeArtistCG,
onTap: () => setState(() => searchConfig.includeArtistCG = !searchConfig.includeArtistCG),
onLongPress: () {
setState(() {
searchConfig.disableAllCategories();
searchConfig.includeArtistCG = true;
});
},
onSecondaryTap: () {
setState(() {
searchConfig.disableAllCategories();
searchConfig.includeArtistCG = true;
});
},
),
_buildTag(
category: 'Cosplay',
enabled: searchConfig.includeCosplay,
onTap: () => setState(() => searchConfig.includeCosplay = !searchConfig.includeCosplay),
onLongPress: () {
setState(() {
searchConfig.disableAllCategories();
searchConfig.includeCosplay = true;
});
},
onSecondaryTap: () {
setState(() {
searchConfig.disableAllCategories();
searchConfig.includeCosplay = true;
});
},
),
],
).marginOnly(top: 4),
Expand All @@ -368,11 +440,35 @@ class _EHSearchConfigDialogState extends State<EHSearchConfigDialog> {
category: 'Non-H',
enabled: searchConfig.includeNonH,
onTap: () => setState(() => searchConfig.includeNonH = !searchConfig.includeNonH),
onLongPress: () {
setState(() {
searchConfig.disableAllCategories();
searchConfig.includeNonH = true;
});
},
onSecondaryTap: () {
setState(() {
searchConfig.disableAllCategories();
searchConfig.includeNonH = true;
});
},
),
_buildTag(
category: 'Asian Porn',
enabled: searchConfig.includeAsianPorn,
onTap: () => setState(() => searchConfig.includeAsianPorn = !searchConfig.includeAsianPorn),
onLongPress: () {
setState(() {
searchConfig.disableAllCategories();
searchConfig.includeAsianPorn = true;
});
},
onSecondaryTap: () {
setState(() {
searchConfig.disableAllCategories();
searchConfig.includeAsianPorn = true;
});
},
),
],
).marginOnly(top: 4),
Expand All @@ -383,11 +479,35 @@ class _EHSearchConfigDialogState extends State<EHSearchConfigDialog> {
category: 'Western',
enabled: searchConfig.includeWestern,
onTap: () => setState(() => searchConfig.includeWestern = !searchConfig.includeWestern),
onLongPress: () {
setState(() {
searchConfig.disableAllCategories();
searchConfig.includeWestern = true;
});
},
onSecondaryTap: () {
setState(() {
searchConfig.disableAllCategories();
searchConfig.includeWestern = true;
});
},
),
_buildTag(
category: 'Misc',
enabled: searchConfig.includeMisc,
onTap: () => setState(() => searchConfig.includeMisc = !searchConfig.includeMisc),
onLongPress: () {
setState(() {
searchConfig.disableAllCategories();
searchConfig.includeMisc = true;
});
},
onSecondaryTap: () {
setState(() {
searchConfig.disableAllCategories();
searchConfig.includeMisc = true;
});
},
),
],
).marginOnly(top: 4),
Expand Down Expand Up @@ -562,7 +682,14 @@ class _EHSearchConfigDialogState extends State<EHSearchConfigDialog> {
);
}

Widget _buildTag({required String category, required bool enabled, Color? color, VoidCallback? onTap}) {
Widget _buildTag({
required String category,
required bool enabled,
Color? color,
VoidCallback? onTap,
VoidCallback? onLongPress,
VoidCallback? onSecondaryTap,
}) {
return EHGalleryCategoryTag(
category: category,
width: 115,
Expand All @@ -571,6 +698,8 @@ class _EHSearchConfigDialogState extends State<EHSearchConfigDialog> {
color: color,
textStyle: const TextStyle(height: 1, fontSize: 16, color: UIConfig.galleryCategoryTagTextColor),
onTap: onTap,
onLongPress: onLongPress,
onSecondaryTap: onSecondaryTap,
);
}

Expand Down

0 comments on commit 3f09a9b

Please sign in to comment.