Compare commits

...
469 Commits
Author SHA1 Message Date
Aigio Liu 3781465d70 v2.4.11 release 2021-08-24 22:33:28 +08:00
Aigio Liu b8a5906184 update submodules 2021-08-24 22:26:29 +08:00
Aigio Liu 763bbae5a9 fix 2021-08-24 22:22:52 +08:00
RMBGAME 57a592d472 Fix 2021-08-24 22:15:30 +08:00
Aigio Liu 0c39c7eafd v2.4.11 release 2021-08-24 22:02:52 +08:00
RMBGAME af7635f972 修复托盘有时候无法打开菜单的问题
移除菜单栏用户手机号显示
调整库存游戏列表菜单顺序#406
修复库存游戏的磁盘占用UI错位问题
修复快速登录等待中UI错位问题
修复IOPath.OpenRead导致的闪退问题
2021-08-24 21:53:11 +08:00
RMBGAME 3a6468ad9f Misc 2021-08-24 21:53:11 +08:00
Aigio Liu 60b03fe6a8 fix 2021-08-24 17:36:16 +08:00
Mossimo 8ed21f5f26 tryfix liunx account 2021-08-24 16:28:14 +08:00
Mossimo fa8c599477 fixtips 2021-08-24 16:28:14 +08:00
Aigio Liu e978b54edb install package sha256 2021-08-24 15:29:35 +08:00
Aigio Liu 9ee00ee13a v2.4.10 2021-08-24 15:26:26 +08:00
Aigio Liu c52d619d43 v2.4.10 2021-08-24 15:26:25 +08:00
Aigio Liu a76b27d19e fix mac tfm 2021-08-24 14:17:26 +08:00
Aigio Liu a8f1630007 fix 2021-08-24 14:04:08 +08:00
Aigio Liu aba6af383f v2.4.10 release 2021-08-24 13:19:50 +08:00
RMBGAME 2aca99458b Fix Theme Style Crash 2021-08-24 13:18:07 +08:00
RMBGAME 13d6043702 OpenProcess 2021-08-24 01:07:24 +08:00
Aigio Liu 14a9aa52cd v2.4.10 2021-08-24 00:24:20 +08:00
RMBGAME 3992fc3317 new navbar icon 2021-08-24 00:24:49 +08:00
Aigio Liu 11aca2ca8e android:versionName 2021-08-23 23:51:32 +08:00
Aigio Liu 805428dd81 v2.4.10 rc2 2021-08-23 23:40:42 +08:00
Aigio Liu 5c578f87d4 v2.4.10 rc1 2021-08-23 21:53:22 +08:00
RMBGAME 394e8a68b3 添加刷新头像功能 2021-08-23 21:33:08 +08:00
Aigio Liu a4d3f91d0a 改进 SteamAuthTradeActivity & linux/mac TFM = 6.0 & add linux-arm pubxml 2021-08-23 21:13:42 +08:00
Aigio Liu e57e3516dd 改进 SteamAuthTradeActivity & linux/mac TFM = 6.0 & add linux-arm pubxml 2021-08-23 21:13:41 +08:00
RMBGAME c542454c25 Fix 2021-08-23 20:11:47 +08:00
RMBGAME 6c6ccd4440 Fix SelectedItem 2021-08-23 17:54:41 +08:00
RMBGAME 079ab27e26 Misc 2021-08-23 14:26:42 +08:00
RMBGAME 0a28450907 UI 2021-08-23 14:21:49 +08:00
RMBGAME 7588c7ea38 Fix FooterMenu and Win7 Bug 2021-08-23 13:36:17 +08:00
RMBGAME b91a678513 FooterMenuItems 2021-08-23 13:01:48 +08:00
RMBGAME 4995629127 FooterTab 2021-08-23 13:01:37 +08:00
RMBGAME 57b4d92d53 Update WebProxy Module
Add FluentAvalonia Module
2021-08-23 12:30:44 +08:00
rmbgame a0e67bc110 Fix 2021-08-22 18:25:38 +08:00
rmbgame bc368b40c3 PasswordBox样式修复 2021-08-22 17:47:50 +08:00
Mossimo 9b8de8ec5b fastloginFix 2021-08-22 17:15:53 +08:00
Mossimo fee682d84d fix 2021-08-22 17:08:14 +08:00
Mossimo 5d4c8cbcb8 save 2021-08-22 16:11:51 +08:00
rmbgame 5ea1374866 尝试修复托盘菜单有时候无法打开的问题 2021-08-22 15:58:51 +08:00
rmbgame 23849cebfe 脚本工坊样式改进 2021-08-22 15:42:05 +08:00
rmbgame c49bd0593c 背景样式改进
背景图片现在可生效在每一个窗口上
2021-08-22 15:33:02 +08:00
rmbgame 61e944daf8 Fix 2021-08-22 14:55:28 +08:00
Aigio Liu 2057759f6e OperatingSystem2 2021-08-22 14:34:36 +08:00
rmbgame 4fffe29ed5 修复部分用户库存游戏已安装游戏无法读取的问题 2021-08-22 14:09:58 +08:00
rmbgame 593d3d1aa9 UI 2021-08-22 14:09:58 +08:00
Aigio Liu 4553ae5a7c OperatingSystem2 2021-08-22 03:35:13 +08:00
rmbgame de82ced575 UI 2021-08-21 22:10:32 +08:00
rmbgame 9be9ae8a4b 布局调整 2021-08-21 21:56:18 +08:00
rmbgame 074a3c6c0a WinUI3 Style 90%
修复WinUI3控件部分字体无法修改的问题
添加主题色的UI设置
添加背景图片自定义设置
改善UI效果
2021-08-21 21:06:14 +08:00
rmbgame b5d31fc210 WinUI3 Style 85% 2021-08-21 12:37:08 +08:00
rmbgame 60f234a449 Fix Desgin 2021-08-21 12:37:08 +08:00
Mossimo 3f91ebd8ec fix bug 2021-08-21 12:00:54 +08:00
Aigio Liu 2099020e0b 导入令牌完成后清空文本框 2021-08-21 11:11:16 +08:00
Aigio Liu 90cb9002c5 fix 2021-08-20 23:03:52 +08:00
Aigio Liu f0f772ba4e 修复 Android O 以下因为通知渠道导致的启动时闪退 2021-08-20 22:46:51 +08:00
rmbgame 8c401cf4e8 Misc 2021-08-20 20:15:27 +08:00
rmbgame 6babec7852 WinUI3 Style 2021-08-20 17:43:55 +08:00
rmbgame ecd4f63cf6 修复win11上Window透明效果消失的问题 2021-08-20 17:43:55 +08:00
Mossimo 1340ca9891 replace websocket fleck nuget 2021-08-20 16:55:28 +08:00
Aigio Liu d07da86482 修复 Toast 消息未正常显示 & 新增 从图库中选择二维码图片导入令牌 & 新增 文件导入选择图片识别二维码导入令牌 & 修复 导入令牌文件中有包含密码时未能显示密码输入框 & 修复 导入带密码的令牌数据,密码输入文本框窗口无法取消 & 改进 简化令牌导入选项 2021-08-20 16:21:31 +08:00
rmbgame 38642023c4 Fix 2021-08-20 14:06:40 +08:00
rmbgame 07abafde22 Style 2021-08-20 13:34:28 +08:00
rmbgame c45619e7f7 WinUI3 Style 60% 2021-08-20 13:34:28 +08:00
rmbgame bf531bb8b8 WinUI3 引用
改进字体管理器
改进托盘窗口弹出方式
2021-08-20 13:32:48 +08:00
Aigio Liu 0e9f4eb979 显示 社区加速页面 2021-08-20 01:21:49 +08:00
Aigio Liu c63b8b8331 BasePermission 生命周期由单例改为瞬时 2021-08-20 00:59:07 +08:00
Aigio Liu 465bd9ef8b update submodule 2021-08-20 00:51:19 +08:00
Aigio Liu fbd0780a6a update submodule 2021-08-20 00:43:53 +08:00
Aigio Liu 8ab660a1df Android 修复扫码导入 & Toast 不显示 & 简化令牌导入方式 2021-08-20 00:39:14 +08:00
rmbgame 6ad4ca9921 fix #371 #375 2021-08-19 12:11:37 +08:00
rmbgame acb5e0842d style 2021-08-18 23:48:05 +08:00
rmbgame 2385af9a1a fix 2021-08-18 23:48:05 +08:00
rmbgame 7b9019091f 受保护的成就不在支持勾选 2021-08-18 23:48:05 +08:00
Mossimo b853698275 Fix账号切换 2021-08-18 20:42:07 +08:00
Aigio Liu 865e317d4e Update Nuget Packages & Remove ZXing.Net.Mobile Add MLKit + Camera2 2021-08-17 16:04:56 +08:00
Aigio Liu da11f5973a Readme 2021-08-16 16:34:55 +08:00
Aigio Liu 849eb14cec del Package_TemporaryKey.pfx 2021-08-16 15:27:04 +08:00
Aigio Liu a573c24e32 fix FastLRB Bind 2021-08-16 12:52:57 +08:00
Aigio Liu 246f7a4f45 fix 2021-08-16 11:18:35 +08:00
Aigio Liu d17fab17ba 添加编辑资料监听用户信息变化时更改用于比较的原始数据 2021-08-16 09:40:41 +08:00
Aigio Liu 3b2aeca0fc 绑定账号不关闭当前窗口 2021-08-16 09:27:34 +08:00
Aigio Liu 0d63c553a2 fix 2021-08-16 09:15:57 +08:00
rmbgame 0479743c31 Fix 2021-08-16 09:16:09 +08:00
Aigio Liu 0892677473 remove visualelementsmanifest.xml BackgroundColor 2021-08-16 09:02:29 +08:00
Aigio Liu cf7fc27040 release v2.4.9 2021-08-16 08:57:04 +08:00
rmbgame d6cb8403b7 Update Avalonia Package
Update UI
2021-08-16 01:39:52 +08:00
rmbgame ee1012c84d fix #364 2021-08-16 01:20:48 +08:00
rmbgame db80c8e268 UI 2021-08-16 00:52:57 +08:00
Aigio Liu 07e679a17a *.sh text eol=lf 2021-08-15 23:01:07 +08:00
Aigio Liu de8c033e1d fix 2021-08-15 22:57:03 +08:00
Aigio Liu 5e9af6dc69 fix 2021-08-15 22:52:12 +08:00
Aigio Liu d36d93584d build-osx-app.sh 2021-08-15 22:35:29 +08:00
Aigio Liu b2e8d926a5 Info.plist 2021-08-15 22:22:34 +08:00
Aigio Liu ed6b476a2f 服务端文本多语言机翻 2021-08-15 18:03:15 +08:00
Aigio Liu 2360b726b7 开始菜单磁贴背景颜色改为透明 & 服务端字符串资源 2021-08-15 02:11:08 +08:00
Aigio Liu 2130c5bff2 fix 2021-08-14 19:42:17 +08:00
Aigio Liu 07ee187a94 改进拼接字符串 2021-08-14 19:32:03 +08:00
Aigio Liu 4b1ea2c311 del ws arg 2021-08-14 19:22:22 +08:00
Aigio Liu f4820adf2d fix 2021-08-14 19:08:12 +08:00
rmbgame fa9d8f3a34 UserProfile UI 2021-08-14 18:18:07 +08:00
Aigio Liu e5c0d28d03 fix login text 2021-08-14 16:48:59 +08:00
Aigio Liu 112028b1c4 fix 2021-08-14 16:32:01 +08:00
Aigio Liu f40f469839 fix Bind LRB 2021-08-14 16:18:26 +08:00
Aigio Liu 6ec3671d54 fix Close Window 2021-08-14 13:20:39 +08:00
Aigio Liu 4c31a020e5 fix Bind LRB 2021-08-14 13:18:16 +08:00
rmbgame ea185d683d release desc 2021-08-14 04:30:26 +08:00
rmbgame 9827dfe6b1 Style 2021-08-14 03:49:39 +08:00
Mossimo 1e7dbc4c7e save 2021-08-13 21:40:25 +08:00
Mossimo d6f5e79f1d fix phone no close 2021-08-13 21:39:33 +08:00
rmbgame 7ea480e72c Ui 2021-08-13 21:36:23 +08:00
Aigio Liu 8acfab11df fix LRB 2021-08-13 20:52:45 +08:00
Mossimo 68d2d64ea7 Merge branch 'develop' of https://github.com/SteamTools-Team/SteamTools into develop 2021-08-13 16:54:45 +08:00
Mossimo 703f1c496b save 2021-08-13 16:54:25 +08:00
Aigio Liu 22c2baf321 fix AppUpdate 2021-08-12 20:56:53 +08:00
Aigio Liu c872c8a159 fix UnitTest 2021-08-12 20:56:52 +08:00
Aigio Liu b8712ea371 SevenZipExtractor 2021-08-12 18:48:16 +08:00
rmbgame 37c2a73d41 Fix 2021-08-12 17:02:53 +08:00
rmbgame c32ffdb9aa Fix 2021-08-12 17:02:29 +08:00
Aigio Liu 251e350381 const MaxProgress 2021-08-12 17:00:19 +08:00
Aigio Liu a7fb68aeb5 Hosts Encoding ANSICodePage 2021-08-12 17:00:17 +08:00
rmbgame eb760621f9 改进库存游戏占用显示情况 2021-08-12 16:51:16 +08:00
Aigio Liu afcbb475d0 SizeConverter 2021-08-12 15:05:22 +08:00
Aigio Liu 55bee3795f GeneralSettings.HostsEncodingType 2021-08-12 14:41:13 +08:00
rmbgame 9231325b2a Style 2021-08-12 05:29:45 +08:00
rmbgame ae3525aef6 Misc 2021-08-12 05:18:01 +08:00
rmbgame d37e315ccc Update 2021-08-12 05:08:57 +08:00
rmbgame bf37e576db Style 2021-08-12 04:40:14 +08:00
rmbgame ae98762d7b Style 2021-08-12 04:37:16 +08:00
rmbgame 79376bd7f5 库存游戏列表显示已安装游戏占用空间 2021-08-12 04:36:23 +08:00
rmbgame 39f9c5044f Submodule Update 2021-08-12 03:38:30 +08:00
rmbgame 01f1c584da Fix Crash Bug 2021-08-12 03:32:43 +08:00
rmbgame b5379c9e55 Fix 2021-08-11 23:26:46 +08:00
rmbgame 078fd87541 Fix 2021-08-11 23:12:57 +08:00
rmbgame e8de9d77be UI 2021-08-11 23:02:54 +08:00
Aigio Liu b94b4424c5 fix 2021-08-11 22:58:06 +08:00
Aigio Liu 2c80778627 AppUpdate Fix 2021-08-11 22:44:21 +08:00
rmbgame 6e13cb8f34 Misc 2021-08-11 22:40:21 +08:00
rmbgame b8fa063141 FIx 2021-08-11 22:38:58 +08:00
rmbgame 29300ae5f3 release template update 2021-08-11 20:31:36 +08:00
Aigio Liu 782099e225 v2.4.9 2021-08-11 20:11:12 +08:00
rmbgame d29e3a2d38 UI Fix 2021-08-11 19:50:30 +08:00
Aigio Liu d25e25b0d7 tryfix #329 2021-08-11 19:29:20 +08:00
Aigio Liu 288eb16fd2 Unified logic 2021-08-11 18:43:26 +08:00
Aigio Liu f11e2341a1 fix Desktop TextBoxWindowViewModel.ShowDialogAsync 2021-08-11 18:39:25 +08:00
rmbgame 11e06efe3e Misc 2021-08-11 18:35:08 +08:00
Aigio Liu ecb1ca9aff EnableCompressionInSingleFile false 2021-08-11 18:20:36 +08:00
rmbgame f7de4faf85 改进令牌改名方式 2021-08-11 18:10:53 +08:00
Aigio Liu 3aefd5e877 Remove CEF 2021-08-11 17:09:53 +08:00
rmbgame 3e5e6a116a Misc 2021-08-11 16:42:53 +08:00
rmbgame 6ce12ce286 Misc 2021-08-11 15:57:58 +08:00
Aigio Liu c1054c0fa5 Convert Java Code to Kotlin Code 2021-08-11 14:27:45 +08:00
Aigio Liu 9f25b1853f C# 10 2021-08-11 13:49:30 +08:00
Aigio L 24cd01c47b Create dotnet.yml 2021-08-11 13:28:53 +08:00
Aigio Liu ccaad35cc8 Update .NET 6 Preview 7 2021-08-11 13:19:54 +08:00
Aigio Liu aab2e417ba Translate 2021-08-11 13:04:05 +08:00
Aigio Liu 85abe84774 Update .editorconfig 2021-08-11 12:43:39 +08:00
Aigio Liu f22ec12782 fix 2021-08-10 12:50:25 +08:00
rmbgame 54e613dec0 Misc 2021-08-09 15:57:27 +08:00
rmbgame 3d9618c0d1 Misc 2021-08-09 13:52:00 +08:00
Mossimo e6cbf1bcea Merge branch 'develop' of https://github.com/SteamTools-Team/SteamTools into develop 2021-08-09 10:20:53 +08:00
Mossimo 5a6507aad4 fastLogin 2021-08-09 10:20:24 +08:00
Aigio Liu 1bc80d2ab4 fix Translate tool & Add translated text 2021-08-09 09:16:56 +08:00
Aigio Liu 082a3b70ed fix GetQrCodeStreamAsync & ReadCommand 2021-08-09 08:05:07 +08:00
Aigio Liu b681fd2235 Remove resx Key AchievementManage 2021-08-07 22:43:09 +08:00
Aigio Liu fe6ac9623f ProofreadCommand 2021-08-07 19:45:00 +08:00
Aigio Liu 4e97e1b7f6 社区加速 rename 网络加速 2021-08-07 14:41:23 +08:00
Aigio Liu 4d539baa15 Translate Tool 2021-08-07 14:34:46 +08:00
Aigio Liu cadf6c2be6 PlatformNotificationServiceImpl & pubxml 2021-08-06 14:09:29 +08:00
Mossimo 2faa8e824c Merge branch 'develop' of https://github.com/SteamTools-Team/SteamTools into develop 2021-08-06 13:55:49 +08:00
Mossimo efc278f2a4 fix api url 2021-08-06 13:55:37 +08:00
Aigio Liu ca90312476 fix 2021-08-05 18:46:27 +08:00
Aigio Liu 0546522eb5 ClearAllPackCacheDir 2021-08-05 18:35:21 +08:00
Aigio Liu 1a6438eff6 Android Notification 2021-08-05 18:21:51 +08:00
rmbgame edb2f8affb Fix 2021-08-05 16:53:34 +08:00
rmbgame dab60bcd25 新增steam登录时通知我设置项 2021-08-05 16:31:05 +08:00
rmbgame 1ba0c1f785 Fix 2021-08-05 16:15:00 +08:00
rmbgame 4a1ae528ab windows托盘通知实现 2021-08-05 15:52:55 +08:00
rmbgame de29d52ee3 NotifyIcon 2021-08-05 10:00:11 +08:00
rmbgame 16997b6c6a Misc 2021-08-05 10:00:11 +08:00
Aigio Liu 2209595917 fix Desktop Bridge System Boot Run 2021-08-05 08:20:39 +08:00
Mossimo d136360505 save 2021-08-04 19:29:12 +08:00
Mossimo 28b25f3ce8 fix errror 2021-08-04 19:27:01 +08:00
Aigio Liu e1f44b817d fix DesktopBrider BootAutoStart 2021-08-04 19:26:04 +08:00
Aigio Liu bbd2b88ce0 fix 2021-08-04 18:13:14 +08:00
Aigio Liu 24aeacc177 fix Android WaitForActivityAsync 2021-08-04 13:43:13 +08:00
Aigio Liu 1b46ebc96a Android AppUpdate 2021-08-04 13:31:51 +08:00
Aigio Liu 9a14d52844 pubxml 2021-08-04 13:31:50 +08:00
Aigio Liu 296552db2b fix 2021-08-04 00:33:20 +08:00
Aigio L fa3ceaccdc Update dotnet.yml 2021-08-04 00:27:06 +08:00
Aigio Liu 8cfb83ddb9 FastLRBHelper 2021-08-04 00:04:06 +08:00
Aigio Liu a93b1cbb78 add Obsolete msg 2021-08-03 22:25:49 +08:00
mossimo 79a88c7bbd Merge branch 'develop' of https://github.com/SteamTools-Team/SteamTools into develop 2021-08-03 22:25:12 +08:00
mossimo d009f9aad4 save 2021-08-03 22:24:29 +08:00
Aigio Liu 2b34cf92b1 fix slnf 2021-08-03 21:17:32 +08:00
Aigio Liu 3e71678f9f fix 2021-08-03 21:07:08 +08:00
Aigio Liu 52fd23f382 Correction Comment 2021-08-03 21:07:07 +08:00
Aigio Liu 27297c4baf fix 2021-08-03 20:49:09 +08:00
Aigio Liu c9ca3e21dd CI 2021-08-03 19:28:39 +08:00
mossimo de8bd62033 f 2021-08-03 15:56:33 +08:00
mossimo 9c755091c3 Merge branch 'develop' of https://github.com/SteamTools-Team/SteamTools into develop 2021-08-03 15:44:05 +08:00
mossimo 22914a8fef save 2021-08-03 15:43:50 +08:00
rmbgame a7b0c99156 新增存储空间设置项
改进库存游戏UI
2021-08-03 14:21:20 +08:00
Aigio Liu fd77a16261 add SecurityKeyPadding & del CefNet Source 2021-08-03 13:58:58 +08:00
Aigio Liu 1e10c603cf Desktop Bridge & fix AppUpdate & update nuget packages 2021-08-03 13:24:05 +08:00
Aigio Liu 5a6f7ff65c fix SteamAuthTradeActivity 2021-08-03 02:21:47 +08:00
Aigio Liu b09d781ed9 fix 2021-08-02 13:29:12 +08:00
Aigio Liu 5922816b74 AppUpdate 2021-08-02 04:36:36 +08:00
Aigio Liu 953f8d6522 v2.4.9 2021-08-01 19:57:29 +08:00
mossimo 003df684bd Merge branch 'develop' of https://github.com/SteamTools-Team/SteamTools into develop 2021-08-01 18:53:09 +08:00
mossimo 7449fd962b chaneg 2021-08-01 18:52:31 +08:00
Aigio Liu 74e3cbd2bc Update Windows SDK for .NET 5 & Enable PublishSingleFile & fix Android RecycleViewAdapter 2021-08-01 14:13:47 +08:00
rmbgame 96af648f29 增加下载更新渠道设置 2021-08-01 13:08:54 +08:00
rmbgame cc7f53a335 修复部分游戏被错误屏蔽没有加载 2021-08-01 12:11:40 +08:00
rmbgame f5029746bb Misc 2021-08-01 12:11:40 +08:00
Aigio Liu 7fd234802e fix Res Link 2021-07-31 20:09:03 +08:00
Aigio Liu d6a0dff432 Android Explorer BaseDirectory 2021-07-31 17:03:09 +08:00
mossimo 3160664403 Merge branch 'develop' of https://github.com/SteamTools-Team/SteamTools into develop 2021-07-31 14:22:11 +08:00
mossimo 4566696e33 fix 2021-07-31 14:21:38 +08:00
rmbgame fa10d1052e Misc 2021-07-31 06:54:13 +08:00
rmbgame c51142652f 家庭库共享排序功能优化 2021-07-31 06:54:13 +08:00
Aigio Liu 948a2dbb9f fix 2021-07-30 22:58:33 +08:00
Aigio Liu 16f5d88851 Android Settings UI Impl 2021-07-30 22:43:35 +08:00
Aigio Liu aa9eb5062a Settings Android UI 2021-07-30 18:42:30 +08:00
mossimo d2f56f5e9a save 2021-07-30 15:39:13 +08:00
mossimo 424c0f7822 Fix cancellationToken 2021-07-30 15:34:47 +08:00
rmbgame 3af13c52d1 UI Fix 2021-07-30 15:30:29 +08:00
rmbgame db868de4a7 UI Fix
NugetPackage Update
2021-07-30 14:32:19 +08:00
rmbgame 4748483016 新增使用硬件加速设置项 2021-07-30 14:25:43 +08:00
mossimo 50aeca6c87 Merge branch 'develop' of https://github.com/SteamTools-Team/SteamTools into develop 2021-07-30 13:41:28 +08:00
mossimo 58e91f098f websocket 2021-07-30 13:41:16 +08:00
rmbgame bc25996f85 整体UI改进 2021-07-30 12:14:14 +08:00
Aigio Liu a91abe6de5 About Android UI 2021-07-30 11:47:44 +08:00
Aigio Liu a0968ebcb2 UpdateChannelType 2021-07-30 10:07:39 +08:00
rmbgame c96af3133e fix 2021-07-30 09:44:14 +08:00
rmbgame bf9d9214ad 提示框支持设置不再提示 2021-07-30 09:35:03 +08:00
Aigio Liu 4b7f5c383c del test line 2021-07-30 08:56:11 +08:00
rmbgame ae371e5943 about ui 2021-07-30 08:23:07 +08:00
rmbgame 4ca3da708b 桌面端令牌二维码UI 2021-07-30 07:57:27 +08:00
Aigio Liu 3eda478d04 SubscribeInMainThread 2021-07-29 11:00:52 +08:00
rmbgame ab26ba1401 库存游戏 界面交互 改进 2021-07-29 10:55:57 +08:00
Aigio Liu 7f0cee6a1a SettingsHost2 2021-07-28 11:32:47 +08:00
rmbgame f268c1a530 Fix Inject Steam Bug 2021-07-28 03:33:31 +08:00
Aigio Liu 573b874e74 GetQRCodeAsync 2021-07-27 21:26:01 +08:00
Aigio Liu eb4c142c45 Improved Auth QR code format 2021-07-26 12:24:23 +08:00
Aigio Liu 8feb787b7f ExportAuthToQRCode Format & Brotli 2021-07-26 01:31:33 +08:00
Aigio Liu 21fe71edff LocalAuth ShowQRCode 2021-07-25 20:30:25 +08:00
rmbgame 9a4e60266d Update UI 2021-07-25 09:57:48 +08:00
Aigio Liu babe4e2d80 fix 2021-07-24 23:21:24 +08:00
Aigio Liu d6d0d1bfa1 QRCode Scan ImportSteamPlusPlusV2 & SteamAuthTrade check all with bottom actions 2021-07-24 19:25:49 +08:00
Aigio Liu d938aa33a5 SteamAuthTradeActivity 2021-07-23 19:52:45 +08:00
Aigio Liu 82bac88306 Remove Local Auth FAB 2021-07-23 13:46:46 +08:00
Aigio Liu 7b2888de34 local auth toolbar menu 2021-07-22 23:54:31 +08:00
Aigio Liu e3eb1776de fix FirstLoadedAuthenticatorsEmpty 2021-07-22 16:09:29 +08:00
Aigio Liu 92e7460fe5 AutoRefreshCode Impl 2021-07-22 15:04:55 +08:00
Aigio Liu 545d421347 AutoRefreshCode UI 2021-07-21 22:36:45 +08:00
Aigio Liu 4fe04bdf6a Android localization following system 2021-07-21 14:45:35 +08:00
Aigio Liu cf5bf182ec SteamAuthTradeActivity 2021-07-20 12:38:24 +08:00
Aigio Liu 94c1199602 fix Authenticator Rename error 2021-07-19 13:11:11 +08:00
Aigio Liu ec2b13277f AuthDetailActivity 2021-07-18 22:20:19 +08:00
Aigio Liu f607effc77 new API Clipboard2 & AuthDetailActivity 2021-07-18 19:55:08 +08:00
Aigio Liu 28d53082ab Optimize loading auths 2021-07-18 03:54:15 +08:00
Aigio Liu c996bbb721 Async Load Authenticators 2021-07-18 03:47:14 +08:00
Aigio Liu 4a5beaea9e style fix 2021-07-18 03:07:40 +08:00
mossimo 479580c5d0 Merge branch 'develop' of https://github.com/SteamTools-Team/SteamTools into develop 2021-07-18 01:04:26 +08:00
mossimo 59d77db55d save 2021-07-18 01:04:09 +08:00
Aigio Liu a8965dad8a fix 2021-07-18 01:03:20 +08:00
mossimo 0dc0e01efb Merge branch 'develop' of https://github.com/SteamTools-Team/SteamTools into develop 2021-07-18 00:46:36 +08:00
mossimo 91a47ada6e fix 2021-07-18 00:45:48 +08:00
rmbgame f5dbf91e93 Misc 2021-07-17 23:52:22 +08:00
mossimo abe58fed60 fixtitle 2021-07-17 23:48:06 +08:00
Aigio Liu 94882bc6a3 fix android auth 2021-07-17 23:27:22 +08:00
mossimo 8863852db2 empt pwd jump 2021-07-17 22:05:13 +08:00
rmbgame bc8dd1f11f Fix 2021-07-17 20:34:37 +08:00
rmbgame ca95502b5d TextBoxWindow 2021-07-17 19:54:16 +08:00
mossimo e15d2359b6 fix title 2021-07-17 14:08:41 +08:00
Aigio Liu cc4dc1f289 fix macOS NotifyIcon 2021-07-17 13:54:16 +08:00
Aigio Liu 62fa42e661 fix macOS NotifyIcon 2021-07-17 13:44:35 +08:00
Aigio Liu 92f9e74058 fix2 2021-07-16 21:02:05 +08:00
Aigio Liu 0dca54692d fix 2021-07-16 20:36:15 +08:00
rmbgame cdc133b946 MainWindow Null Error Fix 2021-07-16 19:50:05 +08:00
rmbgame 8cabdf1be7 Bugs fix 2021-07-16 19:38:47 +08:00
rmbgame c773027cd4 update nuget package 2021-07-16 19:38:47 +08:00
mossimo 827de1afa7 fix sudo 2021-07-16 16:15:38 +08:00
mossimo b85ae2aae0 Merge branch 'develop' of https://github.com/SteamTools-Team/SteamTools into develop 2021-07-16 13:20:41 +08:00
mossimo 32a0608054 save 2021-07-16 13:20:33 +08:00
Aigio Liu f01b5ae652 new API FilePicker2 2021-07-16 04:02:35 +08:00
Aigio Liu a21b44f072 fix CI 2021-07-15 23:39:56 +08:00
Aigio Liu ec6ae4f161 Update .Net SDK 6 Preview 6 2021-07-15 23:34:39 +08:00
rmbgame 77319fa4ef TextboxWindow Auto Height 2021-07-15 21:19:08 +08:00
rmbgame 8654dd3e24 Misc 2021-07-15 21:19:08 +08:00
Aigio Liu 481c4ee310 fix UI 2021-07-15 19:20:26 +08:00
Aigio Liu 9c7172efa2 Obsolete PasswordWindowViewModel 2021-07-15 17:43:48 +08:00
Aigio Liu 1938a16bcf fix viewbinding and vmbinding 2021-07-15 12:45:11 +08:00
Aigio Liu 050cdeaf0f Android alpha release 2021-07-15 11:31:23 +08:00
Aigio Liu d95522537d SteamAuthTrade new icons 2021-07-15 10:08:11 +08:00
Aigio Liu 8fc34fc5f6 AddItemDecoration 2021-07-13 23:35:22 +08:00
Aigio Liu e9f07d0153 new API MainThread2/Email2 2021-07-13 21:57:30 +08:00
mossimo b7e8e69e04 1 2021-07-13 19:38:53 +08:00
mossimo bb42416ced fix 2021-07-13 18:27:16 +08:00
mossimo 4635377b35 Merge branch 'develop' of https://github.com/SteamTools-Team/SteamTools into develop 2021-07-13 17:46:48 +08:00
mossimo ab8cc4f253 fix error 2021-07-13 17:46:27 +08:00
Aigio Liu 3c7bf29bf6 SteamAuthTradeActivity 2021-07-13 15:21:12 +08:00
Aigio Liu 67b3c025f3 fragment_local_auth_import_steam_user.xml 2021-07-12 19:35:44 +08:00
rmbgame ab21452409 Update ASF 2021-07-12 18:44:41 +08:00
rmbgame fa33bd533f fix asf login disconnected 2021-07-12 18:44:41 +08:00
rmbgame ddb5343f6c Misc 2021-07-12 18:44:41 +08:00
Aigio Liu c34ab74594 AuthTrade Android View 2021-07-11 22:22:37 +08:00
Aigio Liu 0cdb6f060e activity_steam_auth_trade.xml 2021-07-11 00:39:16 +08:00
Aigio Liu 20d15460c1 LocalAuthPage Activities 2021-07-10 21:36:15 +08:00
mossimo 5cb5faacb0 Merge branch 'develop' of https://github.com/SteamTools-Team/SteamTools into develop 2021-07-10 21:07:12 +08:00
mossimo d22e16c44b fixMacOS 2021-07-10 21:06:38 +08:00
Aigio Liu 65425e87f0 AddAuth Fragments 2021-07-10 13:12:33 +08:00
Aigio Liu 91c4843d84 fix macOS 2021-07-09 23:57:21 +08:00
mossimo e9ec97b152 fix 2021-07-09 23:53:27 +08:00
mossimo 296bc1597d fix 2021-07-09 23:19:15 +08:00
mossimo 90eeb05620 Merge branch 'develop' of https://github.com/SteamTools-Team/SteamTools into develop 2021-07-09 23:00:27 +08:00
mossimo 5962f4c4dc MasOS Bate 80% 2021-07-09 22:59:50 +08:00
mossimo a50f099e73 MacOS EDIT Cer Fix 2021-07-09 22:28:57 +08:00
Aigio Liu ec3f14099e use WebHost on EMBEDDED_IN_STEAMPLUSPLUS 2021-07-09 19:21:29 +08:00
Aigio Liu 8988155734 WebRequest.CreateHttp 2021-07-09 18:18:24 +08:00
rmbgame 1fb407f110 ASF 2021-07-09 18:17:33 +08:00
mossimo 97ad4af6a4 Merge branch 'develop' of https://github.com/SteamTools-Team/SteamTools into develop 2021-07-09 16:11:50 +08:00
Aigio Liu a650c698ad fix macOS 2021-07-09 16:08:10 +08:00
Aigio Liu dcc4647001 fix 2021-07-09 15:26:27 +08:00
mossimo d8c7ea4043 Merge branch 'develop' of https://github.com/SteamTools-Team/SteamTools into develop 2021-07-09 15:15:22 +08:00
Aigio Liu 3fa07a7418 pubxml 2021-07-09 15:12:31 +08:00
mossimo a9870ab3e5 Merge branch 'develop' of https://github.com/SteamTools-Team/SteamTools into develop 2021-07-09 15:11:52 +08:00
Aigio Liu fd404f4431 macOS/linux TFM -> net5.0 2021-07-09 15:06:08 +08:00
Aigio Liu 137f400740 ST.Services.CloudService TFM del net5.0 2021-07-09 14:54:49 +08:00
mossimo 627adcac29 Merge branch 'develop' of https://github.com/SteamTools-Team/SteamTools into develop 2021-07-08 19:40:32 +08:00
mossimo e8b4df592d save 2021-07-08 19:39:53 +08:00
Aigio Liu 3c82561858 LocalAuth Mobile Views 2021-07-08 17:34:24 +08:00
Aigio Liu 6754802cb8 remove fab_ids 2021-07-07 23:05:07 +08:00
Aigio Liu 73fd1d8b48 LocalAuthFragment FAB SpeedDial 2021-07-07 22:56:00 +08:00
mossimo 264516d12a Merge branch 'develop' of https://github.com/SteamTools-Team/SteamTools into develop 2021-07-07 19:49:50 +08:00
mossimo 861b0576c1 save 2021-07-07 19:49:45 +08:00
Aigio Liu c63dba2e28 fix 2021-07-07 09:55:42 +08:00
rmbgame cbe3b954fc fix 2021-07-07 08:14:04 +08:00
rmbgame 6b74930e1a ConsoleShell 2021-07-07 08:12:39 +08:00
Aigio Liu 37ac356c70 fix 2021-07-06 20:09:23 +08:00
Aigio Liu a7cc28a299 LocalAuthPage Mobile VM 2021-07-06 19:49:58 +08:00
rmbgame e1294ce0c2 update titanium web proxy 2021-07-06 01:53:32 +08:00
rmbgame 36dc7cc946 Misc 2021-07-06 01:53:32 +08:00
Aigio Liu d0de493cea GAPAuthenticatorAdapter 2021-07-05 14:24:05 +08:00
Aigio Liu fe587f3054 fix CI 2021-07-05 11:22:40 +08:00
Aigio Liu 160b65563d remove console project 2021-07-05 02:15:25 +08:00
Aigio Liu a21ec579fb feature #317 2021-07-04 21:14:01 +08:00
Aigio Liu 19ee399a94 fix 2021-07-04 19:34:05 +08:00
Aigio Liu 5ee361bc06 LinkHelpers for Bin 2021-07-04 19:31:04 +08:00
mossimo f3494ba13b Merge branch 'develop' of https://github.com/SteamTools-Team/SteamTools into develop 2021-07-04 15:56:32 +08:00
mossimo 05dce06dcd savefix 2021-07-04 15:56:21 +08:00
Aigio Liu 0cea7caef2 del macos tfm 2021-07-04 13:03:49 +08:00
Aigio Liu f9ebc32f8b Mac TFM to 6.0 2021-07-03 11:45:47 +08:00
rmbgame 2de1a12e42 ConsoleShell 2021-07-03 09:00:34 +08:00
Aigio Liu d2874d88ea fix bugs
https://appcenter.ms/orgs/BeyondDimension/apps/Steam/crashes/errors/1815188879u/overview
https://appcenter.ms/orgs/BeyondDimension/apps/Steam/crashes/errors/2624424033u/overview
https://appcenter.ms/orgs/BeyondDimension/apps/Steam/crashes/errors/842356268u/overview
https://appcenter.ms/orgs/BeyondDimension/apps/Steam/crashes/errors/1871155023u/overview
https://appcenter.ms/orgs/BeyondDimension/apps/Steam/crashes/errors/1572585065u/overview
2021-07-03 02:10:50 +08:00
rmbgame cd39edeefd AvalonEdit 2021-07-02 10:16:51 +08:00
Aigio Liu fe000c95b6 新增 QQ 登录渠道,修复 第三方账号绑定或登录时的个人资料没有同步显示 2021-07-01 20:19:33 +08:00
rmbgame 868143a248 Add AvaloniaEdit 2021-07-01 08:14:09 +08:00
rmbgame cddf671fd6 menu tip 2021-07-01 08:14:09 +08:00
Aigio Liu ed9cab2175 Mobile Auth GAP & QQLogin 2021-06-30 23:49:46 +08:00
mossimo fc1e2f3cac Merge branch 'develop' of https://github.com/SteamTools-Team/SteamTools into develop 2021-06-30 18:51:58 +08:00
mossimo 4fd203eab8 fix Content-Type 2021-06-30 18:51:34 +08:00
Aigio Liu 4defb58b0e ASF Log redirection 2021-06-30 11:28:11 +08:00
Aigio Liu 42c0842a1d ASF Log Config 2021-06-30 00:45:04 +08:00
rmbgame 725112e350 Misc 2021-06-29 23:40:28 +08:00
rmbgame 7d9607b97e 改进加速计时逻辑 2021-06-29 23:40:28 +08:00
rmbgame ebfcb9779b asf 2021-06-29 23:40:28 +08:00
Aigio Liu a99f6f5e14 Update Translate Tool 2021-06-29 20:16:09 +08:00
Aigio Liu 8dd516e5d2 Translation Tool/WriteCommand 2021-06-29 17:46:55 +08:00
Aigio Liu 6cede51159 Translation Tool 2021-06-29 01:41:01 +08:00
Aigio Liu d4a7714751 UserProfileActivity 2021-06-26 23:23:54 +08:00
Aigio Liu 7f57f0192c fix SendSmsUIHelper for Android, improve RSAUtils & API Error 1006 2021-06-26 00:26:59 +08:00
Aigio Liu 9921781f74 VisualElements 2021-06-25 18:00:26 +08:00
Aigio Liu 1a4cfd3f51 fix pubxml ref rid not found error 2021-06-25 11:50:28 +08:00
mossimo b8964286c9 Merge branch 'develop' of https://github.com/SteamTools-Team/SteamTools into develop 2021-06-24 22:07:49 +08:00
Aigio Liu 5f8e33e015 FileSystemDesktopMac 2021-06-24 21:33:03 +08:00
Aigio L b68a2eeb37 Update dotnet.yml 2021-06-24 20:44:50 +08:00
Aigio L c903f3e755 Update dotnet.yml 2021-06-24 20:40:05 +08:00
Aigio L 0e7ccbb641 Update dotnet.yml 2021-06-24 20:36:34 +08:00
mossimo b51fe94053 savechange 2021-06-24 17:03:19 +08:00
mossimo 151afb0ba3 Merge branch 'develop' of https://github.com/SteamTools-Team/SteamTools into develop 2021-06-24 16:19:24 +08:00
mossimo 2b276e9440 save 2021-06-24 16:19:11 +08:00
Aigio L 7f5ebf1cb6 Update dotnet.yml 2021-06-24 16:18:34 +08:00
Aigio Liu 457867b0b1 fix 2021-06-24 15:59:23 +08:00
Aigio Liu 549100a52c fix 2021-06-24 13:08:40 +08:00
Aigio Liu 9a6d4353c7 fix CI 2021-06-24 13:05:33 +08:00
mossimo f8475322cf Merge branch 'develop' of https://github.com/SteamTools-Team/SteamTools into develop 2021-06-24 12:40:29 +08:00
mossimo 2a350c24c8 save 2021-06-24 12:39:51 +08:00
Aigio Liu a47d17055b fix CI 2021-06-24 12:38:55 +08:00
Aigio Liu 07e61dea44 Add IPlatformService 2021-06-24 12:34:57 +08:00
Aigio Liu 664f242a11 ico & icns 2021-06-24 12:05:47 +08:00
mossimo 029801c386 Merge branch 'develop' of https://github.com/SteamTools-Team/SteamTools into develop 2021-06-24 12:04:12 +08:00
mossimo 26d39bb33a save 2021-06-24 12:03:54 +08:00
Aigio Liu 2fa8f40086 fix CI 2021-06-24 11:14:19 +08:00
Aigio Liu 95b53cab0d Update submodule 2021-06-24 11:05:29 +08:00
Aigio Liu 675ae06395 v2.4.2 2021-06-24 01:49:22 +08:00
rmbgame 470c244d16 Misc 2021-06-24 00:37:21 +08:00
rmbgame 5865364e6a Submodule 2021-06-24 00:37:21 +08:00
rmbgame 2559fc2c5d CI Build Error Fix 2021-06-24 00:37:21 +08:00
Aigio Liu a184cc069a UserProfile for Android 2021-06-23 22:29:50 +08:00
mossimo 03a9e83481 Merge branch 'develop' of https://github.com/SteamTools-Team/SteamTools into develop 2021-06-23 17:27:41 +08:00
mossimo f7e5fc2421 OK 2021-06-23 17:27:03 +08:00
rmbgame 3c29b8efdf Flyout Style Fix 2021-06-23 14:29:38 +08:00
rmbgame 83f5c370fe Misc 2021-06-23 14:29:38 +08:00
Aigio Liu 9e2e8d7d59 ShowWindowServiceImpl for Android 2021-06-22 21:22:04 +08:00
mossimo 63cb5c11d7 save 2021-06-22 00:39:51 +08:00
mossimo 1fff72915c ShareManage (Edit Save) Ok
wait details
2021-06-22 00:39:12 +08:00
Aigio Liu 7e9925f05b AboutActivity 2021-06-21 20:49:55 +08:00
rmbgame e332bee93a submodule 2021-06-21 19:06:26 +08:00
mossimo 87ce027ca5 Merge branch 'develop' of https://github.com/SteamTools-Team/SteamTools into develop 2021-06-21 17:56:16 +08:00
mossimo a669560415 shareManage 2021-06-21 17:55:51 +08:00
rmbgame 8067fea514 update 2021-06-21 16:50:04 +08:00
rmbgame 6d73c19d27 save 2021-06-21 15:29:21 +08:00
rmbgame d9ef9e3dcd add asf submodule references 2021-06-21 15:29:20 +08:00
rmbgame 549ec79bfa 库存游戏可浏览已安装的游戏文件夹 2021-06-21 15:29:20 +08:00
rmbgame 8aaf814ff7 save 2021-06-21 15:29:20 +08:00
rmbgame 7e2b893104 asf download 2021-06-21 15:29:20 +08:00
rmbgame 8ce4861846 save 2021-06-21 15:29:20 +08:00
rmbgame 60abff7a13 save 2021-06-21 15:29:20 +08:00
Aigio Liu ae8ec51642 about page Android UI 2021-06-20 23:00:41 +08:00
Aigio Liu 318b360212 PhoneNumberLoginOrRegisterFragment 2021-06-20 19:55:49 +08:00
Aigio Liu 3ff117ecec LoginOrRegisterPage 2021-06-19 21:31:50 +08:00
Aigio Liu dc54aae844 MyPage 2021-06-19 00:33:18 +08:00
Aigio Liu 39ad55dde0 Fix Avalonia.Designer Call 2021-06-18 19:17:21 +08:00
Aigio Liu 11830c1c95 Toolbar Style 2021-06-18 18:37:42 +08:00
Aigio Liu 0139aa65cd Upgrade to .NET 6.0.100-preview.5.21302.13 2021-06-18 12:47:01 +08:00
Aigio Liu 271514f51b LoginOrRegisterActivity 2021-06-17 19:10:33 +08:00
Aigio Liu b2c8ed2081 fix ItemOnClick 2021-06-17 12:50:34 +08:00
Aigio Liu 5b34289212 MyPreferenceButtonAdapter 2021-06-16 23:19:26 +08:00
mossimo 3b4c06047a Merge branch 'develop' of https://github.com/SteamTools-Team/SteamTools into develop 2021-06-16 00:18:37 +08:00
Aigio Liu c88cb29142 IsConnected 2021-06-15 18:54:15 +08:00
mossimo 7d4210febe try macos Install CerCertificate 2021-06-15 18:19:59 +08:00
Aigio Liu 9b385e43bb MyPage 2021-06-15 15:04:46 +08:00
mossimo 8aefabec2e try fix macos Accountchange 2021-06-15 11:39:15 +08:00
mossimo 64080fa4e4 fix textEdit 2021-06-15 09:44:36 +08:00
mossimo 5690613db2 1 2021-06-15 09:11:13 +08:00
Aigio Liu 6b66a2e3bd BaseRecycleViewAdapter 2021-06-14 18:58:30 +08:00
Aigio Liu eae82859f3 Android Res Links 2021-06-14 02:47:27 +08:00
Aigio Liu 3fcc001308 Remove Xamarin.Forms, Add Android Native UI 2021-06-13 16:11:47 +08:00
rmbgame c519cfe735 fix 2021-06-13 13:16:45 +08:00
rmbgame 697a8f54f1 asf 70% 2021-06-13 13:16:45 +08:00
Aigio Liu 686171f73c android fast login ui 2021-06-12 17:20:34 +08:00
mossimo d597f992e4 Merge branch 'develop' of https://github.com/SteamTools-Team/SteamTools into develop 2021-06-12 05:04:00 +08:00
mossimo 174ec43551 fix macos install cer 2021-06-12 05:03:34 +08:00
Aigio Liu 90f1aae4bd Android Native UI 2021-06-11 22:30:29 +08:00
Aigio Liu 99270e730e fix 2021-06-11 16:07:25 +08:00
Aigio Liu 080ed55860 fix 2021-06-11 16:07:24 +08:00
Aigio Liu ea0cd59763 AttachDevTools2 2021-06-11 15:40:17 +08:00
Aigio Liu a8780568d6 AttachDevTools2 2021-06-11 15:40:13 +08:00
rmbgame 9b9de32f3c 调整深色和浅色模式的视觉效果
添加asf功能 50%
2021-06-11 05:20:24 +08:00
rmbgame 288f947730 重写webview3 2021-06-10 21:01:39 +08:00
rmbgame 3c65d716b1 save 2021-06-10 21:01:39 +08:00
Aigio Liu ebef7ede81 fix 2021-06-10 18:48:43 +08:00
mossimo be5bb78773 Merge branch 'develop' of https://github.com/SteamTools-Team/SteamTools into develop 2021-06-10 18:34:52 +08:00
Aigio Liu db636e894f fix 2021-06-10 18:33:32 +08:00
mossimo 808f0c1b9d host edit 2021-06-10 18:09:04 +08:00
Aigio Liu 20af863f4e macOS AppLogo 2021-06-10 00:58:49 +08:00
Aigio Liu 15ddeddf0d fix 2021-06-10 00:46:30 +08:00
Aigio Liu 3eff9a45c6 IHttpService.GetImageAsync use Polly & AppLogo Update SVG & Mobile UI MyPage 2021-06-10 00:42:53 +08:00
Aigio Liu c3fbeb3c4a fix 2021-06-08 17:08:41 +08:00
Mossimo efc3cf6797 NoSandBox fix macos 2021-06-08 17:02:39 +08:00
Aigio Liu b78ac16667 增量更新 v2 2021-06-08 14:10:31 +08:00
mossimo a492968401 1 2021-06-06 18:16:50 +08:00
mossimo b4f220e683 NoSteamRunTips 2021-06-06 18:16:06 +08:00
Aigio Liu b356d80c3e fix 2021-06-06 12:11:12 +08:00
Aigio Liu 049072ea5d v2.4.1 2021-06-06 10:33:05 +08:00
rmbgame 9c13426781 fix more screen 2021-06-06 01:48:44 +08:00
rmbgame 67ec02af0c fix taskbar high dpi error 2021-06-06 01:42:11 +08:00
1270 changed files with 252637 additions and 31699 deletions
+2 -2
View File
@@ -4,7 +4,7 @@
root = true
# Unix-style newlines with a newline ending every file
[*]
[*.{sh}]
end_of_line = lf
insert_final_newline = true
@@ -17,7 +17,7 @@ charset = utf-8
[Makefile]
indent_style = tab
[*.{js,json,xaml,axaml}]
[*.{js,json,xaml,axaml,xml,resx,resw,csproj,wapproj,appxmanifest}]
indent_style = space
indent_size = 2
+1
View File
@@ -2,6 +2,7 @@
# Set default behavior to automatically normalize line endings.
###############################################################################
* text=auto
*.sh text eol=lf
###############################################################################
# Set default behavior for command prompt diff.
+13 -4
View File
@@ -11,7 +11,8 @@ jobs:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ windows-latest, macOS-latest, ubuntu-latest ]
# os: [ windows-latest, macOS-latest, ubuntu-latest ]
os: [ windows-latest ]
steps:
- uses: actions/checkout@v2
- name: Setup .NET 5
@@ -21,7 +22,15 @@ jobs:
- name: Setup .NET 6
uses: actions/setup-dotnet@v1
with:
dotnet-version: 6.0.100-preview.4.21255.9
dotnet-version: 6.0.100-preview.7.21379.14
# - name: Install macOS SDK(macOS)
# if: matrix.os == 'macOS-latest'
# run: sudo dotnet workload install microsoft-macos-sdk-full
# - name: Install macOS SDK(Windows)
# if: matrix.os == 'windows-latest'
# run: dotnet workload install microsoft-macos-sdk-full
- name: Checkout repository
uses: actions/checkout@v2
@@ -37,11 +46,11 @@ jobs:
- name: dotnet restore SteamToolsV2+.Linux.sln
if: matrix.os == 'ubuntu-latest'
run: dotnet restore ./SteamToolsV2+.Linux.sln
run: dotnet restore ./SteamToolsV2+.Linux.slnf
- name: dotnet restore SteamToolsV2+.Mac.sln
if: matrix.os == 'macOS-latest'
run: dotnet restore ./SteamToolsV2+.Mac.sln
run: dotnet restore ./SteamToolsV2+.Mac.slnf
- name: dotnet AvaloniaApp build
run: dotnet build ./src/ST.Client.Desktop.Avalonia.App/ST.Client.Desktop.Avalonia.App.csproj
+9
View File
@@ -19,3 +19,12 @@
[submodule "references/WinAuth"]
path = references/WinAuth
url = https://github.com/SteamTools-Team/WinAuth
[submodule "references/ArchiSteamFarm"]
path = references/ArchiSteamFarm
url = https://github.com/SteamTools-Team/ArchiSteamFarm.git
[submodule "references/sqlite-net"]
path = references/sqlite-net
url = https://github.com/SteamTools-Team/sqlite-net.git
[submodule "references/FluentAvalonia"]
path = references/FluentAvalonia
url = https://github.com/SteamTools-Team/FluentAvalonia.git
+3 -7
View File
@@ -1,20 +1,16 @@
<Project>
<PropertyGroup>
<LangVersion>9.0</LangVersion>
<LangVersion>preview</LangVersion>
<Nullable>enable</Nullable>
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
<TrimMode>link</TrimMode>
<DisableImplicitNamespaceImports>true</DisableImplicitNamespaceImports>
</PropertyGroup>
<PropertyGroup Condition=" Exists('$(MSBuildProjectDirectory)\..\..\Unicorn.pfx') ">
<DefineConstants>SIGN_ASSEMBLY;$(DefineConstants)</DefineConstants>
<SignAssembly>true</SignAssembly>
<DelaySign>false</DelaySign>
<AssemblyOriginatorKeyFile>..\..\Unicorn.pfx</AssemblyOriginatorKeyFile>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)'=='Release' ">
<DebugType>none</DebugType>
<DebugSymbols>false</DebugSymbols>
<AssemblyOriginatorKeyFile>$(MSBuildProjectDirectory)\..\..\Unicorn.pfx</AssemblyOriginatorKeyFile>
</PropertyGroup>
</Project>
+47 -22
View File
@@ -11,11 +11,11 @@
[![GitHub Fork](https://img.shields.io/github/forks/rmbadmin/SteamTools?style=flat-square)](https://github.com/rmbadmin/SteamTools/network/members)
![GitHub Repo size](https://img.shields.io/github/repo-size/rmbadmin/SteamTools?style=flat-square&color=3cb371)
[![GitHub Repo Languages](https://img.shields.io/github/languages/top/SteamTools-Team/SteamTools?style=flat-square)](https://github.com/SteamTools-Team/SteamTools/search?l=c%23)
[![NET 6.0](https://img.shields.io/badge/dotnet-6.0-purple.svg?style=flat-square&color=512bd4)](https://devblogs.microsoft.com/dotnet/announcing-net-6-preview-4)
[![C# 9.0](https://img.shields.io/badge/c%23-9.0-green.svg?style=flat-square&color=6da86a)](https://docs.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-9)
[![NET 6.0](https://img.shields.io/badge/dotnet-6.0-purple.svg?style=flat-square&color=512bd4)](https://devblogs.microsoft.com/dotnet/announcing-net-6-preview-7)
[![C# 10.0](https://img.shields.io/badge/c%23-10.0-green.svg?style=flat-square&color=6da86a)](https://docs.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-10)
[![Desktop GUI](https://img.shields.io/badge/gui@desktop-AvaloniaUI-purple.svg?style=flat-square&color=8c45ab)](https://github.com/AvaloniaUI/Avalonia)
[![Mobile GUI](https://img.shields.io/badge/gui@mobile-Xamarin.Forms-blue.svg?style=flat-square&color=3498db)](https://github.com/xamarin/Xamarin.Forms)
[![Desktop UI](https://img.shields.io/badge/ui@desktop-AvaloniaUI-purple.svg?style=flat-square&color=8c45ab)](https://github.com/AvaloniaUI/Avalonia)
![Mobile UI](https://img.shields.io/badge/ui@mobile-Platform_Native_UI-blue.svg?style=flat-square&color=3498db)
[![Official WebSite](https://img.shields.io/badge/website@official-Ant%20Design%20of%20React-blue.svg?style=flat-square&color=61dafb)](https://github.com/ant-design/ant-design)
[![BackManage WebSite](https://img.shields.io/badge/website@back_manage-Ant%20Design%20of%20Blazor-purple.svg?style=flat-square&color=512bd4)](https://github.com/ant-design-blazor/ant-design-blazor)
@@ -28,6 +28,12 @@
English | [简体中文](./README.md)
## 🚀 Download channel
- [GitHub Releases](https://github.com/SteamTools-Team/SteamTools/releases)
- [Gitee Releases](https://gitee.com/rmbgame/SteamTools/releases)
- [Official WebSite](https://steampp.net)
- ~~[Microsoft Store](https://www.microsoft.com/store/apps/9MTCFHS560NG)~~
## ✨ Functions
1. Local reverse proxy for Steam's community webpage to enable normal access in **the Chinese Mainland, Mainland of China**
2. Quickly switch the Steam account that the current PC has remembered to log into
@@ -41,34 +47,45 @@ English | [简体中文](./README.md)
<!--Prerequisites Microsoft Visual C++ 2015-2019 Redistributable [64 bit](https://aka.ms/vs/16/release/vc_redist.x64.exe) / [32 bit](https://aka.ms/vs/16/release/vc_redist.x86.exe)-->
## 🖥 Supported Operating Systems
- Desktop(Only 64 bit is supported)
- Windows 10 1607+ / Windows Server, version 1909+ / Windows Server 2019 / Windows Server 2016
- Desktop(Only X64 and ARM64 are supported)
- Windows 10 / Windows Server, Version 20H2
- Windows 10 / Windows Server, Version 2004
- Windows 10 / Windows Server, Version 1909
- Windows 10 / Windows Server, Version 1903
- Windows 10, Version 1809
- Windows 10, Version 1803
- Windows 10, Version 1709
- Windows 10, Version 1607
- Windows 8.1 / Windows Server 2012 R2
- Windows 7 SP1 [ESU](https://docs.microsoft.com/troubleshoot/windows-client/windows-7-eos-faq/windows-7-extended-security-updates-faq)
- Prerequisites
- KB3063858 [64 bit](https://www.microsoft.com/download/details.aspx?id=47442) / [32 bit](https://www.microsoft.com/download/details.aspx?id=47409)
- macOS 10.13 High Sierra Or Higher
- Windows Server 2019
- Windows Server 2016
- Windows Server 2012 R2
- Windows Server 2012
- macOS 10.14 Mojave Or Higher
- Linux Distribution
- Arch Linux
- Alpine Linux 3.11+
- Alpine Linux 3.13+
- CentOS 7+
- Debian 9+
- Debian 10+
- Deepin 20.1 / UOS 20
- Fedora 32+
- Linux Mint 18+
- openSUSE 15+
- Red Hat Enterprise Linux 7+
- SUSE Enterprise Linux (SLES) 12 SP2+
- Ubuntu 20.10, 20.04, 18.04, 16.04
- Mobile(Only ARM64 or ARM32 are supported)
- Android 5.0+
- iOS 10.0+
- Ubuntu 16.04, 18.04, 20.04+
- Mobile
- Android 5.0/API 21+ (Only [arm64-v8a](https://developer.android.google.cn/ndk/guides/abis?hl=zh_cn#arm64-v8a) and [armeabiv-v7a](https://developer.android.google.cn/ndk/guides/abis?hl=zh_cn#v7a) are supported)
- iOS 10.0+ (ARM64 only)
## ⛔ Unsupported Operating System
- Windows 8
- [Due to Microsoft's official support for the product has ended](https://docs.microsoft.com/lifecycle/products/windows-8), so this program cannot run on this operating system, [It is recommended to upgrade to Windows 8.1](https://support.microsoft.com/windows/update-to-windows-8-1-from-windows-8-17fc54a7-a465-6b5a-c1a0-34140afd0669)
- Windows Server 2012 / 2008 R2 SP1
- Only version 1.X is available, and version 2.X is not supported. It is recommended to upgrade to **Windows Server 2012 R2** or higher
- Windows Server 2008 R2 SP1
- Only version 1.x is available, 2.x is not supported at first, and it is recommended to upgrade to a higher version
- Windows Server / Linux version without desktop GUI
## 🌏 Roadmap
@@ -78,7 +95,7 @@ Read what we [milestones](https://github.com/SteamTools-Team/SteamTools/mileston
[Visual Studio 2019 Version 16.10 Or Higher](https://visualstudio.microsoft.com/vs/) Or [JetBrains Rider](https://www.jetbrains.com/rider/) Or ~~[Visual Studio for Mac](https://visualstudio.microsoft.com/vs/mac/)~~ Or ~~[Visual Studio Code](https://code.visualstudio.com/)~~
- Supported Operating Systems
- [Windows 10 version 2004 or higher: Home, Professional, Education, and Enterprise (LTSC and S are not supported)](https://docs.microsoft.com/en-us/visualstudio/releases/2019/system-requirements)
- [macOS 10.13 High Sierra Or Higher](https://docs.microsoft.com/en-us/visualstudio/productinfo/vs2019-system-requirements-mac)
- [macOS 10.14 Mojave Or Higher](https://docs.microsoft.com/en-us/visualstudio/productinfo/vs2019-system-requirements-mac)
- Workload
- Web and Cloud
- ASP.NET and Web Development
@@ -95,6 +112,9 @@ Read what we [milestones](https://github.com/SteamTools-Team/SteamTools/mileston
- [Avalonia for Visual Studio](https://marketplace.visualstudio.com/items?itemName=AvaloniaTeam.AvaloniaforVisualStudio)
- [NUnit VS Templates](https://marketplace.visualstudio.com/items?itemName=NUnitDevelopers.NUnitTemplatesforVisualStudio)
[Android Studio 4.2+](https://developer.android.com/studio/)
[Xcode 13](https://developer.apple.com/xcode/)
## 📄 Thanks to the following Open Source Projects
* [Newtonsoft.Json](https://github.com/JamesNK/Newtonsoft.Json)
* [MetroRadiance](https://github.com/Grabacr07/MetroRadiance)
@@ -125,7 +145,7 @@ Read what we [milestones](https://github.com/SteamTools-Team/SteamTools/mileston
* [Polly](https://github.com/App-vNext/Polly)
* [TaskScheduler](https://github.com/dahall/taskscheduler)
* [SharpZipLib](https://github.com/icsharpcode/SharpZipLib)
* [LibVLCSharp](https://github.com/videolan/libvlcsharp)
* [SevenZipSharp](https://github.com/squid-box/SevenZipSharp)
* [Depressurizer](https://github.com/Depressurizer/Depressurizer)
* [NLog](https://github.com/nlog/NLog)
* [NUnit](https://github.com/nunit/nunit)
@@ -134,27 +154,32 @@ Read what we [milestones](https://github.com/SteamTools-Team/SteamTools/mileston
* [AvaloniaUI](https://github.com/AvaloniaUI/Avalonia)
* [AvaloniaGif](https://github.com/jmacato/AvaloniaGif)
* [Avalonia XAML Behaviors](https://github.com/wieslawsoltes/AvaloniaBehaviors)
* [FluentAvalonia](https://github.com/amwx/FluentAvalonia)
* [APNG.NET](https://github.com/jz5/APNG.NET)
* [Chromium Embedded Framework (CEF)](https://github.com/chromiumembedded/cef)
* [Moq](https://github.com/moq/moq4)
* [NPOI](https://github.com/nissl-lab/npoi)
* [Fleck](https://github.com/statianzo/Fleck)
* [Swashbuckle.AspNetCore](https://github.com/domaindrivendev/Swashbuckle.AspNetCore)
* [AspNet.Security.OpenId.Providers](https://github.com/aspnet-contrib/AspNet.Security.OpenId.Providers)
* [AspNet.Security.OAuth.Providers](https://github.com/aspnet-contrib/AspNet.Security.OAuth.Providers)
* [CefNet](https://github.com/CefNet/CefNet)
* [CefSharp](https://github.com/cefsharp/CefSharp)
* [ZXing.Net](https://github.com/micjahn/ZXing.Net)
* [QRCoder](https://github.com/codebude/QRCoder)
* [React](https://github.com/facebook/react)
* [Ant Design](https://github.com/ant-design/ant-design)
* [Ant Design Blazor](https://github.com/ant-design-blazor/ant-design-blazor)
* [Toast messages for Xamarin.iOS](https://github.com/andrius-k/Toast)
* [XF.Material Library](https://github.com/Baseflow/XF-Material-Library)
* [Visual Studio App Center SDK for .NET](https://github.com/microsoft/appcenter-sdk-dotnet)
* [AppCenter-XMac](https://github.com/nor0x/AppCenter-XMac)
* [MSBuild.Sdk.Extras](https://github.com/novotnyllc/MSBuildSdkExtras)
* [Xamarin.Essentials](https://github.com/xamarin/essentials)
* [Xamarin.Forms](https://github.com/xamarin/Xamarin.Forms)
* [Open Source Components for Xamarin](https://github.com/xamarin/XamarinComponents)
* [Google Play Services / Firebase / ML Kit for Xamarin.Android](https://github.com/xamarin/GooglePlayServicesComponents)
* [Picasso](https://github.com/square/picasso)
* [OkHttp](https://github.com/square/okhttp)
* [Material Components for Android](https://github.com/material-components/material-components-android)
* [AndroidX for Xamarin.Android](https://github.com/xamarin/AndroidX)
* [Android Jetpack](https://github.com/androidx/androidx)
* [ConstraintLayout](https://github.com/androidx/constraintlayout)
* [MSAL.NET](https://github.com/AzureAD/microsoft-authentication-library-for-dotnet)
* [Entity Framework Core](https://github.com/dotnet/efcore)
* [ASP.NET Core](https://github.com/dotnet/aspnetcore)
+56 -23
View File
@@ -11,11 +11,11 @@
[![GitHub Fork](https://img.shields.io/github/forks/rmbadmin/SteamTools?style=flat-square)](https://github.com/rmbadmin/SteamTools/network/members)
![GitHub Repo size](https://img.shields.io/github/repo-size/rmbadmin/SteamTools?style=flat-square&color=3cb371)
[![GitHub Repo Languages](https://img.shields.io/github/languages/top/SteamTools-Team/SteamTools?style=flat-square)](https://github.com/SteamTools-Team/SteamTools/search?l=c%23)
[![NET 6.0](https://img.shields.io/badge/dotnet-6.0-purple.svg?style=flat-square&color=512bd4)](https://devblogs.microsoft.com/dotnet/announcing-net-6-preview-4)
[![C# 9.0](https://img.shields.io/badge/c%23-9.0-brightgreen.svg?style=flat-square&color=6da86a)](https://docs.microsoft.com/zh-cn/dotnet/csharp/whats-new/csharp-9)
[![NET 6.0](https://img.shields.io/badge/dotnet-6.0-purple.svg?style=flat-square&color=512bd4)](https://devblogs.microsoft.com/dotnet/announcing-net-6-preview-7)
[![C# 10.0](https://img.shields.io/badge/c%23-10.0-brightgreen.svg?style=flat-square&color=6da86a)](https://docs.microsoft.com/zh-cn/dotnet/csharp/whats-new/csharp-10)
[![Desktop GUI](https://img.shields.io/badge/gui@desktop-AvaloniaUI-purple.svg?style=flat-square&color=8c45ab)](https://github.com/AvaloniaUI/Avalonia)
[![Mobile GUI](https://img.shields.io/badge/gui@mobile-Xamarin.Forms-blue.svg?style=flat-square&color=3498db)](https://github.com/xamarin/Xamarin.Forms)
[![Desktop UI](https://img.shields.io/badge/ui@desktop-AvaloniaUI-purple.svg?style=flat-square&color=8c45ab)](https://github.com/AvaloniaUI/Avalonia)
![Mobile UI](https://img.shields.io/badge/ui@mobile-Platform_Native_UI-blue.svg?style=flat-square&color=3498db)
[![Official WebSite](https://img.shields.io/badge/website@official-Ant%20Design%20of%20React-blue.svg?style=flat-square&color=61dafb)](https://github.com/ant-design/ant-design)
[![BackManage WebSite](https://img.shields.io/badge/website@back_manage-Ant%20Design%20of%20Blazor-purple.svg?style=flat-square&color=512bd4)](https://github.com/ant-design-blazor/ant-design-blazor)
@@ -29,6 +29,12 @@
[English](./README.en.md) | 简体中文
## 🚀 下载渠道
- [GitHub Releases](https://github.com/SteamTools-Team/SteamTools/releases)
- [Gitee Releases](https://gitee.com/rmbgame/SteamTools/releases)
- [Official WebSite](https://steampp.net)
- ~~[Microsoft Store](https://www.microsoft.com/store/apps/9MTCFHS560NG)~~
## ✨ 功能
1. 反代 Steam 的社区网页使其能正常访问
- 功能类似羽翼城大佬的 [steamcommunity_302](https://www.dogfight360.com/blog/686/)
@@ -50,34 +56,45 @@
<!--发布配置SelfContained=true时会自动打包VC++相关程序集-->
<!--先决条件 Microsoft Visual C++ 2015-2019 Redistributable [64 位](https://aka.ms/vs/16/release/vc_redist.x64.exe) / [32 位](https://aka.ms/vs/16/release/vc_redist.x86.exe)-->
## 🖥 系统要求
- 桌面端(仅支持 64 位)
- Windows 10 1607+ / Windows Server 版本 1903+ / Windows Server 2019 / Windows Server 2016
- Windows 8.1 / Windows Server 2012 R2
- 桌面端(仅支持 X64 和 ARM64)
- Windows 10/Windows Server 版本 20H2
- Windows 10/Windows Server 版本 2004
- Windows 10/Windows Server 版本 1909
- Windows 10/Windows Server 版本 1903
- Windows 10 版本 1809
- Windows 10 版本 1803
- Windows 10 版本 1709
- Windows 10 版本 1607
- Windows 8.1
- Windows 7 SP1 [ESU](https://docs.microsoft.com/zh-cn/troubleshoot/windows-client/windows-7-eos-faq/windows-7-extended-security-updates-faq)
- 先决条件
- KB3063858 [64 位](https://www.microsoft.com/zh-cn/download/details.aspx?id=47442) / [32 位](https://www.microsoft.com/zh-cn/download/details.aspx?id=47409)
- macOS 10.13 High Sierra 或更高版本
- Windows Server 2019
- Windows Server 2016
- Windows Server 2012 R2
- Windows Server 2012
- macOS 10.14 Mojave 或更高版本
- Linux 发行版
- Arch Linux
- Alpine Linux 3.11+
- Alpine Linux 3.13+
- CentOS 7+
- Debian 9+
- Debian 10+
- Deepin 20.1 / UOS 20
- Fedora 32+
- Linux Mint 18+
- openSUSE 15+
- Red Hat Enterprise Linux 7+
- SUSE Enterprise Linux (SLES) 12 SP2+
- Ubuntu 20.10, 20.04, 18.04, 16.04
- 移动端(仅支持 ARM64 或 ARM32)
- Android 5.0+
- iOS 10.0+
- Ubuntu 16.04, 18.04, 20.04+
- 移动端
- Android 5.0/API 21+ (仅支持 [arm64-v8a](https://developer.android.google.cn/ndk/guides/abis?hl=zh_cn#arm64-v8a) 和 [armeabiv-v7a](https://developer.android.google.cn/ndk/guides/abis?hl=zh_cn#v7a))
- iOS 10.0+ (仅支持 ARM64)
## ⛔ 不受支持的操作系统
- Windows 8
- [由于微软官方对该产品的支持已结束](https://docs.microsoft.com/zh-cn/lifecycle/products/windows-8),故本程序无法在此操作系统上运行,[建议升级到 Windows 8.1](https://support.microsoft.com/zh-cn/windows/%E4%BB%8E-windows-8-%E6%9B%B4%E6%96%B0%E5%88%B0-windows-8-1-17fc54a7-a465-6b5a-c1a0-34140afd0669)
- Windows Server 2012 / 2008 R2 SP1
- 仅可使用 1.X 版本,2.X 开始不受支持,建议升级到 **Windows Server 2012 R2** 或更高版本
- Windows Server 2008 R2 SP1
- 仅可使用 1.X 版本,2.X 开始不受支持,建议升级到更高版本
- 无桌面 GUI 的 Windows Server / Linux 版本
## 🌏 路线图
@@ -87,7 +104,7 @@
[Visual Studio 2019 版本 16.10 或更高版本](https://visualstudio.microsoft.com/zh-hans/vs/) 或 [JetBrains Rider](https://www.jetbrains.com/rider/) 或 ~~[Visual Studio for Mac](https://visualstudio.microsoft.com/zh-hans/vs/mac/)~~ 或 ~~[Visual Studio Code](https://code.visualstudio.com/)~~
- 系统要求
- [Windows 10 版本 2004 或更高版本:家庭版、专业版、教育版和企业版(不支持 LTSC 和 Windows 10 S,在较早的操作系统上可能不受支持)](https://docs.microsoft.com/zh-cn/visualstudio/releases/2019/system-requirements)
- [macOS 10.13 High Sierra 或更高版本](https://docs.microsoft.com/zh-cn/visualstudio/productinfo/vs2019-system-requirements-mac)
- [macOS 10.14 Mojave 或更高版本](https://docs.microsoft.com/zh-cn/visualstudio/productinfo/vs2019-system-requirements-mac)
- 工作负载
- Web 和云
- ASP.NET 和 Web 开发
@@ -104,8 +121,19 @@
- [Avalonia for Visual Studio](https://marketplace.visualstudio.com/items?itemName=AvaloniaTeam.AvaloniaforVisualStudio)
- [NUnit VS Templates](https://marketplace.visualstudio.com/items?itemName=NUnitDevelopers.NUnitTemplatesforVisualStudio)
[Android Studio 4.2+](https://developer.android.google.cn/studio/)
[Xcode 13](https://developer.apple.com/xcode/)
## 🏗️ [项目结构](./src/README.md)
<!--
* [LibVLCSharp](https://github.com/videolan/libvlcsharp)
* [Chromium Embedded Framework (CEF)](https://github.com/chromiumembedded/cef)
* [CefNet](https://github.com/CefNet/CefNet)
* [CefSharp](https://github.com/cefsharp/CefSharp)
* [ZXing.Net.Mobile](https://github.com/Redth/ZXing.Net.Mobile)
* [Floating Action Button Speed Dial](https://github.com/leinardi/FloatingActionButtonSpeedDial)
-->
<!--👇图标如果发生更改,还需更改 Tools.OpenSourceLibraryList(Program.OpenSourceLibraryListEmoji) -->
## 📄 感谢以下开源项目
* [Newtonsoft.Json](https://github.com/JamesNK/Newtonsoft.Json)
@@ -137,7 +165,7 @@
* [Polly](https://github.com/App-vNext/Polly)
* [TaskScheduler](https://github.com/dahall/taskscheduler)
* [SharpZipLib](https://github.com/icsharpcode/SharpZipLib)
* [LibVLCSharp](https://github.com/videolan/libvlcsharp)
* [SevenZipSharp](https://github.com/squid-box/SevenZipSharp)
* [Depressurizer](https://github.com/Depressurizer/Depressurizer)
* [NLog](https://github.com/nlog/NLog)
* [NUnit](https://github.com/nunit/nunit)
@@ -146,27 +174,32 @@
* [AvaloniaUI](https://github.com/AvaloniaUI/Avalonia)
* [AvaloniaGif](https://github.com/jmacato/AvaloniaGif)
* [Avalonia XAML Behaviors](https://github.com/wieslawsoltes/AvaloniaBehaviors)
* [FluentAvalonia](https://github.com/amwx/FluentAvalonia)
* [APNG.NET](https://github.com/jz5/APNG.NET)
* [Chromium Embedded Framework (CEF)](https://github.com/chromiumembedded/cef)
* [Moq](https://github.com/moq/moq4)
* [NPOI](https://github.com/nissl-lab/npoi)
* [Fleck](https://github.com/statianzo/Fleck)
* [Swashbuckle.AspNetCore](https://github.com/domaindrivendev/Swashbuckle.AspNetCore)
* [AspNet.Security.OpenId.Providers](https://github.com/aspnet-contrib/AspNet.Security.OpenId.Providers)
* [AspNet.Security.OAuth.Providers](https://github.com/aspnet-contrib/AspNet.Security.OAuth.Providers)
* [CefNet](https://github.com/CefNet/CefNet)
* [CefSharp](https://github.com/cefsharp/CefSharp)
* [ZXing.Net](https://github.com/micjahn/ZXing.Net)
* [QRCoder](https://github.com/codebude/QRCoder)
* [React](https://github.com/facebook/react)
* [Ant Design](https://github.com/ant-design/ant-design)
* [Ant Design Blazor](https://github.com/ant-design-blazor/ant-design-blazor)
* [Toast messages for Xamarin.iOS](https://github.com/andrius-k/Toast)
* [XF.Material Library](https://github.com/Baseflow/XF-Material-Library)
* [Visual Studio App Center SDK for .NET](https://github.com/microsoft/appcenter-sdk-dotnet)
* [AppCenter-XMac](https://github.com/nor0x/AppCenter-XMac)
* [MSBuild.Sdk.Extras](https://github.com/novotnyllc/MSBuildSdkExtras)
* [Xamarin.Essentials](https://github.com/xamarin/essentials)
* [Xamarin.Forms](https://github.com/xamarin/Xamarin.Forms)
* [Open Source Components for Xamarin](https://github.com/xamarin/XamarinComponents)
* [Google Play Services / Firebase / ML Kit for Xamarin.Android](https://github.com/xamarin/GooglePlayServicesComponents)
* [Picasso](https://github.com/square/picasso)
* [OkHttp](https://github.com/square/okhttp)
* [Material Components for Android](https://github.com/material-components/material-components-android)
* [AndroidX for Xamarin.Android](https://github.com/xamarin/AndroidX)
* [Android Jetpack](https://github.com/androidx/androidx)
* [ConstraintLayout](https://github.com/androidx/constraintlayout)
* [MSAL.NET](https://github.com/AzureAD/microsoft-authentication-library-for-dotnet)
* [Entity Framework Core](https://github.com/dotnet/efcore)
* [ASP.NET Core](https://github.com/dotnet/aspnetcore)
File diff suppressed because it is too large Load Diff
+41
View File
@@ -0,0 +1,41 @@
{
"solution": {
"path": "SteamToolsV2+.sln",
"projects": [
"src\\Common.AreaLib\\Common.AreaLib.csproj",
"src\\Common.ClientLib\\Common.ClientLib.csproj",
"src\\Common.ClientLib.Droid\\Common.ClientLib.Droid.csproj",
"src\\Common.ClientLib.iOS\\Common.ClientLib.iOS.csproj",
"src\\Common.CoreLib\\Common.CoreLib.csproj",
"src\\Repositories.sqlite-net-pcl\\Repositories.sqlite-net-pcl.csproj",
"references\\WinAuth\\Authenticator\\Authenticator.csproj",
"references\\AvaloniaGif\\AvaloniaGif\\AvaloniaGif.csproj",
"references\\AvaloniaGif\\LibAPNG\\LibAPNG.csproj",
"references\\SteamAchievementManager\\SAM.API\\SAM.API.csproj",
"references\\Steam4NET\\Steam4NET\\Steam4NET.csproj",
"references\\Titanium-Web-Proxy\\src\\Titanium.Web.Proxy\\Titanium.Web.Proxy.csproj",
"references\\ArchiSteamFarm\\ArchiSteamFarm.Library\\ArchiSteamFarm.Library.csproj",
"tests\\Common.UnitTest\\Common.UnitTest.csproj",
"tests\\Common.UnitTest.Droid\\Common.UnitTest.Droid.csproj",
"tests\\Common.UnitTest.Droid.App\\Common.UnitTest.Droid.App.csproj",
"tests\\ST.Client.UnitTest\\ST.Client.UnitTest.csproj",
"tests\\ST.Client.Desktop.UnitTest\\ST.Client.Desktop.UnitTest.csproj",
"src\\ST\\ST.csproj",
"src\\ST.Client\\ST.Client.csproj",
"src\\ST.Client.Desktop\\ST.Client.Desktop.csproj",
"src\\ST.Client.Desktop.Avalonia\\ST.Client.Desktop.Avalonia.csproj",
"src\\ST.Client.Desktop.Linux\\ST.Client.Desktop.Linux.csproj",
"src\\ST.Client.Mobile\\ST.Client.Mobile.csproj",
"src\\ST.Client.Mobile.Droid\\ST.Client.Mobile.Droid.csproj",
"src\\ST.Client.Mobile.iOS\\ST.Client.Mobile.iOS.csproj",
"src\\ST.Services.CloudService.Models\\ST.Services.CloudService.Models.csproj",
"src\\ST.Services.CloudService.ViewModels\\ST.Services.CloudService.ViewModels.csproj",
"src\\ST.Services.CloudService\\ST.Services.CloudService.csproj",
"src\\ST.Tools.AreaImport\\ST.Tools.AreaImport.csproj",
"src\\ST.Tools.MinifyStaticSites\\ST.Tools.MinifyStaticSites.csproj",
"src\\ST.Tools.OpenSourceLibraryList\\ST.Tools.OpenSourceLibraryList.csproj",
"src\\ST.Tools.Translate\\ST.Tools.Translate.csproj",
"src\\ST.Tools.AndroidResourceLink\\ST.Tools.AndroidResourceLink.csproj"
]
}
}
File diff suppressed because it is too large Load Diff
+41
View File
@@ -0,0 +1,41 @@
{
"solution": {
"path": "SteamToolsV2+.sln",
"projects": [
"src\\Common.AreaLib\\Common.AreaLib.csproj",
"src\\Common.ClientLib\\Common.ClientLib.csproj",
"src\\Common.ClientLib.Droid\\Common.ClientLib.Droid.csproj",
"src\\Common.ClientLib.iOS\\Common.ClientLib.iOS.csproj",
"src\\Common.CoreLib\\Common.CoreLib.csproj",
"src\\Repositories.sqlite-net-pcl\\Repositories.sqlite-net-pcl.csproj",
"references\\WinAuth\\Authenticator\\Authenticator.csproj",
"references\\AvaloniaGif\\AvaloniaGif\\AvaloniaGif.csproj",
"references\\AvaloniaGif\\LibAPNG\\LibAPNG.csproj",
"references\\SteamAchievementManager\\SAM.API\\SAM.API.csproj",
"references\\Steam4NET\\Steam4NET\\Steam4NET.csproj",
"references\\Titanium-Web-Proxy\\src\\Titanium.Web.Proxy\\Titanium.Web.Proxy.csproj",
"references\\ArchiSteamFarm\\ArchiSteamFarm.Library\\ArchiSteamFarm.Library.csproj",
"tests\\Common.UnitTest\\Common.UnitTest.csproj",
"tests\\Common.UnitTest.Droid\\Common.UnitTest.Droid.csproj",
"tests\\Common.UnitTest.Droid.App\\Common.UnitTest.Droid.App.csproj",
"tests\\ST.Client.UnitTest\\ST.Client.UnitTest.csproj",
"tests\\ST.Client.Desktop.UnitTest\\ST.Client.Desktop.UnitTest.csproj",
"src\\ST\\ST.csproj",
"src\\ST.Client\\ST.Client.csproj",
"src\\ST.Client.Desktop\\ST.Client.Desktop.csproj",
"src\\ST.Client.Desktop.Avalonia\\ST.Client.Desktop.Avalonia.csproj",
"src\\ST.Client.Desktop.Mac\\ST.Client.Desktop.Mac.csproj",
"src\\ST.Client.Mobile\\ST.Client.Mobile.csproj",
"src\\ST.Client.Mobile.Droid\\ST.Client.Mobile.Droid.csproj",
"src\\ST.Client.Mobile.iOS\\ST.Client.Mobile.iOS.csproj",
"src\\ST.Services.CloudService.Models\\ST.Services.CloudService.Models.csproj",
"src\\ST.Services.CloudService.ViewModels\\ST.Services.CloudService.ViewModels.csproj",
"src\\ST.Services.CloudService\\ST.Services.CloudService.csproj",
"src\\ST.Tools.AreaImport\\ST.Tools.AreaImport.csproj",
"src\\ST.Tools.MinifyStaticSites\\ST.Tools.MinifyStaticSites.csproj",
"src\\ST.Tools.OpenSourceLibraryList\\ST.Tools.OpenSourceLibraryList.csproj",
"src\\ST.Tools.Translate\\ST.Tools.Translate.csproj",
"src\\ST.Tools.AndroidResourceLink\\ST.Tools.AndroidResourceLink.csproj"
]
}
}
+298 -232
View File
@@ -7,11 +7,13 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "_Root", "_Root", "{66839CD8
ProjectSection(SolutionItems) = preProject
.editorconfig = .editorconfig
.gitignore = .gitignore
packaging\build-osx-app.sh = packaging\build-osx-app.sh
Directory.Build.props = Directory.Build.props
global.json = global.json
nuget.config = nuget.config
README.en.md = README.en.md
README.md = README.md
release-template.md = release-template.md
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "0_Common", "0_Common", "{83186945-EC14-4B3F-8C6F-B205AA184CA4}"
@@ -42,8 +44,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Authenticator", "references
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AvaloniaGif", "references\AvaloniaGif\AvaloniaGif\AvaloniaGif.csproj", "{86505E07-1D61-450C-96ED-263E80349DE0}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CefNet.Avalonia", "references\CefNet\CefNet.Avalonia\CefNet.Avalonia.csproj", "{AABC2464-E4C7-421E-8BA8-82F2DFA452FE}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LibAPNG", "references\AvaloniaGif\LibAPNG\LibAPNG.csproj", "{6AA8CA67-02A5-43C6-BECB-51BE246FA740}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SAM.API", "references\SteamAchievementManager\SAM.API\SAM.API.csproj", "{7A19537B-0D75-4131-A36C-0460B87637CC}"
@@ -100,25 +100,31 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ST.Tools.Packager.Installer
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ST.Tools.Translate", "src\ST.Tools.Translate\ST.Tools.Translate.csproj", "{7A27EDB5-2E6A-4E01-AA55-62C8B3117226}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ST.Tools.Win7Troubleshoot", "src\ST.Tools.Win7Troubleshoot\ST.Tools.Win7Troubleshoot.csproj", "{1A07EEE0-3533-4FD1-8D08-F89129820B1A}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ST.Client.Desktop.Avalonia.App.Bridge", "src\ST.Client.Desktop.Avalonia.App.Bridge\ST.Client.Desktop.Avalonia.App.Bridge.csproj", "{D93B5190-AEFF-4C13-8387-D8EC760400DD}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ST.Client.Desktop.Console.App.Bridge", "src\ST.Client.Desktop.Console.App.Bridge\ST.Client.Desktop.Console.App.Bridge.csproj", "{AB473106-1E41-4AFC-91B8-3A7ED331A9E9}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ST.Client.Desktop.Avalonia.App", "src\ST.Client.Desktop.Avalonia.App\ST.Client.Desktop.Avalonia.App.csproj", "{1CB40DC8-8FBC-4278-A19A-D872CFA353C0}"
EndProject
Project("{C7167F0D-BC9F-4E6E-AFE1-012C56B48DB5}") = "ST.Client.Desktop.Avalonia.App.Bridge.Package", "src\ST.Client.Desktop.Avalonia.App.Bridge.Package\ST.Client.Desktop.Avalonia.App.Bridge.Package.wapproj", "{1F659618-71E2-4AAF-9D86-62700FD4CF02}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ST.Client.Desktop.Avalonia.Demo.App", "src\ST.Client.Desktop.Avalonia.Demo.App\ST.Client.Desktop.Avalonia.Demo.App.csproj", "{7EC4BAB6-B7C0-4E87-9FB6-091ABFF10D88}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ST.Client.Desktop.Console.App", "src\ST.Client.Desktop.Console.App\ST.Client.Desktop.Console.App.csproj", "{912759CD-FEE9-405C-A668-55CEDB64B156}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ST.Client.Mobile.Droid.App", "src\ST.Client.Mobile.Droid.App\ST.Client.Mobile.Droid.App.csproj", "{B355E372-27D2-4217-A129-D3355573681F}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ST.Client.Mobile.iOS.App", "src\ST.Client.Mobile.iOS.App\ST.Client.Mobile.iOS.App.csproj", "{AFC828ED-21EE-4FD4-A40D-FEFED5EED4EA}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Bin", "src\ST.Client.Desktop.Avalonia.App.Bridge.Package.RefLauncher\Bin\Bin.csproj", "{AC8E40AE-CED2-415A-BC47-A68F3F14CB09}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ST.Tools.AndroidResourceLink", "src\ST.Tools.AndroidResourceLink\ST.Tools.AndroidResourceLink.csproj", "{9A8D2254-9B2B-4B92-8498-43A73BB9A410}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ArchiSteamFarm.Library", "references\ArchiSteamFarm\ArchiSteamFarm.Library\ArchiSteamFarm.Library.csproj", "{F4D8CD7B-6DF4-445C-AFA9-44466A552922}"
EndProject
Project("{C7167F0D-BC9F-4E6E-AFE1-012C56B48DB5}") = "ST.Client.Desktop.Avalonia.App.Bridge.Package", "src\ST.Client.Desktop.Avalonia.App.Bridge.Package\ST.Client.Desktop.Avalonia.App.Bridge.Package.wapproj", "{1F659618-71E2-4AAF-9D86-62700FD4CF02}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SQLite-net-std", "references\sqlite-net\nuget\SQLite-net-std\SQLite-net-std.csproj", "{B1F221F6-E19B-45D8-959D-A9CDA471C2D4}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Launcher", "src\ST.Client.Desktop.Avalonia.App.Bridge.Package.RefLauncher\Launcher\Launcher.csproj", "{F75D6FF7-955D-4355-8895-D9333ED9B39F}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ST.Client.Desktop.Avalonia.App.Bridge", "src\ST.Client.Desktop.Avalonia.App.Bridge\ST.Client.Desktop.Avalonia.App.Bridge.csproj", "{2A66B796-7BC2-4BE0-A920-1A457BBCCC67}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ST.Tools.DesktopBridgeLink", "src\ST.Tools.DesktopBridgeLink\ST.Tools.DesktopBridgeLink.csproj", "{137690DF-A3CB-4817-ACB8-9EAF3A52B5B5}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ST.Server.Resources", "src\ST.Server.Resources\ST.Server.Resources.csproj", "{9252AA73-9CF7-4B09-89CB-7FCB65A5DCFF}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FluentAvalonia", "references\FluentAvalonia\FluentAvalonia\FluentAvalonia.csproj", "{42154590-445B-41CF-AAEB-AACD1B65FA2C}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -362,34 +368,6 @@ Global
{86505E07-1D61-450C-96ED-263E80349DE0}.Release|x64.Build.0 = Release|Any CPU
{86505E07-1D61-450C-96ED-263E80349DE0}.Release|x86.ActiveCfg = Release|Any CPU
{86505E07-1D61-450C-96ED-263E80349DE0}.Release|x86.Build.0 = Release|Any CPU
{AABC2464-E4C7-421E-8BA8-82F2DFA452FE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{AABC2464-E4C7-421E-8BA8-82F2DFA452FE}.Debug|Any CPU.Build.0 = Debug|Any CPU
{AABC2464-E4C7-421E-8BA8-82F2DFA452FE}.Debug|ARM.ActiveCfg = Debug|Any CPU
{AABC2464-E4C7-421E-8BA8-82F2DFA452FE}.Debug|ARM.Build.0 = Debug|Any CPU
{AABC2464-E4C7-421E-8BA8-82F2DFA452FE}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{AABC2464-E4C7-421E-8BA8-82F2DFA452FE}.Debug|ARM64.Build.0 = Debug|Any CPU
{AABC2464-E4C7-421E-8BA8-82F2DFA452FE}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{AABC2464-E4C7-421E-8BA8-82F2DFA452FE}.Debug|iPhone.Build.0 = Debug|Any CPU
{AABC2464-E4C7-421E-8BA8-82F2DFA452FE}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{AABC2464-E4C7-421E-8BA8-82F2DFA452FE}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{AABC2464-E4C7-421E-8BA8-82F2DFA452FE}.Debug|x64.ActiveCfg = Debug|Any CPU
{AABC2464-E4C7-421E-8BA8-82F2DFA452FE}.Debug|x64.Build.0 = Debug|Any CPU
{AABC2464-E4C7-421E-8BA8-82F2DFA452FE}.Debug|x86.ActiveCfg = Debug|Any CPU
{AABC2464-E4C7-421E-8BA8-82F2DFA452FE}.Debug|x86.Build.0 = Debug|Any CPU
{AABC2464-E4C7-421E-8BA8-82F2DFA452FE}.Release|Any CPU.ActiveCfg = Release|Any CPU
{AABC2464-E4C7-421E-8BA8-82F2DFA452FE}.Release|Any CPU.Build.0 = Release|Any CPU
{AABC2464-E4C7-421E-8BA8-82F2DFA452FE}.Release|ARM.ActiveCfg = Release|Any CPU
{AABC2464-E4C7-421E-8BA8-82F2DFA452FE}.Release|ARM.Build.0 = Release|Any CPU
{AABC2464-E4C7-421E-8BA8-82F2DFA452FE}.Release|ARM64.ActiveCfg = Release|Any CPU
{AABC2464-E4C7-421E-8BA8-82F2DFA452FE}.Release|ARM64.Build.0 = Release|Any CPU
{AABC2464-E4C7-421E-8BA8-82F2DFA452FE}.Release|iPhone.ActiveCfg = Release|Any CPU
{AABC2464-E4C7-421E-8BA8-82F2DFA452FE}.Release|iPhone.Build.0 = Release|Any CPU
{AABC2464-E4C7-421E-8BA8-82F2DFA452FE}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{AABC2464-E4C7-421E-8BA8-82F2DFA452FE}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{AABC2464-E4C7-421E-8BA8-82F2DFA452FE}.Release|x64.ActiveCfg = Release|Any CPU
{AABC2464-E4C7-421E-8BA8-82F2DFA452FE}.Release|x64.Build.0 = Release|Any CPU
{AABC2464-E4C7-421E-8BA8-82F2DFA452FE}.Release|x86.ActiveCfg = Release|Any CPU
{AABC2464-E4C7-421E-8BA8-82F2DFA452FE}.Release|x86.Build.0 = Release|Any CPU
{6AA8CA67-02A5-43C6-BECB-51BE246FA740}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{6AA8CA67-02A5-43C6-BECB-51BE246FA740}.Debug|Any CPU.Build.0 = Debug|Any CPU
{6AA8CA67-02A5-43C6-BECB-51BE246FA740}.Debug|ARM.ActiveCfg = Debug|Any CPU
@@ -640,8 +618,8 @@ Global
{931C8F51-0350-4CFC-92B4-E2D89CC41C9A}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{931C8F51-0350-4CFC-92B4-E2D89CC41C9A}.Debug|x64.ActiveCfg = Debug|Any CPU
{931C8F51-0350-4CFC-92B4-E2D89CC41C9A}.Debug|x64.Build.0 = Debug|Any CPU
{931C8F51-0350-4CFC-92B4-E2D89CC41C9A}.Debug|x86.ActiveCfg = Debug|x86
{931C8F51-0350-4CFC-92B4-E2D89CC41C9A}.Debug|x86.Build.0 = Debug|x86
{931C8F51-0350-4CFC-92B4-E2D89CC41C9A}.Debug|x86.ActiveCfg = Debug|Any CPU
{931C8F51-0350-4CFC-92B4-E2D89CC41C9A}.Debug|x86.Build.0 = Debug|Any CPU
{931C8F51-0350-4CFC-92B4-E2D89CC41C9A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{931C8F51-0350-4CFC-92B4-E2D89CC41C9A}.Release|Any CPU.Build.0 = Release|Any CPU
{931C8F51-0350-4CFC-92B4-E2D89CC41C9A}.Release|ARM.ActiveCfg = Release|Any CPU
@@ -654,8 +632,8 @@ Global
{931C8F51-0350-4CFC-92B4-E2D89CC41C9A}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{931C8F51-0350-4CFC-92B4-E2D89CC41C9A}.Release|x64.ActiveCfg = Release|Any CPU
{931C8F51-0350-4CFC-92B4-E2D89CC41C9A}.Release|x64.Build.0 = Release|Any CPU
{931C8F51-0350-4CFC-92B4-E2D89CC41C9A}.Release|x86.ActiveCfg = Release|x86
{931C8F51-0350-4CFC-92B4-E2D89CC41C9A}.Release|x86.Build.0 = Release|x86
{931C8F51-0350-4CFC-92B4-E2D89CC41C9A}.Release|x86.ActiveCfg = Release|Any CPU
{931C8F51-0350-4CFC-92B4-E2D89CC41C9A}.Release|x86.Build.0 = Release|Any CPU
{BC5F6313-435E-4748-99D5-BB6F3B109F91}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{BC5F6313-435E-4748-99D5-BB6F3B109F91}.Debug|Any CPU.Build.0 = Debug|Any CPU
{BC5F6313-435E-4748-99D5-BB6F3B109F91}.Debug|ARM.ActiveCfg = Debug|Any CPU
@@ -1188,90 +1166,6 @@ Global
{7A27EDB5-2E6A-4E01-AA55-62C8B3117226}.Release|x64.Build.0 = Release|Any CPU
{7A27EDB5-2E6A-4E01-AA55-62C8B3117226}.Release|x86.ActiveCfg = Release|Any CPU
{7A27EDB5-2E6A-4E01-AA55-62C8B3117226}.Release|x86.Build.0 = Release|Any CPU
{1A07EEE0-3533-4FD1-8D08-F89129820B1A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1A07EEE0-3533-4FD1-8D08-F89129820B1A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1A07EEE0-3533-4FD1-8D08-F89129820B1A}.Debug|ARM.ActiveCfg = Debug|Any CPU
{1A07EEE0-3533-4FD1-8D08-F89129820B1A}.Debug|ARM.Build.0 = Debug|Any CPU
{1A07EEE0-3533-4FD1-8D08-F89129820B1A}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{1A07EEE0-3533-4FD1-8D08-F89129820B1A}.Debug|ARM64.Build.0 = Debug|Any CPU
{1A07EEE0-3533-4FD1-8D08-F89129820B1A}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{1A07EEE0-3533-4FD1-8D08-F89129820B1A}.Debug|iPhone.Build.0 = Debug|Any CPU
{1A07EEE0-3533-4FD1-8D08-F89129820B1A}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{1A07EEE0-3533-4FD1-8D08-F89129820B1A}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{1A07EEE0-3533-4FD1-8D08-F89129820B1A}.Debug|x64.ActiveCfg = Debug|Any CPU
{1A07EEE0-3533-4FD1-8D08-F89129820B1A}.Debug|x64.Build.0 = Debug|Any CPU
{1A07EEE0-3533-4FD1-8D08-F89129820B1A}.Debug|x86.ActiveCfg = Debug|Any CPU
{1A07EEE0-3533-4FD1-8D08-F89129820B1A}.Debug|x86.Build.0 = Debug|Any CPU
{1A07EEE0-3533-4FD1-8D08-F89129820B1A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1A07EEE0-3533-4FD1-8D08-F89129820B1A}.Release|Any CPU.Build.0 = Release|Any CPU
{1A07EEE0-3533-4FD1-8D08-F89129820B1A}.Release|ARM.ActiveCfg = Release|Any CPU
{1A07EEE0-3533-4FD1-8D08-F89129820B1A}.Release|ARM.Build.0 = Release|Any CPU
{1A07EEE0-3533-4FD1-8D08-F89129820B1A}.Release|ARM64.ActiveCfg = Release|Any CPU
{1A07EEE0-3533-4FD1-8D08-F89129820B1A}.Release|ARM64.Build.0 = Release|Any CPU
{1A07EEE0-3533-4FD1-8D08-F89129820B1A}.Release|iPhone.ActiveCfg = Release|Any CPU
{1A07EEE0-3533-4FD1-8D08-F89129820B1A}.Release|iPhone.Build.0 = Release|Any CPU
{1A07EEE0-3533-4FD1-8D08-F89129820B1A}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{1A07EEE0-3533-4FD1-8D08-F89129820B1A}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{1A07EEE0-3533-4FD1-8D08-F89129820B1A}.Release|x64.ActiveCfg = Release|Any CPU
{1A07EEE0-3533-4FD1-8D08-F89129820B1A}.Release|x64.Build.0 = Release|Any CPU
{1A07EEE0-3533-4FD1-8D08-F89129820B1A}.Release|x86.ActiveCfg = Release|Any CPU
{1A07EEE0-3533-4FD1-8D08-F89129820B1A}.Release|x86.Build.0 = Release|Any CPU
{D93B5190-AEFF-4C13-8387-D8EC760400DD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D93B5190-AEFF-4C13-8387-D8EC760400DD}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D93B5190-AEFF-4C13-8387-D8EC760400DD}.Debug|ARM.ActiveCfg = Debug|Any CPU
{D93B5190-AEFF-4C13-8387-D8EC760400DD}.Debug|ARM.Build.0 = Debug|Any CPU
{D93B5190-AEFF-4C13-8387-D8EC760400DD}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{D93B5190-AEFF-4C13-8387-D8EC760400DD}.Debug|ARM64.Build.0 = Debug|Any CPU
{D93B5190-AEFF-4C13-8387-D8EC760400DD}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{D93B5190-AEFF-4C13-8387-D8EC760400DD}.Debug|iPhone.Build.0 = Debug|Any CPU
{D93B5190-AEFF-4C13-8387-D8EC760400DD}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{D93B5190-AEFF-4C13-8387-D8EC760400DD}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{D93B5190-AEFF-4C13-8387-D8EC760400DD}.Debug|x64.ActiveCfg = Debug|Any CPU
{D93B5190-AEFF-4C13-8387-D8EC760400DD}.Debug|x64.Build.0 = Debug|Any CPU
{D93B5190-AEFF-4C13-8387-D8EC760400DD}.Debug|x86.ActiveCfg = Debug|Any CPU
{D93B5190-AEFF-4C13-8387-D8EC760400DD}.Debug|x86.Build.0 = Debug|Any CPU
{D93B5190-AEFF-4C13-8387-D8EC760400DD}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D93B5190-AEFF-4C13-8387-D8EC760400DD}.Release|Any CPU.Build.0 = Release|Any CPU
{D93B5190-AEFF-4C13-8387-D8EC760400DD}.Release|ARM.ActiveCfg = Release|Any CPU
{D93B5190-AEFF-4C13-8387-D8EC760400DD}.Release|ARM.Build.0 = Release|Any CPU
{D93B5190-AEFF-4C13-8387-D8EC760400DD}.Release|ARM64.ActiveCfg = Release|Any CPU
{D93B5190-AEFF-4C13-8387-D8EC760400DD}.Release|ARM64.Build.0 = Release|Any CPU
{D93B5190-AEFF-4C13-8387-D8EC760400DD}.Release|iPhone.ActiveCfg = Release|Any CPU
{D93B5190-AEFF-4C13-8387-D8EC760400DD}.Release|iPhone.Build.0 = Release|Any CPU
{D93B5190-AEFF-4C13-8387-D8EC760400DD}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{D93B5190-AEFF-4C13-8387-D8EC760400DD}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{D93B5190-AEFF-4C13-8387-D8EC760400DD}.Release|x64.ActiveCfg = Release|Any CPU
{D93B5190-AEFF-4C13-8387-D8EC760400DD}.Release|x64.Build.0 = Release|Any CPU
{D93B5190-AEFF-4C13-8387-D8EC760400DD}.Release|x86.ActiveCfg = Release|Any CPU
{D93B5190-AEFF-4C13-8387-D8EC760400DD}.Release|x86.Build.0 = Release|Any CPU
{AB473106-1E41-4AFC-91B8-3A7ED331A9E9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{AB473106-1E41-4AFC-91B8-3A7ED331A9E9}.Debug|Any CPU.Build.0 = Debug|Any CPU
{AB473106-1E41-4AFC-91B8-3A7ED331A9E9}.Debug|ARM.ActiveCfg = Debug|Any CPU
{AB473106-1E41-4AFC-91B8-3A7ED331A9E9}.Debug|ARM.Build.0 = Debug|Any CPU
{AB473106-1E41-4AFC-91B8-3A7ED331A9E9}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{AB473106-1E41-4AFC-91B8-3A7ED331A9E9}.Debug|ARM64.Build.0 = Debug|Any CPU
{AB473106-1E41-4AFC-91B8-3A7ED331A9E9}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{AB473106-1E41-4AFC-91B8-3A7ED331A9E9}.Debug|iPhone.Build.0 = Debug|Any CPU
{AB473106-1E41-4AFC-91B8-3A7ED331A9E9}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{AB473106-1E41-4AFC-91B8-3A7ED331A9E9}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{AB473106-1E41-4AFC-91B8-3A7ED331A9E9}.Debug|x64.ActiveCfg = Debug|Any CPU
{AB473106-1E41-4AFC-91B8-3A7ED331A9E9}.Debug|x64.Build.0 = Debug|Any CPU
{AB473106-1E41-4AFC-91B8-3A7ED331A9E9}.Debug|x86.ActiveCfg = Debug|Any CPU
{AB473106-1E41-4AFC-91B8-3A7ED331A9E9}.Debug|x86.Build.0 = Debug|Any CPU
{AB473106-1E41-4AFC-91B8-3A7ED331A9E9}.Release|Any CPU.ActiveCfg = Release|Any CPU
{AB473106-1E41-4AFC-91B8-3A7ED331A9E9}.Release|Any CPU.Build.0 = Release|Any CPU
{AB473106-1E41-4AFC-91B8-3A7ED331A9E9}.Release|ARM.ActiveCfg = Release|Any CPU
{AB473106-1E41-4AFC-91B8-3A7ED331A9E9}.Release|ARM.Build.0 = Release|Any CPU
{AB473106-1E41-4AFC-91B8-3A7ED331A9E9}.Release|ARM64.ActiveCfg = Release|Any CPU
{AB473106-1E41-4AFC-91B8-3A7ED331A9E9}.Release|ARM64.Build.0 = Release|Any CPU
{AB473106-1E41-4AFC-91B8-3A7ED331A9E9}.Release|iPhone.ActiveCfg = Release|Any CPU
{AB473106-1E41-4AFC-91B8-3A7ED331A9E9}.Release|iPhone.Build.0 = Release|Any CPU
{AB473106-1E41-4AFC-91B8-3A7ED331A9E9}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{AB473106-1E41-4AFC-91B8-3A7ED331A9E9}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{AB473106-1E41-4AFC-91B8-3A7ED331A9E9}.Release|x64.ActiveCfg = Release|Any CPU
{AB473106-1E41-4AFC-91B8-3A7ED331A9E9}.Release|x64.Build.0 = Release|Any CPU
{AB473106-1E41-4AFC-91B8-3A7ED331A9E9}.Release|x86.ActiveCfg = Release|Any CPU
{AB473106-1E41-4AFC-91B8-3A7ED331A9E9}.Release|x86.Build.0 = Release|Any CPU
{1CB40DC8-8FBC-4278-A19A-D872CFA353C0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1CB40DC8-8FBC-4278-A19A-D872CFA353C0}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1CB40DC8-8FBC-4278-A19A-D872CFA353C0}.Debug|ARM.ActiveCfg = Debug|Any CPU
@@ -1300,48 +1194,6 @@ Global
{1CB40DC8-8FBC-4278-A19A-D872CFA353C0}.Release|x64.Build.0 = Release|Any CPU
{1CB40DC8-8FBC-4278-A19A-D872CFA353C0}.Release|x86.ActiveCfg = Release|Any CPU
{1CB40DC8-8FBC-4278-A19A-D872CFA353C0}.Release|x86.Build.0 = Release|Any CPU
{1F659618-71E2-4AAF-9D86-62700FD4CF02}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1F659618-71E2-4AAF-9D86-62700FD4CF02}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1F659618-71E2-4AAF-9D86-62700FD4CF02}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
{1F659618-71E2-4AAF-9D86-62700FD4CF02}.Debug|ARM.ActiveCfg = Debug|ARM
{1F659618-71E2-4AAF-9D86-62700FD4CF02}.Debug|ARM.Build.0 = Debug|ARM
{1F659618-71E2-4AAF-9D86-62700FD4CF02}.Debug|ARM.Deploy.0 = Debug|ARM
{1F659618-71E2-4AAF-9D86-62700FD4CF02}.Debug|ARM64.ActiveCfg = Debug|ARM64
{1F659618-71E2-4AAF-9D86-62700FD4CF02}.Debug|ARM64.Build.0 = Debug|ARM64
{1F659618-71E2-4AAF-9D86-62700FD4CF02}.Debug|ARM64.Deploy.0 = Debug|ARM64
{1F659618-71E2-4AAF-9D86-62700FD4CF02}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{1F659618-71E2-4AAF-9D86-62700FD4CF02}.Debug|iPhone.Build.0 = Debug|Any CPU
{1F659618-71E2-4AAF-9D86-62700FD4CF02}.Debug|iPhone.Deploy.0 = Debug|Any CPU
{1F659618-71E2-4AAF-9D86-62700FD4CF02}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{1F659618-71E2-4AAF-9D86-62700FD4CF02}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{1F659618-71E2-4AAF-9D86-62700FD4CF02}.Debug|iPhoneSimulator.Deploy.0 = Debug|Any CPU
{1F659618-71E2-4AAF-9D86-62700FD4CF02}.Debug|x64.ActiveCfg = Debug|x64
{1F659618-71E2-4AAF-9D86-62700FD4CF02}.Debug|x64.Build.0 = Debug|x64
{1F659618-71E2-4AAF-9D86-62700FD4CF02}.Debug|x64.Deploy.0 = Debug|x64
{1F659618-71E2-4AAF-9D86-62700FD4CF02}.Debug|x86.ActiveCfg = Debug|x86
{1F659618-71E2-4AAF-9D86-62700FD4CF02}.Debug|x86.Build.0 = Debug|x86
{1F659618-71E2-4AAF-9D86-62700FD4CF02}.Debug|x86.Deploy.0 = Debug|x86
{1F659618-71E2-4AAF-9D86-62700FD4CF02}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1F659618-71E2-4AAF-9D86-62700FD4CF02}.Release|Any CPU.Build.0 = Release|Any CPU
{1F659618-71E2-4AAF-9D86-62700FD4CF02}.Release|Any CPU.Deploy.0 = Release|Any CPU
{1F659618-71E2-4AAF-9D86-62700FD4CF02}.Release|ARM.ActiveCfg = Release|ARM
{1F659618-71E2-4AAF-9D86-62700FD4CF02}.Release|ARM.Build.0 = Release|ARM
{1F659618-71E2-4AAF-9D86-62700FD4CF02}.Release|ARM.Deploy.0 = Release|ARM
{1F659618-71E2-4AAF-9D86-62700FD4CF02}.Release|ARM64.ActiveCfg = Release|ARM64
{1F659618-71E2-4AAF-9D86-62700FD4CF02}.Release|ARM64.Build.0 = Release|ARM64
{1F659618-71E2-4AAF-9D86-62700FD4CF02}.Release|ARM64.Deploy.0 = Release|ARM64
{1F659618-71E2-4AAF-9D86-62700FD4CF02}.Release|iPhone.ActiveCfg = Release|Any CPU
{1F659618-71E2-4AAF-9D86-62700FD4CF02}.Release|iPhone.Build.0 = Release|Any CPU
{1F659618-71E2-4AAF-9D86-62700FD4CF02}.Release|iPhone.Deploy.0 = Release|Any CPU
{1F659618-71E2-4AAF-9D86-62700FD4CF02}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{1F659618-71E2-4AAF-9D86-62700FD4CF02}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{1F659618-71E2-4AAF-9D86-62700FD4CF02}.Release|iPhoneSimulator.Deploy.0 = Release|Any CPU
{1F659618-71E2-4AAF-9D86-62700FD4CF02}.Release|x64.ActiveCfg = Release|x64
{1F659618-71E2-4AAF-9D86-62700FD4CF02}.Release|x64.Build.0 = Release|x64
{1F659618-71E2-4AAF-9D86-62700FD4CF02}.Release|x64.Deploy.0 = Release|x64
{1F659618-71E2-4AAF-9D86-62700FD4CF02}.Release|x86.ActiveCfg = Release|x86
{1F659618-71E2-4AAF-9D86-62700FD4CF02}.Release|x86.Build.0 = Release|x86
{1F659618-71E2-4AAF-9D86-62700FD4CF02}.Release|x86.Deploy.0 = Release|x86
{7EC4BAB6-B7C0-4E87-9FB6-091ABFF10D88}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7EC4BAB6-B7C0-4E87-9FB6-091ABFF10D88}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7EC4BAB6-B7C0-4E87-9FB6-091ABFF10D88}.Debug|ARM.ActiveCfg = Debug|Any CPU
@@ -1370,34 +1222,6 @@ Global
{7EC4BAB6-B7C0-4E87-9FB6-091ABFF10D88}.Release|x64.Build.0 = Release|Any CPU
{7EC4BAB6-B7C0-4E87-9FB6-091ABFF10D88}.Release|x86.ActiveCfg = Release|Any CPU
{7EC4BAB6-B7C0-4E87-9FB6-091ABFF10D88}.Release|x86.Build.0 = Release|Any CPU
{912759CD-FEE9-405C-A668-55CEDB64B156}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{912759CD-FEE9-405C-A668-55CEDB64B156}.Debug|Any CPU.Build.0 = Debug|Any CPU
{912759CD-FEE9-405C-A668-55CEDB64B156}.Debug|ARM.ActiveCfg = Debug|Any CPU
{912759CD-FEE9-405C-A668-55CEDB64B156}.Debug|ARM.Build.0 = Debug|Any CPU
{912759CD-FEE9-405C-A668-55CEDB64B156}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{912759CD-FEE9-405C-A668-55CEDB64B156}.Debug|ARM64.Build.0 = Debug|Any CPU
{912759CD-FEE9-405C-A668-55CEDB64B156}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{912759CD-FEE9-405C-A668-55CEDB64B156}.Debug|iPhone.Build.0 = Debug|Any CPU
{912759CD-FEE9-405C-A668-55CEDB64B156}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{912759CD-FEE9-405C-A668-55CEDB64B156}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{912759CD-FEE9-405C-A668-55CEDB64B156}.Debug|x64.ActiveCfg = Debug|Any CPU
{912759CD-FEE9-405C-A668-55CEDB64B156}.Debug|x64.Build.0 = Debug|Any CPU
{912759CD-FEE9-405C-A668-55CEDB64B156}.Debug|x86.ActiveCfg = Debug|Any CPU
{912759CD-FEE9-405C-A668-55CEDB64B156}.Debug|x86.Build.0 = Debug|Any CPU
{912759CD-FEE9-405C-A668-55CEDB64B156}.Release|Any CPU.ActiveCfg = Release|Any CPU
{912759CD-FEE9-405C-A668-55CEDB64B156}.Release|Any CPU.Build.0 = Release|Any CPU
{912759CD-FEE9-405C-A668-55CEDB64B156}.Release|ARM.ActiveCfg = Release|Any CPU
{912759CD-FEE9-405C-A668-55CEDB64B156}.Release|ARM.Build.0 = Release|Any CPU
{912759CD-FEE9-405C-A668-55CEDB64B156}.Release|ARM64.ActiveCfg = Release|Any CPU
{912759CD-FEE9-405C-A668-55CEDB64B156}.Release|ARM64.Build.0 = Release|Any CPU
{912759CD-FEE9-405C-A668-55CEDB64B156}.Release|iPhone.ActiveCfg = Release|Any CPU
{912759CD-FEE9-405C-A668-55CEDB64B156}.Release|iPhone.Build.0 = Release|Any CPU
{912759CD-FEE9-405C-A668-55CEDB64B156}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{912759CD-FEE9-405C-A668-55CEDB64B156}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{912759CD-FEE9-405C-A668-55CEDB64B156}.Release|x64.ActiveCfg = Release|Any CPU
{912759CD-FEE9-405C-A668-55CEDB64B156}.Release|x64.Build.0 = Release|Any CPU
{912759CD-FEE9-405C-A668-55CEDB64B156}.Release|x86.ActiveCfg = Release|Any CPU
{912759CD-FEE9-405C-A668-55CEDB64B156}.Release|x86.Build.0 = Release|Any CPU
{B355E372-27D2-4217-A129-D3355573681F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B355E372-27D2-4217-A129-D3355573681F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B355E372-27D2-4217-A129-D3355573681F}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
@@ -1458,34 +1282,272 @@ Global
{AFC828ED-21EE-4FD4-A40D-FEFED5EED4EA}.Release|iPhoneSimulator.Build.0 = Release|iPhoneSimulator
{AFC828ED-21EE-4FD4-A40D-FEFED5EED4EA}.Release|x64.ActiveCfg = Release|iPhoneSimulator
{AFC828ED-21EE-4FD4-A40D-FEFED5EED4EA}.Release|x86.ActiveCfg = Release|iPhoneSimulator
{AC8E40AE-CED2-415A-BC47-A68F3F14CB09}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{AC8E40AE-CED2-415A-BC47-A68F3F14CB09}.Debug|Any CPU.Build.0 = Debug|Any CPU
{AC8E40AE-CED2-415A-BC47-A68F3F14CB09}.Debug|ARM.ActiveCfg = Debug|Any CPU
{AC8E40AE-CED2-415A-BC47-A68F3F14CB09}.Debug|ARM.Build.0 = Debug|Any CPU
{AC8E40AE-CED2-415A-BC47-A68F3F14CB09}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{AC8E40AE-CED2-415A-BC47-A68F3F14CB09}.Debug|ARM64.Build.0 = Debug|Any CPU
{AC8E40AE-CED2-415A-BC47-A68F3F14CB09}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{AC8E40AE-CED2-415A-BC47-A68F3F14CB09}.Debug|iPhone.Build.0 = Debug|Any CPU
{AC8E40AE-CED2-415A-BC47-A68F3F14CB09}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{AC8E40AE-CED2-415A-BC47-A68F3F14CB09}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{AC8E40AE-CED2-415A-BC47-A68F3F14CB09}.Debug|x64.ActiveCfg = Debug|Any CPU
{AC8E40AE-CED2-415A-BC47-A68F3F14CB09}.Debug|x64.Build.0 = Debug|Any CPU
{AC8E40AE-CED2-415A-BC47-A68F3F14CB09}.Debug|x86.ActiveCfg = Debug|Any CPU
{AC8E40AE-CED2-415A-BC47-A68F3F14CB09}.Debug|x86.Build.0 = Debug|Any CPU
{AC8E40AE-CED2-415A-BC47-A68F3F14CB09}.Release|Any CPU.ActiveCfg = Release|Any CPU
{AC8E40AE-CED2-415A-BC47-A68F3F14CB09}.Release|Any CPU.Build.0 = Release|Any CPU
{AC8E40AE-CED2-415A-BC47-A68F3F14CB09}.Release|ARM.ActiveCfg = Release|Any CPU
{AC8E40AE-CED2-415A-BC47-A68F3F14CB09}.Release|ARM.Build.0 = Release|Any CPU
{AC8E40AE-CED2-415A-BC47-A68F3F14CB09}.Release|ARM64.ActiveCfg = Release|Any CPU
{AC8E40AE-CED2-415A-BC47-A68F3F14CB09}.Release|ARM64.Build.0 = Release|Any CPU
{AC8E40AE-CED2-415A-BC47-A68F3F14CB09}.Release|iPhone.ActiveCfg = Release|Any CPU
{AC8E40AE-CED2-415A-BC47-A68F3F14CB09}.Release|iPhone.Build.0 = Release|Any CPU
{AC8E40AE-CED2-415A-BC47-A68F3F14CB09}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{AC8E40AE-CED2-415A-BC47-A68F3F14CB09}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{AC8E40AE-CED2-415A-BC47-A68F3F14CB09}.Release|x64.ActiveCfg = Release|Any CPU
{AC8E40AE-CED2-415A-BC47-A68F3F14CB09}.Release|x64.Build.0 = Release|Any CPU
{AC8E40AE-CED2-415A-BC47-A68F3F14CB09}.Release|x86.ActiveCfg = Release|Any CPU
{AC8E40AE-CED2-415A-BC47-A68F3F14CB09}.Release|x86.Build.0 = Release|Any CPU
{9A8D2254-9B2B-4B92-8498-43A73BB9A410}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{9A8D2254-9B2B-4B92-8498-43A73BB9A410}.Debug|Any CPU.Build.0 = Debug|Any CPU
{9A8D2254-9B2B-4B92-8498-43A73BB9A410}.Debug|ARM.ActiveCfg = Debug|Any CPU
{9A8D2254-9B2B-4B92-8498-43A73BB9A410}.Debug|ARM.Build.0 = Debug|Any CPU
{9A8D2254-9B2B-4B92-8498-43A73BB9A410}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{9A8D2254-9B2B-4B92-8498-43A73BB9A410}.Debug|ARM64.Build.0 = Debug|Any CPU
{9A8D2254-9B2B-4B92-8498-43A73BB9A410}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{9A8D2254-9B2B-4B92-8498-43A73BB9A410}.Debug|iPhone.Build.0 = Debug|Any CPU
{9A8D2254-9B2B-4B92-8498-43A73BB9A410}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{9A8D2254-9B2B-4B92-8498-43A73BB9A410}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{9A8D2254-9B2B-4B92-8498-43A73BB9A410}.Debug|x64.ActiveCfg = Debug|Any CPU
{9A8D2254-9B2B-4B92-8498-43A73BB9A410}.Debug|x64.Build.0 = Debug|Any CPU
{9A8D2254-9B2B-4B92-8498-43A73BB9A410}.Debug|x86.ActiveCfg = Debug|Any CPU
{9A8D2254-9B2B-4B92-8498-43A73BB9A410}.Debug|x86.Build.0 = Debug|Any CPU
{9A8D2254-9B2B-4B92-8498-43A73BB9A410}.Release|Any CPU.ActiveCfg = Release|Any CPU
{9A8D2254-9B2B-4B92-8498-43A73BB9A410}.Release|Any CPU.Build.0 = Release|Any CPU
{9A8D2254-9B2B-4B92-8498-43A73BB9A410}.Release|ARM.ActiveCfg = Release|Any CPU
{9A8D2254-9B2B-4B92-8498-43A73BB9A410}.Release|ARM.Build.0 = Release|Any CPU
{9A8D2254-9B2B-4B92-8498-43A73BB9A410}.Release|ARM64.ActiveCfg = Release|Any CPU
{9A8D2254-9B2B-4B92-8498-43A73BB9A410}.Release|ARM64.Build.0 = Release|Any CPU
{9A8D2254-9B2B-4B92-8498-43A73BB9A410}.Release|iPhone.ActiveCfg = Release|Any CPU
{9A8D2254-9B2B-4B92-8498-43A73BB9A410}.Release|iPhone.Build.0 = Release|Any CPU
{9A8D2254-9B2B-4B92-8498-43A73BB9A410}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{9A8D2254-9B2B-4B92-8498-43A73BB9A410}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{9A8D2254-9B2B-4B92-8498-43A73BB9A410}.Release|x64.ActiveCfg = Release|Any CPU
{9A8D2254-9B2B-4B92-8498-43A73BB9A410}.Release|x64.Build.0 = Release|Any CPU
{9A8D2254-9B2B-4B92-8498-43A73BB9A410}.Release|x86.ActiveCfg = Release|Any CPU
{9A8D2254-9B2B-4B92-8498-43A73BB9A410}.Release|x86.Build.0 = Release|Any CPU
{F4D8CD7B-6DF4-445C-AFA9-44466A552922}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F4D8CD7B-6DF4-445C-AFA9-44466A552922}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F4D8CD7B-6DF4-445C-AFA9-44466A552922}.Debug|ARM.ActiveCfg = Debug|Any CPU
{F4D8CD7B-6DF4-445C-AFA9-44466A552922}.Debug|ARM.Build.0 = Debug|Any CPU
{F4D8CD7B-6DF4-445C-AFA9-44466A552922}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{F4D8CD7B-6DF4-445C-AFA9-44466A552922}.Debug|ARM64.Build.0 = Debug|Any CPU
{F4D8CD7B-6DF4-445C-AFA9-44466A552922}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{F4D8CD7B-6DF4-445C-AFA9-44466A552922}.Debug|iPhone.Build.0 = Debug|Any CPU
{F4D8CD7B-6DF4-445C-AFA9-44466A552922}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{F4D8CD7B-6DF4-445C-AFA9-44466A552922}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{F4D8CD7B-6DF4-445C-AFA9-44466A552922}.Debug|x64.ActiveCfg = Debug|Any CPU
{F4D8CD7B-6DF4-445C-AFA9-44466A552922}.Debug|x64.Build.0 = Debug|Any CPU
{F4D8CD7B-6DF4-445C-AFA9-44466A552922}.Debug|x86.ActiveCfg = Debug|Any CPU
{F4D8CD7B-6DF4-445C-AFA9-44466A552922}.Debug|x86.Build.0 = Debug|Any CPU
{F4D8CD7B-6DF4-445C-AFA9-44466A552922}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F4D8CD7B-6DF4-445C-AFA9-44466A552922}.Release|Any CPU.Build.0 = Release|Any CPU
{F4D8CD7B-6DF4-445C-AFA9-44466A552922}.Release|ARM.ActiveCfg = Release|Any CPU
{F4D8CD7B-6DF4-445C-AFA9-44466A552922}.Release|ARM.Build.0 = Release|Any CPU
{F4D8CD7B-6DF4-445C-AFA9-44466A552922}.Release|ARM64.ActiveCfg = Release|Any CPU
{F4D8CD7B-6DF4-445C-AFA9-44466A552922}.Release|ARM64.Build.0 = Release|Any CPU
{F4D8CD7B-6DF4-445C-AFA9-44466A552922}.Release|iPhone.ActiveCfg = Release|Any CPU
{F4D8CD7B-6DF4-445C-AFA9-44466A552922}.Release|iPhone.Build.0 = Release|Any CPU
{F4D8CD7B-6DF4-445C-AFA9-44466A552922}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{F4D8CD7B-6DF4-445C-AFA9-44466A552922}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{F4D8CD7B-6DF4-445C-AFA9-44466A552922}.Release|x64.ActiveCfg = Release|Any CPU
{F4D8CD7B-6DF4-445C-AFA9-44466A552922}.Release|x64.Build.0 = Release|Any CPU
{F4D8CD7B-6DF4-445C-AFA9-44466A552922}.Release|x86.ActiveCfg = Release|Any CPU
{F4D8CD7B-6DF4-445C-AFA9-44466A552922}.Release|x86.Build.0 = Release|Any CPU
{1F659618-71E2-4AAF-9D86-62700FD4CF02}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1F659618-71E2-4AAF-9D86-62700FD4CF02}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1F659618-71E2-4AAF-9D86-62700FD4CF02}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
{1F659618-71E2-4AAF-9D86-62700FD4CF02}.Debug|ARM.ActiveCfg = Debug|ARM
{1F659618-71E2-4AAF-9D86-62700FD4CF02}.Debug|ARM.Build.0 = Debug|ARM
{1F659618-71E2-4AAF-9D86-62700FD4CF02}.Debug|ARM.Deploy.0 = Debug|ARM
{1F659618-71E2-4AAF-9D86-62700FD4CF02}.Debug|ARM64.ActiveCfg = Debug|ARM64
{1F659618-71E2-4AAF-9D86-62700FD4CF02}.Debug|ARM64.Build.0 = Debug|ARM64
{1F659618-71E2-4AAF-9D86-62700FD4CF02}.Debug|ARM64.Deploy.0 = Debug|ARM64
{1F659618-71E2-4AAF-9D86-62700FD4CF02}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{1F659618-71E2-4AAF-9D86-62700FD4CF02}.Debug|iPhone.Build.0 = Debug|Any CPU
{1F659618-71E2-4AAF-9D86-62700FD4CF02}.Debug|iPhone.Deploy.0 = Debug|Any CPU
{1F659618-71E2-4AAF-9D86-62700FD4CF02}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{1F659618-71E2-4AAF-9D86-62700FD4CF02}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{1F659618-71E2-4AAF-9D86-62700FD4CF02}.Debug|iPhoneSimulator.Deploy.0 = Debug|Any CPU
{1F659618-71E2-4AAF-9D86-62700FD4CF02}.Debug|x64.ActiveCfg = Debug|x64
{1F659618-71E2-4AAF-9D86-62700FD4CF02}.Debug|x64.Build.0 = Debug|x64
{1F659618-71E2-4AAF-9D86-62700FD4CF02}.Debug|x64.Deploy.0 = Debug|x64
{1F659618-71E2-4AAF-9D86-62700FD4CF02}.Debug|x86.ActiveCfg = Debug|x86
{1F659618-71E2-4AAF-9D86-62700FD4CF02}.Debug|x86.Build.0 = Debug|x86
{1F659618-71E2-4AAF-9D86-62700FD4CF02}.Debug|x86.Deploy.0 = Debug|x86
{1F659618-71E2-4AAF-9D86-62700FD4CF02}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1F659618-71E2-4AAF-9D86-62700FD4CF02}.Release|Any CPU.Build.0 = Release|Any CPU
{1F659618-71E2-4AAF-9D86-62700FD4CF02}.Release|Any CPU.Deploy.0 = Release|Any CPU
{1F659618-71E2-4AAF-9D86-62700FD4CF02}.Release|ARM.ActiveCfg = Release|ARM
{1F659618-71E2-4AAF-9D86-62700FD4CF02}.Release|ARM.Build.0 = Release|ARM
{1F659618-71E2-4AAF-9D86-62700FD4CF02}.Release|ARM.Deploy.0 = Release|ARM
{1F659618-71E2-4AAF-9D86-62700FD4CF02}.Release|ARM64.ActiveCfg = Release|ARM64
{1F659618-71E2-4AAF-9D86-62700FD4CF02}.Release|ARM64.Build.0 = Release|ARM64
{1F659618-71E2-4AAF-9D86-62700FD4CF02}.Release|ARM64.Deploy.0 = Release|ARM64
{1F659618-71E2-4AAF-9D86-62700FD4CF02}.Release|iPhone.ActiveCfg = Release|Any CPU
{1F659618-71E2-4AAF-9D86-62700FD4CF02}.Release|iPhone.Build.0 = Release|Any CPU
{1F659618-71E2-4AAF-9D86-62700FD4CF02}.Release|iPhone.Deploy.0 = Release|Any CPU
{1F659618-71E2-4AAF-9D86-62700FD4CF02}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{1F659618-71E2-4AAF-9D86-62700FD4CF02}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{1F659618-71E2-4AAF-9D86-62700FD4CF02}.Release|iPhoneSimulator.Deploy.0 = Release|Any CPU
{1F659618-71E2-4AAF-9D86-62700FD4CF02}.Release|x64.ActiveCfg = Release|x64
{1F659618-71E2-4AAF-9D86-62700FD4CF02}.Release|x64.Build.0 = Release|x64
{1F659618-71E2-4AAF-9D86-62700FD4CF02}.Release|x64.Deploy.0 = Release|x64
{1F659618-71E2-4AAF-9D86-62700FD4CF02}.Release|x86.ActiveCfg = Release|x86
{1F659618-71E2-4AAF-9D86-62700FD4CF02}.Release|x86.Build.0 = Release|x86
{1F659618-71E2-4AAF-9D86-62700FD4CF02}.Release|x86.Deploy.0 = Release|x86
{B1F221F6-E19B-45D8-959D-A9CDA471C2D4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B1F221F6-E19B-45D8-959D-A9CDA471C2D4}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B1F221F6-E19B-45D8-959D-A9CDA471C2D4}.Debug|ARM.ActiveCfg = Debug|Any CPU
{B1F221F6-E19B-45D8-959D-A9CDA471C2D4}.Debug|ARM.Build.0 = Debug|Any CPU
{B1F221F6-E19B-45D8-959D-A9CDA471C2D4}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{B1F221F6-E19B-45D8-959D-A9CDA471C2D4}.Debug|ARM64.Build.0 = Debug|Any CPU
{B1F221F6-E19B-45D8-959D-A9CDA471C2D4}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{B1F221F6-E19B-45D8-959D-A9CDA471C2D4}.Debug|iPhone.Build.0 = Debug|Any CPU
{B1F221F6-E19B-45D8-959D-A9CDA471C2D4}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{B1F221F6-E19B-45D8-959D-A9CDA471C2D4}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{B1F221F6-E19B-45D8-959D-A9CDA471C2D4}.Debug|x64.ActiveCfg = Debug|Any CPU
{B1F221F6-E19B-45D8-959D-A9CDA471C2D4}.Debug|x64.Build.0 = Debug|Any CPU
{B1F221F6-E19B-45D8-959D-A9CDA471C2D4}.Debug|x86.ActiveCfg = Debug|Any CPU
{B1F221F6-E19B-45D8-959D-A9CDA471C2D4}.Debug|x86.Build.0 = Debug|Any CPU
{B1F221F6-E19B-45D8-959D-A9CDA471C2D4}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B1F221F6-E19B-45D8-959D-A9CDA471C2D4}.Release|Any CPU.Build.0 = Release|Any CPU
{B1F221F6-E19B-45D8-959D-A9CDA471C2D4}.Release|ARM.ActiveCfg = Release|Any CPU
{B1F221F6-E19B-45D8-959D-A9CDA471C2D4}.Release|ARM.Build.0 = Release|Any CPU
{B1F221F6-E19B-45D8-959D-A9CDA471C2D4}.Release|ARM64.ActiveCfg = Release|Any CPU
{B1F221F6-E19B-45D8-959D-A9CDA471C2D4}.Release|ARM64.Build.0 = Release|Any CPU
{B1F221F6-E19B-45D8-959D-A9CDA471C2D4}.Release|iPhone.ActiveCfg = Release|Any CPU
{B1F221F6-E19B-45D8-959D-A9CDA471C2D4}.Release|iPhone.Build.0 = Release|Any CPU
{B1F221F6-E19B-45D8-959D-A9CDA471C2D4}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{B1F221F6-E19B-45D8-959D-A9CDA471C2D4}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{B1F221F6-E19B-45D8-959D-A9CDA471C2D4}.Release|x64.ActiveCfg = Release|Any CPU
{B1F221F6-E19B-45D8-959D-A9CDA471C2D4}.Release|x64.Build.0 = Release|Any CPU
{B1F221F6-E19B-45D8-959D-A9CDA471C2D4}.Release|x86.ActiveCfg = Release|Any CPU
{B1F221F6-E19B-45D8-959D-A9CDA471C2D4}.Release|x86.Build.0 = Release|Any CPU
{F75D6FF7-955D-4355-8895-D9333ED9B39F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F75D6FF7-955D-4355-8895-D9333ED9B39F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F75D6FF7-955D-4355-8895-D9333ED9B39F}.Debug|ARM.ActiveCfg = Debug|Any CPU
{F75D6FF7-955D-4355-8895-D9333ED9B39F}.Debug|ARM.Build.0 = Debug|Any CPU
{F75D6FF7-955D-4355-8895-D9333ED9B39F}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{F75D6FF7-955D-4355-8895-D9333ED9B39F}.Debug|ARM64.Build.0 = Debug|Any CPU
{F75D6FF7-955D-4355-8895-D9333ED9B39F}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{F75D6FF7-955D-4355-8895-D9333ED9B39F}.Debug|iPhone.Build.0 = Debug|Any CPU
{F75D6FF7-955D-4355-8895-D9333ED9B39F}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{F75D6FF7-955D-4355-8895-D9333ED9B39F}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{F75D6FF7-955D-4355-8895-D9333ED9B39F}.Debug|x64.ActiveCfg = Debug|Any CPU
{F75D6FF7-955D-4355-8895-D9333ED9B39F}.Debug|x64.Build.0 = Debug|Any CPU
{F75D6FF7-955D-4355-8895-D9333ED9B39F}.Debug|x86.ActiveCfg = Debug|Any CPU
{F75D6FF7-955D-4355-8895-D9333ED9B39F}.Debug|x86.Build.0 = Debug|Any CPU
{F75D6FF7-955D-4355-8895-D9333ED9B39F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F75D6FF7-955D-4355-8895-D9333ED9B39F}.Release|Any CPU.Build.0 = Release|Any CPU
{F75D6FF7-955D-4355-8895-D9333ED9B39F}.Release|ARM.ActiveCfg = Release|Any CPU
{F75D6FF7-955D-4355-8895-D9333ED9B39F}.Release|ARM.Build.0 = Release|Any CPU
{F75D6FF7-955D-4355-8895-D9333ED9B39F}.Release|ARM64.ActiveCfg = Release|Any CPU
{F75D6FF7-955D-4355-8895-D9333ED9B39F}.Release|ARM64.Build.0 = Release|Any CPU
{F75D6FF7-955D-4355-8895-D9333ED9B39F}.Release|iPhone.ActiveCfg = Release|Any CPU
{F75D6FF7-955D-4355-8895-D9333ED9B39F}.Release|iPhone.Build.0 = Release|Any CPU
{F75D6FF7-955D-4355-8895-D9333ED9B39F}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{F75D6FF7-955D-4355-8895-D9333ED9B39F}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{F75D6FF7-955D-4355-8895-D9333ED9B39F}.Release|x64.ActiveCfg = Release|Any CPU
{F75D6FF7-955D-4355-8895-D9333ED9B39F}.Release|x64.Build.0 = Release|Any CPU
{F75D6FF7-955D-4355-8895-D9333ED9B39F}.Release|x86.ActiveCfg = Release|Any CPU
{F75D6FF7-955D-4355-8895-D9333ED9B39F}.Release|x86.Build.0 = Release|Any CPU
{2A66B796-7BC2-4BE0-A920-1A457BBCCC67}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{2A66B796-7BC2-4BE0-A920-1A457BBCCC67}.Debug|Any CPU.Build.0 = Debug|Any CPU
{2A66B796-7BC2-4BE0-A920-1A457BBCCC67}.Debug|ARM.ActiveCfg = Debug|Any CPU
{2A66B796-7BC2-4BE0-A920-1A457BBCCC67}.Debug|ARM.Build.0 = Debug|Any CPU
{2A66B796-7BC2-4BE0-A920-1A457BBCCC67}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{2A66B796-7BC2-4BE0-A920-1A457BBCCC67}.Debug|ARM64.Build.0 = Debug|Any CPU
{2A66B796-7BC2-4BE0-A920-1A457BBCCC67}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{2A66B796-7BC2-4BE0-A920-1A457BBCCC67}.Debug|iPhone.Build.0 = Debug|Any CPU
{2A66B796-7BC2-4BE0-A920-1A457BBCCC67}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{2A66B796-7BC2-4BE0-A920-1A457BBCCC67}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{2A66B796-7BC2-4BE0-A920-1A457BBCCC67}.Debug|x64.ActiveCfg = Debug|Any CPU
{2A66B796-7BC2-4BE0-A920-1A457BBCCC67}.Debug|x64.Build.0 = Debug|Any CPU
{2A66B796-7BC2-4BE0-A920-1A457BBCCC67}.Debug|x86.ActiveCfg = Debug|Any CPU
{2A66B796-7BC2-4BE0-A920-1A457BBCCC67}.Debug|x86.Build.0 = Debug|Any CPU
{2A66B796-7BC2-4BE0-A920-1A457BBCCC67}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2A66B796-7BC2-4BE0-A920-1A457BBCCC67}.Release|Any CPU.Build.0 = Release|Any CPU
{2A66B796-7BC2-4BE0-A920-1A457BBCCC67}.Release|ARM.ActiveCfg = Release|Any CPU
{2A66B796-7BC2-4BE0-A920-1A457BBCCC67}.Release|ARM.Build.0 = Release|Any CPU
{2A66B796-7BC2-4BE0-A920-1A457BBCCC67}.Release|ARM64.ActiveCfg = Release|Any CPU
{2A66B796-7BC2-4BE0-A920-1A457BBCCC67}.Release|ARM64.Build.0 = Release|Any CPU
{2A66B796-7BC2-4BE0-A920-1A457BBCCC67}.Release|iPhone.ActiveCfg = Release|Any CPU
{2A66B796-7BC2-4BE0-A920-1A457BBCCC67}.Release|iPhone.Build.0 = Release|Any CPU
{2A66B796-7BC2-4BE0-A920-1A457BBCCC67}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{2A66B796-7BC2-4BE0-A920-1A457BBCCC67}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{2A66B796-7BC2-4BE0-A920-1A457BBCCC67}.Release|x64.ActiveCfg = Release|Any CPU
{2A66B796-7BC2-4BE0-A920-1A457BBCCC67}.Release|x64.Build.0 = Release|Any CPU
{2A66B796-7BC2-4BE0-A920-1A457BBCCC67}.Release|x86.ActiveCfg = Release|Any CPU
{2A66B796-7BC2-4BE0-A920-1A457BBCCC67}.Release|x86.Build.0 = Release|Any CPU
{137690DF-A3CB-4817-ACB8-9EAF3A52B5B5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{137690DF-A3CB-4817-ACB8-9EAF3A52B5B5}.Debug|Any CPU.Build.0 = Debug|Any CPU
{137690DF-A3CB-4817-ACB8-9EAF3A52B5B5}.Debug|ARM.ActiveCfg = Debug|Any CPU
{137690DF-A3CB-4817-ACB8-9EAF3A52B5B5}.Debug|ARM.Build.0 = Debug|Any CPU
{137690DF-A3CB-4817-ACB8-9EAF3A52B5B5}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{137690DF-A3CB-4817-ACB8-9EAF3A52B5B5}.Debug|ARM64.Build.0 = Debug|Any CPU
{137690DF-A3CB-4817-ACB8-9EAF3A52B5B5}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{137690DF-A3CB-4817-ACB8-9EAF3A52B5B5}.Debug|iPhone.Build.0 = Debug|Any CPU
{137690DF-A3CB-4817-ACB8-9EAF3A52B5B5}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{137690DF-A3CB-4817-ACB8-9EAF3A52B5B5}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{137690DF-A3CB-4817-ACB8-9EAF3A52B5B5}.Debug|x64.ActiveCfg = Debug|Any CPU
{137690DF-A3CB-4817-ACB8-9EAF3A52B5B5}.Debug|x64.Build.0 = Debug|Any CPU
{137690DF-A3CB-4817-ACB8-9EAF3A52B5B5}.Debug|x86.ActiveCfg = Debug|Any CPU
{137690DF-A3CB-4817-ACB8-9EAF3A52B5B5}.Debug|x86.Build.0 = Debug|Any CPU
{137690DF-A3CB-4817-ACB8-9EAF3A52B5B5}.Release|Any CPU.ActiveCfg = Release|Any CPU
{137690DF-A3CB-4817-ACB8-9EAF3A52B5B5}.Release|Any CPU.Build.0 = Release|Any CPU
{137690DF-A3CB-4817-ACB8-9EAF3A52B5B5}.Release|ARM.ActiveCfg = Release|Any CPU
{137690DF-A3CB-4817-ACB8-9EAF3A52B5B5}.Release|ARM.Build.0 = Release|Any CPU
{137690DF-A3CB-4817-ACB8-9EAF3A52B5B5}.Release|ARM64.ActiveCfg = Release|Any CPU
{137690DF-A3CB-4817-ACB8-9EAF3A52B5B5}.Release|ARM64.Build.0 = Release|Any CPU
{137690DF-A3CB-4817-ACB8-9EAF3A52B5B5}.Release|iPhone.ActiveCfg = Release|Any CPU
{137690DF-A3CB-4817-ACB8-9EAF3A52B5B5}.Release|iPhone.Build.0 = Release|Any CPU
{137690DF-A3CB-4817-ACB8-9EAF3A52B5B5}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{137690DF-A3CB-4817-ACB8-9EAF3A52B5B5}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{137690DF-A3CB-4817-ACB8-9EAF3A52B5B5}.Release|x64.ActiveCfg = Release|Any CPU
{137690DF-A3CB-4817-ACB8-9EAF3A52B5B5}.Release|x64.Build.0 = Release|Any CPU
{137690DF-A3CB-4817-ACB8-9EAF3A52B5B5}.Release|x86.ActiveCfg = Release|Any CPU
{137690DF-A3CB-4817-ACB8-9EAF3A52B5B5}.Release|x86.Build.0 = Release|Any CPU
{9252AA73-9CF7-4B09-89CB-7FCB65A5DCFF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{9252AA73-9CF7-4B09-89CB-7FCB65A5DCFF}.Debug|Any CPU.Build.0 = Debug|Any CPU
{9252AA73-9CF7-4B09-89CB-7FCB65A5DCFF}.Debug|ARM.ActiveCfg = Debug|Any CPU
{9252AA73-9CF7-4B09-89CB-7FCB65A5DCFF}.Debug|ARM.Build.0 = Debug|Any CPU
{9252AA73-9CF7-4B09-89CB-7FCB65A5DCFF}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{9252AA73-9CF7-4B09-89CB-7FCB65A5DCFF}.Debug|ARM64.Build.0 = Debug|Any CPU
{9252AA73-9CF7-4B09-89CB-7FCB65A5DCFF}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{9252AA73-9CF7-4B09-89CB-7FCB65A5DCFF}.Debug|iPhone.Build.0 = Debug|Any CPU
{9252AA73-9CF7-4B09-89CB-7FCB65A5DCFF}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{9252AA73-9CF7-4B09-89CB-7FCB65A5DCFF}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{9252AA73-9CF7-4B09-89CB-7FCB65A5DCFF}.Debug|x64.ActiveCfg = Debug|Any CPU
{9252AA73-9CF7-4B09-89CB-7FCB65A5DCFF}.Debug|x64.Build.0 = Debug|Any CPU
{9252AA73-9CF7-4B09-89CB-7FCB65A5DCFF}.Debug|x86.ActiveCfg = Debug|Any CPU
{9252AA73-9CF7-4B09-89CB-7FCB65A5DCFF}.Debug|x86.Build.0 = Debug|Any CPU
{9252AA73-9CF7-4B09-89CB-7FCB65A5DCFF}.Release|Any CPU.ActiveCfg = Release|Any CPU
{9252AA73-9CF7-4B09-89CB-7FCB65A5DCFF}.Release|Any CPU.Build.0 = Release|Any CPU
{9252AA73-9CF7-4B09-89CB-7FCB65A5DCFF}.Release|ARM.ActiveCfg = Release|Any CPU
{9252AA73-9CF7-4B09-89CB-7FCB65A5DCFF}.Release|ARM.Build.0 = Release|Any CPU
{9252AA73-9CF7-4B09-89CB-7FCB65A5DCFF}.Release|ARM64.ActiveCfg = Release|Any CPU
{9252AA73-9CF7-4B09-89CB-7FCB65A5DCFF}.Release|ARM64.Build.0 = Release|Any CPU
{9252AA73-9CF7-4B09-89CB-7FCB65A5DCFF}.Release|iPhone.ActiveCfg = Release|Any CPU
{9252AA73-9CF7-4B09-89CB-7FCB65A5DCFF}.Release|iPhone.Build.0 = Release|Any CPU
{9252AA73-9CF7-4B09-89CB-7FCB65A5DCFF}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{9252AA73-9CF7-4B09-89CB-7FCB65A5DCFF}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{9252AA73-9CF7-4B09-89CB-7FCB65A5DCFF}.Release|x64.ActiveCfg = Release|Any CPU
{9252AA73-9CF7-4B09-89CB-7FCB65A5DCFF}.Release|x64.Build.0 = Release|Any CPU
{9252AA73-9CF7-4B09-89CB-7FCB65A5DCFF}.Release|x86.ActiveCfg = Release|Any CPU
{9252AA73-9CF7-4B09-89CB-7FCB65A5DCFF}.Release|x86.Build.0 = Release|Any CPU
{42154590-445B-41CF-AAEB-AACD1B65FA2C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{42154590-445B-41CF-AAEB-AACD1B65FA2C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{42154590-445B-41CF-AAEB-AACD1B65FA2C}.Debug|ARM.ActiveCfg = Debug|Any CPU
{42154590-445B-41CF-AAEB-AACD1B65FA2C}.Debug|ARM.Build.0 = Debug|Any CPU
{42154590-445B-41CF-AAEB-AACD1B65FA2C}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{42154590-445B-41CF-AAEB-AACD1B65FA2C}.Debug|ARM64.Build.0 = Debug|Any CPU
{42154590-445B-41CF-AAEB-AACD1B65FA2C}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{42154590-445B-41CF-AAEB-AACD1B65FA2C}.Debug|iPhone.Build.0 = Debug|Any CPU
{42154590-445B-41CF-AAEB-AACD1B65FA2C}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{42154590-445B-41CF-AAEB-AACD1B65FA2C}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{42154590-445B-41CF-AAEB-AACD1B65FA2C}.Debug|x64.ActiveCfg = Debug|Any CPU
{42154590-445B-41CF-AAEB-AACD1B65FA2C}.Debug|x64.Build.0 = Debug|Any CPU
{42154590-445B-41CF-AAEB-AACD1B65FA2C}.Debug|x86.ActiveCfg = Debug|Any CPU
{42154590-445B-41CF-AAEB-AACD1B65FA2C}.Debug|x86.Build.0 = Debug|Any CPU
{42154590-445B-41CF-AAEB-AACD1B65FA2C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{42154590-445B-41CF-AAEB-AACD1B65FA2C}.Release|Any CPU.Build.0 = Release|Any CPU
{42154590-445B-41CF-AAEB-AACD1B65FA2C}.Release|ARM.ActiveCfg = Release|Any CPU
{42154590-445B-41CF-AAEB-AACD1B65FA2C}.Release|ARM.Build.0 = Release|Any CPU
{42154590-445B-41CF-AAEB-AACD1B65FA2C}.Release|ARM64.ActiveCfg = Release|Any CPU
{42154590-445B-41CF-AAEB-AACD1B65FA2C}.Release|ARM64.Build.0 = Release|Any CPU
{42154590-445B-41CF-AAEB-AACD1B65FA2C}.Release|iPhone.ActiveCfg = Release|Any CPU
{42154590-445B-41CF-AAEB-AACD1B65FA2C}.Release|iPhone.Build.0 = Release|Any CPU
{42154590-445B-41CF-AAEB-AACD1B65FA2C}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{42154590-445B-41CF-AAEB-AACD1B65FA2C}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{42154590-445B-41CF-AAEB-AACD1B65FA2C}.Release|x64.ActiveCfg = Release|Any CPU
{42154590-445B-41CF-AAEB-AACD1B65FA2C}.Release|x64.Build.0 = Release|Any CPU
{42154590-445B-41CF-AAEB-AACD1B65FA2C}.Release|x86.ActiveCfg = Release|Any CPU
{42154590-445B-41CF-AAEB-AACD1B65FA2C}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -1499,7 +1561,6 @@ Global
{A203BA92-B3B6-411C-91E1-8F3FF7BF2163} = {83186945-EC14-4B3F-8C6F-B205AA184CA4}
{FEB554A3-1CAD-4E77-A300-CD8CA520EED6} = {673FF8CD-9E85-4FA1-ABFC-D1149675E138}
{86505E07-1D61-450C-96ED-263E80349DE0} = {673FF8CD-9E85-4FA1-ABFC-D1149675E138}
{AABC2464-E4C7-421E-8BA8-82F2DFA452FE} = {673FF8CD-9E85-4FA1-ABFC-D1149675E138}
{6AA8CA67-02A5-43C6-BECB-51BE246FA740} = {673FF8CD-9E85-4FA1-ABFC-D1149675E138}
{7A19537B-0D75-4131-A36C-0460B87637CC} = {673FF8CD-9E85-4FA1-ABFC-D1149675E138}
{8D034553-3218-4B56-8B3D-00B96FCFF29A} = {673FF8CD-9E85-4FA1-ABFC-D1149675E138}
@@ -1528,10 +1589,15 @@ Global
{2BF2DA87-7F0E-4384-AF80-275D495A1972} = {E448F863-4C9D-47A4-BC4A-4A1381B54DA4}
{A4E53C27-0195-47D3-9DC7-192061402BB8} = {E448F863-4C9D-47A4-BC4A-4A1381B54DA4}
{7A27EDB5-2E6A-4E01-AA55-62C8B3117226} = {E448F863-4C9D-47A4-BC4A-4A1381B54DA4}
{1A07EEE0-3533-4FD1-8D08-F89129820B1A} = {E448F863-4C9D-47A4-BC4A-4A1381B54DA4}
{D93B5190-AEFF-4C13-8387-D8EC760400DD} = {1B889C56-157A-4493-85F2-76366282B002}
{AB473106-1E41-4AFC-91B8-3A7ED331A9E9} = {1B889C56-157A-4493-85F2-76366282B002}
{AC8E40AE-CED2-415A-BC47-A68F3F14CB09} = {1B889C56-157A-4493-85F2-76366282B002}
{9A8D2254-9B2B-4B92-8498-43A73BB9A410} = {E448F863-4C9D-47A4-BC4A-4A1381B54DA4}
{F4D8CD7B-6DF4-445C-AFA9-44466A552922} = {673FF8CD-9E85-4FA1-ABFC-D1149675E138}
{1F659618-71E2-4AAF-9D86-62700FD4CF02} = {1B889C56-157A-4493-85F2-76366282B002}
{B1F221F6-E19B-45D8-959D-A9CDA471C2D4} = {673FF8CD-9E85-4FA1-ABFC-D1149675E138}
{F75D6FF7-955D-4355-8895-D9333ED9B39F} = {1B889C56-157A-4493-85F2-76366282B002}
{2A66B796-7BC2-4BE0-A920-1A457BBCCC67} = {1B889C56-157A-4493-85F2-76366282B002}
{137690DF-A3CB-4817-ACB8-9EAF3A52B5B5} = {E448F863-4C9D-47A4-BC4A-4A1381B54DA4}
{9252AA73-9CF7-4B09-89CB-7FCB65A5DCFF} = {327FDEE7-C4C8-4AA4-A7B0-8BCE3D75346F}
{42154590-445B-41CF-AAEB-AACD1B65FA2C} = {673FF8CD-9E85-4FA1-ABFC-D1149675E138}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {9313F2B4-10DA-43AA-A481-CAA7571C740C}
+2 -2
View File
@@ -1,8 +1,8 @@
{
"msbuild-sdks": {
"MSBuild.Sdk.Extras": "3.0.22"
"MSBuild.Sdk.Extras": "3.0.23"
},
"sdk": {
"version": "6.0.100-preview.4.21255.9"
"version": "6.0.100-preview.7.21379.14"
}
}
+28
View File
@@ -0,0 +1,28 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleName</key>
<string>Steam++</string>
<key>CFBundleIdentifier</key>
<string>net.steampp.app</string>
<key>CFBundleShortVersionString</key>
<string>2.4.10</string>
<key>CFBundleVersion</key>
<string>2.4.10.0</string>
<key>LSMinimumSystemVersion</key>
<string>10.14</string>
<key>CFBundleDevelopmentRegion</key>
<string>zh_CN</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>NSHumanReadableCopyright</key>
<string>© 长沙次元超越科技有限公司. All Rights Reserved.</string>
<key>NSPrincipalClass</key>
<string>NSApplication</string>
</dict>
</plist>
+93
View File
@@ -0,0 +1,93 @@
create_app_structure() {
APPNAME=$1
APPDIR="$APPNAME.app/Contents"
APPICONS="/Users/mossimo/bin/logo.icns"
if [ ! -d "$APPDIR" ]; then
echo "creating app structure $APPDIR"
mkdir -vp "$APPDIR"/{Resources,Frameworks}
cp -v "$APPICONS" "$APPDIR/Resources/$APPNAME.icns"
fi
}
emit_plist() {
PLIST_APPNAME=$1
PLIST_PATH="$2/Info.plist"
if [ "$3" ]; then
LSUIELEMENT="false"
else
LSUIELEMENT="true"
fi
if [ ! -f "$PLIST_PATH" ]; then
echo "emiting $PLIST_PATH"
cat <<EOF > "$PLIST_PATH"
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleName</key>
<string>$PLIST_APPNAME</string>
<key>CFBundleIdentifier</key>
<string>net.steampp.app</string>
<key>CFBundleShortVersionString</key>
<string>2.4.11</string>
<key>CFBundleVersion</key>
<string>2.4.11.0</string>
<key>LSMinimumSystemVersion</key>
<string>10.14</string>
<key>CFBundleDevelopmentRegion</key>
<string>zh_CN</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleExecutable</key>
<string>$PLIST_APPNAME</string>
<key>CFBundleGetInfoString</key>
<string>$PLIST_APPNAME</string>
<key>CFBundleIconFile</key>
<string>$PLIST_APPNAME</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>LSUIElement</key>
<string>$LSUIELEMENT</string>
<key>NSHumanReadableCopyright</key>
<string>© 长沙次元超越科技有限公司. All Rights Reserved.</string>
<key>NSPrincipalClass</key>
<string>NSApplication</string>
</dict>
</plist>
EOF
fi
}
cd "/Users/mossimo/bin"
BINARYNAME="Steam++"
echo "Building Avalonia demo..."
APPNAME="$BINARYNAME"
APPDIR="$APPNAME.app/Contents"
rm -rf "$APPDIR"
create_app_structure "$APPNAME"
emit_plist "$APPNAME" "$APPDIR" true
cd "$APPDIR/Frameworks"
APPNAME="$BINARYNAME Helper"
APPDIR="$APPNAME.app/Contents"
create_app_structure "$APPNAME"
emit_plist "$APPNAME" "$APPDIR"
cp -R "../../../steampp/" "../MacOS"
ln -s "../../MacOS" "Frameworks/$APPDIR/MacOS"
chmod +x "../MacOS/$BINARYNAME"
cp "../MacOS/$BINARYNAME" "../MacOS/$APPNAME"
chmod +x "../MacOS/$APPNAME"
BIN
View File
Binary file not shown.
+45
View File
@@ -0,0 +1,45 @@
// https://github.com/NLog/NLog/blob/v4.7.10/src/NLog/LogManager.cs
using NLog;
using NLog.Config;
using System;
namespace ArchiSteamFarm
{
public static class LogManager
{
static readonly LogFactory factory = new();
[CLSCompliant(false)]
public static Logger GetLogger(string name)
{
return factory.GetLogger(name);
}
public static void Flush()
{
factory.Flush();
}
public static void ReconfigExistingLoggers()
{
factory.ReconfigExistingLoggers();
}
public static LoggingConfiguration Configuration
{
get => factory.Configuration;
set => factory.Configuration = value;
}
public static event EventHandler<LoggingConfigurationChangedEventArgs> ConfigurationChanged
{
add => factory.ConfigurationChanged += value;
remove => factory.ConfigurationChanged -= value;
}
public static void Shutdown()
{
factory.Shutdown();
}
}
}
+82
View File
@@ -0,0 +1,82 @@
using System;
using System.Diagnostics.CodeAnalysis;
using System.IO;
namespace ArchiSteamFarm
{
public static class ASFPathHelper
{
static readonly Lazy<string> _AppDataDirectory = new(() =>
{
var path = Path.Combine(IOPath.AppDataDirectory, "ASF");
IOPath.DirCreateByNotExists(path);
return path;
});
/// <summary>
/// <list type="bullet">
/// <item>
/// AppData\ASF\config
/// </item>
/// <item>
/// AppData\ASF\plugins
/// </item>
/// </list>
/// </summary>
public static string AppDataDirectory => _AppDataDirectory.Value;
/// <summary>
/// <list type="bullet">
/// <item>
/// Windows:Logs\ASF
/// </item>
/// <item>
/// Windows Desktop Bridge:{CacheDirectory}\Logs\ASF
/// </item>
/// </list>
/// </summary>
/// <param name="logDirPath"></param>
/// <returns></returns>
public static string GetLogDirectory([NotNull] string logDirPath)
{
var path = (logDirPath.EndsWith(Path.DirectorySeparatorChar) ? logDirPath : logDirPath + Path.DirectorySeparatorChar) + "ASF";
IOPath.DirCreateByNotExists(path);
return path;
}
public static string GetNLogArchiveFileName([NotNull] string logDirectory)
{
var path = logDirectory + Path.DirectorySeparatorChar + SharedInfo.ArchivalLogFile;
return path;
}
public static string GetNLogFileName([NotNull] string logDirectory)
{
var path = logDirectory + Path.DirectorySeparatorChar + SharedInfo.LogFile;
return path;
}
static readonly Lazy<string> _WebsiteDirectory = new(() =>
{
var path = Path.Combine(IOPath.BaseDirectory, "ASF-ui");
IOPath.DirCreateByNotExists(path);
return path;
});
/// <summary>
/// <list type="bullet">
/// <item>
/// Desktop:ASF-ui
/// </item>
/// </list>
/// </summary>
public static string WebsiteDirectory => _WebsiteDirectory.Value;
#if DEBUG
[Obsolete("use AppDataDirectory")]
public static string HomeDirectory => AppDataDirectory;
#endif
public const string NLogGeneralLayout = NLog.Logging.GeneralLayout;
}
}
@@ -1,44 +0,0 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<!--<TargetFrameworks>netstandard2.0;netstandard2.1;net5.0</TargetFrameworks>-->
<!--<TargetFrameworks Condition="'$(OS)' == 'Windows_NT'">$(TargetFrameworks);net461</TargetFrameworks>-->
<TargetFramework>net5.0</TargetFramework>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
<!--<Configurations>Debug;Release;Nuget_Release</Configurations>-->
<Description>.NET binding for the Chromium Embedded Framework (Avalonia control)</Description>
<PackageTags>CefNet, CEF, browser, chromium, Avalonia, AvaloniaUI</PackageTags>
<DefineConstants>AvaloniaBeta;$(DefineConstants)</DefineConstants>
</PropertyGroup>
<PropertyGroup>
<DefineConstants>$(DefineConstants);TRACE;AVALONIA</DefineConstants>
</PropertyGroup>
<ItemGroup>
<Compile Remove="Internal\CursorInteropHelper.cs" />
</ItemGroup>
<ItemGroup>
<Compile Include="..\CefNet.Windows.Forms\WinApi\DWMWINDOWATTRIBUTE.cs" Link="WinApi\DWMWINDOWATTRIBUTE.cs" />
<Compile Include="..\CefNet.Wpf\Events\PdfPrintFinishedRoutedEventArgs.cs" Link="Events\PdfPrintFinishedRoutedEventArgs.cs" />
<Compile Include="..\CefNet.Wpf\Events\ScriptDialogOpeningRoutedEventArgs.cs" Link="Events\ScriptDialogOpeningRoutedEventArgs.cs" />
<Compile Include="..\CefNet.Wpf\Events\TextFoundRoutedEventArgs.cs" Link="Events\TextFoundRoutedEventArgs.cs" />
<Compile Include="..\CefNet\WebView.CommonImplementation.cs" Link="WebView.CommonImplementation.cs" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Avalonia" Version="0.10.999-cibuild0013694-beta" />
<PackageReference Include="CefNet" Version="90.5.21109.1453" />
</ItemGroup>
<ItemGroup Condition=" Exists('$(MSBuildProjectDirectory)\..\..\..\src\Common.CoreLib\Properties\ThisAssembly.Version.cs') ">
<Compile Include="..\..\..\src\Common.CoreLib\Properties\AssemblyInfo.Version.cs">
<Link>Properties\AssemblyInfo.Version.cs</Link>
</Compile>
<Compile Include="..\..\..\src\Common.CoreLib\Properties\ThisAssembly.Version.cs">
<Link>Properties\ThisAssembly.Version.cs</Link>
</Compile>
</ItemGroup>
</Project>
@@ -1,167 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using Avalonia.Controls;
using Avalonia.Controls.ApplicationLifetimes;
using Avalonia.Interactivity;
using Avalonia.Threading;
namespace CefNet
{
public class CefNetApplicationLifetime : IClassicDesktopStyleApplicationLifetime, IControlledApplicationLifetime, IApplicationLifetime, IDisposable
{
private int _exitCode;
private CancellationTokenSource _cts;
private bool _isShuttingDown;
private HashSet<Window> _windows = new HashSet<Window>();
private static CefNetApplicationLifetime _activeLifetime;
/// <inheritdoc />
public string[] Args { get; internal set; }
/// <inheritdoc />
public ShutdownMode ShutdownMode { get; set; }
/// <inheritdoc />
public Window MainWindow { get; set; }
/// <inheritdoc />
public IReadOnlyList<Window> Windows
{
get { return _windows.ToList(); }
}
/// <inheritdoc />
public event EventHandler<ControlledApplicationLifetimeStartupEventArgs> Startup;
/// <inheritdoc />
public event EventHandler<ControlledApplicationLifetimeExitEventArgs> Exit;
static CefNetApplicationLifetime()
{
Window.WindowOpenedEvent.AddClassHandler(typeof(Window), new EventHandler<RoutedEventArgs>(OnWindowOpened));
Window.WindowClosedEvent.AddClassHandler(typeof(Window), new EventHandler<RoutedEventArgs>(WindowClosedEvent));
}
private static void WindowClosedEvent(object sender, RoutedEventArgs e)
{
var window = sender as Window;
if (window is null)
return;
_activeLifetime?._windows.Remove(window);
_activeLifetime?.HandleWindowClosed(window);
}
private static void OnWindowOpened(object sender, RoutedEventArgs e)
{
var window = sender as Window;
if (window is null)
return;
_activeLifetime?._windows.Add(window);
}
public CefNetApplicationLifetime()
{
if (_activeLifetime is null)
_activeLifetime = this;
else
throw new InvalidOperationException($"Can not have multiple active {this.GetType().Name} instances and the previously created one was not disposed.");
}
protected virtual void HandleWindowClosed(Window window)
{
if (window != null && !_isShuttingDown)
{
if (ShutdownMode == ShutdownMode.OnLastWindowClose && _windows.Count == 0)
{
Shutdown();
}
else if (ShutdownMode == ShutdownMode.OnMainWindowClose && window == MainWindow)
{
Shutdown();
}
}
}
public void Shutdown(int exitCode = 0)
{
if (_isShuttingDown)
throw new InvalidOperationException("Application is already shutting down.");
_exitCode = exitCode;
_isShuttingDown = true;
try
{
foreach (Window window in Windows)
{
window.Close();
}
CefNetApplication.Instance.SignalForShutdown(ShutdownComplete);
}
catch
{
ShutdownComplete();
throw;
}
}
private void ShutdownComplete()
{
_cts?.Cancel();
_cts = null;
_isShuttingDown = false;
}
public int Start(string[] args)
{
try
{
this.Startup?.Invoke(this, new ControlledApplicationLifetimeStartupEventArgs(args));
_cts = new CancellationTokenSource();
MainWindow?.Show();
Dispatcher.UIThread.MainLoop(_cts.Token);
ControlledApplicationLifetimeExitEventArgs e = new ControlledApplicationLifetimeExitEventArgs(_exitCode);
this.Exit?.Invoke(this, e);
Environment.ExitCode = e.ApplicationExitCode;
return e.ApplicationExitCode;
}
finally
{
CefNetApplication.Instance.Shutdown();
}
}
public void Dispose()
{
if (_activeLifetime == this)
_activeLifetime = null;
}
}
public static class CefNetApplicationLifetimeExtensions
{
public static int StartWithCefNetApplicationLifetime<T>(this T builder, string[] args, ShutdownMode shutdownMode = ShutdownMode.OnLastWindowClose)
where T : AppBuilderBase<T>, new()
{
CefNetApplicationLifetime lifetime = new CefNetApplicationLifetime
{
Args = args,
ShutdownMode = shutdownMode
};
builder.SetupWithLifetime(lifetime);
return lifetime.Start(args);
}
}
}
@@ -1,199 +0,0 @@
using Avalonia.Input;
using Avalonia.Interactivity;
using Avalonia.Media;
using CefNet.Input;
using CefNet.Internal;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.CompilerServices;
using System.Text;
namespace CefNet.Avalonia
{
public static class CefNetAvaloniaExtensions
{
#pragma warning disable IDE0060
[MethodImpl(MethodImplOptions.AggressiveInlining)]
internal static void Invoke<TEventArgs>(this RoutedEvent routedEvent, Interactive sender, TEventArgs e)
where TEventArgs : class
{
sender.RaiseEvent(e as RoutedEventArgs);
}
#pragma warning restore IDE0060
/// <summary>
/// Converts the specified <see cref="Key"/> into a virtual key.
/// </summary>
/// <param name="key">The key code.</param>
/// <returns>The virtual key code.</returns>
public static VirtualKeys ToVirtualKey(this Key key)
{
if (key >= Key.LeftShift && key <= Key.RightAlt)
return (VirtualKeys)((key - Key.LeftShift) >> 1) | VirtualKeys.ShiftKey; // VK_SHIFT, VK_CONTROL, VK_MENU
if (key == Key.System)
return VirtualKeys.Menu; // VK_MENU
return (VirtualKeys)KeyInterop.VirtualKeyFromKey(key);
}
public static Color ToColor(this CefColor color)
{
return Color.FromArgb(color.A, color.R, color.G, color.B);
}
/// <summary>
/// Converts a drag drop effects to the CEF dragging operation mask.
/// </summary>
/// <param name="self">The drag drop effects.</param>
/// <returns></returns>
public static CefDragOperationsMask ToCefDragOperationsMask(this DragDropEffects self)
{
CefDragOperationsMask effects = CefDragOperationsMask.None;
if (self.HasFlag(DragDropEffects.Copy))
effects |= CefDragOperationsMask.Copy;
if (self.HasFlag(DragDropEffects.Move))
effects |= CefDragOperationsMask.Move;
if (self.HasFlag(DragDropEffects.Link))
effects |= CefDragOperationsMask.Link;
return effects;
}
/// <summary>
/// Converts the CEF dragging operation mask to drag drop effects.
/// </summary>
/// <param name="self">The CEF dragging operation mask.</param>
/// <returns></returns>
public static DragDropEffects ToDragDropEffects(this CefDragOperationsMask self)
{
DragDropEffects effects = DragDropEffects.None;
if (self.HasFlag(CefDragOperationsMask.Every))
effects |= DragDropEffects.Copy | DragDropEffects.Link | DragDropEffects.Move;
if (self.HasFlag(CefDragOperationsMask.Copy))
effects |= DragDropEffects.Copy;
if (self.HasFlag(CefDragOperationsMask.Move))
effects |= DragDropEffects.Move;
if (self.HasFlag(CefDragOperationsMask.Link))
effects |= DragDropEffects.Link;
return effects;
}
/// <summary>
/// Gets the current state of the SHIFT, CTRL, and ALT keys, as well as the state of the mouse buttons.
/// </summary>
/// <param name="e">The <see cref="DragEventArgs"/> instance containing the event data.</param>
/// <returns></returns>
public static CefEventFlags GetModifiers(this DragEventArgs e)
{
#pragma warning disable CS0618 // Obsoleted InputModifiers
CefEventFlags flags = CefEventFlags.None;
InputModifiers state = e.Modifiers;
if (state.HasFlag(InputModifiers.LeftMouseButton))
flags |= CefEventFlags.LeftMouseButton;
if (state.HasFlag(InputModifiers.RightMouseButton))
flags |= CefEventFlags.RightMouseButton;
if (state.HasFlag(InputModifiers.Shift))
flags |= CefEventFlags.ShiftDown;
if (state.HasFlag(InputModifiers.Control))
flags |= CefEventFlags.ControlDown;
if (state.HasFlag(InputModifiers.MiddleMouseButton))
flags |= CefEventFlags.MiddleMouseButton;
if (state.HasFlag(InputModifiers.Alt))
flags |= CefEventFlags.AltDown;
if (state.HasFlag(InputModifiers.Windows))
flags |= CefEventFlags.CommandDown;
return flags;
#pragma warning restore CS0618
}
/// <summary>
/// Gets the drag data.
/// </summary>
/// <param name="e">The <see cref="DragEventArgs"/> instance containing the event data.</param>
public static CefDragData GetCefDragData(this DragEventArgs e)
{
CefDragData dragData;
if (e.Data.Contains(nameof(CefDragData)))
{
dragData = (CefDragData)e.Data.Get(nameof(CefDragData));
if (dragData != null)
{
dragData.ResetFileContents();
return dragData;
}
}
dragData = new CefDragData();
string[] formats = e.Data.GetDataFormats().ToArray();
if (TryGetFileDropData(e.Data, out IEnumerable<string> fileNames))
{
foreach (string filePath in fileNames)
{
dragData.AddFile(filePath.Replace("\\", "/"), Path.GetFileName(filePath));
}
}
bool isUrl = false;
string s = GetUrlString(e.Data, formats);
if (!string.IsNullOrWhiteSpace(s))
{
isUrl = true;
dragData.LinkUrl = s;
}
if (formats.Contains(CefNetDragData.DataFormatUnicodeText))
{
s = (string)e.Data.Get(CefNetDragData.DataFormatUnicodeText);
if (!isUrl && Uri.IsWellFormedUriString(s, UriKind.Absolute))
dragData.LinkUrl = s;
dragData.FragmentText = s;
}
else if (formats.Contains(DataFormats.Text))
{
s = (string)e.Data.Get(DataFormats.Text);
if (!isUrl && Uri.IsWellFormedUriString(s, UriKind.Absolute))
dragData.LinkUrl = s;
dragData.FragmentText = s;
}
if (formats.Contains(CefNetDragData.DataFormatHtml))
{
dragData.FragmentHtml = Encoding.UTF8.GetString((byte[])e.Data.Get(CefNetDragData.DataFormatHtml));
}
else if (formats.Contains(CefNetDragData.DataFormatTextHtml))
{
dragData.FragmentHtml = Encoding.UTF8.GetString((byte[])e.Data.Get(CefNetDragData.DataFormatTextHtml));
}
return dragData;
}
private static bool TryGetFileDropData(IDataObject data, out IEnumerable<string> fileNames)
{
if (data.Contains(CefNetDragData.DataFormatFileDrop))
fileNames = (IEnumerable<string>)data.Get(CefNetDragData.DataFormatFileDrop);
else if (data.Contains(CefNetDragData.DataFormatFileNames))
fileNames = (IEnumerable<string>)data.Get(CefNetDragData.DataFormatFileNames);
else
fileNames = null;
return fileNames != null;
}
private static string GetUrlString(IDataObject data, string[] formats)
{
if (formats.Contains(CefNetDragData.DataFormatUnicodeUrl))
return Encoding.Unicode.GetString((byte[])data.Get(CefNetDragData.DataFormatUnicodeUrl));
if (formats.Contains(CefNetDragData.DataFormatUrl))
return Encoding.ASCII.GetString((byte[])data.Get(CefNetDragData.DataFormatUrl));
return null;
}
}
}
@@ -1,138 +0,0 @@
using Avalonia.Input;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Text;
namespace CefNet.Avalonia
{
public class CefNetDragData : IDataObject
{
internal const string DataFormatUrl = "UniformResourceLocator";
internal const string DataFormatUnicodeUrl = "UniformResourceLocatorW";
internal const string DataFormatTextHtml = "text/html";
internal const string DataFormatUnicodeText = "UnicodeText";
internal const string DataFormatHtml = "HTML Format";
internal const string DataFormatFileDrop = "FileDrop";
internal const string DataFormatFileNames = "FileNames";
public const string DataFormatCefNetDragData = nameof(CefNetDragData);
public const string DataFormatCefDragData = nameof(CefDragData);
private WeakReference<WebView> _source;
private HashSet<string> _formats;
/// <summary>
/// Initializes a new instance of the <see cref="CefNetDragData"/> class.
/// </summary>
/// <param name="source">The source of the drag event.</param>
/// <param name="data">The original drag data.</param>
public CefNetDragData(WebView source, CefDragData data)
{
var formats = new HashSet<string>();
formats.Add(DataFormatCefNetDragData);
formats.Add(DataFormatCefDragData);
if (data.IsFile)
{
formats.Add(DataFormatFileDrop);
formats.Add(DataFormatFileNames);
}
if (data.IsLink)
{
formats.Add(DataFormatUnicodeUrl);
formats.Add(DataFormatUnicodeText);
}
if (data.IsFragment)
{
formats.Add(DataFormatUnicodeText);
formats.Add(DataFormatHtml);
formats.Add(DataFormatTextHtml);
}
_source = new WeakReference<WebView>(source);
_formats = formats;
this.Data = data;
}
/// <summary>
/// The original drag data.
/// </summary>
public CefDragData Data { get; }
/// <summary>
/// The source of the drag event.
/// </summary>
public WebView Source
{
get
{
if (_source.TryGetTarget(out WebView source))
return source;
return null;
}
}
public bool Contains(string format)
{
return _formats.Contains(format);
}
public object Get(string format)
{
Debug.Print("GetData: " + format);
string s;
if (DataFormatUnicodeUrl.Equals(format, StringComparison.Ordinal))
{
s = Data.LinkUrl;
return s is null ? null : new MemoryStream(Encoding.Unicode.GetBytes(s));
}
if (DataFormatUrl.Equals(format, StringComparison.Ordinal))
{
s = Data.LinkUrl;
return s is null ? null : new MemoryStream(Encoding.ASCII.GetBytes(s));
}
if (DataFormatUnicodeText.Equals(format, StringComparison.Ordinal))
{
if (Data.IsLink)
return Data.LinkUrl;
return Data.FragmentText;
}
if (DataFormatHtml.Equals(format, StringComparison.Ordinal))
return Data.FragmentHtml;
if (DataFormats.Text.Equals(format, StringComparison.Ordinal))
return Data.FragmentText;
if (DataFormatTextHtml.Equals(format, StringComparison.Ordinal))
return Data.FragmentHtml;
if (DataFormatCefDragData.Equals(format, StringComparison.Ordinal))
return Data;
if (DataFormatCefNetDragData.Equals(format, StringComparison.Ordinal))
return this;
return null;
}
public IEnumerable<string> GetDataFormats()
{
return _formats;
}
public IEnumerable<string> GetFileNames()
{
using (var list = new CefStringList())
{
Data.GetFileNames(list);
foreach (string s in list)
yield return s;
}
}
public string GetText()
{
if (Data.IsLink)
return Data.LinkUrl;
return Data.FragmentText;
}
}
}
@@ -1,19 +0,0 @@
using Avalonia.Input;
using System;
using System.ComponentModel;
namespace CefNet.Avalonia
{
public class CursorChangeEventArgs : HandledEventArgs
{
public CursorChangeEventArgs(Cursor cursor, CefCursorType cursorType)
{
this.Cursor = cursor;
this.CursorType = cursorType;
}
public Cursor Cursor { get; }
public CefCursorType CursorType { get; }
}
}
@@ -1,140 +0,0 @@
#if MODERNFORMS
using Modern.Forms;
#else
using Avalonia;
using Avalonia.Input;
using Avalonia.Media.Imaging;
using Avalonia.Platform;
#endif
using CefNet.Internal;
using System;
using System.Collections.Generic;
using System.IO;
using System.Runtime.InteropServices;
using System.Text;
#if MODERNFORMS
namespace CefNet.Modern.Forms
#else
namespace CefNet.Avalonia
#endif
{
public sealed class CustomCursor
{
public unsafe static Cursor Create(ref CefCursorInfo cursorInfo)
{
return Cursor.Default; // Not supported
/*
CefSize size = cursorInfo.Size;
var bufferSize = size.Width * size.Height * 4;
int ICON_HEADER_SIZE = sizeof(ICONDIR);
var stream = new MemoryStream(bufferSize);
{
if (stream.Seek(ICON_HEADER_SIZE, SeekOrigin.Begin) != ICON_HEADER_SIZE)
{
stream.Seek(0, SeekOrigin.Begin);
stream.Write(new byte[ICON_HEADER_SIZE], 0, ICON_HEADER_SIZE);
}
using (var image = new WriteableBitmap(new PixelSize(size.Width, size.Height), OffscreenGraphics.Dpi, PixelFormat.Bgra8888))
{
using (ILockedFramebuffer frameBuffer = image.Lock())
{
System.Runtime.CompilerServices.Unsafe.CopyBlock((void*)frameBuffer.Address, (void*)cursorInfo.Buffer, (uint)bufferSize);
}
image.Save(stream); // Save in png format!!!
}
stream.Seek(0, SeekOrigin.Begin);
}
CefPoint hotSpot = cursorInfo.Hotspot;
var icon = new ICONDIR();
icon.IconType = 2;
icon.ImagesCount = 1;
icon.Width = (byte)size.Width;
icon.Height = (byte)size.Height;
icon.HotSpotX = (short)hotSpot.X;
icon.HotSpotY = (short)hotSpot.Y;
icon.BytesInRes = (int)stream.Length - ICON_HEADER_SIZE;
icon.ImageOffset = ICON_HEADER_SIZE;
using (var iconHead = new UnmanagedMemoryStream(icon._data, ICON_HEADER_SIZE))
{
iconHead.CopyTo(stream);
stream.Seek(0, SeekOrigin.Begin);
}
return new Cursor(stream);
*/
}
[StructLayout(LayoutKind.Explicit, Pack = 1, Size = 22)]
unsafe struct ICONDIR
{
[FieldOffset(0)]
public fixed byte _data[22];
/// <summary>
/// Reserved. Must always be 0.
/// </summary>
[FieldOffset(0)]
public short IDReserved;
/// <summary>
/// Specifies image type: 1 for icon (.ICO) image, 2 for cursor (.CUR) image.
/// </summary>
[FieldOffset(2)]
public short IconType;
/// <summary>
/// Specifies number of images in the file.
/// </summary>
[FieldOffset(4)]
public short ImagesCount;
/// <summary>
/// Specifies image width in pixels. Can be any number between 0 and 255. Value 0 means image width is 256 pixels.
/// </summary>
[FieldOffset(6)]
public byte Width;
/// <summary>
/// Specifies image height in pixels. Can be any number between 0 and 255. Value 0 means image height is 256 pixels.
/// </summary>
[FieldOffset(7)]
public byte Height;
/// <summary>
/// Specifies number of colors in the color palette. Should be 0 if the image does not use a color palette.
/// </summary>
[FieldOffset(8)]
public byte ColorCount;
/// <summary>
/// Reserved. Should be 0.
/// </summary>
[FieldOffset(9)]
public byte IDEReserved;
/// <summary>
/// Specifies the horizontal coordinates of the hotspot in number of pixels from the left.
/// </summary>
[FieldOffset(10)]
public short HotSpotX;
/// <summary>
/// Specifies the vertical coordinates of the hotspot in number of pixels from the top.
/// </summary>
[FieldOffset(12)]
public short HotSpotY;
/// <summary>
/// Specifies the size of the image's data in bytes
/// </summary>
[FieldOffset(14)]
public int BytesInRes;
/// <summary>
/// Specifies the offset of BMP or PNG data from the beginning of the ICO/CUR file
/// </summary>
[FieldOffset(18)]
public int ImageOffset;
}
}
}
@@ -1,121 +0,0 @@
using Avalonia;
using Avalonia.Collections;
using Avalonia.Controls;
using Avalonia.Interactivity;
using Avalonia.Media;
using Avalonia.Threading;
using CefNet.Avalonia;
using System;
using System.Threading.Tasks;
namespace CefNet.Internal
{
internal sealed class AvaloniaContextMenuRunner
{
private readonly MenuModel Model;
private CefRunContextMenuCallback Callback;
private ContextMenu Menu;
private TaskCompletionSource<bool> _completionSource;
public AvaloniaContextMenuRunner(CefMenuModel model, CefRunContextMenuCallback callback)
{
Model = MenuModel.FromCefMenu(model);
Callback = callback;
}
public void Build()
{
if (Menu != null)
throw new InvalidOperationException();
Menu = new ContextMenu();
Menu.MenuClosed += Menu_Closed;
Build(Model, (AvaloniaList<object>)Menu.Items);
}
private void Menu_Closed(object sender, RoutedEventArgs e)
{
Cancel();
}
private void MenuItem_Click(object sender, RoutedEventArgs e)
{
var clickedItem = sender as MenuItem;
object cid = clickedItem?.Tag;
if (cid != null)
{
Callback.Continue((int)cid, CefEventFlags.LeftMouseButton);
Callback = null;
}
}
public Task CompletionTask
{
get { return _completionSource?.Task; }
}
private void Build(MenuModel model, AvaloniaList<object> menu)
{
int count = model.Count;
for (int i = 0; i < count; i++)
{
bool isSubmenu = false;
MenuItem menuItem;
switch (model.GetTypeAt(i))
{
case CefMenuItemType.Separator:
menu.Add(new Separator());
continue;
case CefMenuItemType.Check:
menuItem = new MenuItem();
menuItem.Icon = new CheckBox() { IsChecked = model.IsCheckedAt(i), Margin = new Thickness(-2, 0, 0, 0), BorderThickness = new Thickness() };
break;
case CefMenuItemType.Radio:
menuItem = new MenuItem();
menuItem.Icon = new RadioButton() { IsChecked = model.IsCheckedAt(i), Margin = new Thickness(-2, 0, 0, 0), BorderThickness = new Thickness() };
break;
case CefMenuItemType.Command:
menuItem = new MenuItem();
break;
case CefMenuItemType.Submenu:
isSubmenu = true;
menuItem = new MenuItem();
if (model.IsEnabledAt(i))
{
Build(model.GetSubMenuAt(i), (AvaloniaList<object>)menuItem.Items);
}
break;
default:
continue;
}
if (!isSubmenu)
{
menuItem.Click += MenuItem_Click;
menuItem.Tag = model.GetCommandIdAt(i);
}
menuItem.Header = model.GetLabelAt(i).Replace('&', '_');
menuItem.IsEnabled = model.IsEnabledAt(i);
//menuItem.Foreground = model.GetColorAt(i, CefMenuColorType.Text, out CefColor color) ? new SolidColorBrush(color.ToColor()) : SystemColors.MenuTextBrush;
menu.Add(menuItem);
}
}
public void RunMenuAt(Control control, Point point)
{
_completionSource = new TaskCompletionSource<bool>();
Dispatcher.UIThread.Post(() =>
{
Menu.Open(control);
_completionSource.TrySetResult(true);
});
}
public void Cancel()
{
_completionSource?.TrySetResult(false);
Callback?.Cancel();
Callback = null;
}
}
}
@@ -1,125 +0,0 @@
using Avalonia.Input;
using CefNet.Avalonia;
using System;
using System.Diagnostics;
namespace CefNet.Internal
{
public class AvaloniaWebViewGlue : WebViewGlue
{
public AvaloniaWebViewGlue(IAvaloniaWebViewPrivate view)
: base(view)
{
}
public new IAvaloniaWebViewPrivate WebView
{
get { return (IAvaloniaWebViewPrivate)base.WebView; }
}
/// <inheritdoc />
protected override bool OnCursorChange(CefBrowser browser, IntPtr cursorHandle, CefCursorType type, CefCursorInfo customCursorInfo)
{
var ea = new CursorChangeEventArgs(type != CefCursorType.Custom ? CursorInteropHelper.Create(cursorHandle) : CustomCursor.Create(ref customCursorInfo), type);
WebView.RaiseCefCursorChange(ea);
return ea.Handled;
}
/// <inheritdoc />
protected override bool OnTooltip(CefBrowser browser, ref string text)
{
WebView.CefSetToolTip(text);
return true;
}
/// <inheritdoc />
protected override void OnStatusMessage(CefBrowser browser, string message)
{
WebView.CefSetStatusText(message);
}
/// <summary>
/// Called when the user starts dragging content in the web view. OS APIs that run a system message
/// loop may be used within the StartDragging call. Don't call any of CefBrowserHost::DragSource*Ended*
/// methods after returning false. Call CefBrowserHost::DragSourceEndedAt and DragSourceSystemDragEnded
/// either synchronously or asynchronously to inform the web view that the drag operation has ended.
/// </summary>
/// <param name="browser"></param>
/// <param name="dragData">The contextual information about the dragged content.</param>
/// <param name="allowedOps"></param>
/// <param name="x">The X-location in screen coordinates.</param>
/// <param name="y">The Y-location in screen coordinates.</param>
/// <returns>Return false to abort the drag operation or true to handle the drag operation.</returns>
protected override bool StartDragging(CefBrowser browser, CefDragData dragData, CefDragOperationsMask allowedOps, int x, int y)
{
var e = new StartDraggingEventArgs(dragData, allowedOps, x, y);
WebView.RaiseStartDragging(e);
return e.Handled;
}
/// <summary>
/// Called when the web view wants to update the mouse cursor during a drag &amp; drop operation.
/// </summary>
/// <param name="browser"></param>
/// <param name="operation">Describes the allowed operation (none, move, copy, link).</param>
protected override void UpdateDragCursor(CefBrowser browser, CefDragOperationsMask operation)
{
Cursor cursor;
CefCursorType cursorType;
switch(operation)
{
case CefDragOperationsMask.None:
cursor = CursorInteropHelper.Create(StandardCursorType.No);
cursorType = CefCursorType.Notallowed;
break;
case CefDragOperationsMask.Move:
cursor = CursorInteropHelper.Create(StandardCursorType.DragMove);
cursorType = CefCursorType.Move;
break;
case CefDragOperationsMask.Link:
cursor = CursorInteropHelper.Create(StandardCursorType.DragLink);
cursorType = CefCursorType.Alias;
break;
default:
cursor = CursorInteropHelper.Create(StandardCursorType.DragCopy);
cursorType = CefCursorType.Copy;
break;
}
WebView.RaiseCefCursorChange(new CursorChangeEventArgs(cursor, cursorType));
}
/// <inheritdoc />
protected override void OnFindResult(CefBrowser browser, int identifier, int count, CefRect selectionRect, int activeMatchOrdinal, bool finalUpdate)
{
WebView.RaiseTextFound(new TextFoundRoutedEventArgs(identifier, count, selectionRect, activeMatchOrdinal, finalUpdate));
}
/// <inheritdoc />
protected override void OnPdfPrintFinished(string path, bool success)
{
WebView.RaisePdfPrintFinished(new PdfPrintFinishedRoutedEventArgs(path, success));
}
/// <inheritdoc />
protected override bool OnJSDialog(CefBrowser browser, string originUrl, CefJSDialogType dialogType, string messageText, string defaultPromptText, CefJSDialogCallback callback, ref int suppressMessage)
{
ScriptDialogDeferral dialogDeferral = CreateScriptDialogDeferral(callback);
var ea = new ScriptDialogOpeningRoutedEventArgs(originUrl, (ScriptDialogKind)dialogType, messageText, defaultPromptText, dialogDeferral);
WebView.RaiseScriptDialogOpening(ea);
suppressMessage = ea.Suppress ? 1 : 0;
if (!ea.Handled) ((IDisposable)dialogDeferral).Dispose();
return ea.Handled;
}
/// <inheritdoc />
protected override bool OnBeforeUnloadDialog(CefBrowser browser, string messageText, bool isReload, CefJSDialogCallback callback)
{
ScriptDialogDeferral dialogDeferral = CreateScriptDialogDeferral(callback);
var ea = new ScriptDialogOpeningRoutedEventArgs(messageText, isReload, dialogDeferral);
WebView.RaiseScriptDialogOpening(ea);
if (!ea.Handled) ((IDisposable)dialogDeferral).Dispose();
return ea.Handled;
}
}
}
@@ -1,66 +0,0 @@
#if AvaloniaBeta
using Avalonia.Input;
using Avalonia.Platform;
using System;
using System.Collections.Generic;
using System.Reflection;
using System.Runtime.InteropServices;
using System.Text;
namespace CefNet.Internal
{
public static class CursorInteropHelper
{
private static readonly Dictionary<IntPtr, Cursor> _Cursors = new Dictionary<IntPtr, Cursor>();
private static readonly Dictionary<StandardCursorType, Cursor> _StdCursors = new Dictionary<StandardCursorType, Cursor>();
private static IntPtr GetPlatformHandle(Cursor cursor)
{
if (cursor != null)
{
if (cursor.PlatformImpl is IPlatformHandle i)
{
return i.Handle;
}
}
return default;
}
static CursorInteropHelper()
{
foreach (StandardCursorType cursorType in Enum.GetValues(typeof(StandardCursorType)))
{
var cursor = new Cursor(cursorType);
var handle = GetPlatformHandle(cursor);
if (handle == default || _Cursors.ContainsKey(handle))
continue;
_Cursors.Add(handle, cursor);
_StdCursors.Add(cursorType, cursor);
}
}
public static Cursor Create(IntPtr cursorHandle)
{
if (_Cursors.TryGetValue(cursorHandle, out Cursor cursor))
return cursor;
return Cursor.Default;
}
public static Cursor Create(StandardCursorType cursorType)
{
Cursor cursor;
lock (_StdCursors)
{
if (!_StdCursors.TryGetValue(cursorType, out cursor))
{
cursor = new Cursor(cursorType);
_StdCursors[cursorType] = cursor;
}
}
return cursor;
}
}
}
#endif
@@ -1,48 +0,0 @@
using Avalonia.Input;
using System;
using System.Collections.Generic;
using System.Text;
namespace CefNet.Internal
{
public static class CursorInteropHelper
{
private static readonly Dictionary<IntPtr, Cursor> _Cursors = new Dictionary<IntPtr, Cursor>();
private static readonly Dictionary<StandardCursorType, Cursor> _StdCursors = new Dictionary<StandardCursorType, Cursor>();
static CursorInteropHelper()
{
foreach(StandardCursorType cursorType in Enum.GetValues(typeof(StandardCursorType)))
{
var cursor = new Cursor(cursorType);
if (_Cursors.ContainsKey(cursor.PlatformCursor.Handle))
continue;
_Cursors.Add(cursor.PlatformCursor.Handle, cursor);
_StdCursors.Add(cursorType, cursor);
}
}
public static Cursor Create(IntPtr cursorHandle)
{
if (_Cursors.TryGetValue(cursorHandle, out Cursor cursor))
return cursor;
return Cursor.Default;
}
public static Cursor Create(StandardCursorType cursorType)
{
Cursor cursor;
lock (_StdCursors)
{
if (!_StdCursors.TryGetValue(cursorType, out cursor))
{
cursor = new Cursor(cursorType);
_StdCursors[cursorType] = cursor;
}
}
return cursor;
}
}
}
@@ -1,61 +0,0 @@
using System;
using System.Collections.Generic;
using System.Text;
using Avalonia;
namespace CefNet.Internal
{
/// <summary>
/// Stores DPI information from which a <see cref="Avalonia.Layout.Visual"/> is rendered.
/// </summary>
///
public struct DpiScale
{
/// <summary>
/// Initializes a new instance of the <see cref="DpiScale"/> structure.
/// </summary>
/// <param name="dpiScaleX">The DPI scale on the X axis.</param>
/// <param name="dpiScaleY">The DPI scale on the Y axis.</param>
public DpiScale(double dpiScaleX, double dpiScaleY)
{
this.DpiScaleX = dpiScaleX;
this.DpiScaleY = dpiScaleY;
this.PixelsPerDip = 96.0;
this.PixelsPerInchX = dpiScaleX * 96.0;
this.PixelsPerInchY = dpiScaleY * 96.0;
}
/// <summary>
/// Gets the DPI scale on the X axis.
/// </summary>
public double DpiScaleX { get; }
/// <summary>
/// Gets the DPI scale on the Y axis.
/// </summary>
public double DpiScaleY { get; }
/// <summary>
/// Gets the PixelsPerDip at which the text should be rendered.
/// </summary>
public double PixelsPerDip { get; }
/// <summary>
/// Gets the DPI along X axis.
/// </summary>
public double PixelsPerInchX { get; }
/// <summary>
/// Gets the DPI along Y axis.
/// </summary>
public double PixelsPerInchY { get; }
/// <summary>
/// Gets the DPI.
/// </summary>
public Vector Dpi
{
get { return new Vector(PixelsPerInchX, PixelsPerInchY); }
}
}
}
@@ -1,172 +0,0 @@
using System;
using System.Collections.Generic;
using Avalonia;
using Avalonia.Controls;
using Avalonia.Controls.ApplicationLifetimes;
using Avalonia.Interactivity;
using System.Runtime.InteropServices;
using Avalonia.VisualTree;
using CefNet.WinApi;
using CefNet.Avalonia;
namespace CefNet.Internal
{
sealed class GlobalHooks
{
private static bool IsInitialized;
private static Dictionary<IntPtr, GlobalHooks> _HookedWindows = new Dictionary<IntPtr, GlobalHooks>();
private static List<WeakReference<WebView>> _Views = new List<WeakReference<WebView>>();
internal static void Initialize(WebView view)
{
if (!RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
return;
lock(_Views)
{
_Views.Add(new WeakReference<WebView>(view));
}
if (IsInitialized)
return;
IsInitialized = true;
var lifetime = Application.Current.ApplicationLifetime as IClassicDesktopStyleApplicationLifetime;
if (lifetime is null)
return;
Window.WindowOpenedEvent.AddClassHandler(typeof(Window), TryAddGlobalHook, handledEventsToo: true);
//EventManager.RegisterClassHandler(typeof(Window), FrameworkElement.SizeChangedEvent, new RoutedEventHandler(TryAddGlobalHook));
foreach (Window window in lifetime.Windows)
{
TryAddGlobalHook(window);
}
}
private WindowsHwndSource _source;
private WeakReference<Window> _windowRef;
private GlobalHooks(WindowsHwndSource source, Window window)
{
_source = source;
_windowRef = new WeakReference<Window>(window);
source.WndProcCallback = WndProc;
}
private unsafe IntPtr WndProc(IntPtr hwnd, int message, IntPtr wParam, IntPtr lParam, ref bool handled)
{
const int WM_ENTERMENULOOP = 0x0211;
const int WM_EXITMENULOOP = 0x0212;
switch (message)
{
case 0x0002: // WM_DESTROY
_source.WndProcCallback = null;
foreach (var tuple in GetViews(hwnd))
{
tuple.Item1.Close();
}
lock (_HookedWindows)
{
_HookedWindows.Remove(_source.Handle);
_source.Dispose();
}
break;
case 0x0047: //WM_WINDOWPOSCHANGED
WINDOWPOS* windowPos = (WINDOWPOS*)lParam;
if ((windowPos->flags & 0x0002) != 0) // SWP_NOMOVE
break;
foreach (var tuple in GetViews(hwnd))
{
tuple.Item1.OnUpdateRootBounds();
}
break;
case 0x0231: // WM_ENTERSIZEMOVE
foreach (var tuple in GetViews(hwnd))
{
tuple.Item1.OnRootResizeBegin(EventArgs.Empty);
}
break;
case 0x0232: // WM_EXITSIZEMOVE
foreach (var tuple in GetViews(hwnd))
{
tuple.Item1.OnRootResizeEnd(EventArgs.Empty);
}
break;
case 0x0112: // WM_SYSCOMMAND
const int SC_KEYMENU = 0xF100;
// Menu loop must not be runned with Alt key
if ((int)(wParam.ToInt64() & 0xFFF0) == SC_KEYMENU && lParam == IntPtr.Zero)
{
handled = true;
}
break;
case WM_ENTERMENULOOP:
if (wParam == IntPtr.Zero)
CefApi.SetOSModalLoop(true);
break;
case WM_EXITMENULOOP:
if (wParam == IntPtr.Zero)
CefApi.SetOSModalLoop(false);
break;
}
return IntPtr.Zero;
}
private IEnumerable<ValueTuple<WebView, Window>> GetViews(IntPtr hwnd)
{
if (hwnd != _source.Handle)
yield break;
Window window;
if (!_windowRef.TryGetTarget(out window))
yield break;
lock (_Views)
{
for (int i = 0; i < _Views.Count; i++)
{
WeakReference<WebView> viewRef = _Views[i];
if (viewRef.TryGetTarget(out WebView view))
{
if (view.GetVisualRoot() == window)
{
yield return new ValueTuple<WebView, Window>(view, window);
}
}
else
{
_Views.RemoveAt(i--);
}
}
}
}
private static void TryAddGlobalHook(object sender, RoutedEventArgs e)
{
TryAddGlobalHook(e.Source as Window);
}
private static void TryAddGlobalHook(Window window)
{
if (window == null)
return;
IntPtr hwnd = window.PlatformImpl.Handle.Handle;
if (_HookedWindows.ContainsKey(hwnd))
return;
WindowsHwndSource source = WindowsHwndSource.FromHwnd(hwnd);
if (source == null)
return;
_HookedWindows.Add(hwnd, new GlobalHooks(source, window));
}
}
}
@@ -1,15 +0,0 @@
using CefNet.Avalonia;
using System;
using System.Collections.Generic;
using System.Text;
namespace CefNet.Internal
{
public interface IAvaloniaWebViewPrivate : IChromiumWebViewPrivate
{
void RaiseCefCursorChange(CursorChangeEventArgs e);
void CefSetToolTip(string text);
void CefSetStatusText(string statusText);
void RaiseStartDragging(StartDraggingEventArgs e);
}
}
@@ -1,726 +0,0 @@
using Avalonia.Input;
#pragma warning disable CS0219
namespace CefNet.Internal
{
/// <summary>
/// Provides static methods to convert between Virtual-Keys and the Key enumeration.
/// </summary>
internal static class KeyInterop
{
/// <summary>
/// Convert Key into a Virtual-Key.
/// </summary>
public static int VirtualKeyFromKey(Key key)
{
const int VK_CANCEL = 0x03;
const int VK_BACK = 0x08;
const int VK_CLEAR = 0x0C;
const int VK_RETURN = 0x0D;
const int VK_PAUSE = 0x13;
const int VK_CAPITAL = 0x14;
const int VK_KANA = 0x15;
const int VK_HANGEUL = 0x15;
const int VK_HANGUL = 0x15;
const int VK_JUNJA = 0x17;
const int VK_FINAL = 0x18;
const int VK_HANJA = 0x19;
const int VK_KANJI = 0x19;
const int VK_ESCAPE = 0x1B;
const int VK_CONVERT = 0x1C;
const int VK_NONCONVERT = 0x1D;
const int VK_ACCEPT = 0x1E;
const int VK_MODECHANGE = 0x1F;
const int VK_SPACE = 0x20;
const int VK_PRIOR = 0x21;
const int VK_NEXT = 0x22;
const int VK_END = 0x23;
const int VK_HOME = 0x24;
const int VK_LEFT = 0x25;
const int VK_UP = 0x26;
const int VK_RIGHT = 0x27;
const int VK_DOWN = 0x28;
const int VK_SELECT = 0x29;
const int VK_PRINT = 0x2A;
const int VK_EXECUTE = 0x2B;
const int VK_SNAPSHOT = 0x2C;
const int VK_INSERT = 0x2D;
const int VK_DELETE = 0x2E;
const int VK_HELP = 0x2F;
const int VK_0 = 0x30;
const int VK_1 = 0x31;
const int VK_2 = 0x32;
const int VK_3 = 0x33;
const int VK_4 = 0x34;
const int VK_5 = 0x35;
const int VK_6 = 0x36;
const int VK_7 = 0x37;
const int VK_8 = 0x38;
const int VK_9 = 0x39;
const int VK_A = 0x41;
const int VK_B = 0x42;
const int VK_C = 0x43;
const int VK_D = 0x44;
const int VK_E = 0x45;
const int VK_F = 0x46;
const int VK_G = 0x47;
const int VK_H = 0x48;
const int VK_I = 0x49;
const int VK_J = 0x4A;
const int VK_K = 0x4B;
const int VK_L = 0x4C;
const int VK_M = 0x4D;
const int VK_N = 0x4E;
const int VK_O = 0x4F;
const int VK_P = 0x50;
const int VK_Q = 0x51;
const int VK_R = 0x52;
const int VK_S = 0x53;
const int VK_T = 0x54;
const int VK_U = 0x55;
const int VK_V = 0x56;
const int VK_W = 0x57;
const int VK_X = 0x58;
const int VK_Y = 0x59;
const int VK_Z = 0x5A;
const int VK_LWIN = 0x5B;
const int VK_RWIN = 0x5C;
const int VK_APPS = 0x5D;
const int VK_POWER = 0x5E;
const int VK_SLEEP = 0x5F;
const int VK_NUMPAD0 = 0x60;
const int VK_NUMPAD1 = 0x61;
const int VK_NUMPAD2 = 0x62;
const int VK_NUMPAD3 = 0x63;
const int VK_NUMPAD4 = 0x64;
const int VK_NUMPAD5 = 0x65;
const int VK_NUMPAD6 = 0x66;
const int VK_NUMPAD7 = 0x67;
const int VK_NUMPAD8 = 0x68;
const int VK_NUMPAD9 = 0x69;
const int VK_MULTIPLY = 0x6A;
const int VK_ADD = 0x6B;
const int VK_SEPARATOR = 0x6C;
const int VK_SUBTRACT = 0x6D;
const int VK_DECIMAL = 0x6E;
const int VK_DIVIDE = 0x6F;
const int VK_F1 = 0x70;
const int VK_F2 = 0x71;
const int VK_F3 = 0x72;
const int VK_F4 = 0x73;
const int VK_F5 = 0x74;
const int VK_F6 = 0x75;
const int VK_F7 = 0x76;
const int VK_F8 = 0x77;
const int VK_F9 = 0x78;
const int VK_F10 = 0x79;
const int VK_F11 = 0x7A;
const int VK_F12 = 0x7B;
const int VK_F13 = 0x7C;
const int VK_F14 = 0x7D;
const int VK_F15 = 0x7E;
const int VK_F16 = 0x7F;
const int VK_F17 = 0x80;
const int VK_F18 = 0x81;
const int VK_F19 = 0x82;
const int VK_F20 = 0x83;
const int VK_F21 = 0x84;
const int VK_F22 = 0x85;
const int VK_F23 = 0x86;
const int VK_F24 = 0x87;
const int VK_NUMLOCK = 0x90;
const int VK_SCROLL = 0x91;
const int VK_RSHIFT = 0xA1;
const int VK_BROWSER_BACK = 0xA6;
const int VK_BROWSER_FORWARD = 0xA7;
const int VK_BROWSER_REFRESH = 0xA8;
const int VK_BROWSER_STOP = 0xA9;
const int VK_BROWSER_SEARCH = 0xAA;
const int VK_BROWSER_FAVORITES = 0xAB;
const int VK_BROWSER_HOME = 0xAC;
const int VK_VOLUME_MUTE = 0xAD;
const int VK_VOLUME_DOWN = 0xAE;
const int VK_VOLUME_UP = 0xAF;
const int VK_MEDIA_NEXT_TRACK = 0xB0;
const int VK_MEDIA_PREV_TRACK = 0xB1;
const int VK_MEDIA_STOP = 0xB2;
const int VK_MEDIA_PLAY_PAUSE = 0xB3;
const int VK_LAUNCH_MAIL = 0xB4;
const int VK_LAUNCH_MEDIA_SELECT = 0xB5;
const int VK_LAUNCH_APP1 = 0xB6;
const int VK_LAUNCH_APP2 = 0xB7;
const int VK_PROCESSKEY = 0xE5;
const int VK_PACKET = 0xE7;
const int VK_ATTN = 0xF6;
const int VK_CRSEL = 0xF7;
const int VK_EXSEL = 0xF8;
const int VK_EREOF = 0xF9;
const int VK_PLAY = 0xFA;
const int VK_ZOOM = 0xFB;
const int VK_NONAME = 0xFC;
const int VK_PA1 = 0xFD;
const int VK_OEM_CLEAR = 0xFE;
const int VK_TAB = 0x09;
const int VK_SHIFT = 0x10;
const int VK_CONTROL = 0x11;
const int VK_MENU = 0x12;
const int VK_LSHIFT = 0xA0;
const int VK_RMENU = 0xA5;
const int VK_LMENU = 0xA4;
const int VK_LCONTROL = 0xA2;
const int VK_RCONTROL = 0xA3;
const int VK_LBUTTON = 0x01;
const int VK_RBUTTON = 0x02;
const int VK_MBUTTON = 0x04;
const int VK_XBUTTON1 = 0x05;
const int VK_XBUTTON2 = 0x06;
const int VK_OEM_1 = 0xBA;
const int VK_OEM_PLUS = 0xBB;
const int VK_OEM_COMMA = 0xBC;
const int VK_OEM_MINUS = 0xBD;
const int VK_OEM_PERIOD = 0xBE;
const int VK_OEM_2 = 0xBF;
const int VK_OEM_3 = 0xC0;
const int VK_C1 = 0xC1; // ABNT_C1 (Brazilian)
const int VK_C2 = 0xC2; // ABNT_C2 (Brazilian)
const int VK_OEM_4 = 0xDB;
const int VK_OEM_5 = 0xDC;
const int VK_OEM_6 = 0xDD;
const int VK_OEM_7 = 0xDE;
const int VK_OEM_8 = 0xDF;
const int VK_OEM_AX = 0xE1;
const int VK_OEM_102 = 0xE2;
const int VK_OEM_RESET = 0xE9;
const int VK_OEM_JUMP = 0xEA;
const int VK_OEM_PA1 = 0xEB;
const int VK_OEM_PA2 = 0xEC;
const int VK_OEM_PA3 = 0xED;
const int VK_OEM_WSCTRL = 0xEE;
const int VK_OEM_CUSEL = 0xEF;
const int VK_OEM_ATTN = 0xF0;
const int VK_OEM_FINISH = 0xF1;
const int VK_OEM_COPY = 0xF2;
const int VK_OEM_AUTO = 0xF3;
const int VK_OEM_ENLW = 0xF4;
const int VK_OEM_BACKTAB = 0xF5;
switch (key)
{
case Key.Cancel:
return VK_CANCEL;
case Key.Back:
return VK_BACK;
case Key.Tab:
return VK_TAB;
case Key.Clear:
return VK_CLEAR;
case Key.Return:
return VK_RETURN;
case Key.Pause:
return VK_PAUSE;
case Key.Capital:
return VK_CAPITAL;
case Key.KanaMode:
return VK_KANA;
case Key.JunjaMode:
return VK_JUNJA;
case Key.FinalMode:
return VK_FINAL;
case Key.KanjiMode:
return VK_KANJI;
case Key.Escape:
return VK_ESCAPE;
case Key.ImeConvert:
return VK_CONVERT;
case Key.ImeNonConvert:
return VK_NONCONVERT;
case Key.ImeAccept:
return VK_ACCEPT;
case Key.ImeModeChange:
return VK_MODECHANGE;
case Key.Space:
return VK_SPACE;
case Key.Prior:
return VK_PRIOR;
case Key.Next:
return VK_NEXT;
case Key.End:
return VK_END;
case Key.Home:
return VK_HOME;
case Key.Left:
return VK_LEFT;
case Key.Up:
return VK_UP;
case Key.Right:
return VK_RIGHT;
case Key.Down:
return VK_DOWN;
case Key.Select:
return VK_SELECT;
case Key.Print:
return VK_PRINT;
case Key.Execute:
return VK_EXECUTE;
case Key.Snapshot:
return VK_SNAPSHOT;
case Key.Insert:
return VK_INSERT;
case Key.Delete:
return VK_DELETE;
case Key.Help:
return VK_HELP;
case Key.D0:
return VK_0;
case Key.D1:
return VK_1;
case Key.D2:
return VK_2;
case Key.D3:
return VK_3;
case Key.D4:
return VK_4;
case Key.D5:
return VK_5;
case Key.D6:
return VK_6;
case Key.D7:
return VK_7;
case Key.D8:
return VK_8;
case Key.D9:
return VK_9;
case Key.A:
return VK_A;
case Key.B:
return VK_B;
case Key.C:
return VK_C;
case Key.D:
return VK_D;
case Key.E:
return VK_E;
case Key.F:
return VK_F;
case Key.G:
return VK_G;
case Key.H:
return VK_H;
case Key.I:
return VK_I;
case Key.J:
return VK_J;
case Key.K:
return VK_K;
case Key.L:
return VK_L;
case Key.M:
return VK_M;
case Key.N:
return VK_N;
case Key.O:
return VK_O;
case Key.P:
return VK_P;
case Key.Q:
return VK_Q;
case Key.R:
return VK_R;
case Key.S:
return VK_S;
case Key.T:
return VK_T;
case Key.U:
return VK_U;
case Key.V:
return VK_V;
case Key.W:
return VK_W;
case Key.X:
return VK_X;
case Key.Y:
return VK_Y;
case Key.Z:
return VK_Z;
case Key.LWin:
return VK_LWIN;
case Key.RWin:
return VK_RWIN;
case Key.Apps:
return VK_APPS;
case Key.Sleep:
return VK_SLEEP;
case Key.NumPad0:
return VK_NUMPAD0;
case Key.NumPad1:
return VK_NUMPAD1;
case Key.NumPad2:
return VK_NUMPAD2;
case Key.NumPad3:
return VK_NUMPAD3;
case Key.NumPad4:
return VK_NUMPAD4;
case Key.NumPad5:
return VK_NUMPAD5;
case Key.NumPad6:
return VK_NUMPAD6;
case Key.NumPad7:
return VK_NUMPAD7;
case Key.NumPad8:
return VK_NUMPAD8;
case Key.NumPad9:
return VK_NUMPAD9;
case Key.Multiply:
return VK_MULTIPLY;
case Key.Add:
return VK_ADD;
case Key.Separator:
return VK_SEPARATOR;
case Key.Subtract:
return VK_SUBTRACT;
case Key.Decimal:
return VK_DECIMAL;
case Key.Divide:
return VK_DIVIDE;
case Key.F1:
return VK_F1;
case Key.F2:
return VK_F2;
case Key.F3:
return VK_F3;
case Key.F4:
return VK_F4;
case Key.F5:
return VK_F5;
case Key.F6:
return VK_F6;
case Key.F7:
return VK_F7;
case Key.F8:
return VK_F8;
case Key.F9:
return VK_F9;
case Key.F10:
return VK_F10;
case Key.F11:
return VK_F11;
case Key.F12:
return VK_F12;
case Key.F13:
return VK_F13;
case Key.F14:
return VK_F14;
case Key.F15:
return VK_F15;
case Key.F16:
return VK_F16;
case Key.F17:
return VK_F17;
case Key.F18:
return VK_F18;
case Key.F19:
return VK_F19;
case Key.F20:
return VK_F20;
case Key.F21:
return VK_F21;
case Key.F22:
return VK_F22;
case Key.F23:
return VK_F23;
case Key.F24:
return VK_F24;
case Key.NumLock:
return VK_NUMLOCK;
case Key.Scroll:
return VK_SCROLL;
case Key.LeftShift:
return VK_LSHIFT;
case Key.RightShift:
return VK_RSHIFT;
case Key.LeftCtrl:
return VK_LCONTROL;
case Key.RightCtrl:
return VK_RCONTROL;
case Key.LeftAlt:
return VK_LMENU;
case Key.RightAlt:
return VK_RMENU;
case Key.BrowserBack:
return VK_BROWSER_BACK;
case Key.BrowserForward:
return VK_BROWSER_FORWARD;
case Key.BrowserRefresh:
return VK_BROWSER_REFRESH;
case Key.BrowserStop:
return VK_BROWSER_STOP;
case Key.BrowserSearch:
return VK_BROWSER_SEARCH;
case Key.BrowserFavorites:
return VK_BROWSER_FAVORITES;
case Key.BrowserHome:
return VK_BROWSER_HOME;
case Key.VolumeMute:
return VK_VOLUME_MUTE;
case Key.VolumeDown:
return VK_VOLUME_DOWN;
case Key.VolumeUp:
return VK_VOLUME_UP;
case Key.MediaNextTrack:
return VK_MEDIA_NEXT_TRACK;
case Key.MediaPreviousTrack:
return VK_MEDIA_PREV_TRACK;
case Key.MediaStop:
return VK_MEDIA_STOP;
case Key.MediaPlayPause:
return VK_MEDIA_PLAY_PAUSE;
case Key.LaunchMail:
return VK_LAUNCH_MAIL;
case Key.SelectMedia:
return VK_LAUNCH_MEDIA_SELECT;
case Key.LaunchApplication1:
return VK_LAUNCH_APP1;
case Key.LaunchApplication2:
return VK_LAUNCH_APP2;
case Key.OemSemicolon:
return VK_OEM_1;
case Key.OemPlus:
return VK_OEM_PLUS;
case Key.OemComma:
return VK_OEM_COMMA;
case Key.OemMinus:
return VK_OEM_MINUS;
case Key.OemPeriod:
return VK_OEM_PERIOD;
case Key.OemQuestion:
return VK_OEM_2;
case Key.OemTilde:
return VK_OEM_3;
case Key.AbntC1:
return VK_C1;
case Key.AbntC2:
return VK_C2;
case Key.OemOpenBrackets:
return VK_OEM_4;
case Key.OemPipe:
return VK_OEM_5;
case Key.OemCloseBrackets:
return VK_OEM_6;
case Key.OemQuotes:
return VK_OEM_7;
case Key.Oem8:
return VK_OEM_8;
case Key.OemBackslash:
return VK_OEM_102;
case Key.ImeProcessed:
return VK_PROCESSKEY;
case Key.OemAttn:
return VK_OEM_ATTN; // VK_DBE_ALPHANUMERIC
case Key.OemFinish:
return VK_OEM_FINISH; // VK_DBE_KATAKANA
case Key.OemCopy:
return VK_OEM_COPY; // VK_DBE_HIRAGANA
case Key.OemAuto:
return VK_OEM_AUTO; // VK_DBE_SBCSCHAR
case Key.OemEnlw:
return VK_OEM_ENLW; // VK_DBE_DBCSCHAR
case Key.OemBackTab:
return VK_OEM_BACKTAB; // VK_DBE_ROMAN
case Key.Attn:
return VK_ATTN; // VK_DBE_NOROMAN
case Key.CrSel:
return VK_CRSEL; // VK_DBE_ENTERWORDREGISTERMODE
case Key.ExSel:
return VK_EXSEL; // VK_DBE_ENTERIMECONFIGMODE
case Key.EraseEof:
return VK_EREOF; // VK_DBE_FLUSHSTRING
case Key.Play:
return VK_PLAY; // VK_DBE_CODEINPUT
case Key.Zoom:
return VK_ZOOM; // VK_DBE_NOCODEINPUT
case Key.NoName:
return VK_NONAME; // VK_DBE_DETERMINESTRING
case Key.Pa1:
return VK_PA1; // VK_ENTERDLGCONVERSIONMODE
case Key.OemClear:
return VK_OEM_CLEAR;
case Key.DeadCharProcessed:
return 0; // There is no Win32 VKey for this.
default:
return 0;
}
}
}
}
@@ -1,209 +0,0 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace CefNet.Internal
{
internal sealed class MenuModel
{
private sealed class MenuModelItem
{
public int Command;
public string Label;
public CefMenuItemType Type;
public int Group;
public bool Visible;
public bool Enabled;
public bool Checked;
public CefColor[] Colors;
public Accelerator Accelerator;
public MenuModel SubMenu;
}
private sealed class Accelerator
{
public int KeyCode;
public bool Alt;
public bool Shift;
public bool Ctrl;
}
private MenuModelItem[] _items;
private MenuModel(MenuModelItem[] items)
{
_items = items;
}
public static MenuModel FromCefMenu(CefMenuModel model)
{
var items = new MenuModelItem[model.Count];
CopyItems(model, items);
return new MenuModel(items);
}
private static void CopyItems(CefMenuModel model, MenuModelItem[] dest)
{
for (int i = 0; i < dest.Length; i++)
{
var item = new MenuModelItem
{
Command = model.GetCommandIdAt(i),
Label = model.GetLabelAt(i),
Type = model.GetTypeAt(i),
Group = model.GetGroupIdAt(i),
Visible = model.IsVisibleAt(i),
Enabled = model.IsEnabledAt(i),
Checked = model.IsCheckedAt(i),
};
CefColor color = default;
item.Colors = new CefColor[(int)CefMenuColorType.Count];
for (int j = 0; j < item.Colors.Length; j++)
{
item.Colors[j] = model.GetColorAt(i, (CefMenuColorType)j, ref color) ? color : default;
}
int keycode = 0, alt = 0, ctrl = 0, shift = 0;
if (model.GetAcceleratorAt(i, ref keycode, ref shift, ref ctrl, ref alt))
{
item.Accelerator = new Accelerator { KeyCode = keycode, Alt = alt != 0, Ctrl = ctrl != 0, Shift = shift != 0 };
}
if (item.Type == CefMenuItemType.Submenu)
{
CefMenuModel submenu = model.GetSubMenuAt(i);
var items = new MenuModelItem[submenu.Count];
CopyItems(submenu, items);
item.SubMenu = new MenuModel(items) { IsSubMenu = true };
}
dest[i] = item;
}
}
/// <summary>
/// Returns true if this menu is a submenu.
/// </summary>
public bool IsSubMenu { get; private set; }
/// <summary>
/// Returns the number of items in this menu.
/// </summary>
public int Count
{
get { return _items.Length; }
}
/// <summary>
/// Returns the command id at the specified |index| or -1 if not found due to
/// invalid range or the index being a separator.
/// </summary>
public int GetCommandIdAt(int index)
{
return _items[index].Command;
}
/// <summary>
/// Returns the label at the specified |index| or NULL if not found due to
/// invalid range or the index being a separator.
/// The resulting string must be freed by calling cef_string_userfree_free().
/// </summary>
public string GetLabelAt(int index)
{
return _items[index].Label;
}
/// <summary>
/// Returns the item type at the specified |index|.
/// </summary>
public CefMenuItemType GetTypeAt(int index)
{
return _items[index].Type;
}
/// <summary>
/// Returns the group id at the specified |index| or -1 if invalid.
/// </summary>
public int GetGroupIdAt(int index)
{
return _items[index].Group;
}
/// <summary>
/// Returns the submenu at the specified |index| or NULL if invalid.
/// </summary>
public MenuModel GetSubMenuAt(int index)
{
return _items[index].SubMenu;
}
/// <summary>
/// Returns true if the specified |index| is visible.
/// </summary>
public bool IsVisibleAt(int index)
{
return _items[index].Visible;
}
/// <summary>
/// Returns true if the specified |index| is enabled.
/// </summary>
public bool IsEnabledAt(int index)
{
return _items[index].Enabled;
}
/// <summary>
/// Returns true if the specified |index| is checked. Only applies to check
/// and radio items.
/// </summary>
public bool IsCheckedAt(int index)
{
return _items[index].Checked;
}
/// <summary>
/// Returns true if the specified |index| has a keyboard accelerator
/// assigned.
/// </summary>
public bool HasAcceleratorAt(int index)
{
return _items[index].Accelerator != null;
}
/// <summary>
/// Retrieves the keyboard accelerator for the specified |index|. Returns true on success.
/// </summary>
public bool GetAcceleratorAt(int index, out int keyCode, out bool shift, out bool ctrl, out bool alt)
{
Accelerator accelerator = _items[index].Accelerator;
if (accelerator == null)
{
keyCode = 0;
shift = false;
ctrl = false;
alt = false;
return false;
}
keyCode = accelerator.KeyCode;
shift = accelerator.Shift;
ctrl = accelerator.Ctrl;
alt = accelerator.Alt;
return true;
}
/// <summary>
/// Returns in |color| the color that was explicitly set for |command_id| and
/// |color_type|. Specify an |index| value of -1 to return the default color in
/// |color|. If a color was not set then 0 will be returned in |color|. Returns
/// true on success.
/// </summary>
public bool GetColorAt(int index, CefMenuColorType colorType, out CefColor color)
{
color = _items[index].Colors[(int)colorType];
return color != 0;
}
}
}
@@ -1,234 +0,0 @@
using System;
using System.Buffers;
using System.Collections.Generic;
using System.IO;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading;
using Avalonia;
using Avalonia.Media;
using Avalonia.Media.Imaging;
using Avalonia.Platform;
using CefNet.Avalonia;
namespace CefNet.Internal
{
public sealed class OffscreenGraphics
{
private class PixelBuffer : IDisposable
{
public byte[] DIB;
private List<CefRect> _dirtyRects = new List<CefRect>();
public int Width;
public int Height;
public WriteableBitmap Surface;
public PixelBuffer(int width, int height)
{
this.Width = width;
this.Height = height;
this.DIB = ArrayPool<byte>.Shared.Rent(width * height * 4);
}
~PixelBuffer()
{
Dispose(false);
}
private void Dispose(bool disposing)
{
byte[] buffer = Interlocked.Exchange(ref DIB, null);
if (buffer != null)
{
ArrayPool<byte>.Shared.Return(buffer);
}
}
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
public int Stride
{
get { return Width * 4; }
}
public int Size
{
get
{
return Width * Height * 4;
}
}
public void AddDirtyRects(CefRect[] dirtyRects)
{
_dirtyRects.AddRange(dirtyRects);
}
//public Int32Rect GetDirtyRectangle()
//{
// if (_dirtyRects.Count == 0)
// return new Int32Rect();
// CefRect r = _dirtyRects[0];
// Int32Rect dirtyRect = new Int32Rect(r.X, r.Y, r.Width, r.Height);
// for (int i = 1; i < _dirtyRects.Count; i++)
// {
// dirtyRect.Union(_dirtyRects[i]);
// }
// return dirtyRect;
//}
public void ClearDirtyRectangle()
{
_dirtyRects.Clear();
}
}
private PixelBuffer ViewPixels;
private PixelBuffer PopupPixels;
private readonly object _syncRoot;
private CefRect _bounds;
private CefRect _popupBounds;
public OffscreenGraphics()
{
_syncRoot = new object();
_bounds = new CefRect(0, 0, 1, 1);
}
public static DpiScale DpiScale { get; set; } = new DpiScale(1, 1);
public void SetLocation(int x, int y)
{
_bounds.X = x;
_bounds.Y = y;
}
public bool SetSize(int width, int height)
{
width = Math.Max(width, 1);
height = Math.Max(height, 1);
_bounds.Width = width;
_bounds.Height = height;
lock (_syncRoot)
{
return ViewPixels == null || ViewPixels.Width != width || ViewPixels.Height != height;
}
}
public CefRect GetBounds()
{
return _bounds;
}
public void Draw(CefPaintEventArgs e)
{
lock (_syncRoot)
{
PixelBuffer pixelBuffer;
if (e.PaintElementType == CefPaintElementType.View)
{
if (ViewPixels == null || ViewPixels.Width != e.Width || ViewPixels.Height != e.Height)
{
if (ViewPixels != null)
ViewPixels.Dispose();
ViewPixels = new PixelBuffer(e.Width, e.Height);
}
pixelBuffer = ViewPixels;
}
else if(e.PaintElementType == CefPaintElementType.Popup)
{
if (PopupPixels == null || PopupPixels.Width != e.Width || PopupPixels.Height != e.Height)
{
if (PopupPixels != null)
PopupPixels.Dispose();
PopupPixels = new PixelBuffer(e.Width, e.Height);
}
pixelBuffer = PopupPixels;
}
else
{
return;
}
Marshal.Copy(e.Buffer, pixelBuffer.DIB, 0, pixelBuffer.Size);
pixelBuffer.AddDirtyRects(e.DirtyRects);
}
}
public unsafe void Render(DrawingContext drawingContext)
{
lock (_syncRoot)
{
if (ViewPixels != null)
{
PixelSize pixelSize;
WriteableBitmap surface;
surface = GetSurface(ViewPixels);
pixelSize = surface.PixelSize;
drawingContext.DrawImage(surface, new Rect(0, 0, pixelSize.Width, pixelSize.Height), new Rect(surface.Size));
PixelBuffer pixelBuffer = PopupPixels;
if (pixelBuffer == null)
return;
surface = GetSurface(pixelBuffer);
Size size = surface.Size;
pixelSize = surface.PixelSize;
drawingContext.DrawImage(surface,
new Rect(0, 0, pixelSize.Width, pixelSize.Height),
new Rect(_popupBounds.X, _popupBounds.Y, size.Width, size.Height));
}
}
}
private WriteableBitmap GetSurface(PixelBuffer pixelBuffer)
{
if (!Monitor.IsEntered(_syncRoot))
throw new InvalidOperationException();
WriteableBitmap surface = pixelBuffer.Surface;
if (surface is null || surface.PixelSize != new PixelSize(pixelBuffer.Width, pixelBuffer.Height))
{
surface?.Dispose();
surface = new WriteableBitmap(new PixelSize(pixelBuffer.Width, pixelBuffer.Height), OffscreenGraphics.DpiScale.Dpi, PixelFormat.Bgra8888, AlphaFormat.Premul);
pixelBuffer.Surface = surface;
}
using (ILockedFramebuffer frameBuffer = surface.Lock())
{
Marshal.Copy(pixelBuffer.DIB, 0, frameBuffer.Address, pixelBuffer.Size);
pixelBuffer.ClearDirtyRectangle();
}
return surface;
}
public void SetPopup(PopupShowEventArgs e)
{
if (e.Visible)
{
_popupBounds = e.Bounds;
}
else
{
lock (_syncRoot)
{
PopupPixels?.Dispose();
PopupPixels = null;
}
}
}
}
}
@@ -1,91 +0,0 @@
using System;
using System.ComponentModel;
using System.Runtime.ConstrainedExecution;
using System.Runtime.InteropServices;
using CefNet.WinApi;
namespace CefNet.Internal
{
internal delegate IntPtr WindowsWindowProcDelegate(IntPtr hwnd, int message, IntPtr wParam, IntPtr lParam, ref bool handled);
internal sealed class WindowsHwndSource : CriticalFinalizerObject, IDisposable
{
private delegate IntPtr WindowProc(IntPtr hwnd, int message, IntPtr wParam, IntPtr lParam);
private bool _disposed;
private IntPtr hWndProcHook;
private readonly WindowProc fnWndProcHook;
public static WindowsHwndSource FromHwnd(IntPtr hwnd)
{
const int GWLP_WNDPROC = -4;
uint tid = NativeMethods.GetWindowThreadProcessId(hwnd, IntPtr.Zero);
if (tid == 0)
throw new Win32Exception(Marshal.GetLastWin32Error());
var source = new WindowsHwndSource(hwnd);
source.hWndProcHook = NativeMethods.SetWindowLong(hwnd, GWLP_WNDPROC, Marshal.GetFunctionPointerForDelegate(source.fnWndProcHook));
if (source.hWndProcHook == IntPtr.Zero)
throw new Win32Exception(Marshal.GetLastWin32Error());
return source;
}
private WindowsHwndSource(IntPtr hwnd)
{
hWndProcHook = IntPtr.Zero;
this.Handle = hwnd;
fnWndProcHook = new WindowProc(WndProcHook);
}
~WindowsHwndSource()
{
Dispose(false);
}
private void Dispose(bool disposing)
{
if (_disposed)
return;
if (hWndProcHook != IntPtr.Zero)
{
const int GWLP_WNDPROC = -4;
NativeMethods.SetWindowLong(this.Handle, GWLP_WNDPROC, hWndProcHook);
}
_disposed = true;
}
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
public IntPtr Handle { get; }
public WindowsWindowProcDelegate WndProcCallback { get; set; }
private unsafe IntPtr WndProcHook(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam)
{
IntPtr retval = IntPtr.Zero;
WindowsWindowProcDelegate wndproc = this.WndProcCallback;
if (wndproc != null)
{
bool handled = false;
retval = wndproc(hwnd, msg, wParam, lParam, ref handled);
if (handled)
return retval;
}
return NativeMethods.CallWindowProc(hWndProcHook, hwnd, msg, wParam, lParam);
}
}
}
@@ -1,51 +0,0 @@
using Avalonia.Interactivity;
using System;
using System.Collections.Generic;
using System.Text;
namespace CefNet.Avalonia
{
/// <summary>
/// Provides data for the <see cref="WebView.StartDragging"/> event.
/// </summary>
public class StartDraggingEventArgs : RoutedEventArgs
{
/// <summary>
/// Initializes a new instance of the <see cref="StartDraggingEventArgs"/> class.
/// </summary>
/// <param name="source"></param>
/// <param name="data">The data associated with this event.</param>
/// <param name="allowedOps">Drag-and-drop operations which allowed by the source of the drag event.</param>
/// <param name="x">The X-location in screen coordinates.</param>
/// <param name="y">The Y-location in screen coordinates.</param>
public StartDraggingEventArgs(CefDragData data, CefDragOperationsMask allowedOps, int x, int y)
: base(WebView.StartDraggingEvent)
{
this.Data = data;
this.AllowedEffects = allowedOps;
this.X = x;
this.Y = y;
}
/// <summary>
/// The contextual information about the dragged content.
/// </summary>
public CefDragData Data { get; }
/// <summary>
/// Gets which drag-and-drop operations are allowed by the originator (or source) of the drag event.
/// </summary>
public CefDragOperationsMask AllowedEffects { get; }
/// <summary>
/// Gets the X-location of the mouse pointer in screen coordinates.
/// </summary>
public int X { get; }
/// <summary>
/// Gets the Y-location of the mouse pointer in screen coordinates.
/// </summary>
public int Y { get; }
}
}
File diff suppressed because it is too large Load Diff
@@ -1,14 +0,0 @@
using System;
using System.Runtime.InteropServices;
namespace CefNet.WinApi
{
[StructLayout(LayoutKind.Sequential)]
internal struct CWPSTRUCT
{
public IntPtr lParam;
public IntPtr wParam;
public int message;
public IntPtr hwnd;
}
}
@@ -1,45 +0,0 @@
using System;
using System.Collections.Generic;
using System.Runtime.InteropServices;
using System.Text;
namespace CefNet.WinApi
{
static class NativeMethods
{
[DllImport("user32.dll")]
public static extern IntPtr GetKeyboardLayout(uint idThread);
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
public static extern IntPtr ActivateKeyboardLayout(IntPtr hkl, int flags);
[DllImport("user32.dll", EntryPoint = "VkKeyScanW", CharSet = CharSet.Unicode, SetLastError = true)]
public static extern ushort VkKeyScan(char ch);
public static IntPtr SetWindowLong(IntPtr hWnd, int nIndex, IntPtr dwNewLong)
{
if (IntPtr.Size == 8)
return SetWindowLongPtr64(hWnd, nIndex, dwNewLong);
else
return new IntPtr(SetWindowLong32(hWnd, nIndex, dwNewLong.ToInt32()));
}
[DllImport("user32.dll", EntryPoint = "SetWindowLong", CharSet = CharSet.Auto, SetLastError = true)]
private static extern int SetWindowLong32(IntPtr hWnd, int nIndex, int dwNewLong);
[DllImport("user32.dll", EntryPoint = "SetWindowLongPtr", CharSet = CharSet.Auto, SetLastError = true)]
private static extern IntPtr SetWindowLongPtr64(IntPtr hWnd, int nIndex, IntPtr dwNewLong);
[DllImport("user32.dll", CharSet = CharSet.Auto)]
public static extern IntPtr CallWindowProc(IntPtr lpPrevWndFunc, IntPtr hWnd, int msg, IntPtr wParam, IntPtr lParam);
[DllImport("user32.dll", SetLastError = true)]
public static extern uint GetWindowThreadProcessId(IntPtr hWnd, IntPtr pPid);
[DllImport("Dwmapi.dll", CharSet = CharSet.Auto)]
public static unsafe extern int DwmGetWindowAttribute(IntPtr hwnd, DWMWINDOWATTRIBUTE attribute, void* value, int size);
[DllImport("Dwmapi.dll", CharSet = CharSet.Auto, PreserveSig = false)]
public static extern bool DwmIsCompositionEnabled();
}
}
@@ -1,20 +0,0 @@
using System;
using System.Collections.Generic;
using System.Runtime.InteropServices;
using System.Text;
namespace CefNet.WinApi
{
[StructLayout(LayoutKind.Sequential)]
internal struct WINDOWPOS
{
public IntPtr hwnd;
public IntPtr hwndInsertAfter;
public int x;
public int y;
public int cx;
public int cy;
public int flags;
}
}
@@ -1,22 +0,0 @@
namespace CefNet.WinApi
{
internal enum DWMWINDOWATTRIBUTE
{
NCRenderingEnabled = 1,
NCRenderingPolicy,
TransitionsForceDisabled,
AllowNCPaint,
CaptionButtonBounds,
NonClientRtlLayout,
ForceIconicRepresentation,
Flip3DPolicy,
ExtendedFrameBounds,
HasIconicBitmap,
DisallowPeek,
ExcludedFromPeek,
ExceludedFromPeek,
Cloak,
Cloaked,
FreezeRepresentation
}
}
@@ -1,42 +0,0 @@
#if AVALONIA
using Avalonia.Interactivity;
#elif WPF
using System.Windows;
#endif
#if AVALONIA
namespace CefNet.Avalonia
#elif WPF
namespace CefNet.Wpf
#endif
{
/// <summary>
/// Represents PDF printing results.
/// </summary>
public sealed class PdfPrintFinishedRoutedEventArgs : RoutedEventArgs, IPdfPrintFinishedEventArgs
{
/// <summary>
/// Initializes a new instance of the <see cref="PdfPrintFinishedEventArgs"/> class.
/// </summary>
/// <param name="path">The path to PDF file.</param>
/// <param name="success">A value which indicates that the PDF printing completed successfully.</param>
public PdfPrintFinishedRoutedEventArgs(string path, bool success)
: base(WebView.PdfPrintFinishedEvent)
{
this.Path = path;
this.Success = success;
}
/// <summary>
/// Gets the path to PDF file.
/// </summary>
public string Path { get; }
/// <summary>
/// Gets a value which indicates that the PDF printing completed successfully.
/// </summary>
/// <value></value>
public bool Success { get; }
}
}
@@ -1,81 +0,0 @@
#if AVALONIA
using Avalonia.Interactivity;
#elif WPF
using System.Windows;
#endif
using System;
#if AVALONIA
namespace CefNet.Avalonia
#elif WPF
namespace CefNet.Wpf
#endif
{
/// <summary>
/// Event args for the <see cref="IChromiumWebView.ScriptDialogOpening"/> event.
/// </summary>
public sealed class ScriptDialogOpeningRoutedEventArgs : RoutedEventArgs, IScriptDialogOpeningEventArgs
{
private readonly ScriptDialogDeferral _callback;
/// <summary>
/// Initializes a new instance of the <see cref="ScriptDialogOpeningEventArgs"/> class.
/// </summary>
/// <param name="originUrl">The URI of the page that requested the dialog box.</param>
/// <param name="kind">The kind of JavaScript dialog box.</param>
/// <param name="message">The message of the dialog box.</param>
/// <param name="defaultText">The default value to use for the result of the prompt JavaScript function.</param>
/// <param name="callback"></param>
public ScriptDialogOpeningRoutedEventArgs(string originUrl, ScriptDialogKind kind, string message, string defaultText, ScriptDialogDeferral callback)
: base(WebView.ScriptDialogOpeningEvent)
{
this.Uri = Uri.TryCreate(originUrl, UriKind.Absolute, out Uri uri) ? uri : null;
this.Kind = kind;
this.Message = message;
this.DefaultText = defaultText;
_callback = callback;
}
/// <summary>
/// Initializes a new instance of the <see cref="ScriptDialogOpeningEventArgs"/> class.
/// </summary>
/// <param name="kind">The kind of JavaScript dialog box.</param>
/// <param name="message">The message of the dialog box.</param>
/// <param name="reload">Indicates that the event is fired before page reloading.</param>
/// <param name="callback"></param>
public ScriptDialogOpeningRoutedEventArgs(string message, bool reload, ScriptDialogDeferral callback)
: base(WebView.ScriptDialogOpeningEvent)
{
this.Uri = null;
this.Kind = ScriptDialogKind.BeforeUnload;
this.Message = message;
this.IsReload = reload;
_callback = callback;
}
/// <inheritdoc/>
public Uri Uri { get; }
/// <inheritdoc/>
public ScriptDialogKind Kind { get; }
/// <inheritdoc/>
public string Message { get; }
/// <inheritdoc/>
public string DefaultText { get; }
/// <inheritdoc/>
public bool Suppress { get; set; }
/// <inheritdoc />
public bool IsReload { get; set; }
/// <inheritdoc/>
public ScriptDialogDeferral GetDeferral()
{
this.Handled = true;
return _callback;
}
}
}
@@ -1,39 +0,0 @@
#if AVALONIA
using Avalonia.Interactivity;
#elif WPF
using System.Windows;
#endif
#if AVALONIA
namespace CefNet.Avalonia
#elif WPF
namespace CefNet.Wpf
#endif
{
/// <summary>
/// Represents find results.
/// </summary>
public sealed class TextFoundRoutedEventArgs : RoutedEventArgs, ITextFoundEventArgs
{
public TextFoundRoutedEventArgs(int identifier, int count, CefRect selectionRect, int index, bool finalUpdate)
: base(WebView.TextFoundEvent)
{
this.ID = identifier;
this.Count = count;
this.SelectionRect = selectionRect;
this.Index = index;
this.FinalUpdate = finalUpdate;
}
public int ID { get; }
public int Index { get; }
public int Count { get; }
public CefRect SelectionRect { get; }
public bool FinalUpdate { get; }
}
}
File diff suppressed because it is too large Load Diff
-21
View File
@@ -1,21 +0,0 @@
MIT License
Copyright (c) 2020 CefNet
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
+7
View File
@@ -0,0 +1,7 @@
using System.Runtime.CompilerServices;
using static System.Properties.ThisAssembly;
[assembly: SuppressIldasm]
[assembly: InternalsVisibleTo("System.Application.SteamTools.Client" + PublicKey)]
[assembly: InternalsVisibleTo("System.Application.SteamTools.Client.Mobile" + PublicKey)]
[assembly: InternalsVisibleTo("System.Application.SteamTools.Client.Desktop" + PublicKey)]
Binary file not shown.
File diff suppressed because it is too large Load Diff
+44 -32
View File
@@ -1,41 +1,53 @@
# 前言
Steam++项目创建于2018年5月8日,不过并不是耗时三年才做出来,之前一直由于软软(软件原作者)的工作原因,并没有多少空闲时间,直到去年中旬软软辞职了,才开始猛肝。
去年年底发布了Steam++的第一个版本,受到了其乐广大用户的喜爱,并有了高达数百位网友的赞助支持。在此动力下,一直一个人更新维护到今年2月份。之后又找来几位朋友一起全职合作开发,并创立了我们自己的公司来进行运营这一产品。
在每人每天近16小时的高强度爆肝下,我们使用了最新的技术、最新的框架,将Steam++原先的代码全部重写,重新制作了UI。于是乎,Steam++2.0崭新出炉了。
Steam++目前处于一个完全开源的状态,所以对于软件报毒可以不用担心安全问题。我们也制作了自己的产品[官网](https://www.steampp.net),大家可以去官网下载到我们的工具。
Steam++是完全开源的,请不要在非官方渠道下载软件,对于软件报毒情况确实是误报问题。我们也制作了自己的产品[官网](https://www.steampp.net),大家可以去官网或者开源仓库地址下载。
# Steam++工具箱
## 更新内容
## 2.4.10更新内容
### 2.3.0
```
1. 改进 端口被占用检测进程名
2. 修复 部分 Toast 没有正确显示
3. 新增 账号注销功能
4. 改进 hosts 文件写入无权操作时显示的错误文本
5. 新增 快速登录后可绑定手机号
6. 新增 解绑快速登录账号
7. 新增 隐藏库存游戏
8. 新增 游戏功能-无边框窗口化
9. 新增 关于-更新日志
10. 新增 令牌加密设置,现在新增令牌默认将不启用本机加密
11. 修复 非正常退出程序时导致残留进程且无法启动程序
12. 改进 不再写入 C:\Users\用户名\AppData\Local 目录
13. 修复 文本框中某些符号可能无法正确输入
14. 改进 令牌排序上移下移
15. 新增 令牌导入导出
16. 新增 游戏时长挂机功能
17. 新增 Microsoft 账号快速登录与绑定
18. 新增 社区加速 hCaptcha 验证码 / EPIC 验证码 / artstation / v2ex
19. 修复 社区加速 discord 更新下载
### 新增内容
1. Linux/macOS 版本中的 CLR 升级至 .NET 6 Preview 7
2. Desktop 现已适配 WinUI 3 / Windows 11 / Fluent Design System 样式风格新UI
3. 新增 Android 上从图库选择二维码图片导入令牌
4. 新增 Android 上文件导入选择二维码图片导入令牌
5. 新增 Desktop 上现可刷新头像
6. 新增 UI设置-主题色设置
7. 新增 UI设置-自定义背景图片设置
```
### 修复问题
1. 修复 Desktop 上账号切换功能
2. 改进 Desktop 上受保护的成就不在支持勾选
3. 修复 Linux 上因字体引发的启动时闪退
4. 修复 Android 上扫码导入功能
5. 修复 Android 上 Toast 不能正常显示
6. 改进 Android 上的令牌导入方式
7. 修复 Android 上导入带密码的令牌时不显示密码输入框
8. 修复 导入带密码的令牌时密码输入文本框窗口不能正确取消
9. 修复 Desktop 上使用火狐浏览器无法进行快速登录
10. 修复 Android 8.0 以下启动时闪退
11. 修复 Desktop 上部分用户库存游戏已安装游戏无法读取
12. 尝试修复 Windows 上托盘菜单有时无法打开窗口
13. 改进 Android 上确认交易页面上的显示隐藏逻辑
### 已知问题
- Desktop
- macOS
- 尚未公证,这会影响 macOS Catalina(版本 10.15)以上
- 某些窗口顶部会有两个标题栏
- 自动更新不可用
- Linux
- 托盘不生效,这将影响程序不能正常退出
- 窗口弹出位置不正确
- 自动更新不可用
- Shared
- 主题切换需重启软件后生效,且跟随系统暂不可用
- Mobile
- Android
- 本地令牌倒计时存在误差不够精确,可能导致令牌值不一致
- 确认交易列表刷新后数据显示不正确
- 自动更新暂不可用
***
## 工具介绍
@@ -96,7 +108,7 @@ Steam++目前处于一个完全开源的状态,所以对于软件报毒可以
### 6. 更新计划(画饼时间到)
我们预计会在6月份将推出本地挂卡、挂时长功能。并且同步推出iOS、安卓端App,用户可以利用手机查看多个账号的令牌,一键确认上架,并且支持手机挂卡。
#### 并且,以上功能全部免费!
#### 并且,以上功能全部免费。
------
+79 -28
View File
@@ -1,32 +1,83 @@
1. 修复 添加令牌时引发的闪退
2. CLR 升级至 .NET 6 Preview 4
3. 64 位程序支持,从此版本开始不再提供 32 位程序支持
4. CEF 升级至 90.6.3
5. 改进 程序目录结构,所有相关 dll 将放入 bin 文件夹中
6. 新增 全新的托盘菜单
7. 改进 隐藏游戏列表与挂机游戏列表实时刷新
8. 新增 JumpList 菜单切换账号
9. 修复 Win7 中右上角按钮样式错误
10. 改进 缓存获取加速项目数据,避免失败时无数据
11. 修复 手动检查更新时有概率出现两个新版本窗口
12. 改进 未使用社区加速时退出程序不再清理 hosts 文件
### 新增内容
1. 部分新增文本的其他语言翻译
| File | Checksum (SHA256) |
| ---- | ---- |
| Steam++_win_x64_v2.4.0.7z | SHA256 |
| Steam++_win_x64_v2.4.0.exe | SHA256 |
| Steam++_win_x64_v2.4.0.msix | SHA256 |
| Steam++_win_arm64_v2.4.0.7z | SHA256 |
| Steam++_win_arm64_v2.4.0.exe | SHA256 |
| Steam++_win_arm64_v2.4.0.msix | SHA256 |
| Steam++_linux_x64_v2.4.0.7z | SHA256 |
| Steam++_linux_x64_v2.4.0.deb | SHA256 |
| Steam++_macos_x64_v2.4.0.dmg | SHA256 |
| Steam++_macos_arm64_v2.4.0.dmg | SHA256 |
| Steam++_android_v2.4.0.apk | SHA256 |
| Steam++_android_arm64_v2.4.0.apk | SHA256 |
| Steam++_android_arm_v2.4.0.apk | SHA256 |
### 修复问题
1. 修复 Desktop 上因登录或注册后头像引发的无限闪退
2. 修复 Windows 上托盘菜单有时无法打开窗口
3. 改进 Desktop 上库存游戏右键菜单隐藏游戏项位置
4. 移除 Desktop 上菜单栏用户手机号显示
5. 修复 Desktop 上库存游戏中磁盘占用 UI 错位
6. 修复 Desktop 上快速登录等待中 UI 错位
7. 修复一些杂项问题,增强程序稳定性
### 已知问题
- Desktop
- macOS
- 尚未公证,这会影响 macOS Catalina(版本 10.15)以上
- 某些窗口顶部会有两个标题栏
- 自动更新不可用
- Linux
- 托盘不生效,这将影响程序不能正常退出
- 窗口弹出位置不正确
- 窗口顶部会有两个标题栏
- 自动更新不可用
- Shared
- 主题切换需重启软件后生效,且跟随系统暂不可用
- Mobile
- Android
- 本地令牌倒计时存在误差不够精确,可能导致令牌值不一致
- 确认交易列表刷新后数据显示不正确
- 自动更新暂不可用
***
由于程序体积较大,推荐从 [官网 https://steampp.net](https://steampp.net) 中下载
<!-- 1. 新增 ASF Plus 本地挂卡
3. 改进 新增守护进程,当程序闪退时将自动重启 -->
| RuntimeIdentifier | Available | Edition |
| ---- | ---- | ---- |
| win-x64 | ✅ | Stable |
| osx-x64 | ✅ | β |
| linux-x64 | ✅ | α |
| android-arm64 | ✅ | α |
| android-arm | ✅ | α |
| linux-arm64 | ✅ | α |
| linux-arm | ✅ | α |
| osx-arm64 | ❌ | |
| win-arm64 | ❌ | |
| ios-arm64 | ❌ | |
<!--
- macOS
- 如果你使用 ARM 芯片的 Mac(较为**稀有**),例如 **M1**,则下载文件名中带有 **macos_arm64** 的文件
- 如果你使用 Intel、AMD 芯片的 Mac(较为**普遍**),则下载文件名中带有 **macos_x64** 的文件
-->
## 下载指南
- Linux
- 如果你使用 Intel、AMD 芯片的 PC(较为**普遍**)则下载文件名中带有 **linux_x64** 的文件
- 如果你使用 ARM64 芯片的 PC(较为**稀有**)例如 **Raspberry Pi Model 3+**,则下载文件名中带有 **linux_arm64** 的文件
- 如果你使用 ARM 芯片的 PC(较为**稀有**)例如 **Raspberry Pi Model 2+**,则下载文件名中带有 **linux_arm** 的文件
- Android
- 如果你使用 ARM64 芯片的设备(较为**普遍**)则下载文件名中带有 **android_arm64_v8a** 的文件
- 如果你使用 ARM 芯片的设备(较为**稀有**)通常为 **14** 年下半年之前生产的设备,则下载文件名中带有 **android_armeabi_v7a** 的文件
| File | Checksum (SHA256) |
| ---- | ---- |
| Steam++_win_x64_v2.4.11.7z | SHA256 |
| Steam++_win_x64_v2.4.11.exe | SHA256 |
| | |
| Steam++_linux_x64_v2.4.11.7z | SHA256 |
| Steam++_linux_arm64_v2.4.11.7z | SHA256 |
| Steam++_linux_arm_v2.4.11.7z | SHA256 |
| | |
| Steam++_macos_x64_v2.4.11.dmg | SHA256 |
| Steam++_macos_x64_v2.4.11.app.zip | SHA256 |
| Steam++_macos_x64_v2.4.11.7z | SHA256 |
| | |
| Steam++_android_arm64_v8a_v2.4.11.apk | SHA256 |
| Steam++_android_armeabi_v7a_v2.4.11.apk | SHA256 |
<!-- ***
由于程序体积较大,推荐从 [官网 https://steampp.net](https://steampp.net) 中下载 -->
File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.
Binary file not shown.

Before

Width:  |  Height:  |  Size: 44 KiB

+5
View File
@@ -0,0 +1,5 @@
<svg id="abee0869-1b5a-43b0-ad2d-68b9c06591d9" data-name="steampp" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 151.22 160.98"><defs><style>.bee71911-c304-409c-b1a3-5c617b033d97{fill:#fff;}.e33bb62c-3cd8-43d8-b337-a8f898048f78{fill:url(#fe73b66f-3888-4385-9976-c891a0dc3db5);}.f52f40e5-9b40-42f3-ad92-92d8d45039d2{fill:url(#f2f22e4f-2cb9-40ee-9151-f69f4c5c4c7f);}</style><linearGradient id="fe73b66f-3888-4385-9976-c891a0dc3db5" x1="53.34" y1="148.33" x2="142.57" y2="59.1" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#1890de"/><stop offset="0.07" stop-color="#2195e1"/><stop offset="0.31" stop-color="#3ea3ea"/><stop offset="0.54" stop-color="#53adf1"/><stop offset="0.78" stop-color="#60b3f5"/><stop offset="1" stop-color="#64b5f6"/></linearGradient><linearGradient id="f2f22e4f-2cb9-40ee-9151-f69f4c5c4c7f" x1="162.65" y1="122.92" x2="85.29" y2="45.56" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#81c784"/><stop offset="0.1" stop-color="#6cb46f"/><stop offset="0.21" stop-color="#5ba55f"/><stop offset="0.34" stop-color="#519c55"/><stop offset="0.5" stop-color="#4e9952"/><stop offset="0.66" stop-color="#519c55"/><stop offset="0.79" stop-color="#5ba55f"/><stop offset="0.9" stop-color="#6cb46f"/><stop offset="1" stop-color="#81c784"/></linearGradient></defs>
<path class="e33bb62c-3cd8-43d8-b337-a8f898048f78" d="M121.28,180.51c-3.4,0-6.79,0-10.19,0a6.18,6.18,0,0,1-5.51-4.24c-1.45-5.21-2.87-10.43-4.4-15.61a2.41,2.41,0,0,0-1.43-1.38,77.05,77.05,0,0,1-15.07-6.87,20.55,20.55,0,0,1-2.74-1.69c-1-.8-1.7-.51-2.51.14-3.13,2.47-6.33,4.85-9.36,7.42A5,5,0,0,1,63,158c-2.76-2.7-5.35-5.57-8-8.39-3.37-3.56-6.74-7.12-10.07-10.72a5.91,5.91,0,0,1-.54-7.46c2.48-3.46,4.71-7.09,7.09-10.63a1.41,1.41,0,0,0,0-1.73,83.14,83.14,0,0,1-8.36-18.84,1.73,1.73,0,0,0-1-1q-6.65-1.92-13.33-3.71A5.63,5.63,0,0,1,24.42,90q0-10.2,0-20.4c0-2.64,1.36-4.09,4-4.2,4-.18,8.06-.3,12.1-.41a1.39,1.39,0,0,0,1.56-1.21,44.26,44.26,0,0,1,5.85-12.88,1.57,1.57,0,0,0-.08-2.12c-2.36-3.15-4.66-6.35-7-9.55a3.3,3.3,0,0,1,.77-4.92c4.07-2.86,8.21-5.65,12.23-8.59a4.94,4.94,0,0,1,5.68.09c3,2.3,6.11,4.49,9.08,6.84a2.64,2.64,0,0,0,2.74.5,47.44,47.44,0,0,1,12.43-2.3c.65,0,.94-.25,1-.89.08-.87.26-1.73.34-2.6.18-1.95.3-3.9.5-5.85a2.12,2.12,0,0,1,2.51-1.85,53.28,53.28,0,0,1,5.29.94c3.74.77,7.48,1.57,11.23,2.35a6.31,6.31,0,0,1,5.06,4.53c.84,2.57,1.74,5.13,2.77,7.63a4.14,4.14,0,0,0,1.72,1.64c1,.58,2.11.94,3.15,1.43a3.09,3.09,0,0,1,.67.59,2.63,2.63,0,0,1-.87.09,43.19,43.19,0,0,0-12-1.43c-8.59.2-16.54,2.49-23.3,8A34.77,34.77,0,0,0,71.26,60.66c-2.73,7.4-2.92,15-2,22.67a54.81,54.81,0,0,0,5.41,17.74c1.55,3.14,3.42,6.12,5.13,9.18.45.81.78.92,1.44.13,1.2-1.44,2.51-2.79,3.79-4.16a3.05,3.05,0,0,0,.89-2.37c-.3-6.14-.32-12.31-.94-18.43a6,6,0,0,1,1.88-5.23c4.11-4.46,8.16-9,12.2-13.48a3.3,3.3,0,0,1,2.57-1.18c5.19-.19,10.37-.49,15.56-.71,1.54-.07,2.25.33,2.46,1.69a3.24,3.24,0,0,1-.65,2.35c-4,4.49-8,8.9-12,13.31a1.39,1.39,0,0,0-.33,1.79c1.46,3.18,2.83,6.4,4.28,9.59a1.75,1.75,0,0,0,.88.84c3.38,1.18,6.79,2.31,10.18,3.47.75.26,1.18-.11,1.63-.62q5.73-6.36,11.48-12.68c.3-.32.55-.79.92-.92a4.94,4.94,0,0,1,2.31-.47,2,2,0,0,1,1.58,2.15c.17,3.23.31,6.46.49,9.69.12,2.11.33,4.22.38,6.33a2.87,2.87,0,0,1-.63,1.82q-7,7.84-14.14,15.58a2.57,2.57,0,0,1-1.21.64,7.13,7.13,0,0,1-1.54.17c-6.5.32-13,.63-19.5,1a2.29,2.29,0,0,0-1.43.66c-1.81,1.9-3.55,3.87-5.34,5.8-.7.75-.56,1.24.24,1.83a66.14,66.14,0,0,0,18.27,9.79,50.54,50.54,0,0,0,16.8,2.79c8.41-.07,16.16-2.26,22.88-7.5a34.86,34.86,0,0,0,11-15.07c.24-.6.56-1.15.85-1.72a8.81,8.81,0,0,1,.12,2c-.46,2.87-1,5.71-1.48,8.58a2,2,0,0,0,.37,1.4c2.55,3.37,5.12,6.73,7.74,10,1.93,2.45,2.53,4.88.8,7.78-2.64,4.4-5.06,8.94-7.63,13.38-1.26,2.17-3.18,2.53-5.25,1q-4.09-3-8.11-6.13c-3.2-2.49-3.16-2.49-6.44-.16a39.15,39.15,0,0,1-10.69,5.22,1.43,1.43,0,0,0-1.19,1.7c.14,4.67.12,9.35.37,14a4.3,4.3,0,0,1-4.55,4.62C127.85,180.37,124.56,180.51,121.28,180.51Z" transform="translate(-24.41 -19.59)"/>
<path class="f52f40e5-9b40-42f3-ad92-92d8d45039d2" d="M105.9,39.94a52.29,52.29,0,0,1,18.17,3.85,64.5,64.5,0,0,1,17.47,10.47,67.77,67.77,0,0,1,11,11.42,64.77,64.77,0,0,1,10.06,18.26,68.43,68.43,0,0,1,2.78,9.75,47.72,47.72,0,0,1,.23,16.69,35.77,35.77,0,0,1-7.11,16.37A30.1,30.1,0,0,1,143.14,137a42.13,42.13,0,0,1-12.28,1.72c-.16,0-.32,0-.47,0a1.78,1.78,0,0,1,.45-.28c1.95-.66,3.94-1.23,5.87-2A25.79,25.79,0,0,0,149.25,126a31.24,31.24,0,0,0,4.45-11.76,39.49,39.49,0,0,0,.29-11.78,49.28,49.28,0,0,0-3.15-12.35A58.94,58.94,0,0,0,140.6,72.89a61.58,61.58,0,0,0-14-12.39,53,53,0,0,0-15.64-6.79c-9-2.18-17.72-1.64-25.83,3.11a26.22,26.22,0,0,0-11.19,13C73.09,71.84,72.6,74,72,76c0,.17-.14.34-.2.51a1.55,1.55,0,0,1-.23-.6c.07-1.92.07-3.85.28-5.75A36.07,36.07,0,0,1,77,55a29.6,29.6,0,0,1,9.92-9.86A30.76,30.76,0,0,1,98.22,40.9C100.76,40.5,103.34,40.26,105.9,39.94Z" transform="translate(-24.41 -19.59)"/></svg>

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 628 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 948 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

+3 -5
View File
@@ -1,8 +1,6 @@
<Application xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'>
<VisualElements
ShowNameOnSquare150x150Logo='on'
Square150x150Logo='Assets\VisualElements_150.png'
Square70x70Logo='Assets\VisualElements_70.png'
ForegroundText='light'
BackgroundColor='#000000'/>
</Application>
Square150x150Logo='Assets\SteamPlusPlus.150x150.png'
Square70x70Logo='Assets\SteamPlusPlus.70x70.png'/>
</Application>

Some files were not shown because too many files have changed in this diff Show More