diff --git a/lib/common/widgets/image/image_view.dart b/lib/common/widgets/image/image_view.dart index 85dcaeb38..d490ce854 100644 --- a/lib/common/widgets/image/image_view.dart +++ b/lib/common/widgets/image/image_view.dart @@ -4,8 +4,7 @@ import 'package:PiliPlus/common/constants.dart'; import 'package:PiliPlus/common/widgets/badge.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/common/widgets/image/nine_grid_view.dart'; -import 'package:PiliPlus/common/widgets/interactiveviewer_gallery/interactiveviewer_gallery.dart' - show SourceModel, SourceType; +import 'package:PiliPlus/models/common/image_preview_type.dart'; import 'package:PiliPlus/utils/extension.dart'; import 'package:PiliPlus/utils/storage.dart'; import 'package:flutter/material.dart'; diff --git a/lib/common/widgets/interactiveviewer_gallery/interactiveviewer_gallery.dart b/lib/common/widgets/interactiveviewer_gallery/interactiveviewer_gallery.dart index 577ce6295..77edf8d51 100644 --- a/lib/common/widgets/interactiveviewer_gallery/interactiveviewer_gallery.dart +++ b/lib/common/widgets/interactiveviewer_gallery/interactiveviewer_gallery.dart @@ -3,6 +3,7 @@ import 'dart:io'; import 'package:PiliPlus/common/widgets/interactiveviewer_gallery/interactive_viewer.dart' as custom; import 'package:PiliPlus/common/widgets/interactiveviewer_gallery/interactive_viewer_boundary.dart'; +import 'package:PiliPlus/models/common/image_preview_type.dart'; import 'package:PiliPlus/utils/download.dart'; import 'package:PiliPlus/utils/extension.dart'; import 'package:PiliPlus/utils/storage.dart'; @@ -32,24 +33,6 @@ typedef IndexedFocusedWidgetBuilder = Widget Function( typedef IndexedTagStringBuilder = String Function(int index); -enum SourceType { fileImage, networkImage, livePhoto } - -class SourceModel { - final SourceType sourceType; - final String url; - final String? liveUrl; - final int? width; - final int? height; - - const SourceModel({ - this.sourceType = SourceType.networkImage, - required this.url, - this.liveUrl, - this.width, - this.height, - }); -} - class InteractiveviewerGallery extends StatefulWidget { const InteractiveviewerGallery({ super.key, diff --git a/lib/common/widgets/pendant_avatar.dart b/lib/common/widgets/pendant_avatar.dart index ce65dec9c..8836b19ff 100644 --- a/lib/common/widgets/pendant_avatar.dart +++ b/lib/common/widgets/pendant_avatar.dart @@ -1,4 +1,5 @@ import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; +import 'package:PiliPlus/models/common/avatar_badge_type.dart'; import 'package:PiliPlus/utils/extension.dart'; import 'package:PiliPlus/utils/storage.dart'; import 'package:PiliPlus/utils/utils.dart'; @@ -7,7 +8,7 @@ import 'package:flutter/material.dart'; import 'package:get/get.dart'; class PendantAvatar extends StatelessWidget { - final _BadgeType _badgeType; + final BadgeType _badgeType; final String? avatar; final double size; final double badgeSize; @@ -27,13 +28,13 @@ class PendantAvatar extends StatelessWidget { this.onTap, }) : _badgeType = officialType == null || officialType < 0 ? isVip == true - ? _BadgeType.vip - : _BadgeType.none + ? BadgeType.vip + : BadgeType.none : officialType == 0 - ? _BadgeType.person + ? BadgeType.person : officialType == 1 - ? _BadgeType.institution - : _BadgeType.none, + ? BadgeType.institution + : BadgeType.none, badgeSize = badgeSize ?? size / 3; static bool showDynDecorate = GStorage.showDynDecorate; @@ -98,7 +99,7 @@ class PendantAvatar extends StatelessWidget { ), ), ) - else if (_badgeType != _BadgeType.none) + else if (_badgeType != BadgeType.none) _buildBadge(colorScheme), ], ); @@ -132,7 +133,7 @@ class PendantAvatar extends StatelessWidget { Widget _buildBadge(ColorScheme colorScheme) { final child = switch (_badgeType) { - _BadgeType.vip => Image.asset( + BadgeType.vip => Image.asset( 'assets/images/big-vip.png', height: badgeSize, semanticLabel: _badgeType.desc, @@ -157,15 +158,3 @@ class PendantAvatar extends StatelessWidget { )); } } - -enum _BadgeType { none, vip, person, institution } - -extension _BadgeTypeExt on _BadgeType { - String get desc => const ['', '大会员', '认证个人', '认证机构'][index]; - Color get color => const [ - Colors.transparent, - Color(0xFFFF6699), - Color(0xFFFFCC00), - Colors.lightBlueAccent - ][index]; -} diff --git a/lib/common/widgets/video_popup_menu.dart b/lib/common/widgets/video_popup_menu.dart index aa4736a4f..ee4493c5f 100644 --- a/lib/common/widgets/video_popup_menu.dart +++ b/lib/common/widgets/video_popup_menu.dart @@ -1,5 +1,6 @@ import 'package:PiliPlus/http/user.dart'; import 'package:PiliPlus/http/video.dart'; +import 'package:PiliPlus/models/common/account_type.dart'; import 'package:PiliPlus/models/home/rcmd/result.dart'; import 'package:PiliPlus/models/model_video.dart'; import 'package:PiliPlus/models/space_archive/item.dart'; diff --git a/lib/http/member.dart b/lib/http/member.dart index 71762eb36..74de7e2f8 100644 --- a/lib/http/member.dart +++ b/lib/http/member.dart @@ -6,6 +6,7 @@ import 'package:PiliPlus/http/api.dart'; import 'package:PiliPlus/http/constants.dart'; import 'package:PiliPlus/http/init.dart'; import 'package:PiliPlus/http/loading_state.dart'; +import 'package:PiliPlus/models/common/member/contribute_type.dart'; import 'package:PiliPlus/models/dynamics/result.dart'; import 'package:PiliPlus/models/follow/result.dart'; import 'package:PiliPlus/models/member/archive.dart'; @@ -17,7 +18,6 @@ import 'package:PiliPlus/models/space/data.dart'; import 'package:PiliPlus/models/space_archive/data.dart'; import 'package:PiliPlus/models/space_article/data.dart'; import 'package:PiliPlus/models/space_fav/space_fav.dart'; -import 'package:PiliPlus/pages/member_contribute/view.dart' show ContributeType; import 'package:PiliPlus/utils/storage.dart'; import 'package:PiliPlus/utils/utils.dart'; import 'package:PiliPlus/utils/wbi_sign.dart'; diff --git a/lib/http/msg.dart b/lib/http/msg.dart index 43de1105b..f1b12779b 100644 --- a/lib/http/msg.dart +++ b/lib/http/msg.dart @@ -4,13 +4,13 @@ import 'package:PiliPlus/http/api.dart'; import 'package:PiliPlus/http/constants.dart'; import 'package:PiliPlus/http/init.dart'; import 'package:PiliPlus/http/loading_state.dart'; +import 'package:PiliPlus/models/common/reply/reply_option_type.dart'; import 'package:PiliPlus/models/msg/account.dart'; import 'package:PiliPlus/models/msg/msgfeed_at_me.dart'; import 'package:PiliPlus/models/msg/msgfeed_like_me.dart'; import 'package:PiliPlus/models/msg/msgfeed_reply_me.dart'; import 'package:PiliPlus/models/msg/msgfeed_sys_msg.dart'; import 'package:PiliPlus/models/msg/session.dart'; -import 'package:PiliPlus/pages/dynamics/view.dart' show ReplyOption; import 'package:PiliPlus/utils/storage.dart'; import 'package:PiliPlus/utils/wbi_sign.dart'; import 'package:dio/dio.dart'; @@ -123,7 +123,7 @@ class MsgHttp { dynamic rawText, List? pics, int? publishTime, - ReplyOption? replyOption, + ReplyOptionType? replyOption, int? privatePub, }) async { String csrf = Accounts.main.csrf; @@ -150,9 +150,9 @@ class MsgHttp { "option": { if (privatePub != null) 'private_pub': privatePub, if (publishTime != null) "timer_pub_time": publishTime, - if (replyOption == ReplyOption.close) + if (replyOption == ReplyOptionType.close) "close_comment": 1 - else if (replyOption == ReplyOption.choose) + else if (replyOption == ReplyOptionType.choose) "up_choose_comment": 1, }, "scene": rid != null diff --git a/lib/http/video.dart b/lib/http/video.dart index 3d70499c3..d9a1b52ac 100644 --- a/lib/http/video.dart +++ b/lib/http/video.dart @@ -7,7 +7,8 @@ import 'package:PiliPlus/http/init.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/http/login.dart'; import 'package:PiliPlus/models/bangumi/pgc_rank/pgc_rank_item_model.dart'; -import 'package:PiliPlus/models/common/reply_type.dart'; +import 'package:PiliPlus/models/common/account_type.dart'; +import 'package:PiliPlus/models/common/reply/reply_type.dart'; import 'package:PiliPlus/models/home/rcmd/result.dart'; import 'package:PiliPlus/models/member/article.dart'; import 'package:PiliPlus/models/model_hot_video_item.dart'; diff --git a/lib/main.dart b/lib/main.dart index d9c3bd2b4..e581245c4 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -3,7 +3,7 @@ import 'dart:io'; import 'package:PiliPlus/build_config.dart'; import 'package:PiliPlus/common/widgets/custom_toast.dart'; import 'package:PiliPlus/http/init.dart'; -import 'package:PiliPlus/models/common/color_type.dart'; +import 'package:PiliPlus/models/common/theme/theme_color_type.dart'; import 'package:PiliPlus/pages/main/view.dart'; import 'package:PiliPlus/pages/video/view.dart'; import 'package:PiliPlus/router/app_pages.dart'; diff --git a/lib/models/common/account_type.dart b/lib/models/common/account_type.dart new file mode 100644 index 000000000..1401fc9c2 --- /dev/null +++ b/lib/models/common/account_type.dart @@ -0,0 +1,10 @@ +enum AccountType { + main, + heartbeat, + recommend, + video, +} + +extension AccountTypeExt on AccountType { + String get title => const ['主账号', '记录观看', '推荐', '视频取流'][index]; +} diff --git a/lib/models/common/avatar_badge_type.dart b/lib/models/common/avatar_badge_type.dart new file mode 100644 index 000000000..56379c34f --- /dev/null +++ b/lib/models/common/avatar_badge_type.dart @@ -0,0 +1,13 @@ +import 'package:flutter/material.dart'; + +enum BadgeType { none, vip, person, institution } + +extension BadgeTypeExt on BadgeType { + String get desc => const ['', '大会员', '认证个人', '认证机构'][index]; + Color get color => const [ + Colors.transparent, + Color(0xFFFF6699), + Color(0xFFFFCC00), + Colors.lightBlueAccent + ][index]; +} diff --git a/lib/models/common/dynamic/dynamic_badge_mode.dart b/lib/models/common/dynamic/dynamic_badge_mode.dart new file mode 100644 index 000000000..f76a2b1e1 --- /dev/null +++ b/lib/models/common/dynamic/dynamic_badge_mode.dart @@ -0,0 +1,5 @@ +enum DynamicBadgeMode { hidden, point, number } + +extension DynamicBadgeModeExt on DynamicBadgeMode { + String get description => const ['隐藏', '红点', '数字'][index]; +} diff --git a/lib/models/common/dynamics_type.dart b/lib/models/common/dynamic/dynamics_type.dart similarity index 70% rename from lib/models/common/dynamics_type.dart rename to lib/models/common/dynamic/dynamics_type.dart index 4732c2700..76c5babe5 100644 --- a/lib/models/common/dynamics_type.dart +++ b/lib/models/common/dynamic/dynamics_type.dart @@ -1,4 +1,4 @@ -enum DynamicsType { +enum DynamicsTabType { all, video, pgc, @@ -6,7 +6,7 @@ enum DynamicsType { up, } -extension BusinessTypeExtension on DynamicsType { +extension DynamicsTabTypeExt on DynamicsTabType { String get values => const ['all', 'video', 'pgc', 'article', 'up'][index]; String get labels => const ['全部', '投稿', '番剧', '专栏', 'UP'][index]; } @@ -14,31 +14,31 @@ extension BusinessTypeExtension on DynamicsType { const List tabsConfig = [ { 'tag': 'all', - 'value': DynamicsType.all, + 'value': DynamicsTabType.all, 'label': '全部', 'enabled': true, }, { 'tag': 'video', - 'value': DynamicsType.video, + 'value': DynamicsTabType.video, 'label': '投稿', 'enabled': true, }, { 'tag': 'pgc', - 'value': DynamicsType.pgc, + 'value': DynamicsTabType.pgc, 'label': '番剧', 'enabled': true, }, { 'tag': 'article', - 'value': DynamicsType.article, + 'value': DynamicsTabType.article, 'label': '专栏', 'enabled': true, }, { 'tag': 'up', - 'value': DynamicsType.up, + 'value': DynamicsTabType.up, 'label': 'UP', 'enabled': true, }, diff --git a/lib/models/common/up_panel_position.dart b/lib/models/common/dynamic/up_panel_position.dart similarity index 78% rename from lib/models/common/up_panel_position.dart rename to lib/models/common/dynamic/up_panel_position.dart index f42cda38c..ebca72bbc 100644 --- a/lib/models/common/up_panel_position.dart +++ b/lib/models/common/dynamic/up_panel_position.dart @@ -5,6 +5,6 @@ enum UpPanelPosition { rightDrawer, } -extension UpPanelPositionDesc on UpPanelPosition { +extension UpPanelPositionExt on UpPanelPosition { String get labels => const ['左侧常驻', '右侧常驻', '左侧抽屉', '右侧抽屉'][index]; } diff --git a/lib/models/common/episode_panel_type.dart b/lib/models/common/episode_panel_type.dart new file mode 100644 index 000000000..42628a948 --- /dev/null +++ b/lib/models/common/episode_panel_type.dart @@ -0,0 +1,5 @@ +enum EpisodeType { part, season, bangumi } + +extension EpisodeTypeExt on EpisodeType { + String get title => const ['分P', '合集', '番剧'][index]; +} diff --git a/lib/models/common/fav_type.dart b/lib/models/common/fav_type.dart new file mode 100644 index 000000000..2c8c69148 --- /dev/null +++ b/lib/models/common/fav_type.dart @@ -0,0 +1,19 @@ +import 'package:PiliPlus/pages/fav/article/view.dart'; +import 'package:PiliPlus/pages/fav/note/view.dart'; +import 'package:PiliPlus/pages/fav/pgc/view.dart'; +import 'package:PiliPlus/pages/fav/video/view.dart'; +import 'package:flutter/material.dart'; + +enum FavTabType { video, bangumi, cinema, article, note } + +extension FavTabTypeExt on FavTabType { + String get title => const ['视频', '追番', '追剧', '专栏', '笔记'][index]; + + Widget get page => switch (this) { + FavTabType.video => const FavVideoPage(), + FavTabType.bangumi => const FavPgcPage(type: 1), + FavTabType.cinema => const FavPgcPage(type: 2), + FavTabType.article => const FavArticlePage(), + FavTabType.note => const FavNotePage(), + }; +} diff --git a/lib/models/common/follow_order_type.dart b/lib/models/common/follow_order_type.dart new file mode 100644 index 000000000..6184801da --- /dev/null +++ b/lib/models/common/follow_order_type.dart @@ -0,0 +1,6 @@ +enum FollowOrderType { def, attention } + +extension FollowOrderTypeExt on FollowOrderType { + String get type => const ['', 'attention'][index]; + String get title => const ['最近关注', '最常访问'][index]; +} diff --git a/lib/models/common/business_type.dart b/lib/models/common/history_business_type.dart similarity index 83% rename from lib/models/common/business_type.dart rename to lib/models/common/history_business_type.dart index 01740cf7b..4dd08d0e4 100644 --- a/lib/models/common/business_type.dart +++ b/lib/models/common/history_business_type.dart @@ -1,4 +1,4 @@ -enum BusinessType { +enum HistoryBusinessType { // 普通视频 archive, // 剧集(番剧 / 影视) @@ -13,7 +13,7 @@ enum BusinessType { showBadge } -extension BusinessTypeExtension on BusinessType { +extension HistoryBusinessTypeExt on HistoryBusinessType { String get type => const ['archive', 'pgc', 'live', 'article-list', 'article'][index]; // 隐藏时长 diff --git a/lib/models/common/tab_type.dart b/lib/models/common/home_tab_type.dart similarity index 82% rename from lib/models/common/tab_type.dart rename to lib/models/common/home_tab_type.dart index 2fe80835d..6066cd825 100644 --- a/lib/models/common/tab_type.dart +++ b/lib/models/common/home_tab_type.dart @@ -12,9 +12,9 @@ import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:material_design_icons_flutter/material_design_icons_flutter.dart'; -enum TabType { live, rcmd, hot, rank, bangumi, cinema } +enum HomeTabType { live, rcmd, hot, rank, bangumi, cinema } -extension TabTypeDesc on TabType { +extension HomeTabTypeExt on HomeTabType { String get description => const ['直播', '推荐', '热门', '分区', '番剧', '影视'][index]; } @@ -25,7 +25,7 @@ List get tabsConfig => [ size: 15, ), 'label': '直播', - 'type': TabType.live, + 'type': HomeTabType.live, 'ctr': Get.find, 'page': const LivePage(), }, @@ -35,7 +35,7 @@ List get tabsConfig => [ size: 15, ), 'label': '推荐', - 'type': TabType.rcmd, + 'type': HomeTabType.rcmd, 'ctr': Get.find, 'page': const RcmdPage(), }, @@ -45,7 +45,7 @@ List get tabsConfig => [ size: 15, ), 'label': '热门', - 'type': TabType.hot, + 'type': HomeTabType.hot, 'ctr': Get.find, 'page': const HotPage(), }, @@ -55,7 +55,7 @@ List get tabsConfig => [ size: 15, ), 'label': '分区', - 'type': TabType.rank, + 'type': HomeTabType.rank, 'ctr': Get.find, 'page': const RankPage(), }, @@ -65,9 +65,9 @@ List get tabsConfig => [ size: 15, ), 'label': '番剧', - 'type': TabType.bangumi, + 'type': HomeTabType.bangumi, 'ctr': Get.find, - 'page': const BangumiPage(tabType: TabType.bangumi), + 'page': const BangumiPage(tabType: HomeTabType.bangumi), }, { 'icon': Icon( @@ -75,8 +75,8 @@ List get tabsConfig => [ size: 15, ), 'label': '影视', - 'type': TabType.cinema, + 'type': HomeTabType.cinema, 'ctr': Get.find, - 'page': const BangumiPage(tabType: TabType.cinema), + 'page': const BangumiPage(tabType: HomeTabType.cinema), }, ]; diff --git a/lib/models/common/image_preview_type.dart b/lib/models/common/image_preview_type.dart new file mode 100644 index 000000000..45e62a897 --- /dev/null +++ b/lib/models/common/image_preview_type.dart @@ -0,0 +1,17 @@ +enum SourceType { fileImage, networkImage, livePhoto } + +class SourceModel { + final SourceType sourceType; + final String url; + final String? liveUrl; + final int? width; + final int? height; + + const SourceModel({ + this.sourceType = SourceType.networkImage, + required this.url, + this.liveUrl, + this.width, + this.height, + }); +} diff --git a/lib/models/common/later_view_type.dart b/lib/models/common/later_view_type.dart new file mode 100644 index 000000000..3e9c96c5e --- /dev/null +++ b/lib/models/common/later_view_type.dart @@ -0,0 +1,12 @@ +import 'package:PiliPlus/pages/later/child_view.dart'; +import 'package:flutter/material.dart'; + +enum LaterViewType { all, toView, unfinished, viewed } + +extension LaterViewTypeExt on LaterViewType { + int get type => index; + + String get title => const ['全部', '未看', '未看完', '已看完'][index]; + + Widget get page => LaterViewChildPage(laterViewType: this); +} diff --git a/lib/models/common/member/contribute_type.dart b/lib/models/common/member/contribute_type.dart new file mode 100644 index 000000000..4023ee1ad --- /dev/null +++ b/lib/models/common/member/contribute_type.dart @@ -0,0 +1 @@ +enum ContributeType { video, charging, season, series, bangumi } diff --git a/lib/models/common/member/profile_type.dart b/lib/models/common/member/profile_type.dart new file mode 100644 index 000000000..25f97fd3f --- /dev/null +++ b/lib/models/common/member/profile_type.dart @@ -0,0 +1 @@ +enum ProfileType { uname, sign, sex, birthday } diff --git a/lib/models/common/member/tab_type.dart b/lib/models/common/member/tab_type.dart new file mode 100644 index 000000000..1f1e3e08d --- /dev/null +++ b/lib/models/common/member/tab_type.dart @@ -0,0 +1,5 @@ +enum MemberTabType { none, home, dynamic, contribute, favorite, bangumi } + +extension MemberTabTypeExt on MemberTabType { + String get title => const ['默认', '主页', '动态', '投稿', '收藏', '番剧'][index]; +} diff --git a/lib/models/common/msg/msg_type.dart b/lib/models/common/msg/msg_type.dart new file mode 100644 index 000000000..f26389b4f --- /dev/null +++ b/lib/models/common/msg/msg_type.dart @@ -0,0 +1,27 @@ +enum MsgType { + invalid(value: 0, label: "空空的~"), + text(value: 1, label: "文本消息"), + pic(value: 2, label: "图片消息"), + audio(value: 3, label: "语音消息"), + share(value: 4, label: "分享消息"), + revoke(value: 5, label: "撤回消息"), + customFace(value: 6, label: "自定义表情"), + shareV2(value: 7, label: "分享v2消息"), + sysCancel(value: 8, label: "系统撤销"), + miniProgram(value: 9, label: "小程序"), + notifyMsg(value: 10, label: "业务通知"), + archiveCard(value: 11, label: "投稿卡片"), + articleCard(value: 12, label: "专栏卡片"), + picCard(value: 13, label: "图片卡片"), + commonShare(value: 14, label: "异形卡片"), + autoReplyPush(value: 16, label: "自动回复推送"), + notifyText(value: 18, label: "文本提示"); + + final int value; + final String label; + const MsgType({required this.value, required this.label}); + static MsgType parse(int value) { + return MsgType.values + .firstWhere((e) => e.value == value, orElse: () => MsgType.invalid); + } +} diff --git a/lib/models/common/dynamic_badge_mode.dart b/lib/models/common/msg/msg_unread_type.dart similarity index 53% rename from lib/models/common/dynamic_badge_mode.dart rename to lib/models/common/msg/msg_unread_type.dart index 80d83d98b..2e9e0d337 100644 --- a/lib/models/common/dynamic_badge_mode.dart +++ b/lib/models/common/msg/msg_unread_type.dart @@ -1,9 +1,3 @@ -enum DynamicBadgeMode { hidden, point, number } - -extension DynamicBadgeModeDesc on DynamicBadgeMode { - String get description => const ['隐藏', '红点', '数字'][index]; -} - enum MsgUnReadType { pm, reply, at, like, sysMsg } extension MsgUnReadTypeExt on MsgUnReadType { diff --git a/lib/models/common/publish_panel_type.dart b/lib/models/common/publish_panel_type.dart new file mode 100644 index 000000000..066b4d15b --- /dev/null +++ b/lib/models/common/publish_panel_type.dart @@ -0,0 +1 @@ +enum PanelType { none, keyboard, emoji } diff --git a/lib/models/common/reply/reply_option_type.dart b/lib/models/common/reply/reply_option_type.dart new file mode 100644 index 000000000..1f8694fda --- /dev/null +++ b/lib/models/common/reply/reply_option_type.dart @@ -0,0 +1,14 @@ +import 'package:flutter/material.dart'; +import 'package:material_design_icons_flutter/material_design_icons_flutter.dart'; + +enum ReplyOptionType { allow, close, choose } + +extension ReplyOptionTypeExt on ReplyOptionType { + String get title => const ['允许评论', '关闭评论', '精选评论'][index]; + + IconData get iconData => switch (this) { + ReplyOptionType.allow => MdiIcons.commentTextOutline, + ReplyOptionType.close => MdiIcons.commentOffOutline, + ReplyOptionType.choose => MdiIcons.commentProcessingOutline + }; +} diff --git a/lib/models/common/reply_sort_type.dart b/lib/models/common/reply/reply_sort_type.dart similarity index 75% rename from lib/models/common/reply_sort_type.dart rename to lib/models/common/reply/reply_sort_type.dart index 4bb203338..86ce382d2 100644 --- a/lib/models/common/reply_sort_type.dart +++ b/lib/models/common/reply/reply_sort_type.dart @@ -1,6 +1,6 @@ enum ReplySortType { time, like } -extension ReplySortTypeExtension on ReplySortType { +extension ReplySortTypeExt on ReplySortType { String get title => const ['最新评论', '最热评论'][index]; String get label => const ['最新', '最热'][index]; } diff --git a/lib/models/common/reply_type.dart b/lib/models/common/reply/reply_type.dart similarity index 100% rename from lib/models/common/reply_type.dart rename to lib/models/common/reply/reply_type.dart diff --git a/lib/models/common/settings_type.dart b/lib/models/common/settings_type.dart new file mode 100644 index 000000000..5a7e30538 --- /dev/null +++ b/lib/models/common/settings_type.dart @@ -0,0 +1 @@ +enum SettingsType { normal, sw1tch, divider } diff --git a/lib/models/common/sponsor_block/segment_model.dart b/lib/models/common/sponsor_block/segment_model.dart index 6155b0c12..ec99ce547 100644 --- a/lib/models/common/sponsor_block/segment_model.dart +++ b/lib/models/common/sponsor_block/segment_model.dart @@ -1,17 +1,17 @@ +// ignore_for_file: non_constant_identifier_names + import 'package:PiliPlus/common/widgets/pair.dart'; import 'package:PiliPlus/models/common/sponsor_block/segment_type.dart'; import 'package:PiliPlus/models/common/sponsor_block/skip_type.dart'; class SegmentModel { SegmentModel({ - // ignore: non_constant_identifier_names required this.UUID, required this.segmentType, required this.segment, required this.skipType, this.hasSkipped, }); - // ignore: non_constant_identifier_names String UUID; SegmentType segmentType; Pair segment; diff --git a/lib/models/common/sponsor_block/segment_type.dart b/lib/models/common/sponsor_block/segment_type.dart index 11fb0e0a9..958fe8d47 100644 --- a/lib/models/common/sponsor_block/segment_type.dart +++ b/lib/models/common/sponsor_block/segment_type.dart @@ -1,3 +1,5 @@ +// ignore_for_file: constant_identifier_names + import 'dart:ui'; import 'package:PiliPlus/models/common/sponsor_block/action_type.dart'; @@ -9,12 +11,9 @@ enum SegmentType { intro, outro, preview, - // ignore: constant_identifier_names music_offtopic, - // ignore: constant_identifier_names poi_highlight, filler, - // ignore: constant_identifier_names exclusive_access } diff --git a/lib/models/common/color_type.dart b/lib/models/common/theme/theme_color_type.dart similarity index 100% rename from lib/models/common/color_type.dart rename to lib/models/common/theme/theme_color_type.dart diff --git a/lib/models/common/theme_type.dart b/lib/models/common/theme/theme_type.dart similarity index 100% rename from lib/models/common/theme_type.dart rename to lib/models/common/theme/theme_type.dart diff --git a/lib/models/video/play/CDN.dart b/lib/models/common/video/CDN.dart similarity index 98% rename from lib/models/video/play/CDN.dart rename to lib/models/common/video/CDN.dart index 7a979337a..8b255279d 100644 --- a/lib/models/video/play/CDN.dart +++ b/lib/models/common/video/CDN.dart @@ -1,5 +1,8 @@ +// ignore_for_file: constant_identifier_names + //https://github.com/yujincheng08/BiliRoaming/blob/master/app/src/main/res/values/strings_raw.xml //https://github.com/yujincheng08/BiliRoaming/blob/master/app/src/main/res/values/arrays.xml + enum CDNService { baseUrl, backupUrl, diff --git a/lib/models/common/video/audio_quality.dart b/lib/models/common/video/audio_quality.dart new file mode 100644 index 000000000..43b733cb0 --- /dev/null +++ b/lib/models/common/video/audio_quality.dart @@ -0,0 +1,30 @@ +// ignore_for_file: constant_identifier_names + +enum AudioQuality { k64, k132, k192, dolby, hiRes } + +extension AudioQualityExt on AudioQuality { + static const List _codeList = [ + 30216, + 30232, + 30280, + 30250, + 30251, + ]; + int get code => _codeList[index]; + + static AudioQuality? fromCode(int code) { + final index = _codeList.indexOf(code); + if (index != -1) { + return AudioQuality.values[index]; + } + return null; + } + + String get description => const [ + '64K', + '132K', + '192K', + '杜比全景声', + 'Hi-Res无损', + ][index]; +} diff --git a/lib/models/live/quality.dart b/lib/models/common/video/live_quality.dart similarity index 93% rename from lib/models/live/quality.dart rename to lib/models/common/video/live_quality.dart index 2ea3e4343..d0fb008d4 100644 --- a/lib/models/live/quality.dart +++ b/lib/models/common/video/live_quality.dart @@ -8,7 +8,7 @@ enum LiveQuality { flunt, } -extension LiveQualityCode on LiveQuality { +extension LiveQualityExt on LiveQuality { static const List _codeList = [ 30000, 20000, diff --git a/lib/models/common/video/subtitle_pref_type.dart b/lib/models/common/video/subtitle_pref_type.dart new file mode 100644 index 000000000..5839c73ef --- /dev/null +++ b/lib/models/common/video/subtitle_pref_type.dart @@ -0,0 +1,21 @@ +enum SubtitlePrefType { off, on, withoutAi, auto } + +extension SubtitlePrefTypeExt on SubtitlePrefType { + String get description => const [ + '默认不显示字幕', + '优先选择非自动生成(ai)字幕', + '跳过自动生成(ai)字幕,选择第一个可用字幕', + '静音时等同第二项,非静音时等同第三项' + ][index]; + + static const List _codeList = ['off', 'on', 'withoutAi', 'auto']; + String get code => _codeList[index]; + + static SubtitlePrefType? fromCode(String code) { + final index = _codeList.indexOf(code); + if (index != -1) { + return SubtitlePrefType.values[index]; + } + return null; + } +} diff --git a/lib/models/common/video/video_decode_type.dart b/lib/models/common/video/video_decode_type.dart new file mode 100644 index 000000000..904b0928d --- /dev/null +++ b/lib/models/common/video/video_decode_type.dart @@ -0,0 +1,34 @@ +// ignore_for_file: constant_identifier_names + +enum VideoDecodeFormatType { + DVH1, + AV1, + HEVC, + AVC, +} + +extension VideoDecodeFormatTypeExt on VideoDecodeFormatType { + String get description => const ['DVH1', 'AV1', 'HEVC', 'AVC'][index]; + + static const List _codeList = ['dvh1', 'av01', 'hev1', 'avc1']; + String get code => _codeList[index]; + + static VideoDecodeFormatType? fromCode(String code) { + final index = _codeList.indexOf(code); + if (index != -1) { + return VideoDecodeFormatType.values[index]; + } + return null; + } + + static VideoDecodeFormatType? fromString(String val) { + var result = VideoDecodeFormatType.values.first; + for (var i in _codeList) { + if (val.startsWith(i)) { + result = VideoDecodeFormatType.values[_codeList.indexOf(i)]; + break; + } + } + return result; + } +} diff --git a/lib/models/common/video/video_quality.dart b/lib/models/common/video/video_quality.dart new file mode 100644 index 000000000..1358d90b7 --- /dev/null +++ b/lib/models/common/video/video_quality.dart @@ -0,0 +1,55 @@ +enum VideoQuality { + speed240, + fluent360, + clear480, + high720, + high72060, + high1080, + high1080plus, + high108060, + super4K, + hdr, + dolbyVision, + super8k +} + +extension VideoQualityExt on VideoQuality { + static const List _codeList = [ + 6, + 16, + 32, + 64, + 74, + 80, + 112, + 116, + 120, + 125, + 126, + 127, + ]; + int get code => _codeList[index]; + + static VideoQuality? fromCode(int code) { + final index = _codeList.indexOf(code); + if (index != -1) { + return VideoQuality.values[index]; + } + return null; + } + + String get description => const [ + '240P 极速', + '360P 流畅', + '480P 清晰', + '720P 高清', + '720P60 高帧率', + '1080P 高清', + '1080P+ 高码率', + '1080P60 高帧率', + '4K 超清', + 'HDR 真彩色', + '杜比视界', + '8K 超高清' + ][index]; +} diff --git a/lib/models/common/webview_menu_type.dart b/lib/models/common/webview_menu_type.dart new file mode 100644 index 000000000..026009420 --- /dev/null +++ b/lib/models/common/webview_menu_type.dart @@ -0,0 +1,19 @@ +enum WebviewMenuItem { + refresh, + copy, + openInBrowser, + clearCache, + resetCookie, + goBack, +} + +extension WebviewMenuItemExt on WebviewMenuItem { + String get title => const [ + '刷新', + '复制链接', + '浏览器中打开', + '清除缓存', + '重新设置Cookie', + '返回', + ][index]; +} diff --git a/lib/models/video/play/quality.dart b/lib/models/video/play/quality.dart deleted file mode 100644 index cb1c7c21b..000000000 --- a/lib/models/video/play/quality.dart +++ /dev/null @@ -1,128 +0,0 @@ -// ignore_for_file: constant_identifier_names - -enum VideoQuality { - speed240, - fluent360, - clear480, - high720, - high72060, - high1080, - high1080plus, - high108060, - super4K, - hdr, - dolbyVision, - super8k -} - -extension VideoQualityCode on VideoQuality { - static const List _codeList = [ - 6, - 16, - 32, - 64, - 74, - 80, - 112, - 116, - 120, - 125, - 126, - 127, - ]; - int get code => _codeList[index]; - - static VideoQuality? fromCode(int code) { - final index = _codeList.indexOf(code); - if (index != -1) { - return VideoQuality.values[index]; - } - return null; - } -} - -extension VideoQualityDesc on VideoQuality { - static const List _descList = [ - '240P 极速', - '360P 流畅', - '480P 清晰', - '720P 高清', - '720P60 高帧率', - '1080P 高清', - '1080P+ 高码率', - '1080P60 高帧率', - '4K 超清', - 'HDR 真彩色', - '杜比视界', - '8K 超高清' - ]; - String get description => _descList[index]; -} - -enum AudioQuality { k64, k132, k192, dolby, hiRes } - -extension AudioQualityCode on AudioQuality { - static const List _codeList = [ - 30216, - 30232, - 30280, - 30250, - 30251, - ]; - int get code => _codeList[index]; - - static AudioQuality? fromCode(int code) { - final index = _codeList.indexOf(code); - if (index != -1) { - return AudioQuality.values[index]; - } - return null; - } -} - -extension AudioQualityDesc on AudioQuality { - static const List _descList = [ - '64K', - '132K', - '192K', - '杜比全景声', - 'Hi-Res无损', - ]; - String get description => _descList[index]; -} - -enum VideoDecodeFormats { - DVH1, - AV1, - HEVC, - AVC, -} - -extension VideoDecodeFormatsDesc on VideoDecodeFormats { - static const List _descList = ['DVH1', 'AV1', 'HEVC', 'AVC']; - String get description => _descList[index]; -} - -extension VideoDecodeFormatsCode on VideoDecodeFormats { - static const List _codeList = ['dvh1', 'av01', 'hev1', 'avc1']; - String get code => _codeList[index]; - - static VideoDecodeFormats? fromCode(String code) { - final index = _codeList.indexOf(code); - if (index != -1) { - return VideoDecodeFormats.values[index]; - } - return null; - } - - static VideoDecodeFormats? fromString(String val) { - var result = VideoDecodeFormats.values.first; - for (var i in _codeList) { - if (val.startsWith(i)) { - result = VideoDecodeFormats.values[_codeList.indexOf(i)]; - break; - } - } - return result; - } -} diff --git a/lib/models/video/play/subtitle.dart b/lib/models/video/play/subtitle.dart deleted file mode 100644 index 304f54e2c..000000000 --- a/lib/models/video/play/subtitle.dart +++ /dev/null @@ -1,24 +0,0 @@ -enum SubtitlePreference { off, on, withoutAi, auto } - -extension SubtitlePreferenceDesc on SubtitlePreference { - static const List _descList = [ - '默认不显示字幕', - '优先选择非自动生成(ai)字幕', - '跳过自动生成(ai)字幕,选择第一个可用字幕', - '静音时等同第二项,非静音时等同第三项' - ]; - String get description => _descList[index]; -} - -extension SubtitlePreferenceCode on SubtitlePreference { - static const List _codeList = ['off', 'on', 'withoutAi', 'auto']; - String get code => _codeList[index]; - - static SubtitlePreference? fromCode(String code) { - final index = _codeList.indexOf(code); - if (index != -1) { - return SubtitlePreference.values[index]; - } - return null; - } -} diff --git a/lib/models/video/play/url.dart b/lib/models/video/play/url.dart index 268e709b3..9e040d334 100644 --- a/lib/models/video/play/url.dart +++ b/lib/models/video/play/url.dart @@ -1,4 +1,5 @@ -import 'package:PiliPlus/models/video/play/quality.dart'; +import 'package:PiliPlus/models/common/video/audio_quality.dart'; +import 'package:PiliPlus/models/common/video/video_quality.dart'; class PlayUrlModel { PlayUrlModel({ diff --git a/lib/pages/about/view.dart b/lib/pages/about/view.dart index e5d7e5eeb..e3df66cf0 100644 --- a/lib/pages/about/view.dart +++ b/lib/pages/about/view.dart @@ -3,6 +3,7 @@ import 'dart:io'; import 'package:PiliPlus/build_config.dart'; import 'package:PiliPlus/common/widgets/dialog/dialog.dart'; +import 'package:PiliPlus/models/common/account_type.dart'; import 'package:PiliPlus/pages/mine/controller.dart'; import 'package:PiliPlus/services/loggeer.dart'; import 'package:PiliPlus/utils/accounts/account.dart'; diff --git a/lib/pages/article/view.dart b/lib/pages/article/view.dart index 54fbc407b..72b1a34d5 100644 --- a/lib/pages/article/view.dart +++ b/lib/pages/article/view.dart @@ -7,8 +7,8 @@ import 'package:PiliPlus/common/widgets/refresh_indicator.dart'; import 'package:PiliPlus/grpc/bilibili/main/community/reply/v1.pb.dart' show ReplyInfo; import 'package:PiliPlus/http/loading_state.dart'; -import 'package:PiliPlus/models/common/reply_sort_type.dart'; -import 'package:PiliPlus/models/common/reply_type.dart'; +import 'package:PiliPlus/models/common/reply/reply_sort_type.dart'; +import 'package:PiliPlus/models/common/reply/reply_type.dart'; import 'package:PiliPlus/models/dynamics/result.dart' show DynamicStat; import 'package:PiliPlus/pages/article/controller.dart'; import 'package:PiliPlus/pages/article/widgets/html_render.dart'; diff --git a/lib/pages/article/widgets/html_render.dart b/lib/pages/article/widgets/html_render.dart index dadb18b30..6db241e74 100644 --- a/lib/pages/article/widgets/html_render.dart +++ b/lib/pages/article/widgets/html_render.dart @@ -1,6 +1,5 @@ -import 'package:PiliPlus/common/widgets/interactiveviewer_gallery/interactiveviewer_gallery.dart' - show SourceModel; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; +import 'package:PiliPlus/models/common/image_preview_type.dart'; import 'package:PiliPlus/utils/extension.dart'; import 'package:PiliPlus/utils/utils.dart'; import 'package:cached_network_image/cached_network_image.dart'; diff --git a/lib/pages/article/widgets/opus_content.dart b/lib/pages/article/widgets/opus_content.dart index a774440ae..235720f1f 100644 --- a/lib/pages/article/widgets/opus_content.dart +++ b/lib/pages/article/widgets/opus_content.dart @@ -1,13 +1,12 @@ import 'dart:math'; import 'package:PiliPlus/common/constants.dart'; -import 'package:PiliPlus/common/widgets/interactiveviewer_gallery/interactiveviewer_gallery.dart' - show SourceModel; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; -import 'package:PiliPlus/pages/dynamics/widgets/vote.dart'; +import 'package:PiliPlus/models/common/image_preview_type.dart'; import 'package:PiliPlus/models/dynamics/article_content_model.dart' show ArticleContentModel, Style, Word; import 'package:PiliPlus/models/dynamics/result.dart'; +import 'package:PiliPlus/pages/dynamics/widgets/vote.dart'; import 'package:PiliPlus/utils/app_scheme.dart'; import 'package:PiliPlus/utils/extension.dart'; import 'package:PiliPlus/utils/utils.dart'; diff --git a/lib/pages/bangumi/controller.dart b/lib/pages/bangumi/controller.dart index d5e785460..6b24d027f 100644 --- a/lib/pages/bangumi/controller.dart +++ b/lib/pages/bangumi/controller.dart @@ -2,7 +2,7 @@ import 'package:PiliPlus/http/bangumi.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/models/bangumi/list.dart'; import 'package:PiliPlus/models/bangumi/pgc_timeline/result.dart'; -import 'package:PiliPlus/models/common/tab_type.dart'; +import 'package:PiliPlus/models/common/home_tab_type.dart'; import 'package:PiliPlus/pages/common/common_list_controller.dart'; import 'package:PiliPlus/utils/extension.dart'; import 'package:PiliPlus/utils/storage.dart'; @@ -12,12 +12,12 @@ import 'package:get/get.dart'; class BangumiController extends CommonListController< List?, BangumiListItemModel> { BangumiController({required this.tabType}); - final TabType tabType; + final HomeTabType tabType; int? mid; late final RxBool isLogin; late final showPgcTimeline = - tabType == TabType.bangumi && GStorage.showPgcTimeline; + tabType == HomeTabType.bangumi && GStorage.showPgcTimeline; @override void onInit() { @@ -74,7 +74,7 @@ class BangumiController extends CommonListController< followLoading = true; dynamic res = await BangumiHttp.bangumiFollowList( mid: mid, - type: tabType == TabType.bangumi ? 1 : 2, + type: tabType == HomeTabType.bangumi ? 1 : 2, pn: followPage, ); @@ -119,7 +119,7 @@ class BangumiController extends CommonListController< Future?>> customGetData() => BangumiHttp.bangumiList( page: currentPage, - indexType: tabType == TabType.cinema ? 102 : null, // TODO: sort + indexType: tabType == HomeTabType.cinema ? 102 : null, // TODO: sort ); @override diff --git a/lib/pages/bangumi/view.dart b/lib/pages/bangumi/view.dart index 63644f07d..e3385404d 100644 --- a/lib/pages/bangumi/view.dart +++ b/lib/pages/bangumi/view.dart @@ -8,7 +8,7 @@ import 'package:PiliPlus/common/widgets/scroll_physics.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/models/bangumi/list.dart'; import 'package:PiliPlus/models/bangumi/pgc_timeline/result.dart'; -import 'package:PiliPlus/models/common/tab_type.dart'; +import 'package:PiliPlus/models/common/home_tab_type.dart'; import 'package:PiliPlus/pages/bangumi/controller.dart'; import 'package:PiliPlus/pages/bangumi/widgets/bangumi_card_v.dart'; import 'package:PiliPlus/pages/bangumi/widgets/bangumi_card_v_timeline.dart'; @@ -25,7 +25,7 @@ class BangumiPage extends CommonPage { required this.tabType, }); - final TabType tabType; + final HomeTabType tabType; @override State createState() => _BangumiPageState(); @@ -225,7 +225,7 @@ class _BangumiPageState extends CommonPageState GestureDetector( behavior: HitTestBehavior.opaque, onTap: () { - if (widget.tabType == TabType.bangumi) { + if (widget.tabType == HomeTabType.bangumi) { Get.to(const PgcIndexPage()); } else { List titles = const [ @@ -353,7 +353,7 @@ class _BangumiPageState extends CommonPageState children: [ Obx( () => Text( - '最近${widget.tabType == TabType.bangumi ? '追番' : '追剧'}${controller.followCount.value == -1 ? '' : ' ${controller.followCount.value}'}', + '最近${widget.tabType == HomeTabType.bangumi ? '追番' : '追剧'}${controller.followCount.value == -1 ? '' : ' ${controller.followCount.value}'}', style: theme.textTheme.titleMedium, ), ), @@ -381,7 +381,7 @@ class _BangumiPageState extends CommonPageState Get.toNamed( '/fav', arguments: - widget.tabType == TabType.bangumi ? 1 : 2, + widget.tabType == HomeTabType.bangumi ? 1 : 2, ); }, child: Padding( @@ -446,7 +446,7 @@ class _BangumiPageState extends CommonPageState ) : Center( child: Text( - '还没有${widget.tabType == TabType.bangumi ? '追番' : '追剧'}')), + '还没有${widget.tabType == HomeTabType.bangumi ? '追番' : '追剧'}')), Error() => Container( padding: const EdgeInsets.symmetric(horizontal: 16), alignment: Alignment.center, diff --git a/lib/pages/common/common_publish_page.dart b/lib/pages/common/common_publish_page.dart index 6577ceb11..4f03c2eab 100644 --- a/lib/pages/common/common_publish_page.dart +++ b/lib/pages/common/common_publish_page.dart @@ -4,9 +4,9 @@ import 'dart:math'; import 'package:PiliPlus/common/constants.dart'; import 'package:PiliPlus/common/widgets/button/icon_button.dart'; -import 'package:PiliPlus/common/widgets/interactiveviewer_gallery/interactiveviewer_gallery.dart' - show SourceModel, SourceType; import 'package:PiliPlus/http/msg.dart'; +import 'package:PiliPlus/models/common/image_preview_type.dart'; +import 'package:PiliPlus/models/common/publish_panel_type.dart'; import 'package:PiliPlus/models/live/live_emoticons/emoticon.dart'; import 'package:PiliPlus/models/video/reply/emote.dart'; import 'package:PiliPlus/utils/extension.dart'; @@ -20,8 +20,6 @@ import 'package:get/get.dart'; import 'package:image_cropper/image_cropper.dart'; import 'package:image_picker/image_picker.dart'; -enum PanelType { none, keyboard, emoji } - abstract class CommonPublishPage extends StatefulWidget { const CommonPublishPage({ super.key, diff --git a/lib/pages/common/reply_controller.dart b/lib/pages/common/reply_controller.dart index 8ac7f4aaf..f31420c31 100644 --- a/lib/pages/common/reply_controller.dart +++ b/lib/pages/common/reply_controller.dart @@ -6,8 +6,8 @@ import 'package:PiliPlus/grpc/bilibili/main/community/reply/v1.pb.dart' import 'package:PiliPlus/grpc/bilibili/pagination.pb.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/http/reply.dart'; -import 'package:PiliPlus/models/common/reply_sort_type.dart'; -import 'package:PiliPlus/models/common/reply_type.dart'; +import 'package:PiliPlus/models/common/reply/reply_sort_type.dart'; +import 'package:PiliPlus/models/common/reply/reply_type.dart'; import 'package:PiliPlus/models/video/reply/data.dart'; import 'package:PiliPlus/pages/common/common_list_controller.dart'; import 'package:PiliPlus/pages/video/reply_new/view.dart'; diff --git a/lib/pages/dynamics/controller.dart b/lib/pages/dynamics/controller.dart index 758a4c454..c7dd8ac61 100644 --- a/lib/pages/dynamics/controller.dart +++ b/lib/pages/dynamics/controller.dart @@ -2,7 +2,7 @@ import 'dart:async'; import 'package:PiliPlus/http/dynamics.dart'; import 'package:PiliPlus/http/follow.dart'; -import 'package:PiliPlus/models/common/dynamics_type.dart'; +import 'package:PiliPlus/models/common/dynamic/dynamics_type.dart'; import 'package:PiliPlus/models/dynamics/up.dart'; import 'package:PiliPlus/models/follow/result.dart'; import 'package:PiliPlus/pages/common/common_controller.dart'; diff --git a/lib/pages/dynamics/view.dart b/lib/pages/dynamics/view.dart index 8718bcd27..dbb02d8c9 100644 --- a/lib/pages/dynamics/view.dart +++ b/lib/pages/dynamics/view.dart @@ -1,6 +1,6 @@ import 'package:PiliPlus/common/widgets/scroll_physics.dart'; -import 'package:PiliPlus/models/common/dynamics_type.dart'; -import 'package:PiliPlus/models/common/up_panel_position.dart'; +import 'package:PiliPlus/models/common/dynamic/dynamics_type.dart'; +import 'package:PiliPlus/models/common/dynamic/up_panel_position.dart'; import 'package:PiliPlus/pages/dynamics/controller.dart'; import 'package:PiliPlus/pages/dynamics/widgets/up_panel.dart'; import 'package:PiliPlus/pages/dynamics_create/view.dart'; @@ -8,19 +8,6 @@ import 'package:PiliPlus/utils/storage.dart'; import 'package:easy_debounce/easy_throttle.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; -import 'package:material_design_icons_flutter/material_design_icons_flutter.dart'; - -enum ReplyOption { allow, close, choose } - -extension ReplyOptionExtension on ReplyOption { - String get title => const ['允许评论', '关闭评论', '精选评论'][index]; - - IconData get iconData => [ - MdiIcons.commentTextOutline, - MdiIcons.commentOffOutline, - MdiIcons.commentProcessingOutline, - ][index]; -} class DynamicsPage extends StatefulWidget { const DynamicsPage({super.key}); @@ -160,7 +147,8 @@ class _DynamicsPageState extends State labelStyle: TabBarTheme.of(context).labelStyle?.copyWith(fontSize: 13) ?? const TextStyle(fontSize: 13), - tabs: DynamicsType.values.map((e) => Tab(text: e.labels)).toList(), + tabs: + DynamicsTabType.values.map((e) => Tab(text: e.labels)).toList(), onTap: (index) { if (!_dynamicsController.tabController.indexIsChanging) { _dynamicsController.animateToTop(); diff --git a/lib/pages/dynamics_create/view.dart b/lib/pages/dynamics_create/view.dart index b8fb9b634..0736d56ab 100644 --- a/lib/pages/dynamics_create/view.dart +++ b/lib/pages/dynamics_create/view.dart @@ -1,7 +1,8 @@ import 'package:PiliPlus/common/widgets/button/toolbar_icon_button.dart'; import 'package:PiliPlus/http/msg.dart'; +import 'package:PiliPlus/models/common/publish_panel_type.dart'; +import 'package:PiliPlus/models/common/reply/reply_option_type.dart'; import 'package:PiliPlus/pages/common/common_publish_page.dart'; -import 'package:PiliPlus/pages/dynamics/view.dart'; import 'package:PiliPlus/pages/emote/controller.dart'; import 'package:PiliPlus/pages/emote/view.dart'; import 'package:PiliPlus/utils/request_utils.dart'; @@ -24,7 +25,7 @@ class CreateDynPanel extends CommonPublishPage { class _CreateDynPanelState extends CommonPublishPageState { bool _isPrivate = false; DateTime? _publishTime; - ReplyOption _replyOption = ReplyOption.allow; + ReplyOptionType _replyOption = ReplyOptionType.allow; @override void dispose() { @@ -251,7 +252,7 @@ class _CreateDynPanelState extends CommonPublishPageState { } Widget _buildReplyOptionWidget(ThemeData theme) { - final color = _replyOption == ReplyOption.close + final color = _replyOption == ReplyOptionType.close ? theme.colorScheme.error : theme.colorScheme.secondary; return PopupMenuButton( @@ -262,9 +263,9 @@ class _CreateDynPanelState extends CommonPublishPageState { _replyOption = item; }); }, - itemBuilder: (context) => ReplyOption.values + itemBuilder: (context) => ReplyOptionType.values .map( - (item) => PopupMenuItem( + (item) => PopupMenuItem( value: item, child: Row( mainAxisSize: MainAxisSize.min, diff --git a/lib/pages/dynamics_detail/controller.dart b/lib/pages/dynamics_detail/controller.dart index 61e646b47..8faef1ddf 100644 --- a/lib/pages/dynamics_detail/controller.dart +++ b/lib/pages/dynamics_detail/controller.dart @@ -3,7 +3,7 @@ import 'package:PiliPlus/grpc/bilibili/main/community/reply/v1.pb.dart' import 'package:PiliPlus/http/dynamics.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/http/reply.dart'; -import 'package:PiliPlus/models/common/reply_type.dart'; +import 'package:PiliPlus/models/common/reply/reply_type.dart'; import 'package:PiliPlus/models/dynamics/result.dart'; import 'package:PiliPlus/pages/common/reply_controller.dart'; import 'package:PiliPlus/utils/id_utils.dart'; diff --git a/lib/pages/dynamics_detail/view.dart b/lib/pages/dynamics_detail/view.dart index fbb5ea945..12a68c797 100644 --- a/lib/pages/dynamics_detail/view.dart +++ b/lib/pages/dynamics_detail/view.dart @@ -8,8 +8,8 @@ import 'package:PiliPlus/grpc/bilibili/main/community/reply/v1.pb.dart' show ReplyInfo; import 'package:PiliPlus/http/constants.dart'; import 'package:PiliPlus/http/loading_state.dart'; -import 'package:PiliPlus/models/common/reply_sort_type.dart'; -import 'package:PiliPlus/models/common/reply_type.dart'; +import 'package:PiliPlus/models/common/reply/reply_sort_type.dart'; +import 'package:PiliPlus/models/common/reply/reply_type.dart'; import 'package:PiliPlus/models/dynamics/result.dart'; import 'package:PiliPlus/pages/dynamics/widgets/author_panel.dart'; import 'package:PiliPlus/pages/dynamics/widgets/dynamic_panel.dart'; diff --git a/lib/pages/dynamics_repost/view.dart b/lib/pages/dynamics_repost/view.dart index 88abfab93..6a90ebc50 100644 --- a/lib/pages/dynamics_repost/view.dart +++ b/lib/pages/dynamics_repost/view.dart @@ -1,6 +1,7 @@ import 'package:PiliPlus/common/widgets/button/toolbar_icon_button.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/http/msg.dart'; +import 'package:PiliPlus/models/common/publish_panel_type.dart'; import 'package:PiliPlus/models/dynamics/result.dart'; import 'package:PiliPlus/pages/common/common_publish_page.dart'; import 'package:PiliPlus/pages/emote/controller.dart'; diff --git a/lib/pages/episode_panel/view.dart b/lib/pages/episode_panel/view.dart index 34251d4fb..457b0a50c 100644 --- a/lib/pages/episode_panel/view.dart +++ b/lib/pages/episode_panel/view.dart @@ -11,6 +11,7 @@ import 'package:PiliPlus/common/widgets/stat/stat.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/http/video.dart'; import 'package:PiliPlus/models/bangumi/info.dart' as bangumi; +import 'package:PiliPlus/models/common/episode_panel_type.dart'; import 'package:PiliPlus/models/video_detail_res.dart' as video; import 'package:PiliPlus/pages/common/common_slide_page.dart'; import 'package:PiliPlus/pages/video/controller.dart'; @@ -25,12 +26,6 @@ import 'package:get/get.dart'; import 'package:material_design_icons_flutter/material_design_icons_flutter.dart'; import 'package:scrollable_positioned_list/scrollable_positioned_list.dart'; -enum EpisodeType { part, season, bangumi } - -extension EpisodeTypeExt on EpisodeType { - String get title => const ['分P', '合集', '番剧'][index]; -} - class EpisodePanel extends CommonSlidePage { const EpisodePanel({ super.key, diff --git a/lib/pages/fav/view.dart b/lib/pages/fav/view.dart index 47e433e01..130aedbee 100644 --- a/lib/pages/fav/view.dart +++ b/lib/pages/fav/view.dart @@ -1,29 +1,12 @@ import 'package:PiliPlus/common/widgets/scroll_physics.dart'; import 'package:PiliPlus/http/loading_state.dart'; +import 'package:PiliPlus/models/common/fav_type.dart'; import 'package:PiliPlus/models/user/fav_folder.dart'; -import 'package:PiliPlus/pages/fav/article/view.dart'; -import 'package:PiliPlus/pages/fav/note/view.dart'; -import 'package:PiliPlus/pages/fav/pgc/view.dart'; import 'package:PiliPlus/pages/fav/video/controller.dart'; -import 'package:PiliPlus/pages/fav/video/view.dart'; import 'package:PiliPlus/pages/fav_folder_sort/view.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; -enum _FavType { video, bangumi, cinema, article, note } - -extension _FavTypeExt on _FavType { - String get title => const ['视频', '追番', '追剧', '专栏', '笔记'][index]; - - Widget get page => switch (this) { - _FavType.video => const FavVideoPage(), - _FavType.bangumi => const FavPgcPage(type: 1), - _FavType.cinema => const FavPgcPage(type: 2), - _FavType.article => const FavArticlePage(), - _FavType.note => const FavNotePage(), - }; -} - class FavPage extends StatefulWidget { const FavPage({super.key}); @@ -46,7 +29,7 @@ class _FavPageState extends State with SingleTickerProviderStateMixin { int initialIndex = Get.arguments is int ? Get.arguments as int : 0; _showVideoFavMenu = (initialIndex == 0).obs; _tabController = TabController( - length: _FavType.values.length, + length: FavTabType.values.length, vsync: this, initialIndex: initialIndex, ); @@ -133,7 +116,7 @@ class _FavPageState extends State with SingleTickerProviderStateMixin { ], bottom: TabBar( controller: _tabController, - tabs: _FavType.values.map((item) => Tab(text: item.title)).toList(), + tabs: FavTabType.values.map((item) => Tab(text: item.title)).toList(), ), ), body: SafeArea( @@ -141,7 +124,7 @@ class _FavPageState extends State with SingleTickerProviderStateMixin { bottom: false, child: tabBarView( controller: _tabController, - children: _FavType.values.map((item) => item.page).toList(), + children: FavTabType.values.map((item) => item.page).toList(), ), ), ); diff --git a/lib/pages/follow/child_controller.dart b/lib/pages/follow/child_controller.dart index 10cbdc49e..b6dbf38b6 100644 --- a/lib/pages/follow/child_controller.dart +++ b/lib/pages/follow/child_controller.dart @@ -1,18 +1,12 @@ import 'package:PiliPlus/http/follow.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/http/member.dart'; +import 'package:PiliPlus/models/common/follow_order_type.dart'; import 'package:PiliPlus/models/follow/result.dart'; import 'package:PiliPlus/pages/common/common_list_controller.dart'; import 'package:PiliPlus/pages/follow/controller.dart'; import 'package:get/get.dart'; -enum OrderType { def, attention } - -extension OrderTypeExt on OrderType { - String get type => const ['', 'attention'][index]; - String get title => const ['最近关注', '最常访问'][index]; -} - class FollowChildController extends CommonListController { FollowChildController(this.controller, this.mid, this.tagid); @@ -20,7 +14,7 @@ class FollowChildController final int? tagid; final int mid; - late final Rx orderType = OrderType.def.obs; + late final Rx orderType = FollowOrderType.def.obs; @override void onInit() { diff --git a/lib/pages/follow/child_view.dart b/lib/pages/follow/child_view.dart index fe2f920b0..d75cd1334 100644 --- a/lib/pages/follow/child_view.dart +++ b/lib/pages/follow/child_view.dart @@ -2,6 +2,7 @@ import 'package:PiliPlus/common/skeleton/msg_feed_top.dart'; import 'package:PiliPlus/common/widgets/loading_widget/http_error.dart'; import 'package:PiliPlus/common/widgets/refresh_indicator.dart'; import 'package:PiliPlus/http/loading_state.dart'; +import 'package:PiliPlus/models/common/follow_order_type.dart'; import 'package:PiliPlus/models/follow/result.dart'; import 'package:PiliPlus/pages/follow/child_controller.dart'; import 'package:PiliPlus/pages/follow/controller.dart'; @@ -47,9 +48,9 @@ class _FollowChildPageState extends State onPressed: () { _followController ..orderType.value = - _followController.orderType.value == OrderType.def - ? OrderType.attention - : OrderType.def + _followController.orderType.value == FollowOrderType.def + ? FollowOrderType.attention + : FollowOrderType.def ..onReload(); }, icon: const Icon(Icons.format_list_bulleted, size: 20), diff --git a/lib/pages/history/widgets/item.dart b/lib/pages/history/widgets/item.dart index 9e8391a2a..3b5d698d0 100644 --- a/lib/pages/history/widgets/item.dart +++ b/lib/pages/history/widgets/item.dart @@ -6,7 +6,7 @@ import 'package:PiliPlus/common/widgets/progress_bar/video_progress_indicator.da import 'package:PiliPlus/http/search.dart'; import 'package:PiliPlus/http/user.dart'; import 'package:PiliPlus/http/video.dart'; -import 'package:PiliPlus/models/common/business_type.dart'; +import 'package:PiliPlus/models/common/history_business_type.dart'; import 'package:PiliPlus/models/user/history.dart'; import 'package:PiliPlus/pages/common/multi_select_controller.dart'; import 'package:PiliPlus/pages/history/base_controller.dart'; @@ -145,7 +145,7 @@ class HistoryItem extends StatelessWidget { width: maxWidth, height: maxHeight, ), - if (!BusinessType + if (!HistoryBusinessType .hiddenDurationType.hiddenDurationType .contains(videoItem.history.business)) PBadge( @@ -157,10 +157,10 @@ class HistoryItem extends StatelessWidget { type: 'gray', ), // 右上角 - if (BusinessType.showBadge.showBadge + if (HistoryBusinessType.showBadge.showBadge .contains(videoItem.history.business) || videoItem.history.business == - BusinessType.live.type) + HistoryBusinessType.live.type) PBadge( text: videoItem.badge, top: 6.0, diff --git a/lib/pages/home/controller.dart b/lib/pages/home/controller.dart index c754b4818..79944d42e 100644 --- a/lib/pages/home/controller.dart +++ b/lib/pages/home/controller.dart @@ -3,7 +3,7 @@ import 'dart:math'; import 'package:PiliPlus/http/api.dart'; import 'package:PiliPlus/http/init.dart'; -import 'package:PiliPlus/models/common/tab_type.dart'; +import 'package:PiliPlus/models/common/home_tab_type.dart'; import 'package:PiliPlus/pages/common/common_controller.dart'; import 'package:PiliPlus/pages/mine/view.dart'; import 'package:PiliPlus/utils/feed_back.dart'; @@ -32,8 +32,8 @@ class HomeController extends GetxController final index = tabController.index; return tabsCtrList[index]!( tag: switch (tabs[index]['type']) { - TabType.bangumi => TabType.bangumi.name, - TabType.cinema => TabType.cinema.name, + HomeTabType.bangumi => HomeTabType.bangumi.name, + HomeTabType.cinema => HomeTabType.cinema.name, _ => null, }); } @@ -77,17 +77,17 @@ class HomeController extends GetxController final tabbarSort = GStorage.tabbarSort; defaultTabs ..retainWhere( - (item) => tabbarSort.contains((item['type'] as TabType).name)) + (item) => tabbarSort.contains((item['type'] as HomeTabType).name)) ..sort((a, b) => tabbarSort - .indexOf((a['type'] as TabType).name) - .compareTo(tabbarSort.indexOf((b['type'] as TabType).name))); + .indexOf((a['type'] as HomeTabType).name) + .compareTo(tabbarSort.indexOf((b['type'] as HomeTabType).name))); tabs = defaultTabs; tabsCtrList = tabs.map((e) => e['ctr']).toList(); tabController = TabController( - initialIndex: max(0, tabbarSort.indexOf(TabType.rcmd.name)), + initialIndex: max(0, tabbarSort.indexOf(HomeTabType.rcmd.name)), length: tabs.length, vsync: this, ); diff --git a/lib/pages/home/view.dart b/lib/pages/home/view.dart index 23ddae3fb..575f53e6d 100644 --- a/lib/pages/home/view.dart +++ b/lib/pages/home/view.dart @@ -1,7 +1,7 @@ import 'package:PiliPlus/common/constants.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/common/widgets/scroll_physics.dart'; -import 'package:PiliPlus/models/common/dynamic_badge_mode.dart'; +import 'package:PiliPlus/models/common/dynamic/dynamic_badge_mode.dart'; import 'package:PiliPlus/pages/home/controller.dart'; import 'package:PiliPlus/pages/main/controller.dart'; import 'package:PiliPlus/pages/mine/controller.dart'; diff --git a/lib/pages/hot/view.dart b/lib/pages/hot/view.dart index 5810e844f..7c3a08b6e 100644 --- a/lib/pages/hot/view.dart +++ b/lib/pages/hot/view.dart @@ -4,7 +4,7 @@ import 'package:PiliPlus/common/widgets/loading_widget/http_error.dart'; import 'package:PiliPlus/common/widgets/refresh_indicator.dart'; import 'package:PiliPlus/common/widgets/video_card/video_card_h.dart'; import 'package:PiliPlus/http/loading_state.dart'; -import 'package:PiliPlus/models/common/tab_type.dart'; +import 'package:PiliPlus/models/common/home_tab_type.dart'; import 'package:PiliPlus/models/model_hot_video_item.dart'; import 'package:PiliPlus/pages/common/common_page.dart'; import 'package:PiliPlus/pages/home/controller.dart'; @@ -83,7 +83,7 @@ class _HotPageState extends CommonPageState HomeController homeController = Get.find(); int index = homeController.tabs.indexWhere( - (item) => item['type'] == TabType.rank, + (item) => item['type'] == HomeTabType.rank, ); if (index != -1) { homeController.tabController.animateTo(index); diff --git a/lib/pages/later/base_controller.dart b/lib/pages/later/base_controller.dart index 9511bec55..6f8e8c733 100644 --- a/lib/pages/later/base_controller.dart +++ b/lib/pages/later/base_controller.dart @@ -1,4 +1,4 @@ -import 'package:PiliPlus/pages/later/view.dart'; +import 'package:PiliPlus/models/common/later_view_type.dart'; import 'package:get/get.dart'; class LaterBaseController extends GetxController { diff --git a/lib/pages/later/child_view.dart b/lib/pages/later/child_view.dart index b1a06c7f6..4f544c6f0 100644 --- a/lib/pages/later/child_view.dart +++ b/lib/pages/later/child_view.dart @@ -5,10 +5,9 @@ import 'package:PiliPlus/common/widgets/loading_widget/http_error.dart'; import 'package:PiliPlus/common/widgets/refresh_indicator.dart'; import 'package:PiliPlus/common/widgets/video_card/video_card_h.dart'; import 'package:PiliPlus/http/loading_state.dart'; +import 'package:PiliPlus/models/common/later_view_type.dart'; import 'package:PiliPlus/models/model_hot_video_item.dart'; import 'package:PiliPlus/pages/later/controller.dart'; -import 'package:PiliPlus/pages/later/view.dart' - show LaterViewType, LaterViewTypeExt; import 'package:PiliPlus/utils/extension.dart'; import 'package:PiliPlus/utils/grid.dart'; import 'package:PiliPlus/utils/page_utils.dart'; diff --git a/lib/pages/later/controller.dart b/lib/pages/later/controller.dart index a52969c4d..3a064d463 100644 --- a/lib/pages/later/controller.dart +++ b/lib/pages/later/controller.dart @@ -1,11 +1,10 @@ import 'package:PiliPlus/common/widgets/dialog/dialog.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/http/user.dart'; +import 'package:PiliPlus/models/common/later_view_type.dart'; import 'package:PiliPlus/models/model_hot_video_item.dart'; import 'package:PiliPlus/pages/common/multi_select_controller.dart'; import 'package:PiliPlus/pages/later/base_controller.dart'; -import 'package:PiliPlus/pages/later/view.dart' - show LaterViewType, LaterViewTypeExt; import 'package:PiliPlus/utils/extension.dart'; import 'package:PiliPlus/utils/page_utils.dart'; import 'package:PiliPlus/utils/storage.dart'; diff --git a/lib/pages/later/view.dart b/lib/pages/later/view.dart index 8def8d949..0b2217d26 100644 --- a/lib/pages/later/view.dart +++ b/lib/pages/later/view.dart @@ -1,9 +1,9 @@ import 'package:PiliPlus/common/widgets/scroll_physics.dart'; import 'package:PiliPlus/http/loading_state.dart'; +import 'package:PiliPlus/models/common/later_view_type.dart'; import 'package:PiliPlus/models/model_hot_video_item.dart'; import 'package:PiliPlus/pages/history/view.dart' show AppBarWidget; import 'package:PiliPlus/pages/later/base_controller.dart'; -import 'package:PiliPlus/pages/later/child_view.dart'; import 'package:PiliPlus/pages/later/controller.dart'; import 'package:PiliPlus/utils/extension.dart'; import 'package:PiliPlus/utils/request_utils.dart'; @@ -12,16 +12,6 @@ import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:material_design_icons_flutter/material_design_icons_flutter.dart'; -enum LaterViewType { all, toView, unfinished, viewed } - -extension LaterViewTypeExt on LaterViewType { - int get type => index; - - String get title => const ['全部', '未看', '未看完', '已看完'][index]; - - Widget get page => LaterViewChildPage(laterViewType: this); -} - class LaterPage extends StatefulWidget { const LaterPage({super.key}); diff --git a/lib/pages/live_room/controller.dart b/lib/pages/live_room/controller.dart index 186a555e3..d75ff54db 100644 --- a/lib/pages/live_room/controller.dart +++ b/lib/pages/live_room/controller.dart @@ -3,8 +3,8 @@ import 'dart:convert'; import 'package:PiliPlus/http/constants.dart'; import 'package:PiliPlus/http/live.dart'; import 'package:PiliPlus/http/video.dart'; +import 'package:PiliPlus/models/common/video/live_quality.dart'; import 'package:PiliPlus/models/live/danmu_info.dart'; -import 'package:PiliPlus/models/live/quality.dart'; import 'package:PiliPlus/models/live/room_info.dart'; import 'package:PiliPlus/models/live/room_info_h5.dart'; import 'package:PiliPlus/pages/mine/controller.dart'; diff --git a/lib/pages/live_room/send_danmaku/view.dart b/lib/pages/live_room/send_danmaku/view.dart index bf2cdcebd..2b40bbdf9 100644 --- a/lib/pages/live_room/send_danmaku/view.dart +++ b/lib/pages/live_room/send_danmaku/view.dart @@ -2,6 +2,7 @@ import 'dart:async'; import 'package:PiliPlus/common/widgets/button/toolbar_icon_button.dart'; import 'package:PiliPlus/http/live.dart'; +import 'package:PiliPlus/models/common/publish_panel_type.dart'; import 'package:PiliPlus/pages/common/common_publish_page.dart'; import 'package:PiliPlus/pages/live_emote/controller.dart'; import 'package:PiliPlus/pages/live_emote/view.dart'; diff --git a/lib/pages/login/controller.dart b/lib/pages/login/controller.dart index 2c46e1a2c..aa173af22 100644 --- a/lib/pages/login/controller.dart +++ b/lib/pages/login/controller.dart @@ -6,6 +6,7 @@ import 'package:PiliPlus/common/widgets/button/icon_button.dart'; import 'package:PiliPlus/common/widgets/radio_widget.dart'; import 'package:PiliPlus/http/init.dart'; import 'package:PiliPlus/http/login.dart'; +import 'package:PiliPlus/models/common/account_type.dart'; import 'package:PiliPlus/models/login/model.dart'; import 'package:PiliPlus/utils/accounts/account.dart'; import 'package:PiliPlus/utils/storage.dart'; diff --git a/lib/pages/main/controller.dart b/lib/pages/main/controller.dart index 96558ec63..37be06152 100644 --- a/lib/pages/main/controller.dart +++ b/lib/pages/main/controller.dart @@ -3,7 +3,8 @@ import 'dart:async'; import 'package:PiliPlus/grpc/grpc_repo.dart'; import 'package:PiliPlus/http/api.dart'; import 'package:PiliPlus/http/init.dart'; -import 'package:PiliPlus/models/common/dynamic_badge_mode.dart'; +import 'package:PiliPlus/models/common/dynamic/dynamic_badge_mode.dart'; +import 'package:PiliPlus/models/common/msg/msg_unread_type.dart'; import 'package:PiliPlus/models/common/nav_bar_config.dart'; import 'package:PiliPlus/pages/dynamics/view.dart'; import 'package:PiliPlus/pages/home/view.dart'; diff --git a/lib/pages/main/view.dart b/lib/pages/main/view.dart index 2c995f999..2c3d73aba 100644 --- a/lib/pages/main/view.dart +++ b/lib/pages/main/view.dart @@ -2,7 +2,7 @@ import 'dart:io'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/common/widgets/tabs.dart'; -import 'package:PiliPlus/models/common/dynamic_badge_mode.dart'; +import 'package:PiliPlus/models/common/dynamic/dynamic_badge_mode.dart'; import 'package:PiliPlus/pages/dynamics/controller.dart'; import 'package:PiliPlus/pages/dynamics/view.dart'; import 'package:PiliPlus/pages/home/controller.dart'; diff --git a/lib/pages/member/controller.dart b/lib/pages/member/controller.dart index 11e6eb4ab..b3093bea9 100644 --- a/lib/pages/member/controller.dart +++ b/lib/pages/member/controller.dart @@ -3,6 +3,7 @@ import 'dart:math'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/http/member.dart'; import 'package:PiliPlus/http/video.dart'; +import 'package:PiliPlus/models/common/member/tab_type.dart'; import 'package:PiliPlus/models/space/data.dart'; import 'package:PiliPlus/models/space/item.dart'; import 'package:PiliPlus/models/space/tab2.dart'; @@ -15,12 +16,6 @@ import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:get/get.dart'; import 'package:intl/intl.dart'; -enum MemberTabType { none, home, dynamic, contribute, favorite, bangumi } - -extension MemberTabTypeExt on MemberTabType { - String get title => const ['默认', '首页', '动态', '投稿', '收藏', '番剧'][index]; -} - class MemberController extends CommonDataController with GetTickerProviderStateMixin { MemberController({required this.mid}); diff --git a/lib/pages/member/widget/user_info_card.dart b/lib/pages/member/widget/user_info_card.dart index 95d6be15e..cd907fc4f 100644 --- a/lib/pages/member/widget/user_info_card.dart +++ b/lib/pages/member/widget/user_info_card.dart @@ -1,7 +1,6 @@ import 'package:PiliPlus/common/constants.dart'; -import 'package:PiliPlus/common/widgets/interactiveviewer_gallery/interactiveviewer_gallery.dart' - show SourceModel; import 'package:PiliPlus/common/widgets/pendant_avatar.dart'; +import 'package:PiliPlus/models/common/image_preview_type.dart'; import 'package:PiliPlus/models/space/card.dart'; import 'package:PiliPlus/models/space/images.dart'; import 'package:PiliPlus/utils/extension.dart'; diff --git a/lib/pages/member_contribute/view.dart b/lib/pages/member_contribute/view.dart index 4be03c027..5232db8e6 100644 --- a/lib/pages/member_contribute/view.dart +++ b/lib/pages/member_contribute/view.dart @@ -1,3 +1,4 @@ +import 'package:PiliPlus/models/common/member/contribute_type.dart'; import 'package:PiliPlus/pages/member_article/view.dart'; import 'package:PiliPlus/pages/member_audio/view.dart'; import 'package:PiliPlus/pages/member_contribute/controller.dart'; @@ -6,8 +7,6 @@ import 'package:PiliPlus/pages/member_video/view.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; -enum ContributeType { video, charging, season, series, bangumi } - class MemberContribute extends StatefulWidget { const MemberContribute({ super.key, diff --git a/lib/pages/member_pgc/controller.dart b/lib/pages/member_pgc/controller.dart index d3ae3002d..40a569afc 100644 --- a/lib/pages/member_pgc/controller.dart +++ b/lib/pages/member_pgc/controller.dart @@ -1,11 +1,11 @@ import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/http/member.dart'; +import 'package:PiliPlus/models/common/member/contribute_type.dart'; import 'package:PiliPlus/models/space/data.dart'; import 'package:PiliPlus/models/space_archive/data.dart'; import 'package:PiliPlus/models/space_archive/item.dart'; import 'package:PiliPlus/pages/common/common_list_controller.dart'; import 'package:PiliPlus/pages/member/controller.dart'; -import 'package:PiliPlus/pages/member_contribute/view.dart' show ContributeType; import 'package:get/get.dart'; class MemberBangumiCtr diff --git a/lib/pages/member_profile/view.dart b/lib/pages/member_profile/view.dart index 3ed8afc59..d77264f1a 100644 --- a/lib/pages/member_profile/view.dart +++ b/lib/pages/member_profile/view.dart @@ -3,6 +3,7 @@ import 'package:PiliPlus/common/widgets/loading_widget/loading_widget.dart'; import 'package:PiliPlus/http/constants.dart'; import 'package:PiliPlus/http/init.dart'; import 'package:PiliPlus/http/loading_state.dart'; +import 'package:PiliPlus/models/common/member/profile_type.dart'; import 'package:PiliPlus/utils/extension.dart'; import 'package:PiliPlus/utils/page_utils.dart'; import 'package:PiliPlus/utils/storage.dart'; @@ -19,8 +20,6 @@ import 'package:image_picker/image_picker.dart'; import 'package:intl/intl.dart'; import 'package:mime/mime.dart'; -enum ProfileType { uname, sign, sex, birthday } - class EditProfilePage extends StatefulWidget { const EditProfilePage({super.key}); diff --git a/lib/pages/member_season_series/view.dart b/lib/pages/member_season_series/view.dart index 7614cd4e3..7968224d0 100644 --- a/lib/pages/member_season_series/view.dart +++ b/lib/pages/member_season_series/view.dart @@ -1,7 +1,7 @@ import 'package:PiliPlus/common/constants.dart'; import 'package:PiliPlus/common/widgets/loading_widget/loading_widget.dart'; import 'package:PiliPlus/http/loading_state.dart'; -import 'package:PiliPlus/pages/member_contribute/view.dart'; +import 'package:PiliPlus/models/common/member/contribute_type.dart'; import 'package:PiliPlus/pages/member_season_series/controller.dart'; import 'package:PiliPlus/pages/member_season_series/widget/season_series_card.dart'; import 'package:PiliPlus/pages/member_video/view.dart'; diff --git a/lib/pages/member_video/controller.dart b/lib/pages/member_video/controller.dart index e4f6c9d8e..fb8e69d2c 100644 --- a/lib/pages/member_video/controller.dart +++ b/lib/pages/member_video/controller.dart @@ -1,11 +1,11 @@ import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/http/member.dart'; import 'package:PiliPlus/http/search.dart'; +import 'package:PiliPlus/models/common/member/contribute_type.dart'; import 'package:PiliPlus/models/space_archive/data.dart'; import 'package:PiliPlus/models/space_archive/episodic_button.dart'; import 'package:PiliPlus/models/space_archive/item.dart'; import 'package:PiliPlus/pages/common/common_list_controller.dart'; -import 'package:PiliPlus/pages/member_contribute/view.dart' show ContributeType; import 'package:PiliPlus/utils/extension.dart'; import 'package:PiliPlus/utils/id_utils.dart'; import 'package:PiliPlus/utils/page_utils.dart'; diff --git a/lib/pages/member_video/view.dart b/lib/pages/member_video/view.dart index b9bd63eac..0ae596d15 100644 --- a/lib/pages/member_video/view.dart +++ b/lib/pages/member_video/view.dart @@ -5,9 +5,9 @@ import 'package:PiliPlus/common/widgets/refresh_indicator.dart'; import 'package:PiliPlus/common/widgets/scroll_physics.dart'; import 'package:PiliPlus/common/widgets/video_card/video_card_h_member_video.dart'; import 'package:PiliPlus/http/loading_state.dart'; +import 'package:PiliPlus/models/common/member/contribute_type.dart'; import 'package:PiliPlus/models/space_archive/item.dart'; import 'package:PiliPlus/pages/member/controller.dart'; -import 'package:PiliPlus/pages/member_contribute/view.dart' show ContributeType; import 'package:PiliPlus/pages/member_video/controller.dart'; import 'package:PiliPlus/utils/grid.dart'; import 'package:flutter/material.dart'; diff --git a/lib/pages/mine/controller.dart b/lib/pages/mine/controller.dart index afc17eb0b..e4e9f98fb 100644 --- a/lib/pages/mine/controller.dart +++ b/lib/pages/mine/controller.dart @@ -1,5 +1,6 @@ import 'package:PiliPlus/http/user.dart'; -import 'package:PiliPlus/models/common/theme_type.dart'; +import 'package:PiliPlus/models/common/account_type.dart'; +import 'package:PiliPlus/models/common/theme/theme_type.dart'; import 'package:PiliPlus/models/user/info.dart'; import 'package:PiliPlus/models/user/stat.dart'; import 'package:PiliPlus/utils/accounts/account.dart'; diff --git a/lib/pages/mine/view.dart b/lib/pages/mine/view.dart index 0ae11a204..e2b95e7f7 100644 --- a/lib/pages/mine/view.dart +++ b/lib/pages/mine/view.dart @@ -1,6 +1,6 @@ import 'package:PiliPlus/common/constants.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; -import 'package:PiliPlus/models/common/theme_type.dart'; +import 'package:PiliPlus/models/common/theme/theme_type.dart'; import 'package:PiliPlus/models/user/info.dart'; import 'package:PiliPlus/pages/mine/controller.dart'; import 'package:flutter/material.dart'; diff --git a/lib/pages/setting/pages/color_select.dart b/lib/pages/setting/pages/color_select.dart index d291c9cb2..b0a5eac4b 100644 --- a/lib/pages/setting/pages/color_select.dart +++ b/lib/pages/setting/pages/color_select.dart @@ -1,6 +1,6 @@ -import 'package:PiliPlus/models/common/color_type.dart'; import 'package:PiliPlus/models/common/nav_bar_config.dart'; -import 'package:PiliPlus/models/common/theme_type.dart'; +import 'package:PiliPlus/models/common/theme/theme_color_type.dart'; +import 'package:PiliPlus/models/common/theme/theme_type.dart'; import 'package:PiliPlus/pages/home/view.dart'; import 'package:PiliPlus/pages/mine/controller.dart'; import 'package:PiliPlus/pages/setting/widgets/select_dialog.dart'; diff --git a/lib/pages/setting/pages/home_tabbar_set.dart b/lib/pages/setting/pages/home_tabbar_set.dart index 09f6a318e..208c5f7c2 100644 --- a/lib/pages/setting/pages/home_tabbar_set.dart +++ b/lib/pages/setting/pages/home_tabbar_set.dart @@ -1,4 +1,4 @@ -import 'package:PiliPlus/models/common/tab_type.dart'; +import 'package:PiliPlus/models/common/home_tab_type.dart'; import 'package:PiliPlus/utils/storage.dart'; import 'package:flutter/material.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; @@ -21,8 +21,8 @@ class _TabbarSetPageState extends State { tabbarSort = GStorage.tabbarSort; // 对 tabData 进行排序 defaultTabs.sort((a, b) { - int indexA = tabbarSort.indexOf((a['type'] as TabType).name); - int indexB = tabbarSort.indexOf((b['type'] as TabType).name); + int indexA = tabbarSort.indexOf((a['type'] as HomeTabType).name); + int indexB = tabbarSort.indexOf((b['type'] as HomeTabType).name); // 如果类型在 sortOrder 中不存在,则放在末尾 if (indexA == -1) indexA = tabbarSort.length; @@ -34,8 +34,8 @@ class _TabbarSetPageState extends State { void saveEdit() { List sortedTabbar = defaultTabs - .where((i) => tabbarSort.contains((i['type'] as TabType).name)) - .map((i) => (i['type'] as TabType).name) + .where((i) => tabbarSort.contains((i['type'] as HomeTabType).name)) + .map((i) => (i['type'] as HomeTabType).name) .toList(); GStorage.setting.put(SettingBoxKey.tabbarSort, sortedTabbar); SmartDialog.showToast('保存成功,下次启动时生效'); @@ -57,9 +57,10 @@ class _TabbarSetPageState extends State { for (int i = 0; i < defaultTabs.length; i++) ...[ CheckboxListTile( key: Key(defaultTabs[i]['label']), - value: tabbarSort.contains((defaultTabs[i]['type'] as TabType).name), + value: + tabbarSort.contains((defaultTabs[i]['type'] as HomeTabType).name), onChanged: (bool? newValue) { - String tabTypeId = (defaultTabs[i]['type'] as TabType).name; + String tabTypeId = (defaultTabs[i]['type'] as HomeTabType).name; if (!newValue!) { tabbarSort.remove(tabTypeId); } else { diff --git a/lib/pages/setting/widgets/model.dart b/lib/pages/setting/widgets/model.dart index fa2f19a86..d9bcce1e5 100644 --- a/lib/pages/setting/widgets/model.dart +++ b/lib/pages/setting/widgets/model.dart @@ -7,22 +7,27 @@ import 'package:PiliPlus/common/widgets/refresh_indicator.dart' import 'package:PiliPlus/http/reply.dart'; import 'package:PiliPlus/http/video.dart'; import 'package:PiliPlus/main.dart'; +import 'package:PiliPlus/models/common/account_type.dart'; import 'package:PiliPlus/models/common/audio_normalization.dart'; -import 'package:PiliPlus/models/common/dynamic_badge_mode.dart'; -import 'package:PiliPlus/models/common/dynamics_type.dart'; +import 'package:PiliPlus/models/common/dynamic/dynamic_badge_mode.dart'; +import 'package:PiliPlus/models/common/dynamic/dynamics_type.dart'; +import 'package:PiliPlus/models/common/dynamic/up_panel_position.dart'; +import 'package:PiliPlus/models/common/member/tab_type.dart'; +import 'package:PiliPlus/models/common/msg/msg_unread_type.dart'; import 'package:PiliPlus/models/common/nav_bar_config.dart'; -import 'package:PiliPlus/models/common/reply_sort_type.dart'; +import 'package:PiliPlus/models/common/reply/reply_sort_type.dart'; +import 'package:PiliPlus/models/common/settings_type.dart'; import 'package:PiliPlus/models/common/super_resolution_type.dart'; -import 'package:PiliPlus/models/common/theme_type.dart'; -import 'package:PiliPlus/models/common/up_panel_position.dart'; -import 'package:PiliPlus/models/live/quality.dart'; -import 'package:PiliPlus/models/video/play/CDN.dart'; -import 'package:PiliPlus/models/video/play/quality.dart'; -import 'package:PiliPlus/models/video/play/subtitle.dart'; +import 'package:PiliPlus/models/common/theme/theme_type.dart'; +import 'package:PiliPlus/models/common/video/CDN.dart'; +import 'package:PiliPlus/models/common/video/audio_quality.dart'; +import 'package:PiliPlus/models/common/video/live_quality.dart'; +import 'package:PiliPlus/models/common/video/subtitle_pref_type.dart'; +import 'package:PiliPlus/models/common/video/video_decode_type.dart'; +import 'package:PiliPlus/models/common/video/video_quality.dart'; import 'package:PiliPlus/pages/home/controller.dart'; import 'package:PiliPlus/pages/hot/controller.dart'; import 'package:PiliPlus/pages/main/controller.dart'; -import 'package:PiliPlus/pages/member/controller.dart'; import 'package:PiliPlus/pages/mine/controller.dart'; import 'package:PiliPlus/pages/rcmd/controller.dart'; import 'package:PiliPlus/pages/setting/pages/color_select.dart'; @@ -120,8 +125,6 @@ class SettingsModel { }); } -enum SettingsType { normal, sw1tch, divider } - List get styleSettings => [ SettingsModel( settingsType: SettingsType.sw1tch, @@ -815,7 +818,7 @@ List get playSettings => [ title: '自动启用字幕', leading: const Icon(Icons.closed_caption_outlined), getSubtitle: () => - '当前选择偏好:${SubtitlePreferenceCode.fromCode(GStorage.defaultSubtitlePreference)!.description}', + '当前选择偏好:${SubtitlePrefTypeExt.fromCode(GStorage.defaultSubtitlePreference)!.description}', onTap: (setState) async { String? result = await showDialog( context: Get.context!, @@ -823,8 +826,8 @@ List get playSettings => [ return SelectDialog( title: '字幕选择偏好', value: GStorage.setting.get(SettingBoxKey.subtitlePreference, - defaultValue: SubtitlePreference.values.first.code), - values: SubtitlePreference.values + defaultValue: SubtitlePrefType.values.first.code), + values: SubtitlePrefType.values .map((e) => (e.code, e.description)) .toList(), ); @@ -1061,7 +1064,7 @@ List get videoSettings => [ title: '默认画质', leading: const Icon(Icons.video_settings_outlined), getSubtitle: () => - '当前画质:${VideoQualityCode.fromCode(GStorage.defaultVideoQa)!.description}', + '当前画质:${VideoQualityExt.fromCode(GStorage.defaultVideoQa)!.description}', onTap: (setState) async { int? result = await showDialog( context: Get.context!, @@ -1086,7 +1089,7 @@ List get videoSettings => [ title: '蜂窝网络画质', leading: const Icon(Icons.video_settings_outlined), getSubtitle: () => - '当前画质:${VideoQualityCode.fromCode(GStorage.defaultVideoQaCellular)!.description}', + '当前画质:${VideoQualityExt.fromCode(GStorage.defaultVideoQaCellular)!.description}', onTap: (setState) async { int? result = await showDialog( context: Get.context!, @@ -1112,7 +1115,7 @@ List get videoSettings => [ title: '默认音质', leading: const Icon(Icons.music_video_outlined), getSubtitle: () => - '当前音质:${AudioQualityCode.fromCode(GStorage.defaultAudioQa)!.description}', + '当前音质:${AudioQualityExt.fromCode(GStorage.defaultAudioQa)!.description}', onTap: (setState) async { int? result = await showDialog( context: Get.context!, @@ -1137,7 +1140,7 @@ List get videoSettings => [ title: '蜂窝网络音质', leading: const Icon(Icons.music_video_outlined), getSubtitle: () => - '当前音质:${AudioQualityCode.fromCode(GStorage.defaultAudioQaCellular)!.description}', + '当前音质:${AudioQualityExt.fromCode(GStorage.defaultAudioQaCellular)!.description}', onTap: (setState) async { int? result = await showDialog( context: Get.context!, @@ -1163,7 +1166,7 @@ List get videoSettings => [ title: '直播默认画质', leading: const Icon(Icons.video_settings_outlined), getSubtitle: () => - '当前画质:${LiveQualityCode.fromCode(GStorage.liveQuality)!.description}', + '当前画质:${LiveQualityExt.fromCode(GStorage.liveQuality)!.description}', onTap: (setState) async { int? result = await showDialog( context: Get.context!, @@ -1188,7 +1191,7 @@ List get videoSettings => [ title: '蜂窝网络直播默认画质', leading: const Icon(Icons.video_settings_outlined), getSubtitle: () => - '当前画质:${LiveQualityCode.fromCode(GStorage.liveQualityCellular)!.description}', + '当前画质:${LiveQualityExt.fromCode(GStorage.liveQualityCellular)!.description}', onTap: (setState) async { int? result = await showDialog( context: Get.context!, @@ -1214,7 +1217,7 @@ List get videoSettings => [ title: '首选解码格式', leading: const Icon(Icons.movie_creation_outlined), getSubtitle: () => - '首选解码格式:${VideoDecodeFormatsCode.fromCode(GStorage.defaultDecode)!.description},请根据设备支持情况与需求调整', + '首选解码格式:${VideoDecodeFormatTypeExt.fromCode(GStorage.defaultDecode)!.description},请根据设备支持情况与需求调整', onTap: (setState) async { String? result = await showDialog( context: Get.context!, @@ -1222,7 +1225,7 @@ List get videoSettings => [ return SelectDialog( title: '默认解码格式', value: GStorage.defaultDecode, - values: VideoDecodeFormats.values + values: VideoDecodeFormatType.values .map((e) => (e.code, e.description)) .toList()); }, @@ -1237,7 +1240,7 @@ List get videoSettings => [ settingsType: SettingsType.normal, title: '次选解码格式', getSubtitle: () => - '非杜比视频次选:${VideoDecodeFormatsCode.fromCode(GStorage.secondDecode)!.description},仍无则选择首个提供的解码格式', + '非杜比视频次选:${VideoDecodeFormatTypeExt.fromCode(GStorage.secondDecode)!.description},仍无则选择首个提供的解码格式', leading: const Icon(Icons.swap_horizontal_circle_outlined), onTap: (setState) async { String? result = await showDialog( @@ -1246,7 +1249,7 @@ List get videoSettings => [ return SelectDialog( title: '次选解码格式', value: GStorage.secondDecode, - values: VideoDecodeFormats.values.map((e) { + values: VideoDecodeFormatType.values.map((e) { return (e.code, e.description); }).toList()); }, @@ -2358,7 +2361,7 @@ List get extraSettings => [ setKey: SettingBoxKey.defaultDynamicType, leading: const Icon(Icons.dynamic_feed_outlined), getSubtitle: () => - '当前优先展示「${DynamicsType.values[GStorage.defaultDynamicType].labels}」', + '当前优先展示「${DynamicsTabType.values[GStorage.defaultDynamicType].labels}」', onTap: (setState) async { int? result = await showDialog( context: Get.context!, @@ -2366,7 +2369,7 @@ List get extraSettings => [ return SelectDialog( title: '动态展示', value: GStorage.defaultDynamicType, - values: DynamicsType.values.sublist(0, 4).map((e) { + values: DynamicsTabType.values.sublist(0, 4).map((e) { return (e.index, e.labels); }).toList()); }, diff --git a/lib/pages/setting/widgets/select_dialog.dart b/lib/pages/setting/widgets/select_dialog.dart index ed2d78e66..cb308accd 100644 --- a/lib/pages/setting/widgets/select_dialog.dart +++ b/lib/pages/setting/widgets/select_dialog.dart @@ -2,7 +2,7 @@ import 'dart:async'; import 'package:PiliPlus/http/constants.dart'; import 'package:PiliPlus/http/video.dart'; -import 'package:PiliPlus/models/video/play/CDN.dart'; +import 'package:PiliPlus/models/common/video/CDN.dart'; import 'package:PiliPlus/models/video/play/url.dart'; import 'package:PiliPlus/utils/storage.dart'; import 'package:PiliPlus/utils/video_utils.dart'; diff --git a/lib/pages/setting/widgets/select_item.dart b/lib/pages/setting/widgets/select_item.dart index 9c5d42247..c6a1425b1 100644 --- a/lib/pages/setting/widgets/select_item.dart +++ b/lib/pages/setting/widgets/select_item.dart @@ -1,4 +1,6 @@ -import 'package:PiliPlus/models/video/play/quality.dart'; +import 'package:PiliPlus/models/common/video/audio_quality.dart'; +import 'package:PiliPlus/models/common/video/video_decode_type.dart'; +import 'package:PiliPlus/models/common/video/video_quality.dart'; import 'package:PiliPlus/utils/storage.dart'; import 'package:flutter/material.dart'; import 'package:hive/hive.dart'; @@ -65,9 +67,9 @@ class _SetSelectItemState extends State { ]; break; case 'defaultDecode': - defaultVal = VideoDecodeFormats.values[0].description; + defaultVal = VideoDecodeFormatType.values[0].description; currentVal = setting.get(widget.setKey, defaultValue: defaultVal); - List list = menus = VideoDecodeFormats.values; + List list = menus = VideoDecodeFormatType.values; currentIndex = list.firstWhere((i) => i.description == currentVal).index; diff --git a/lib/pages/settings_search/view.dart b/lib/pages/settings_search/view.dart index d0d0f2004..e27ad13a4 100644 --- a/lib/pages/settings_search/view.dart +++ b/lib/pages/settings_search/view.dart @@ -1,4 +1,5 @@ import 'package:PiliPlus/common/widgets/loading_widget/http_error.dart'; +import 'package:PiliPlus/models/common/settings_type.dart'; import 'package:PiliPlus/pages/setting/widgets/model.dart'; import 'package:PiliPlus/utils/grid.dart'; import 'package:easy_debounce/easy_throttle.dart'; diff --git a/lib/pages/video/controller.dart b/lib/pages/video/controller.dart index 0cec58617..5ab9b07cf 100644 --- a/lib/pages/video/controller.dart +++ b/lib/pages/video/controller.dart @@ -17,8 +17,10 @@ import 'package:PiliPlus/models/common/sponsor_block/post_segment_model.dart'; import 'package:PiliPlus/models/common/sponsor_block/segment_model.dart'; import 'package:PiliPlus/models/common/sponsor_block/segment_type.dart'; import 'package:PiliPlus/models/common/sponsor_block/skip_type.dart'; +import 'package:PiliPlus/models/common/video/audio_quality.dart'; +import 'package:PiliPlus/models/common/video/video_decode_type.dart'; +import 'package:PiliPlus/models/common/video/video_quality.dart'; import 'package:PiliPlus/models/video/later.dart'; -import 'package:PiliPlus/models/video/play/quality.dart'; import 'package:PiliPlus/models/video/play/url.dart'; import 'package:PiliPlus/models/video_detail_res.dart'; import 'package:PiliPlus/pages/search/widgets/search_text.dart'; @@ -72,7 +74,7 @@ class VideoDetailController extends GetxController /// 播放器配置 画质 音质 解码格式 late VideoQuality currentVideoQa; AudioQuality? currentAudioQa; - late VideoDecodeFormats currentDecodeFormats; + late VideoDecodeFormatType currentDecodeFormats; // 是否开始自动播放 存在多p的情况下,第二p需要为true RxBool autoPlay = true.obs; // 封面图的展示 @@ -273,9 +275,9 @@ class VideoDetailController extends GetxController // 预设的解码格式 cacheDecode = setting.get(SettingBoxKey.defaultDecode, - defaultValue: VideoDecodeFormats.values.last.code); + defaultValue: VideoDecodeFormatType.values.last.code); cacheSecondDecode = setting.get(SettingBoxKey.secondDecode, - defaultValue: VideoDecodeFormats.values[1].code); + defaultValue: VideoDecodeFormatType.values[1].code); oid.value = IdUtils.bv2av(Get.parameters['bvid']!); } @@ -984,10 +986,10 @@ class VideoDetailController extends GetxController data.dash!.video!.where((i) => i.id == currentVideoQa.code).toList(); final List supportDecodeFormats = videoList.map((e) => e.codecs!).toList(); - VideoDecodeFormats defaultDecodeFormats = - VideoDecodeFormatsCode.fromString(cacheDecode)!; - VideoDecodeFormats secondDecodeFormats = - VideoDecodeFormatsCode.fromString(cacheSecondDecode)!; + VideoDecodeFormatType defaultDecodeFormats = + VideoDecodeFormatTypeExt.fromString(cacheDecode)!; + VideoDecodeFormatType secondDecodeFormats = + VideoDecodeFormatTypeExt.fromString(cacheSecondDecode)!; try { // 当前视频没有对应格式返回第一个 int flag = 0; @@ -1011,7 +1013,7 @@ class VideoDetailController extends GetxController } else { if (currentVideoQa == VideoQuality.dolbyVision) { currentDecodeFormats = - VideoDecodeFormatsCode.fromString(videoList.first.codecs!)!; + VideoDecodeFormatTypeExt.fromString(videoList.first.codecs!)!; firstVideo = videoList.first; } else if (flag == 2) { //defaultDecodeFormats @@ -1029,7 +1031,7 @@ class VideoDetailController extends GetxController ); } else if (flag == 0) { currentDecodeFormats = - VideoDecodeFormatsCode.fromString(supportDecodeFormats.first)!; + VideoDecodeFormatTypeExt.fromString(supportDecodeFormats.first)!; firstVideo = videoList.first; } } @@ -1167,10 +1169,10 @@ class VideoDetailController extends GetxController id: data.quality!, baseUrl: videoUrl, codecs: 'avc1', - quality: VideoQualityCode.fromCode(data.quality!)!); + quality: VideoQualityExt.fromCode(data.quality!)!); setVideoHeight(); - currentDecodeFormats = VideoDecodeFormatsCode.fromString('avc1')!; - currentVideoQa = VideoQualityCode.fromCode(data.quality!)!; + currentDecodeFormats = VideoDecodeFormatTypeExt.fromString('avc1')!; + currentVideoQa = VideoQualityExt.fromCode(data.quality!)!; if (autoPlay.value) { isShowCover.value = false; await playerInit(); @@ -1204,7 +1206,7 @@ class VideoDetailController extends GetxController resVideoQa = Utils.findClosestNumber(plPlayerController.cacheVideoQa!, numbers); } - currentVideoQa = VideoQualityCode.fromCode(resVideoQa)!; + currentVideoQa = VideoQualityExt.fromCode(resVideoQa)!; /// 取出符合当前画质的videoList final List videosList = @@ -1218,9 +1220,9 @@ class VideoDetailController extends GetxController orElse: () => supportFormats.first) .codecs!; // 默认从设置中取AV1 - currentDecodeFormats = VideoDecodeFormatsCode.fromString(cacheDecode)!; - VideoDecodeFormats secondDecodeFormats = - VideoDecodeFormatsCode.fromString(cacheSecondDecode)!; + currentDecodeFormats = VideoDecodeFormatTypeExt.fromString(cacheDecode)!; + VideoDecodeFormatType secondDecodeFormats = + VideoDecodeFormatTypeExt.fromString(cacheSecondDecode)!; // 当前视频没有对应格式返回第一个 int flag = 0; for (var i in supportDecodeFormats) { @@ -1235,7 +1237,7 @@ class VideoDetailController extends GetxController currentDecodeFormats = secondDecodeFormats; } else if (flag == 0) { currentDecodeFormats = - VideoDecodeFormatsCode.fromString(supportDecodeFormats.first)!; + VideoDecodeFormatTypeExt.fromString(supportDecodeFormats.first)!; } /// 取出符合当前解码格式的videoItem @@ -1272,7 +1274,7 @@ class VideoDetailController extends GetxController orElse: () => audiosList.first); audioUrl = VideoUtils.getCdnUrl(firstAudio); if (firstAudio.id != null) { - currentAudioQa = AudioQualityCode.fromCode(firstAudio.id!)!; + currentAudioQa = AudioQualityExt.fromCode(firstAudio.id!)!; } } else { firstAudio = AudioItem(); diff --git a/lib/pages/video/introduction/pgc/view.dart b/lib/pages/video/introduction/pgc/view.dart index 2980e0f96..d3e71c2b0 100644 --- a/lib/pages/video/introduction/pgc/view.dart +++ b/lib/pages/video/introduction/pgc/view.dart @@ -4,12 +4,11 @@ import 'package:PiliPlus/common/constants.dart'; import 'package:PiliPlus/common/widgets/badge.dart'; import 'package:PiliPlus/common/widgets/dialog/dialog.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; -import 'package:PiliPlus/common/widgets/interactiveviewer_gallery/interactiveviewer_gallery.dart' - show SourceModel; import 'package:PiliPlus/common/widgets/loading_widget/http_error.dart'; import 'package:PiliPlus/common/widgets/stat/stat.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/models/bangumi/info.dart'; +import 'package:PiliPlus/models/common/image_preview_type.dart'; import 'package:PiliPlus/pages/video/controller.dart'; import 'package:PiliPlus/pages/video/introduction/pgc/controller.dart'; import 'package:PiliPlus/pages/video/introduction/pgc/widgets/bangumi_panel.dart'; diff --git a/lib/pages/video/member/controller.dart b/lib/pages/video/member/controller.dart index 4f4345d10..ddcd3811a 100644 --- a/lib/pages/video/member/controller.dart +++ b/lib/pages/video/member/controller.dart @@ -1,10 +1,10 @@ import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/http/member.dart'; +import 'package:PiliPlus/models/common/member/contribute_type.dart'; import 'package:PiliPlus/models/member/info.dart'; import 'package:PiliPlus/models/space_archive/data.dart'; import 'package:PiliPlus/models/space_archive/item.dart'; import 'package:PiliPlus/pages/common/common_data_controller.dart'; -import 'package:PiliPlus/pages/member_contribute/view.dart' show ContributeType; import 'package:get/get.dart'; class HorizontalMemberPageController extends CommonDataController { diff --git a/lib/pages/video/member/view.dart b/lib/pages/video/member/view.dart index ebb3e6d82..bf10cb293 100644 --- a/lib/pages/video/member/view.dart +++ b/lib/pages/video/member/view.dart @@ -1,12 +1,11 @@ import 'package:PiliPlus/common/widgets/button/icon_button.dart'; import 'package:PiliPlus/common/widgets/custom_sliver_persistent_header_delegate.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; -import 'package:PiliPlus/common/widgets/interactiveviewer_gallery/interactiveviewer_gallery.dart' - show SourceModel; import 'package:PiliPlus/common/widgets/loading_widget/loading_widget.dart'; import 'package:PiliPlus/common/widgets/scroll_physics.dart'; import 'package:PiliPlus/common/widgets/video_card/video_card_h_member_video.dart'; import 'package:PiliPlus/http/loading_state.dart'; +import 'package:PiliPlus/models/common/image_preview_type.dart'; import 'package:PiliPlus/models/member/info.dart'; import 'package:PiliPlus/models/space_archive/item.dart'; import 'package:PiliPlus/pages/video/controller.dart'; diff --git a/lib/pages/video/reply/view.dart b/lib/pages/video/reply/view.dart index 9c017d5cf..9d6ab63b7 100644 --- a/lib/pages/video/reply/view.dart +++ b/lib/pages/video/reply/view.dart @@ -5,8 +5,8 @@ import 'package:PiliPlus/common/widgets/refresh_indicator.dart'; import 'package:PiliPlus/grpc/bilibili/main/community/reply/v1.pb.dart' show ReplyInfo; import 'package:PiliPlus/http/loading_state.dart'; -import 'package:PiliPlus/models/common/reply_sort_type.dart'; -import 'package:PiliPlus/models/common/reply_type.dart'; +import 'package:PiliPlus/models/common/reply/reply_sort_type.dart'; +import 'package:PiliPlus/models/common/reply/reply_type.dart'; import 'package:PiliPlus/pages/video/reply/controller.dart'; import 'package:PiliPlus/pages/video/reply/widgets/reply_item_grpc.dart'; import 'package:PiliPlus/utils/extension.dart'; diff --git a/lib/pages/video/reply_new/view.dart b/lib/pages/video/reply_new/view.dart index c7b0c334c..330838770 100644 --- a/lib/pages/video/reply_new/view.dart +++ b/lib/pages/video/reply_new/view.dart @@ -3,7 +3,8 @@ import 'dart:async'; import 'package:PiliPlus/common/widgets/button/toolbar_icon_button.dart'; import 'package:PiliPlus/http/video.dart'; import 'package:PiliPlus/main.dart'; -import 'package:PiliPlus/models/common/reply_type.dart'; +import 'package:PiliPlus/models/common/publish_panel_type.dart'; +import 'package:PiliPlus/models/common/reply/reply_type.dart'; import 'package:PiliPlus/pages/common/common_publish_page.dart'; import 'package:PiliPlus/pages/emote/view.dart'; import 'package:PiliPlus/utils/storage.dart'; diff --git a/lib/pages/video/reply_reply/controller.dart b/lib/pages/video/reply_reply/controller.dart index e9c92994d..5fe3425f2 100644 --- a/lib/pages/video/reply_reply/controller.dart +++ b/lib/pages/video/reply_reply/controller.dart @@ -2,7 +2,7 @@ import 'package:PiliPlus/grpc/bilibili/main/community/reply/v1.pb.dart' show ReplyInfo, DetailListReply, Mode; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/http/reply.dart'; -import 'package:PiliPlus/models/common/reply_type.dart'; +import 'package:PiliPlus/models/common/reply/reply_type.dart'; import 'package:PiliPlus/pages/common/reply_controller.dart'; import 'package:PiliPlus/utils/id_utils.dart'; import 'package:PiliPlus/utils/storage.dart'; diff --git a/lib/pages/video/reply_reply/view.dart b/lib/pages/video/reply_reply/view.dart index 98f610ef9..f1a54d1fe 100644 --- a/lib/pages/video/reply_reply/view.dart +++ b/lib/pages/video/reply_reply/view.dart @@ -4,7 +4,7 @@ import 'package:PiliPlus/common/widgets/refresh_indicator.dart'; import 'package:PiliPlus/grpc/bilibili/main/community/reply/v1.pb.dart' show ReplyInfo, Mode; import 'package:PiliPlus/http/loading_state.dart'; -import 'package:PiliPlus/models/common/reply_type.dart'; +import 'package:PiliPlus/models/common/reply/reply_type.dart'; import 'package:PiliPlus/pages/common/common_slide_page.dart'; import 'package:PiliPlus/pages/video/reply/widgets/reply_item_grpc.dart'; import 'package:PiliPlus/pages/video/reply_new/view.dart'; diff --git a/lib/pages/video/send_danmaku/view.dart b/lib/pages/video/send_danmaku/view.dart index 870de766a..5cc0c3fd1 100644 --- a/lib/pages/video/send_danmaku/view.dart +++ b/lib/pages/video/send_danmaku/view.dart @@ -3,6 +3,7 @@ import 'dart:async'; import 'package:PiliPlus/common/widgets/button/icon_button.dart'; import 'package:PiliPlus/http/danmaku.dart'; import 'package:PiliPlus/main.dart'; +import 'package:PiliPlus/models/common/publish_panel_type.dart'; import 'package:PiliPlus/pages/common/common_publish_page.dart'; import 'package:PiliPlus/pages/setting/slide_color_picker.dart'; import 'package:PiliPlus/utils/extension.dart'; diff --git a/lib/pages/video/view.dart b/lib/pages/video/view.dart index 48d0c1818..3273f1a7c 100644 --- a/lib/pages/video/view.dart +++ b/lib/pages/video/view.dart @@ -11,7 +11,8 @@ import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/main.dart'; import 'package:PiliPlus/models/bangumi/info.dart' as bangumi; import 'package:PiliPlus/models/bangumi/info.dart'; -import 'package:PiliPlus/models/common/reply_type.dart'; +import 'package:PiliPlus/models/common/episode_panel_type.dart'; +import 'package:PiliPlus/models/common/reply/reply_type.dart'; import 'package:PiliPlus/models/common/search_type.dart'; import 'package:PiliPlus/models/video_detail_res.dart' as video; import 'package:PiliPlus/pages/danmaku/view.dart'; diff --git a/lib/pages/video/widgets/header_control.dart b/lib/pages/video/widgets/header_control.dart index 65f6bf795..b8a37063e 100644 --- a/lib/pages/video/widgets/header_control.dart +++ b/lib/pages/video/widgets/header_control.dart @@ -6,8 +6,10 @@ import 'package:PiliPlus/common/widgets/button/icon_button.dart'; import 'package:PiliPlus/common/widgets/self_sized_horizontal_list.dart'; import 'package:PiliPlus/models/common/search_type.dart'; import 'package:PiliPlus/models/common/super_resolution_type.dart'; -import 'package:PiliPlus/models/video/play/CDN.dart'; -import 'package:PiliPlus/models/video/play/quality.dart'; +import 'package:PiliPlus/models/common/video/CDN.dart'; +import 'package:PiliPlus/models/common/video/audio_quality.dart'; +import 'package:PiliPlus/models/common/video/video_decode_type.dart'; +import 'package:PiliPlus/models/common/video/video_quality.dart'; import 'package:PiliPlus/models/video/play/url.dart'; import 'package:PiliPlus/pages/setting/widgets/select_dialog.dart'; import 'package:PiliPlus/pages/setting/widgets/switch_item.dart'; @@ -648,7 +650,7 @@ class HeaderControlState extends State { final int quality = videoFormat[i].quality!; videoDetailCtr ..currentVideoQa = - VideoQualityCode.fromCode(quality)! + VideoQualityExt.fromCode(quality)! ..updatePlayer(); // update @@ -657,7 +659,7 @@ class HeaderControlState extends State { .checkConnectivity() .then((res) { if (res.contains(ConnectivityResult.wifi)) { - oldQualityDesc = VideoQualityCode.fromCode( + oldQualityDesc = VideoQualityExt.fromCode( GStorage.defaultVideoQa)! .description; setting.put( @@ -665,7 +667,7 @@ class HeaderControlState extends State { quality, ); } else { - oldQualityDesc = VideoQualityCode.fromCode( + oldQualityDesc = VideoQualityExt.fromCode( GStorage.defaultVideoQaCellular)! .description; setting.put( @@ -675,7 +677,7 @@ class HeaderControlState extends State { } }); SmartDialog.showToast( - "默认画质由:$oldQualityDesc 变为:${VideoQualityCode.fromCode(quality)!.description}", + "默认画质由:$oldQualityDesc 变为:${VideoQualityExt.fromCode(quality)!.description}", ); }, // 可能包含会员解锁画质 @@ -743,7 +745,7 @@ class HeaderControlState extends State { final int quality = i.id!; videoDetailCtr ..currentAudioQa = - AudioQualityCode.fromCode(quality)! + AudioQualityExt.fromCode(quality)! ..updatePlayer(); // update @@ -752,7 +754,7 @@ class HeaderControlState extends State { .checkConnectivity() .then((res) { if (res.contains(ConnectivityResult.wifi)) { - oldQualityDesc = AudioQualityCode.fromCode( + oldQualityDesc = AudioQualityExt.fromCode( GStorage.defaultAudioQa)! .description; setting.put( @@ -760,7 +762,7 @@ class HeaderControlState extends State { quality, ); } else { - oldQualityDesc = AudioQualityCode.fromCode( + oldQualityDesc = AudioQualityExt.fromCode( GStorage.defaultAudioQaCellular)! .description; setting.put( @@ -770,7 +772,7 @@ class HeaderControlState extends State { } }); SmartDialog.showToast( - "默认音质由:$oldQualityDesc 变为:${AudioQualityCode.fromCode(quality)!.description}", + "默认音质由:$oldQualityDesc 变为:${AudioQualityExt.fromCode(quality)!.description}", ); }, contentPadding: @@ -803,7 +805,7 @@ class HeaderControlState extends State { // 选择解码格式 void showSetDecodeFormats() { // 当前选中的解码格式 - final VideoDecodeFormats currentDecodeFormats = + final VideoDecodeFormatType currentDecodeFormats = videoDetailCtr.currentDecodeFormats; final VideoItem firstVideo = videoDetailCtr.firstVideo; // 当前视频可用的解码格式 @@ -845,13 +847,13 @@ class HeaderControlState extends State { } videoDetailCtr ..currentDecodeFormats = - VideoDecodeFormatsCode.fromString(i)! + VideoDecodeFormatTypeExt.fromString(i)! ..updatePlayer(); Get.back(); }, contentPadding: const EdgeInsets.only(left: 20, right: 20), - title: Text(VideoDecodeFormatsCode.fromString(i)! + title: Text(VideoDecodeFormatTypeExt.fromString(i)! .description), subtitle: Text( i!, diff --git a/lib/pages/webview/view.dart b/lib/pages/webview/view.dart index 8e7927145..f1aa7c25a 100644 --- a/lib/pages/webview/view.dart +++ b/lib/pages/webview/view.dart @@ -1,6 +1,7 @@ import 'dart:io'; import 'package:PiliPlus/http/init.dart'; +import 'package:PiliPlus/models/common/webview_menu_type.dart'; import 'package:PiliPlus/utils/accounts/account.dart'; import 'package:PiliPlus/utils/app_scheme.dart'; import 'package:PiliPlus/utils/cache_manage.dart'; @@ -12,26 +13,6 @@ import 'package:flutter_inappwebview/flutter_inappwebview.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:get/get.dart'; -enum _WebviewMenuItem { - refresh, - copy, - openInBrowser, - clearCache, - resetCookie, - goBack, -} - -extension _WebviewMenuItemExt on _WebviewMenuItem { - String get title => const [ - '刷新', - '复制链接', - '浏览器中打开', - '清除缓存', - '重新设置Cookie', - '返回', - ][index]; -} - class WebviewPage extends StatefulWidget { const WebviewPage({super.key, this.url, this.oid, this.title, this.uaType}); @@ -96,22 +77,22 @@ class _WebviewPageState extends State { PopupMenuButton( onSelected: (item) async { switch (item) { - case _WebviewMenuItem.refresh: + case WebviewMenuItem.refresh: _webViewController?.reload(); break; - case _WebviewMenuItem.copy: + case WebviewMenuItem.copy: WebUri? uri = await _webViewController?.getUrl(); if (uri != null) { Utils.copyText(uri.toString()); } break; - case _WebviewMenuItem.openInBrowser: + case WebviewMenuItem.openInBrowser: WebUri? uri = await _webViewController?.getUrl(); if (uri != null) { PageUtils.launchURL(uri.toString()); } break; - case _WebviewMenuItem.clearCache: + case WebviewMenuItem.clearCache: try { await InAppWebViewController.clearAllCache(); await _webViewController?.clearHistory(); @@ -120,14 +101,14 @@ class _WebviewPageState extends State { SmartDialog.showToast(e.toString()); } break; - case _WebviewMenuItem.goBack: + case WebviewMenuItem.goBack: if (await _webViewController?.canGoBack() == true) { _webViewController?.goBack(); } else { Get.back(); } break; - case _WebviewMenuItem.resetCookie: + case WebviewMenuItem.resetCookie: final cookies = Accounts.main.cookieJar.toList(); for (var item in cookies) { await CookieManager().setCookie( @@ -144,16 +125,16 @@ class _WebviewPageState extends State { break; } }, - itemBuilder: (context) => >[ - ..._WebviewMenuItem.values - .sublist(0, _WebviewMenuItem.values.length - 1) + itemBuilder: (context) => >[ + ...WebviewMenuItem.values + .sublist(0, WebviewMenuItem.values.length - 1) .map((item) => PopupMenuItem( value: item, child: Text(item.title))), const PopupMenuDivider(), PopupMenuItem( - value: _WebviewMenuItem.goBack, + value: WebviewMenuItem.goBack, child: Text( - _WebviewMenuItem.goBack.title, + WebviewMenuItem.goBack.title, style: TextStyle( color: Theme.of(context).colorScheme.error), )), diff --git a/lib/pages/whisper_detail/view.dart b/lib/pages/whisper_detail/view.dart index fa522d8cd..7ec4d64b1 100644 --- a/lib/pages/whisper_detail/view.dart +++ b/lib/pages/whisper_detail/view.dart @@ -1,23 +1,24 @@ import 'dart:async'; + +import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/common/widgets/loading_widget/loading_widget.dart'; import 'package:PiliPlus/common/widgets/refresh_indicator.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/http/msg.dart'; +import 'package:PiliPlus/models/common/publish_panel_type.dart'; import 'package:PiliPlus/models/msg/session.dart'; import 'package:PiliPlus/pages/common/common_publish_page.dart'; import 'package:PiliPlus/pages/emote/view.dart'; +import 'package:PiliPlus/pages/whisper_detail/controller.dart'; +import 'package:PiliPlus/pages/whisper_detail/widget/chat_item.dart'; import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/feed_back.dart'; import 'package:PiliPlus/utils/utils.dart'; import 'package:flutter/material.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:get/get.dart'; -import 'package:mime/mime.dart'; - -import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; -import 'package:PiliPlus/pages/whisper_detail/controller.dart'; -import 'package:PiliPlus/utils/feed_back.dart'; import 'package:image_picker/image_picker.dart'; -import 'package:PiliPlus/pages/whisper_detail/widget/chat_item.dart'; +import 'package:mime/mime.dart'; class WhisperDetailPage extends CommonPublishPage { const WhisperDetailPage({ diff --git a/lib/pages/whisper_detail/widget/chat_item.dart b/lib/pages/whisper_detail/widget/chat_item.dart index 98cf7012e..99944f306 100644 --- a/lib/pages/whisper_detail/widget/chat_item.dart +++ b/lib/pages/whisper_detail/widget/chat_item.dart @@ -1,8 +1,9 @@ import 'dart:convert'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; -import 'package:PiliPlus/common/widgets/interactiveviewer_gallery/interactiveviewer_gallery.dart'; import 'package:PiliPlus/http/search.dart'; +import 'package:PiliPlus/models/common/image_preview_type.dart'; +import 'package:PiliPlus/models/common/msg/msg_type.dart'; import 'package:PiliPlus/models/msg/session.dart'; import 'package:PiliPlus/utils/extension.dart'; import 'package:PiliPlus/utils/id_utils.dart'; @@ -12,34 +13,6 @@ import 'package:flutter/material.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:get/get.dart'; -enum MsgType { - invalid(value: 0, label: "空空的~"), - text(value: 1, label: "文本消息"), - pic(value: 2, label: "图片消息"), - audio(value: 3, label: "语音消息"), - share(value: 4, label: "分享消息"), - revoke(value: 5, label: "撤回消息"), - customFace(value: 6, label: "自定义表情"), - shareV2(value: 7, label: "分享v2消息"), - sysCancel(value: 8, label: "系统撤销"), - miniProgram(value: 9, label: "小程序"), - notifyMsg(value: 10, label: "业务通知"), - archiveCard(value: 11, label: "投稿卡片"), - articleCard(value: 12, label: "专栏卡片"), - picCard(value: 13, label: "图片卡片"), - commonShare(value: 14, label: "异形卡片"), - autoReplyPush(value: 16, label: "自动回复推送"), - notifyText(value: 18, label: "文本提示"); - - final int value; - final String label; - const MsgType({required this.value, required this.label}); - static MsgType parse(int value) { - return MsgType.values - .firstWhere((e) => e.value == value, orElse: () => MsgType.invalid); - } -} - class ChatItem extends StatelessWidget { final MessageItem item; final List? eInfos; diff --git a/lib/plugin/pl_player/controller.dart b/lib/plugin/pl_player/controller.dart index 98fc7f6fa..c5cd9e571 100644 --- a/lib/plugin/pl_player/controller.dart +++ b/lib/plugin/pl_player/controller.dart @@ -7,6 +7,7 @@ import 'package:PiliPlus/common/widgets/pair.dart'; import 'package:PiliPlus/common/widgets/progress_bar/segment_progress_bar.dart'; import 'package:PiliPlus/http/init.dart'; import 'package:PiliPlus/http/video.dart'; +import 'package:PiliPlus/models/common/account_type.dart'; import 'package:PiliPlus/models/common/audio_normalization.dart'; import 'package:PiliPlus/models/common/sponsor_block/segment_type.dart'; import 'package:PiliPlus/models/common/sponsor_block/skip_type.dart'; diff --git a/lib/utils/accounts/account.dart b/lib/utils/accounts/account.dart index 19e1511f7..348e1d8cb 100644 --- a/lib/utils/accounts/account.dart +++ b/lib/utils/accounts/account.dart @@ -1,3 +1,4 @@ +import 'package:PiliPlus/models/common/account_type.dart'; import 'package:PiliPlus/utils/storage.dart'; import 'package:PiliPlus/utils/utils.dart'; import 'package:cookie_jar/cookie_jar.dart'; diff --git a/lib/utils/accounts/account_adapter.dart b/lib/utils/accounts/account_adapter.dart index e43f09024..2f4873374 100644 --- a/lib/utils/accounts/account_adapter.dart +++ b/lib/utils/accounts/account_adapter.dart @@ -1,5 +1,5 @@ +import 'package:PiliPlus/models/common/account_type.dart'; import 'package:PiliPlus/utils/accounts/account.dart'; -import 'package:PiliPlus/utils/storage.dart'; import 'package:cookie_jar/cookie_jar.dart'; import 'package:hive/hive.dart'; diff --git a/lib/utils/accounts/account_manager/account_mgr.dart b/lib/utils/accounts/account_manager/account_mgr.dart index 451261c8c..bbe4d5d25 100644 --- a/lib/utils/accounts/account_manager/account_mgr.dart +++ b/lib/utils/accounts/account_manager/account_mgr.dart @@ -4,6 +4,7 @@ import 'dart:io'; import 'package:PiliPlus/http/api.dart'; import 'package:PiliPlus/http/constants.dart'; +import 'package:PiliPlus/models/common/account_type.dart'; import 'package:PiliPlus/utils/accounts/account.dart'; import 'package:PiliPlus/utils/extension.dart'; import 'package:PiliPlus/utils/storage.dart'; diff --git a/lib/utils/accounts/account_type_adapter.dart b/lib/utils/accounts/account_type_adapter.dart index b0231e805..cb6de1a96 100644 --- a/lib/utils/accounts/account_type_adapter.dart +++ b/lib/utils/accounts/account_type_adapter.dart @@ -1,5 +1,5 @@ +import 'package:PiliPlus/models/common/account_type.dart'; import 'package:PiliPlus/utils/extension.dart'; -import 'package:PiliPlus/utils/storage.dart' show AccountType; import 'package:hive/hive.dart'; class AccountTypeAdapter extends TypeAdapter { diff --git a/lib/utils/app_scheme.dart b/lib/utils/app_scheme.dart index 0dce83e97..12ad202c2 100644 --- a/lib/utils/app_scheme.dart +++ b/lib/utils/app_scheme.dart @@ -1,7 +1,7 @@ import 'dart:async'; import 'package:PiliPlus/http/search.dart'; -import 'package:PiliPlus/models/common/reply_type.dart'; +import 'package:PiliPlus/models/common/reply/reply_type.dart'; import 'package:PiliPlus/pages/video/reply_reply/view.dart'; import 'package:PiliPlus/utils/extension.dart'; import 'package:PiliPlus/utils/id_utils.dart'; diff --git a/lib/utils/extension.dart b/lib/utils/extension.dart index 2431b7120..101fd39e7 100644 --- a/lib/utils/extension.dart +++ b/lib/utils/extension.dart @@ -1,5 +1,6 @@ import 'package:PiliPlus/common/widgets/interactiveviewer_gallery/hero_dialog_route.dart'; import 'package:PiliPlus/common/widgets/interactiveviewer_gallery/interactiveviewer_gallery.dart'; +import 'package:PiliPlus/models/common/image_preview_type.dart'; import 'package:floating/floating.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; diff --git a/lib/utils/login_utils.dart b/lib/utils/login_utils.dart index c09c78253..34bacac66 100644 --- a/lib/utils/login_utils.dart +++ b/lib/utils/login_utils.dart @@ -3,8 +3,8 @@ import 'dart:math'; import 'package:PiliPlus/grpc/grpc_repo.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/http/user.dart'; -import 'package:PiliPlus/models/common/dynamics_type.dart'; -import 'package:PiliPlus/models/common/tab_type.dart' hide tabsConfig; +import 'package:PiliPlus/models/common/dynamic/dynamics_type.dart'; +import 'package:PiliPlus/models/common/home_tab_type.dart' hide tabsConfig; import 'package:PiliPlus/models/user/info.dart'; import 'package:PiliPlus/models/user/stat.dart'; import 'package:PiliPlus/pages/bangumi/controller.dart'; @@ -91,14 +91,14 @@ class LoginUtils { } catch (_) {} try { - Get.find(tag: TabType.bangumi.name) + Get.find(tag: HomeTabType.bangumi.name) ..isLogin.value = true ..mid = data.mid ..queryBangumiFollow(); } catch (_) {} try { - Get.find(tag: TabType.cinema.name) + Get.find(tag: HomeTabType.cinema.name) ..isLogin.value = true ..mid = data.mid ..queryBangumiFollow(); @@ -164,14 +164,14 @@ class LoginUtils { } try { - Get.find(tag: TabType.bangumi.name) + Get.find(tag: HomeTabType.bangumi.name) ..mid = null ..isLogin.value = false ..followState.value = LoadingState.loading(); } catch (_) {} try { - Get.find(tag: TabType.cinema.name) + Get.find(tag: HomeTabType.cinema.name) ..mid = null ..isLogin.value = false ..followState.value = LoadingState.loading(); diff --git a/lib/utils/page_utils.dart b/lib/utils/page_utils.dart index 51608faa4..2b4112547 100644 --- a/lib/utils/page_utils.dart +++ b/lib/utils/page_utils.dart @@ -5,6 +5,7 @@ import 'package:PiliPlus/grpc/grpc_repo.dart'; import 'package:PiliPlus/http/dynamics.dart'; import 'package:PiliPlus/http/search.dart'; import 'package:PiliPlus/models/bangumi/info.dart'; +import 'package:PiliPlus/models/common/image_preview_type.dart'; import 'package:PiliPlus/models/common/search_type.dart'; import 'package:PiliPlus/models/dynamics/result.dart'; import 'package:PiliPlus/models/live/item.dart'; diff --git a/lib/utils/storage.dart b/lib/utils/storage.dart index 674184bb9..636d45064 100644 --- a/lib/utils/storage.dart +++ b/lib/utils/storage.dart @@ -6,21 +6,25 @@ import 'package:PiliPlus/common/widgets/pair.dart'; import 'package:PiliPlus/common/widgets/refresh_indicator.dart' show kDragContainerExtentPercentage, displacement; import 'package:PiliPlus/http/constants.dart'; -import 'package:PiliPlus/models/common/dynamic_badge_mode.dart'; +import 'package:PiliPlus/models/common/account_type.dart'; +import 'package:PiliPlus/models/common/dynamic/dynamic_badge_mode.dart'; +import 'package:PiliPlus/models/common/dynamic/up_panel_position.dart'; +import 'package:PiliPlus/models/common/home_tab_type.dart'; +import 'package:PiliPlus/models/common/member/tab_type.dart'; +import 'package:PiliPlus/models/common/msg/msg_unread_type.dart'; import 'package:PiliPlus/models/common/sponsor_block/segment_type.dart'; import 'package:PiliPlus/models/common/sponsor_block/skip_type.dart'; -import 'package:PiliPlus/models/common/tab_type.dart'; -import 'package:PiliPlus/models/common/theme_type.dart'; -import 'package:PiliPlus/models/common/up_panel_position.dart'; -import 'package:PiliPlus/models/live/quality.dart'; +import 'package:PiliPlus/models/common/theme/theme_type.dart'; +import 'package:PiliPlus/models/common/video/CDN.dart'; +import 'package:PiliPlus/models/common/video/audio_quality.dart'; +import 'package:PiliPlus/models/common/video/live_quality.dart'; +import 'package:PiliPlus/models/common/video/subtitle_pref_type.dart'; +import 'package:PiliPlus/models/common/video/video_decode_type.dart'; +import 'package:PiliPlus/models/common/video/video_quality.dart'; import 'package:PiliPlus/models/model_owner.dart'; import 'package:PiliPlus/models/user/danmaku_rule.dart'; import 'package:PiliPlus/models/user/danmaku_rule_adapter.dart'; import 'package:PiliPlus/models/user/info.dart'; -import 'package:PiliPlus/models/video/play/CDN.dart'; -import 'package:PiliPlus/models/video/play/quality.dart'; -import 'package:PiliPlus/models/video/play/subtitle.dart'; -import 'package:PiliPlus/pages/member/controller.dart' show MemberTabType; import 'package:PiliPlus/pages/mine/controller.dart'; import 'package:PiliPlus/plugin/pl_player/models/bottom_progress_behavior.dart'; import 'package:PiliPlus/plugin/pl_player/models/fullscreen_mode.dart'; @@ -54,7 +58,7 @@ class GStorage { static List get tabbarSort => List.from(setting.get(SettingBoxKey.tabbarSort, - defaultValue: TabType.values.map((item) => item.name).toList())); + defaultValue: HomeTabType.values.map((item) => item.name).toList())); static List> get blockSettings { List list = List.from(setting.get( @@ -137,7 +141,7 @@ class GStorage { static String get defaultSubtitlePreference => setting.get(SettingBoxKey.subtitlePreference, - defaultValue: SubtitlePreference.values.first.code); + defaultValue: SubtitlePrefType.values.first.code); static bool get useRelativeSlide => setting.get(SettingBoxKey.useRelativeSlide, defaultValue: false); @@ -167,12 +171,12 @@ class GStorage { static String get defaultDecode => setting.get( SettingBoxKey.defaultDecode, - defaultValue: VideoDecodeFormats.values.last.code, + defaultValue: VideoDecodeFormatType.values.last.code, ); static String get secondDecode => setting.get( SettingBoxKey.secondDecode, - defaultValue: VideoDecodeFormats.values[1].code, + defaultValue: VideoDecodeFormatType.values[1].code, ); static String get hardwareDecoding => setting.get( @@ -973,14 +977,3 @@ class Accounts { return accountMode[key]!; } } - -enum AccountType { - main, - heartbeat, - recommend, - video, -} - -extension AccountTypeExt on AccountType { - String get title => const ['主账号', '记录观看', '推荐', '视频取流'][index]; -} diff --git a/lib/utils/video_utils.dart b/lib/utils/video_utils.dart index a46518b2d..a37b0a4b0 100644 --- a/lib/utils/video_utils.dart +++ b/lib/utils/video_utils.dart @@ -1,5 +1,5 @@ +import 'package:PiliPlus/models/common/video/CDN.dart'; import 'package:PiliPlus/models/live/room_info.dart'; -import 'package:PiliPlus/models/video/play/CDN.dart'; import 'package:PiliPlus/models/video/play/url.dart'; import 'package:PiliPlus/utils/extension.dart'; import 'package:PiliPlus/utils/storage.dart';