├── .gitignore
├── LICENSE
├── README.md
├── bikabika.sln
└── bikabika
├── App.cpp
├── App.h
├── App.idl
├── App.xaml
├── Assets
├── LargeTile.scale-100.png
├── LargeTile.scale-125.png
├── LargeTile.scale-150.png
├── LargeTile.scale-200.png
├── LargeTile.scale-400.png
├── LockScreenLogo.scale-200.png
├── Picacgs
│ ├── cat_forum.jpg
│ ├── cat_game.jpg
│ ├── cat_latest.jpg
│ ├── cat_leaderboard.jpg
│ ├── cat_love_pica.jpg
│ ├── cat_random.jpg
│ ├── cat_support.jpg
│ ├── chat_bg_image.png
│ ├── exit.png
│ ├── ic_launcher.png
│ ├── icon_256.png
│ ├── icon_adult.png
│ ├── icon_announcement.png
│ ├── icon_block.png
│ ├── icon_block_gray.png
│ ├── icon_empty.png
│ ├── icon_exclamation_error.png
│ ├── icon_exp.png
│ ├── icon_exp_gray.png
│ ├── icon_game_recommend.png
│ ├── icon_leave.png
│ ├── icon_no_comment.png
│ ├── icon_question_error.png
│ ├── icon_success.png
│ ├── icon_top_comment.png
│ ├── icon_unknown_error.png
│ ├── login_lock.png
│ ├── login_mail.png
│ ├── logo_round.png
│ ├── picacomic_2.png
│ ├── placeholder_avatar.png
│ ├── placeholder_avatar_2.png
│ ├── placeholder_transparent.png
│ ├── push_in.png
│ ├── register_bday.png
│ ├── register_gender.png
│ ├── register_name.png
│ ├── search.png
│ ├── splash_img.jpg
│ └── userlogo.png
├── SmallTile.scale-100.png
├── SmallTile.scale-125.png
├── SmallTile.scale-150.png
├── SmallTile.scale-200.png
├── SmallTile.scale-400.png
├── SplashScreen.scale-100.png
├── SplashScreen.scale-125.png
├── SplashScreen.scale-150.png
├── SplashScreen.scale-200.png
├── SplashScreen.scale-400.png
├── Square150x150Logo.scale-100.png
├── Square150x150Logo.scale-125.png
├── Square150x150Logo.scale-150.png
├── Square150x150Logo.scale-200.png
├── Square150x150Logo.scale-400.png
├── Square44x44Logo.altform-lightunplated_targetsize-16.png
├── Square44x44Logo.altform-lightunplated_targetsize-24.png
├── Square44x44Logo.altform-lightunplated_targetsize-256.png
├── Square44x44Logo.altform-lightunplated_targetsize-32.png
├── Square44x44Logo.altform-lightunplated_targetsize-48.png
├── Square44x44Logo.altform-unplated_targetsize-16.png
├── Square44x44Logo.altform-unplated_targetsize-256.png
├── Square44x44Logo.altform-unplated_targetsize-32.png
├── Square44x44Logo.altform-unplated_targetsize-48.png
├── Square44x44Logo.scale-100.png
├── Square44x44Logo.scale-125.png
├── Square44x44Logo.scale-150.png
├── Square44x44Logo.scale-200.png
├── Square44x44Logo.scale-400.png
├── Square44x44Logo.targetsize-16.png
├── Square44x44Logo.targetsize-24.png
├── Square44x44Logo.targetsize-24_altform-unplated.png
├── Square44x44Logo.targetsize-256.png
├── Square44x44Logo.targetsize-32.png
├── Square44x44Logo.targetsize-48.png
├── StoreLogo.backup.png
├── StoreLogo.png
├── StoreLogo.scale-100.png
├── StoreLogo.scale-125.png
├── StoreLogo.scale-150.png
├── StoreLogo.scale-200.png
├── StoreLogo.scale-400.png
├── Wide310x150Logo.scale-100.png
├── Wide310x150Logo.scale-125.png
├── Wide310x150Logo.scale-150.png
├── Wide310x150Logo.scale-200.png
├── Wide310x150Logo.scale-400.png
├── logo.png
└── logo2.png
├── BikaImage.cpp
├── BikaImage.h
├── BikaImage.idl
├── BikaImage.xaml
├── ClassificationPage.cpp
├── ClassificationPage.h
├── ClassificationPage.idl
├── ClassificationPage.xaml
├── ComicPage.cpp
├── ComicPage.h
├── ComicPage.idl
├── ComicPage.xaml
├── CommentView.cpp
├── CommentView.h
├── CommentView.idl
├── DownloadPage.cpp
├── DownloadPage.h
├── DownloadPage.idl
├── DownloadPage.xaml
├── HomePage.cpp
├── HomePage.h
├── HomePage.idl
├── HomePage.xaml
├── InfoPage.cpp
├── InfoPage.h
├── InfoPage.idl
├── InfoPage.xaml
├── MainPage.cpp
├── MainPage.h
├── MainPage.idl
├── MainPage.xaml
├── Package.appxmanifest
├── PicArgs.cpp
├── PicArgs.h
├── PicArgs.idl
├── PicPage.cpp
├── PicPage.h
├── PicPage.idl
├── PicPage.xaml
├── PropertySheet.props
├── Resources
└── zh-cn
│ └── Resources.resw
├── SettingsPage.cpp
├── SettingsPage.h
├── SettingsPage.idl
├── SettingsPage.xaml
├── Themes
└── BikaTheme.xaml
├── UserPage.cpp
├── UserPage.h
├── UserPage.idl
├── UserPage.xaml
├── Utils
├── ComicArgs.cpp
├── ComicArgs.h
├── ComicArgs.idl
├── KeywordBox.cpp
├── KeywordBox.h
└── KeywordBox.idl
├── bikabika.vcxproj
├── bikabika.vcxproj.filters
├── bikabika.vcxproj.user
├── bikabika_TemporaryKey.pfx
├── packages.config
├── pch.cpp
└── pch.h
/.gitignore:
--------------------------------------------------------------------------------
1 | ################################################################################
2 | # 此 .gitignore 文件已由 Microsoft(R) Visual Studio 自动创建。
3 | ################################################################################
4 |
5 | /.vs/bikabika
6 | /bikabika/Generated Files
7 | *.txt
8 | /packages/Microsoft.Windows.CppWinRT.2.0.210806.1
9 | /packages
10 | /bikabika/x64/Debug
11 | /x64/Debug/bikabika
12 | /bikabika/x64/Release
13 | /x64/Release/bikabika
14 | /AppPackages/bikabika/
15 | /ARM
16 | /bikabika/ARM
17 | /bikabika/ARM/Release
18 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | # 嗶咔漫畫UWP版🍍
9 |
10 | ✨ 该项目作为插件嵌入到新的应用[ShadowViewer](https://github.com/kitUIN/ShadowViewer)中✨
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 | ## 本项目已停止维护,请移步到新项目->[哔咔插件](https://github.com/kitUIN/ShadowViewer.Plugin.Bika)
31 |
32 |
33 |
34 |
35 | ## 引言📖
36 |
37 | > C++ 100%🆗
38 | - 美观简洁
39 | - 为Windows平台开发的UWP版嗶咔漫畫
40 | - 有问题或者建议可以提issue
41 | - 支持项目可以点个Star✨呢~
42 | - 点个Watch👀能随时了解开发动态呢~
43 | - [Telegram频道](https://t.me/bikabikaUWP) 将会提前发布测试版以供测试
44 |
45 | > 刚学C++, 做个项目练练手
46 | >
47 | > 当前为早期开发版本,bug较多,功能不全,等我慢慢开发
48 |
49 | ## 使用指南✏️
50 |
51 | ### 安装🍩
52 |
53 | 1.打开`Release` 页面,找到最新版本,并选择适用于当前系统的安装包下载。
54 |
55 | > 注:当前仍为早期开发版,功能不齐
56 |
57 | 2.在Windows `系统设置` 中打开 `开发者模式` 。
58 |
59 | 3.压缩包下载完成后,解压压缩包
60 |
61 | 4.在管理员模式下,右键解压后的 `install.ps1` 脚本,`使用 PowerShell 运行` (不是PowerShell Core),根据提示进行安装。
62 |
63 | 保姆级教程(施工中)
64 |
65 | ### 关于代理💗
66 |
67 | 由于UWP软件是无法使用外部代理的,我们需要一些工具来帮助我们实现使用代理的功能。
68 |
69 | 推荐使用Clash\
70 | 
71 | 
72 |
73 | 保存后就可以使用Clash代理了
74 |
75 | 保姆级教程(施工中)
76 |
77 | ## 展示🍀
78 | > 此为重制版新UI,目前仅在[Telegram频道](https://t.me/bikabikaUWP) 测试
79 | > 待完整开发后在Github发布
80 | 
81 | 
82 | 
83 | 
84 | 
85 | 暗系主题:
86 | 
87 | 磁贴:
88 | 
89 | ## 功能📝
90 | 以下为重置版功能列表
91 | * 登陆
92 |
93 | * [x] 登陆
94 |
95 | * [ ] 自动测速分流
96 |
97 | * [x] 多用户切换
98 |
99 | * 个人信息
100 |
101 | * [ ] 个人信息
102 |
103 | * [ ] 打卡
104 |
105 | * [ ] 收藏
106 |
107 | * [ ] 浏览历史
108 |
109 | * 主页
110 |
111 | * [ ] 公告栏
112 |
113 | * [ ] 本子神魔
114 |
115 | * 分区
116 |
117 | * [ ] 哔咔排行榜
118 |
119 | * [x] 随机本子
120 |
121 | * [x] 最近更新
122 |
123 | * [x] 其他主要分区
124 |
125 | * 搜索
126 |
127 | * [x] 搜索栏自动建议大家都在搜的关键字
128 |
129 | * [x] 搜索
130 |
131 | * [x] 搜索栏显示历史记录
132 |
133 | * [x] 点击标签搜索
134 |
135 | * [ ] 点击作者搜索
136 |
137 | * 漫画
138 |
139 | * [x] 收藏
140 |
141 | * [x] 爱心
142 |
143 | * [x] 评论区
144 |
145 | * [x] 发送评论
146 |
147 | * [ ] 封印本子
148 |
149 | * [ ] 下载
150 |
151 | * 看图
152 |
153 | * [ ] 全屏
154 |
155 | * [ ] 进度条
156 |
157 | * 游戏
158 |
159 | * [ ] 界面
160 |
161 |
162 |
163 |
--------------------------------------------------------------------------------
/bikabika.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 12.00
3 | # Visual Studio Version 17
4 | VisualStudioVersion = 17.2.32519.379
5 | MinimumVisualStudioVersion = 10.0.40219.1
6 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "bikabika", "bikabika\bikabika.vcxproj", "{42EAA1F1-32B3-4181-BB7D-2CC48932AD58}"
7 | EndProject
8 | Global
9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
10 | Debug|ARM = Debug|ARM
11 | Debug|ARM64 = Debug|ARM64
12 | Debug|x64 = Debug|x64
13 | Debug|x86 = Debug|x86
14 | Release|ARM = Release|ARM
15 | Release|ARM64 = Release|ARM64
16 | Release|x64 = Release|x64
17 | Release|x86 = Release|x86
18 | EndGlobalSection
19 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
20 | {42EAA1F1-32B3-4181-BB7D-2CC48932AD58}.Debug|ARM.ActiveCfg = Debug|ARM
21 | {42EAA1F1-32B3-4181-BB7D-2CC48932AD58}.Debug|ARM.Build.0 = Debug|ARM
22 | {42EAA1F1-32B3-4181-BB7D-2CC48932AD58}.Debug|ARM.Deploy.0 = Debug|ARM
23 | {42EAA1F1-32B3-4181-BB7D-2CC48932AD58}.Debug|ARM64.ActiveCfg = Debug|ARM64
24 | {42EAA1F1-32B3-4181-BB7D-2CC48932AD58}.Debug|ARM64.Build.0 = Debug|ARM64
25 | {42EAA1F1-32B3-4181-BB7D-2CC48932AD58}.Debug|ARM64.Deploy.0 = Debug|ARM64
26 | {42EAA1F1-32B3-4181-BB7D-2CC48932AD58}.Debug|x64.ActiveCfg = Debug|x64
27 | {42EAA1F1-32B3-4181-BB7D-2CC48932AD58}.Debug|x64.Build.0 = Debug|x64
28 | {42EAA1F1-32B3-4181-BB7D-2CC48932AD58}.Debug|x64.Deploy.0 = Debug|x64
29 | {42EAA1F1-32B3-4181-BB7D-2CC48932AD58}.Debug|x86.ActiveCfg = Debug|Win32
30 | {42EAA1F1-32B3-4181-BB7D-2CC48932AD58}.Debug|x86.Build.0 = Debug|Win32
31 | {42EAA1F1-32B3-4181-BB7D-2CC48932AD58}.Debug|x86.Deploy.0 = Debug|Win32
32 | {42EAA1F1-32B3-4181-BB7D-2CC48932AD58}.Release|ARM.ActiveCfg = Release|ARM
33 | {42EAA1F1-32B3-4181-BB7D-2CC48932AD58}.Release|ARM.Build.0 = Release|ARM
34 | {42EAA1F1-32B3-4181-BB7D-2CC48932AD58}.Release|ARM.Deploy.0 = Release|ARM
35 | {42EAA1F1-32B3-4181-BB7D-2CC48932AD58}.Release|ARM64.ActiveCfg = Release|ARM64
36 | {42EAA1F1-32B3-4181-BB7D-2CC48932AD58}.Release|ARM64.Build.0 = Release|ARM64
37 | {42EAA1F1-32B3-4181-BB7D-2CC48932AD58}.Release|ARM64.Deploy.0 = Release|ARM64
38 | {42EAA1F1-32B3-4181-BB7D-2CC48932AD58}.Release|x64.ActiveCfg = Release|x64
39 | {42EAA1F1-32B3-4181-BB7D-2CC48932AD58}.Release|x64.Build.0 = Release|x64
40 | {42EAA1F1-32B3-4181-BB7D-2CC48932AD58}.Release|x64.Deploy.0 = Release|x64
41 | {42EAA1F1-32B3-4181-BB7D-2CC48932AD58}.Release|x86.ActiveCfg = Release|Win32
42 | {42EAA1F1-32B3-4181-BB7D-2CC48932AD58}.Release|x86.Build.0 = Release|Win32
43 | {42EAA1F1-32B3-4181-BB7D-2CC48932AD58}.Release|x86.Deploy.0 = Release|Win32
44 | EndGlobalSection
45 | GlobalSection(SolutionProperties) = preSolution
46 | HideSolutionNode = FALSE
47 | EndGlobalSection
48 | GlobalSection(ExtensibilityGlobals) = postSolution
49 | SolutionGuid = {86C695F4-B989-4413-BFE3-D2BBC515A808}
50 | EndGlobalSection
51 | EndGlobal
52 |
--------------------------------------------------------------------------------
/bikabika/App.cpp:
--------------------------------------------------------------------------------
1 | #include "pch.h"
2 |
3 | #include "App.h"
4 | #include "MainPage.h"
5 |
6 | using namespace winrt;
7 | using namespace Windows::ApplicationModel;
8 | using namespace Windows::ApplicationModel::Activation;
9 | using namespace Windows::Foundation;
10 | using namespace Windows::UI::Xaml;
11 | using namespace Windows::UI::Xaml::Controls;
12 | using namespace Windows::UI::Xaml::Navigation;
13 | using namespace bikabika;
14 | using namespace bikabika::implementation;
15 |
16 | ///
17 | /// Initializes the singleton application object. This is the first line of authored code
18 | /// executed, and as such is the logical equivalent of main() or WinMain().
19 | ///
20 | App::App()
21 | {
22 | InitializeComponent();
23 | Suspending({ this, &App::OnSuspending });
24 |
25 | #if defined _DEBUG && !defined DISABLE_XAML_GENERATED_BREAK_ON_UNHANDLED_EXCEPTION
26 | UnhandledException([this](IInspectable const&, UnhandledExceptionEventArgs const& e)
27 | {
28 | if (IsDebuggerPresent())
29 | {
30 | auto errorMessage = e.Message();
31 | __debugbreak();
32 | }
33 | });
34 | #endif
35 | }
36 |
37 | ///
38 | /// Invoked when the application is launched normally by the end user. Other entry points
39 | /// will be used such as when the application is launched to open a specific file.
40 | ///
41 | /// Details about the launch request and process.
42 | void App::OnLaunched(LaunchActivatedEventArgs const& e)
43 | {
44 | Frame rootFrame{ nullptr };
45 | auto content = Window::Current().Content();
46 | if (content)
47 | {
48 | rootFrame = content.try_as();
49 | }
50 |
51 | // Do not repeat app initialization when the Window already has content,
52 | // just ensure that the window is active
53 | if (rootFrame == nullptr)
54 | {
55 | // Create a Frame to act as the navigation context and associate it with
56 | // a SuspensionManager key
57 | rootFrame = Frame();
58 |
59 | rootFrame.NavigationFailed({ this, &App::OnNavigationFailed });
60 |
61 | if (e.PreviousExecutionState() == ApplicationExecutionState::Terminated)
62 | {
63 | // Restore the saved session state only when appropriate, scheduling the
64 | // final launch steps after the restore is complete
65 | }
66 |
67 | if (e.PrelaunchActivated() == false)
68 | {
69 | if (rootFrame.Content() == nullptr)
70 | {
71 | // When the navigation stack isn't restored navigate to the first page,
72 | // configuring the new page by passing required information as a navigation
73 | // parameter
74 | rootFrame.Navigate(xaml_typename(), box_value(e.Arguments()));
75 | }
76 | // Place the frame in the current Window
77 | Window::Current().Content(rootFrame);
78 | // Ensure the current window is active
79 | Window::Current().Activate();
80 | }
81 | }
82 | else
83 | {
84 | if (e.PrelaunchActivated() == false)
85 | {
86 | if (rootFrame.Content() == nullptr)
87 | {
88 | // When the navigation stack isn't restored navigate to the first page,
89 | // configuring the new page by passing required information as a navigation
90 | // parameter
91 | rootFrame.Navigate(xaml_typename(), box_value(e.Arguments()));
92 | }
93 | // Ensure the current window is active
94 | Window::Current().Activate();
95 | }
96 | }
97 | }
98 |
99 | ///
100 | /// Invoked when application execution is being suspended. Application state is saved
101 | /// without knowing whether the application will be terminated or resumed with the contents
102 | /// of memory still intact.
103 | ///
104 | /// The source of the suspend request.
105 | /// Details about the suspend request.
106 | void App::OnSuspending([[maybe_unused]] IInspectable const& sender, [[maybe_unused]] SuspendingEventArgs const& e)
107 | {
108 | // Save application state and stop any background activity
109 | }
110 |
111 | ///
112 | /// Invoked when Navigation to a certain page fails
113 | ///
114 | /// The Frame which failed navigation
115 | /// Details about the navigation failure
116 | void App::OnNavigationFailed(IInspectable const&, NavigationFailedEventArgs const& /*e*/)
117 | {
118 | //throw hresult_error(E_FAIL, hstring(L"Failed to load Page ") + e.SourcePageType().Name);
119 | }
--------------------------------------------------------------------------------
/bikabika/App.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "App.xaml.g.h"
3 |
4 | namespace winrt::bikabika::implementation
5 | {
6 | struct App : AppT
7 | {
8 | App();
9 |
10 | void OnLaunched(Windows::ApplicationModel::Activation::LaunchActivatedEventArgs const&);
11 | void OnSuspending(IInspectable const&, Windows::ApplicationModel::SuspendingEventArgs const&);
12 | void OnNavigationFailed(IInspectable const&, Windows::UI::Xaml::Navigation::NavigationFailedEventArgs const&);
13 | };
14 | }
15 |
--------------------------------------------------------------------------------
/bikabika/App.idl:
--------------------------------------------------------------------------------
1 | namespace bikabika
2 | {
3 | }
4 |
--------------------------------------------------------------------------------
/bikabika/App.xaml:
--------------------------------------------------------------------------------
1 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/bikabika/Assets/LargeTile.scale-100.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kitUIN/bikabika/d7e974fee8cbad409a701f538561c4e06487389b/bikabika/Assets/LargeTile.scale-100.png
--------------------------------------------------------------------------------
/bikabika/Assets/LargeTile.scale-125.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kitUIN/bikabika/d7e974fee8cbad409a701f538561c4e06487389b/bikabika/Assets/LargeTile.scale-125.png
--------------------------------------------------------------------------------
/bikabika/Assets/LargeTile.scale-150.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kitUIN/bikabika/d7e974fee8cbad409a701f538561c4e06487389b/bikabika/Assets/LargeTile.scale-150.png
--------------------------------------------------------------------------------
/bikabika/Assets/LargeTile.scale-200.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kitUIN/bikabika/d7e974fee8cbad409a701f538561c4e06487389b/bikabika/Assets/LargeTile.scale-200.png
--------------------------------------------------------------------------------
/bikabika/Assets/LargeTile.scale-400.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kitUIN/bikabika/d7e974fee8cbad409a701f538561c4e06487389b/bikabika/Assets/LargeTile.scale-400.png
--------------------------------------------------------------------------------
/bikabika/Assets/LockScreenLogo.scale-200.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kitUIN/bikabika/d7e974fee8cbad409a701f538561c4e06487389b/bikabika/Assets/LockScreenLogo.scale-200.png
--------------------------------------------------------------------------------
/bikabika/Assets/Picacgs/cat_forum.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kitUIN/bikabika/d7e974fee8cbad409a701f538561c4e06487389b/bikabika/Assets/Picacgs/cat_forum.jpg
--------------------------------------------------------------------------------
/bikabika/Assets/Picacgs/cat_game.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kitUIN/bikabika/d7e974fee8cbad409a701f538561c4e06487389b/bikabika/Assets/Picacgs/cat_game.jpg
--------------------------------------------------------------------------------
/bikabika/Assets/Picacgs/cat_latest.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kitUIN/bikabika/d7e974fee8cbad409a701f538561c4e06487389b/bikabika/Assets/Picacgs/cat_latest.jpg
--------------------------------------------------------------------------------
/bikabika/Assets/Picacgs/cat_leaderboard.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kitUIN/bikabika/d7e974fee8cbad409a701f538561c4e06487389b/bikabika/Assets/Picacgs/cat_leaderboard.jpg
--------------------------------------------------------------------------------
/bikabika/Assets/Picacgs/cat_love_pica.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kitUIN/bikabika/d7e974fee8cbad409a701f538561c4e06487389b/bikabika/Assets/Picacgs/cat_love_pica.jpg
--------------------------------------------------------------------------------
/bikabika/Assets/Picacgs/cat_random.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kitUIN/bikabika/d7e974fee8cbad409a701f538561c4e06487389b/bikabika/Assets/Picacgs/cat_random.jpg
--------------------------------------------------------------------------------
/bikabika/Assets/Picacgs/cat_support.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kitUIN/bikabika/d7e974fee8cbad409a701f538561c4e06487389b/bikabika/Assets/Picacgs/cat_support.jpg
--------------------------------------------------------------------------------
/bikabika/Assets/Picacgs/chat_bg_image.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kitUIN/bikabika/d7e974fee8cbad409a701f538561c4e06487389b/bikabika/Assets/Picacgs/chat_bg_image.png
--------------------------------------------------------------------------------
/bikabika/Assets/Picacgs/exit.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kitUIN/bikabika/d7e974fee8cbad409a701f538561c4e06487389b/bikabika/Assets/Picacgs/exit.png
--------------------------------------------------------------------------------
/bikabika/Assets/Picacgs/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kitUIN/bikabika/d7e974fee8cbad409a701f538561c4e06487389b/bikabika/Assets/Picacgs/ic_launcher.png
--------------------------------------------------------------------------------
/bikabika/Assets/Picacgs/icon_256.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kitUIN/bikabika/d7e974fee8cbad409a701f538561c4e06487389b/bikabika/Assets/Picacgs/icon_256.png
--------------------------------------------------------------------------------
/bikabika/Assets/Picacgs/icon_adult.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kitUIN/bikabika/d7e974fee8cbad409a701f538561c4e06487389b/bikabika/Assets/Picacgs/icon_adult.png
--------------------------------------------------------------------------------
/bikabika/Assets/Picacgs/icon_announcement.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kitUIN/bikabika/d7e974fee8cbad409a701f538561c4e06487389b/bikabika/Assets/Picacgs/icon_announcement.png
--------------------------------------------------------------------------------
/bikabika/Assets/Picacgs/icon_block.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kitUIN/bikabika/d7e974fee8cbad409a701f538561c4e06487389b/bikabika/Assets/Picacgs/icon_block.png
--------------------------------------------------------------------------------
/bikabika/Assets/Picacgs/icon_block_gray.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kitUIN/bikabika/d7e974fee8cbad409a701f538561c4e06487389b/bikabika/Assets/Picacgs/icon_block_gray.png
--------------------------------------------------------------------------------
/bikabika/Assets/Picacgs/icon_empty.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kitUIN/bikabika/d7e974fee8cbad409a701f538561c4e06487389b/bikabika/Assets/Picacgs/icon_empty.png
--------------------------------------------------------------------------------
/bikabika/Assets/Picacgs/icon_exclamation_error.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kitUIN/bikabika/d7e974fee8cbad409a701f538561c4e06487389b/bikabika/Assets/Picacgs/icon_exclamation_error.png
--------------------------------------------------------------------------------
/bikabika/Assets/Picacgs/icon_exp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kitUIN/bikabika/d7e974fee8cbad409a701f538561c4e06487389b/bikabika/Assets/Picacgs/icon_exp.png
--------------------------------------------------------------------------------
/bikabika/Assets/Picacgs/icon_exp_gray.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kitUIN/bikabika/d7e974fee8cbad409a701f538561c4e06487389b/bikabika/Assets/Picacgs/icon_exp_gray.png
--------------------------------------------------------------------------------
/bikabika/Assets/Picacgs/icon_game_recommend.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kitUIN/bikabika/d7e974fee8cbad409a701f538561c4e06487389b/bikabika/Assets/Picacgs/icon_game_recommend.png
--------------------------------------------------------------------------------
/bikabika/Assets/Picacgs/icon_leave.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kitUIN/bikabika/d7e974fee8cbad409a701f538561c4e06487389b/bikabika/Assets/Picacgs/icon_leave.png
--------------------------------------------------------------------------------
/bikabika/Assets/Picacgs/icon_no_comment.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kitUIN/bikabika/d7e974fee8cbad409a701f538561c4e06487389b/bikabika/Assets/Picacgs/icon_no_comment.png
--------------------------------------------------------------------------------
/bikabika/Assets/Picacgs/icon_question_error.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kitUIN/bikabika/d7e974fee8cbad409a701f538561c4e06487389b/bikabika/Assets/Picacgs/icon_question_error.png
--------------------------------------------------------------------------------
/bikabika/Assets/Picacgs/icon_success.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kitUIN/bikabika/d7e974fee8cbad409a701f538561c4e06487389b/bikabika/Assets/Picacgs/icon_success.png
--------------------------------------------------------------------------------
/bikabika/Assets/Picacgs/icon_top_comment.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kitUIN/bikabika/d7e974fee8cbad409a701f538561c4e06487389b/bikabika/Assets/Picacgs/icon_top_comment.png
--------------------------------------------------------------------------------
/bikabika/Assets/Picacgs/icon_unknown_error.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kitUIN/bikabika/d7e974fee8cbad409a701f538561c4e06487389b/bikabika/Assets/Picacgs/icon_unknown_error.png
--------------------------------------------------------------------------------
/bikabika/Assets/Picacgs/login_lock.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kitUIN/bikabika/d7e974fee8cbad409a701f538561c4e06487389b/bikabika/Assets/Picacgs/login_lock.png
--------------------------------------------------------------------------------
/bikabika/Assets/Picacgs/login_mail.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kitUIN/bikabika/d7e974fee8cbad409a701f538561c4e06487389b/bikabika/Assets/Picacgs/login_mail.png
--------------------------------------------------------------------------------
/bikabika/Assets/Picacgs/logo_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kitUIN/bikabika/d7e974fee8cbad409a701f538561c4e06487389b/bikabika/Assets/Picacgs/logo_round.png
--------------------------------------------------------------------------------
/bikabika/Assets/Picacgs/picacomic_2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kitUIN/bikabika/d7e974fee8cbad409a701f538561c4e06487389b/bikabika/Assets/Picacgs/picacomic_2.png
--------------------------------------------------------------------------------
/bikabika/Assets/Picacgs/placeholder_avatar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kitUIN/bikabika/d7e974fee8cbad409a701f538561c4e06487389b/bikabika/Assets/Picacgs/placeholder_avatar.png
--------------------------------------------------------------------------------
/bikabika/Assets/Picacgs/placeholder_avatar_2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kitUIN/bikabika/d7e974fee8cbad409a701f538561c4e06487389b/bikabika/Assets/Picacgs/placeholder_avatar_2.png
--------------------------------------------------------------------------------
/bikabika/Assets/Picacgs/placeholder_transparent.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kitUIN/bikabika/d7e974fee8cbad409a701f538561c4e06487389b/bikabika/Assets/Picacgs/placeholder_transparent.png
--------------------------------------------------------------------------------
/bikabika/Assets/Picacgs/push_in.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kitUIN/bikabika/d7e974fee8cbad409a701f538561c4e06487389b/bikabika/Assets/Picacgs/push_in.png
--------------------------------------------------------------------------------
/bikabika/Assets/Picacgs/register_bday.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kitUIN/bikabika/d7e974fee8cbad409a701f538561c4e06487389b/bikabika/Assets/Picacgs/register_bday.png
--------------------------------------------------------------------------------
/bikabika/Assets/Picacgs/register_gender.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kitUIN/bikabika/d7e974fee8cbad409a701f538561c4e06487389b/bikabika/Assets/Picacgs/register_gender.png
--------------------------------------------------------------------------------
/bikabika/Assets/Picacgs/register_name.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kitUIN/bikabika/d7e974fee8cbad409a701f538561c4e06487389b/bikabika/Assets/Picacgs/register_name.png
--------------------------------------------------------------------------------
/bikabika/Assets/Picacgs/search.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kitUIN/bikabika/d7e974fee8cbad409a701f538561c4e06487389b/bikabika/Assets/Picacgs/search.png
--------------------------------------------------------------------------------
/bikabika/Assets/Picacgs/splash_img.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kitUIN/bikabika/d7e974fee8cbad409a701f538561c4e06487389b/bikabika/Assets/Picacgs/splash_img.jpg
--------------------------------------------------------------------------------
/bikabika/Assets/Picacgs/userlogo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kitUIN/bikabika/d7e974fee8cbad409a701f538561c4e06487389b/bikabika/Assets/Picacgs/userlogo.png
--------------------------------------------------------------------------------
/bikabika/Assets/SmallTile.scale-100.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kitUIN/bikabika/d7e974fee8cbad409a701f538561c4e06487389b/bikabika/Assets/SmallTile.scale-100.png
--------------------------------------------------------------------------------
/bikabika/Assets/SmallTile.scale-125.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kitUIN/bikabika/d7e974fee8cbad409a701f538561c4e06487389b/bikabika/Assets/SmallTile.scale-125.png
--------------------------------------------------------------------------------
/bikabika/Assets/SmallTile.scale-150.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kitUIN/bikabika/d7e974fee8cbad409a701f538561c4e06487389b/bikabika/Assets/SmallTile.scale-150.png
--------------------------------------------------------------------------------
/bikabika/Assets/SmallTile.scale-200.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kitUIN/bikabika/d7e974fee8cbad409a701f538561c4e06487389b/bikabika/Assets/SmallTile.scale-200.png
--------------------------------------------------------------------------------
/bikabika/Assets/SmallTile.scale-400.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kitUIN/bikabika/d7e974fee8cbad409a701f538561c4e06487389b/bikabika/Assets/SmallTile.scale-400.png
--------------------------------------------------------------------------------
/bikabika/Assets/SplashScreen.scale-100.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kitUIN/bikabika/d7e974fee8cbad409a701f538561c4e06487389b/bikabika/Assets/SplashScreen.scale-100.png
--------------------------------------------------------------------------------
/bikabika/Assets/SplashScreen.scale-125.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kitUIN/bikabika/d7e974fee8cbad409a701f538561c4e06487389b/bikabika/Assets/SplashScreen.scale-125.png
--------------------------------------------------------------------------------
/bikabika/Assets/SplashScreen.scale-150.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kitUIN/bikabika/d7e974fee8cbad409a701f538561c4e06487389b/bikabika/Assets/SplashScreen.scale-150.png
--------------------------------------------------------------------------------
/bikabika/Assets/SplashScreen.scale-200.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kitUIN/bikabika/d7e974fee8cbad409a701f538561c4e06487389b/bikabika/Assets/SplashScreen.scale-200.png
--------------------------------------------------------------------------------
/bikabika/Assets/SplashScreen.scale-400.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kitUIN/bikabika/d7e974fee8cbad409a701f538561c4e06487389b/bikabika/Assets/SplashScreen.scale-400.png
--------------------------------------------------------------------------------
/bikabika/Assets/Square150x150Logo.scale-100.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kitUIN/bikabika/d7e974fee8cbad409a701f538561c4e06487389b/bikabika/Assets/Square150x150Logo.scale-100.png
--------------------------------------------------------------------------------
/bikabika/Assets/Square150x150Logo.scale-125.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kitUIN/bikabika/d7e974fee8cbad409a701f538561c4e06487389b/bikabika/Assets/Square150x150Logo.scale-125.png
--------------------------------------------------------------------------------
/bikabika/Assets/Square150x150Logo.scale-150.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kitUIN/bikabika/d7e974fee8cbad409a701f538561c4e06487389b/bikabika/Assets/Square150x150Logo.scale-150.png
--------------------------------------------------------------------------------
/bikabika/Assets/Square150x150Logo.scale-200.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kitUIN/bikabika/d7e974fee8cbad409a701f538561c4e06487389b/bikabika/Assets/Square150x150Logo.scale-200.png
--------------------------------------------------------------------------------
/bikabika/Assets/Square150x150Logo.scale-400.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kitUIN/bikabika/d7e974fee8cbad409a701f538561c4e06487389b/bikabika/Assets/Square150x150Logo.scale-400.png
--------------------------------------------------------------------------------
/bikabika/Assets/Square44x44Logo.altform-lightunplated_targetsize-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kitUIN/bikabika/d7e974fee8cbad409a701f538561c4e06487389b/bikabika/Assets/Square44x44Logo.altform-lightunplated_targetsize-16.png
--------------------------------------------------------------------------------
/bikabika/Assets/Square44x44Logo.altform-lightunplated_targetsize-24.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kitUIN/bikabika/d7e974fee8cbad409a701f538561c4e06487389b/bikabika/Assets/Square44x44Logo.altform-lightunplated_targetsize-24.png
--------------------------------------------------------------------------------
/bikabika/Assets/Square44x44Logo.altform-lightunplated_targetsize-256.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kitUIN/bikabika/d7e974fee8cbad409a701f538561c4e06487389b/bikabika/Assets/Square44x44Logo.altform-lightunplated_targetsize-256.png
--------------------------------------------------------------------------------
/bikabika/Assets/Square44x44Logo.altform-lightunplated_targetsize-32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kitUIN/bikabika/d7e974fee8cbad409a701f538561c4e06487389b/bikabika/Assets/Square44x44Logo.altform-lightunplated_targetsize-32.png
--------------------------------------------------------------------------------
/bikabika/Assets/Square44x44Logo.altform-lightunplated_targetsize-48.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kitUIN/bikabika/d7e974fee8cbad409a701f538561c4e06487389b/bikabika/Assets/Square44x44Logo.altform-lightunplated_targetsize-48.png
--------------------------------------------------------------------------------
/bikabika/Assets/Square44x44Logo.altform-unplated_targetsize-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kitUIN/bikabika/d7e974fee8cbad409a701f538561c4e06487389b/bikabika/Assets/Square44x44Logo.altform-unplated_targetsize-16.png
--------------------------------------------------------------------------------
/bikabika/Assets/Square44x44Logo.altform-unplated_targetsize-256.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kitUIN/bikabika/d7e974fee8cbad409a701f538561c4e06487389b/bikabika/Assets/Square44x44Logo.altform-unplated_targetsize-256.png
--------------------------------------------------------------------------------
/bikabika/Assets/Square44x44Logo.altform-unplated_targetsize-32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kitUIN/bikabika/d7e974fee8cbad409a701f538561c4e06487389b/bikabika/Assets/Square44x44Logo.altform-unplated_targetsize-32.png
--------------------------------------------------------------------------------
/bikabika/Assets/Square44x44Logo.altform-unplated_targetsize-48.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kitUIN/bikabika/d7e974fee8cbad409a701f538561c4e06487389b/bikabika/Assets/Square44x44Logo.altform-unplated_targetsize-48.png
--------------------------------------------------------------------------------
/bikabika/Assets/Square44x44Logo.scale-100.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kitUIN/bikabika/d7e974fee8cbad409a701f538561c4e06487389b/bikabika/Assets/Square44x44Logo.scale-100.png
--------------------------------------------------------------------------------
/bikabika/Assets/Square44x44Logo.scale-125.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kitUIN/bikabika/d7e974fee8cbad409a701f538561c4e06487389b/bikabika/Assets/Square44x44Logo.scale-125.png
--------------------------------------------------------------------------------
/bikabika/Assets/Square44x44Logo.scale-150.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kitUIN/bikabika/d7e974fee8cbad409a701f538561c4e06487389b/bikabika/Assets/Square44x44Logo.scale-150.png
--------------------------------------------------------------------------------
/bikabika/Assets/Square44x44Logo.scale-200.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kitUIN/bikabika/d7e974fee8cbad409a701f538561c4e06487389b/bikabika/Assets/Square44x44Logo.scale-200.png
--------------------------------------------------------------------------------
/bikabika/Assets/Square44x44Logo.scale-400.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kitUIN/bikabika/d7e974fee8cbad409a701f538561c4e06487389b/bikabika/Assets/Square44x44Logo.scale-400.png
--------------------------------------------------------------------------------
/bikabika/Assets/Square44x44Logo.targetsize-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kitUIN/bikabika/d7e974fee8cbad409a701f538561c4e06487389b/bikabika/Assets/Square44x44Logo.targetsize-16.png
--------------------------------------------------------------------------------
/bikabika/Assets/Square44x44Logo.targetsize-24.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kitUIN/bikabika/d7e974fee8cbad409a701f538561c4e06487389b/bikabika/Assets/Square44x44Logo.targetsize-24.png
--------------------------------------------------------------------------------
/bikabika/Assets/Square44x44Logo.targetsize-24_altform-unplated.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kitUIN/bikabika/d7e974fee8cbad409a701f538561c4e06487389b/bikabika/Assets/Square44x44Logo.targetsize-24_altform-unplated.png
--------------------------------------------------------------------------------
/bikabika/Assets/Square44x44Logo.targetsize-256.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kitUIN/bikabika/d7e974fee8cbad409a701f538561c4e06487389b/bikabika/Assets/Square44x44Logo.targetsize-256.png
--------------------------------------------------------------------------------
/bikabika/Assets/Square44x44Logo.targetsize-32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kitUIN/bikabika/d7e974fee8cbad409a701f538561c4e06487389b/bikabika/Assets/Square44x44Logo.targetsize-32.png
--------------------------------------------------------------------------------
/bikabika/Assets/Square44x44Logo.targetsize-48.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kitUIN/bikabika/d7e974fee8cbad409a701f538561c4e06487389b/bikabika/Assets/Square44x44Logo.targetsize-48.png
--------------------------------------------------------------------------------
/bikabika/Assets/StoreLogo.backup.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kitUIN/bikabika/d7e974fee8cbad409a701f538561c4e06487389b/bikabika/Assets/StoreLogo.backup.png
--------------------------------------------------------------------------------
/bikabika/Assets/StoreLogo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kitUIN/bikabika/d7e974fee8cbad409a701f538561c4e06487389b/bikabika/Assets/StoreLogo.png
--------------------------------------------------------------------------------
/bikabika/Assets/StoreLogo.scale-100.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kitUIN/bikabika/d7e974fee8cbad409a701f538561c4e06487389b/bikabika/Assets/StoreLogo.scale-100.png
--------------------------------------------------------------------------------
/bikabika/Assets/StoreLogo.scale-125.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kitUIN/bikabika/d7e974fee8cbad409a701f538561c4e06487389b/bikabika/Assets/StoreLogo.scale-125.png
--------------------------------------------------------------------------------
/bikabika/Assets/StoreLogo.scale-150.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kitUIN/bikabika/d7e974fee8cbad409a701f538561c4e06487389b/bikabika/Assets/StoreLogo.scale-150.png
--------------------------------------------------------------------------------
/bikabika/Assets/StoreLogo.scale-200.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kitUIN/bikabika/d7e974fee8cbad409a701f538561c4e06487389b/bikabika/Assets/StoreLogo.scale-200.png
--------------------------------------------------------------------------------
/bikabika/Assets/StoreLogo.scale-400.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kitUIN/bikabika/d7e974fee8cbad409a701f538561c4e06487389b/bikabika/Assets/StoreLogo.scale-400.png
--------------------------------------------------------------------------------
/bikabika/Assets/Wide310x150Logo.scale-100.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kitUIN/bikabika/d7e974fee8cbad409a701f538561c4e06487389b/bikabika/Assets/Wide310x150Logo.scale-100.png
--------------------------------------------------------------------------------
/bikabika/Assets/Wide310x150Logo.scale-125.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kitUIN/bikabika/d7e974fee8cbad409a701f538561c4e06487389b/bikabika/Assets/Wide310x150Logo.scale-125.png
--------------------------------------------------------------------------------
/bikabika/Assets/Wide310x150Logo.scale-150.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kitUIN/bikabika/d7e974fee8cbad409a701f538561c4e06487389b/bikabika/Assets/Wide310x150Logo.scale-150.png
--------------------------------------------------------------------------------
/bikabika/Assets/Wide310x150Logo.scale-200.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kitUIN/bikabika/d7e974fee8cbad409a701f538561c4e06487389b/bikabika/Assets/Wide310x150Logo.scale-200.png
--------------------------------------------------------------------------------
/bikabika/Assets/Wide310x150Logo.scale-400.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kitUIN/bikabika/d7e974fee8cbad409a701f538561c4e06487389b/bikabika/Assets/Wide310x150Logo.scale-400.png
--------------------------------------------------------------------------------
/bikabika/Assets/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kitUIN/bikabika/d7e974fee8cbad409a701f538561c4e06487389b/bikabika/Assets/logo.png
--------------------------------------------------------------------------------
/bikabika/Assets/logo2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kitUIN/bikabika/d7e974fee8cbad409a701f538561c4e06487389b/bikabika/Assets/logo2.png
--------------------------------------------------------------------------------
/bikabika/BikaImage.cpp:
--------------------------------------------------------------------------------
1 | #include "pch.h"
2 | #include "BikaImage.h"
3 | #if __has_include("BikaImage.g.cpp")
4 | #include "BikaImage.g.cpp"
5 | #endif
6 |
7 | using namespace winrt;
8 | using namespace Windows::UI::Xaml;
9 | using namespace Windows::Foundation;
10 | using namespace Windows::Storage::Streams;
11 | namespace winrt::bikabika::implementation
12 | {
13 | BikaImage::BikaImage()
14 | {
15 | DefaultStyleKey(winrt::box_value(L"bikabika.BikaImage"));
16 | InitializeComponent();
17 | }
18 |
19 | Windows::UI::Xaml::DependencyProperty BikaImage::m_imageProperty =
20 | Windows::UI::Xaml::DependencyProperty::Register(
21 | L"ImgBlock",
22 | winrt::xaml_typename(),
23 | winrt::xaml_typename(),
24 | Windows::UI::Xaml::PropertyMetadata{ nullptr }
25 | );
26 | winrt::BikaClient::Blocks::ImageBlock BikaImage::ImgBlock()
27 | {
28 | return winrt::unbox_value(GetValue(m_imageProperty));
29 | }
30 |
31 | void BikaImage::ImgBlock(winrt::BikaClient::Blocks::ImageBlock const& value)
32 | {
33 | SetValue(m_imageProperty, winrt::box_value(value));
34 | BikaImg().Source(value.Img());
35 | }
36 |
37 | Windows::UI::Xaml::Media::ImageSource BikaImage::ImgSource()
38 | {
39 | return BikaImg().Source();
40 | }
41 | void BikaImage::ImageLoaded(bool const& value)
42 | {
43 | m_loaded = value;
44 | }
45 | bool BikaImage::ImageLoaded()
46 | {
47 | return m_loaded;
48 | }
49 | }
50 | void winrt::bikabika::implementation::BikaImage::BikaImg_ImageFailed(winrt::Windows::Foundation::IInspectable const& sender, winrt::Windows::UI::Xaml::ExceptionRoutedEventArgs const& e)
51 | {
52 | ImageLoaded(false);
53 | RefreshIcon().Visibility(Visibility::Visible);
54 | }
55 |
56 |
57 | Windows::Foundation::IAsyncAction winrt::bikabika::implementation::BikaImage::BikaImg_ImageOpened(winrt::Windows::Foundation::IInspectable const& sender, winrt::Windows::UI::Xaml::RoutedEventArgs const& e)
58 | {
59 | ImageLoaded(true);
60 | RefreshIcon().Visibility(Visibility::Collapsed);
61 | // 通过Xaml界面获取位图的大小不对
62 | //winrt::BikaClient::Blocks::ImageBlock imgBlock = ImgBlock();
63 | //winrt::Windows::UI::Xaml::Media::Imaging::RenderTargetBitmap bitmap;
64 | //co_await bitmap.RenderAsync(sender.as());
65 | //IBuffer pixels = co_await bitmap.GetPixelsAsync();
66 |
67 | //Windows::Storage::ApplicationDataContainer settings = Windows::Storage::ApplicationData::Current().LocalSettings().CreateContainer(L"Settings", Windows::Storage::ApplicationDataCreateDisposition::Always);
68 | //if (!settings.Values().HasKey(L"CacheFolder"))
69 | //{
70 | // Windows::Storage::StorageFolder storageFolder{ Windows::Storage::ApplicationData::Current().LocalFolder() };
71 | // Windows::Storage::StorageFolder downloadFolder = co_await storageFolder.CreateFolderAsync(L"Cache");
72 | // settings.Values().Insert(L"CacheFolder", box_value(downloadFolder.Path()));
73 | //}
74 | //Windows::Storage::StorageFolder storageFolder = co_await Windows::Storage::StorageFolder::GetFolderFromPathAsync(settings.Values().Lookup(L"CacheFolder").as());
75 | //Windows::Storage::StorageFile imgFile = co_await storageFolder.CreateFileAsync(imgBlock.OriginalName(), Windows::Storage::CreationCollisionOption::ReplaceExisting);
76 | //Windows::Storage::Streams::IRandomAccessStream stream{ co_await imgFile.OpenAsync(Windows::Storage::FileAccessMode::ReadWrite) };
77 | //auto softwareBitmap = winrt::Windows::Graphics::Imaging::SoftwareBitmap::CreateCopyFromBuffer(pixels, winrt::Windows::Graphics::Imaging::BitmapPixelFormat::Bgra8, (uint32_t)200, (uint32_t)200, winrt::Windows::Graphics::Imaging::BitmapAlphaMode::Ignore);
78 | //auto propertySet = winrt::Windows::Graphics::Imaging::BitmapPropertySet();
79 | //winrt::Windows::Graphics::Imaging::BitmapTypedValue qualityValue(box_value(1.0), Windows::Foundation::PropertyType::Single);
80 | //propertySet.Insert(L"ImageQuality", qualityValue);
81 | //winrt::Windows::Graphics::Imaging::BitmapEncoder encoder = co_await winrt::Windows::Graphics::Imaging::BitmapEncoder::CreateAsync(winrt::Windows::Graphics::Imaging::BitmapEncoder::JpegEncoderId(), stream, propertySet);
82 | //encoder.SetSoftwareBitmap(softwareBitmap);
83 | ///*auto dataReader = DataReader::FromBuffer(pixels);
84 | //winrt::array_view b;
85 | //dataReader.ReadBytes(b);
86 | //encoder.SetPixelData(winrt::Windows::Graphics::Imaging::BitmapPixelFormat::Bgra8,
87 | // winrt::Windows::Graphics::Imaging::BitmapAlphaMode::Ignore,
88 | // (uint32_t)bitmap.PixelWidth(),(uint32_t)bitmap.PixelHeight(),
89 | // 96, 96,b);*/
90 | //co_await encoder.FlushAsync();
91 |
92 | }
93 |
94 |
95 | void winrt::bikabika::implementation::BikaImage::RefreshIcon_PointerPressed(winrt::Windows::Foundation::IInspectable const& sender, winrt::Windows::UI::Xaml::Input::PointerRoutedEventArgs const& e)
96 | {
97 | winrt::BikaClient::Blocks::ImageBlock imgBlock = ImgBlock();
98 | BikaImg().Source(imgBlock.Img());
99 | }
100 |
--------------------------------------------------------------------------------
/bikabika/BikaImage.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 |
3 | #include "winrt/Windows.UI.Xaml.h"
4 | #include "winrt/Windows.UI.Xaml.Markup.h"
5 | #include "winrt/Windows.UI.Xaml.Interop.h"
6 | #include "winrt/Windows.UI.Xaml.Controls.Primitives.h"
7 | #include "BikaImage.g.h"
8 |
9 | namespace winrt::bikabika::implementation
10 | {
11 | struct BikaImage : BikaImageT
12 | {
13 | BikaImage();
14 |
15 | winrt::BikaClient::Blocks::ImageBlock ImgBlock();
16 | void ImgBlock(winrt::BikaClient::Blocks::ImageBlock const& value);
17 | Windows::UI::Xaml::Media::ImageSource ImgSource();
18 | static Windows::UI::Xaml::DependencyProperty ImageProperty() { return m_imageProperty; }
19 | void ImageLoaded(bool const& value);
20 | bool ImageLoaded();
21 | private:
22 | static Windows::UI::Xaml::DependencyProperty m_imageProperty;
23 | bool m_loaded = false;
24 |
25 | public:
26 | void BikaImg_ImageFailed(winrt::Windows::Foundation::IInspectable const& sender, winrt::Windows::UI::Xaml::ExceptionRoutedEventArgs const& e);
27 | Windows::Foundation::IAsyncAction BikaImg_ImageOpened(winrt::Windows::Foundation::IInspectable const& sender, winrt::Windows::UI::Xaml::RoutedEventArgs const& e);
28 | void RefreshIcon_PointerPressed(winrt::Windows::Foundation::IInspectable const& sender, winrt::Windows::UI::Xaml::Input::PointerRoutedEventArgs const& e);
29 | };
30 | }
31 |
32 | namespace winrt::bikabika::factory_implementation
33 | {
34 | struct BikaImage : BikaImageT
35 | {
36 | };
37 | }
38 |
--------------------------------------------------------------------------------
/bikabika/BikaImage.idl:
--------------------------------------------------------------------------------
1 | namespace bikabika
2 | {
3 | [default_interface]
4 | runtimeclass BikaImage : Windows.UI.Xaml.Controls.UserControl
5 | {
6 | BikaImage();
7 | static Windows.UI.Xaml.DependencyProperty ImageProperty{ get; };
8 | Windows.UI.Xaml.Media.ImageSource ImgSource{ get; };
9 | BikaClient.Blocks.ImageBlock ImgBlock;
10 | Boolean ImageLoaded;
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/bikabika/BikaImage.xaml:
--------------------------------------------------------------------------------
1 |
9 |
10 |
14 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/bikabika/ClassificationPage.cpp:
--------------------------------------------------------------------------------
1 | /*****************************************************************//**
2 | * \file ClassificationPage.cpp
3 | * \brief 分类页面
4 | *
5 | * \author kulujun
6 | * \date June 2022
7 | *********************************************************************/
8 | #include "pch.h"
9 | #include "ClassificationPage.h"
10 | #if __has_include("ClassificationPage.g.cpp")
11 | #include "ClassificationPage.g.cpp"
12 | #endif
13 | using namespace winrt::BikaClient::Blocks;
14 |
15 | using namespace winrt;
16 | using namespace Windows::UI::Xaml;
17 | using namespace Windows::UI::Xaml::Controls;
18 | using namespace Windows::Data::Json;
19 | using namespace Windows::Foundation;
20 | namespace winrt::bikabika::implementation
21 | {
22 | ClassificationPage::ClassificationPage()
23 | {
24 | InitializeComponent();
25 | }
26 |
27 | winrt::Windows::Foundation::Collections::IObservableVector ClassificationPage::Categories()
28 | {
29 | return m_categories;
30 | }
31 |
32 | void ClassificationPage::Categories(winrt::Windows::Foundation::Collections::IObservableVector const& value)
33 | {
34 | m_categories = value;
35 | m_propertyChanged(*this, Windows::UI::Xaml::Data::PropertyChangedEventArgs{ L"Categories" });
36 | }
37 | CategoriesBlock ClassificationPage::CreateCategoriesBlock(hstring const& title, hstring const& uri)
38 | {
39 | ImageBlock imageBlock;
40 | imageBlock.Img(winrt::Windows::UI::Xaml::Media::Imaging::BitmapImage{ Uri{ uri } });
41 | CategoriesBlock categoriesBlock;
42 | categoriesBlock.Thumb(imageBlock);
43 | categoriesBlock.Title(title);
44 | categoriesBlock.IsAuto(true);
45 | return categoriesBlock;
46 | }
47 | Windows::Foundation::IAsyncAction ClassificationPage::OnNavigatedTo(Windows::UI::Xaml::Navigation::NavigationEventArgs const& e)
48 | {
49 |
50 | m_categories.Append(CreateCategoriesBlock(resourceLoader.GetString(L"Categories/Support"),L"ms-appx:///Assets//Picacgs//cat_support.jpg"));
51 | m_categories.Append(CreateCategoriesBlock(resourceLoader.GetString(L"Categories/Leaderboard"),L"ms-appx:///Assets//Picacgs//cat_leaderboard.jpg"));
52 | m_categories.Append(CreateCategoriesBlock(resourceLoader.GetString(L"Categories/Game"),L"ms-appx:///Assets//Picacgs//cat_game.jpg"));
53 |
54 | m_categories.Append(CreateCategoriesBlock(resourceLoader.GetString(L"Categories/Smalltool"),L"ms-appx:///Assets//Picacgs//cat_smalltool.jpg"));
55 | m_categories.Append(CreateCategoriesBlock(resourceLoader.GetString(L"Categories/Forum"),L"ms-appx:///Assets//Picacgs//cat_forum.jpg"));
56 | m_categories.Append(CreateCategoriesBlock(resourceLoader.GetString(L"Categories/Latest"),L"ms-appx:///Assets//Picacgs//cat_latest.jpg"));
57 | m_categories.Append(CreateCategoriesBlock(resourceLoader.GetString(L"Categories/Random"),L"ms-appx:///Assets//Picacgs//cat_random.jpg"));
58 | __super::OnNavigatedTo(e);
59 | auto res = co_await rootPage.HttpClient().Categories();
60 | rootPage.LayoutMessageShow(false);
61 | if (res.Code() == -1)
62 | {
63 | rootPage.ContentDialogShow(BikaHttpStatus::TIMEOUT, L"");
64 | }
65 | else if (res.Code() == 200)
66 | {
67 | for (auto x : res.Categories())
68 | {
69 | m_categories.Append(x);
70 | }
71 | }
72 | else if (res.Code() == 401 && res.Error() == L"1005")
73 | {
74 | rootPage.ContentDialogShow(BikaHttpStatus::NOAUTH, res.Message());
75 | }
76 | else
77 | {
78 | rootPage.ContentDialogShow(BikaHttpStatus::UNKNOWN, res.Message());
79 | }
80 | }
81 | winrt::event_token ClassificationPage::PropertyChanged(winrt::Windows::UI::Xaml::Data::PropertyChangedEventHandler const& handler)
82 | {
83 | return m_propertyChanged.add(handler);
84 | }
85 | void ClassificationPage::PropertyChanged(winrt::event_token const& token) noexcept
86 | {
87 | m_propertyChanged.remove(token);
88 | }
89 | }
90 |
91 | //选择
92 | Windows::Foundation::IAsyncAction winrt::bikabika::implementation::ClassificationPage::GridV_ItemClick(winrt::Windows::Foundation::IInspectable const& /*sender*/, winrt::Windows::UI::Xaml::Controls::ItemClickEventArgs const& e)
93 | {
94 | auto categoriesBlack = e.ClickedItem().as();
95 | bikabika::ComicArgs args;
96 | if (!categoriesBlack.IsWeb()) {
97 |
98 | if (categoriesBlack.IsAuto())
99 | {
100 | if (categoriesBlack.Title()== resourceLoader.GetString(L"Categories/Latest"))
101 | {
102 | args.ComicType(bikabika::ComicsType::RECENTLY_UPDATE);
103 | }
104 | else if (categoriesBlack.Title() == resourceLoader.GetString(L"Categories/Leaderboard"))
105 | {
106 | co_return;
107 | }
108 | else if (categoriesBlack.Title() == resourceLoader.GetString(L"Categories/Game"))
109 | {
110 | co_return;
111 | }
112 | else if (categoriesBlack.Title() == resourceLoader.GetString(L"Categories/Smalltool"))
113 | {
114 | co_return;
115 | }
116 | else if (categoriesBlack.Title() == resourceLoader.GetString(L"Categories/Forum"))
117 | {
118 | co_return;
119 | }
120 | else if (categoriesBlack.Title() == resourceLoader.GetString(L"Categories/Random"))
121 | {
122 | args.ComicType(bikabika::ComicsType::RANDOM);
123 | }
124 | else if (categoriesBlack.Title() == resourceLoader.GetString(L"Categories/Support"))
125 | {
126 | Windows::System::LauncherOptions launcherOptions;
127 | launcherOptions.TreatAsUntrusted(true);
128 | co_await Windows::System::Launcher::LaunchUriAsync(Uri{ L"https://donate.wikawika.xyz" });
129 | co_return;
130 | }
131 |
132 | }
133 | else
134 | {
135 |
136 | args.ComicType(bikabika::ComicsType::COMIC);
137 | }
138 |
139 | }
140 | else
141 | {
142 | if (categoriesBlack.Title() == resourceLoader.GetString(L"Categories/Help"))
143 | {
144 | Windows::System::LauncherOptions launcherOptions;
145 | launcherOptions.TreatAsUntrusted(true);
146 | co_await Windows::System::Launcher::LaunchUriAsync(Uri{ L"https://donate.wikawika.xyz" });
147 | }
148 | co_return;
149 | }
150 | args.Title(categoriesBlack.Title());
151 | args.SortMode(winrt::BikaClient::Utils::BikaSort{ winrt::BikaClient::Utils::SortMode::UA });
152 | winrt::Microsoft::UI::Xaml::Controls::SymbolIconSource symbol;
153 | winrt::Windows::UI::Xaml::Controls::Frame frame;
154 | symbol.Symbol(Windows::UI::Xaml::Controls::Symbol::List);
155 | frame.Navigate(winrt::xaml_typename(), box_value(args));
156 | rootPage.CreateNewTab(frame, categoriesBlack.Title(), symbol);
157 | }
158 |
159 |
160 | void winrt::bikabika::implementation::ClassificationPage::Image_PointerEntered(winrt::Windows::Foundation::IInspectable const& sender, winrt::Windows::UI::Xaml::Input::PointerRoutedEventArgs const& /*e*/)
161 | {
162 | auto grid = sender.as();
163 | auto border = grid.Children().GetAt(0).as();
164 | auto image = border.Child().as();
165 | border.Margin(Thickness{ 0,0,0,0 });
166 | border.Width(145);
167 | border.Height(145);
168 | image.Width(145);
169 | image.Height(145);
170 | }
171 |
172 |
173 | void winrt::bikabika::implementation::ClassificationPage::Image_PointerExited(winrt::Windows::Foundation::IInspectable const& sender, winrt::Windows::UI::Xaml::Input::PointerRoutedEventArgs const& /*e*/)
174 | {
175 | auto grid= sender.as();
176 | auto border = grid.Children().GetAt(0).as();
177 | auto image = border.Child().as();
178 | border.Margin(Thickness{ 0,5,0,0 });
179 | border.Width(140);
180 | border.Height(140);
181 | image.Width(140);
182 | image.Height(140);
183 | }
184 |
--------------------------------------------------------------------------------
/bikabika/ClassificationPage.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 |
3 | #include "ClassificationPage.g.h"
4 |
5 | namespace winrt::bikabika::implementation
6 | {
7 | struct ClassificationPage : ClassificationPageT
8 | {
9 | ClassificationPage();
10 | Windows::Foundation::IAsyncAction OnNavigatedTo(Windows::UI::Xaml::Navigation::NavigationEventArgs const& e);
11 | winrt::Windows::Foundation::Collections::IObservableVector Categories();
12 | void Categories(winrt::Windows::Foundation::Collections::IObservableVector const& value);
13 | BikaClient::Blocks::CategoriesBlock CreateCategoriesBlock(hstring const& title, hstring const& uri);
14 | winrt::event_token PropertyChanged(winrt::Windows::UI::Xaml::Data::PropertyChangedEventHandler const& handler);
15 | void PropertyChanged(winrt::event_token const& token) noexcept;
16 | private:
17 | winrt::event m_propertyChanged;
18 | Windows::ApplicationModel::Resources::ResourceLoader resourceLoader{ Windows::ApplicationModel::Resources::ResourceLoader::GetForCurrentView() };
19 | bikabika::MainPage rootPage{ MainPage::Current() };
20 | winrt::Windows::Foundation::Collections::IObservableVector m_categories = winrt::single_threaded_observable_vector();
21 |
22 |
23 | public:
24 | Windows::Foundation::IAsyncAction GridV_ItemClick(winrt::Windows::Foundation::IInspectable const& sender, winrt::Windows::UI::Xaml::Controls::ItemClickEventArgs const& e);
25 | void Image_PointerEntered(winrt::Windows::Foundation::IInspectable const& sender, winrt::Windows::UI::Xaml::Input::PointerRoutedEventArgs const& e);
26 | void Image_PointerExited(winrt::Windows::Foundation::IInspectable const& sender, winrt::Windows::UI::Xaml::Input::PointerRoutedEventArgs const& e);
27 | };
28 | }
29 |
30 | namespace winrt::bikabika::factory_implementation
31 | {
32 | struct ClassificationPage : ClassificationPageT
33 | {
34 | };
35 | }
36 |
--------------------------------------------------------------------------------
/bikabika/ClassificationPage.idl:
--------------------------------------------------------------------------------
1 | namespace bikabika
2 | {
3 | [default_interface]
4 | runtimeclass ClassificationPage : Windows.UI.Xaml.Controls.Page, Windows.UI.Xaml.Data.INotifyPropertyChanged
5 | {
6 | ClassificationPage();
7 | Windows.Foundation.Collections.IObservableVector Categories{ get; };
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/bikabika/ClassificationPage.xaml:
--------------------------------------------------------------------------------
1 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
21 |
27 |
28 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
47 |
54 |
59 |
60 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
127 |
128 |
129 |
130 |
131 |
132 |
133 |
134 |
135 |
--------------------------------------------------------------------------------
/bikabika/ComicPage.cpp:
--------------------------------------------------------------------------------
1 | /*****************************************************************//**
2 | * \file ComicPage.cpp
3 | * \brief 分区页面
4 | *
5 | * \author kulujun
6 | * \date June 2022
7 | *********************************************************************/
8 | #include "pch.h"
9 | #include "ComicPage.h"
10 | #if __has_include("ComicPage.g.cpp")
11 | #include "ComicPage.g.cpp"
12 | #endif
13 |
14 | using namespace winrt;
15 | using namespace Windows::UI::Xaml;
16 | using namespace Windows::UI::Xaml::Controls;
17 | namespace winrt::bikabika::implementation
18 | {
19 | ComicPage::ComicPage()
20 | {
21 | InitializeComponent();
22 | }
23 | Windows::Foundation::IAsyncAction ComicPage::Goto(int32_t const& index, hstring const& title, BikaClient::Utils::SortMode const& mode)
24 | {
25 | if (!TypeCombo().IsEnabled() || !Pips().IsEnabled())
26 | {
27 | TypeCombo().IsEnabled(true);
28 | Pips().IsEnabled(true);
29 | }
30 | BikaClient::Responses::ComicsResponse res{ nullptr };
31 | if (m_comicType == ComicsType::SEARCH)
32 | {
33 | res = co_await rootPage.HttpClient().Search(index, title, mode);
34 | }
35 | else if (m_comicType == ComicsType::FACOURITE)
36 | {
37 | //auto res = co_await rootPage.HttpClient().Search(index, title, mode);
38 | }
39 | else if (m_comicType == ComicsType::RECENTLY_UPDATE)
40 | {
41 | res = co_await rootPage.HttpClient().Comics(index, mode);
42 | }
43 | else if (m_comicType == ComicsType::HISTORY)
44 | {
45 |
46 | }
47 | else if (m_comicType == ComicsType::RANDOM)
48 | {
49 | TypeCombo().IsEnabled(false);
50 | Pips().IsEnabled(false);
51 | res = co_await rootPage.HttpClient().Random();
52 | }
53 | else
54 | {
55 | res = co_await rootPage.HttpClient().Comics(index, title, mode);
56 | }
57 | if (res.Code() == -1)
58 | {
59 | rootPage.ContentDialogShow(BikaHttpStatus::TIMEOUT, L"");
60 | }
61 | else if (res.Code() == 200)
62 | {
63 | for (auto x : res.Comics())
64 | {
65 | m_comics.Append(x);
66 | }
67 | if (m_comicType != ComicsType::RANDOM)
68 | {
69 | Index(res.Page() - 1);
70 | AllPage(res.Pages());
71 | }
72 | }
73 | else if (res.Code() == 401 && res.Error() == L"1005")
74 | {
75 | rootPage.ContentDialogShow(BikaHttpStatus::NOAUTH, res.Message());
76 | }
77 | else
78 | {
79 | rootPage.ContentDialogShow(BikaHttpStatus::UNKNOWN, res.Message());
80 | }
81 | }
82 | void ComicPage::OnNavigatedTo(Windows::UI::Xaml::Navigation::NavigationEventArgs const& e)
83 | {
84 | TypeCombo().ItemsSource(m_typeBlocks);
85 |
86 | auto params = winrt::unbox_value(e.Parameter());
87 | m_sort = params.SortMode().SortMode();
88 | for (uint32_t i = 0; i < 4; i++)
89 | {
90 | if (m_typeBlocks.GetAt(i) == params.SortModeString())
91 | {
92 | TypeCombo().SelectedIndex(i);
93 | }
94 | }
95 | ComicTitle().Text(params.Title());
96 | m_comicType = params.ComicType();
97 | }
98 |
99 | winrt::event_token ComicPage::PropertyChanged(winrt::Windows::UI::Xaml::Data::PropertyChangedEventHandler const& handler)
100 | {
101 | return m_propertyChanged.add(handler);
102 | }
103 | void ComicPage::PropertyChanged(winrt::event_token const& token) noexcept
104 | {
105 | m_propertyChanged.remove(token);
106 | }
107 | winrt::Windows::Foundation::Collections::IObservableVector ComicPage::Comics()
108 | {
109 | return m_comics;
110 | }
111 | int32_t ComicPage::Index()
112 | {
113 | return m_index;
114 | }
115 | int32_t ComicPage::PipIndex()
116 | {
117 | return m_index + 1;
118 | }
119 | int32_t ComicPage::AllPage()
120 | {
121 | return m_pages;
122 | }
123 | void ComicPage::AllPage(int32_t const& value)
124 | {
125 | m_pages = value;
126 | m_propertyChanged(*this, Windows::UI::Xaml::Data::PropertyChangedEventArgs{ L"AllPage" });
127 | }
128 | void ComicPage::Index(int32_t const& value)
129 | {
130 | m_index = value;
131 | m_propertyChanged(*this, Windows::UI::Xaml::Data::PropertyChangedEventArgs{ L"Index" });
132 | m_propertyChanged(*this, Windows::UI::Xaml::Data::PropertyChangedEventArgs{ L"PipIndex" });
133 | }
134 | }
135 |
136 |
137 |
138 |
139 |
140 | Windows::Foundation::IAsyncAction winrt::bikabika::implementation::ComicPage::TypeCombo_SelectionChanged(winrt::Windows::Foundation::IInspectable const& sender, winrt::Windows::UI::Xaml::Controls::SelectionChangedEventArgs const& e)
141 | {
142 | if (m_firstArrive)
143 | {
144 | hstring s = sender.as().SelectedItem().as();
145 | if (s == resourceLoader.GetString(L"sort/dd")) m_sort = BikaClient::Utils::SortMode::DD;
146 | else if (s == resourceLoader.GetString(L"sort/da"))m_sort = BikaClient::Utils::SortMode::DA;
147 | else if (s == resourceLoader.GetString(L"sort/ld")) m_sort = BikaClient::Utils::SortMode::LD;
148 | else if (s == resourceLoader.GetString(L"sort/vd")) m_sort = BikaClient::Utils::SortMode::VD;
149 | else m_sort = BikaClient::Utils::SortMode::UA;
150 | if (m_index == 0)
151 | {
152 | m_comics.Clear();
153 | co_await Goto(1, ComicTitle().Text(), m_sort);
154 | }
155 | else
156 | {
157 | Index(0);
158 | }
159 | }
160 | else m_firstArrive = true;
161 | }
162 |
163 |
164 | void winrt::bikabika::implementation::ComicPage::Index_KeyUp(winrt::Windows::Foundation::IInspectable const& sender, winrt::Windows::UI::Xaml::Input::KeyRoutedEventArgs const& e)
165 | {
166 | if (e.Key() == Windows::System::VirtualKey::Enter)
167 | {
168 | auto box = sender.as();
169 | hstring s = box.Text();
170 | for (auto x : s)
171 | {
172 | if (!(x >= L'0' && x <= L'9'))
173 | {
174 | box.Text(to_hstring(m_index+1));
175 | return;
176 | }
177 | }
178 | int32_t index = std::stoi(to_string(s));
179 | if (index <= m_pages)
180 | {
181 | Index(index - 1);
182 | }
183 | else box.Text(to_hstring(m_index + 1));
184 | }
185 | }
186 |
187 |
188 | Windows::Foundation::IAsyncAction winrt::bikabika::implementation::ComicPage::PipsPager_SelectedIndexChanged(winrt::Microsoft::UI::Xaml::Controls::PipsPager const& sender, winrt::Microsoft::UI::Xaml::Controls::PipsPagerSelectedIndexChangedEventArgs const& args)
189 | {
190 | if (m_index < m_pages)
191 | {
192 | auto index = sender.SelectedPageIndex();
193 | m_comics.Clear();
194 | co_await Goto(index + 1, ComicTitle().Text(), m_sort);
195 | }
196 | }
197 |
198 |
199 | Windows::Foundation::IAsyncAction winrt::bikabika::implementation::ComicPage::RefreshButton_Click(winrt::Windows::Foundation::IInspectable const& sender, winrt::Windows::UI::Xaml::RoutedEventArgs const& e)
200 | {
201 | m_comics.Clear();
202 | co_await Goto(m_index + 1, ComicTitle().Text(), m_sort);
203 | }
204 |
205 | void winrt::bikabika::implementation::ComicPage::GridV_ItemClick(winrt::Windows::Foundation::IInspectable const& sender, winrt::Windows::UI::Xaml::Controls::ItemClickEventArgs const& e)
206 | {
207 | auto comicBlock = e.ClickedItem().as();
208 | auto container = GridV().ContainerFromItem(e.ClickedItem()).as();
209 | FrameworkElement root = container.ContentTemplateRoot().as();
210 | bikabika::BikaImage bikaImg = root.FindName(L"ConnectedElement2").as();
211 | if(bikaImg.ImageLoaded()) winrt::Windows::UI::Xaml::Media::Animation::ConnectedAnimationService::GetForCurrentView().PrepareToAnimate(L"ForwardConnectedAnimation", bikaImg.as());
212 | winrt::Microsoft::UI::Xaml::Controls::SymbolIconSource symbol;
213 | winrt::Windows::UI::Xaml::Controls::Frame frame;
214 | symbol.Symbol(Windows::UI::Xaml::Controls::Symbol::PreviewLink);
215 | frame.Navigate(winrt::xaml_typename(), box_value(single_threaded_vector({ box_value(bikaImg.ImgSource()), box_value(bikabika::ComicArgs(comicBlock.ID(),1,1,1)) })), winrt::Windows::UI::Xaml::Media::Animation::SuppressNavigationTransitionInfo());
216 | rootPage.CreateNewTab(frame, comicBlock.Title(), symbol);
217 | }
--------------------------------------------------------------------------------
/bikabika/ComicPage.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 |
3 | #include "ComicPage.g.h"
4 |
5 | namespace winrt::bikabika::implementation
6 | {
7 | struct ComicPage : ComicPageT
8 | {
9 | ComicPage();
10 | Windows::Foundation::IAsyncAction Goto(int32_t const& index, hstring const& title, BikaClient::Utils::SortMode const& mode);
11 | void OnNavigatedTo(Windows::UI::Xaml::Navigation::NavigationEventArgs const& e);
12 | winrt::event_token PropertyChanged(winrt::Windows::UI::Xaml::Data::PropertyChangedEventHandler const& handler);
13 | void PropertyChanged(winrt::event_token const& token) noexcept;
14 | winrt::Windows::Foundation::Collections::IObservableVector Comics();
15 | int32_t Index();
16 | int32_t PipIndex();
17 | int32_t AllPage();
18 | void AllPage(int32_t const& value);
19 | void Index(int32_t const& value);
20 |
21 | private:
22 | winrt::event m_propertyChanged;
23 | Windows::ApplicationModel::Resources::ResourceLoader resourceLoader{ Windows::ApplicationModel::Resources::ResourceLoader::GetForCurrentView() };
24 | bikabika::MainPage rootPage{ MainPage::Current() };
25 | int32_t m_index = 0;
26 | int32_t m_pages = 1;
27 | bool m_firstArrive = false;
28 | bikabika::ComicsType m_comicType = bikabika::ComicsType::COMIC;
29 | BikaClient::Utils::SortMode m_sort = BikaClient::Utils::SortMode::UA;
30 | winrt::Windows::Foundation::Collections::IObservableVector m_comics = winrt::single_threaded_observable_vector();
31 | winrt::Windows::Foundation::Collections::IObservableVector m_typeBlocks = winrt::single_threaded_observable_vector({ resourceLoader.GetString(L"sort/ua"),resourceLoader.GetString(L"sort/dd"),resourceLoader.GetString(L"sort/da"),resourceLoader.GetString(L"sort/ld"),resourceLoader.GetString(L"sort/vd") });
32 | public:
33 | Windows::Foundation::IAsyncAction TypeCombo_SelectionChanged(winrt::Windows::Foundation::IInspectable const& sender, winrt::Windows::UI::Xaml::Controls::SelectionChangedEventArgs const& e);
34 | void Index_KeyUp(winrt::Windows::Foundation::IInspectable const& sender, winrt::Windows::UI::Xaml::Input::KeyRoutedEventArgs const& e);
35 | Windows::Foundation::IAsyncAction PipsPager_SelectedIndexChanged(winrt::Microsoft::UI::Xaml::Controls::PipsPager const& sender, winrt::Microsoft::UI::Xaml::Controls::PipsPagerSelectedIndexChangedEventArgs const& args);
36 | Windows::Foundation::IAsyncAction RefreshButton_Click(winrt::Windows::Foundation::IInspectable const& sender, winrt::Windows::UI::Xaml::RoutedEventArgs const& e);
37 | void GridV_ItemClick(winrt::Windows::Foundation::IInspectable const& sender, winrt::Windows::UI::Xaml::Controls::ItemClickEventArgs const& e);
38 | };
39 | }
40 |
41 | namespace winrt::bikabika::factory_implementation
42 | {
43 | struct ComicPage : ComicPageT
44 | {
45 | };
46 | }
47 |
--------------------------------------------------------------------------------
/bikabika/ComicPage.idl:
--------------------------------------------------------------------------------
1 | namespace bikabika
2 | {
3 |
4 | runtimeclass ComicPage : Windows.UI.Xaml.Controls.Page, Windows.UI.Xaml.Data.INotifyPropertyChanged
5 | {
6 | ComicPage();
7 | Windows.Foundation.Collections.IObservableVector Comics{ get; };
8 | Int32 Index;
9 | Int32 AllPage;
10 | Int32 PipIndex{ get; };
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/bikabika/ComicPage.xaml:
--------------------------------------------------------------------------------
1 |
12 |
13 |
14 |
15 |
16 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
36 |
42 |
43 |
44 |
45 |
49 |
50 |
58 |
62 |
63 |
64 |
68 |
69 |
73 |
77 |
82 |
86 |
87 |
88 |
96 |
97 |
98 |
102 |
107 |
111 |
116 |
121 |
125 |
126 |
127 |
136 |
141 |
142 |
143 |
144 |
145 |
146 |
147 |
148 |
149 |
150 |
151 |
152 |
191 |
192 |
193 |
194 |
195 |
199 |
200 |
204 |
211 |
212 |
217 |
226 |
235 |
239 |
244 |
248 |
252 |
257 |
261 |
262 |
263 |
264 |
270 |
280 |
281 |
282 |
283 |
--------------------------------------------------------------------------------
/bikabika/CommentView.cpp:
--------------------------------------------------------------------------------
1 | #include "pch.h"
2 | #include "CommentView.h"
3 | #include "CommentView.g.cpp"
4 |
5 |
6 | namespace winrt::bikabika::implementation
7 | {
8 | winrt::Windows::Foundation::Collections::IObservableVector CommentView::Comments()
9 | {
10 | return m_comment;
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/bikabika/CommentView.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "CommentView.g.h"
3 |
4 | namespace winrt::bikabika::implementation
5 | {
6 | struct CommentView : CommentViewT
7 | {
8 | CommentView() = default;
9 |
10 | winrt::Windows::Foundation::Collections::IObservableVector Comments();
11 | private:
12 | winrt::Windows::Foundation::Collections::IObservableVector m_comment = winrt::single_threaded_observable_vector();
13 | };
14 | }
15 | namespace winrt::bikabika::factory_implementation
16 | {
17 | struct CommentView : CommentViewT
18 | {
19 | };
20 | }
21 |
--------------------------------------------------------------------------------
/bikabika/CommentView.idl:
--------------------------------------------------------------------------------
1 | namespace bikabika
2 | {
3 | runtimeclass CommentView
4 | {
5 | CommentView();
6 | Windows.Foundation.Collections.IObservableVector Comments{ get; };
7 | }
8 | }
--------------------------------------------------------------------------------
/bikabika/DownloadPage.cpp:
--------------------------------------------------------------------------------
1 | #include "pch.h"
2 | #include "DownloadPage.h"
3 | #if __has_include("DownloadPage.g.cpp")
4 | #include "DownloadPage.g.cpp"
5 | #endif
6 |
7 | using namespace winrt;
8 | using namespace Windows::UI::Xaml;
9 |
10 | namespace winrt::bikabika::implementation
11 | {
12 | DownloadPage::DownloadPage()
13 | {
14 | InitializeComponent();
15 | }
16 |
17 | int32_t DownloadPage::MyProperty()
18 | {
19 | throw hresult_not_implemented();
20 | }
21 |
22 | void DownloadPage::MyProperty(int32_t /* value */)
23 | {
24 | throw hresult_not_implemented();
25 | }
26 |
27 | void DownloadPage::ClickHandler(IInspectable const&, RoutedEventArgs const&)
28 | {
29 | Button().Content(box_value(L"Clicked"));
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/bikabika/DownloadPage.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 |
3 | #include "DownloadPage.g.h"
4 |
5 | namespace winrt::bikabika::implementation
6 | {
7 | struct DownloadPage : DownloadPageT
8 | {
9 | DownloadPage();
10 |
11 | int32_t MyProperty();
12 | void MyProperty(int32_t value);
13 |
14 | void ClickHandler(Windows::Foundation::IInspectable const& sender, Windows::UI::Xaml::RoutedEventArgs const& args);
15 | };
16 | }
17 |
18 | namespace winrt::bikabika::factory_implementation
19 | {
20 | struct DownloadPage : DownloadPageT
21 | {
22 | };
23 | }
24 |
--------------------------------------------------------------------------------
/bikabika/DownloadPage.idl:
--------------------------------------------------------------------------------
1 | namespace bikabika
2 | {
3 | [default_interface]
4 | runtimeclass DownloadPage : Windows.UI.Xaml.Controls.Page
5 | {
6 | DownloadPage();
7 | Int32 MyProperty;
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/bikabika/DownloadPage.xaml:
--------------------------------------------------------------------------------
1 |
9 |
10 |
14 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/bikabika/HomePage.cpp:
--------------------------------------------------------------------------------
1 | #include "pch.h"
2 | #include "HomePage.h"
3 | #if __has_include("HomePage.g.cpp")
4 | #include "HomePage.g.cpp"
5 | #endif
6 |
7 | using namespace winrt;
8 | using namespace Windows::UI::Xaml;
9 |
10 | namespace winrt::bikabika::implementation
11 | {
12 | HomePage::HomePage()
13 | {
14 | InitializeComponent();
15 | }
16 |
17 | int32_t HomePage::MyProperty()
18 | {
19 | throw hresult_not_implemented();
20 | }
21 |
22 | void HomePage::MyProperty(int32_t /* value */)
23 | {
24 | throw hresult_not_implemented();
25 | }
26 |
27 | void HomePage::ClickHandler(IInspectable const&, RoutedEventArgs const&)
28 | {
29 | Button().Content(box_value(L"Clicked"));
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/bikabika/HomePage.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 |
3 | #include "HomePage.g.h"
4 |
5 | namespace winrt::bikabika::implementation
6 | {
7 | struct HomePage : HomePageT
8 | {
9 | HomePage();
10 |
11 | int32_t MyProperty();
12 | void MyProperty(int32_t value);
13 |
14 | void ClickHandler(Windows::Foundation::IInspectable const& sender, Windows::UI::Xaml::RoutedEventArgs const& args);
15 | };
16 | }
17 |
18 | namespace winrt::bikabika::factory_implementation
19 | {
20 | struct HomePage : HomePageT
21 | {
22 | };
23 | }
24 |
--------------------------------------------------------------------------------
/bikabika/HomePage.idl:
--------------------------------------------------------------------------------
1 | namespace bikabika
2 | {
3 | [default_interface]
4 | runtimeclass HomePage : Windows.UI.Xaml.Controls.Page
5 | {
6 | HomePage();
7 | Int32 MyProperty;
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/bikabika/HomePage.xaml:
--------------------------------------------------------------------------------
1 |
9 |
10 |
14 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/bikabika/InfoPage.cpp:
--------------------------------------------------------------------------------
1 | #include "pch.h"
2 | #include "InfoPage.h"
3 | #if __has_include("InfoPage.g.cpp")
4 | #include "InfoPage.g.cpp"
5 | #endif
6 |
7 | using namespace winrt;
8 | using namespace Windows::UI::Xaml;
9 | using namespace Windows::UI::Xaml::Controls;
10 | using namespace Windows::UI::Xaml::Controls::Primitives;
11 | using namespace Windows::Data::Json;
12 | using namespace Windows::UI::Input;
13 |
14 | namespace winrt::bikabika::implementation
15 | {
16 | InfoPage::InfoPage()
17 | {
18 | InitializeComponent();
19 | }
20 | bikabika::CommentView InfoPage::GetCommentView()
21 | {
22 | return m_commentView;
23 | }
24 |
25 | Windows::Foundation::IAsyncAction InfoPage::Comment(int32_t const& page)
26 | {
27 | auto res = co_await rootPage.HttpClient().Comments(m_id, page);
28 | if (res.Code() == -1)
29 | {
30 | rootPage.ContentDialogShow(BikaHttpStatus::TIMEOUT, L"");
31 | }
32 | else if (res.Code() == 200)
33 | {
34 | if (!m_isTop && res.TopComments().Size() > 0)
35 | {
36 | m_isTop = true;
37 | for (auto x : res.TopComments())
38 | {
39 | m_commentView.Comments().Append(x);
40 | }
41 | }
42 | for (auto y : res.Comments())
43 | {
44 | m_commentView.Comments().Append(y);
45 | }
46 |
47 | m_commentsPages = res.Pages();
48 | m_commentsPage = res.Page();
49 | m_commentsContinue = false;
50 | }
51 | else if (res.Code() == 401 && res.Error() == L"1005")
52 | {
53 | rootPage.ContentDialogShow(BikaHttpStatus::NOAUTH, res.Message());
54 | }
55 | else
56 | {
57 | rootPage.ContentDialogShow(BikaHttpStatus::UNKNOWN, res.Message());
58 | }
59 | }
60 | Windows::Foundation::IAsyncOperation InfoPage::Eps(int32_t const& page)
61 | {
62 | auto res = co_await rootPage.HttpClient().Episodes(m_id, page);
63 | if (res.Code() == -1)
64 | {
65 | rootPage.ContentDialogShow(BikaHttpStatus::TIMEOUT, L"");
66 | }
67 | else if (res.Code() == 200)
68 | {
69 | for (auto x : res.Episodes())
70 | {
71 |
72 | m_eps.Append(x);
73 | }
74 | m_total = res.Total();
75 | EpisodesListV().ItemsSource(box_value(m_eps));
76 | co_return res.Pages();
77 | }
78 | else if (res.Code() == 401 && res.Error() == L"1005")
79 | {
80 | rootPage.ContentDialogShow(BikaHttpStatus::NOAUTH, res.Message());
81 | }
82 | else
83 | {
84 | rootPage.ContentDialogShow(BikaHttpStatus::UNKNOWN, res.Message());
85 | }
86 | co_return 0;
87 | }
88 |
89 | winrt::event_token InfoPage::PropertyChanged(winrt::Windows::UI::Xaml::Data::PropertyChangedEventHandler const& handler)
90 | {
91 | return m_propertyChanged.add(handler);
92 | }
93 | void InfoPage::PropertyChanged(winrt::event_token const& token) noexcept
94 | {
95 | m_propertyChanged.remove(token);
96 | }
97 | BikaClient::Blocks::BookBlock InfoPage::Book()
98 | {
99 | return m_book;
100 | }
101 | void InfoPage::Book(BikaClient::Blocks::BookBlock const& value)
102 | {
103 | m_book = value;
104 | m_propertyChanged(*this, Windows::UI::Xaml::Data::PropertyChangedEventArgs{ L"Book" });
105 | }
106 | Windows::Foundation::IAsyncAction InfoPage::Recommend()
107 | {
108 | auto res = co_await rootPage.HttpClient().Recommend(m_id);
109 | if (res.Code() == -1)
110 | {
111 | rootPage.ContentDialogShow(BikaHttpStatus::TIMEOUT, L"");
112 | }
113 | else if (res.Code() == 200)
114 | {
115 | if (res.Comics().Size()>0)
116 | {
117 | for (auto x : res.Comics())
118 | {
119 | m_comics.Append(x);
120 | }
121 | ComicsGridV().ItemsSource(box_value(m_comics));
122 | }
123 | else
124 | {
125 | ImageEmpty().Visibility(Visibility::Visible);
126 | BlockEmpty().Visibility(Visibility::Visible);
127 | }
128 |
129 | }
130 | else if (res.Code() == 401 && res.Error() == L"1005")
131 | {
132 | rootPage.ContentDialogShow(BikaHttpStatus::NOAUTH, res.Message());
133 | }
134 | else
135 | {
136 | rootPage.ContentDialogShow(BikaHttpStatus::UNKNOWN, res.Message());
137 | }
138 | }
139 | Windows::Foundation::IAsyncAction InfoPage::OnNavigatedTo(Windows::UI::Xaml::Navigation::NavigationEventArgs const& e)
140 | {
141 | auto params = winrt::unbox_value>(e.Parameter());
142 | auto img = winrt::unbox_value(params.GetAt(0));
143 | m_id = winrt::unbox_value(params.GetAt(1)).BookId();
144 | __super::OnNavigatedTo(e);
145 | UserThumb().ProfilePicture(rootPage.User().Thumb().Img());
146 | auto anim = winrt::Windows::UI::Xaml::Media::Animation::ConnectedAnimationService::GetForCurrentView().GetAnimation(L"ForwardConnectedAnimation");
147 | Img().Source(img);
148 | if (anim) anim.TryStart(Img());
149 | auto res = co_await rootPage.HttpClient().BookInfo(m_id);
150 | if (res.Code() == -1)
151 | {
152 | rootPage.ContentDialogShow(BikaHttpStatus::TIMEOUT, L"");
153 | }
154 | else if (res.Code() == 200)
155 | {
156 | auto book = res.BookInfos();
157 | Book(book);
158 | for (auto x : book.Tags())
159 | {
160 | m_tags.Append(x);
161 | }
162 | TagsContent().ItemsSource(box_value(m_tags));
163 | auto pages = co_await Eps(1);
164 | for (uint32_t i = 2; i <= pages; i++)
165 | {
166 | co_await Eps(i);
167 | }
168 | co_await Recommend();
169 | co_await Comment(m_commentsPage);
170 | }
171 | else if (res.Code() == 401 && res.Error() == L"1005")
172 | {
173 | rootPage.ContentDialogShow(BikaHttpStatus::NOAUTH, res.Message());
174 | }
175 | else
176 | {
177 | rootPage.ContentDialogShow(BikaHttpStatus::UNKNOWN, res.Message());
178 | }
179 | }
180 |
181 | }
182 | Windows::Foundation::IAsyncAction winrt::bikabika::implementation::InfoPage::Like_Checked(winrt::Windows::Foundation::IInspectable const& sender, winrt::Windows::UI::Xaml::RoutedEventArgs const& e)
183 | {
184 |
185 | auto res = co_await rootPage.HttpClient().Like(m_id);
186 | if (res.Code() == 200)
187 | {
188 | if (m_book.IsLiked())
189 | {
190 | rootPage.InfoBarMessageShow(resourceLoader.GetString(L"BlockLike/Text"), resourceLoader.GetString(L"Message/Book/Success"), Microsoft::UI::Xaml::Controls::InfoBarSeverity::Success);
191 | }
192 | else
193 | {
194 | rootPage.InfoBarMessageShow(resourceLoader.GetString(L"Message/Like/Cancel"), resourceLoader.GetString(L"Message/Book/Success"), Microsoft::UI::Xaml::Controls::InfoBarSeverity::Success);
195 | }
196 | }
197 | else
198 | {
199 | m_book.IsLiked(!sender.as().IsChecked().Value());
200 | if (m_book.IsLiked())
201 | {
202 | rootPage.InfoBarMessageShow(resourceLoader.GetString(L"BlockLike/Text"), resourceLoader.GetString(L"Message/Book/Fail"), Microsoft::UI::Xaml::Controls::InfoBarSeverity::Error);
203 | }
204 | else
205 | {
206 | rootPage.InfoBarMessageShow(resourceLoader.GetString(L"Message/Like/Cancel"), resourceLoader.GetString(L"Message/Book/Fail"), Microsoft::UI::Xaml::Controls::InfoBarSeverity::Error);
207 | }
208 | }
209 | }
210 | Windows::Foundation::IAsyncAction winrt::bikabika::implementation::InfoPage::Favourite_Unchecked(winrt::Windows::Foundation::IInspectable const& sender, winrt::Windows::UI::Xaml::RoutedEventArgs const& e)
211 | {
212 |
213 | auto res = co_await rootPage.HttpClient().Favourite(m_id);
214 | if (res.Code() == 200)
215 | {
216 | if (m_book.IsFavourite())
217 | {
218 | rootPage.InfoBarMessageShow(resourceLoader.GetString(L"BlockFavourite/Text"), resourceLoader.GetString(L"Message/Book/Success"), Microsoft::UI::Xaml::Controls::InfoBarSeverity::Success);
219 | }
220 | else
221 | {
222 | rootPage.InfoBarMessageShow(resourceLoader.GetString(L"Message/Favourite/Cancel"), resourceLoader.GetString(L"Message/Book/Success"), Microsoft::UI::Xaml::Controls::InfoBarSeverity::Success);
223 | }
224 | }
225 | else {
226 | m_book.IsFavourite(!sender.as().IsChecked().Value());
227 | if (m_book.IsFavourite())
228 | {
229 | rootPage.InfoBarMessageShow(resourceLoader.GetString(L"BlockFavourite/Text"), resourceLoader.GetString(L"Message/Book/Fail"), Microsoft::UI::Xaml::Controls::InfoBarSeverity::Error);
230 | }
231 | else
232 | {
233 | rootPage.InfoBarMessageShow(resourceLoader.GetString(L"Message/Favourite/Cancel"), resourceLoader.GetString(L"Message/Book/Fail"), Microsoft::UI::Xaml::Controls::InfoBarSeverity::Error);
234 | }
235 | }
236 |
237 | }
238 | ///
239 | /// 标签点击
240 | ///
241 | ///
242 | ///
243 | void winrt::bikabika::implementation::InfoPage::TagButton_Click(winrt::Windows::Foundation::IInspectable const& sender, winrt::Windows::UI::Xaml::RoutedEventArgs const& e)
244 | {
245 | auto text = sender.as