Compare commits

...
132 Commits
Author SHA1 Message Date
Aigio Liu 328bb390d7 release v2.2.0 2021-05-10 19:04:56 +08:00
Aigio Liu caf724b823 v2.2.0 2021-05-10 19:02:44 +08:00
Mossimo b14a98446c AddList 2021-05-10 09:24:35 +08:00
rmbgame cba194a185 忽略列表优化 2021-05-10 01:02:19 +08:00
rmbgame f5b2b67f0d 修复未启动steam状态加载游戏bug 2021-05-10 00:47:22 +08:00
rmbgame d2f1219847 toast只在当前激活窗口弹出 2021-05-10 00:43:53 +08:00
Aigio Liu 9de4e476d2 Add 7z, Fix Tool Projects 2021-05-09 23:55:37 +08:00
Aigio Liu 287652c461 VisualElementsManifest 2021-05-09 22:54:33 +08:00
Aigio Liu 63f605ca11 Fix CircleImageStream 2021-05-09 22:50:56 +08:00
rmbgame fea1fe66ae fix 2021-05-09 22:49:07 +08:00
rmbgame 4d5fcd42a9 fix 2021-05-09 22:49:07 +08:00
Aigio Liu 0be5854ffe v2.2.0 2021-05-09 22:12:05 +08:00
Aigio Liu 989952d12a Try Fix
System.ObjectDisposedException: ObjectDisposed_Generic
ObjectDisposed_ObjectName_Name, SslStream
   at System.Net.Security.SslStream.<ThrowIfExceptional>g__ThrowExceptional|137_0(ExceptionDispatchInfo e)
   at System.Net.Security.SslStream.get_SslProtocol()
   at System.Net.Http.HttpConnectionPool.GetHttp2ConnectionAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
2021-05-09 22:06:51 +08:00
Aigio Liu 2dfe428397 Fix 2021-05-09 21:44:56 +08:00
rmbgame ee872d3b98 update Avalonia nuget 2021-05-09 21:15:55 +08:00
rmbgame 3279633692 log 2021-05-09 20:52:31 +08:00
Aigio Liu 796cef01ff LoginUsingSteamClient 2021-05-09 19:49:33 +08:00
Aigio Liu 03c83f04a6 FastLoginOrRegister 2021-05-09 19:49:32 +08:00
rmbgame 048f8fdd65 fix 2021-05-09 02:29:20 +08:00
rmbgame a1dd6f04d7 快速登录新UI 2021-05-09 02:28:48 +08:00
rmbgame 99ea333e92 优化 SteamConnectService 初始化 2021-05-09 00:25:07 +08:00
Aigio Liu 7b7bda86ec TryFix WebView3 2021-05-09 00:21:17 +08:00
rmbgame 5d05765b52 fix local error 2021-05-08 23:09:06 +08:00
Aigio Liu 0a08621c22 Fix 2021-05-08 21:53:03 +08:00
Aigio Liu 69b3149b71 Fix 2021-05-08 21:38:18 +08:00
rmbgame da413be342 修复头像退出刷新问题
端口占用提示占用的进程
升级nuget包
2021-05-08 21:28:36 +08:00
Aigio Liu 4f6fb0ebc6 release v2.2.0 2021-05-08 20:39:50 +08:00
rmbgame d6051f1c4f read 2.20 2021-05-08 20:36:37 +08:00
Aigio Liu adbac2663b release v2.2 2021-05-08 20:24:20 +08:00
rmbgame 460775b7ee 修复steam登录账号头像显示问题 2021-05-08 20:09:48 +08:00
Aigio Liu a35e551fe9 fix #224 2021-05-08 19:50:01 +08:00
Aigio Liu ea237b84e1 fix #220 2021-05-08 10:36:49 +08:00
rmbgame 68340154f0 在删除时新增一个是否删除用户数据的提示 #165 2021-05-08 06:48:23 +08:00
rmbgame 6891fd4c0d commit test 2021-05-08 06:16:46 +08:00
rmbgame bf21f85bb0 优化代理速度
修复一些代理过程中产生的错误
2021-05-08 05:31:20 +08:00
rmbgame e513261507 更新库存游戏列表加载方式
修复潜在的闪退问题
2021-05-08 01:52:52 +08:00
Aigio Liu 43b6ad6544 UI Fix 2021-05-08 00:05:55 +08:00
Aigio Liu 93c8ebdbf4 update submodule 2021-05-07 23:46:36 +08:00
Aigio Liu 535e824032 改进 日志文件大小与数量 + UnifiedVersion 2021-05-07 23:36:29 +08:00
rmbgame 7f0361ae7d submodule 2021-05-07 23:07:47 +08:00
rmbgame 6a07bb4fd9 大量的窗口新增
进程操作修改
子模块更新
2021-05-07 23:07:47 +08:00
rmbgame 9faa8a8738 save 2021-05-07 23:07:47 +08:00
rmbgame 63ac0695bb update game laod action 2021-05-07 23:07:47 +08:00
Aigio Liu f1fd1cd42c 完成 Steam 一键快速登录 2021-05-07 18:00:05 +08:00
Aigio Liu 019b8e907f 改进 Hosts 操作提示文本
优化 代理服务中的潜在的空指针异常
2021-05-07 15:47:53 +08:00
Aigio Liu 0004c39f05 使用 IO.Pipes 代替 Runtime.Remoting 实现 IPC
实现 V1.X 中多开时显示第一个进程的主窗口
2021-05-07 14:59:50 +08:00
Aigio Liu c01031927e 改进 Steam 快速一键登录 70% 2021-05-07 00:11:03 +08:00
Aigio Liu 837b522170 修复 Steam 快速登录时候无法查看本地令牌 2021-05-07 00:11:02 +08:00
rmbgame 9921909559 修改账号切换ui错位问题
修改账号切换操作交互
添加关于内手动更新检测
修改更新弹窗为不绑定父窗口弹窗
2021-05-06 15:24:19 +08:00
rmbgame 2fdd78ce25 fix ui error 2021-05-06 15:24:08 +08:00
Mossimo 24faae27d6 fix bug 2021-05-06 00:25:42 +08:00
Mossimo 9306564fcf rm InitializeScriptList 2021-05-05 23:16:48 +08:00
Aigio Liu 152c60a9c3 fix ci 2021-05-05 21:53:33 +08:00
rmbgame 6581d67f14 update 2021-05-05 21:52:33 +08:00
Aigio Liu cc5b161d92 v2.1.0 2021-05-05 21:45:07 +08:00
Aigio Liu c1f9d31e6d update cmd 2021-05-05 21:34:03 +08:00
rmbgame 1d09ec05ec update ui 2021-05-05 21:07:38 +08:00
rmbgame 4ced8453cf update Avalonia package 2021-05-05 20:22:46 +08:00
rmbgame a9b6774210 用户steam头像 2021-05-05 19:33:44 +08:00
Aigio Liu cad359bd91 无手机号时隐藏换绑手机 2021-05-05 19:06:30 +08:00
Aigio Liu d2918a9221 Steam 快速登录 2021-05-05 18:35:23 +08:00
rmbgame 276aa4fe15 steam login ui 2021-05-05 18:29:09 +08:00
rmbgame 24e98078ef fix file error 2021-05-05 18:29:09 +08:00
rmbgame d75420f255 修复了多个导致闪退的错误 2021-05-05 15:38:03 +08:00
rmbgame 236ed0a5f8 fix proxy crash error 2021-05-05 15:38:03 +08:00
rmbgame f3033498fb merger 2021-05-05 04:02:02 +08:00
rmbgame f739a5f387 调整脚本列表UI 2021-05-05 03:59:25 +08:00
rmbgame 0f0f50dcd5 close #179 2021-05-05 03:59:25 +08:00
rmbgame 8f6d4378fa 新增背景透明度UI设置 2021-05-05 03:59:25 +08:00
rmbgame da7d5ec814 修复成就解锁窗口不显示的问题 2021-05-05 03:57:33 +08:00
Aigio Liu 171705992b fix macos ci 2021-05-05 02:05:31 +08:00
Aigio Liu 398282f656 Steam 登录状态 Cookie + WebView3 2021-05-05 01:56:31 +08:00
Mossimo 17261c7706 fix tipsmsg 2021-05-04 23:40:52 +08:00
Aigio Liu 2e99ac9899 改进 手机号码号段
改进 UA
2021-05-04 21:18:55 +08:00
Aigio Liu 51dd188141 Steam 快速登录 for WebView3 100% 2021-05-04 18:58:16 +08:00
Aigio Liu 49e5e56fb1 Update ScreenShorts 2021-05-04 12:19:49 +08:00
rmbgame dcea1c6fbc fix other Platform 2021-05-04 06:29:46 +08:00
Mossimo fd3a5129ca fix Gmjs repeat only one remove other 2021-05-04 06:23:26 +08:00
rmbgame a811e5e43a 修复系统关机时应正确关闭掉启用的windows代理 2021-05-04 06:22:38 +08:00
rmbgame 44c3c27315 Absolute path 2021-05-04 06:22:38 +08:00
Aigio Liu 7642eea09d 更正资源文本 2021-05-04 02:40:05 +08:00
Aigio Liu 997f9f9282 Steam 快速登录 95% 2021-05-04 02:30:05 +08:00
Aigio Liu 55067a198a 改进 自动更新 2021-05-04 00:27:29 +08:00
Mossimo 6fd5338f4c fix script Build 2021-05-03 23:48:09 +08:00
Mossimo ea277b218b sfix RefreshScriptItemButton 2021-05-03 23:01:04 +08:00
rmbgame 0f730aac10 没有启用加速也可开启加速单独启用脚本 2021-05-03 21:47:42 +08:00
Mossimo c51e85f52b fix post 2021-05-03 21:35:37 +08:00
Aigio Liu a5e6411afe 改进 当 hosts 文件不存在时自动创建空文件 2021-05-03 20:20:31 +08:00
rmbgame 94b602be26 修复脚本启用状态保存问题 2021-05-03 20:05:57 +08:00
Aigio Liu 572bca08fd Steam 快速登录 80%
即将发布 2.0.0.8
2021-05-03 19:50:09 +08:00
rmbgame 64531c40a1 ui 2021-05-03 16:18:16 +08:00
rmbgame f4c06016c9 ui 2021-05-03 15:57:26 +08:00
rmbgame 19073d111a ready 2021-05-03 15:57:26 +08:00
rmbgame 4a5cacb654 update window 2021-05-03 15:57:26 +08:00
rmbgame 9221e8d0b8 window Size and Position save 2021-05-03 03:27:15 +08:00
Aigio Liu c191ba851f fix warn 2021-05-03 00:56:54 +08:00
Aigio Liu ebc38453e4 DelAcc 2021-05-03 00:56:53 +08:00
Aigio Liu cd3783b864 进行中:Steam 快速登录 2 2021-05-02 23:13:35 +08:00
Mossimo 74fdd9f016 fix js build 2021-05-02 23:04:35 +08:00
Mossimo 731449a46e save 2021-05-02 21:00:10 +08:00
Mossimo 52485b5054 fix jsquery 2021-05-02 21:00:10 +08:00
rmbgame 9fd359c2cf fix 195 2021-05-02 20:33:33 +08:00
rmbgame 8fb9b12f3d fix account offine bug 2021-05-02 20:33:33 +08:00
Aigio Liu fb5aa30287 优化 WebView3 Loading 2021-05-02 19:04:43 +08:00
rmbgame ba1886758b fix proxy bug 2021-05-02 17:31:47 +08:00
rmbgame 5a9e264dda update image2 2021-05-02 17:10:30 +08:00
Aigio Liu dcc8fc04b2 进行中:Steam 快速登录 2021-05-02 14:51:50 +08:00
Aigio Liu 25aa1951e3 新增 WebView3 拦截 Rsp
修复 更新进度条值不正确
版本更变 2.0.0.8
2021-05-02 11:50:16 +08:00
rmbgame 84490ef9b6 fix windows proxy port check 2021-05-02 09:03:25 +08:00
rmbgame 92c358d81b 更改文件夹结构 2021-05-02 08:27:41 +08:00
Aigio Liu 42ae1038f1 fix droid test 2021-05-02 08:11:51 +08:00
Aigio Liu 37918501ab fix CI Build by Linux 2021-05-02 07:12:42 +08:00
Aigio L 0688e7d9a1 Update dotnet.yml 2021-05-02 07:03:56 +08:00
Aigio Liu efcc843557 fix Res by macOS 2021-05-02 06:58:35 +08:00
Aigio Liu 4a41ed7b9c res restore 2021-05-02 06:53:07 +08:00
Aigio Liu 2e7172e1c0 fix Res 2021-05-02 06:43:16 +08:00
Aigio L 7fa92ef55d Update dotnet.yml 2021-05-02 06:39:30 +08:00
Aigio Liu 6555d23e78 fix res 2021-05-02 06:33:54 +08:00
Aigio L a95403c958 Update dotnet.yml 2021-05-02 06:22:11 +08:00
Aigio Liu 8a60b0f91d add Linux.sln 2021-05-02 06:20:05 +08:00
Aigio L 70d33296ca Update dotnet.yml 2021-05-02 06:14:26 +08:00
Aigio L 73f80b6f0f Update dotnet.yml 2021-05-02 06:01:02 +08:00
Aigio L b1169a149e Update dotnet.yml 2021-05-02 05:53:42 +08:00
Aigio L 790dd18bb8 Update dotnet.yml 2021-05-02 05:48:37 +08:00
Aigio L 86ac7ad386 Update dotnet.yml 2021-05-02 05:44:07 +08:00
Aigio L 5310b5e1a5 Update dotnet.yml 2021-05-02 05:35:39 +08:00
Aigio L 6a4af4ab73 Update dotnet.yml 2021-05-02 05:32:17 +08:00
Aigio Liu 1846854759 2.0.0.7-beta
修复 主题跟随系统内嵌网页主题不正确
目标框架TFM 升级至 6.0 解决 Win7 上存在的一些兼容性问题
2021-05-01 19:47:02 +08:00
Aigio Liu b4158be5e8 修复 Hosts 文件操作 2021-05-01 16:22:39 +08:00
Aigio Liu 9a6e5bb323 add note 2021-05-01 15:27:37 +08:00
Aigio Liu 363fc9a440 修复 Hosts 文件服务
添加 打开桌面图标设置
2021-05-01 15:27:36 +08:00
Aigio Liu b19b5cf88f 改进 Hosts 操作重复项忽略
修复 Hosts 操作错误时不提示
改进 ServerApi 添加 Polly
改进 获取加速项目Api 使用 Polly
2021-05-01 14:05:32 +08:00
265 changed files with 11306 additions and 2658 deletions
+32 -10
View File
@@ -2,22 +2,27 @@ name: .NET
on:
push:
branches: [ master,develop ]
branches: [ master, develop ]
pull_request:
branches: [ master,develop ]
branches: [ master, develop ]
jobs:
build:
runs-on: windows-latest
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ windows-latest, macOS-latest, ubuntu-latest ]
steps:
- uses: actions/checkout@v2
- name: Setup .NET
- name: Setup .NET 5
uses: actions/setup-dotnet@v1
with:
dotnet-version: 5.0.x
- name: Setup .NET 6
uses: actions/setup-dotnet@v1
with:
dotnet-version: 6.0.100-preview.3.21202.5
- name: Checkout repository
uses: actions/checkout@v2
- name: Checkout submodules
@@ -25,15 +30,32 @@ jobs:
- name: dotnet info
run: dotnet --info
- name: dotnet restore
- name: dotnet restore SteamToolsV2+.sln
if: matrix.os == 'windows-latest'
run: dotnet restore ./SteamToolsV2+.sln
- name: dotnet restore SteamTools.Desktop.Linux.sln
if: matrix.os == 'ubuntu-latest'
run: dotnet restore ./SteamTools.Desktop.Linux.sln
- name: dotnet restore SteamTools.Desktop.Mac.sln
if: matrix.os == 'macOS-latest'
run: dotnet restore ./SteamTools.Desktop.Mac.sln
- name: dotnet AvaloniaApp build
run: dotnet build ./src/ST.Client.Desktop.Avalonia.App/ST.Client.Desktop.Avalonia.App.csproj
- name: dotnet CommonUnit build
run: dotnet build ./tests/Common.UnitTest/Common.UnitTest.csproj
- name: dotnet CommonUnit test
run: dotnet test ./tests/Common.UnitTest/Common.UnitTest.csproj
- name: dotnet ST.Client.UnitTest build
run: dotnet build ./tests/ST.Client.UnitTest/ST.Client.UnitTest.csproj
- name: dotnet ST.Client.Desktop.UnitTest build
run: dotnet build ./tests/ST.Client.Desktop.UnitTest/ST.Client.Desktop.UnitTest.csproj
- name: dotnet CommonUnit test
run: dotnet test ./tests/Common.UnitTest/Common.UnitTest.csproj
- name: dotnet ST.Client.UnitTest test
run: dotnet test ./tests/ST.Client.UnitTest/ST.Client.UnitTest.csproj
- name: dotnet ST.Client.Desktop.UnitTest test
if: matrix.os != 'windows-latest'
run: dotnet test ./tests/ST.Client.Desktop.UnitTest/ST.Client.Desktop.UnitTest.csproj
+5 -1
View File
@@ -4,7 +4,7 @@
「Steam++」is a toolkit that contains a variety of Steam tools, most of which require you to download and install Steam in order to use them.
![Release Download](https://img.shields.io/github/downloads/rmbadmin/SteamTools/latest/total?style=flat-square)
![Release Download](https://img.shields.io/github/downloads/rmbadmin/SteamTools/total?style=flat-square)
[![Release Version](https://img.shields.io/github/v/release/rmbadmin/SteamTools?style=flat-square)](https://github.com/rmbadmin/SteamTools/releases/latest)
[![GitHub license](https://img.shields.io/github/license/rmbadmin/SteamTools?style=flat-square)](LICENSE)
[![GitHub Star](https://img.shields.io/github/stars/rmbadmin/SteamTools?style=flat-square)](https://github.com/rmbadmin/SteamTools/stargazers)
@@ -19,10 +19,13 @@
[![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)
[![Build Status](https://img.shields.io/endpoint.svg?url=https%3A%2F%2Factions-badge.atrox.dev%2FSteamTools-Team%2FSteamTools%2Fbadge%3Fref%3Ddevelop&style=flat-square)](https://actions-badge.atrox.dev/SteamTools-Team/SteamTools/goto?ref=develop)
[![GitHub Star](https://img.shields.io/github/stars/rmbadmin/SteamTools.svg?style=social)](https://github.com/SteamTools-Team/SteamTools)
[![Gitee Star](https://gitee.com/rmbgame/SteamTools/badge/star.svg)](https://gitee.com/rmbgame/SteamTools)
</div>
<div align="center"><img src="./resources/screenshots.en.jpg" /></div>
English | [简体中文](./README.md)
## ✨ Functions
@@ -138,6 +141,7 @@ Read what we [milestones](https://github.com/SteamTools-Team/SteamTools/mileston
* [Swashbuckle.AspNetCore](https://github.com/domaindrivendev/Swashbuckle.AspNetCore)
* [AspNet.Security.OpenId.Providers](https://github.com/aspnet-contrib/AspNet.Security.OpenId.Providers)
* [CefNet](https://github.com/CefNet/CefNet)
* [CefSharp](https://github.com/cefsharp/CefSharp)
* [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)
+4 -2
View File
@@ -4,7 +4,7 @@
「Steam++」是一个包含多种Steam工具功能的工具箱,此工具的大部分功能都是需要您下载安装Steam才能使用。
![Release Download](https://img.shields.io/github/downloads/rmbadmin/SteamTools/latest/total?style=flat-square)
![Release Download](https://img.shields.io/github/downloads/rmbadmin/SteamTools/total?style=flat-square)
[![Release Version](https://img.shields.io/github/v/release/rmbadmin/SteamTools?style=flat-square)](https://github.com/rmbadmin/SteamTools/releases/latest)
[![GitHub license](https://img.shields.io/github/license/rmbadmin/SteamTools?style=flat-square)](LICENSE)
[![GitHub Star](https://img.shields.io/github/stars/rmbadmin/SteamTools?style=flat-square)](https://github.com/rmbadmin/SteamTools/stargazers)
@@ -19,9 +19,10 @@
[![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)
[![](https://img.shields.io/badge/QQ群-479036439-blue.svg?style=flat-square&color=12b7f5)](https://jq.qq.com/?_wv=1027&k=MWH729dD)
[![Build Status](https://img.shields.io/endpoint.svg?url=https%3A%2F%2Factions-badge.atrox.dev%2FSteamTools-Team%2FSteamTools%2Fbadge%3Fref%3Ddevelop&style=flat-square)](https://actions-badge.atrox.dev/SteamTools-Team/SteamTools/goto?ref=develop)
[![GitHub Star](https://img.shields.io/github/stars/rmbadmin/SteamTools.svg?style=social)](https://github.com/SteamTools-Team/SteamTools)
[![Gitee Star](https://gitee.com/rmbgame/SteamTools/badge/star.svg)](https://gitee.com/rmbgame/SteamTools)
[![](https://img.shields.io/badge/QQ群-479036439-blue.svg?style=flat-square&color=12b7f5)](https://jq.qq.com/?_wv=1027&k=MWH729dD)
</div>
<div align="center"><img src="./resources/screenshots.jpg" /></div>
@@ -152,6 +153,7 @@
* [Swashbuckle.AspNetCore](https://github.com/domaindrivendev/Swashbuckle.AspNetCore)
* [AspNet.Security.OpenId.Providers](https://github.com/aspnet-contrib/AspNet.Security.OpenId.Providers)
* [CefNet](https://github.com/CefNet/CefNet)
* [CefSharp](https://github.com/cefsharp/CefSharp)
* [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)
-125
View File
@@ -1,125 +0,0 @@
## 前言
### 发布至今
Steam++从去年年底12月18日发布了[第一个版本](https://keylol.com/t667906-1-1)至今,已经过去了3个多月。这段时间我肝代码肝的特别勤快,游戏也不咋玩了。在此是感谢keylol的各位老哥对我发布时的支持,发布后短短一天时间就加了1k多体力。以及坛子里各位老哥对我的捐助支持,都非常感谢!
这段时间也发生了许多事情,目前软件没有任何服务器,所以凭下载量判断可能有几万用户吧。还是有10个以内的人与我反馈被盗号了,再此只能表示开源软件想盗号那是真的难如登天了。
### 后续计划
在此为了对得起大家的鼓励和捐助的支持,所以决定并启用了Steam++v2.0版本的开发,短期计划为之前所描述的预计推出功能以及答应大家添加的所有功能,并且做到支持全平台Windows Mac Linux Android iOS版本支持。
### 现在状况
我拉了我几位朋友来一起开发,现在有3个人参与到此项目了,所以开发速度也不会太慢。
## 问卷调查
我们对于2.0的设计开发目前作了一些计划,但更希望能够听到用户朋友们的宝贵意见和建议。为此我们做了一份问卷调查,希望大家能够来填写。
问卷地址:[https://www.wjx.cn/vj/Y0zCByQ.aspx](https://keylol.com/t667906-1-1)
或者扫码 [attachimg]1320065[/attachimg]
## Steam++v2.0 前瞻
### 界面大改
第一个改动最明显的地方就是界面。原先的界面UI不是很美观,文字堆砌太过复杂,在2.0版本将这些文字都简略化,改用更合适的布局界面。
### 多平台
Steam++将会支持Linux、macOS,也会登录安卓平台、IOS平台,由于各个平台兼容性不同以及开发速度的不足,这些平台会删减部分Windows平台上拥有的功能,当然后续会不断增加功能进行完善。
[attachimg]1320063[/attachimg]
### Steam++账号
2.0版本中将开放Steam++账号注册,账号注册登录后将能使用新增的各种联网服务,例如云同步、云挂卡、交易市场等。也能将自己的配置设置同步到多平台。
### 令牌云同步
在新版本中,大家可以使用Steam++生成自己的Steam令牌,并且将自己保存在电脑上的本地令牌加密上传到云端。这样可以在我们的各个平台上看到自己的令牌,无需频繁的导入导出。
在手机App上,大家可以导入PC端生成的令牌,也可以通过云同步获取到自己的令牌,解决了很多用户手机、电脑、平板无法同时查看令牌的尴尬问题。
关于安全问题:令牌将采用加密算法,通过含有用户自己添加的密匙来进行加密,服务器中只会保留加密后的数据。如果没有用户的密匙,任何人(包括Steam++开发组)都无法解开加密,从而使令牌无法读取直接作废。
这个功能将在2.0版本上线,手机端可能会延后上线。
### 本地反代加速改动
在界面上进行了大改,将同类反代(如Steam社区、Steam商店)合并到了一个按钮中,可以一次性全部启动也可以在设置中单独启动某一项反代功能。并且也会推出服务器加速的模式,可供选择使用。
### 本地令牌改动
在界面上进行了调整,使其更加美观。
添加了令牌生成功能,可以直接在Steam++中生成Steam令牌,无需从其他地方生成后再导入。而且之后做了手机端,可以形成互补,大概目标是取代steam手机app,真的不好用。
[attachimg]1320062[/attachimg]
### 云挂卡服务
在2.0版本推出后不久,将会更新云挂卡功能。大家可以使用我们的服务器进行24小时不间断地挂卡挂时长,并且可以用电脑客户端或者手机App来管理云挂卡进度。
这个功能预计在2.1版本上线。
### 云存档服务
大家可以上传自己的游戏存档进行备份保存,也可以选择分享自己的存档给其他人,或者在我们的Steam++社区内浏览下载其他人分享的存档。
Steam++会自动导入存档到正确的位置,保证能够让游戏正常读取。
这个功能还没开始做,估计要等一段时间才能发布。
### 交易市场
可以在交易市场上购买、出售自己多余的CDKey、Steam余额。在Steam++交易市场上能找到由个人卖家挂售游戏和余额。买家可以直接私聊卖家进行砍价,也可以查看到卖家的rep值,也能在交易后给对方好评或者差评,这将直接影响到被评论方的rep值。
同时Steam++也会作为中间担保人,杜绝欺骗行为的发生。
### 其它
更多的小功能就不太值一提了,但是因为太多,短期也不一定搞得完,再此列个说明,Steam下载完成自动关机、Steam Edit编辑Steam游戏信息、自动白嫖epic、steam游戏,Steam封面管理等等等有更多未列出。以及当我们在Steam平台做的差不多的时候,就会更多的开始钻研做其它平台功能。
## 写在最后
再此我可以保证程序将永远良心收费,不流氓不捆绑,所有本地功能永久免费,只有需要成本的服务端功能才会进行收费。并且程序依然开源发布,不会闭源。
(本来以前一直是想做游戏,但是低成本确实太难做好了,一个人开发独立游戏再怎么努力,依然问题太多,并且我得美术是在是差的离谱,就算是像素画自己都没眼看,退而求其次,先尝试别的,如果真的能赚钱,那就再接着做单机游戏!梦想不能放弃)
官网:[http://www.steamtool.net](http://www.steamtool.net)
目前临时使用此域名,后续迁移到steampp.net
GitHub:[https://github.com/rmbadmin/SteamTools/releases](https://github.com/rmbadmin/SteamTools/releases)
官方QQ群:479036439(1群已经满员,新开了2群)
又不知不觉肝了一通宵代码,因为确实需要了解大家对于收费的态度问题,所以发个帖做个小调查,睡醒了才能回复。
实在不知道发在什么区,那就当水贴了。
睡了,大家晚安{:17_1052:} 。
+844
View File
@@ -0,0 +1,844 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.31005.135
MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Repositories.sqlite-net-pcl", "src\Repositories.sqlite-net-pcl\Repositories.sqlite-net-pcl.csproj", "{512B0511-41AB-444D-BAD8-E19B7D3B52CB}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Common.ClientLib", "src\Common.ClientLib\Common.ClientLib.csproj", "{8B9F2E93-B31B-4BA7-920D-732695A473E6}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Common.CoreLib", "src\Common.CoreLib\Common.CoreLib.csproj", "{E7468FDD-75F7-4B08-BA47-B715BBCFCC11}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Common.ClientLib.Droid", "src\Common.ClientLib.Droid\Common.ClientLib.Droid.csproj", "{7C8D906E-426B-49AB-9072-178555370F62}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Common.ClientLib.iOS", "src\Common.ClientLib.iOS\Common.ClientLib.iOS.csproj", "{F8F6973C-5831-43D1-89C2-1AD543CE7408}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "0_Common", "0_Common", "{2D44BDCF-B70C-4C02-BDC8-4F1DD5066A75}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "3_SteamTools_Libs", "3_SteamTools_Libs", "{B43459A1-709B-4623-9677-AAC2FEE4FBA3}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ST.Services.CloudService.Models", "src\ST.Services.CloudService.Models\ST.Services.CloudService.Models.csproj", "{6CD71E14-5036-4A16-8084-4AD108D34FF7}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ST.Services.CloudService", "src\ST.Services.CloudService\ST.Services.CloudService.csproj", "{65DE552F-5E62-4E4F-ADCB-F19AD3DB3F78}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "2_Test", "2_Test", "{EBC9DD0C-F7D0-4A00-B263-E69CF4E194F1}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Common.UnitTest", "tests\Common.UnitTest\Common.UnitTest.csproj", "{B9D4C8C7-BF96-417B-A7F8-9A67AE75A38B}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Common.UnitTest.Droid", "tests\Common.UnitTest.Droid\Common.UnitTest.Droid.csproj", "{0073A08E-6336-4C09-99F9-2E808889D715}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Common.UnitTest.Droid.App", "tests\Common.UnitTest.Droid.App\Common.UnitTest.Droid.App.csproj", "{AD7B78B0-AE51-4FB7-9B11-4E22A2B538CA}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ST", "src\ST\ST.csproj", "{66B7BFD6-6D4D-421B-BA5B-915348E53708}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ST.Client", "src\ST.Client\ST.Client.csproj", "{0A624994-B0A9-4F1F-B7D0-97FE2929936B}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ST.Client.Desktop", "src\ST.Client.Desktop\ST.Client.Desktop.csproj", "{D1F15D97-802E-4AA3-A4A5-B890ABE32897}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ST.Client.Desktop.Avalonia.App", "src\ST.Client.Desktop.Avalonia.App\ST.Client.Desktop.Avalonia.App.csproj", "{2FFA5BCE-B3C3-46EA-8830-838C938BF814}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "_Root", "_Root", "{B4B548C1-9AFE-4EBB-96E4-990B57C0A953}"
ProjectSection(SolutionItems) = preProject
.gitignore = .gitignore
Directory.Build.props = Directory.Build.props
global.json = global.json
nuget.config = nuget.config
README.en.md = README.en.md
README.md = README.md
EndProjectSection
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ST.Client.Desktop.Avalonia", "src\ST.Client.Desktop.Avalonia\ST.Client.Desktop.Avalonia.csproj", "{4F09B6D1-3F83-45A0-AEC8-0F243E7CD263}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ST.Client.Desktop.Linux", "src\ST.Client.Desktop.Linux\ST.Client.Desktop.Linux.csproj", "{D4CF08F5-8EAB-48FB-AAA3-1A221F7B2A82}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ST.Client.Desktop.Mac", "src\ST.Client.Desktop.Mac\ST.Client.Desktop.Mac.csproj", "{948C1EA8-12DB-4F8A-A190-8615DFBD9FE4}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ST.Client.Desktop.Windows", "src\ST.Client.Desktop.Windows\ST.Client.Desktop.Windows.csproj", "{141532E1-540E-4E50-8723-96936C191281}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "1_Reference", "1_Reference", "{8EB91F53-1062-4E9B-8E4A-096F35EA688D}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Authenticator", "references\WinAuth\Authenticator\Authenticator.csproj", "{D018C980-17FD-49BB-A95D-EDE3C18BBE0A}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SAM.API", "references\SteamAchievementManager\SAM.API\SAM.API.csproj", "{6DD9644F-F005-4C19-8ADF-70C303EC5BB8}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Steam4NET", "references\Steam4NET\Steam4NET\Steam4NET.csproj", "{3C05CED6-7712-40F0-AF17-8DD3F4C0A224}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Titanium.Web.Proxy", "references\Titanium-Web-Proxy\src\Titanium.Web.Proxy\Titanium.Web.Proxy.csproj", "{35D60129-6652-4B6E-A04A-9766C3CF1869}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ST.Tools.OpenSourceLibraryList", "src\ST.Tools.OpenSourceLibraryList\ST.Tools.OpenSourceLibraryList.csproj", "{CF7C2B80-D393-45EA-A67D-DF46FF17B0F8}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ST.Client.UnitTest", "tests\ST.Client.UnitTest\ST.Client.UnitTest.csproj", "{8EDF4429-251A-416D-BB68-93F227191BCF}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ST.Tools.Translate", "src\ST.Tools.Translate\ST.Tools.Translate.csproj", "{ABAF70E5-A582-4916-B217-6A660BB31D52}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "4_SteamTools_Tools", "4_SteamTools_Tools", "{5A7A506C-4DFF-4941-A9A6-B1182C7D5825}"
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", "{39C26BF0-E5FE-42B1-B011-B7300847DED6}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ST.Client.Mobile", "src\ST.Client.Mobile\ST.Client.Mobile.csproj", "{64F63608-1390-41D1-8568-F4E05AE35E75}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ST.Client.Mobile.iOS", "src\ST.Client.Mobile.iOS\ST.Client.Mobile.iOS.csproj", "{A040865C-FA5F-486A-9CC9-96CF34859FBD}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ST.Client.Mobile.Droid", "src\ST.Client.Mobile.Droid\ST.Client.Mobile.Droid.csproj", "{1B8B3C1D-8095-44F2-8106-46A69D5ECF94}"
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}") = "ST.Tools.Packager.InstallerSetup", "src\ST.Tools.Packager.InstallerSetup\ST.Tools.Packager.InstallerSetup.csproj", "{981AB416-A954-4A68-9521-BC71C5AEE058}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ST.Services.CloudService.ViewModels", "src\ST.Services.CloudService.ViewModels\ST.Services.CloudService.ViewModels.csproj", "{90E4B24A-8A7E-4163-837B-BEC7419A7A97}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Depressurizer.Core", "references\Depressurizer\src\Depressurizer.Core\Depressurizer.Core.csproj", "{B626F392-53EF-4894-B7AD-E6AFBFA68E8C}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Common.AreaLib", "src\Common.AreaLib\Common.AreaLib.csproj", "{314F0805-EB94-4685-B0EF-BF9418D19003}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ST.Tools.AreaImport", "src\ST.Tools.AreaImport\ST.Tools.AreaImport.csproj", "{6E3D25E9-544E-498A-8F23-BC4E767FF01B}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AvaloniaGif", "references\AvaloniaGif\AvaloniaGif\AvaloniaGif.csproj", "{71F3F25A-47A7-4F3D-97A7-50394E7EE21B}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LibAPNG", "references\AvaloniaGif\LibAPNG\LibAPNG.csproj", "{09591D9E-2186-42F1-B6C6-375326E2CF2E}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CefNet.Avalonia", "references\CefNet\CefNet.Avalonia\CefNet.Avalonia.csproj", "{38A8EE9F-81A8-4B11-A6E9-864A12C43089}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ST.Tools.MinifyStaticSites", "src\ST.Tools.MinifyStaticSites\ST.Tools.MinifyStaticSites.csproj", "{5E8F54E8-02A6-45D9-A7F9-7C9B43705BE1}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ST.Client.Desktop.Console.App", "src\ST.Client.Desktop.Console.App\ST.Client.Desktop.Console.App.csproj", "{CFDEC4A2-2757-403D-B90B-1846BCEE1EC4}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ST.Client.Desktop.UnitTest", "tests\ST.Client.Desktop.UnitTest\ST.Client.Desktop.UnitTest.csproj", "{E21D0376-0A18-4F46-9ED7-BE4466763B2D}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Debug|iPhone = Debug|iPhone
Debug|iPhoneSimulator = Debug|iPhoneSimulator
Debug|x86 = Debug|x86
Release|Any CPU = Release|Any CPU
Release|iPhone = Release|iPhone
Release|iPhoneSimulator = Release|iPhoneSimulator
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{512B0511-41AB-444D-BAD8-E19B7D3B52CB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{512B0511-41AB-444D-BAD8-E19B7D3B52CB}.Debug|Any CPU.Build.0 = Debug|Any CPU
{512B0511-41AB-444D-BAD8-E19B7D3B52CB}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{512B0511-41AB-444D-BAD8-E19B7D3B52CB}.Debug|iPhone.Build.0 = Debug|Any CPU
{512B0511-41AB-444D-BAD8-E19B7D3B52CB}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{512B0511-41AB-444D-BAD8-E19B7D3B52CB}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{512B0511-41AB-444D-BAD8-E19B7D3B52CB}.Debug|x86.ActiveCfg = Debug|Any CPU
{512B0511-41AB-444D-BAD8-E19B7D3B52CB}.Debug|x86.Build.0 = Debug|Any CPU
{512B0511-41AB-444D-BAD8-E19B7D3B52CB}.Release|Any CPU.ActiveCfg = Release|Any CPU
{512B0511-41AB-444D-BAD8-E19B7D3B52CB}.Release|Any CPU.Build.0 = Release|Any CPU
{512B0511-41AB-444D-BAD8-E19B7D3B52CB}.Release|iPhone.ActiveCfg = Release|Any CPU
{512B0511-41AB-444D-BAD8-E19B7D3B52CB}.Release|iPhone.Build.0 = Release|Any CPU
{512B0511-41AB-444D-BAD8-E19B7D3B52CB}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{512B0511-41AB-444D-BAD8-E19B7D3B52CB}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{512B0511-41AB-444D-BAD8-E19B7D3B52CB}.Release|x86.ActiveCfg = Release|Any CPU
{512B0511-41AB-444D-BAD8-E19B7D3B52CB}.Release|x86.Build.0 = Release|Any CPU
{8B9F2E93-B31B-4BA7-920D-732695A473E6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8B9F2E93-B31B-4BA7-920D-732695A473E6}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8B9F2E93-B31B-4BA7-920D-732695A473E6}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{8B9F2E93-B31B-4BA7-920D-732695A473E6}.Debug|iPhone.Build.0 = Debug|Any CPU
{8B9F2E93-B31B-4BA7-920D-732695A473E6}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{8B9F2E93-B31B-4BA7-920D-732695A473E6}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{8B9F2E93-B31B-4BA7-920D-732695A473E6}.Debug|x86.ActiveCfg = Debug|Any CPU
{8B9F2E93-B31B-4BA7-920D-732695A473E6}.Debug|x86.Build.0 = Debug|Any CPU
{8B9F2E93-B31B-4BA7-920D-732695A473E6}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8B9F2E93-B31B-4BA7-920D-732695A473E6}.Release|Any CPU.Build.0 = Release|Any CPU
{8B9F2E93-B31B-4BA7-920D-732695A473E6}.Release|iPhone.ActiveCfg = Release|Any CPU
{8B9F2E93-B31B-4BA7-920D-732695A473E6}.Release|iPhone.Build.0 = Release|Any CPU
{8B9F2E93-B31B-4BA7-920D-732695A473E6}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{8B9F2E93-B31B-4BA7-920D-732695A473E6}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{8B9F2E93-B31B-4BA7-920D-732695A473E6}.Release|x86.ActiveCfg = Release|Any CPU
{8B9F2E93-B31B-4BA7-920D-732695A473E6}.Release|x86.Build.0 = Release|Any CPU
{E7468FDD-75F7-4B08-BA47-B715BBCFCC11}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E7468FDD-75F7-4B08-BA47-B715BBCFCC11}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E7468FDD-75F7-4B08-BA47-B715BBCFCC11}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{E7468FDD-75F7-4B08-BA47-B715BBCFCC11}.Debug|iPhone.Build.0 = Debug|Any CPU
{E7468FDD-75F7-4B08-BA47-B715BBCFCC11}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{E7468FDD-75F7-4B08-BA47-B715BBCFCC11}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{E7468FDD-75F7-4B08-BA47-B715BBCFCC11}.Debug|x86.ActiveCfg = Debug|Any CPU
{E7468FDD-75F7-4B08-BA47-B715BBCFCC11}.Debug|x86.Build.0 = Debug|Any CPU
{E7468FDD-75F7-4B08-BA47-B715BBCFCC11}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E7468FDD-75F7-4B08-BA47-B715BBCFCC11}.Release|Any CPU.Build.0 = Release|Any CPU
{E7468FDD-75F7-4B08-BA47-B715BBCFCC11}.Release|iPhone.ActiveCfg = Release|Any CPU
{E7468FDD-75F7-4B08-BA47-B715BBCFCC11}.Release|iPhone.Build.0 = Release|Any CPU
{E7468FDD-75F7-4B08-BA47-B715BBCFCC11}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{E7468FDD-75F7-4B08-BA47-B715BBCFCC11}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{E7468FDD-75F7-4B08-BA47-B715BBCFCC11}.Release|x86.ActiveCfg = Release|Any CPU
{E7468FDD-75F7-4B08-BA47-B715BBCFCC11}.Release|x86.Build.0 = Release|Any CPU
{7C8D906E-426B-49AB-9072-178555370F62}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7C8D906E-426B-49AB-9072-178555370F62}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7C8D906E-426B-49AB-9072-178555370F62}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{7C8D906E-426B-49AB-9072-178555370F62}.Debug|iPhone.Build.0 = Debug|Any CPU
{7C8D906E-426B-49AB-9072-178555370F62}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{7C8D906E-426B-49AB-9072-178555370F62}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{7C8D906E-426B-49AB-9072-178555370F62}.Debug|x86.ActiveCfg = Debug|Any CPU
{7C8D906E-426B-49AB-9072-178555370F62}.Debug|x86.Build.0 = Debug|Any CPU
{7C8D906E-426B-49AB-9072-178555370F62}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7C8D906E-426B-49AB-9072-178555370F62}.Release|Any CPU.Build.0 = Release|Any CPU
{7C8D906E-426B-49AB-9072-178555370F62}.Release|iPhone.ActiveCfg = Release|Any CPU
{7C8D906E-426B-49AB-9072-178555370F62}.Release|iPhone.Build.0 = Release|Any CPU
{7C8D906E-426B-49AB-9072-178555370F62}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{7C8D906E-426B-49AB-9072-178555370F62}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{7C8D906E-426B-49AB-9072-178555370F62}.Release|x86.ActiveCfg = Release|Any CPU
{7C8D906E-426B-49AB-9072-178555370F62}.Release|x86.Build.0 = Release|Any CPU
{F8F6973C-5831-43D1-89C2-1AD543CE7408}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F8F6973C-5831-43D1-89C2-1AD543CE7408}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F8F6973C-5831-43D1-89C2-1AD543CE7408}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{F8F6973C-5831-43D1-89C2-1AD543CE7408}.Debug|iPhone.Build.0 = Debug|Any CPU
{F8F6973C-5831-43D1-89C2-1AD543CE7408}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{F8F6973C-5831-43D1-89C2-1AD543CE7408}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{F8F6973C-5831-43D1-89C2-1AD543CE7408}.Debug|x86.ActiveCfg = Debug|Any CPU
{F8F6973C-5831-43D1-89C2-1AD543CE7408}.Debug|x86.Build.0 = Debug|Any CPU
{F8F6973C-5831-43D1-89C2-1AD543CE7408}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F8F6973C-5831-43D1-89C2-1AD543CE7408}.Release|Any CPU.Build.0 = Release|Any CPU
{F8F6973C-5831-43D1-89C2-1AD543CE7408}.Release|iPhone.ActiveCfg = Release|Any CPU
{F8F6973C-5831-43D1-89C2-1AD543CE7408}.Release|iPhone.Build.0 = Release|Any CPU
{F8F6973C-5831-43D1-89C2-1AD543CE7408}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{F8F6973C-5831-43D1-89C2-1AD543CE7408}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{F8F6973C-5831-43D1-89C2-1AD543CE7408}.Release|x86.ActiveCfg = Release|Any CPU
{F8F6973C-5831-43D1-89C2-1AD543CE7408}.Release|x86.Build.0 = Release|Any CPU
{6CD71E14-5036-4A16-8084-4AD108D34FF7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{6CD71E14-5036-4A16-8084-4AD108D34FF7}.Debug|Any CPU.Build.0 = Debug|Any CPU
{6CD71E14-5036-4A16-8084-4AD108D34FF7}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{6CD71E14-5036-4A16-8084-4AD108D34FF7}.Debug|iPhone.Build.0 = Debug|Any CPU
{6CD71E14-5036-4A16-8084-4AD108D34FF7}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{6CD71E14-5036-4A16-8084-4AD108D34FF7}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{6CD71E14-5036-4A16-8084-4AD108D34FF7}.Debug|x86.ActiveCfg = Debug|Any CPU
{6CD71E14-5036-4A16-8084-4AD108D34FF7}.Debug|x86.Build.0 = Debug|Any CPU
{6CD71E14-5036-4A16-8084-4AD108D34FF7}.Release|Any CPU.ActiveCfg = Release|Any CPU
{6CD71E14-5036-4A16-8084-4AD108D34FF7}.Release|Any CPU.Build.0 = Release|Any CPU
{6CD71E14-5036-4A16-8084-4AD108D34FF7}.Release|iPhone.ActiveCfg = Release|Any CPU
{6CD71E14-5036-4A16-8084-4AD108D34FF7}.Release|iPhone.Build.0 = Release|Any CPU
{6CD71E14-5036-4A16-8084-4AD108D34FF7}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{6CD71E14-5036-4A16-8084-4AD108D34FF7}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{6CD71E14-5036-4A16-8084-4AD108D34FF7}.Release|x86.ActiveCfg = Release|Any CPU
{6CD71E14-5036-4A16-8084-4AD108D34FF7}.Release|x86.Build.0 = Release|Any CPU
{65DE552F-5E62-4E4F-ADCB-F19AD3DB3F78}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{65DE552F-5E62-4E4F-ADCB-F19AD3DB3F78}.Debug|Any CPU.Build.0 = Debug|Any CPU
{65DE552F-5E62-4E4F-ADCB-F19AD3DB3F78}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{65DE552F-5E62-4E4F-ADCB-F19AD3DB3F78}.Debug|iPhone.Build.0 = Debug|Any CPU
{65DE552F-5E62-4E4F-ADCB-F19AD3DB3F78}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{65DE552F-5E62-4E4F-ADCB-F19AD3DB3F78}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{65DE552F-5E62-4E4F-ADCB-F19AD3DB3F78}.Debug|x86.ActiveCfg = Debug|Any CPU
{65DE552F-5E62-4E4F-ADCB-F19AD3DB3F78}.Debug|x86.Build.0 = Debug|Any CPU
{65DE552F-5E62-4E4F-ADCB-F19AD3DB3F78}.Release|Any CPU.ActiveCfg = Release|Any CPU
{65DE552F-5E62-4E4F-ADCB-F19AD3DB3F78}.Release|Any CPU.Build.0 = Release|Any CPU
{65DE552F-5E62-4E4F-ADCB-F19AD3DB3F78}.Release|iPhone.ActiveCfg = Release|Any CPU
{65DE552F-5E62-4E4F-ADCB-F19AD3DB3F78}.Release|iPhone.Build.0 = Release|Any CPU
{65DE552F-5E62-4E4F-ADCB-F19AD3DB3F78}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{65DE552F-5E62-4E4F-ADCB-F19AD3DB3F78}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{65DE552F-5E62-4E4F-ADCB-F19AD3DB3F78}.Release|x86.ActiveCfg = Release|Any CPU
{65DE552F-5E62-4E4F-ADCB-F19AD3DB3F78}.Release|x86.Build.0 = Release|Any CPU
{B9D4C8C7-BF96-417B-A7F8-9A67AE75A38B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B9D4C8C7-BF96-417B-A7F8-9A67AE75A38B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B9D4C8C7-BF96-417B-A7F8-9A67AE75A38B}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{B9D4C8C7-BF96-417B-A7F8-9A67AE75A38B}.Debug|iPhone.Build.0 = Debug|Any CPU
{B9D4C8C7-BF96-417B-A7F8-9A67AE75A38B}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{B9D4C8C7-BF96-417B-A7F8-9A67AE75A38B}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{B9D4C8C7-BF96-417B-A7F8-9A67AE75A38B}.Debug|x86.ActiveCfg = Debug|Any CPU
{B9D4C8C7-BF96-417B-A7F8-9A67AE75A38B}.Debug|x86.Build.0 = Debug|Any CPU
{B9D4C8C7-BF96-417B-A7F8-9A67AE75A38B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B9D4C8C7-BF96-417B-A7F8-9A67AE75A38B}.Release|Any CPU.Build.0 = Release|Any CPU
{B9D4C8C7-BF96-417B-A7F8-9A67AE75A38B}.Release|iPhone.ActiveCfg = Release|Any CPU
{B9D4C8C7-BF96-417B-A7F8-9A67AE75A38B}.Release|iPhone.Build.0 = Release|Any CPU
{B9D4C8C7-BF96-417B-A7F8-9A67AE75A38B}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{B9D4C8C7-BF96-417B-A7F8-9A67AE75A38B}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{B9D4C8C7-BF96-417B-A7F8-9A67AE75A38B}.Release|x86.ActiveCfg = Release|Any CPU
{B9D4C8C7-BF96-417B-A7F8-9A67AE75A38B}.Release|x86.Build.0 = Release|Any CPU
{0073A08E-6336-4C09-99F9-2E808889D715}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0073A08E-6336-4C09-99F9-2E808889D715}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0073A08E-6336-4C09-99F9-2E808889D715}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{0073A08E-6336-4C09-99F9-2E808889D715}.Debug|iPhone.Build.0 = Debug|Any CPU
{0073A08E-6336-4C09-99F9-2E808889D715}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{0073A08E-6336-4C09-99F9-2E808889D715}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{0073A08E-6336-4C09-99F9-2E808889D715}.Debug|x86.ActiveCfg = Debug|Any CPU
{0073A08E-6336-4C09-99F9-2E808889D715}.Debug|x86.Build.0 = Debug|Any CPU
{0073A08E-6336-4C09-99F9-2E808889D715}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0073A08E-6336-4C09-99F9-2E808889D715}.Release|Any CPU.Build.0 = Release|Any CPU
{0073A08E-6336-4C09-99F9-2E808889D715}.Release|iPhone.ActiveCfg = Release|Any CPU
{0073A08E-6336-4C09-99F9-2E808889D715}.Release|iPhone.Build.0 = Release|Any CPU
{0073A08E-6336-4C09-99F9-2E808889D715}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{0073A08E-6336-4C09-99F9-2E808889D715}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{0073A08E-6336-4C09-99F9-2E808889D715}.Release|x86.ActiveCfg = Release|Any CPU
{0073A08E-6336-4C09-99F9-2E808889D715}.Release|x86.Build.0 = Release|Any CPU
{AD7B78B0-AE51-4FB7-9B11-4E22A2B538CA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{AD7B78B0-AE51-4FB7-9B11-4E22A2B538CA}.Debug|Any CPU.Build.0 = Debug|Any CPU
{AD7B78B0-AE51-4FB7-9B11-4E22A2B538CA}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
{AD7B78B0-AE51-4FB7-9B11-4E22A2B538CA}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{AD7B78B0-AE51-4FB7-9B11-4E22A2B538CA}.Debug|iPhone.Build.0 = Debug|Any CPU
{AD7B78B0-AE51-4FB7-9B11-4E22A2B538CA}.Debug|iPhone.Deploy.0 = Debug|Any CPU
{AD7B78B0-AE51-4FB7-9B11-4E22A2B538CA}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{AD7B78B0-AE51-4FB7-9B11-4E22A2B538CA}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{AD7B78B0-AE51-4FB7-9B11-4E22A2B538CA}.Debug|iPhoneSimulator.Deploy.0 = Debug|Any CPU
{AD7B78B0-AE51-4FB7-9B11-4E22A2B538CA}.Debug|x86.ActiveCfg = Debug|Any CPU
{AD7B78B0-AE51-4FB7-9B11-4E22A2B538CA}.Debug|x86.Build.0 = Debug|Any CPU
{AD7B78B0-AE51-4FB7-9B11-4E22A2B538CA}.Debug|x86.Deploy.0 = Debug|Any CPU
{AD7B78B0-AE51-4FB7-9B11-4E22A2B538CA}.Release|Any CPU.ActiveCfg = Release|Any CPU
{AD7B78B0-AE51-4FB7-9B11-4E22A2B538CA}.Release|Any CPU.Build.0 = Release|Any CPU
{AD7B78B0-AE51-4FB7-9B11-4E22A2B538CA}.Release|Any CPU.Deploy.0 = Release|Any CPU
{AD7B78B0-AE51-4FB7-9B11-4E22A2B538CA}.Release|iPhone.ActiveCfg = Release|Any CPU
{AD7B78B0-AE51-4FB7-9B11-4E22A2B538CA}.Release|iPhone.Build.0 = Release|Any CPU
{AD7B78B0-AE51-4FB7-9B11-4E22A2B538CA}.Release|iPhone.Deploy.0 = Release|Any CPU
{AD7B78B0-AE51-4FB7-9B11-4E22A2B538CA}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{AD7B78B0-AE51-4FB7-9B11-4E22A2B538CA}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{AD7B78B0-AE51-4FB7-9B11-4E22A2B538CA}.Release|iPhoneSimulator.Deploy.0 = Release|Any CPU
{AD7B78B0-AE51-4FB7-9B11-4E22A2B538CA}.Release|x86.ActiveCfg = Release|Any CPU
{AD7B78B0-AE51-4FB7-9B11-4E22A2B538CA}.Release|x86.Build.0 = Release|Any CPU
{AD7B78B0-AE51-4FB7-9B11-4E22A2B538CA}.Release|x86.Deploy.0 = Release|Any CPU
{66B7BFD6-6D4D-421B-BA5B-915348E53708}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{66B7BFD6-6D4D-421B-BA5B-915348E53708}.Debug|Any CPU.Build.0 = Debug|Any CPU
{66B7BFD6-6D4D-421B-BA5B-915348E53708}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{66B7BFD6-6D4D-421B-BA5B-915348E53708}.Debug|iPhone.Build.0 = Debug|Any CPU
{66B7BFD6-6D4D-421B-BA5B-915348E53708}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{66B7BFD6-6D4D-421B-BA5B-915348E53708}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{66B7BFD6-6D4D-421B-BA5B-915348E53708}.Debug|x86.ActiveCfg = Debug|Any CPU
{66B7BFD6-6D4D-421B-BA5B-915348E53708}.Debug|x86.Build.0 = Debug|Any CPU
{66B7BFD6-6D4D-421B-BA5B-915348E53708}.Release|Any CPU.ActiveCfg = Release|Any CPU
{66B7BFD6-6D4D-421B-BA5B-915348E53708}.Release|Any CPU.Build.0 = Release|Any CPU
{66B7BFD6-6D4D-421B-BA5B-915348E53708}.Release|iPhone.ActiveCfg = Release|Any CPU
{66B7BFD6-6D4D-421B-BA5B-915348E53708}.Release|iPhone.Build.0 = Release|Any CPU
{66B7BFD6-6D4D-421B-BA5B-915348E53708}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{66B7BFD6-6D4D-421B-BA5B-915348E53708}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{66B7BFD6-6D4D-421B-BA5B-915348E53708}.Release|x86.ActiveCfg = Release|Any CPU
{66B7BFD6-6D4D-421B-BA5B-915348E53708}.Release|x86.Build.0 = Release|Any CPU
{0A624994-B0A9-4F1F-B7D0-97FE2929936B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0A624994-B0A9-4F1F-B7D0-97FE2929936B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0A624994-B0A9-4F1F-B7D0-97FE2929936B}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{0A624994-B0A9-4F1F-B7D0-97FE2929936B}.Debug|iPhone.Build.0 = Debug|Any CPU
{0A624994-B0A9-4F1F-B7D0-97FE2929936B}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{0A624994-B0A9-4F1F-B7D0-97FE2929936B}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{0A624994-B0A9-4F1F-B7D0-97FE2929936B}.Debug|x86.ActiveCfg = Debug|Any CPU
{0A624994-B0A9-4F1F-B7D0-97FE2929936B}.Debug|x86.Build.0 = Debug|Any CPU
{0A624994-B0A9-4F1F-B7D0-97FE2929936B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0A624994-B0A9-4F1F-B7D0-97FE2929936B}.Release|Any CPU.Build.0 = Release|Any CPU
{0A624994-B0A9-4F1F-B7D0-97FE2929936B}.Release|iPhone.ActiveCfg = Release|Any CPU
{0A624994-B0A9-4F1F-B7D0-97FE2929936B}.Release|iPhone.Build.0 = Release|Any CPU
{0A624994-B0A9-4F1F-B7D0-97FE2929936B}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{0A624994-B0A9-4F1F-B7D0-97FE2929936B}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{0A624994-B0A9-4F1F-B7D0-97FE2929936B}.Release|x86.ActiveCfg = Release|Any CPU
{0A624994-B0A9-4F1F-B7D0-97FE2929936B}.Release|x86.Build.0 = Release|Any CPU
{D1F15D97-802E-4AA3-A4A5-B890ABE32897}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D1F15D97-802E-4AA3-A4A5-B890ABE32897}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D1F15D97-802E-4AA3-A4A5-B890ABE32897}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{D1F15D97-802E-4AA3-A4A5-B890ABE32897}.Debug|iPhone.Build.0 = Debug|Any CPU
{D1F15D97-802E-4AA3-A4A5-B890ABE32897}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{D1F15D97-802E-4AA3-A4A5-B890ABE32897}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{D1F15D97-802E-4AA3-A4A5-B890ABE32897}.Debug|x86.ActiveCfg = Debug|Any CPU
{D1F15D97-802E-4AA3-A4A5-B890ABE32897}.Debug|x86.Build.0 = Debug|Any CPU
{D1F15D97-802E-4AA3-A4A5-B890ABE32897}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D1F15D97-802E-4AA3-A4A5-B890ABE32897}.Release|Any CPU.Build.0 = Release|Any CPU
{D1F15D97-802E-4AA3-A4A5-B890ABE32897}.Release|iPhone.ActiveCfg = Release|Any CPU
{D1F15D97-802E-4AA3-A4A5-B890ABE32897}.Release|iPhone.Build.0 = Release|Any CPU
{D1F15D97-802E-4AA3-A4A5-B890ABE32897}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{D1F15D97-802E-4AA3-A4A5-B890ABE32897}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{D1F15D97-802E-4AA3-A4A5-B890ABE32897}.Release|x86.ActiveCfg = Release|Any CPU
{D1F15D97-802E-4AA3-A4A5-B890ABE32897}.Release|x86.Build.0 = Release|Any CPU
{2FFA5BCE-B3C3-46EA-8830-838C938BF814}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{2FFA5BCE-B3C3-46EA-8830-838C938BF814}.Debug|Any CPU.Build.0 = Debug|Any CPU
{2FFA5BCE-B3C3-46EA-8830-838C938BF814}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{2FFA5BCE-B3C3-46EA-8830-838C938BF814}.Debug|iPhone.Build.0 = Debug|Any CPU
{2FFA5BCE-B3C3-46EA-8830-838C938BF814}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{2FFA5BCE-B3C3-46EA-8830-838C938BF814}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{2FFA5BCE-B3C3-46EA-8830-838C938BF814}.Debug|x86.ActiveCfg = Debug|x86
{2FFA5BCE-B3C3-46EA-8830-838C938BF814}.Debug|x86.Build.0 = Debug|x86
{2FFA5BCE-B3C3-46EA-8830-838C938BF814}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2FFA5BCE-B3C3-46EA-8830-838C938BF814}.Release|Any CPU.Build.0 = Release|Any CPU
{2FFA5BCE-B3C3-46EA-8830-838C938BF814}.Release|iPhone.ActiveCfg = Release|Any CPU
{2FFA5BCE-B3C3-46EA-8830-838C938BF814}.Release|iPhone.Build.0 = Release|Any CPU
{2FFA5BCE-B3C3-46EA-8830-838C938BF814}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{2FFA5BCE-B3C3-46EA-8830-838C938BF814}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{2FFA5BCE-B3C3-46EA-8830-838C938BF814}.Release|x86.ActiveCfg = Release|x86
{2FFA5BCE-B3C3-46EA-8830-838C938BF814}.Release|x86.Build.0 = Release|x86
{4F09B6D1-3F83-45A0-AEC8-0F243E7CD263}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4F09B6D1-3F83-45A0-AEC8-0F243E7CD263}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4F09B6D1-3F83-45A0-AEC8-0F243E7CD263}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{4F09B6D1-3F83-45A0-AEC8-0F243E7CD263}.Debug|iPhone.Build.0 = Debug|Any CPU
{4F09B6D1-3F83-45A0-AEC8-0F243E7CD263}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{4F09B6D1-3F83-45A0-AEC8-0F243E7CD263}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{4F09B6D1-3F83-45A0-AEC8-0F243E7CD263}.Debug|x86.ActiveCfg = Debug|Any CPU
{4F09B6D1-3F83-45A0-AEC8-0F243E7CD263}.Debug|x86.Build.0 = Debug|Any CPU
{4F09B6D1-3F83-45A0-AEC8-0F243E7CD263}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4F09B6D1-3F83-45A0-AEC8-0F243E7CD263}.Release|Any CPU.Build.0 = Release|Any CPU
{4F09B6D1-3F83-45A0-AEC8-0F243E7CD263}.Release|iPhone.ActiveCfg = Release|Any CPU
{4F09B6D1-3F83-45A0-AEC8-0F243E7CD263}.Release|iPhone.Build.0 = Release|Any CPU
{4F09B6D1-3F83-45A0-AEC8-0F243E7CD263}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{4F09B6D1-3F83-45A0-AEC8-0F243E7CD263}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{4F09B6D1-3F83-45A0-AEC8-0F243E7CD263}.Release|x86.ActiveCfg = Release|Any CPU
{4F09B6D1-3F83-45A0-AEC8-0F243E7CD263}.Release|x86.Build.0 = Release|Any CPU
{D4CF08F5-8EAB-48FB-AAA3-1A221F7B2A82}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D4CF08F5-8EAB-48FB-AAA3-1A221F7B2A82}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D4CF08F5-8EAB-48FB-AAA3-1A221F7B2A82}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{D4CF08F5-8EAB-48FB-AAA3-1A221F7B2A82}.Debug|iPhone.Build.0 = Debug|Any CPU
{D4CF08F5-8EAB-48FB-AAA3-1A221F7B2A82}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{D4CF08F5-8EAB-48FB-AAA3-1A221F7B2A82}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{D4CF08F5-8EAB-48FB-AAA3-1A221F7B2A82}.Debug|x86.ActiveCfg = Debug|Any CPU
{D4CF08F5-8EAB-48FB-AAA3-1A221F7B2A82}.Debug|x86.Build.0 = Debug|Any CPU
{D4CF08F5-8EAB-48FB-AAA3-1A221F7B2A82}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D4CF08F5-8EAB-48FB-AAA3-1A221F7B2A82}.Release|Any CPU.Build.0 = Release|Any CPU
{D4CF08F5-8EAB-48FB-AAA3-1A221F7B2A82}.Release|iPhone.ActiveCfg = Release|Any CPU
{D4CF08F5-8EAB-48FB-AAA3-1A221F7B2A82}.Release|iPhone.Build.0 = Release|Any CPU
{D4CF08F5-8EAB-48FB-AAA3-1A221F7B2A82}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{D4CF08F5-8EAB-48FB-AAA3-1A221F7B2A82}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{D4CF08F5-8EAB-48FB-AAA3-1A221F7B2A82}.Release|x86.ActiveCfg = Release|Any CPU
{D4CF08F5-8EAB-48FB-AAA3-1A221F7B2A82}.Release|x86.Build.0 = Release|Any CPU
{948C1EA8-12DB-4F8A-A190-8615DFBD9FE4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{948C1EA8-12DB-4F8A-A190-8615DFBD9FE4}.Debug|Any CPU.Build.0 = Debug|Any CPU
{948C1EA8-12DB-4F8A-A190-8615DFBD9FE4}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{948C1EA8-12DB-4F8A-A190-8615DFBD9FE4}.Debug|iPhone.Build.0 = Debug|Any CPU
{948C1EA8-12DB-4F8A-A190-8615DFBD9FE4}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{948C1EA8-12DB-4F8A-A190-8615DFBD9FE4}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{948C1EA8-12DB-4F8A-A190-8615DFBD9FE4}.Debug|x86.ActiveCfg = Debug|Any CPU
{948C1EA8-12DB-4F8A-A190-8615DFBD9FE4}.Debug|x86.Build.0 = Debug|Any CPU
{948C1EA8-12DB-4F8A-A190-8615DFBD9FE4}.Release|Any CPU.ActiveCfg = Release|Any CPU
{948C1EA8-12DB-4F8A-A190-8615DFBD9FE4}.Release|Any CPU.Build.0 = Release|Any CPU
{948C1EA8-12DB-4F8A-A190-8615DFBD9FE4}.Release|iPhone.ActiveCfg = Release|Any CPU
{948C1EA8-12DB-4F8A-A190-8615DFBD9FE4}.Release|iPhone.Build.0 = Release|Any CPU
{948C1EA8-12DB-4F8A-A190-8615DFBD9FE4}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{948C1EA8-12DB-4F8A-A190-8615DFBD9FE4}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{948C1EA8-12DB-4F8A-A190-8615DFBD9FE4}.Release|x86.ActiveCfg = Release|Any CPU
{948C1EA8-12DB-4F8A-A190-8615DFBD9FE4}.Release|x86.Build.0 = Release|Any CPU
{141532E1-540E-4E50-8723-96936C191281}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{141532E1-540E-4E50-8723-96936C191281}.Debug|Any CPU.Build.0 = Debug|Any CPU
{141532E1-540E-4E50-8723-96936C191281}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{141532E1-540E-4E50-8723-96936C191281}.Debug|iPhone.Build.0 = Debug|Any CPU
{141532E1-540E-4E50-8723-96936C191281}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{141532E1-540E-4E50-8723-96936C191281}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{141532E1-540E-4E50-8723-96936C191281}.Debug|x86.ActiveCfg = Debug|Any CPU
{141532E1-540E-4E50-8723-96936C191281}.Debug|x86.Build.0 = Debug|Any CPU
{141532E1-540E-4E50-8723-96936C191281}.Release|Any CPU.ActiveCfg = Release|Any CPU
{141532E1-540E-4E50-8723-96936C191281}.Release|Any CPU.Build.0 = Release|Any CPU
{141532E1-540E-4E50-8723-96936C191281}.Release|iPhone.ActiveCfg = Release|Any CPU
{141532E1-540E-4E50-8723-96936C191281}.Release|iPhone.Build.0 = Release|Any CPU
{141532E1-540E-4E50-8723-96936C191281}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{141532E1-540E-4E50-8723-96936C191281}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{141532E1-540E-4E50-8723-96936C191281}.Release|x86.ActiveCfg = Release|Any CPU
{141532E1-540E-4E50-8723-96936C191281}.Release|x86.Build.0 = Release|Any CPU
{D018C980-17FD-49BB-A95D-EDE3C18BBE0A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D018C980-17FD-49BB-A95D-EDE3C18BBE0A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D018C980-17FD-49BB-A95D-EDE3C18BBE0A}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{D018C980-17FD-49BB-A95D-EDE3C18BBE0A}.Debug|iPhone.Build.0 = Debug|Any CPU
{D018C980-17FD-49BB-A95D-EDE3C18BBE0A}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{D018C980-17FD-49BB-A95D-EDE3C18BBE0A}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{D018C980-17FD-49BB-A95D-EDE3C18BBE0A}.Debug|x86.ActiveCfg = Debug|Any CPU
{D018C980-17FD-49BB-A95D-EDE3C18BBE0A}.Debug|x86.Build.0 = Debug|Any CPU
{D018C980-17FD-49BB-A95D-EDE3C18BBE0A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D018C980-17FD-49BB-A95D-EDE3C18BBE0A}.Release|Any CPU.Build.0 = Release|Any CPU
{D018C980-17FD-49BB-A95D-EDE3C18BBE0A}.Release|iPhone.ActiveCfg = Release|Any CPU
{D018C980-17FD-49BB-A95D-EDE3C18BBE0A}.Release|iPhone.Build.0 = Release|Any CPU
{D018C980-17FD-49BB-A95D-EDE3C18BBE0A}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{D018C980-17FD-49BB-A95D-EDE3C18BBE0A}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{D018C980-17FD-49BB-A95D-EDE3C18BBE0A}.Release|x86.ActiveCfg = Release|Any CPU
{D018C980-17FD-49BB-A95D-EDE3C18BBE0A}.Release|x86.Build.0 = Release|Any CPU
{6DD9644F-F005-4C19-8ADF-70C303EC5BB8}.Debug|Any CPU.ActiveCfg = Debug|x86
{6DD9644F-F005-4C19-8ADF-70C303EC5BB8}.Debug|Any CPU.Build.0 = Debug|x86
{6DD9644F-F005-4C19-8ADF-70C303EC5BB8}.Debug|iPhone.ActiveCfg = Debug|x86
{6DD9644F-F005-4C19-8ADF-70C303EC5BB8}.Debug|iPhoneSimulator.ActiveCfg = Debug|x86
{6DD9644F-F005-4C19-8ADF-70C303EC5BB8}.Debug|x86.ActiveCfg = Debug|x86
{6DD9644F-F005-4C19-8ADF-70C303EC5BB8}.Debug|x86.Build.0 = Debug|x86
{6DD9644F-F005-4C19-8ADF-70C303EC5BB8}.Release|Any CPU.ActiveCfg = Release|x86
{6DD9644F-F005-4C19-8ADF-70C303EC5BB8}.Release|Any CPU.Build.0 = Release|x86
{6DD9644F-F005-4C19-8ADF-70C303EC5BB8}.Release|iPhone.ActiveCfg = Release|x86
{6DD9644F-F005-4C19-8ADF-70C303EC5BB8}.Release|iPhoneSimulator.ActiveCfg = Release|x86
{6DD9644F-F005-4C19-8ADF-70C303EC5BB8}.Release|x86.ActiveCfg = Release|x86
{6DD9644F-F005-4C19-8ADF-70C303EC5BB8}.Release|x86.Build.0 = Release|x86
{3C05CED6-7712-40F0-AF17-8DD3F4C0A224}.Debug|Any CPU.ActiveCfg = Debug|x86
{3C05CED6-7712-40F0-AF17-8DD3F4C0A224}.Debug|Any CPU.Build.0 = Debug|x86
{3C05CED6-7712-40F0-AF17-8DD3F4C0A224}.Debug|iPhone.ActiveCfg = Debug|x86
{3C05CED6-7712-40F0-AF17-8DD3F4C0A224}.Debug|iPhoneSimulator.ActiveCfg = Debug|x86
{3C05CED6-7712-40F0-AF17-8DD3F4C0A224}.Debug|x86.ActiveCfg = Debug|x86
{3C05CED6-7712-40F0-AF17-8DD3F4C0A224}.Debug|x86.Build.0 = Debug|x86
{3C05CED6-7712-40F0-AF17-8DD3F4C0A224}.Release|Any CPU.ActiveCfg = Release|x86
{3C05CED6-7712-40F0-AF17-8DD3F4C0A224}.Release|Any CPU.Build.0 = Release|x86
{3C05CED6-7712-40F0-AF17-8DD3F4C0A224}.Release|iPhone.ActiveCfg = Release|x86
{3C05CED6-7712-40F0-AF17-8DD3F4C0A224}.Release|iPhoneSimulator.ActiveCfg = Release|x86
{3C05CED6-7712-40F0-AF17-8DD3F4C0A224}.Release|x86.ActiveCfg = Release|x86
{3C05CED6-7712-40F0-AF17-8DD3F4C0A224}.Release|x86.Build.0 = Release|x86
{35D60129-6652-4B6E-A04A-9766C3CF1869}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{35D60129-6652-4B6E-A04A-9766C3CF1869}.Debug|Any CPU.Build.0 = Debug|Any CPU
{35D60129-6652-4B6E-A04A-9766C3CF1869}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{35D60129-6652-4B6E-A04A-9766C3CF1869}.Debug|iPhone.Build.0 = Debug|Any CPU
{35D60129-6652-4B6E-A04A-9766C3CF1869}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{35D60129-6652-4B6E-A04A-9766C3CF1869}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{35D60129-6652-4B6E-A04A-9766C3CF1869}.Debug|x86.ActiveCfg = Debug|Any CPU
{35D60129-6652-4B6E-A04A-9766C3CF1869}.Debug|x86.Build.0 = Debug|Any CPU
{35D60129-6652-4B6E-A04A-9766C3CF1869}.Release|Any CPU.ActiveCfg = Release|Any CPU
{35D60129-6652-4B6E-A04A-9766C3CF1869}.Release|Any CPU.Build.0 = Release|Any CPU
{35D60129-6652-4B6E-A04A-9766C3CF1869}.Release|iPhone.ActiveCfg = Release|Any CPU
{35D60129-6652-4B6E-A04A-9766C3CF1869}.Release|iPhone.Build.0 = Release|Any CPU
{35D60129-6652-4B6E-A04A-9766C3CF1869}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{35D60129-6652-4B6E-A04A-9766C3CF1869}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{35D60129-6652-4B6E-A04A-9766C3CF1869}.Release|x86.ActiveCfg = Release|Any CPU
{35D60129-6652-4B6E-A04A-9766C3CF1869}.Release|x86.Build.0 = Release|Any CPU
{CF7C2B80-D393-45EA-A67D-DF46FF17B0F8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{CF7C2B80-D393-45EA-A67D-DF46FF17B0F8}.Debug|Any CPU.Build.0 = Debug|Any CPU
{CF7C2B80-D393-45EA-A67D-DF46FF17B0F8}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{CF7C2B80-D393-45EA-A67D-DF46FF17B0F8}.Debug|iPhone.Build.0 = Debug|Any CPU
{CF7C2B80-D393-45EA-A67D-DF46FF17B0F8}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{CF7C2B80-D393-45EA-A67D-DF46FF17B0F8}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{CF7C2B80-D393-45EA-A67D-DF46FF17B0F8}.Debug|x86.ActiveCfg = Debug|Any CPU
{CF7C2B80-D393-45EA-A67D-DF46FF17B0F8}.Debug|x86.Build.0 = Debug|Any CPU
{CF7C2B80-D393-45EA-A67D-DF46FF17B0F8}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CF7C2B80-D393-45EA-A67D-DF46FF17B0F8}.Release|Any CPU.Build.0 = Release|Any CPU
{CF7C2B80-D393-45EA-A67D-DF46FF17B0F8}.Release|iPhone.ActiveCfg = Release|Any CPU
{CF7C2B80-D393-45EA-A67D-DF46FF17B0F8}.Release|iPhone.Build.0 = Release|Any CPU
{CF7C2B80-D393-45EA-A67D-DF46FF17B0F8}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{CF7C2B80-D393-45EA-A67D-DF46FF17B0F8}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{CF7C2B80-D393-45EA-A67D-DF46FF17B0F8}.Release|x86.ActiveCfg = Release|Any CPU
{CF7C2B80-D393-45EA-A67D-DF46FF17B0F8}.Release|x86.Build.0 = Release|Any CPU
{8EDF4429-251A-416D-BB68-93F227191BCF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8EDF4429-251A-416D-BB68-93F227191BCF}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8EDF4429-251A-416D-BB68-93F227191BCF}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{8EDF4429-251A-416D-BB68-93F227191BCF}.Debug|iPhone.Build.0 = Debug|Any CPU
{8EDF4429-251A-416D-BB68-93F227191BCF}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{8EDF4429-251A-416D-BB68-93F227191BCF}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{8EDF4429-251A-416D-BB68-93F227191BCF}.Debug|x86.ActiveCfg = Debug|Any CPU
{8EDF4429-251A-416D-BB68-93F227191BCF}.Debug|x86.Build.0 = Debug|Any CPU
{8EDF4429-251A-416D-BB68-93F227191BCF}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8EDF4429-251A-416D-BB68-93F227191BCF}.Release|Any CPU.Build.0 = Release|Any CPU
{8EDF4429-251A-416D-BB68-93F227191BCF}.Release|iPhone.ActiveCfg = Release|Any CPU
{8EDF4429-251A-416D-BB68-93F227191BCF}.Release|iPhone.Build.0 = Release|Any CPU
{8EDF4429-251A-416D-BB68-93F227191BCF}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{8EDF4429-251A-416D-BB68-93F227191BCF}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{8EDF4429-251A-416D-BB68-93F227191BCF}.Release|x86.ActiveCfg = Release|Any CPU
{8EDF4429-251A-416D-BB68-93F227191BCF}.Release|x86.Build.0 = Release|Any CPU
{ABAF70E5-A582-4916-B217-6A660BB31D52}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{ABAF70E5-A582-4916-B217-6A660BB31D52}.Debug|Any CPU.Build.0 = Debug|Any CPU
{ABAF70E5-A582-4916-B217-6A660BB31D52}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{ABAF70E5-A582-4916-B217-6A660BB31D52}.Debug|iPhone.Build.0 = Debug|Any CPU
{ABAF70E5-A582-4916-B217-6A660BB31D52}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{ABAF70E5-A582-4916-B217-6A660BB31D52}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{ABAF70E5-A582-4916-B217-6A660BB31D52}.Debug|x86.ActiveCfg = Debug|Any CPU
{ABAF70E5-A582-4916-B217-6A660BB31D52}.Debug|x86.Build.0 = Debug|Any CPU
{ABAF70E5-A582-4916-B217-6A660BB31D52}.Release|Any CPU.ActiveCfg = Release|Any CPU
{ABAF70E5-A582-4916-B217-6A660BB31D52}.Release|Any CPU.Build.0 = Release|Any CPU
{ABAF70E5-A582-4916-B217-6A660BB31D52}.Release|iPhone.ActiveCfg = Release|Any CPU
{ABAF70E5-A582-4916-B217-6A660BB31D52}.Release|iPhone.Build.0 = Release|Any CPU
{ABAF70E5-A582-4916-B217-6A660BB31D52}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{ABAF70E5-A582-4916-B217-6A660BB31D52}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{ABAF70E5-A582-4916-B217-6A660BB31D52}.Release|x86.ActiveCfg = Release|Any CPU
{ABAF70E5-A582-4916-B217-6A660BB31D52}.Release|x86.Build.0 = Release|Any CPU
{39C26BF0-E5FE-42B1-B011-B7300847DED6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{39C26BF0-E5FE-42B1-B011-B7300847DED6}.Debug|Any CPU.Build.0 = Debug|Any CPU
{39C26BF0-E5FE-42B1-B011-B7300847DED6}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{39C26BF0-E5FE-42B1-B011-B7300847DED6}.Debug|iPhone.Build.0 = Debug|Any CPU
{39C26BF0-E5FE-42B1-B011-B7300847DED6}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{39C26BF0-E5FE-42B1-B011-B7300847DED6}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{39C26BF0-E5FE-42B1-B011-B7300847DED6}.Debug|x86.ActiveCfg = Debug|Any CPU
{39C26BF0-E5FE-42B1-B011-B7300847DED6}.Debug|x86.Build.0 = Debug|Any CPU
{39C26BF0-E5FE-42B1-B011-B7300847DED6}.Release|Any CPU.ActiveCfg = Release|Any CPU
{39C26BF0-E5FE-42B1-B011-B7300847DED6}.Release|Any CPU.Build.0 = Release|Any CPU
{39C26BF0-E5FE-42B1-B011-B7300847DED6}.Release|iPhone.ActiveCfg = Release|Any CPU
{39C26BF0-E5FE-42B1-B011-B7300847DED6}.Release|iPhone.Build.0 = Release|Any CPU
{39C26BF0-E5FE-42B1-B011-B7300847DED6}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{39C26BF0-E5FE-42B1-B011-B7300847DED6}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{39C26BF0-E5FE-42B1-B011-B7300847DED6}.Release|x86.ActiveCfg = Release|Any CPU
{39C26BF0-E5FE-42B1-B011-B7300847DED6}.Release|x86.Build.0 = Release|Any CPU
{64F63608-1390-41D1-8568-F4E05AE35E75}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{64F63608-1390-41D1-8568-F4E05AE35E75}.Debug|Any CPU.Build.0 = Debug|Any CPU
{64F63608-1390-41D1-8568-F4E05AE35E75}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{64F63608-1390-41D1-8568-F4E05AE35E75}.Debug|iPhone.Build.0 = Debug|Any CPU
{64F63608-1390-41D1-8568-F4E05AE35E75}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{64F63608-1390-41D1-8568-F4E05AE35E75}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{64F63608-1390-41D1-8568-F4E05AE35E75}.Debug|x86.ActiveCfg = Debug|Any CPU
{64F63608-1390-41D1-8568-F4E05AE35E75}.Debug|x86.Build.0 = Debug|Any CPU
{64F63608-1390-41D1-8568-F4E05AE35E75}.Release|Any CPU.ActiveCfg = Release|Any CPU
{64F63608-1390-41D1-8568-F4E05AE35E75}.Release|Any CPU.Build.0 = Release|Any CPU
{64F63608-1390-41D1-8568-F4E05AE35E75}.Release|iPhone.ActiveCfg = Release|Any CPU
{64F63608-1390-41D1-8568-F4E05AE35E75}.Release|iPhone.Build.0 = Release|Any CPU
{64F63608-1390-41D1-8568-F4E05AE35E75}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{64F63608-1390-41D1-8568-F4E05AE35E75}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{64F63608-1390-41D1-8568-F4E05AE35E75}.Release|x86.ActiveCfg = Release|Any CPU
{64F63608-1390-41D1-8568-F4E05AE35E75}.Release|x86.Build.0 = Release|Any CPU
{A040865C-FA5F-486A-9CC9-96CF34859FBD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A040865C-FA5F-486A-9CC9-96CF34859FBD}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A040865C-FA5F-486A-9CC9-96CF34859FBD}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{A040865C-FA5F-486A-9CC9-96CF34859FBD}.Debug|iPhone.Build.0 = Debug|Any CPU
{A040865C-FA5F-486A-9CC9-96CF34859FBD}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{A040865C-FA5F-486A-9CC9-96CF34859FBD}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{A040865C-FA5F-486A-9CC9-96CF34859FBD}.Debug|x86.ActiveCfg = Debug|Any CPU
{A040865C-FA5F-486A-9CC9-96CF34859FBD}.Debug|x86.Build.0 = Debug|Any CPU
{A040865C-FA5F-486A-9CC9-96CF34859FBD}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A040865C-FA5F-486A-9CC9-96CF34859FBD}.Release|Any CPU.Build.0 = Release|Any CPU
{A040865C-FA5F-486A-9CC9-96CF34859FBD}.Release|iPhone.ActiveCfg = Release|Any CPU
{A040865C-FA5F-486A-9CC9-96CF34859FBD}.Release|iPhone.Build.0 = Release|Any CPU
{A040865C-FA5F-486A-9CC9-96CF34859FBD}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{A040865C-FA5F-486A-9CC9-96CF34859FBD}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{A040865C-FA5F-486A-9CC9-96CF34859FBD}.Release|x86.ActiveCfg = Release|Any CPU
{A040865C-FA5F-486A-9CC9-96CF34859FBD}.Release|x86.Build.0 = Release|Any CPU
{1B8B3C1D-8095-44F2-8106-46A69D5ECF94}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1B8B3C1D-8095-44F2-8106-46A69D5ECF94}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1B8B3C1D-8095-44F2-8106-46A69D5ECF94}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{1B8B3C1D-8095-44F2-8106-46A69D5ECF94}.Debug|iPhone.Build.0 = Debug|Any CPU
{1B8B3C1D-8095-44F2-8106-46A69D5ECF94}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{1B8B3C1D-8095-44F2-8106-46A69D5ECF94}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{1B8B3C1D-8095-44F2-8106-46A69D5ECF94}.Debug|x86.ActiveCfg = Debug|Any CPU
{1B8B3C1D-8095-44F2-8106-46A69D5ECF94}.Debug|x86.Build.0 = Debug|Any CPU
{1B8B3C1D-8095-44F2-8106-46A69D5ECF94}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1B8B3C1D-8095-44F2-8106-46A69D5ECF94}.Release|Any CPU.Build.0 = Release|Any CPU
{1B8B3C1D-8095-44F2-8106-46A69D5ECF94}.Release|iPhone.ActiveCfg = Release|Any CPU
{1B8B3C1D-8095-44F2-8106-46A69D5ECF94}.Release|iPhone.Build.0 = Release|Any CPU
{1B8B3C1D-8095-44F2-8106-46A69D5ECF94}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{1B8B3C1D-8095-44F2-8106-46A69D5ECF94}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{1B8B3C1D-8095-44F2-8106-46A69D5ECF94}.Release|x86.ActiveCfg = Release|Any CPU
{1B8B3C1D-8095-44F2-8106-46A69D5ECF94}.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
{B355E372-27D2-4217-A129-D3355573681F}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{B355E372-27D2-4217-A129-D3355573681F}.Debug|iPhone.Build.0 = Debug|Any CPU
{B355E372-27D2-4217-A129-D3355573681F}.Debug|iPhone.Deploy.0 = Debug|Any CPU
{B355E372-27D2-4217-A129-D3355573681F}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{B355E372-27D2-4217-A129-D3355573681F}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{B355E372-27D2-4217-A129-D3355573681F}.Debug|iPhoneSimulator.Deploy.0 = Debug|Any CPU
{B355E372-27D2-4217-A129-D3355573681F}.Debug|x86.ActiveCfg = Debug|Any CPU
{B355E372-27D2-4217-A129-D3355573681F}.Debug|x86.Build.0 = Debug|Any CPU
{B355E372-27D2-4217-A129-D3355573681F}.Debug|x86.Deploy.0 = Debug|Any CPU
{B355E372-27D2-4217-A129-D3355573681F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B355E372-27D2-4217-A129-D3355573681F}.Release|Any CPU.Build.0 = Release|Any CPU
{B355E372-27D2-4217-A129-D3355573681F}.Release|Any CPU.Deploy.0 = Release|Any CPU
{B355E372-27D2-4217-A129-D3355573681F}.Release|iPhone.ActiveCfg = Release|Any CPU
{B355E372-27D2-4217-A129-D3355573681F}.Release|iPhone.Build.0 = Release|Any CPU
{B355E372-27D2-4217-A129-D3355573681F}.Release|iPhone.Deploy.0 = Release|Any CPU
{B355E372-27D2-4217-A129-D3355573681F}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{B355E372-27D2-4217-A129-D3355573681F}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{B355E372-27D2-4217-A129-D3355573681F}.Release|iPhoneSimulator.Deploy.0 = Release|Any CPU
{B355E372-27D2-4217-A129-D3355573681F}.Release|x86.ActiveCfg = Release|Any CPU
{B355E372-27D2-4217-A129-D3355573681F}.Release|x86.Build.0 = Release|Any CPU
{B355E372-27D2-4217-A129-D3355573681F}.Release|x86.Deploy.0 = Release|Any CPU
{AFC828ED-21EE-4FD4-A40D-FEFED5EED4EA}.Debug|Any CPU.ActiveCfg = Debug|iPhoneSimulator
{AFC828ED-21EE-4FD4-A40D-FEFED5EED4EA}.Debug|iPhone.ActiveCfg = Debug|iPhone
{AFC828ED-21EE-4FD4-A40D-FEFED5EED4EA}.Debug|iPhone.Build.0 = Debug|iPhone
{AFC828ED-21EE-4FD4-A40D-FEFED5EED4EA}.Debug|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator
{AFC828ED-21EE-4FD4-A40D-FEFED5EED4EA}.Debug|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator
{AFC828ED-21EE-4FD4-A40D-FEFED5EED4EA}.Debug|x86.ActiveCfg = Debug|iPhoneSimulator
{AFC828ED-21EE-4FD4-A40D-FEFED5EED4EA}.Release|Any CPU.ActiveCfg = Release|iPhoneSimulator
{AFC828ED-21EE-4FD4-A40D-FEFED5EED4EA}.Release|iPhone.ActiveCfg = Release|iPhone
{AFC828ED-21EE-4FD4-A40D-FEFED5EED4EA}.Release|iPhone.Build.0 = Release|iPhone
{AFC828ED-21EE-4FD4-A40D-FEFED5EED4EA}.Release|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator
{AFC828ED-21EE-4FD4-A40D-FEFED5EED4EA}.Release|iPhoneSimulator.Build.0 = Release|iPhoneSimulator
{AFC828ED-21EE-4FD4-A40D-FEFED5EED4EA}.Release|x86.ActiveCfg = Release|iPhoneSimulator
{981AB416-A954-4A68-9521-BC71C5AEE058}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{981AB416-A954-4A68-9521-BC71C5AEE058}.Debug|Any CPU.Build.0 = Debug|Any CPU
{981AB416-A954-4A68-9521-BC71C5AEE058}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{981AB416-A954-4A68-9521-BC71C5AEE058}.Debug|iPhone.Build.0 = Debug|Any CPU
{981AB416-A954-4A68-9521-BC71C5AEE058}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{981AB416-A954-4A68-9521-BC71C5AEE058}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{981AB416-A954-4A68-9521-BC71C5AEE058}.Debug|x86.ActiveCfg = Debug|Any CPU
{981AB416-A954-4A68-9521-BC71C5AEE058}.Debug|x86.Build.0 = Debug|Any CPU
{981AB416-A954-4A68-9521-BC71C5AEE058}.Release|Any CPU.ActiveCfg = Release|Any CPU
{981AB416-A954-4A68-9521-BC71C5AEE058}.Release|Any CPU.Build.0 = Release|Any CPU
{981AB416-A954-4A68-9521-BC71C5AEE058}.Release|iPhone.ActiveCfg = Release|Any CPU
{981AB416-A954-4A68-9521-BC71C5AEE058}.Release|iPhone.Build.0 = Release|Any CPU
{981AB416-A954-4A68-9521-BC71C5AEE058}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{981AB416-A954-4A68-9521-BC71C5AEE058}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{981AB416-A954-4A68-9521-BC71C5AEE058}.Release|x86.ActiveCfg = Release|Any CPU
{981AB416-A954-4A68-9521-BC71C5AEE058}.Release|x86.Build.0 = Release|Any CPU
{90E4B24A-8A7E-4163-837B-BEC7419A7A97}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{90E4B24A-8A7E-4163-837B-BEC7419A7A97}.Debug|Any CPU.Build.0 = Debug|Any CPU
{90E4B24A-8A7E-4163-837B-BEC7419A7A97}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{90E4B24A-8A7E-4163-837B-BEC7419A7A97}.Debug|iPhone.Build.0 = Debug|Any CPU
{90E4B24A-8A7E-4163-837B-BEC7419A7A97}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{90E4B24A-8A7E-4163-837B-BEC7419A7A97}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{90E4B24A-8A7E-4163-837B-BEC7419A7A97}.Debug|x86.ActiveCfg = Debug|Any CPU
{90E4B24A-8A7E-4163-837B-BEC7419A7A97}.Debug|x86.Build.0 = Debug|Any CPU
{90E4B24A-8A7E-4163-837B-BEC7419A7A97}.Release|Any CPU.ActiveCfg = Release|Any CPU
{90E4B24A-8A7E-4163-837B-BEC7419A7A97}.Release|Any CPU.Build.0 = Release|Any CPU
{90E4B24A-8A7E-4163-837B-BEC7419A7A97}.Release|iPhone.ActiveCfg = Release|Any CPU
{90E4B24A-8A7E-4163-837B-BEC7419A7A97}.Release|iPhone.Build.0 = Release|Any CPU
{90E4B24A-8A7E-4163-837B-BEC7419A7A97}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{90E4B24A-8A7E-4163-837B-BEC7419A7A97}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{90E4B24A-8A7E-4163-837B-BEC7419A7A97}.Release|x86.ActiveCfg = Release|Any CPU
{90E4B24A-8A7E-4163-837B-BEC7419A7A97}.Release|x86.Build.0 = Release|Any CPU
{B626F392-53EF-4894-B7AD-E6AFBFA68E8C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B626F392-53EF-4894-B7AD-E6AFBFA68E8C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B626F392-53EF-4894-B7AD-E6AFBFA68E8C}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{B626F392-53EF-4894-B7AD-E6AFBFA68E8C}.Debug|iPhone.Build.0 = Debug|Any CPU
{B626F392-53EF-4894-B7AD-E6AFBFA68E8C}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{B626F392-53EF-4894-B7AD-E6AFBFA68E8C}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{B626F392-53EF-4894-B7AD-E6AFBFA68E8C}.Debug|x86.ActiveCfg = Debug|Any CPU
{B626F392-53EF-4894-B7AD-E6AFBFA68E8C}.Debug|x86.Build.0 = Debug|Any CPU
{B626F392-53EF-4894-B7AD-E6AFBFA68E8C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B626F392-53EF-4894-B7AD-E6AFBFA68E8C}.Release|Any CPU.Build.0 = Release|Any CPU
{B626F392-53EF-4894-B7AD-E6AFBFA68E8C}.Release|iPhone.ActiveCfg = Release|Any CPU
{B626F392-53EF-4894-B7AD-E6AFBFA68E8C}.Release|iPhone.Build.0 = Release|Any CPU
{B626F392-53EF-4894-B7AD-E6AFBFA68E8C}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{B626F392-53EF-4894-B7AD-E6AFBFA68E8C}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{B626F392-53EF-4894-B7AD-E6AFBFA68E8C}.Release|x86.ActiveCfg = Release|Any CPU
{B626F392-53EF-4894-B7AD-E6AFBFA68E8C}.Release|x86.Build.0 = Release|Any CPU
{314F0805-EB94-4685-B0EF-BF9418D19003}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{314F0805-EB94-4685-B0EF-BF9418D19003}.Debug|Any CPU.Build.0 = Debug|Any CPU
{314F0805-EB94-4685-B0EF-BF9418D19003}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{314F0805-EB94-4685-B0EF-BF9418D19003}.Debug|iPhone.Build.0 = Debug|Any CPU
{314F0805-EB94-4685-B0EF-BF9418D19003}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{314F0805-EB94-4685-B0EF-BF9418D19003}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{314F0805-EB94-4685-B0EF-BF9418D19003}.Debug|x86.ActiveCfg = Debug|Any CPU
{314F0805-EB94-4685-B0EF-BF9418D19003}.Debug|x86.Build.0 = Debug|Any CPU
{314F0805-EB94-4685-B0EF-BF9418D19003}.Release|Any CPU.ActiveCfg = Release|Any CPU
{314F0805-EB94-4685-B0EF-BF9418D19003}.Release|Any CPU.Build.0 = Release|Any CPU
{314F0805-EB94-4685-B0EF-BF9418D19003}.Release|iPhone.ActiveCfg = Release|Any CPU
{314F0805-EB94-4685-B0EF-BF9418D19003}.Release|iPhone.Build.0 = Release|Any CPU
{314F0805-EB94-4685-B0EF-BF9418D19003}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{314F0805-EB94-4685-B0EF-BF9418D19003}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{314F0805-EB94-4685-B0EF-BF9418D19003}.Release|x86.ActiveCfg = Release|Any CPU
{314F0805-EB94-4685-B0EF-BF9418D19003}.Release|x86.Build.0 = Release|Any CPU
{6E3D25E9-544E-498A-8F23-BC4E767FF01B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{6E3D25E9-544E-498A-8F23-BC4E767FF01B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{6E3D25E9-544E-498A-8F23-BC4E767FF01B}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{6E3D25E9-544E-498A-8F23-BC4E767FF01B}.Debug|iPhone.Build.0 = Debug|Any CPU
{6E3D25E9-544E-498A-8F23-BC4E767FF01B}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{6E3D25E9-544E-498A-8F23-BC4E767FF01B}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{6E3D25E9-544E-498A-8F23-BC4E767FF01B}.Debug|x86.ActiveCfg = Debug|Any CPU
{6E3D25E9-544E-498A-8F23-BC4E767FF01B}.Debug|x86.Build.0 = Debug|Any CPU
{6E3D25E9-544E-498A-8F23-BC4E767FF01B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{6E3D25E9-544E-498A-8F23-BC4E767FF01B}.Release|Any CPU.Build.0 = Release|Any CPU
{6E3D25E9-544E-498A-8F23-BC4E767FF01B}.Release|iPhone.ActiveCfg = Release|Any CPU
{6E3D25E9-544E-498A-8F23-BC4E767FF01B}.Release|iPhone.Build.0 = Release|Any CPU
{6E3D25E9-544E-498A-8F23-BC4E767FF01B}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{6E3D25E9-544E-498A-8F23-BC4E767FF01B}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{6E3D25E9-544E-498A-8F23-BC4E767FF01B}.Release|x86.ActiveCfg = Release|Any CPU
{6E3D25E9-544E-498A-8F23-BC4E767FF01B}.Release|x86.Build.0 = Release|Any CPU
{71F3F25A-47A7-4F3D-97A7-50394E7EE21B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{71F3F25A-47A7-4F3D-97A7-50394E7EE21B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{71F3F25A-47A7-4F3D-97A7-50394E7EE21B}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{71F3F25A-47A7-4F3D-97A7-50394E7EE21B}.Debug|iPhone.Build.0 = Debug|Any CPU
{71F3F25A-47A7-4F3D-97A7-50394E7EE21B}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{71F3F25A-47A7-4F3D-97A7-50394E7EE21B}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{71F3F25A-47A7-4F3D-97A7-50394E7EE21B}.Debug|x86.ActiveCfg = Debug|Any CPU
{71F3F25A-47A7-4F3D-97A7-50394E7EE21B}.Debug|x86.Build.0 = Debug|Any CPU
{71F3F25A-47A7-4F3D-97A7-50394E7EE21B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{71F3F25A-47A7-4F3D-97A7-50394E7EE21B}.Release|Any CPU.Build.0 = Release|Any CPU
{71F3F25A-47A7-4F3D-97A7-50394E7EE21B}.Release|iPhone.ActiveCfg = Release|Any CPU
{71F3F25A-47A7-4F3D-97A7-50394E7EE21B}.Release|iPhone.Build.0 = Release|Any CPU
{71F3F25A-47A7-4F3D-97A7-50394E7EE21B}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{71F3F25A-47A7-4F3D-97A7-50394E7EE21B}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{71F3F25A-47A7-4F3D-97A7-50394E7EE21B}.Release|x86.ActiveCfg = Release|Any CPU
{71F3F25A-47A7-4F3D-97A7-50394E7EE21B}.Release|x86.Build.0 = Release|Any CPU
{09591D9E-2186-42F1-B6C6-375326E2CF2E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{09591D9E-2186-42F1-B6C6-375326E2CF2E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{09591D9E-2186-42F1-B6C6-375326E2CF2E}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{09591D9E-2186-42F1-B6C6-375326E2CF2E}.Debug|iPhone.Build.0 = Debug|Any CPU
{09591D9E-2186-42F1-B6C6-375326E2CF2E}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{09591D9E-2186-42F1-B6C6-375326E2CF2E}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{09591D9E-2186-42F1-B6C6-375326E2CF2E}.Debug|x86.ActiveCfg = Debug|Any CPU
{09591D9E-2186-42F1-B6C6-375326E2CF2E}.Debug|x86.Build.0 = Debug|Any CPU
{09591D9E-2186-42F1-B6C6-375326E2CF2E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{09591D9E-2186-42F1-B6C6-375326E2CF2E}.Release|Any CPU.Build.0 = Release|Any CPU
{09591D9E-2186-42F1-B6C6-375326E2CF2E}.Release|iPhone.ActiveCfg = Release|Any CPU
{09591D9E-2186-42F1-B6C6-375326E2CF2E}.Release|iPhone.Build.0 = Release|Any CPU
{09591D9E-2186-42F1-B6C6-375326E2CF2E}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{09591D9E-2186-42F1-B6C6-375326E2CF2E}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{09591D9E-2186-42F1-B6C6-375326E2CF2E}.Release|x86.ActiveCfg = Release|Any CPU
{09591D9E-2186-42F1-B6C6-375326E2CF2E}.Release|x86.Build.0 = Release|Any CPU
{38A8EE9F-81A8-4B11-A6E9-864A12C43089}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{38A8EE9F-81A8-4B11-A6E9-864A12C43089}.Debug|Any CPU.Build.0 = Debug|Any CPU
{38A8EE9F-81A8-4B11-A6E9-864A12C43089}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{38A8EE9F-81A8-4B11-A6E9-864A12C43089}.Debug|iPhone.Build.0 = Debug|Any CPU
{38A8EE9F-81A8-4B11-A6E9-864A12C43089}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{38A8EE9F-81A8-4B11-A6E9-864A12C43089}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{38A8EE9F-81A8-4B11-A6E9-864A12C43089}.Debug|x86.ActiveCfg = Debug|Any CPU
{38A8EE9F-81A8-4B11-A6E9-864A12C43089}.Debug|x86.Build.0 = Debug|Any CPU
{38A8EE9F-81A8-4B11-A6E9-864A12C43089}.Release|Any CPU.ActiveCfg = Release|Any CPU
{38A8EE9F-81A8-4B11-A6E9-864A12C43089}.Release|Any CPU.Build.0 = Release|Any CPU
{38A8EE9F-81A8-4B11-A6E9-864A12C43089}.Release|iPhone.ActiveCfg = Release|Any CPU
{38A8EE9F-81A8-4B11-A6E9-864A12C43089}.Release|iPhone.Build.0 = Release|Any CPU
{38A8EE9F-81A8-4B11-A6E9-864A12C43089}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{38A8EE9F-81A8-4B11-A6E9-864A12C43089}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{38A8EE9F-81A8-4B11-A6E9-864A12C43089}.Release|x86.ActiveCfg = Release|Any CPU
{38A8EE9F-81A8-4B11-A6E9-864A12C43089}.Release|x86.Build.0 = Release|Any CPU
{5E8F54E8-02A6-45D9-A7F9-7C9B43705BE1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{5E8F54E8-02A6-45D9-A7F9-7C9B43705BE1}.Debug|Any CPU.Build.0 = Debug|Any CPU
{5E8F54E8-02A6-45D9-A7F9-7C9B43705BE1}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{5E8F54E8-02A6-45D9-A7F9-7C9B43705BE1}.Debug|iPhone.Build.0 = Debug|Any CPU
{5E8F54E8-02A6-45D9-A7F9-7C9B43705BE1}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{5E8F54E8-02A6-45D9-A7F9-7C9B43705BE1}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{5E8F54E8-02A6-45D9-A7F9-7C9B43705BE1}.Debug|x86.ActiveCfg = Debug|Any CPU
{5E8F54E8-02A6-45D9-A7F9-7C9B43705BE1}.Debug|x86.Build.0 = Debug|Any CPU
{5E8F54E8-02A6-45D9-A7F9-7C9B43705BE1}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5E8F54E8-02A6-45D9-A7F9-7C9B43705BE1}.Release|Any CPU.Build.0 = Release|Any CPU
{5E8F54E8-02A6-45D9-A7F9-7C9B43705BE1}.Release|iPhone.ActiveCfg = Release|Any CPU
{5E8F54E8-02A6-45D9-A7F9-7C9B43705BE1}.Release|iPhone.Build.0 = Release|Any CPU
{5E8F54E8-02A6-45D9-A7F9-7C9B43705BE1}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{5E8F54E8-02A6-45D9-A7F9-7C9B43705BE1}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{5E8F54E8-02A6-45D9-A7F9-7C9B43705BE1}.Release|x86.ActiveCfg = Release|Any CPU
{5E8F54E8-02A6-45D9-A7F9-7C9B43705BE1}.Release|x86.Build.0 = Release|Any CPU
{CFDEC4A2-2757-403D-B90B-1846BCEE1EC4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{CFDEC4A2-2757-403D-B90B-1846BCEE1EC4}.Debug|Any CPU.Build.0 = Debug|Any CPU
{CFDEC4A2-2757-403D-B90B-1846BCEE1EC4}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{CFDEC4A2-2757-403D-B90B-1846BCEE1EC4}.Debug|iPhone.Build.0 = Debug|Any CPU
{CFDEC4A2-2757-403D-B90B-1846BCEE1EC4}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{CFDEC4A2-2757-403D-B90B-1846BCEE1EC4}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{CFDEC4A2-2757-403D-B90B-1846BCEE1EC4}.Debug|x86.ActiveCfg = Debug|x86
{CFDEC4A2-2757-403D-B90B-1846BCEE1EC4}.Debug|x86.Build.0 = Debug|x86
{CFDEC4A2-2757-403D-B90B-1846BCEE1EC4}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CFDEC4A2-2757-403D-B90B-1846BCEE1EC4}.Release|Any CPU.Build.0 = Release|Any CPU
{CFDEC4A2-2757-403D-B90B-1846BCEE1EC4}.Release|iPhone.ActiveCfg = Release|Any CPU
{CFDEC4A2-2757-403D-B90B-1846BCEE1EC4}.Release|iPhone.Build.0 = Release|Any CPU
{CFDEC4A2-2757-403D-B90B-1846BCEE1EC4}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{CFDEC4A2-2757-403D-B90B-1846BCEE1EC4}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{CFDEC4A2-2757-403D-B90B-1846BCEE1EC4}.Release|x86.ActiveCfg = Release|x86
{CFDEC4A2-2757-403D-B90B-1846BCEE1EC4}.Release|x86.Build.0 = Release|x86
{E21D0376-0A18-4F46-9ED7-BE4466763B2D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E21D0376-0A18-4F46-9ED7-BE4466763B2D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E21D0376-0A18-4F46-9ED7-BE4466763B2D}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{E21D0376-0A18-4F46-9ED7-BE4466763B2D}.Debug|iPhone.Build.0 = Debug|Any CPU
{E21D0376-0A18-4F46-9ED7-BE4466763B2D}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{E21D0376-0A18-4F46-9ED7-BE4466763B2D}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{E21D0376-0A18-4F46-9ED7-BE4466763B2D}.Debug|x86.ActiveCfg = Debug|Any CPU
{E21D0376-0A18-4F46-9ED7-BE4466763B2D}.Debug|x86.Build.0 = Debug|Any CPU
{E21D0376-0A18-4F46-9ED7-BE4466763B2D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E21D0376-0A18-4F46-9ED7-BE4466763B2D}.Release|Any CPU.Build.0 = Release|Any CPU
{E21D0376-0A18-4F46-9ED7-BE4466763B2D}.Release|iPhone.ActiveCfg = Release|Any CPU
{E21D0376-0A18-4F46-9ED7-BE4466763B2D}.Release|iPhone.Build.0 = Release|Any CPU
{E21D0376-0A18-4F46-9ED7-BE4466763B2D}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{E21D0376-0A18-4F46-9ED7-BE4466763B2D}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{E21D0376-0A18-4F46-9ED7-BE4466763B2D}.Release|x86.ActiveCfg = Release|Any CPU
{E21D0376-0A18-4F46-9ED7-BE4466763B2D}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{512B0511-41AB-444D-BAD8-E19B7D3B52CB} = {2D44BDCF-B70C-4C02-BDC8-4F1DD5066A75}
{8B9F2E93-B31B-4BA7-920D-732695A473E6} = {2D44BDCF-B70C-4C02-BDC8-4F1DD5066A75}
{E7468FDD-75F7-4B08-BA47-B715BBCFCC11} = {2D44BDCF-B70C-4C02-BDC8-4F1DD5066A75}
{7C8D906E-426B-49AB-9072-178555370F62} = {2D44BDCF-B70C-4C02-BDC8-4F1DD5066A75}
{F8F6973C-5831-43D1-89C2-1AD543CE7408} = {2D44BDCF-B70C-4C02-BDC8-4F1DD5066A75}
{6CD71E14-5036-4A16-8084-4AD108D34FF7} = {B43459A1-709B-4623-9677-AAC2FEE4FBA3}
{65DE552F-5E62-4E4F-ADCB-F19AD3DB3F78} = {B43459A1-709B-4623-9677-AAC2FEE4FBA3}
{B9D4C8C7-BF96-417B-A7F8-9A67AE75A38B} = {EBC9DD0C-F7D0-4A00-B263-E69CF4E194F1}
{0073A08E-6336-4C09-99F9-2E808889D715} = {EBC9DD0C-F7D0-4A00-B263-E69CF4E194F1}
{AD7B78B0-AE51-4FB7-9B11-4E22A2B538CA} = {EBC9DD0C-F7D0-4A00-B263-E69CF4E194F1}
{66B7BFD6-6D4D-421B-BA5B-915348E53708} = {B43459A1-709B-4623-9677-AAC2FEE4FBA3}
{0A624994-B0A9-4F1F-B7D0-97FE2929936B} = {B43459A1-709B-4623-9677-AAC2FEE4FBA3}
{D1F15D97-802E-4AA3-A4A5-B890ABE32897} = {B43459A1-709B-4623-9677-AAC2FEE4FBA3}
{4F09B6D1-3F83-45A0-AEC8-0F243E7CD263} = {B43459A1-709B-4623-9677-AAC2FEE4FBA3}
{D4CF08F5-8EAB-48FB-AAA3-1A221F7B2A82} = {B43459A1-709B-4623-9677-AAC2FEE4FBA3}
{948C1EA8-12DB-4F8A-A190-8615DFBD9FE4} = {B43459A1-709B-4623-9677-AAC2FEE4FBA3}
{141532E1-540E-4E50-8723-96936C191281} = {B43459A1-709B-4623-9677-AAC2FEE4FBA3}
{D018C980-17FD-49BB-A95D-EDE3C18BBE0A} = {8EB91F53-1062-4E9B-8E4A-096F35EA688D}
{6DD9644F-F005-4C19-8ADF-70C303EC5BB8} = {8EB91F53-1062-4E9B-8E4A-096F35EA688D}
{3C05CED6-7712-40F0-AF17-8DD3F4C0A224} = {8EB91F53-1062-4E9B-8E4A-096F35EA688D}
{35D60129-6652-4B6E-A04A-9766C3CF1869} = {8EB91F53-1062-4E9B-8E4A-096F35EA688D}
{CF7C2B80-D393-45EA-A67D-DF46FF17B0F8} = {5A7A506C-4DFF-4941-A9A6-B1182C7D5825}
{8EDF4429-251A-416D-BB68-93F227191BCF} = {EBC9DD0C-F7D0-4A00-B263-E69CF4E194F1}
{ABAF70E5-A582-4916-B217-6A660BB31D52} = {5A7A506C-4DFF-4941-A9A6-B1182C7D5825}
{64F63608-1390-41D1-8568-F4E05AE35E75} = {B43459A1-709B-4623-9677-AAC2FEE4FBA3}
{A040865C-FA5F-486A-9CC9-96CF34859FBD} = {B43459A1-709B-4623-9677-AAC2FEE4FBA3}
{1B8B3C1D-8095-44F2-8106-46A69D5ECF94} = {B43459A1-709B-4623-9677-AAC2FEE4FBA3}
{981AB416-A954-4A68-9521-BC71C5AEE058} = {5A7A506C-4DFF-4941-A9A6-B1182C7D5825}
{90E4B24A-8A7E-4163-837B-BEC7419A7A97} = {B43459A1-709B-4623-9677-AAC2FEE4FBA3}
{B626F392-53EF-4894-B7AD-E6AFBFA68E8C} = {8EB91F53-1062-4E9B-8E4A-096F35EA688D}
{314F0805-EB94-4685-B0EF-BF9418D19003} = {2D44BDCF-B70C-4C02-BDC8-4F1DD5066A75}
{6E3D25E9-544E-498A-8F23-BC4E767FF01B} = {5A7A506C-4DFF-4941-A9A6-B1182C7D5825}
{71F3F25A-47A7-4F3D-97A7-50394E7EE21B} = {8EB91F53-1062-4E9B-8E4A-096F35EA688D}
{09591D9E-2186-42F1-B6C6-375326E2CF2E} = {8EB91F53-1062-4E9B-8E4A-096F35EA688D}
{38A8EE9F-81A8-4B11-A6E9-864A12C43089} = {8EB91F53-1062-4E9B-8E4A-096F35EA688D}
{5E8F54E8-02A6-45D9-A7F9-7C9B43705BE1} = {5A7A506C-4DFF-4941-A9A6-B1182C7D5825}
{E21D0376-0A18-4F46-9ED7-BE4466763B2D} = {EBC9DD0C-F7D0-4A00-B263-E69CF4E194F1}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {3833E7C5-69BC-4CB3-92CE-A8854AA35D8A}
EndGlobalSection
EndGlobal
+80
View File
@@ -63,6 +63,12 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ST.Tools.AreaImport", "src\
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CefNet.Avalonia", "references\CefNet\CefNet.Avalonia\CefNet.Avalonia.csproj", "{9A533027-82BD-40CB-BB32-77F75F6FDDC7}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ST.Client.Desktop.Console.App", "src\ST.Client.Desktop.Console.App\ST.Client.Desktop.Console.App.csproj", "{A621E551-010C-4397-9C15-66D470B4D98E}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AvaloniaGif", "references\AvaloniaGif\AvaloniaGif\AvaloniaGif.csproj", "{FD444E97-E851-4FF2-A3F1-498C6A3BF098}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ST.Client.Desktop.UnitTest", "tests\ST.Client.Desktop.UnitTest\ST.Client.Desktop.UnitTest.csproj", "{B8597B2B-12B4-4B44-9F37-98BAF3CCD560}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -559,6 +565,78 @@ Global
{9A533027-82BD-40CB-BB32-77F75F6FDDC7}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{9A533027-82BD-40CB-BB32-77F75F6FDDC7}.Release|x86.ActiveCfg = Release|Any CPU
{9A533027-82BD-40CB-BB32-77F75F6FDDC7}.Release|x86.Build.0 = Release|Any CPU
{A621E551-010C-4397-9C15-66D470B4D98E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A621E551-010C-4397-9C15-66D470B4D98E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A621E551-010C-4397-9C15-66D470B4D98E}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{A621E551-010C-4397-9C15-66D470B4D98E}.Debug|iPhone.Build.0 = Debug|Any CPU
{A621E551-010C-4397-9C15-66D470B4D98E}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{A621E551-010C-4397-9C15-66D470B4D98E}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{A621E551-010C-4397-9C15-66D470B4D98E}.Debug|x86.ActiveCfg = Debug|x86
{A621E551-010C-4397-9C15-66D470B4D98E}.Debug|x86.Build.0 = Debug|x86
{A621E551-010C-4397-9C15-66D470B4D98E}.Nuget_Release|Any CPU.ActiveCfg = Release|Any CPU
{A621E551-010C-4397-9C15-66D470B4D98E}.Nuget_Release|Any CPU.Build.0 = Release|Any CPU
{A621E551-010C-4397-9C15-66D470B4D98E}.Nuget_Release|iPhone.ActiveCfg = Release|Any CPU
{A621E551-010C-4397-9C15-66D470B4D98E}.Nuget_Release|iPhone.Build.0 = Release|Any CPU
{A621E551-010C-4397-9C15-66D470B4D98E}.Nuget_Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{A621E551-010C-4397-9C15-66D470B4D98E}.Nuget_Release|iPhoneSimulator.Build.0 = Release|Any CPU
{A621E551-010C-4397-9C15-66D470B4D98E}.Nuget_Release|x86.ActiveCfg = Release|x86
{A621E551-010C-4397-9C15-66D470B4D98E}.Nuget_Release|x86.Build.0 = Release|x86
{A621E551-010C-4397-9C15-66D470B4D98E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A621E551-010C-4397-9C15-66D470B4D98E}.Release|Any CPU.Build.0 = Release|Any CPU
{A621E551-010C-4397-9C15-66D470B4D98E}.Release|iPhone.ActiveCfg = Release|Any CPU
{A621E551-010C-4397-9C15-66D470B4D98E}.Release|iPhone.Build.0 = Release|Any CPU
{A621E551-010C-4397-9C15-66D470B4D98E}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{A621E551-010C-4397-9C15-66D470B4D98E}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{A621E551-010C-4397-9C15-66D470B4D98E}.Release|x86.ActiveCfg = Release|x86
{A621E551-010C-4397-9C15-66D470B4D98E}.Release|x86.Build.0 = Release|x86
{FD444E97-E851-4FF2-A3F1-498C6A3BF098}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{FD444E97-E851-4FF2-A3F1-498C6A3BF098}.Debug|Any CPU.Build.0 = Debug|Any CPU
{FD444E97-E851-4FF2-A3F1-498C6A3BF098}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{FD444E97-E851-4FF2-A3F1-498C6A3BF098}.Debug|iPhone.Build.0 = Debug|Any CPU
{FD444E97-E851-4FF2-A3F1-498C6A3BF098}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{FD444E97-E851-4FF2-A3F1-498C6A3BF098}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{FD444E97-E851-4FF2-A3F1-498C6A3BF098}.Debug|x86.ActiveCfg = Debug|Any CPU
{FD444E97-E851-4FF2-A3F1-498C6A3BF098}.Debug|x86.Build.0 = Debug|Any CPU
{FD444E97-E851-4FF2-A3F1-498C6A3BF098}.Nuget_Release|Any CPU.ActiveCfg = Release|Any CPU
{FD444E97-E851-4FF2-A3F1-498C6A3BF098}.Nuget_Release|Any CPU.Build.0 = Release|Any CPU
{FD444E97-E851-4FF2-A3F1-498C6A3BF098}.Nuget_Release|iPhone.ActiveCfg = Release|Any CPU
{FD444E97-E851-4FF2-A3F1-498C6A3BF098}.Nuget_Release|iPhone.Build.0 = Release|Any CPU
{FD444E97-E851-4FF2-A3F1-498C6A3BF098}.Nuget_Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{FD444E97-E851-4FF2-A3F1-498C6A3BF098}.Nuget_Release|iPhoneSimulator.Build.0 = Release|Any CPU
{FD444E97-E851-4FF2-A3F1-498C6A3BF098}.Nuget_Release|x86.ActiveCfg = Release|Any CPU
{FD444E97-E851-4FF2-A3F1-498C6A3BF098}.Nuget_Release|x86.Build.0 = Release|Any CPU
{FD444E97-E851-4FF2-A3F1-498C6A3BF098}.Release|Any CPU.ActiveCfg = Release|Any CPU
{FD444E97-E851-4FF2-A3F1-498C6A3BF098}.Release|Any CPU.Build.0 = Release|Any CPU
{FD444E97-E851-4FF2-A3F1-498C6A3BF098}.Release|iPhone.ActiveCfg = Release|Any CPU
{FD444E97-E851-4FF2-A3F1-498C6A3BF098}.Release|iPhone.Build.0 = Release|Any CPU
{FD444E97-E851-4FF2-A3F1-498C6A3BF098}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{FD444E97-E851-4FF2-A3F1-498C6A3BF098}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{FD444E97-E851-4FF2-A3F1-498C6A3BF098}.Release|x86.ActiveCfg = Release|Any CPU
{FD444E97-E851-4FF2-A3F1-498C6A3BF098}.Release|x86.Build.0 = Release|Any CPU
{B8597B2B-12B4-4B44-9F37-98BAF3CCD560}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B8597B2B-12B4-4B44-9F37-98BAF3CCD560}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B8597B2B-12B4-4B44-9F37-98BAF3CCD560}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{B8597B2B-12B4-4B44-9F37-98BAF3CCD560}.Debug|iPhone.Build.0 = Debug|Any CPU
{B8597B2B-12B4-4B44-9F37-98BAF3CCD560}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{B8597B2B-12B4-4B44-9F37-98BAF3CCD560}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{B8597B2B-12B4-4B44-9F37-98BAF3CCD560}.Debug|x86.ActiveCfg = Debug|Any CPU
{B8597B2B-12B4-4B44-9F37-98BAF3CCD560}.Debug|x86.Build.0 = Debug|Any CPU
{B8597B2B-12B4-4B44-9F37-98BAF3CCD560}.Nuget_Release|Any CPU.ActiveCfg = Release|Any CPU
{B8597B2B-12B4-4B44-9F37-98BAF3CCD560}.Nuget_Release|Any CPU.Build.0 = Release|Any CPU
{B8597B2B-12B4-4B44-9F37-98BAF3CCD560}.Nuget_Release|iPhone.ActiveCfg = Release|Any CPU
{B8597B2B-12B4-4B44-9F37-98BAF3CCD560}.Nuget_Release|iPhone.Build.0 = Release|Any CPU
{B8597B2B-12B4-4B44-9F37-98BAF3CCD560}.Nuget_Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{B8597B2B-12B4-4B44-9F37-98BAF3CCD560}.Nuget_Release|iPhoneSimulator.Build.0 = Release|Any CPU
{B8597B2B-12B4-4B44-9F37-98BAF3CCD560}.Nuget_Release|x86.ActiveCfg = Release|Any CPU
{B8597B2B-12B4-4B44-9F37-98BAF3CCD560}.Nuget_Release|x86.Build.0 = Release|Any CPU
{B8597B2B-12B4-4B44-9F37-98BAF3CCD560}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B8597B2B-12B4-4B44-9F37-98BAF3CCD560}.Release|Any CPU.Build.0 = Release|Any CPU
{B8597B2B-12B4-4B44-9F37-98BAF3CCD560}.Release|iPhone.ActiveCfg = Release|Any CPU
{B8597B2B-12B4-4B44-9F37-98BAF3CCD560}.Release|iPhone.Build.0 = Release|Any CPU
{B8597B2B-12B4-4B44-9F37-98BAF3CCD560}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{B8597B2B-12B4-4B44-9F37-98BAF3CCD560}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{B8597B2B-12B4-4B44-9F37-98BAF3CCD560}.Release|x86.ActiveCfg = Release|Any CPU
{B8597B2B-12B4-4B44-9F37-98BAF3CCD560}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -582,6 +660,8 @@ Global
{4190F5AE-FFF1-4CB5-A433-FF5403E2BE24} = {2D44BDCF-B70C-4C02-BDC8-4F1DD5066A75}
{536A0A61-97A8-44E9-8258-9D508D54B44B} = {5A7A506C-4DFF-4941-A9A6-B1182C7D5825}
{9A533027-82BD-40CB-BB32-77F75F6FDDC7} = {8EB91F53-1062-4E9B-8E4A-096F35EA688D}
{FD444E97-E851-4FF2-A3F1-498C6A3BF098} = {8EB91F53-1062-4E9B-8E4A-096F35EA688D}
{B8597B2B-12B4-4B44-9F37-98BAF3CCD560} = {EBC9DD0C-F7D0-4A00-B263-E69CF4E194F1}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {3833E7C5-69BC-4CB3-92CE-A8854AA35D8A}
+37 -348
View File
@@ -107,16 +107,16 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CefNet.Avalonia", "referenc
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ST.Tools.MinifyStaticSites", "src\ST.Tools.MinifyStaticSites\ST.Tools.MinifyStaticSites.csproj", "{5E8F54E8-02A6-45D9-A7F9-7C9B43705BE1}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ST.Client.Desktop.Console.App", "src\ST.Client.Desktop.Console.App\ST.Client.Desktop.Console.App.csproj", "{7F104A37-93AF-4EF8-93EA-E8BD76FE8973}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ST.Client.Desktop.UnitTest", "tests\ST.Client.Desktop.UnitTest\ST.Client.Desktop.UnitTest.csproj", "{F544C06A-152E-48CE-9716-8B92F5CB51FF}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Debug|iPhone = Debug|iPhone
Debug|iPhoneSimulator = Debug|iPhoneSimulator
Debug|x86 = Debug|x86
Nuget_Release|Any CPU = Nuget_Release|Any CPU
Nuget_Release|iPhone = Nuget_Release|iPhone
Nuget_Release|iPhoneSimulator = Nuget_Release|iPhoneSimulator
Nuget_Release|x86 = Nuget_Release|x86
Release|Any CPU = Release|Any CPU
Release|iPhone = Release|iPhone
Release|iPhoneSimulator = Release|iPhoneSimulator
@@ -131,14 +131,6 @@ Global
{512B0511-41AB-444D-BAD8-E19B7D3B52CB}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{512B0511-41AB-444D-BAD8-E19B7D3B52CB}.Debug|x86.ActiveCfg = Debug|Any CPU
{512B0511-41AB-444D-BAD8-E19B7D3B52CB}.Debug|x86.Build.0 = Debug|Any CPU
{512B0511-41AB-444D-BAD8-E19B7D3B52CB}.Nuget_Release|Any CPU.ActiveCfg = Release|Any CPU
{512B0511-41AB-444D-BAD8-E19B7D3B52CB}.Nuget_Release|Any CPU.Build.0 = Release|Any CPU
{512B0511-41AB-444D-BAD8-E19B7D3B52CB}.Nuget_Release|iPhone.ActiveCfg = Release|Any CPU
{512B0511-41AB-444D-BAD8-E19B7D3B52CB}.Nuget_Release|iPhone.Build.0 = Release|Any CPU
{512B0511-41AB-444D-BAD8-E19B7D3B52CB}.Nuget_Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{512B0511-41AB-444D-BAD8-E19B7D3B52CB}.Nuget_Release|iPhoneSimulator.Build.0 = Release|Any CPU
{512B0511-41AB-444D-BAD8-E19B7D3B52CB}.Nuget_Release|x86.ActiveCfg = Release|Any CPU
{512B0511-41AB-444D-BAD8-E19B7D3B52CB}.Nuget_Release|x86.Build.0 = Release|Any CPU
{512B0511-41AB-444D-BAD8-E19B7D3B52CB}.Release|Any CPU.ActiveCfg = Release|Any CPU
{512B0511-41AB-444D-BAD8-E19B7D3B52CB}.Release|Any CPU.Build.0 = Release|Any CPU
{512B0511-41AB-444D-BAD8-E19B7D3B52CB}.Release|iPhone.ActiveCfg = Release|Any CPU
@@ -155,14 +147,6 @@ Global
{8B9F2E93-B31B-4BA7-920D-732695A473E6}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{8B9F2E93-B31B-4BA7-920D-732695A473E6}.Debug|x86.ActiveCfg = Debug|Any CPU
{8B9F2E93-B31B-4BA7-920D-732695A473E6}.Debug|x86.Build.0 = Debug|Any CPU
{8B9F2E93-B31B-4BA7-920D-732695A473E6}.Nuget_Release|Any CPU.ActiveCfg = Release|Any CPU
{8B9F2E93-B31B-4BA7-920D-732695A473E6}.Nuget_Release|Any CPU.Build.0 = Release|Any CPU
{8B9F2E93-B31B-4BA7-920D-732695A473E6}.Nuget_Release|iPhone.ActiveCfg = Release|Any CPU
{8B9F2E93-B31B-4BA7-920D-732695A473E6}.Nuget_Release|iPhone.Build.0 = Release|Any CPU
{8B9F2E93-B31B-4BA7-920D-732695A473E6}.Nuget_Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{8B9F2E93-B31B-4BA7-920D-732695A473E6}.Nuget_Release|iPhoneSimulator.Build.0 = Release|Any CPU
{8B9F2E93-B31B-4BA7-920D-732695A473E6}.Nuget_Release|x86.ActiveCfg = Release|Any CPU
{8B9F2E93-B31B-4BA7-920D-732695A473E6}.Nuget_Release|x86.Build.0 = Release|Any CPU
{8B9F2E93-B31B-4BA7-920D-732695A473E6}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8B9F2E93-B31B-4BA7-920D-732695A473E6}.Release|Any CPU.Build.0 = Release|Any CPU
{8B9F2E93-B31B-4BA7-920D-732695A473E6}.Release|iPhone.ActiveCfg = Release|Any CPU
@@ -179,14 +163,6 @@ Global
{E7468FDD-75F7-4B08-BA47-B715BBCFCC11}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{E7468FDD-75F7-4B08-BA47-B715BBCFCC11}.Debug|x86.ActiveCfg = Debug|Any CPU
{E7468FDD-75F7-4B08-BA47-B715BBCFCC11}.Debug|x86.Build.0 = Debug|Any CPU
{E7468FDD-75F7-4B08-BA47-B715BBCFCC11}.Nuget_Release|Any CPU.ActiveCfg = Release|Any CPU
{E7468FDD-75F7-4B08-BA47-B715BBCFCC11}.Nuget_Release|Any CPU.Build.0 = Release|Any CPU
{E7468FDD-75F7-4B08-BA47-B715BBCFCC11}.Nuget_Release|iPhone.ActiveCfg = Release|Any CPU
{E7468FDD-75F7-4B08-BA47-B715BBCFCC11}.Nuget_Release|iPhone.Build.0 = Release|Any CPU
{E7468FDD-75F7-4B08-BA47-B715BBCFCC11}.Nuget_Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{E7468FDD-75F7-4B08-BA47-B715BBCFCC11}.Nuget_Release|iPhoneSimulator.Build.0 = Release|Any CPU
{E7468FDD-75F7-4B08-BA47-B715BBCFCC11}.Nuget_Release|x86.ActiveCfg = Release|Any CPU
{E7468FDD-75F7-4B08-BA47-B715BBCFCC11}.Nuget_Release|x86.Build.0 = Release|Any CPU
{E7468FDD-75F7-4B08-BA47-B715BBCFCC11}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E7468FDD-75F7-4B08-BA47-B715BBCFCC11}.Release|Any CPU.Build.0 = Release|Any CPU
{E7468FDD-75F7-4B08-BA47-B715BBCFCC11}.Release|iPhone.ActiveCfg = Release|Any CPU
@@ -203,14 +179,6 @@ Global
{7C8D906E-426B-49AB-9072-178555370F62}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{7C8D906E-426B-49AB-9072-178555370F62}.Debug|x86.ActiveCfg = Debug|Any CPU
{7C8D906E-426B-49AB-9072-178555370F62}.Debug|x86.Build.0 = Debug|Any CPU
{7C8D906E-426B-49AB-9072-178555370F62}.Nuget_Release|Any CPU.ActiveCfg = Release|Any CPU
{7C8D906E-426B-49AB-9072-178555370F62}.Nuget_Release|Any CPU.Build.0 = Release|Any CPU
{7C8D906E-426B-49AB-9072-178555370F62}.Nuget_Release|iPhone.ActiveCfg = Release|Any CPU
{7C8D906E-426B-49AB-9072-178555370F62}.Nuget_Release|iPhone.Build.0 = Release|Any CPU
{7C8D906E-426B-49AB-9072-178555370F62}.Nuget_Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{7C8D906E-426B-49AB-9072-178555370F62}.Nuget_Release|iPhoneSimulator.Build.0 = Release|Any CPU
{7C8D906E-426B-49AB-9072-178555370F62}.Nuget_Release|x86.ActiveCfg = Release|Any CPU
{7C8D906E-426B-49AB-9072-178555370F62}.Nuget_Release|x86.Build.0 = Release|Any CPU
{7C8D906E-426B-49AB-9072-178555370F62}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7C8D906E-426B-49AB-9072-178555370F62}.Release|Any CPU.Build.0 = Release|Any CPU
{7C8D906E-426B-49AB-9072-178555370F62}.Release|iPhone.ActiveCfg = Release|Any CPU
@@ -227,14 +195,6 @@ Global
{F8F6973C-5831-43D1-89C2-1AD543CE7408}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{F8F6973C-5831-43D1-89C2-1AD543CE7408}.Debug|x86.ActiveCfg = Debug|Any CPU
{F8F6973C-5831-43D1-89C2-1AD543CE7408}.Debug|x86.Build.0 = Debug|Any CPU
{F8F6973C-5831-43D1-89C2-1AD543CE7408}.Nuget_Release|Any CPU.ActiveCfg = Release|Any CPU
{F8F6973C-5831-43D1-89C2-1AD543CE7408}.Nuget_Release|Any CPU.Build.0 = Release|Any CPU
{F8F6973C-5831-43D1-89C2-1AD543CE7408}.Nuget_Release|iPhone.ActiveCfg = Release|Any CPU
{F8F6973C-5831-43D1-89C2-1AD543CE7408}.Nuget_Release|iPhone.Build.0 = Release|Any CPU
{F8F6973C-5831-43D1-89C2-1AD543CE7408}.Nuget_Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{F8F6973C-5831-43D1-89C2-1AD543CE7408}.Nuget_Release|iPhoneSimulator.Build.0 = Release|Any CPU
{F8F6973C-5831-43D1-89C2-1AD543CE7408}.Nuget_Release|x86.ActiveCfg = Release|Any CPU
{F8F6973C-5831-43D1-89C2-1AD543CE7408}.Nuget_Release|x86.Build.0 = Release|Any CPU
{F8F6973C-5831-43D1-89C2-1AD543CE7408}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F8F6973C-5831-43D1-89C2-1AD543CE7408}.Release|Any CPU.Build.0 = Release|Any CPU
{F8F6973C-5831-43D1-89C2-1AD543CE7408}.Release|iPhone.ActiveCfg = Release|Any CPU
@@ -251,14 +211,6 @@ Global
{6CD71E14-5036-4A16-8084-4AD108D34FF7}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{6CD71E14-5036-4A16-8084-4AD108D34FF7}.Debug|x86.ActiveCfg = Debug|Any CPU
{6CD71E14-5036-4A16-8084-4AD108D34FF7}.Debug|x86.Build.0 = Debug|Any CPU
{6CD71E14-5036-4A16-8084-4AD108D34FF7}.Nuget_Release|Any CPU.ActiveCfg = Release|Any CPU
{6CD71E14-5036-4A16-8084-4AD108D34FF7}.Nuget_Release|Any CPU.Build.0 = Release|Any CPU
{6CD71E14-5036-4A16-8084-4AD108D34FF7}.Nuget_Release|iPhone.ActiveCfg = Release|Any CPU
{6CD71E14-5036-4A16-8084-4AD108D34FF7}.Nuget_Release|iPhone.Build.0 = Release|Any CPU
{6CD71E14-5036-4A16-8084-4AD108D34FF7}.Nuget_Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{6CD71E14-5036-4A16-8084-4AD108D34FF7}.Nuget_Release|iPhoneSimulator.Build.0 = Release|Any CPU
{6CD71E14-5036-4A16-8084-4AD108D34FF7}.Nuget_Release|x86.ActiveCfg = Release|Any CPU
{6CD71E14-5036-4A16-8084-4AD108D34FF7}.Nuget_Release|x86.Build.0 = Release|Any CPU
{6CD71E14-5036-4A16-8084-4AD108D34FF7}.Release|Any CPU.ActiveCfg = Release|Any CPU
{6CD71E14-5036-4A16-8084-4AD108D34FF7}.Release|Any CPU.Build.0 = Release|Any CPU
{6CD71E14-5036-4A16-8084-4AD108D34FF7}.Release|iPhone.ActiveCfg = Release|Any CPU
@@ -275,14 +227,6 @@ Global
{65DE552F-5E62-4E4F-ADCB-F19AD3DB3F78}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{65DE552F-5E62-4E4F-ADCB-F19AD3DB3F78}.Debug|x86.ActiveCfg = Debug|Any CPU
{65DE552F-5E62-4E4F-ADCB-F19AD3DB3F78}.Debug|x86.Build.0 = Debug|Any CPU
{65DE552F-5E62-4E4F-ADCB-F19AD3DB3F78}.Nuget_Release|Any CPU.ActiveCfg = Release|Any CPU
{65DE552F-5E62-4E4F-ADCB-F19AD3DB3F78}.Nuget_Release|Any CPU.Build.0 = Release|Any CPU
{65DE552F-5E62-4E4F-ADCB-F19AD3DB3F78}.Nuget_Release|iPhone.ActiveCfg = Release|Any CPU
{65DE552F-5E62-4E4F-ADCB-F19AD3DB3F78}.Nuget_Release|iPhone.Build.0 = Release|Any CPU
{65DE552F-5E62-4E4F-ADCB-F19AD3DB3F78}.Nuget_Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{65DE552F-5E62-4E4F-ADCB-F19AD3DB3F78}.Nuget_Release|iPhoneSimulator.Build.0 = Release|Any CPU
{65DE552F-5E62-4E4F-ADCB-F19AD3DB3F78}.Nuget_Release|x86.ActiveCfg = Release|Any CPU
{65DE552F-5E62-4E4F-ADCB-F19AD3DB3F78}.Nuget_Release|x86.Build.0 = Release|Any CPU
{65DE552F-5E62-4E4F-ADCB-F19AD3DB3F78}.Release|Any CPU.ActiveCfg = Release|Any CPU
{65DE552F-5E62-4E4F-ADCB-F19AD3DB3F78}.Release|Any CPU.Build.0 = Release|Any CPU
{65DE552F-5E62-4E4F-ADCB-F19AD3DB3F78}.Release|iPhone.ActiveCfg = Release|Any CPU
@@ -299,14 +243,6 @@ Global
{B9D4C8C7-BF96-417B-A7F8-9A67AE75A38B}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{B9D4C8C7-BF96-417B-A7F8-9A67AE75A38B}.Debug|x86.ActiveCfg = Debug|Any CPU
{B9D4C8C7-BF96-417B-A7F8-9A67AE75A38B}.Debug|x86.Build.0 = Debug|Any CPU
{B9D4C8C7-BF96-417B-A7F8-9A67AE75A38B}.Nuget_Release|Any CPU.ActiveCfg = Release|Any CPU
{B9D4C8C7-BF96-417B-A7F8-9A67AE75A38B}.Nuget_Release|Any CPU.Build.0 = Release|Any CPU
{B9D4C8C7-BF96-417B-A7F8-9A67AE75A38B}.Nuget_Release|iPhone.ActiveCfg = Release|Any CPU
{B9D4C8C7-BF96-417B-A7F8-9A67AE75A38B}.Nuget_Release|iPhone.Build.0 = Release|Any CPU
{B9D4C8C7-BF96-417B-A7F8-9A67AE75A38B}.Nuget_Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{B9D4C8C7-BF96-417B-A7F8-9A67AE75A38B}.Nuget_Release|iPhoneSimulator.Build.0 = Release|Any CPU
{B9D4C8C7-BF96-417B-A7F8-9A67AE75A38B}.Nuget_Release|x86.ActiveCfg = Release|Any CPU
{B9D4C8C7-BF96-417B-A7F8-9A67AE75A38B}.Nuget_Release|x86.Build.0 = Release|Any CPU
{B9D4C8C7-BF96-417B-A7F8-9A67AE75A38B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B9D4C8C7-BF96-417B-A7F8-9A67AE75A38B}.Release|Any CPU.Build.0 = Release|Any CPU
{B9D4C8C7-BF96-417B-A7F8-9A67AE75A38B}.Release|iPhone.ActiveCfg = Release|Any CPU
@@ -323,14 +259,6 @@ Global
{0073A08E-6336-4C09-99F9-2E808889D715}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{0073A08E-6336-4C09-99F9-2E808889D715}.Debug|x86.ActiveCfg = Debug|Any CPU
{0073A08E-6336-4C09-99F9-2E808889D715}.Debug|x86.Build.0 = Debug|Any CPU
{0073A08E-6336-4C09-99F9-2E808889D715}.Nuget_Release|Any CPU.ActiveCfg = Release|Any CPU
{0073A08E-6336-4C09-99F9-2E808889D715}.Nuget_Release|Any CPU.Build.0 = Release|Any CPU
{0073A08E-6336-4C09-99F9-2E808889D715}.Nuget_Release|iPhone.ActiveCfg = Release|Any CPU
{0073A08E-6336-4C09-99F9-2E808889D715}.Nuget_Release|iPhone.Build.0 = Release|Any CPU
{0073A08E-6336-4C09-99F9-2E808889D715}.Nuget_Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{0073A08E-6336-4C09-99F9-2E808889D715}.Nuget_Release|iPhoneSimulator.Build.0 = Release|Any CPU
{0073A08E-6336-4C09-99F9-2E808889D715}.Nuget_Release|x86.ActiveCfg = Release|Any CPU
{0073A08E-6336-4C09-99F9-2E808889D715}.Nuget_Release|x86.Build.0 = Release|Any CPU
{0073A08E-6336-4C09-99F9-2E808889D715}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0073A08E-6336-4C09-99F9-2E808889D715}.Release|Any CPU.Build.0 = Release|Any CPU
{0073A08E-6336-4C09-99F9-2E808889D715}.Release|iPhone.ActiveCfg = Release|Any CPU
@@ -351,18 +279,6 @@ Global
{AD7B78B0-AE51-4FB7-9B11-4E22A2B538CA}.Debug|x86.ActiveCfg = Debug|Any CPU
{AD7B78B0-AE51-4FB7-9B11-4E22A2B538CA}.Debug|x86.Build.0 = Debug|Any CPU
{AD7B78B0-AE51-4FB7-9B11-4E22A2B538CA}.Debug|x86.Deploy.0 = Debug|Any CPU
{AD7B78B0-AE51-4FB7-9B11-4E22A2B538CA}.Nuget_Release|Any CPU.ActiveCfg = Release|Any CPU
{AD7B78B0-AE51-4FB7-9B11-4E22A2B538CA}.Nuget_Release|Any CPU.Build.0 = Release|Any CPU
{AD7B78B0-AE51-4FB7-9B11-4E22A2B538CA}.Nuget_Release|Any CPU.Deploy.0 = Release|Any CPU
{AD7B78B0-AE51-4FB7-9B11-4E22A2B538CA}.Nuget_Release|iPhone.ActiveCfg = Release|Any CPU
{AD7B78B0-AE51-4FB7-9B11-4E22A2B538CA}.Nuget_Release|iPhone.Build.0 = Release|Any CPU
{AD7B78B0-AE51-4FB7-9B11-4E22A2B538CA}.Nuget_Release|iPhone.Deploy.0 = Release|Any CPU
{AD7B78B0-AE51-4FB7-9B11-4E22A2B538CA}.Nuget_Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{AD7B78B0-AE51-4FB7-9B11-4E22A2B538CA}.Nuget_Release|iPhoneSimulator.Build.0 = Release|Any CPU
{AD7B78B0-AE51-4FB7-9B11-4E22A2B538CA}.Nuget_Release|iPhoneSimulator.Deploy.0 = Release|Any CPU
{AD7B78B0-AE51-4FB7-9B11-4E22A2B538CA}.Nuget_Release|x86.ActiveCfg = Release|Any CPU
{AD7B78B0-AE51-4FB7-9B11-4E22A2B538CA}.Nuget_Release|x86.Build.0 = Release|Any CPU
{AD7B78B0-AE51-4FB7-9B11-4E22A2B538CA}.Nuget_Release|x86.Deploy.0 = Release|Any CPU
{AD7B78B0-AE51-4FB7-9B11-4E22A2B538CA}.Release|Any CPU.ActiveCfg = Release|Any CPU
{AD7B78B0-AE51-4FB7-9B11-4E22A2B538CA}.Release|Any CPU.Build.0 = Release|Any CPU
{AD7B78B0-AE51-4FB7-9B11-4E22A2B538CA}.Release|Any CPU.Deploy.0 = Release|Any CPU
@@ -383,14 +299,6 @@ Global
{66B7BFD6-6D4D-421B-BA5B-915348E53708}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{66B7BFD6-6D4D-421B-BA5B-915348E53708}.Debug|x86.ActiveCfg = Debug|Any CPU
{66B7BFD6-6D4D-421B-BA5B-915348E53708}.Debug|x86.Build.0 = Debug|Any CPU
{66B7BFD6-6D4D-421B-BA5B-915348E53708}.Nuget_Release|Any CPU.ActiveCfg = Release|Any CPU
{66B7BFD6-6D4D-421B-BA5B-915348E53708}.Nuget_Release|Any CPU.Build.0 = Release|Any CPU
{66B7BFD6-6D4D-421B-BA5B-915348E53708}.Nuget_Release|iPhone.ActiveCfg = Release|Any CPU
{66B7BFD6-6D4D-421B-BA5B-915348E53708}.Nuget_Release|iPhone.Build.0 = Release|Any CPU
{66B7BFD6-6D4D-421B-BA5B-915348E53708}.Nuget_Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{66B7BFD6-6D4D-421B-BA5B-915348E53708}.Nuget_Release|iPhoneSimulator.Build.0 = Release|Any CPU
{66B7BFD6-6D4D-421B-BA5B-915348E53708}.Nuget_Release|x86.ActiveCfg = Release|Any CPU
{66B7BFD6-6D4D-421B-BA5B-915348E53708}.Nuget_Release|x86.Build.0 = Release|Any CPU
{66B7BFD6-6D4D-421B-BA5B-915348E53708}.Release|Any CPU.ActiveCfg = Release|Any CPU
{66B7BFD6-6D4D-421B-BA5B-915348E53708}.Release|Any CPU.Build.0 = Release|Any CPU
{66B7BFD6-6D4D-421B-BA5B-915348E53708}.Release|iPhone.ActiveCfg = Release|Any CPU
@@ -407,14 +315,6 @@ Global
{0A624994-B0A9-4F1F-B7D0-97FE2929936B}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{0A624994-B0A9-4F1F-B7D0-97FE2929936B}.Debug|x86.ActiveCfg = Debug|Any CPU
{0A624994-B0A9-4F1F-B7D0-97FE2929936B}.Debug|x86.Build.0 = Debug|Any CPU
{0A624994-B0A9-4F1F-B7D0-97FE2929936B}.Nuget_Release|Any CPU.ActiveCfg = Release|Any CPU
{0A624994-B0A9-4F1F-B7D0-97FE2929936B}.Nuget_Release|Any CPU.Build.0 = Release|Any CPU
{0A624994-B0A9-4F1F-B7D0-97FE2929936B}.Nuget_Release|iPhone.ActiveCfg = Release|Any CPU
{0A624994-B0A9-4F1F-B7D0-97FE2929936B}.Nuget_Release|iPhone.Build.0 = Release|Any CPU
{0A624994-B0A9-4F1F-B7D0-97FE2929936B}.Nuget_Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{0A624994-B0A9-4F1F-B7D0-97FE2929936B}.Nuget_Release|iPhoneSimulator.Build.0 = Release|Any CPU
{0A624994-B0A9-4F1F-B7D0-97FE2929936B}.Nuget_Release|x86.ActiveCfg = Release|Any CPU
{0A624994-B0A9-4F1F-B7D0-97FE2929936B}.Nuget_Release|x86.Build.0 = Release|Any CPU
{0A624994-B0A9-4F1F-B7D0-97FE2929936B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0A624994-B0A9-4F1F-B7D0-97FE2929936B}.Release|Any CPU.Build.0 = Release|Any CPU
{0A624994-B0A9-4F1F-B7D0-97FE2929936B}.Release|iPhone.ActiveCfg = Release|Any CPU
@@ -431,14 +331,6 @@ Global
{D1F15D97-802E-4AA3-A4A5-B890ABE32897}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{D1F15D97-802E-4AA3-A4A5-B890ABE32897}.Debug|x86.ActiveCfg = Debug|Any CPU
{D1F15D97-802E-4AA3-A4A5-B890ABE32897}.Debug|x86.Build.0 = Debug|Any CPU
{D1F15D97-802E-4AA3-A4A5-B890ABE32897}.Nuget_Release|Any CPU.ActiveCfg = Release|Any CPU
{D1F15D97-802E-4AA3-A4A5-B890ABE32897}.Nuget_Release|Any CPU.Build.0 = Release|Any CPU
{D1F15D97-802E-4AA3-A4A5-B890ABE32897}.Nuget_Release|iPhone.ActiveCfg = Release|Any CPU
{D1F15D97-802E-4AA3-A4A5-B890ABE32897}.Nuget_Release|iPhone.Build.0 = Release|Any CPU
{D1F15D97-802E-4AA3-A4A5-B890ABE32897}.Nuget_Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{D1F15D97-802E-4AA3-A4A5-B890ABE32897}.Nuget_Release|iPhoneSimulator.Build.0 = Release|Any CPU
{D1F15D97-802E-4AA3-A4A5-B890ABE32897}.Nuget_Release|x86.ActiveCfg = Release|Any CPU
{D1F15D97-802E-4AA3-A4A5-B890ABE32897}.Nuget_Release|x86.Build.0 = Release|Any CPU
{D1F15D97-802E-4AA3-A4A5-B890ABE32897}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D1F15D97-802E-4AA3-A4A5-B890ABE32897}.Release|Any CPU.Build.0 = Release|Any CPU
{D1F15D97-802E-4AA3-A4A5-B890ABE32897}.Release|iPhone.ActiveCfg = Release|Any CPU
@@ -455,14 +347,6 @@ Global
{2FFA5BCE-B3C3-46EA-8830-838C938BF814}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{2FFA5BCE-B3C3-46EA-8830-838C938BF814}.Debug|x86.ActiveCfg = Debug|x86
{2FFA5BCE-B3C3-46EA-8830-838C938BF814}.Debug|x86.Build.0 = Debug|x86
{2FFA5BCE-B3C3-46EA-8830-838C938BF814}.Nuget_Release|Any CPU.ActiveCfg = Release|Any CPU
{2FFA5BCE-B3C3-46EA-8830-838C938BF814}.Nuget_Release|Any CPU.Build.0 = Release|Any CPU
{2FFA5BCE-B3C3-46EA-8830-838C938BF814}.Nuget_Release|iPhone.ActiveCfg = Release|Any CPU
{2FFA5BCE-B3C3-46EA-8830-838C938BF814}.Nuget_Release|iPhone.Build.0 = Release|Any CPU
{2FFA5BCE-B3C3-46EA-8830-838C938BF814}.Nuget_Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{2FFA5BCE-B3C3-46EA-8830-838C938BF814}.Nuget_Release|iPhoneSimulator.Build.0 = Release|Any CPU
{2FFA5BCE-B3C3-46EA-8830-838C938BF814}.Nuget_Release|x86.ActiveCfg = Release|x86
{2FFA5BCE-B3C3-46EA-8830-838C938BF814}.Nuget_Release|x86.Build.0 = Release|x86
{2FFA5BCE-B3C3-46EA-8830-838C938BF814}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2FFA5BCE-B3C3-46EA-8830-838C938BF814}.Release|Any CPU.Build.0 = Release|Any CPU
{2FFA5BCE-B3C3-46EA-8830-838C938BF814}.Release|iPhone.ActiveCfg = Release|Any CPU
@@ -479,14 +363,6 @@ Global
{4F09B6D1-3F83-45A0-AEC8-0F243E7CD263}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{4F09B6D1-3F83-45A0-AEC8-0F243E7CD263}.Debug|x86.ActiveCfg = Debug|Any CPU
{4F09B6D1-3F83-45A0-AEC8-0F243E7CD263}.Debug|x86.Build.0 = Debug|Any CPU
{4F09B6D1-3F83-45A0-AEC8-0F243E7CD263}.Nuget_Release|Any CPU.ActiveCfg = Release|Any CPU
{4F09B6D1-3F83-45A0-AEC8-0F243E7CD263}.Nuget_Release|Any CPU.Build.0 = Release|Any CPU
{4F09B6D1-3F83-45A0-AEC8-0F243E7CD263}.Nuget_Release|iPhone.ActiveCfg = Release|Any CPU
{4F09B6D1-3F83-45A0-AEC8-0F243E7CD263}.Nuget_Release|iPhone.Build.0 = Release|Any CPU
{4F09B6D1-3F83-45A0-AEC8-0F243E7CD263}.Nuget_Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{4F09B6D1-3F83-45A0-AEC8-0F243E7CD263}.Nuget_Release|iPhoneSimulator.Build.0 = Release|Any CPU
{4F09B6D1-3F83-45A0-AEC8-0F243E7CD263}.Nuget_Release|x86.ActiveCfg = Release|Any CPU
{4F09B6D1-3F83-45A0-AEC8-0F243E7CD263}.Nuget_Release|x86.Build.0 = Release|Any CPU
{4F09B6D1-3F83-45A0-AEC8-0F243E7CD263}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4F09B6D1-3F83-45A0-AEC8-0F243E7CD263}.Release|Any CPU.Build.0 = Release|Any CPU
{4F09B6D1-3F83-45A0-AEC8-0F243E7CD263}.Release|iPhone.ActiveCfg = Release|Any CPU
@@ -503,14 +379,6 @@ Global
{D4CF08F5-8EAB-48FB-AAA3-1A221F7B2A82}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{D4CF08F5-8EAB-48FB-AAA3-1A221F7B2A82}.Debug|x86.ActiveCfg = Debug|Any CPU
{D4CF08F5-8EAB-48FB-AAA3-1A221F7B2A82}.Debug|x86.Build.0 = Debug|Any CPU
{D4CF08F5-8EAB-48FB-AAA3-1A221F7B2A82}.Nuget_Release|Any CPU.ActiveCfg = Release|Any CPU
{D4CF08F5-8EAB-48FB-AAA3-1A221F7B2A82}.Nuget_Release|Any CPU.Build.0 = Release|Any CPU
{D4CF08F5-8EAB-48FB-AAA3-1A221F7B2A82}.Nuget_Release|iPhone.ActiveCfg = Release|Any CPU
{D4CF08F5-8EAB-48FB-AAA3-1A221F7B2A82}.Nuget_Release|iPhone.Build.0 = Release|Any CPU
{D4CF08F5-8EAB-48FB-AAA3-1A221F7B2A82}.Nuget_Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{D4CF08F5-8EAB-48FB-AAA3-1A221F7B2A82}.Nuget_Release|iPhoneSimulator.Build.0 = Release|Any CPU
{D4CF08F5-8EAB-48FB-AAA3-1A221F7B2A82}.Nuget_Release|x86.ActiveCfg = Release|Any CPU
{D4CF08F5-8EAB-48FB-AAA3-1A221F7B2A82}.Nuget_Release|x86.Build.0 = Release|Any CPU
{D4CF08F5-8EAB-48FB-AAA3-1A221F7B2A82}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D4CF08F5-8EAB-48FB-AAA3-1A221F7B2A82}.Release|Any CPU.Build.0 = Release|Any CPU
{D4CF08F5-8EAB-48FB-AAA3-1A221F7B2A82}.Release|iPhone.ActiveCfg = Release|Any CPU
@@ -527,14 +395,6 @@ Global
{948C1EA8-12DB-4F8A-A190-8615DFBD9FE4}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{948C1EA8-12DB-4F8A-A190-8615DFBD9FE4}.Debug|x86.ActiveCfg = Debug|Any CPU
{948C1EA8-12DB-4F8A-A190-8615DFBD9FE4}.Debug|x86.Build.0 = Debug|Any CPU
{948C1EA8-12DB-4F8A-A190-8615DFBD9FE4}.Nuget_Release|Any CPU.ActiveCfg = Release|Any CPU
{948C1EA8-12DB-4F8A-A190-8615DFBD9FE4}.Nuget_Release|Any CPU.Build.0 = Release|Any CPU
{948C1EA8-12DB-4F8A-A190-8615DFBD9FE4}.Nuget_Release|iPhone.ActiveCfg = Release|Any CPU
{948C1EA8-12DB-4F8A-A190-8615DFBD9FE4}.Nuget_Release|iPhone.Build.0 = Release|Any CPU
{948C1EA8-12DB-4F8A-A190-8615DFBD9FE4}.Nuget_Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{948C1EA8-12DB-4F8A-A190-8615DFBD9FE4}.Nuget_Release|iPhoneSimulator.Build.0 = Release|Any CPU
{948C1EA8-12DB-4F8A-A190-8615DFBD9FE4}.Nuget_Release|x86.ActiveCfg = Release|Any CPU
{948C1EA8-12DB-4F8A-A190-8615DFBD9FE4}.Nuget_Release|x86.Build.0 = Release|Any CPU
{948C1EA8-12DB-4F8A-A190-8615DFBD9FE4}.Release|Any CPU.ActiveCfg = Release|Any CPU
{948C1EA8-12DB-4F8A-A190-8615DFBD9FE4}.Release|Any CPU.Build.0 = Release|Any CPU
{948C1EA8-12DB-4F8A-A190-8615DFBD9FE4}.Release|iPhone.ActiveCfg = Release|Any CPU
@@ -551,14 +411,6 @@ Global
{141532E1-540E-4E50-8723-96936C191281}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{141532E1-540E-4E50-8723-96936C191281}.Debug|x86.ActiveCfg = Debug|Any CPU
{141532E1-540E-4E50-8723-96936C191281}.Debug|x86.Build.0 = Debug|Any CPU
{141532E1-540E-4E50-8723-96936C191281}.Nuget_Release|Any CPU.ActiveCfg = Release|Any CPU
{141532E1-540E-4E50-8723-96936C191281}.Nuget_Release|Any CPU.Build.0 = Release|Any CPU
{141532E1-540E-4E50-8723-96936C191281}.Nuget_Release|iPhone.ActiveCfg = Release|Any CPU
{141532E1-540E-4E50-8723-96936C191281}.Nuget_Release|iPhone.Build.0 = Release|Any CPU
{141532E1-540E-4E50-8723-96936C191281}.Nuget_Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{141532E1-540E-4E50-8723-96936C191281}.Nuget_Release|iPhoneSimulator.Build.0 = Release|Any CPU
{141532E1-540E-4E50-8723-96936C191281}.Nuget_Release|x86.ActiveCfg = Release|Any CPU
{141532E1-540E-4E50-8723-96936C191281}.Nuget_Release|x86.Build.0 = Release|Any CPU
{141532E1-540E-4E50-8723-96936C191281}.Release|Any CPU.ActiveCfg = Release|Any CPU
{141532E1-540E-4E50-8723-96936C191281}.Release|Any CPU.Build.0 = Release|Any CPU
{141532E1-540E-4E50-8723-96936C191281}.Release|iPhone.ActiveCfg = Release|Any CPU
@@ -575,14 +427,6 @@ Global
{60530AF8-4790-4A85-BCE2-C5673E9C601B}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{60530AF8-4790-4A85-BCE2-C5673E9C601B}.Debug|x86.ActiveCfg = Debug|Any CPU
{60530AF8-4790-4A85-BCE2-C5673E9C601B}.Debug|x86.Build.0 = Debug|Any CPU
{60530AF8-4790-4A85-BCE2-C5673E9C601B}.Nuget_Release|Any CPU.ActiveCfg = Release|Any CPU
{60530AF8-4790-4A85-BCE2-C5673E9C601B}.Nuget_Release|Any CPU.Build.0 = Release|Any CPU
{60530AF8-4790-4A85-BCE2-C5673E9C601B}.Nuget_Release|iPhone.ActiveCfg = Release|Any CPU
{60530AF8-4790-4A85-BCE2-C5673E9C601B}.Nuget_Release|iPhone.Build.0 = Release|Any CPU
{60530AF8-4790-4A85-BCE2-C5673E9C601B}.Nuget_Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{60530AF8-4790-4A85-BCE2-C5673E9C601B}.Nuget_Release|iPhoneSimulator.Build.0 = Release|Any CPU
{60530AF8-4790-4A85-BCE2-C5673E9C601B}.Nuget_Release|x86.ActiveCfg = Release|Any CPU
{60530AF8-4790-4A85-BCE2-C5673E9C601B}.Nuget_Release|x86.Build.0 = Release|Any CPU
{60530AF8-4790-4A85-BCE2-C5673E9C601B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{60530AF8-4790-4A85-BCE2-C5673E9C601B}.Release|Any CPU.Build.0 = Release|Any CPU
{60530AF8-4790-4A85-BCE2-C5673E9C601B}.Release|iPhone.ActiveCfg = Release|Any CPU
@@ -599,14 +443,6 @@ Global
{5A539932-2EB9-40F6-A4C1-94E5ECAB3B34}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{5A539932-2EB9-40F6-A4C1-94E5ECAB3B34}.Debug|x86.ActiveCfg = Debug|Any CPU
{5A539932-2EB9-40F6-A4C1-94E5ECAB3B34}.Debug|x86.Build.0 = Debug|Any CPU
{5A539932-2EB9-40F6-A4C1-94E5ECAB3B34}.Nuget_Release|Any CPU.ActiveCfg = Release|Any CPU
{5A539932-2EB9-40F6-A4C1-94E5ECAB3B34}.Nuget_Release|Any CPU.Build.0 = Release|Any CPU
{5A539932-2EB9-40F6-A4C1-94E5ECAB3B34}.Nuget_Release|iPhone.ActiveCfg = Release|Any CPU
{5A539932-2EB9-40F6-A4C1-94E5ECAB3B34}.Nuget_Release|iPhone.Build.0 = Release|Any CPU
{5A539932-2EB9-40F6-A4C1-94E5ECAB3B34}.Nuget_Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{5A539932-2EB9-40F6-A4C1-94E5ECAB3B34}.Nuget_Release|iPhoneSimulator.Build.0 = Release|Any CPU
{5A539932-2EB9-40F6-A4C1-94E5ECAB3B34}.Nuget_Release|x86.ActiveCfg = Release|Any CPU
{5A539932-2EB9-40F6-A4C1-94E5ECAB3B34}.Nuget_Release|x86.Build.0 = Release|Any CPU
{5A539932-2EB9-40F6-A4C1-94E5ECAB3B34}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5A539932-2EB9-40F6-A4C1-94E5ECAB3B34}.Release|Any CPU.Build.0 = Release|Any CPU
{5A539932-2EB9-40F6-A4C1-94E5ECAB3B34}.Release|iPhone.ActiveCfg = Release|Any CPU
@@ -623,14 +459,6 @@ Global
{D018C980-17FD-49BB-A95D-EDE3C18BBE0A}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{D018C980-17FD-49BB-A95D-EDE3C18BBE0A}.Debug|x86.ActiveCfg = Debug|Any CPU
{D018C980-17FD-49BB-A95D-EDE3C18BBE0A}.Debug|x86.Build.0 = Debug|Any CPU
{D018C980-17FD-49BB-A95D-EDE3C18BBE0A}.Nuget_Release|Any CPU.ActiveCfg = Release|Any CPU
{D018C980-17FD-49BB-A95D-EDE3C18BBE0A}.Nuget_Release|Any CPU.Build.0 = Release|Any CPU
{D018C980-17FD-49BB-A95D-EDE3C18BBE0A}.Nuget_Release|iPhone.ActiveCfg = Release|Any CPU
{D018C980-17FD-49BB-A95D-EDE3C18BBE0A}.Nuget_Release|iPhone.Build.0 = Release|Any CPU
{D018C980-17FD-49BB-A95D-EDE3C18BBE0A}.Nuget_Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{D018C980-17FD-49BB-A95D-EDE3C18BBE0A}.Nuget_Release|iPhoneSimulator.Build.0 = Release|Any CPU
{D018C980-17FD-49BB-A95D-EDE3C18BBE0A}.Nuget_Release|x86.ActiveCfg = Release|Any CPU
{D018C980-17FD-49BB-A95D-EDE3C18BBE0A}.Nuget_Release|x86.Build.0 = Release|Any CPU
{D018C980-17FD-49BB-A95D-EDE3C18BBE0A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D018C980-17FD-49BB-A95D-EDE3C18BBE0A}.Release|Any CPU.Build.0 = Release|Any CPU
{D018C980-17FD-49BB-A95D-EDE3C18BBE0A}.Release|iPhone.ActiveCfg = Release|Any CPU
@@ -645,14 +473,6 @@ Global
{6DD9644F-F005-4C19-8ADF-70C303EC5BB8}.Debug|iPhoneSimulator.ActiveCfg = Debug|x86
{6DD9644F-F005-4C19-8ADF-70C303EC5BB8}.Debug|x86.ActiveCfg = Debug|x86
{6DD9644F-F005-4C19-8ADF-70C303EC5BB8}.Debug|x86.Build.0 = Debug|x86
{6DD9644F-F005-4C19-8ADF-70C303EC5BB8}.Nuget_Release|Any CPU.ActiveCfg = Release|x86
{6DD9644F-F005-4C19-8ADF-70C303EC5BB8}.Nuget_Release|Any CPU.Build.0 = Release|x86
{6DD9644F-F005-4C19-8ADF-70C303EC5BB8}.Nuget_Release|iPhone.ActiveCfg = Release|x86
{6DD9644F-F005-4C19-8ADF-70C303EC5BB8}.Nuget_Release|iPhone.Build.0 = Release|x86
{6DD9644F-F005-4C19-8ADF-70C303EC5BB8}.Nuget_Release|iPhoneSimulator.ActiveCfg = Release|x86
{6DD9644F-F005-4C19-8ADF-70C303EC5BB8}.Nuget_Release|iPhoneSimulator.Build.0 = Release|x86
{6DD9644F-F005-4C19-8ADF-70C303EC5BB8}.Nuget_Release|x86.ActiveCfg = Release|x86
{6DD9644F-F005-4C19-8ADF-70C303EC5BB8}.Nuget_Release|x86.Build.0 = Release|x86
{6DD9644F-F005-4C19-8ADF-70C303EC5BB8}.Release|Any CPU.ActiveCfg = Release|x86
{6DD9644F-F005-4C19-8ADF-70C303EC5BB8}.Release|Any CPU.Build.0 = Release|x86
{6DD9644F-F005-4C19-8ADF-70C303EC5BB8}.Release|iPhone.ActiveCfg = Release|x86
@@ -665,14 +485,6 @@ Global
{3C05CED6-7712-40F0-AF17-8DD3F4C0A224}.Debug|iPhoneSimulator.ActiveCfg = Debug|x86
{3C05CED6-7712-40F0-AF17-8DD3F4C0A224}.Debug|x86.ActiveCfg = Debug|x86
{3C05CED6-7712-40F0-AF17-8DD3F4C0A224}.Debug|x86.Build.0 = Debug|x86
{3C05CED6-7712-40F0-AF17-8DD3F4C0A224}.Nuget_Release|Any CPU.ActiveCfg = Release|x86
{3C05CED6-7712-40F0-AF17-8DD3F4C0A224}.Nuget_Release|Any CPU.Build.0 = Release|x86
{3C05CED6-7712-40F0-AF17-8DD3F4C0A224}.Nuget_Release|iPhone.ActiveCfg = Release|x86
{3C05CED6-7712-40F0-AF17-8DD3F4C0A224}.Nuget_Release|iPhone.Build.0 = Release|x86
{3C05CED6-7712-40F0-AF17-8DD3F4C0A224}.Nuget_Release|iPhoneSimulator.ActiveCfg = Release|x86
{3C05CED6-7712-40F0-AF17-8DD3F4C0A224}.Nuget_Release|iPhoneSimulator.Build.0 = Release|x86
{3C05CED6-7712-40F0-AF17-8DD3F4C0A224}.Nuget_Release|x86.ActiveCfg = Release|x86
{3C05CED6-7712-40F0-AF17-8DD3F4C0A224}.Nuget_Release|x86.Build.0 = Release|x86
{3C05CED6-7712-40F0-AF17-8DD3F4C0A224}.Release|Any CPU.ActiveCfg = Release|x86
{3C05CED6-7712-40F0-AF17-8DD3F4C0A224}.Release|Any CPU.Build.0 = Release|x86
{3C05CED6-7712-40F0-AF17-8DD3F4C0A224}.Release|iPhone.ActiveCfg = Release|x86
@@ -687,14 +499,6 @@ Global
{35D60129-6652-4B6E-A04A-9766C3CF1869}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{35D60129-6652-4B6E-A04A-9766C3CF1869}.Debug|x86.ActiveCfg = Debug|Any CPU
{35D60129-6652-4B6E-A04A-9766C3CF1869}.Debug|x86.Build.0 = Debug|Any CPU
{35D60129-6652-4B6E-A04A-9766C3CF1869}.Nuget_Release|Any CPU.ActiveCfg = Release|Any CPU
{35D60129-6652-4B6E-A04A-9766C3CF1869}.Nuget_Release|Any CPU.Build.0 = Release|Any CPU
{35D60129-6652-4B6E-A04A-9766C3CF1869}.Nuget_Release|iPhone.ActiveCfg = Release|Any CPU
{35D60129-6652-4B6E-A04A-9766C3CF1869}.Nuget_Release|iPhone.Build.0 = Release|Any CPU
{35D60129-6652-4B6E-A04A-9766C3CF1869}.Nuget_Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{35D60129-6652-4B6E-A04A-9766C3CF1869}.Nuget_Release|iPhoneSimulator.Build.0 = Release|Any CPU
{35D60129-6652-4B6E-A04A-9766C3CF1869}.Nuget_Release|x86.ActiveCfg = Release|Any CPU
{35D60129-6652-4B6E-A04A-9766C3CF1869}.Nuget_Release|x86.Build.0 = Release|Any CPU
{35D60129-6652-4B6E-A04A-9766C3CF1869}.Release|Any CPU.ActiveCfg = Release|Any CPU
{35D60129-6652-4B6E-A04A-9766C3CF1869}.Release|Any CPU.Build.0 = Release|Any CPU
{35D60129-6652-4B6E-A04A-9766C3CF1869}.Release|iPhone.ActiveCfg = Release|Any CPU
@@ -711,14 +515,6 @@ Global
{CF7C2B80-D393-45EA-A67D-DF46FF17B0F8}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{CF7C2B80-D393-45EA-A67D-DF46FF17B0F8}.Debug|x86.ActiveCfg = Debug|Any CPU
{CF7C2B80-D393-45EA-A67D-DF46FF17B0F8}.Debug|x86.Build.0 = Debug|Any CPU
{CF7C2B80-D393-45EA-A67D-DF46FF17B0F8}.Nuget_Release|Any CPU.ActiveCfg = Release|Any CPU
{CF7C2B80-D393-45EA-A67D-DF46FF17B0F8}.Nuget_Release|Any CPU.Build.0 = Release|Any CPU
{CF7C2B80-D393-45EA-A67D-DF46FF17B0F8}.Nuget_Release|iPhone.ActiveCfg = Release|Any CPU
{CF7C2B80-D393-45EA-A67D-DF46FF17B0F8}.Nuget_Release|iPhone.Build.0 = Release|Any CPU
{CF7C2B80-D393-45EA-A67D-DF46FF17B0F8}.Nuget_Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{CF7C2B80-D393-45EA-A67D-DF46FF17B0F8}.Nuget_Release|iPhoneSimulator.Build.0 = Release|Any CPU
{CF7C2B80-D393-45EA-A67D-DF46FF17B0F8}.Nuget_Release|x86.ActiveCfg = Release|Any CPU
{CF7C2B80-D393-45EA-A67D-DF46FF17B0F8}.Nuget_Release|x86.Build.0 = Release|Any CPU
{CF7C2B80-D393-45EA-A67D-DF46FF17B0F8}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CF7C2B80-D393-45EA-A67D-DF46FF17B0F8}.Release|Any CPU.Build.0 = Release|Any CPU
{CF7C2B80-D393-45EA-A67D-DF46FF17B0F8}.Release|iPhone.ActiveCfg = Release|Any CPU
@@ -735,14 +531,6 @@ Global
{8EDF4429-251A-416D-BB68-93F227191BCF}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{8EDF4429-251A-416D-BB68-93F227191BCF}.Debug|x86.ActiveCfg = Debug|Any CPU
{8EDF4429-251A-416D-BB68-93F227191BCF}.Debug|x86.Build.0 = Debug|Any CPU
{8EDF4429-251A-416D-BB68-93F227191BCF}.Nuget_Release|Any CPU.ActiveCfg = Release|Any CPU
{8EDF4429-251A-416D-BB68-93F227191BCF}.Nuget_Release|Any CPU.Build.0 = Release|Any CPU
{8EDF4429-251A-416D-BB68-93F227191BCF}.Nuget_Release|iPhone.ActiveCfg = Release|Any CPU
{8EDF4429-251A-416D-BB68-93F227191BCF}.Nuget_Release|iPhone.Build.0 = Release|Any CPU
{8EDF4429-251A-416D-BB68-93F227191BCF}.Nuget_Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{8EDF4429-251A-416D-BB68-93F227191BCF}.Nuget_Release|iPhoneSimulator.Build.0 = Release|Any CPU
{8EDF4429-251A-416D-BB68-93F227191BCF}.Nuget_Release|x86.ActiveCfg = Release|Any CPU
{8EDF4429-251A-416D-BB68-93F227191BCF}.Nuget_Release|x86.Build.0 = Release|Any CPU
{8EDF4429-251A-416D-BB68-93F227191BCF}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8EDF4429-251A-416D-BB68-93F227191BCF}.Release|Any CPU.Build.0 = Release|Any CPU
{8EDF4429-251A-416D-BB68-93F227191BCF}.Release|iPhone.ActiveCfg = Release|Any CPU
@@ -759,14 +547,6 @@ Global
{ABAF70E5-A582-4916-B217-6A660BB31D52}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{ABAF70E5-A582-4916-B217-6A660BB31D52}.Debug|x86.ActiveCfg = Debug|Any CPU
{ABAF70E5-A582-4916-B217-6A660BB31D52}.Debug|x86.Build.0 = Debug|Any CPU
{ABAF70E5-A582-4916-B217-6A660BB31D52}.Nuget_Release|Any CPU.ActiveCfg = Release|Any CPU
{ABAF70E5-A582-4916-B217-6A660BB31D52}.Nuget_Release|Any CPU.Build.0 = Release|Any CPU
{ABAF70E5-A582-4916-B217-6A660BB31D52}.Nuget_Release|iPhone.ActiveCfg = Release|Any CPU
{ABAF70E5-A582-4916-B217-6A660BB31D52}.Nuget_Release|iPhone.Build.0 = Release|Any CPU
{ABAF70E5-A582-4916-B217-6A660BB31D52}.Nuget_Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{ABAF70E5-A582-4916-B217-6A660BB31D52}.Nuget_Release|iPhoneSimulator.Build.0 = Release|Any CPU
{ABAF70E5-A582-4916-B217-6A660BB31D52}.Nuget_Release|x86.ActiveCfg = Release|Any CPU
{ABAF70E5-A582-4916-B217-6A660BB31D52}.Nuget_Release|x86.Build.0 = Release|Any CPU
{ABAF70E5-A582-4916-B217-6A660BB31D52}.Release|Any CPU.ActiveCfg = Release|Any CPU
{ABAF70E5-A582-4916-B217-6A660BB31D52}.Release|Any CPU.Build.0 = Release|Any CPU
{ABAF70E5-A582-4916-B217-6A660BB31D52}.Release|iPhone.ActiveCfg = Release|Any CPU
@@ -783,14 +563,6 @@ Global
{39C26BF0-E5FE-42B1-B011-B7300847DED6}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{39C26BF0-E5FE-42B1-B011-B7300847DED6}.Debug|x86.ActiveCfg = Debug|Any CPU
{39C26BF0-E5FE-42B1-B011-B7300847DED6}.Debug|x86.Build.0 = Debug|Any CPU
{39C26BF0-E5FE-42B1-B011-B7300847DED6}.Nuget_Release|Any CPU.ActiveCfg = Release|Any CPU
{39C26BF0-E5FE-42B1-B011-B7300847DED6}.Nuget_Release|Any CPU.Build.0 = Release|Any CPU
{39C26BF0-E5FE-42B1-B011-B7300847DED6}.Nuget_Release|iPhone.ActiveCfg = Release|Any CPU
{39C26BF0-E5FE-42B1-B011-B7300847DED6}.Nuget_Release|iPhone.Build.0 = Release|Any CPU
{39C26BF0-E5FE-42B1-B011-B7300847DED6}.Nuget_Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{39C26BF0-E5FE-42B1-B011-B7300847DED6}.Nuget_Release|iPhoneSimulator.Build.0 = Release|Any CPU
{39C26BF0-E5FE-42B1-B011-B7300847DED6}.Nuget_Release|x86.ActiveCfg = Release|Any CPU
{39C26BF0-E5FE-42B1-B011-B7300847DED6}.Nuget_Release|x86.Build.0 = Release|Any CPU
{39C26BF0-E5FE-42B1-B011-B7300847DED6}.Release|Any CPU.ActiveCfg = Release|Any CPU
{39C26BF0-E5FE-42B1-B011-B7300847DED6}.Release|Any CPU.Build.0 = Release|Any CPU
{39C26BF0-E5FE-42B1-B011-B7300847DED6}.Release|iPhone.ActiveCfg = Release|Any CPU
@@ -807,14 +579,6 @@ Global
{64F63608-1390-41D1-8568-F4E05AE35E75}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{64F63608-1390-41D1-8568-F4E05AE35E75}.Debug|x86.ActiveCfg = Debug|Any CPU
{64F63608-1390-41D1-8568-F4E05AE35E75}.Debug|x86.Build.0 = Debug|Any CPU
{64F63608-1390-41D1-8568-F4E05AE35E75}.Nuget_Release|Any CPU.ActiveCfg = Release|Any CPU
{64F63608-1390-41D1-8568-F4E05AE35E75}.Nuget_Release|Any CPU.Build.0 = Release|Any CPU
{64F63608-1390-41D1-8568-F4E05AE35E75}.Nuget_Release|iPhone.ActiveCfg = Release|Any CPU
{64F63608-1390-41D1-8568-F4E05AE35E75}.Nuget_Release|iPhone.Build.0 = Release|Any CPU
{64F63608-1390-41D1-8568-F4E05AE35E75}.Nuget_Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{64F63608-1390-41D1-8568-F4E05AE35E75}.Nuget_Release|iPhoneSimulator.Build.0 = Release|Any CPU
{64F63608-1390-41D1-8568-F4E05AE35E75}.Nuget_Release|x86.ActiveCfg = Release|Any CPU
{64F63608-1390-41D1-8568-F4E05AE35E75}.Nuget_Release|x86.Build.0 = Release|Any CPU
{64F63608-1390-41D1-8568-F4E05AE35E75}.Release|Any CPU.ActiveCfg = Release|Any CPU
{64F63608-1390-41D1-8568-F4E05AE35E75}.Release|Any CPU.Build.0 = Release|Any CPU
{64F63608-1390-41D1-8568-F4E05AE35E75}.Release|iPhone.ActiveCfg = Release|Any CPU
@@ -831,14 +595,6 @@ Global
{A040865C-FA5F-486A-9CC9-96CF34859FBD}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{A040865C-FA5F-486A-9CC9-96CF34859FBD}.Debug|x86.ActiveCfg = Debug|Any CPU
{A040865C-FA5F-486A-9CC9-96CF34859FBD}.Debug|x86.Build.0 = Debug|Any CPU
{A040865C-FA5F-486A-9CC9-96CF34859FBD}.Nuget_Release|Any CPU.ActiveCfg = Release|Any CPU
{A040865C-FA5F-486A-9CC9-96CF34859FBD}.Nuget_Release|Any CPU.Build.0 = Release|Any CPU
{A040865C-FA5F-486A-9CC9-96CF34859FBD}.Nuget_Release|iPhone.ActiveCfg = Release|Any CPU
{A040865C-FA5F-486A-9CC9-96CF34859FBD}.Nuget_Release|iPhone.Build.0 = Release|Any CPU
{A040865C-FA5F-486A-9CC9-96CF34859FBD}.Nuget_Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{A040865C-FA5F-486A-9CC9-96CF34859FBD}.Nuget_Release|iPhoneSimulator.Build.0 = Release|Any CPU
{A040865C-FA5F-486A-9CC9-96CF34859FBD}.Nuget_Release|x86.ActiveCfg = Release|Any CPU
{A040865C-FA5F-486A-9CC9-96CF34859FBD}.Nuget_Release|x86.Build.0 = Release|Any CPU
{A040865C-FA5F-486A-9CC9-96CF34859FBD}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A040865C-FA5F-486A-9CC9-96CF34859FBD}.Release|Any CPU.Build.0 = Release|Any CPU
{A040865C-FA5F-486A-9CC9-96CF34859FBD}.Release|iPhone.ActiveCfg = Release|Any CPU
@@ -855,14 +611,6 @@ Global
{1B8B3C1D-8095-44F2-8106-46A69D5ECF94}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{1B8B3C1D-8095-44F2-8106-46A69D5ECF94}.Debug|x86.ActiveCfg = Debug|Any CPU
{1B8B3C1D-8095-44F2-8106-46A69D5ECF94}.Debug|x86.Build.0 = Debug|Any CPU
{1B8B3C1D-8095-44F2-8106-46A69D5ECF94}.Nuget_Release|Any CPU.ActiveCfg = Release|Any CPU
{1B8B3C1D-8095-44F2-8106-46A69D5ECF94}.Nuget_Release|Any CPU.Build.0 = Release|Any CPU
{1B8B3C1D-8095-44F2-8106-46A69D5ECF94}.Nuget_Release|iPhone.ActiveCfg = Release|Any CPU
{1B8B3C1D-8095-44F2-8106-46A69D5ECF94}.Nuget_Release|iPhone.Build.0 = Release|Any CPU
{1B8B3C1D-8095-44F2-8106-46A69D5ECF94}.Nuget_Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{1B8B3C1D-8095-44F2-8106-46A69D5ECF94}.Nuget_Release|iPhoneSimulator.Build.0 = Release|Any CPU
{1B8B3C1D-8095-44F2-8106-46A69D5ECF94}.Nuget_Release|x86.ActiveCfg = Release|Any CPU
{1B8B3C1D-8095-44F2-8106-46A69D5ECF94}.Nuget_Release|x86.Build.0 = Release|Any CPU
{1B8B3C1D-8095-44F2-8106-46A69D5ECF94}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1B8B3C1D-8095-44F2-8106-46A69D5ECF94}.Release|Any CPU.Build.0 = Release|Any CPU
{1B8B3C1D-8095-44F2-8106-46A69D5ECF94}.Release|iPhone.ActiveCfg = Release|Any CPU
@@ -883,18 +631,6 @@ Global
{B355E372-27D2-4217-A129-D3355573681F}.Debug|x86.ActiveCfg = Debug|Any CPU
{B355E372-27D2-4217-A129-D3355573681F}.Debug|x86.Build.0 = Debug|Any CPU
{B355E372-27D2-4217-A129-D3355573681F}.Debug|x86.Deploy.0 = Debug|Any CPU
{B355E372-27D2-4217-A129-D3355573681F}.Nuget_Release|Any CPU.ActiveCfg = Release|Any CPU
{B355E372-27D2-4217-A129-D3355573681F}.Nuget_Release|Any CPU.Build.0 = Release|Any CPU
{B355E372-27D2-4217-A129-D3355573681F}.Nuget_Release|Any CPU.Deploy.0 = Release|Any CPU
{B355E372-27D2-4217-A129-D3355573681F}.Nuget_Release|iPhone.ActiveCfg = Release|Any CPU
{B355E372-27D2-4217-A129-D3355573681F}.Nuget_Release|iPhone.Build.0 = Release|Any CPU
{B355E372-27D2-4217-A129-D3355573681F}.Nuget_Release|iPhone.Deploy.0 = Release|Any CPU
{B355E372-27D2-4217-A129-D3355573681F}.Nuget_Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{B355E372-27D2-4217-A129-D3355573681F}.Nuget_Release|iPhoneSimulator.Build.0 = Release|Any CPU
{B355E372-27D2-4217-A129-D3355573681F}.Nuget_Release|iPhoneSimulator.Deploy.0 = Release|Any CPU
{B355E372-27D2-4217-A129-D3355573681F}.Nuget_Release|x86.ActiveCfg = Release|Any CPU
{B355E372-27D2-4217-A129-D3355573681F}.Nuget_Release|x86.Build.0 = Release|Any CPU
{B355E372-27D2-4217-A129-D3355573681F}.Nuget_Release|x86.Deploy.0 = Release|Any CPU
{B355E372-27D2-4217-A129-D3355573681F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B355E372-27D2-4217-A129-D3355573681F}.Release|Any CPU.Build.0 = Release|Any CPU
{B355E372-27D2-4217-A129-D3355573681F}.Release|Any CPU.Deploy.0 = Release|Any CPU
@@ -913,14 +649,6 @@ Global
{AFC828ED-21EE-4FD4-A40D-FEFED5EED4EA}.Debug|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator
{AFC828ED-21EE-4FD4-A40D-FEFED5EED4EA}.Debug|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator
{AFC828ED-21EE-4FD4-A40D-FEFED5EED4EA}.Debug|x86.ActiveCfg = Debug|iPhoneSimulator
{AFC828ED-21EE-4FD4-A40D-FEFED5EED4EA}.Nuget_Release|Any CPU.ActiveCfg = Release|iPhone
{AFC828ED-21EE-4FD4-A40D-FEFED5EED4EA}.Nuget_Release|Any CPU.Build.0 = Release|iPhone
{AFC828ED-21EE-4FD4-A40D-FEFED5EED4EA}.Nuget_Release|iPhone.ActiveCfg = Release|iPhone
{AFC828ED-21EE-4FD4-A40D-FEFED5EED4EA}.Nuget_Release|iPhone.Build.0 = Release|iPhone
{AFC828ED-21EE-4FD4-A40D-FEFED5EED4EA}.Nuget_Release|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator
{AFC828ED-21EE-4FD4-A40D-FEFED5EED4EA}.Nuget_Release|iPhoneSimulator.Build.0 = Release|iPhoneSimulator
{AFC828ED-21EE-4FD4-A40D-FEFED5EED4EA}.Nuget_Release|x86.ActiveCfg = Release|iPhone
{AFC828ED-21EE-4FD4-A40D-FEFED5EED4EA}.Nuget_Release|x86.Build.0 = Release|iPhone
{AFC828ED-21EE-4FD4-A40D-FEFED5EED4EA}.Release|Any CPU.ActiveCfg = Release|iPhoneSimulator
{AFC828ED-21EE-4FD4-A40D-FEFED5EED4EA}.Release|iPhone.ActiveCfg = Release|iPhone
{AFC828ED-21EE-4FD4-A40D-FEFED5EED4EA}.Release|iPhone.Build.0 = Release|iPhone
@@ -935,14 +663,6 @@ Global
{981AB416-A954-4A68-9521-BC71C5AEE058}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{981AB416-A954-4A68-9521-BC71C5AEE058}.Debug|x86.ActiveCfg = Debug|Any CPU
{981AB416-A954-4A68-9521-BC71C5AEE058}.Debug|x86.Build.0 = Debug|Any CPU
{981AB416-A954-4A68-9521-BC71C5AEE058}.Nuget_Release|Any CPU.ActiveCfg = Release|Any CPU
{981AB416-A954-4A68-9521-BC71C5AEE058}.Nuget_Release|Any CPU.Build.0 = Release|Any CPU
{981AB416-A954-4A68-9521-BC71C5AEE058}.Nuget_Release|iPhone.ActiveCfg = Release|Any CPU
{981AB416-A954-4A68-9521-BC71C5AEE058}.Nuget_Release|iPhone.Build.0 = Release|Any CPU
{981AB416-A954-4A68-9521-BC71C5AEE058}.Nuget_Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{981AB416-A954-4A68-9521-BC71C5AEE058}.Nuget_Release|iPhoneSimulator.Build.0 = Release|Any CPU
{981AB416-A954-4A68-9521-BC71C5AEE058}.Nuget_Release|x86.ActiveCfg = Release|Any CPU
{981AB416-A954-4A68-9521-BC71C5AEE058}.Nuget_Release|x86.Build.0 = Release|Any CPU
{981AB416-A954-4A68-9521-BC71C5AEE058}.Release|Any CPU.ActiveCfg = Release|Any CPU
{981AB416-A954-4A68-9521-BC71C5AEE058}.Release|Any CPU.Build.0 = Release|Any CPU
{981AB416-A954-4A68-9521-BC71C5AEE058}.Release|iPhone.ActiveCfg = Release|Any CPU
@@ -959,14 +679,6 @@ Global
{90E4B24A-8A7E-4163-837B-BEC7419A7A97}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{90E4B24A-8A7E-4163-837B-BEC7419A7A97}.Debug|x86.ActiveCfg = Debug|Any CPU
{90E4B24A-8A7E-4163-837B-BEC7419A7A97}.Debug|x86.Build.0 = Debug|Any CPU
{90E4B24A-8A7E-4163-837B-BEC7419A7A97}.Nuget_Release|Any CPU.ActiveCfg = Release|Any CPU
{90E4B24A-8A7E-4163-837B-BEC7419A7A97}.Nuget_Release|Any CPU.Build.0 = Release|Any CPU
{90E4B24A-8A7E-4163-837B-BEC7419A7A97}.Nuget_Release|iPhone.ActiveCfg = Release|Any CPU
{90E4B24A-8A7E-4163-837B-BEC7419A7A97}.Nuget_Release|iPhone.Build.0 = Release|Any CPU
{90E4B24A-8A7E-4163-837B-BEC7419A7A97}.Nuget_Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{90E4B24A-8A7E-4163-837B-BEC7419A7A97}.Nuget_Release|iPhoneSimulator.Build.0 = Release|Any CPU
{90E4B24A-8A7E-4163-837B-BEC7419A7A97}.Nuget_Release|x86.ActiveCfg = Release|Any CPU
{90E4B24A-8A7E-4163-837B-BEC7419A7A97}.Nuget_Release|x86.Build.0 = Release|Any CPU
{90E4B24A-8A7E-4163-837B-BEC7419A7A97}.Release|Any CPU.ActiveCfg = Release|Any CPU
{90E4B24A-8A7E-4163-837B-BEC7419A7A97}.Release|Any CPU.Build.0 = Release|Any CPU
{90E4B24A-8A7E-4163-837B-BEC7419A7A97}.Release|iPhone.ActiveCfg = Release|Any CPU
@@ -983,14 +695,6 @@ Global
{B626F392-53EF-4894-B7AD-E6AFBFA68E8C}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{B626F392-53EF-4894-B7AD-E6AFBFA68E8C}.Debug|x86.ActiveCfg = Debug|Any CPU
{B626F392-53EF-4894-B7AD-E6AFBFA68E8C}.Debug|x86.Build.0 = Debug|Any CPU
{B626F392-53EF-4894-B7AD-E6AFBFA68E8C}.Nuget_Release|Any CPU.ActiveCfg = Release|Any CPU
{B626F392-53EF-4894-B7AD-E6AFBFA68E8C}.Nuget_Release|Any CPU.Build.0 = Release|Any CPU
{B626F392-53EF-4894-B7AD-E6AFBFA68E8C}.Nuget_Release|iPhone.ActiveCfg = Release|Any CPU
{B626F392-53EF-4894-B7AD-E6AFBFA68E8C}.Nuget_Release|iPhone.Build.0 = Release|Any CPU
{B626F392-53EF-4894-B7AD-E6AFBFA68E8C}.Nuget_Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{B626F392-53EF-4894-B7AD-E6AFBFA68E8C}.Nuget_Release|iPhoneSimulator.Build.0 = Release|Any CPU
{B626F392-53EF-4894-B7AD-E6AFBFA68E8C}.Nuget_Release|x86.ActiveCfg = Release|Any CPU
{B626F392-53EF-4894-B7AD-E6AFBFA68E8C}.Nuget_Release|x86.Build.0 = Release|Any CPU
{B626F392-53EF-4894-B7AD-E6AFBFA68E8C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B626F392-53EF-4894-B7AD-E6AFBFA68E8C}.Release|Any CPU.Build.0 = Release|Any CPU
{B626F392-53EF-4894-B7AD-E6AFBFA68E8C}.Release|iPhone.ActiveCfg = Release|Any CPU
@@ -1007,14 +711,6 @@ Global
{314F0805-EB94-4685-B0EF-BF9418D19003}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{314F0805-EB94-4685-B0EF-BF9418D19003}.Debug|x86.ActiveCfg = Debug|Any CPU
{314F0805-EB94-4685-B0EF-BF9418D19003}.Debug|x86.Build.0 = Debug|Any CPU
{314F0805-EB94-4685-B0EF-BF9418D19003}.Nuget_Release|Any CPU.ActiveCfg = Release|Any CPU
{314F0805-EB94-4685-B0EF-BF9418D19003}.Nuget_Release|Any CPU.Build.0 = Release|Any CPU
{314F0805-EB94-4685-B0EF-BF9418D19003}.Nuget_Release|iPhone.ActiveCfg = Release|Any CPU
{314F0805-EB94-4685-B0EF-BF9418D19003}.Nuget_Release|iPhone.Build.0 = Release|Any CPU
{314F0805-EB94-4685-B0EF-BF9418D19003}.Nuget_Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{314F0805-EB94-4685-B0EF-BF9418D19003}.Nuget_Release|iPhoneSimulator.Build.0 = Release|Any CPU
{314F0805-EB94-4685-B0EF-BF9418D19003}.Nuget_Release|x86.ActiveCfg = Release|Any CPU
{314F0805-EB94-4685-B0EF-BF9418D19003}.Nuget_Release|x86.Build.0 = Release|Any CPU
{314F0805-EB94-4685-B0EF-BF9418D19003}.Release|Any CPU.ActiveCfg = Release|Any CPU
{314F0805-EB94-4685-B0EF-BF9418D19003}.Release|Any CPU.Build.0 = Release|Any CPU
{314F0805-EB94-4685-B0EF-BF9418D19003}.Release|iPhone.ActiveCfg = Release|Any CPU
@@ -1031,14 +727,6 @@ Global
{6E3D25E9-544E-498A-8F23-BC4E767FF01B}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{6E3D25E9-544E-498A-8F23-BC4E767FF01B}.Debug|x86.ActiveCfg = Debug|Any CPU
{6E3D25E9-544E-498A-8F23-BC4E767FF01B}.Debug|x86.Build.0 = Debug|Any CPU
{6E3D25E9-544E-498A-8F23-BC4E767FF01B}.Nuget_Release|Any CPU.ActiveCfg = Release|Any CPU
{6E3D25E9-544E-498A-8F23-BC4E767FF01B}.Nuget_Release|Any CPU.Build.0 = Release|Any CPU
{6E3D25E9-544E-498A-8F23-BC4E767FF01B}.Nuget_Release|iPhone.ActiveCfg = Release|Any CPU
{6E3D25E9-544E-498A-8F23-BC4E767FF01B}.Nuget_Release|iPhone.Build.0 = Release|Any CPU
{6E3D25E9-544E-498A-8F23-BC4E767FF01B}.Nuget_Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{6E3D25E9-544E-498A-8F23-BC4E767FF01B}.Nuget_Release|iPhoneSimulator.Build.0 = Release|Any CPU
{6E3D25E9-544E-498A-8F23-BC4E767FF01B}.Nuget_Release|x86.ActiveCfg = Release|Any CPU
{6E3D25E9-544E-498A-8F23-BC4E767FF01B}.Nuget_Release|x86.Build.0 = Release|Any CPU
{6E3D25E9-544E-498A-8F23-BC4E767FF01B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{6E3D25E9-544E-498A-8F23-BC4E767FF01B}.Release|Any CPU.Build.0 = Release|Any CPU
{6E3D25E9-544E-498A-8F23-BC4E767FF01B}.Release|iPhone.ActiveCfg = Release|Any CPU
@@ -1055,14 +743,6 @@ Global
{71F3F25A-47A7-4F3D-97A7-50394E7EE21B}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{71F3F25A-47A7-4F3D-97A7-50394E7EE21B}.Debug|x86.ActiveCfg = Debug|Any CPU
{71F3F25A-47A7-4F3D-97A7-50394E7EE21B}.Debug|x86.Build.0 = Debug|Any CPU
{71F3F25A-47A7-4F3D-97A7-50394E7EE21B}.Nuget_Release|Any CPU.ActiveCfg = Release|Any CPU
{71F3F25A-47A7-4F3D-97A7-50394E7EE21B}.Nuget_Release|Any CPU.Build.0 = Release|Any CPU
{71F3F25A-47A7-4F3D-97A7-50394E7EE21B}.Nuget_Release|iPhone.ActiveCfg = Release|Any CPU
{71F3F25A-47A7-4F3D-97A7-50394E7EE21B}.Nuget_Release|iPhone.Build.0 = Release|Any CPU
{71F3F25A-47A7-4F3D-97A7-50394E7EE21B}.Nuget_Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{71F3F25A-47A7-4F3D-97A7-50394E7EE21B}.Nuget_Release|iPhoneSimulator.Build.0 = Release|Any CPU
{71F3F25A-47A7-4F3D-97A7-50394E7EE21B}.Nuget_Release|x86.ActiveCfg = Release|Any CPU
{71F3F25A-47A7-4F3D-97A7-50394E7EE21B}.Nuget_Release|x86.Build.0 = Release|Any CPU
{71F3F25A-47A7-4F3D-97A7-50394E7EE21B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{71F3F25A-47A7-4F3D-97A7-50394E7EE21B}.Release|Any CPU.Build.0 = Release|Any CPU
{71F3F25A-47A7-4F3D-97A7-50394E7EE21B}.Release|iPhone.ActiveCfg = Release|Any CPU
@@ -1079,14 +759,6 @@ Global
{09591D9E-2186-42F1-B6C6-375326E2CF2E}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{09591D9E-2186-42F1-B6C6-375326E2CF2E}.Debug|x86.ActiveCfg = Debug|Any CPU
{09591D9E-2186-42F1-B6C6-375326E2CF2E}.Debug|x86.Build.0 = Debug|Any CPU
{09591D9E-2186-42F1-B6C6-375326E2CF2E}.Nuget_Release|Any CPU.ActiveCfg = Release|Any CPU
{09591D9E-2186-42F1-B6C6-375326E2CF2E}.Nuget_Release|Any CPU.Build.0 = Release|Any CPU
{09591D9E-2186-42F1-B6C6-375326E2CF2E}.Nuget_Release|iPhone.ActiveCfg = Release|Any CPU
{09591D9E-2186-42F1-B6C6-375326E2CF2E}.Nuget_Release|iPhone.Build.0 = Release|Any CPU
{09591D9E-2186-42F1-B6C6-375326E2CF2E}.Nuget_Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{09591D9E-2186-42F1-B6C6-375326E2CF2E}.Nuget_Release|iPhoneSimulator.Build.0 = Release|Any CPU
{09591D9E-2186-42F1-B6C6-375326E2CF2E}.Nuget_Release|x86.ActiveCfg = Release|Any CPU
{09591D9E-2186-42F1-B6C6-375326E2CF2E}.Nuget_Release|x86.Build.0 = Release|Any CPU
{09591D9E-2186-42F1-B6C6-375326E2CF2E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{09591D9E-2186-42F1-B6C6-375326E2CF2E}.Release|Any CPU.Build.0 = Release|Any CPU
{09591D9E-2186-42F1-B6C6-375326E2CF2E}.Release|iPhone.ActiveCfg = Release|Any CPU
@@ -1103,14 +775,6 @@ Global
{38A8EE9F-81A8-4B11-A6E9-864A12C43089}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{38A8EE9F-81A8-4B11-A6E9-864A12C43089}.Debug|x86.ActiveCfg = Debug|Any CPU
{38A8EE9F-81A8-4B11-A6E9-864A12C43089}.Debug|x86.Build.0 = Debug|Any CPU
{38A8EE9F-81A8-4B11-A6E9-864A12C43089}.Nuget_Release|Any CPU.ActiveCfg = Nuget_Release|Any CPU
{38A8EE9F-81A8-4B11-A6E9-864A12C43089}.Nuget_Release|Any CPU.Build.0 = Nuget_Release|Any CPU
{38A8EE9F-81A8-4B11-A6E9-864A12C43089}.Nuget_Release|iPhone.ActiveCfg = Nuget_Release|Any CPU
{38A8EE9F-81A8-4B11-A6E9-864A12C43089}.Nuget_Release|iPhone.Build.0 = Nuget_Release|Any CPU
{38A8EE9F-81A8-4B11-A6E9-864A12C43089}.Nuget_Release|iPhoneSimulator.ActiveCfg = Nuget_Release|Any CPU
{38A8EE9F-81A8-4B11-A6E9-864A12C43089}.Nuget_Release|iPhoneSimulator.Build.0 = Nuget_Release|Any CPU
{38A8EE9F-81A8-4B11-A6E9-864A12C43089}.Nuget_Release|x86.ActiveCfg = Nuget_Release|Any CPU
{38A8EE9F-81A8-4B11-A6E9-864A12C43089}.Nuget_Release|x86.Build.0 = Nuget_Release|Any CPU
{38A8EE9F-81A8-4B11-A6E9-864A12C43089}.Release|Any CPU.ActiveCfg = Release|Any CPU
{38A8EE9F-81A8-4B11-A6E9-864A12C43089}.Release|Any CPU.Build.0 = Release|Any CPU
{38A8EE9F-81A8-4B11-A6E9-864A12C43089}.Release|iPhone.ActiveCfg = Release|Any CPU
@@ -1127,14 +791,6 @@ Global
{5E8F54E8-02A6-45D9-A7F9-7C9B43705BE1}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{5E8F54E8-02A6-45D9-A7F9-7C9B43705BE1}.Debug|x86.ActiveCfg = Debug|Any CPU
{5E8F54E8-02A6-45D9-A7F9-7C9B43705BE1}.Debug|x86.Build.0 = Debug|Any CPU
{5E8F54E8-02A6-45D9-A7F9-7C9B43705BE1}.Nuget_Release|Any CPU.ActiveCfg = Release|Any CPU
{5E8F54E8-02A6-45D9-A7F9-7C9B43705BE1}.Nuget_Release|Any CPU.Build.0 = Release|Any CPU
{5E8F54E8-02A6-45D9-A7F9-7C9B43705BE1}.Nuget_Release|iPhone.ActiveCfg = Release|Any CPU
{5E8F54E8-02A6-45D9-A7F9-7C9B43705BE1}.Nuget_Release|iPhone.Build.0 = Release|Any CPU
{5E8F54E8-02A6-45D9-A7F9-7C9B43705BE1}.Nuget_Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{5E8F54E8-02A6-45D9-A7F9-7C9B43705BE1}.Nuget_Release|iPhoneSimulator.Build.0 = Release|Any CPU
{5E8F54E8-02A6-45D9-A7F9-7C9B43705BE1}.Nuget_Release|x86.ActiveCfg = Release|Any CPU
{5E8F54E8-02A6-45D9-A7F9-7C9B43705BE1}.Nuget_Release|x86.Build.0 = Release|Any CPU
{5E8F54E8-02A6-45D9-A7F9-7C9B43705BE1}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5E8F54E8-02A6-45D9-A7F9-7C9B43705BE1}.Release|Any CPU.Build.0 = Release|Any CPU
{5E8F54E8-02A6-45D9-A7F9-7C9B43705BE1}.Release|iPhone.ActiveCfg = Release|Any CPU
@@ -1143,6 +799,38 @@ Global
{5E8F54E8-02A6-45D9-A7F9-7C9B43705BE1}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{5E8F54E8-02A6-45D9-A7F9-7C9B43705BE1}.Release|x86.ActiveCfg = Release|Any CPU
{5E8F54E8-02A6-45D9-A7F9-7C9B43705BE1}.Release|x86.Build.0 = Release|Any CPU
{7F104A37-93AF-4EF8-93EA-E8BD76FE8973}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7F104A37-93AF-4EF8-93EA-E8BD76FE8973}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7F104A37-93AF-4EF8-93EA-E8BD76FE8973}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{7F104A37-93AF-4EF8-93EA-E8BD76FE8973}.Debug|iPhone.Build.0 = Debug|Any CPU
{7F104A37-93AF-4EF8-93EA-E8BD76FE8973}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{7F104A37-93AF-4EF8-93EA-E8BD76FE8973}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{7F104A37-93AF-4EF8-93EA-E8BD76FE8973}.Debug|x86.ActiveCfg = Debug|Any CPU
{7F104A37-93AF-4EF8-93EA-E8BD76FE8973}.Debug|x86.Build.0 = Debug|Any CPU
{7F104A37-93AF-4EF8-93EA-E8BD76FE8973}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7F104A37-93AF-4EF8-93EA-E8BD76FE8973}.Release|Any CPU.Build.0 = Release|Any CPU
{7F104A37-93AF-4EF8-93EA-E8BD76FE8973}.Release|iPhone.ActiveCfg = Release|Any CPU
{7F104A37-93AF-4EF8-93EA-E8BD76FE8973}.Release|iPhone.Build.0 = Release|Any CPU
{7F104A37-93AF-4EF8-93EA-E8BD76FE8973}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{7F104A37-93AF-4EF8-93EA-E8BD76FE8973}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{7F104A37-93AF-4EF8-93EA-E8BD76FE8973}.Release|x86.ActiveCfg = Release|Any CPU
{7F104A37-93AF-4EF8-93EA-E8BD76FE8973}.Release|x86.Build.0 = Release|Any CPU
{F544C06A-152E-48CE-9716-8B92F5CB51FF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F544C06A-152E-48CE-9716-8B92F5CB51FF}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F544C06A-152E-48CE-9716-8B92F5CB51FF}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{F544C06A-152E-48CE-9716-8B92F5CB51FF}.Debug|iPhone.Build.0 = Debug|Any CPU
{F544C06A-152E-48CE-9716-8B92F5CB51FF}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{F544C06A-152E-48CE-9716-8B92F5CB51FF}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{F544C06A-152E-48CE-9716-8B92F5CB51FF}.Debug|x86.ActiveCfg = Debug|Any CPU
{F544C06A-152E-48CE-9716-8B92F5CB51FF}.Debug|x86.Build.0 = Debug|Any CPU
{F544C06A-152E-48CE-9716-8B92F5CB51FF}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F544C06A-152E-48CE-9716-8B92F5CB51FF}.Release|Any CPU.Build.0 = Release|Any CPU
{F544C06A-152E-48CE-9716-8B92F5CB51FF}.Release|iPhone.ActiveCfg = Release|Any CPU
{F544C06A-152E-48CE-9716-8B92F5CB51FF}.Release|iPhone.Build.0 = Release|Any CPU
{F544C06A-152E-48CE-9716-8B92F5CB51FF}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{F544C06A-152E-48CE-9716-8B92F5CB51FF}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{F544C06A-152E-48CE-9716-8B92F5CB51FF}.Release|x86.ActiveCfg = Release|Any CPU
{F544C06A-152E-48CE-9716-8B92F5CB51FF}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -1186,6 +874,7 @@ Global
{09591D9E-2186-42F1-B6C6-375326E2CF2E} = {8EB91F53-1062-4E9B-8E4A-096F35EA688D}
{38A8EE9F-81A8-4B11-A6E9-864A12C43089} = {8EB91F53-1062-4E9B-8E4A-096F35EA688D}
{5E8F54E8-02A6-45D9-A7F9-7C9B43705BE1} = {5A7A506C-4DFF-4941-A9A6-B1182C7D5825}
{F544C06A-152E-48CE-9716-8B92F5CB51FF} = {EBC9DD0C-F7D0-4A00-B263-E69CF4E194F1}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {3833E7C5-69BC-4CB3-92CE-A8854AA35D8A}
@@ -1,4 +1,4 @@
<Project Sdk="Microsoft.NET.Sdk">
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<!--<TargetFrameworks>netstandard2.0;netstandard2.1;net5.0</TargetFrameworks>-->
@@ -32,8 +32,13 @@
<PackageReference Include="CefNet" Version="90.5.21109.1453" />
</ItemGroup>
<ItemGroup>
<Folder Include="Events\" />
<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>
+56 -60
View File
@@ -1,35 +1,51 @@
# 前言
Steam++项目创建于2018年5月8日,不过并不是耗时两年才做出来,之前一直由于工作原因,并没有多少空闲时间,直到今年中旬辞职了,才开始猛肝。
本来是想一直做到完全体了,才考虑发布,不过现在感慨一下,果然是没法这么快就整完的,所以还是一版一版更新做到完全体吧。
Steam++只在keylol论坛与github发布,为了账号安全,请不要到其它不明地方下载。
Steam++项目创建于2018年5月8日,不过并不是耗时三年才做出来,之前一直由于软软(软件原作者)的工作原因,并没有多少空闲时间,直到去年中旬软软辞职了,才开始猛肝。
去年年底发布了Steam++的第一个版本,受到了其乐广大用户的喜爱,并有了高达数百位网友的赞助支持。在此动力下,一直一个人更新维护到今年2月份。之后又找来几位朋友一起全职合作开发,并创立了我们自己的公司来进行运营这一产品。
在每人每天近16小时的高强度爆肝下,我们使用了最新的技术、最新的框架,将Steam++原先的代码全部重写,重新制作了UI。于是乎,Steam++2.0崭新出炉了。
Steam++目前处于一个完全开源的状态,所以对于软件报毒可以不用担心安全问题。我们也制作了自己的产品[官网](https://www.steampp.net),大家可以去官网下载到我们的工具。
# Steam++工具箱
## 已知的未修复问题
* 部分用户无法加载游戏列表,原因可能是因为第一次加载游戏列表时未加载完成程序停止运行了,导致生成了错误的缓存文件apps.json,如果遇到此问题可尝试手动删除程序目录下的apps.json然后重启程序。
## 更新内容
### 1.1.4
### 2.0.0.8
```
更新内容
     修复成就图标加载失败
     优化反代速度
     修复steam图片反代启动时创意工坊图片显示不了的问题
     修复uplay更新反代启动时更新失败的问题
     添加windows系统代理方式(该方式进行代理将不需要修改hosts文件以及不用占用443端口)
添加steam更新代理服务以此解决部分用户无法更新Steam的问题
1. 更换整体架构,提高软件兼容性
2. 重做UI界面,适应跨平台
3. 新增软件热更新支持
4. 新增账号切换界面动态头像支持
5. 新增从云端获取加速列表功能
6. 新增用户登录/注册功能,并且有了用户面板,将支持用户云同步数据
7. 新增脚本商店,用户可以从脚本商店下载更多脚本
8. 优化库存游戏列表加载速度
9. 优化GM0.2脚本
10. 修复1.1.4版本已出现的各种错误
11. 新增 CSGO 市场查看磨损与印花脚本适配
12. 新增 窗口位置保存功能
13. 修复 加速证书安装失败的问题
14. 修复 账号切换离线登录失效的问题
15. 修复 Windows 代理加速导致断网的问题
16. 修复 Discord 客户端代理失效的问题
17. 修复 多个 UI 错误
18. 修复 脚本以及备注无法保存的问题
19. 修复 多个可能导致闪退的问题
20. 修复 更新进度条显示不正确的问题
21. 改进 当 hosts 文件不存在时自动创建空文件而不是返回错误
```
## 工具介绍
`Steam++`是一个包含多种Steam工具功能的工具箱,开源发布于[Github](https://github.com/rmbadmin/SteamTools),如果您对发布的二进制文件不放心,可以自行下载源码编译运行。
此工具的大部分功能都是需要您下载安装Steam才能使用。
工具预计将整合进大部分常用的Steam相关工具,并且尽力做到比原工具更好用,在各种整合添加功能的同时,也会注意体积尽量的控制到最小。
「Steam++」是一个包含多种Steam工具功能的工具箱,所有功能完全免费,开源发布于Github,如果您对发布的二进制文件不放心,可以自行下载源码编译运行。
此工具的大部分功能都是需要您下载安装Steam才能使用。
工具预计将整合进大部分常用的Steam相关工具,并且尽力做到比原工具更好用。
软件截图
[hide]
@@ -42,59 +58,44 @@ Steam++只在keylol论坛与github发布,为了账号安全,请不要到其
## 核心功能
### 1. 反代Steam的社区网页使其能正常访问
### 1. 通过本地反代理Steam的社区等网页使其能正常访问
功能类似羽翼城大佬的[steamcommunity_302](https://www.dogfight360.com/blog/686/),使用[Titanium-Web-Proxy](https://github.com/justcoding121/Titanium-Web-Proxy)开源项目进行本地反代,相比302工具具有更快的启动速度,以及支持简单的脚本注入。该功能也可以配合羽翼城大佬的[UsbEAm Hosts Editor](https://www.dogfight360.com/blog/475/)里的网页相关-steamcommunity_302 社区/api/商店加载速度选项的hosts提升加载速度。
功能使用Titanium-Web-Proxy开源项目进行本地反代,相比SteamCommunity302工具具有更快的启动速度。让用户能够连接上诸如Steam社区(个人资料页)、Discord语音聊天、Twitch直播观看、Origin下载加速、谷歌验证码、Pixiv图片等。
[attachimg]1228388[/attachimg]
### 2. 快速切换当前PC已经记住登陆的Steam账号
该功能是读取Steam路径下存储的本地用户登录记录直接展示操作,可以多账号切换无需重新输入密码和令牌。
该功能是读取Steam路径下存储的本地用户登录记录直接展示操作,可以多账号切换无需重新输入密码和令牌。如果您的ip地址更换,会导致登陆状态失效。在Steam++2.0新版本支持了动态头像。
[attachimg]1228389[/attachimg]
### 3. Steam游戏的成就统计管理功能
功能参考[SteamAchievementManager](https://github.com/gibbed/SteamAchievementManager)进行二次开发,修复了成就语言有中文却依然是英文成就信息的BUG,修改了游戏列表的加载和操作易用性。
能够读取任何游戏的成就信息(包括隐藏成就),并且能进行成就修改,包括成就解锁以及成就反解锁,还能够修改成就统计信息
参考SAM(SteamAchievementManager)进行二次开发,修复了成就语言有中文却依然是英文成就信息的BUG,修改了游戏列表的加载和操作易用性。
注意:滥用成就管理功能可能会导致开发者封禁!
[attachimg]1228390[/attachimg]
### 4. Steam本地两步身份验证器
功能参考[WinAuth](https://github.com/winauth/winauth)开发,可以使您不用启动移动版Steam App也能查看您的令牌,功能类似的软件有[WinAuth](https://github.com/winauth/winauth)、[SteamDesktopAuthenticator](https://github.com/Jessecar96/SteamDesktopAuthenticator)。
该功能能够将Steam手机令牌储存到您的电脑中,并能够进行与手机端一样的操作。
不仅能查看手机令牌,还能进行交易报价确认,并且能一键全部确认
功能参考WinAuth开发,功能类似的软件有WinAuth、SteamDesktopAuthenticator。
[attachimg]1228391[/attachimg]
本地令牌交易市场报价确认
[attachimg]1262615[/attachimg]
### 5. 一些游戏工具
### 5. Steam内置浏览器脚本注入
目前已有强制游戏无边框窗口化,CSGO修复VAC屏蔽。
这一块是随缘做一些我经常用或者闲着没事捣鼓的功能。
将任何游戏强制无边框窗口化
[attachimg]1228392[/attachimg]
使任何窗口化游戏变成动态桌面壁纸(终于可以用《山》当壁纸了)
[attachimg]1228393[/attachimg]
通过反代加速功能将js脚本内置插入了Steam客户端内的浏览器,达到了与油猴类似的效果。目前2.0.0.6版本新增了脚本工坊,可以从我们的服务器上下载到已经兼容的脚本。我们也会不断添加新的脚本,同时也会对旧的脚本进行维护。
------
## 预计后续添加的功能
### Steam自动挂卡
尝试用社区反代功能结合成就解锁功能来重新实现,目的是实现在软件内不用登录Steam即可直接获取徽章卡片信息并开始挂卡。
### Steam皮肤设计器
挖坑画大饼,可视化编辑Steam皮肤,而且如果软件能上架Steam的话打算支持创意工坊分享设计的Steam皮肤,短期内肯定做不完。
### 插件形式加载运行ASF
以插件形式支持ASF在工具内运行并增强ASF在Windows Desktop环境下的使用。
### Steam自定义封面管理
增强Steam自定义封面的管理以及从[SteamGridDB](https://www.steamgriddb.com/)快速匹配下载应用封面。
### 6. 更新计划(画饼时间到)
我们预计会在6月份将推出本地挂卡、挂时长功能。并且同步推出iOS、安卓端App,用户可以利用手机查看多个账号的令牌,一键确认上架,并且支持手机挂卡。
#### 并且,以上功能全部免费!
------
@@ -104,16 +105,11 @@ Steam++只在keylol论坛与github发布,为了账号安全,请不要到其
> 程序使用C# WPF在 .NET Framework4.7.2环境下开发,如果无法运行请下载安装[.NET Framework 4.7.2](https://dotnet.microsoft.com/download/dotnet-framework/net472)。
## 下载
> [官网](https://steampp.net/)
> [Github](https://github.com/rmbadmin/SteamTools/releases)
> 分流下载:
> [hide]
> [蓝奏云](https://wws.lanzous.com/iFkh4lyooeh)
> [百度云](链接: https://pan.baidu.com/s/1mD-C_Ndc332oq_XnFVBLrQ)
> 提取码:2uxe
> [蓝奏云](https://cliencer.lanzous.com/b0165duja)
> 提取码:1234
> [/hide]
> EXE 大小:4.83MB
> EXE MD5:4149DC37BF24DD10181E32450290FEF6
> ZIP MD5:202F62682379566DBCD48C65917D4FFF
> [查毒链接](https://www.virustotal.com/gui/file/8d6da4a3fe7b1738aa5725e9797a86f8b5c668920d1449594279ea7bb262e4ef/detection)
虽然没有什么杀毒软件报毒,但是使用过程中可能遇到windows defender误报,您可以选择添加信任。
+36
View File
@@ -0,0 +1,36 @@
1. 新增 手动更新检查
2. 改进 修改账号切换操作交互
3. 修复 修改账号切换 UI 错位
4. 修复 Steam 快速登录时无法查看本地令牌
5. 改进 多开程序时将会显示主窗口
6. 改进 hosts 文件属性为只读且不可修改属性时显示的错误文本
7. 改进 Steam 快速登录现在会显示已登录的用户账号可免输入账号密码一键登录
8. 改进 增加错误日志纪录文件数量与大小限制
9. 改进 库存游戏列表加载方式
10. 改进 社区加速速度与使用中出现的错误
11. 改进 删除账号时弹窗是否删除用户数据
12. 改进 检测进程是否存在的逻辑,避免杀软误报
13. 修复 编辑文本文件,当文件路径如果有空格时传递的路径不正确
14. 修复 Steam 登录时头像没有正常显示
15. 新增 Github 网站、Git 加速
16. 改进 Toast 仅在当前激活窗口弹出
17. 修复 未启动 Steam 时加载库存游戏 Bug
18. 修复 一些引发闪退的异常,增强稳定性
| File | Checksum (SHA256) |
| ---- | ---- |
| Steam++_win_x86_v2.2.0.7z | SHA256 |
| Steam++_win_x86_v2.2.0.exe | SHA256 |
| Steam++_win_arm64_v2.2.0.7z | SHA256 |
| Steam++_win_arm64_v2.2.0.exe | SHA256 |
| Steam++_linux_x64_v2.2.0.7z | SHA256 |
| Steam++_linux_x64_v2.2.0.deb | SHA256 |
| Steam++_macos_x64_v2.2.0.dmg | SHA256 |
| Steam++_macos_arm64_v2.2.0.dmg | SHA256 |
| Steam++_android_v2.2.0.apk | SHA256 |
| Steam++_android_arm64_v2.2.0.apk | SHA256 |
| Steam++_android_arm_v2.2.0.apk | SHA256 |
***
由于程序体积较大,推荐从 [官网 https://steampp.net](https://steampp.net) 中下载
Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.2 KiB

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 990 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 983 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 443 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 441 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 615 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 606 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 790 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 MiB

After

Width:  |  Height:  |  Size: 780 KiB

@@ -1,4 +1,4 @@
using MessagePack;
using MessagePack;
using System.Application.Entities;
using System.Linq;
using System.Properties;
@@ -14,7 +14,7 @@ namespace System.Application.Services.Implementation
if (areas == null)
{
var lz4Options = MessagePackSerializerOptions.Standard.WithCompression(MessagePackCompression.Lz4BlockArray);
areas = MessagePackSerializer.Deserialize<TArea[]>(SR.AMap_adcode_citycode_20210406_xlsx_mpo, lz4Options);
areas = MessagePackSerializer.Deserialize<TArea[]>(SR.AMap_adcode_citycode_20210406_xlsx, lz4Options);
}
return areas;
}
+4 -1
View File
@@ -11,13 +11,16 @@
<Compile Include="..\Common.CoreLib\Properties\AssemblyInfo.cs">
<Link>Properties\AssemblyInfo.cs</Link>
</Compile>
<Compile Include="..\Common.CoreLib\Properties\AssemblyInfo.Version.cs">
<Link>Properties\AssemblyInfo.Version.cs</Link>
</Compile>
<Compile Include="..\Common.CoreLib\Properties\InternalsVisibleTo.cs">
<Link>Properties\InternalsVisibleTo.cs</Link>
</Compile>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Common.CoreLib\Common.CoreLib.csproj"/>
<ProjectReference Include="..\Common.CoreLib\Common.CoreLib.csproj" />
</ItemGroup>
<ItemGroup>
+2 -2
View File
@@ -63,9 +63,9 @@ namespace System.Properties {
/// <summary>
/// 查找 System.Byte[] 类型的本地化资源。
/// </summary>
internal static byte[] AMap_adcode_citycode_20210406_xlsx_mpo {
internal static byte[] AMap_adcode_citycode_20210406_xlsx {
get {
object obj = ResourceManager.GetObject("AMap_adcode_citycode_20210406.xlsx.mpo", resourceCulture);
object obj = ResourceManager.GetObject("AMap_adcode_citycode_20210406_xlsx", resourceCulture);
return ((byte[])(obj));
}
}
+3 -3
View File
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
@@ -118,7 +118,7 @@
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="AMap_adcode_citycode_20210406.xlsx.mpo" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\..\..\Resources\Areas\AMap_adcode_citycode_20210406.xlsx.mpo;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<data name="AMap_adcode_citycode_20210406_xlsx" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\AMap_adcode_citycode_20210406.xlsx.mpo;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
</root>
@@ -1,4 +1,4 @@
<Project Sdk="MSBuild.Sdk.Extras">
<Project Sdk="MSBuild.Sdk.Extras">
<PropertyGroup>
<TargetFramework>MonoAndroid10.0</TargetFramework>
@@ -15,6 +15,9 @@
<Compile Include="..\Common.CoreLib\Properties\AssemblyInfo.cs">
<Link>Properties\AssemblyInfo.cs</Link>
</Compile>
<Compile Include="..\Common.CoreLib\Properties\AssemblyInfo.Version.cs">
<Link>Properties\AssemblyInfo.Version.cs</Link>
</Compile>
<Compile Include="..\Common.CoreLib\Properties\InternalsVisibleTo.cs">
<Link>Properties\InternalsVisibleTo.cs</Link>
</Compile>
@@ -10,6 +10,9 @@
<Compile Include="..\Common.CoreLib\Properties\AssemblyInfo.cs">
<Link>Properties\AssemblyInfo.cs</Link>
</Compile>
<Compile Include="..\Common.CoreLib\Properties\AssemblyInfo.Version.cs">
<Link>Properties\AssemblyInfo.Version.cs</Link>
</Compile>
<Compile Include="..\Common.CoreLib\Properties\InternalsVisibleTo.cs">
<Link>Properties\InternalsVisibleTo.cs</Link>
</Compile>
@@ -1,4 +1,4 @@
using System.Linq;
using System.Linq;
using System.Security.Cryptography;
using System.Threading.Tasks;
using static System.Application.Services.ILocalDataProtectionProvider;
@@ -45,6 +45,8 @@ namespace System.Application.Services.Implementation
_aes = new Lazy<Aes>(() =>
{
(byte[] key, byte[] iv) = MachineSecretKey;
// https://github.com/dotnet/runtime/issues/42214#issuecomment-698495584
// AES CFB in Windows 7 catch Internal.Cryptography.CryptoThrowHelper+WindowsCryptographicException: Unknown error (0xc10000bb)
var r = AESUtils.Create(key, iv, CipherMode.CFB, PaddingMode.PKCS7);
return r;
});
+4 -1
View File
@@ -1,4 +1,4 @@
<Project Sdk="Microsoft.NET.Sdk">
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.1</TargetFramework>
@@ -10,6 +10,9 @@
<Compile Include="..\Common.CoreLib\Properties\AssemblyInfo.cs">
<Link>Properties\AssemblyInfo.cs</Link>
</Compile>
<Compile Include="..\Common.CoreLib\Properties\AssemblyInfo.Version.cs">
<Link>Properties\AssemblyInfo.Version.cs</Link>
</Compile>
<Compile Include="..\Common.CoreLib\Properties\InternalsVisibleTo.cs">
<Link>Properties\InternalsVisibleTo.cs</Link>
</Compile>
@@ -1,4 +1,4 @@
namespace System.Application.Columns
namespace System.Application.Columns
{
/// <summary>
/// 手机号码
@@ -7,6 +7,8 @@
{
/// <inheritdoc cref="IPhoneNumber"/>
string? PhoneNumber { get; set; }
public const int Db_MaxLength_PhoneNumber = 20;
}
/// <inheritdoc cref="IPhoneNumber"/>
@@ -94,21 +94,22 @@ namespace System.Application
/// <summary>
/// 中国移动
/// </summary>
public static byte[] ChinaMobile = { 139, 138, 137, 136, 135, 134, 147, 150, 151, 152, 157, 158, 159, 178, 182, 183, 184, 187, 188, 198, 148, 172 };
public static byte[] ChinaMobile = { 139, 138, 137, 136, 135, 134, 147, 150, 151, 152, 157, 158, 159, 178, 182, 183, 184, 187, 188, 198 };
/// <summary>
/// 虚拟运营商
/// </summary>
public static byte[] MobileVirtualNetwork = { 170, 171 };
public static byte[] MobileVirtualNetwork = { 170, 171, 172 };
public static byte[] Other = { 190, 197, 196, 192 };
public static byte[] Other = { 190, 191, 192, 193, 195, 196, 197, 198, 199 };
static Lazy<byte[]> mSummary = new(() => new[]
static readonly Lazy<byte[]> mSummary = new(() => new[]
{
ChinaTelecom,
ChinaUnicom,
ChinaMobile,
MobileVirtualNetwork
MobileVirtualNetwork,
Other,
}.SelectMany(b => b).ToArray());
/// <summary>
@@ -127,7 +128,7 @@ namespace System.Application
/// <summary>
/// 中国大陆地区手机号码号段验证使用 黑名单(<see langword="true"/>) 或 白名单(<see langword="false"/>)
/// </summary>
public static bool ChineseMainlandPhoneNumberSegmentVerifyUseBlacklistOrWhitelist { get; set; }
public static bool ChineseMainlandPhoneNumberSegmentVerifyUseBlacklistOrWhitelist { get; set; } = true;
/// <summary>
/// 中国大陆地区手机号码号段验证(通常仅服务端验证)
+5 -1
View File
@@ -1,4 +1,4 @@
namespace System
namespace System
{
/// <summary>
/// 文件扩展名(FileExtensions)
@@ -52,5 +52,9 @@
public const string BIN = ".bin";
public const string APNG = ".apng";
public const string EXE = ".exe";
public const string _7Z = ".7z";
}
}
+5 -2
View File
@@ -1,4 +1,5 @@
using System.IO;
using System.Diagnostics.CodeAnalysis;
using System.IO;
#if !NET35 && !NOT_XE
using Xamarin.Essentials;
#endif
@@ -219,8 +220,10 @@ namespace System
return ioPath;
}
public static FileStream OpenRead(string filePath)
[return: NotNullIfNotNull("filePath")]
public static FileStream? OpenRead(string? filePath)
{
if (filePath == null) return null;
var fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite | FileShare.Delete);
return fileStream;
}
@@ -1,4 +1,4 @@
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Logging;
namespace System.Net.Http
{
@@ -9,7 +9,7 @@ namespace System.Net.Http
{
protected readonly ILogger logger;
protected readonly IHttpPlatformHelper http_helper;
readonly IHttpClientFactory _clientFactory;
protected readonly IHttpClientFactory _clientFactory;
public GeneralHttpClientFactory(
ILogger logger,
@@ -29,9 +29,9 @@ namespace System.Net.Http
protected virtual string? DefaultClientName { get; }
/// <summary>
/// 默认超时时间,19秒
/// 默认超时时间,16秒
/// </summary>
public static readonly TimeSpan DefaultTimeout = TimeSpan.FromSeconds(19);
public static readonly TimeSpan DefaultTimeout = TimeSpan.FromSeconds(11);
static readonly Lazy<int> mDefaultTimeoutTotalMilliseconds = new(() => DefaultTimeout.TotalMilliseconds.ToInt32());
@@ -39,7 +39,7 @@ namespace System.Net.Http
public static int DefaultTimeoutTotalMilliseconds => mDefaultTimeoutTotalMilliseconds.Value;
/// <inheritdoc cref="DefaultTimeout"/>
protected virtual TimeSpan Timeout { get; } = DefaultTimeout;
protected /*virtual*/ TimeSpan Timeout { get; } = DefaultTimeout;
protected virtual HttpClient CreateClient(string? clientName = null)
{
@@ -1,15 +1,15 @@
using System.Globalization;
using System.Globalization;
using System.IO;
using System.IO.FileFormats;
namespace System.Net.Http
{
/// <inheritdoc cref="IHttpPlatformHelper"/>
public class HttpPlatformHelper : IHttpPlatformHelper
public abstract class HttpPlatformHelper : IHttpPlatformHelper
{
const string DefaultUserAgent = "Mozilla/5.0 (Windows Phone 10.0; Android 4.2.1; Microsoft; Lumia 950) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Mobile Safari/537.36 Edge/14.14263";
protected const string DefaultUserAgent = "Mozilla/5.0 (Windows Phone 10.0; Android 4.2.1; Microsoft; Lumia 950) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Mobile Safari/537.36 Edge/14.14263";
public virtual string UserAgent => DefaultUserAgent;
public abstract string UserAgent { get; }
public virtual string AcceptImages => "image/png, image/*; q=0.8";
@@ -0,0 +1,6 @@
using System.Reflection;
using static System.Properties.ThisAssembly;
[assembly: AssemblyFileVersion(Version)]
[assembly: AssemblyInformationalVersion(InfoVersion)]
[assembly: AssemblyVersion(Version)]
@@ -7,7 +7,4 @@ using static System.Properties.ThisAssembly;
[assembly: AssemblyDescription(AssemblyDescription)]
[assembly: AssemblyProduct(AssemblyProduct)]
[assembly: AssemblyCopyright(AssemblyCopyright)]
[assembly: AssemblyCompany(AssemblyCompany)]
[assembly: AssemblyFileVersion(Version)]
[assembly: AssemblyInformationalVersion(InfoVersion)]
[assembly: AssemblyVersion(Version)]
[assembly: AssemblyCompany(AssemblyCompany)]
@@ -0,0 +1,9 @@
namespace System.Properties
{
static partial class ThisAssembly
{
public const string Version = "2.2.0";
public const string InfoVersion = Version /*+ "-beta"*/;
}
}
@@ -1,11 +1,7 @@
namespace System.Properties
{
public static class ThisAssembly
public static partial class ThisAssembly
{
public const string Version = "2.0.0.6";
public const string InfoVersion = Version + "-beta";
#if NETSTANDARD2_1 || NETCOREAPP2_1_OR_GREATER
static readonly Lazy<string> mVersionDisplay = new(() =>
{
+36 -1
View File
@@ -1,14 +1,16 @@
#if !NOT_MP
#if !NOT_MP
using MessagePack;
#endif
#if !NOT_NJSON
using Newtonsoft.Json;
using System;
#endif
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
using System.IO;
using System.Text;
using System.Text.Encodings.Web;
using System.Text.Json;
using System.Threading;
#if !NOT_NJSON
using static Newtonsoft.Json.JsonConvert;
@@ -147,6 +149,10 @@ namespace System
public static byte[] SMP<T>(T value, CancellationToken cancellationToken = default)
=> MessagePackSerializer.Serialize(value, options: lz4Options, cancellationToken: cancellationToken);
/// <inheritdoc cref="SMP{T}(T, CancellationToken)"/>
public static byte[] SMP(Type type, object value, CancellationToken cancellationToken = default)
=> MessagePackSerializer.Serialize(type, value, options: lz4Options, cancellationToken: cancellationToken);
/// <summary>
/// (Serialize)MessagePack 序列化 + Base64Url Encode
/// </summary>
@@ -328,4 +334,33 @@ namespace System
};
}
}
}
namespace Newtonsoft.Json.Serialization
{
/// <summary>
/// 将忽略 <see cref="JsonPropertyAttribute"/> 属性
/// </summary>
public sealed class IgnoreJsonPropertyContractResolver : DefaultContractResolver
{
readonly bool useCamelCase;
public IgnoreJsonPropertyContractResolver(bool useCamelCase = false)
{
this.useCamelCase = useCamelCase;
}
protected override IList<JsonProperty> CreateProperties(Type type, MemberSerialization memberSerialization)
{
var result = base.CreateProperties(type, memberSerialization);
foreach (var item in result)
{
item.PropertyName = item.UnderlyingName == null ? null :
(useCamelCase ?
JsonNamingPolicy.CamelCase.ConvertName(item.UnderlyingName) :
item.UnderlyingName);
}
return result;
}
}
}
@@ -1,4 +1,4 @@
using Microsoft.Extensions.DependencyInjection.Extensions;
using Microsoft.Extensions.DependencyInjection.Extensions;
using System.Application.Services;
using System.Application.Services.Implementation;
using System.Net.Http;
@@ -19,17 +19,6 @@ namespace Microsoft.Extensions.DependencyInjection
return services;
}
/// <summary>
/// 尝试添加 <see cref="IHttpPlatformHelper"/>
/// </summary>
/// <param name="services"></param>
/// <returns></returns>
public static IServiceCollection TryAddHttpPlatformHelper(this IServiceCollection services)
{
services.TryAddSingleton<IHttpPlatformHelper, HttpPlatformHelper>();
return services;
}
//public static IServiceCollection AddHttpService(this IServiceCollection services, string name)
//{
// // 此函数为添加HTTP服务模板
+4 -1
View File
@@ -1,4 +1,4 @@
<Project Sdk="Microsoft.NET.Sdk">
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
@@ -10,6 +10,9 @@
<Compile Include="..\Common.CoreLib\Properties\AssemblyInfo.cs">
<Link>Properties\AssemblyInfo.cs</Link>
</Compile>
<Compile Include="..\Common.CoreLib\Properties\AssemblyInfo.Version.cs">
<Link>Properties\AssemblyInfo.Version.cs</Link>
</Compile>
<Compile Include="..\Common.CoreLib\Properties\InternalsVisibleTo.cs">
<Link>Properties\InternalsVisibleTo.cs</Link>
</Compile>
@@ -1,4 +1,4 @@
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata;
using System.Application.Columns;
using System.Application.Entities;
@@ -64,7 +64,7 @@ namespace System
if (pOrder.IsAssignableFrom(type))
{
modelBuilder.Entity(type, p => p.HasIndex(nameof(IOrder.Order)));
Log.Info(TAG, "IOrder type: {0}", type.FullName);
//Log.Info(TAG, "IOrder type: {0}", type.FullName);
}
#endregion
@@ -76,7 +76,7 @@ namespace System
modelBuilder.Entity(type, p => p.HasIndex(nameof(ISoftDeleted.SoftDeleted)));
modelBuilder.Entity(type).HasQueryFilter(SoftDeletedQueryFilter(type));
softDeleted.Add(type);
Log.Info(TAG, "IsSoftDeleted type: {0}", type.FullName);
//Log.Info(TAG, "IsSoftDeleted type: {0}", type.FullName);
}
#endregion
@@ -86,7 +86,7 @@ namespace System
if (pCreationTime.IsAssignableFrom(type))
{
modelBuilder.Entity(type, p => p.Property(nameof(ICreationTime.CreationTime)).HasDefaultValueSql(SQLStrings.SYSDATETIMEOFFSET).IsRequired());
Log.Info(TAG, "ICreationTime type: {0}", type.FullName);
//Log.Info(TAG, "ICreationTime type: {0}", type.FullName);
}
#endregion
@@ -98,7 +98,12 @@ namespace System
modelBuilder.Entity(type, p => p.Property(nameof(IUpdateTime.UpdateTime)).HasDefaultValueSql(SQLStrings.SYSDATETIMEOFFSET).IsRequired());
modelBuilder.Entity(type, p => p.Property(nameof(IUpdateTime.UpdateTime)).ValueGeneratedOnAddOrUpdate()
.Metadata.SetAfterSaveBehavior(PropertySaveBehavior.Save));
Log.Info(TAG, "IUpdateTime type: {0}", type.FullName);
//Log.Info(TAG, "IUpdateTime type: {0}", type.FullName);
}
if (pPhoneNumber.IsAssignableFrom(type))
{
modelBuilder.Entity(type, p => p.Property(nameof(IPhoneNumber.PhoneNumber)).HasMaxLength(IPhoneNumber.Db_MaxLength_PhoneNumber));
}
#endregion
@@ -108,7 +113,7 @@ namespace System
if (pkGuid.IsAssignableFrom(type))
{
modelBuilder.Entity(type, b => b.Property(nameof(IEntity<Guid>.Id)).HasDefaultValueSql(SQLStrings.NEWSEQUENTIALID));
Log.Info(TAG, "INEWSEQUENTIALID type: {0}", type.FullName);
//Log.Info(TAG, "INEWSEQUENTIALID type: {0}", type.FullName);
}
#endregion
@@ -121,6 +126,7 @@ namespace System
public static readonly Type pCreationTime = typeof(ICreationTime);
public static readonly Type pUpdateTime = typeof(IUpdateTime);
public static readonly Type pkGuid = typeof(INEWSEQUENTIALID);
public static readonly Type pPhoneNumber = typeof(IPhoneNumber);
/// <summary>
/// https://docs.microsoft.com/zh-cn/ef/core/modeling/shadow-properties#property-bag-entity-types
/// </summary>
@@ -1,4 +1,4 @@
<Project Sdk="Microsoft.NET.Sdk">
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.1</TargetFramework>
@@ -10,6 +10,9 @@
<Compile Include="..\Common.CoreLib\Properties\AssemblyInfo.cs">
<Link>Properties\AssemblyInfo.cs</Link>
</Compile>
<Compile Include="..\Common.CoreLib\Properties\AssemblyInfo.Version.cs">
<Link>Properties\AssemblyInfo.Version.cs</Link>
</Compile>
<Compile Include="..\Common.CoreLib\Properties\InternalsVisibleTo.cs">
<Link>Properties\InternalsVisibleTo.cs</Link>
</Compile>
@@ -1,4 +1,4 @@
using Polly;
using Polly;
using SQLite;
using System.Application.Entities;
using System.Collections.Generic;
@@ -10,6 +10,9 @@
<Compile Include="..\Common.CoreLib\Properties\AssemblyInfo.cs">
<Link>Properties\AssemblyInfo.cs</Link>
</Compile>
<Compile Include="..\Common.CoreLib\Properties\AssemblyInfo.Version.cs">
<Link>Properties\AssemblyInfo.Version.cs</Link>
</Compile>
<Compile Include="..\Common.CoreLib\Properties\InternalsVisibleTo.cs">
<Link>Properties\InternalsVisibleTo.cs</Link>
</Compile>
+5 -5
View File
@@ -12,17 +12,17 @@
- 🎁 可与已有的 ASP.NET Core MVC、Razor Pages 项目无缝集成。
## 🌐 [ASP.NET Core Blazor 简介](https://docs.microsoft.com/zh-cn/aspnet/core/blazor/?view=aspnetcore-5.0)
Blazor 是一个使用 [.NET](/dotnet/standard/tour) 生成交互式客户端 Web UI 的框架:
Blazor 是一个使用 [.NET](https://docs.microsoft.com/zh-cn/dotnet/standard/tour) 生成交互式客户端 Web UI 的框架:
* 使用 [C#](/dotnet/csharp/) 代替 [JavaScript](https://www.javascript.com) 来创建信息丰富的交互式 UI。
* 使用 [C#](https://docs.microsoft.com/zh-cn/dotnet/csharp/) 代替 [JavaScript](https://www.javascript.com) 来创建信息丰富的交互式 UI。
* 共享使用 .NET 编写的服务器端和客户端应用逻辑。
* 将 UI 呈现为 HTML 和 CSS,以支持众多浏览器,其中包括移动浏览器。
* 与新式托管平台(如 [Docker](/dotnet/standard/microservices-architecture/container-docker-introduction/index))集成。
* 与新式托管平台(如 [Docker](https://docs.microsoft.com/zh-cn/dotnet/standard/microservices-architecture/container-docker-introduction/index))集成。
使用 .NET 进行客户端 Web 开发可提供以下优势:
* 使用 C# 代替 JavaScript 来编写代码。
* 利用现有的 [.NET 库](/dotnet/standard/class-libraries)生态系统。
* 利用现有的 [.NET 库](https://docs.microsoft.com/zh-cn/dotnet/standard/class-libraries)生态系统。
* 在服务器和客户端之间共享应用逻辑。
* 受益于 .NET 的性能、可靠性和安全性。
* 在 Windows、Linux 和 macOS 上使用 [Visual Studio](https://visualstudio.microsoft.com) 保持高效工作。
@@ -39,7 +39,7 @@ Blazor 是一个使用 [.NET](/dotnet/standard/tour) 生成交互式客户端 We
| [<img src="https://cdn.jsdelivr.net/gh/alrra/browser-logos/src/edge/edge_48x48.png" alt="IE / Edge" width="24px" height="24px" />](http://godban.github.io/browsers-support-badges/)</br> Edge / IE | [<img src="https://cdn.jsdelivr.net/gh/alrra/browser-logos/src/firefox/firefox_48x48.png" alt="Firefox" width="24px" height="24px" />](http://godban.github.io/browsers-support-badges/)</br>Firefox | [<img src="https://cdn.jsdelivr.net/gh/alrra/browser-logos/src/chrome/chrome_48x48.png" alt="Chrome" width="24px" height="24px" />](http://godban.github.io/browsers-support-badges/)</br>Chrome | [<img src="https://cdn.jsdelivr.net/gh/alrra/browser-logos/src/safari/safari_48x48.png" alt="Safari" width="24px" height="24px" />](http://godban.github.io/browsers-support-badges/)</br>Safari | [<img src="https://cdn.jsdelivr.net/gh/alrra/browser-logos/src/opera/opera_48x48.png" alt="Opera" width="24px" height="24px" />](http://godban.github.io/browsers-support-badges/)</br>Opera | [<img src="https://cdn.jsdelivr.net/gh/alrra/browser-logos/src/electron/electron_48x48.png" alt="Electron" width="24px" height="24px" />](http://godban.github.io/browsers-support-badges/)</br>Electron |
| :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: |
| Edge 16 / IE 11† | 522 | 57 | 11 | 44 | Chromium 57 |
| Edge 16 / IE 11† | 52 | 57 | 11 | 44 | Chromium 57 |
> 由于 [WebAssembly](https://webassembly.org) 的限制,Blazor WebAssembly 不支持 IE 浏览器,但 Blazor Server 支持 IE 11†。 详见[官网说明](https://docs.microsoft.com/en-us/aspnet/core/blazor/supported-platforms?view=aspnetcore-3.1&WT.mc_id=DT-MVP-5003987)。
+26 -18
View File
@@ -138,24 +138,17 @@ namespace System.Application.UI
#endif
var windowService = IWindowService.Instance;
windowService.Init();
DI.Get<IDesktopPlatformService>().SetSystemSessionEnding(() =>
{
compositeDisposable.Dispose();
});
#if StartupTrace
StartupTrace.Restart("WindowService.Init");
#endif
SettingsHost.Load();
#if StartupTrace
StartupTrace.Restart("SettingsHost.Init");
#endif
#if !UI_DEMO
if (GeneralSettings.IsStartupAppMinimized.Value)
{
Program.IsMinimize = true;
if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop)
desktop.MainWindow = null;
}
#endif
Theme = (AppTheme)UISettings.Theme.Value;
#if StartupTrace
StartupTrace.Restart("Theme");
@@ -176,11 +169,18 @@ namespace System.Application.UI
default:
#region 主窗口启动时加载的资源
#if !UI_DEMO
compositeDisposable.Add(SettingsHost.Save);
compositeDisposable.Add(ProxyService.Current.Dispose);
compositeDisposable.Add(AuthService.Current.SaveEditNameAuthenticators);
compositeDisposable.Add(SteamConnectService.Current.Dispose);
if (GeneralSettings.IsStartupAppMinimized.Value)
{
Program.IsMinimize = true;
if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop)
desktop.MainWindow = null;
}
#endif
#endregion
MainWindow = new MainWindow
{
@@ -313,7 +313,10 @@ namespace System.Application.UI
if (Program.IsMainProcess)
{
Startup.ActiveUserPost(ActiveUserType.OnStartup);
IAppUpdateService.Instance.CheckUpdate(showIsExistUpdateFalse: false);
if (GeneralSettings.IsAutoCheckUpdate.Value)
{
IAppUpdateService.Instance.CheckUpdate(showIsExistUpdateFalse: false);
}
#if StartupTrace
StartupTrace.Restart("Desktop_Startup.MainProcess");
#endif
@@ -342,7 +345,7 @@ namespace System.Application.UI
#if WINDOWS
//WpfApplication.Current.Shutdown();
#endif
AppHelper.Shutdown?.Invoke();
AppHelper.TryShutdown();
}
void NotifyIcon_Click(object? sender, EventArgs e)
@@ -387,13 +390,15 @@ namespace System.Application.UI
mainWindow.Show();
mainWindow.WindowState = WindowState.Normal;
mainWindow.Topmost = true;
mainWindow.Topmost = false;
mainWindow.BringIntoView();
mainWindow.ActivateWorkaround(); // Extension method hack because of https://github.com/AvaloniaUI/Avalonia/issues/2975
mainWindow.Focus();
// Again, ugly hack because of https://github.com/AvaloniaUI/Avalonia/issues/2994
mainWindow.Width += 0.1;
mainWindow.Width -= 0.1;
//// Again, ugly hack because of https://github.com/AvaloniaUI/Avalonia/issues/2994
//mainWindow.Width += 0.1;
//mainWindow.Width -= 0.1;
}
public bool HasActiveWindow()
@@ -428,7 +433,10 @@ namespace System.Application.UI
{
if (AvaloniaApplication.Current?.ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop)
{
desktop.Shutdown(exitCode);
MainThreadDesktop.BeginInvokeOnMainThread(() =>
{
desktop.Shutdown(exitCode);
});
return true;
}
return false;
@@ -1,47 +1,44 @@
using System.Diagnostics;
using System.IO;
using System.IO.Pipes;
using System.Linq;
using System.Security.Cryptography;
using System.Security.Principal;
using System.Threading;
using System.Threading.Tasks;
namespace System.Application.UI
{
/// <summary>
/// 支持检测应用程序的多次启动以及在正在运行的实例之间发送和接收消息。
/// 支持检测应用程序的多次启动以及在正在运行的实例之间发送和接收消息
/// </summary>
public sealed class ApplicationInstance
public sealed class ApplicationInstance : IDisposable
{
private readonly ApplicationInstanceMessage? _appInstanceMessage;
private bool disposedValue;
/// <summary>
/// 获取一个值,该值指示此实例是否是第一个要启动的实例。
/// 获取一个值,该值指示此实例是否是第一个要启动的实例
/// </summary>
public bool IsFirst { get; }
/// <summary>
/// 在接收新启动的实例的命令行时发生。
/// 在接收新启动的实例的消息时发生
/// </summary>
public event EventHandler<MessageEventArgs>? CommandLineArgsReceived;
public event Action<string>? MessageReceived;
//public ApplicationInstance() : this(Assembly.GetEntryAssembly() ?? typeof(ApplicationInstance).Assembly) { }
public ApplicationInstance(/*Assembly targetAssembly*/)
public ApplicationInstance()
{
// 获取应用程序的GUID
//var portName = ((GuidAttribute)Attribute.GetCustomAttribute(targetAssembly, typeof(GuidAttribute))).Value;
// 使用会话ID作为URI,以便它是每个会话URI
//var uri = Process.GetCurrentProcess().SessionId.ToString(CultureInfo.InvariantCulture);
// 如果成功创建了IPC服务器,则假定是首次创建使用指定端口的IPC通信。
// 如果创建失败,则说明另一个实例正在创建IPC服务器,因此在创建客户端时,Mutex会同时保护其免受这些操作的影响。
//using var mutex = new Mutex(true, typeof(ApplicationInstanceMessage).FullName + "_" + "b8335358-e2e6-4c32-b6e3-0bc501ad3e2f", out bool flag);
//mutex.WaitOne();
//this.IsFirst = flag;
IsFirst = GetIsFirst();
if (IsFirst)
{
Task.Run(RunPipeServer);
}
}
static bool GetIsFirst()
{
var current = Process.GetCurrentProcess();
var query = from p in Process.GetProcesses()
var query = from p in Process.GetProcessesByName(current.ProcessName)
where p.Id != current.Id &&
p.ProcessName == current.ProcessName &&
(current.MainModule == null ||
@@ -53,57 +50,100 @@ namespace System.Application.UI
return !r;
}
/// <summary>
/// <see cref="CommandLineArgsReceived"/> 引发一个事件。
/// </summary>
/// <param name="commandLineArgs">当前进程的命令行参数。</param>
private void OnMessageReceived(string[] commandLineArgs)
{
this.CommandLineArgsReceived?.Invoke(this, new MessageEventArgs(commandLineArgs));
}
#region Pipes
/// <summary>
/// 将当前进程的命令行参数发送到已经存在的实例。
/// </summary>
/// <param name="commandLineArgs">当前进程的命令行参数。</param>
public void SendCommandLineArgs(string[] commandLineArgs)
{
this._appInstanceMessage?.OnMessageReceived(commandLineArgs);
}
static string GetPipeName() => BuildConfig.APPLICATION_ID + "_" + Hashs.String.Crc32(AppHelper.ProgramPath);
/// <summary>
/// 存储所有进程共有的消息以及已发送和接收的消息。
/// </summary>
private class ApplicationInstanceMessage : MarshalByRefObject
CancellationTokenSource? cts;
void RunPipeServer()
{
/// <summary>
/// 收到消息时发生。
/// </summary>
public event Action<string[]>? MessageReceived;
/// <summary>
/// <see cref="MessageReceived"/> 引发一个事件。
/// </summary>
public void OnMessageReceived(string[] commandLineArgs)
cts = new CancellationTokenSource();
var name = GetPipeName();
while (true)
{
this.MessageReceived?.Invoke(commandLineArgs);
using var pipeServer = new NamedPipeServerStream(name, PipeDirection.In, 1);
try
{
pipeServer.WaitForConnection();
using var sr = new StreamReader(pipeServer);
//int i = 0;
try
{
var line = sr.ReadLine();
//Console.WriteLine($"({i++})RunPipeServer line: {line ?? "null"}, name: {name}");
if (line != null)
{
MessageReceived?.Invoke(line);
}
}
catch (IOException)
{
}
pipeServer.Close();
cts.Token.ThrowIfCancellationRequested();
}
catch (OperationCanceledException)
{
}
catch (Exception e)
{
Log.Error(nameof(ApplicationInstance), e, nameof(RunPipeServer));
return;
}
}
}
}
/// <summary>
/// 提供有关与进程间通信中发生的消息传递有关的事件的数据。
/// </summary>
public class MessageEventArgs : EventArgs
{
/// <summary>
/// 获取消息。
/// 给主进程发送消息
/// </summary>
public string[] CommandLineArgs { get; }
public MessageEventArgs(string[] commandLineArgs)
/// <param name="value"></param>
public static void SendMessage(string value)
{
this.CommandLineArgs = commandLineArgs;
var name = GetPipeName();
try
{
using var pipeClient = new NamedPipeClientStream(".", name, PipeDirection.Out, PipeOptions.None, TokenImpersonationLevel.Impersonation);
pipeClient.Connect();
using StreamWriter sw = new StreamWriter(pipeClient);
sw.WriteLine(value);
}
catch (IOException)
{
}
}
#endregion
private void Dispose(bool disposing)
{
if (!disposedValue)
{
if (disposing)
{
// TODO: 释放托管状态(托管对象)
cts?.Cancel();
MessageReceived = null;
}
// TODO: 释放未托管的资源(未托管的对象)并替代终结器
// TODO: 将大型字段设置为 null
disposedValue = true;
}
}
// // TODO: 仅当“Dispose(bool disposing)”拥有用于释放未托管资源的代码时才替代终结器
// ~ApplicationInstance()
// {
// // 不要更改此代码。请将清理代码放入“Dispose(bool disposing)”方法中
// Dispose(disposing: false);
// }
public void Dispose()
{
// 不要更改此代码。请将清理代码放入“Dispose(bool disposing)”方法中
Dispose(disposing: true);
GC.SuppressFinalize(this);
}
}
}
}
@@ -1,17 +1,23 @@
using Avalonia.Controls.ApplicationLifetimes;
using System.Application.Services;
using System.CommandLine;
using System.CommandLine.Invocation;
using System.Windows;
using AvaloniaApplication = Avalonia.Application;
namespace System.Application.UI
{
partial class Program
{
const string command_main = "main";
static ApplicationInstance? appInstance;
/// <summary>
/// 命令行工具(Command Line Tools/CLT)
/// </summary>
static class CommandLineTools
{
public static int Main(string[] args,
public static int Run(string[] args,
Action<DILevel> initStartup,
Action initUIApp,
Action initCef)
@@ -21,6 +27,58 @@ namespace System.Application.UI
// https://docs.microsoft.com/zh-cn/archive/msdn-magazine/2019/march/net-parse-the-command-line-with-system-commandline
var rootCommand = new RootCommand("命令行工具(Command Line Tools/CLT)");
void MainHandler()
{
#if StartupTrace
StartupTrace.Restart("ProcessCheck");
#endif
initStartup(IsMainProcess ? DILevel.MainProcess : DILevel.Min);
#if StartupTrace
StartupTrace.Restart("Startup.Init");
#endif
if (IsMainProcess)
{
appInstance = new ApplicationInstance();
if (!appInstance.IsFirst)
{
//Console.WriteLine("ApplicationInstance.SendMessage(string.Empty);");
ApplicationInstance.SendMessage(string.Empty);
return;
}
appInstance.MessageReceived += value =>
{
if (string.IsNullOrEmpty(value))
{
var app = App.Instance;
if (app != null)
{
MainThreadDesktop.BeginInvokeOnMainThread(app.RestoreMainWindow);
}
}
};
}
#if StartupTrace
StartupTrace.Restart("ApplicationInstance");
#endif
initCef();
#if StartupTrace
StartupTrace.Restart("InitCefNetApp");
#endif
if (IsMainProcess)
{
initUIApp();
}
#if StartupTrace
StartupTrace.Restart("InitAvaloniaApp");
#endif
}
void MainHandlerByCLT()
{
IsMainProcess = true;
IsCLTProcess = false;
MainHandler();
}
#if DEBUG
// -clt debug -args 730
var debug = new Command("debug", "调试");
@@ -31,25 +89,21 @@ namespace System.Application.UI
// OutputType WinExe 导致控制台输入不会显示,只能附加一个新的控制台窗口显示内容,不合适
// 如果能取消 管理员权限要求,改为运行时管理员权限,
// 则可尝试通过 Windows Terminal 或直接 Host 进行命令行模式
initStartup(DILevel.MainProcess);
initCef();
initUIApp();
MainHandlerByCLT();
});
rootCommand.AddCommand(debug);
#endif
var main = new Command(command_main);
main.Handler = CommandHandler.Create(MainHandler);
rootCommand.AddCommand(main);
// -clt devtools
var devtools = new Command("devtools");
devtools.Handler = CommandHandler.Create(() =>
{
var appInstance = new ApplicationInstance();
if (!appInstance.IsFirst) return;
IsMainProcess = true;
IsCLTProcess = false;
AppHelper.EnableDevtools = true;
initStartup(DILevel.MainProcess);
initCef();
initUIApp();
MainHandlerByCLT();
});
rootCommand.AddCommand(devtools);
@@ -58,14 +112,8 @@ namespace System.Application.UI
common.AddOption(new Option<bool>("-silence", "静默启动(不弹窗口)"));
common.Handler = CommandHandler.Create((bool silence) =>
{
var appInstance = new ApplicationInstance();
if (!appInstance.IsFirst) return;
IsMainProcess = true;
IsCLTProcess = false;
initStartup(DILevel.MainProcess);
initCef();
IsMinimize = silence;
initUIApp();
MainHandlerByCLT();
});
rootCommand.AddCommand(common);
@@ -88,4 +136,4 @@ namespace System.Application.UI
}
}
}
}
}
@@ -0,0 +1,51 @@
using NLog;
using NLog.Common;
using NLog.Config;
using NLog.Targets;
using System.Application.UI;
using System.IO;
using NLogLevel = NLog.LogLevel;
#if CONSOLEAPP
namespace System.Application
#else
namespace System.Application.UI
#endif
{
static partial class Program
{
public static Logger? logger;
public static string InitLogDir(string? alias = null)
{
var logDirPath = Path.Combine(AppContext.BaseDirectory, "Logs");
IOPath.DirCreateByNotExists(logDirPath);
#if StartupTrace
StartupTrace.Restart("InitLogDir.IO");
#endif
var logDirPath_ = logDirPath + Path.DirectorySeparatorChar;
InternalLogger.LogFile = logDirPath_ + "internal-nlog" + alias + ".txt";
InternalLogger.LogLevel = NLogLevel.Error;
var objConfig = new LoggingConfiguration();
var logfile = new FileTarget("logfile")
{
FileName = logDirPath_ + "nlog-all-${shortdate}" + alias + ".log",
Layout = "${longdate}|${level}|${logger}|${message} |${all-event-properties} ${exception:format=tostring}",
ArchiveAboveSize = 10485760,
MaxArchiveFiles = 14,
MaxArchiveDays = 7,
};
objConfig.AddTarget(logfile);
objConfig.AddRule(NLogLevel.Error, NLogLevel.Fatal, logfile, "Microsoft.*");
objConfig.AddRule(NLogLevel.Error, NLogLevel.Fatal, logfile, "System.Net.Http.*");
objConfig.AddRule(AppHelper.DefaultNLoggerMinLevel, NLogLevel.Fatal, logfile, "*");
#if StartupTrace
StartupTrace.Restart("InitLogDir.CreateLoggingConfiguration");
#endif
LogManager.Configuration = objConfig;
return logDirPath;
}
}
}
+11 -63
View File
@@ -5,9 +5,11 @@ using NLog.Targets;
using ReactiveUI;
using System.Application.Services;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Reactive;
using System.Runtime.ExceptionServices;
using LogLevel = Microsoft.Extensions.Logging.LogLevel;
using NLogLevel = NLog.LogLevel;
@@ -15,7 +17,6 @@ namespace System.Application.UI
{
static partial class Program
{
static Logger? logger;
static readonly HashSet<Exception> exceptions = new();
static readonly object lock_global_ex_log = new();
@@ -23,6 +24,7 @@ namespace System.Application.UI
// SynchronizationContext-reliant code before AppMain is called: things aren't initialized
// yet and stuff might break.
[STAThread]
[HandleProcessCorruptedStateExceptions]
static int Main(string[] args)
{
#if StartupTrace
@@ -56,42 +58,17 @@ namespace System.Application.UI
});
try
{
string[] args_clt;
if (IsCLTProcess) // 命令行模式
{
var args_clt = args.Skip(1).ToArray();
return CommandLineTools.Main(args_clt, InitStartup, InitAvaloniaApp, InitCefNetApp);
args_clt = args.Skip(1).ToArray();
if (args_clt.Length == 1 && args_clt[0].Equals(command_main, StringComparison.OrdinalIgnoreCase)) return default;
}
else
{
#if StartupTrace
StartupTrace.Restart("ProcessCheck");
#endif
Startup.Init(IsMainProcess ? DILevel.MainProcess : DILevel.Min);
#if StartupTrace
StartupTrace.Restart("Startup.Init");
#endif
if (IsMainProcess)
{
var appInstance = new ApplicationInstance();
if (!appInstance.IsFirst) goto exit;
}
#if StartupTrace
StartupTrace.Restart("ApplicationInstance");
#endif
InitCefNetApp();
#if StartupTrace
StartupTrace.Restart("InitCefNetApp");
#endif
if (IsMainProcess)
{
InitAvaloniaApp();
}
#if StartupTrace
StartupTrace.Restart("InitAvaloniaApp");
#endif
args_clt = new[] { command_main };
}
return CommandLineTools.Run(args_clt, InitStartup, InitAvaloniaApp, InitCefNetApp);
}
catch (Exception ex)
{
@@ -100,12 +77,11 @@ namespace System.Application.UI
}
finally
{
appInstance?.Dispose();
// Ensure to flush and stop internal timers/threads before application-exit (Avoid segmentation fault on Linux)
LogManager.Shutdown();
}
exit: return 0;
static void HandleGlobalException(Exception ex, string name, bool? isTerminating = null)
{
lock (lock_global_ex_log)
@@ -120,6 +96,7 @@ namespace System.Application.UI
try
{
DI.Get<IHttpProxyService>().StopProxy();
IHostsFileService.OnExitRestoreHosts();
}
catch (Exception ex_restore_hosts)
@@ -133,7 +110,7 @@ namespace System.Application.UI
{
try
{
AppHelper.Shutdown?.Invoke();
AppHelper.TryShutdown();
}
catch (Exception ex_shutdown_app_helper)
{
@@ -165,35 +142,6 @@ namespace System.Application.UI
}
}
static string InitLogDir()
{
var logDirPath = Path.Combine(AppContext.BaseDirectory, "Logs");
IOPath.DirCreateByNotExists(logDirPath);
#if StartupTrace
StartupTrace.Restart("InitLogDir.IO");
#endif
var logDirPath_ = logDirPath + Path.DirectorySeparatorChar;
InternalLogger.LogFile = logDirPath_ + "internal-nlog.txt";
InternalLogger.LogLevel = NLogLevel.Error;
var objConfig = new LoggingConfiguration();
var logfile = new FileTarget("logfile")
{
FileName = logDirPath_ + "nlog-all-${shortdate}.log",
Layout = "${longdate}|${level}|${logger}|${message} |${all-event-properties} ${exception:format=tostring}",
};
objConfig.AddTarget(logfile);
objConfig.AddRule(NLogLevel.Error, NLogLevel.Fatal, logfile, "Microsoft.*");
objConfig.AddRule(NLogLevel.Error, NLogLevel.Fatal, logfile, "System.Net.Http.*");
objConfig.AddRule(AppHelper.DefaultNLoggerMinLevel, NLogLevel.Fatal, logfile, "*");
#if StartupTrace
StartupTrace.Restart("InitLogDir.CreateLoggingConfiguration");
#endif
LogManager.Configuration = objConfig;
return logDirPath;
}
/// <summary>
/// 是否最小化启动
/// </summary>
@@ -3,7 +3,7 @@
<PropertyGroup>
<OutputType>WinExe</OutputType>
<!--<DefineConstants>StartupTrace;$(DefineConstants)</DefineConstants>-->
<TargetFramework>net5.0</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<SignAssembly>false</SignAssembly>
<!--(SignAssembly)对此程序集进行签名会导致编译失败(CompileAvaloniaXamlTask)-->
<RootNamespace>System.Application.UI</RootNamespace>
@@ -64,15 +64,18 @@
</PropertyGroup>
<!--<ItemGroup>
<TrimmerRootAssembly Include="CefNet" />
<TrimmerRootAssembly Include="CefNet.Avalonia" />
</ItemGroup>-->
<TrimmerRootAssembly Include="CefNet" />
<TrimmerRootAssembly Include="CefNet.Avalonia" />
</ItemGroup>-->
<ItemGroup>
<Compile Include="..\Startup2.cs" />
<Compile Include="..\Common.CoreLib\Properties\AssemblyInfo.cs">
<Link>Properties\AssemblyInfo.cs</Link>
</Compile>
<Compile Include="..\Common.CoreLib\Properties\AssemblyInfo.Version.cs">
<Link>Properties\AssemblyInfo.Version.cs</Link>
</Compile>
</ItemGroup>
<ItemGroup>
@@ -81,12 +84,16 @@
<ProjectReference Include="..\Common.CoreLib\Common.CoreLib.csproj" />
</ItemGroup>
<ItemGroup Condition=" !$(DefineConstants.Contains(`PUBLISH`)) ">
<ProjectReference Include="..\ST.Client.Desktop.Console.App\ST.Client.Desktop.Console.App.csproj" />
</ItemGroup>
<ItemGroup Condition=" $(RuntimeIdentifier.Contains(`win`)) Or ('$(OS)' == 'Windows_NT' And !$(DefineConstants.Contains(`PUBLISH`))) ">
<ProjectReference Include="..\ST.Client.Desktop.Windows\ST.Client.Desktop.Windows.csproj" />
</ItemGroup>
<!--<ItemGroup Condition=" $(RuntimeIdentifier.Contains(`win`)) And $(DefineConstants.Contains(`PUBLISH`)) ">
<PackageReference Include="System.Reactive" Version="5.0.0.1-exclude-winforms" />
<PackageReference Include="System.Reactive" Version="5.0.0.1-exclude-winforms"/>
</ItemGroup>-->
<ItemGroup Condition=" $(RuntimeIdentifier.Contains(`osx`)) Or ('$([System.Runtime.InteropServices.RuntimeInformation]::IsOSPlatform($([System.Runtime.InteropServices.OSPlatform]::OSX)))' == 'true' And !$(DefineConstants.Contains(`PUBLISH`))) ">
@@ -124,7 +131,7 @@
<ItemGroup Condition=" $(RuntimeIdentifier.Contains(`win`)) Or ('$(OS)' == 'Windows_NT' And !$(DefineConstants.Contains(`PUBLISH`))) ">
<!--Win8.1/10的开始菜单磁贴配置-->
<None Include="..\..\Resources\AppIcon\visualelementsmanifest.xml">
<Link>steam++.visualelementsmanifest.xml</Link>
<Link>Steam++.VisualElementsManifest.xml</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="..\..\Resources\AppIcon\VisualElements_150.png">
@@ -3,10 +3,11 @@
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
d:DesignWidth="1200" Width="1200" MinWidth="995"
d:DesignHeight="600" Height="800" MinHeight="600"
d:DesignWidth="1200" Width="995" MinWidth="995"
d:DesignHeight="600" Height="600" MinHeight="600"
xmlns:local="clr-namespace:System.Application.UI.Views;assembly=System.Application.SteamTools.Client.Desktop.Avalonia"
xmlns:vm="clr-namespace:System.Application.UI.ViewModels;assembly=System.Application.SteamTools.Client.Desktop"
xmlns:controls="clr-namespace:System.Application.UI.Views.Controls;assembly=System.Application.SteamTools.Client.Desktop.Avalonia"
x:Class="System.Application.UI.Views.MainWindow"
x:Name="MainWindow"
WindowStartupLocation="CenterScreen"
@@ -24,5 +25,6 @@
<Panel Margin="{Binding #MainWindow.OffScreenMargin}">
<local:MainView DataContext="{Binding}"/>
<!--<controls:WebView3 IsVisible="False" InitialUrl="chrome://version"></controls:WebView3>-->
</Panel>
</Window>
@@ -7,7 +7,7 @@ namespace System.Application.UI.Views
{
public class MainWindow : FluentWindow
{
public MainWindow()
public MainWindow() : base()
{
InitializeComponent();
#if DEBUG
@@ -2,7 +2,7 @@
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>net5.0</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<SignAssembly>false</SignAssembly>
<!--(SignAssembly)对此程序集进行签名会导致编译失败(CompileAvaloniaXamlTask)-->
<RootNamespace>System.Application.UI</RootNamespace>
@@ -16,6 +16,9 @@
<Compile Include="..\Common.CoreLib\Properties\AssemblyInfo.cs">
<Link>Properties\AssemblyInfo.cs</Link>
</Compile>
<Compile Include="..\Common.CoreLib\Properties\AssemblyInfo.Version.cs">
<Link>Properties\AssemblyInfo.Version.cs</Link>
</Compile>
<Compile Include="..\ST.Client.Desktop.Avalonia.App\Program.BuildAvaloniaApp.cs">
<Link>Program.BuildAvaloniaApp.cs</Link>
</Compile>
@@ -1,4 +1,4 @@
using Avalonia.Controls;
using Avalonia.Controls;
using System.Threading.Tasks;
using AvaloniaApplication = Avalonia.Application;
@@ -30,5 +30,11 @@ namespace System.Application.Services
var owner = GetActiveWindow();
window.Show(owner);
}
void ShowWindowNoParent(Window window)
{
var owner = GetActiveWindow();
window.Show();
}
}
}
@@ -20,7 +20,7 @@ namespace System.Application.Services.Implementation
var hasActiveWindow = IDesktopAppService.Instance.HasActiveWindow();
if (hasActiveWindow)
{
await IShowWindowService.Instance.Show(typeof(object), CustomWindow.NewVersion);
await IShowWindowService.Instance.Show(typeof(object), CustomWindow.NewVersion, isParent: false);
}
}
@@ -1,8 +1,11 @@
using Avalonia.Controls;
using Avalonia.Controls;
using Avalonia.Controls.ApplicationLifetimes;
using ReactiveUI;
using System.Application.UI.ViewModels;
using System.Linq;
using System.Threading.Tasks;
using System.Windows;
using AvaloniaApplication = Avalonia.Application;
namespace System.Application.Services.Implementation
{
@@ -25,16 +28,43 @@ namespace System.Application.Services.Implementation
// _ => throw new ArgumentOutOfRangeException(nameof(customWindow), customWindow, null),
//};
static bool IsSingletonWindow(CustomWindow customWindow) => customWindow switch
{
CustomWindow.LoginOrRegister or
CustomWindow.ChangeBindPhoneNumber or
CustomWindow.UserProfile => true,
_ => false,
};
static bool TryShowSingletonWindow(Type windowType)
{
if (AvaloniaApplication.Current?.ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop)
{
var window = desktop.Windows.FirstOrDefault(x => x.GetType() == windowType);
if (window != null)
{
window.ShowActivate();
return true;
}
}
return false;
}
Task Show(Type typeWindowViewModel,
bool isDialog,
CustomWindow customWindow,
string title,
WindowViewModel? viewModel,
ResizeModeCompat resizeMode,
bool isParent = true,
Action<DialogWindowViewModel>? actionDialogWindowViewModel = null)
=> MainThreadDesktop.InvokeOnMainThreadAsync(async () =>
{
var windowType = GetWindowType(customWindow);
if (IsSingletonWindow(customWindow) && TryShowSingletonWindow(windowType))
{
return;
}
var window = (Window)Activator.CreateInstance(windowType);
if (viewModel == null && typeWindowViewModel != typeof(object))
{
@@ -97,7 +127,10 @@ namespace System.Application.Services.Implementation
}
else
{
IDesktopAvaloniaAppService.Instance.ShowWindow(window);
if (isParent)
IDesktopAvaloniaAppService.Instance.ShowWindow(window);
else
IDesktopAvaloniaAppService.Instance.ShowWindowNoParent(window);
}
});
@@ -106,17 +139,19 @@ namespace System.Application.Services.Implementation
TWindowViewModel? viewModel = null,
string title = "",
ResizeModeCompat resizeMode = ResizeModeCompat.NoResize,
bool isDialog = false)
bool isDialog = false,
bool isParent = true)
where TWindowViewModel : WindowViewModel, new() => Show(typeof(TWindowViewModel),
customWindow, viewModel, title, resizeMode, isDialog);
customWindow, viewModel, title, resizeMode, isDialog, isParent);
public Task Show(Type typeWindowViewModel,
CustomWindow customWindow,
WindowViewModel? viewModel = null,
string title = "",
ResizeModeCompat resizeMode = ResizeModeCompat.NoResize,
bool isDialog = false) => Show(typeWindowViewModel, isDialog, customWindow,
title, viewModel, resizeMode);
bool isDialog = false,
bool isParent = true) => Show(typeWindowViewModel, isDialog, customWindow,
title, viewModel, resizeMode, isParent);
public async Task<bool> ShowDialog<TWindowViewModel>(
CustomWindow customWindow,
@@ -128,7 +163,7 @@ namespace System.Application.Services.Implementation
{
DialogWindowViewModel? dialogWindowViewModel = null;
await Show(typeof(TWindowViewModel), isDialog, customWindow,
title, viewModel, resizeMode, dwvm =>
title, viewModel, resizeMode, true, dwvm =>
{
dialogWindowViewModel = dwvm;
});
@@ -1,5 +1,7 @@
using Avalonia.Threading;
using Avalonia.Threading;
using CefNet;
using CefNet.Input;
using System;
using System.Application.Models;
using System.Globalization;
using System.IO;
@@ -51,6 +53,8 @@ namespace System.Application.UI
// commandLine.AppendSwitch("no-zygote");
// commandLine.AppendSwitch("no-sandbox");
//}
//commandLine.AppendSwitch("disable-web-security"); // LoginUsingSteamClient
}
protected override void OnContextCreated(CefBrowser browser, CefFrame frame, CefV8Context context)
@@ -166,6 +170,8 @@ navigator.__proto__ = newProto;
}
};
KeycodeConverter.Default = new FixChineseInptKeycodeConverter();
app = new CefNetApp
{
ScheduleMessagePumpWorkCallback = async delayMs =>
@@ -205,9 +211,26 @@ navigator.__proto__ = newProto;
var theme = AppHelper.Current.Theme;
return theme switch
{
AppTheme.FollowingSystem => "auto",
AppTheme.FollowingSystem => GetThemeStringByFollowingSystem(),
_ => theme.ToString(),
};
static string GetThemeStringByFollowingSystem()
{
if (DI.Platform == Platform.Windows)
{
var major = Environment.OSVersion.Version.Major;
if (major < 10 || major == 10 && Environment.OSVersion.Version.Build < 18282)
{
goto dark;
}
}
else if (DI.Platform == Platform.Linux)
{
goto dark;
}
return "auto";
dark: return AppTheme.Dark.ToString();
}
}
}
@@ -228,4 +251,34 @@ navigator.__proto__ = newProto;
/// </summary>
Complete,
}
}
namespace CefNet.Input
{
/// <summary>
/// https://github.com/CefNet/CefNet/issues/21
/// </summary>
public class FixChineseInptKeycodeConverter : KeycodeConverter
{
public override VirtualKeys CharacterToVirtualKey(char character)
{
// https://github.com/CefNet/CefNet/blob/master/CefNet/Input/KeycodeConverter.cs#L41
// https://github.com/CefNet/CefNet/blob/90.5.21109.1453/CefNet/Input/KeycodeConverter.cs#L41
try
{
return base.CharacterToVirtualKey(character);
}
catch (Exception e)
{
if (PlatformInfo.IsWindows)
{
if (e.Message == "Incompatible input locale.")
{
return VirtualKeys.None;
}
}
throw;
}
}
}
}
@@ -1,74 +0,0 @@
<Styles xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Design.PreviewWith>
<Border Padding="20">
<TabControl Classes="sidebar">
<TabItem Header="Item1"/>
<TabItem Header="Item2"/>
</TabControl>
</Border>
</Design.PreviewWith>
<Style Selector="TabControl.sidebar">
<Setter Property="TabStripPlacement" Value="Left"/>
<Setter Property="Padding" Value="0 0 0 0"/>
<Setter Property="Background" Value="{x:Null}"/>
<Setter Property="Template">
<ControlTemplate>
<Border
Margin="{TemplateBinding Margin}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}">
<DockPanel>
<ScrollViewer Width="240" Margin="0 50 0 0"
Name="PART_ScrollViewer"
HorizontalScrollBarVisibility="{TemplateBinding (ScrollViewer.HorizontalScrollBarVisibility)}"
VerticalScrollBarVisibility="{TemplateBinding (ScrollViewer.VerticalScrollBarVisibility)}"
Background="{TemplateBinding Background}"
DockPanel.Dock="Left">
<ItemsPresenter
Name="PART_ItemsPresenter"
Items="{TemplateBinding Items}"
ItemsPanel="{TemplateBinding ItemsPanel}"
ItemTemplate="{TemplateBinding ItemTemplate}">
</ItemsPresenter>
</ScrollViewer>
<ContentControl Content="{TemplateBinding Tag}" HorizontalContentAlignment="Right" DockPanel.Dock="Bottom"/>
<!--<ScrollViewer Background="{x:Null}"
HorizontalScrollBarVisibility="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=SelectedItem.(ScrollViewer.HorizontalScrollBarVisibility)}"
VerticalScrollBarVisibility="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=SelectedItem.(ScrollViewer.VerticalScrollBarVisibility)}">-->
<ContentPresenter
Name="PART_SelectedContentHost"
Margin="{TemplateBinding Padding}"
HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}"
VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}"
Content="{TemplateBinding SelectedContent}"
ContentTemplate="{TemplateBinding SelectedContentTemplate}">
</ContentPresenter>
<!--</ScrollViewer>-->
</DockPanel>
</Border>
</ControlTemplate>
</Setter>
</Style>
<Style Selector="TabControl.sidebar > TabItem">
<Setter Property="BorderThickness" Value="0"/>
<Setter Property="FontSize" Value="14"/>
<Setter Property="Margin" Value="0"/>
<Setter Property="Padding" Value="16"/>
<Setter Property="Width" Value="240" />
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
<Setter Property="(ScrollViewer.HorizontalScrollBarVisibility)" Value="Auto"/>
<Setter Property="(ScrollViewer.VerticalScrollBarVisibility)" Value="Auto"/>
</Style>
<Style Selector="TabControl.sidebar > TabItem:selected /template/ Border#PART_SelectedPipe">
<Setter Property="IsVisible" Value="False" />
</Style>
<Style Selector="TabControl.sidebar > TabItem:selected">
<Setter Property="Background" Value="#1fffffff"/>
</Style>
<Style Selector="TabControl.sidebar > TabItem:pointerover /template/ Border#PART_LayoutRoot">
<Setter Property="Background" Value="#3fffffff"/>
</Style>
</Styles>
@@ -1,87 +1,89 @@
<Styles xmlns="https://github.com/avaloniaui"
<Styles xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Design.PreviewWith>
<Border Padding="20" Background="White">
<Border Padding="20" Classes="paper">
<TextBox Text="Code Font Family"/>
</Border>
</Border>
</Design.PreviewWith>
<Style Selector="TabControl.flat">
<Setter Property="FontSize" Value="18"></Setter>
<Setter Property="Padding" Value="0"></Setter>
</Style>
<Style Selector="TabControl.flat /template/ DockPanel">
<Setter Property="Margin" Value="0 -10 0 0"></Setter>
</Style>
<Style Selector="TabControl.flat /template/ ItemsPresenter">
<Setter Property="Margin" Value="{StaticResource PageMargin}"></Setter>
</Style>
<Design.PreviewWith>
<Border Padding="20" Background="White">
<Border Padding="20" Classes="paper">
<TextBox Text="Code Font Family"/>
</Border>
</Border>
</Design.PreviewWith>
<Style Selector="TabControl.flat">
<Setter Property="Padding" Value="0"></Setter>
</Style>
<Style Selector="TabControl.flat TabItem">
<Setter Property="FontSize" Value="16"></Setter>
</Style>
<Style Selector="TabControl.flat /template/ DockPanel">
<Setter Property="Margin" Value="0 -10 0 0"></Setter>
</Style>
<Style Selector="TabControl.flat /template/ ItemsPresenter">
<Setter Property="Margin" Value="{StaticResource PageMargin}"></Setter>
</Style>
<Style Selector="TabControl.NavBar">
<Setter Property="TabStripPlacement" Value="Left"/>
<Setter Property="Padding" Value="0 0 0 0"/>
<Setter Property="Background" Value="{x:Null}"/>
<Setter Property="Template">
<ControlTemplate>
<Border
Margin="{TemplateBinding Margin}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}">
<DockPanel>
<ScrollViewer Width="240" Margin="0 50 0 0"
Name="PART_ScrollViewer"
HorizontalScrollBarVisibility="{TemplateBinding (ScrollViewer.HorizontalScrollBarVisibility)}"
VerticalScrollBarVisibility="{TemplateBinding (ScrollViewer.VerticalScrollBarVisibility)}"
Background="{TemplateBinding Background}"
DockPanel.Dock="Left">
<ItemsPresenter
Name="PART_ItemsPresenter"
Items="{TemplateBinding Items}"
ItemsPanel="{TemplateBinding ItemsPanel}"
ItemTemplate="{TemplateBinding ItemTemplate}">
</ItemsPresenter>
</ScrollViewer>
<ContentControl Content="{TemplateBinding Tag}" HorizontalContentAlignment="Right" DockPanel.Dock="Bottom"/>
<!--<ScrollViewer Background="{x:Null}"
<Style Selector="TabControl.NavBar">
<Setter Property="TabStripPlacement" Value="Left"/>
<Setter Property="Padding" Value="0 0 0 0"/>
<Setter Property="Background" Value="{x:Null}"/>
<Setter Property="Template">
<ControlTemplate>
<Border
Margin="{TemplateBinding Margin}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}">
<DockPanel>
<ScrollViewer Width="240" Margin="0 50 0 0"
Name="PART_ScrollViewer"
HorizontalScrollBarVisibility="{TemplateBinding (ScrollViewer.HorizontalScrollBarVisibility)}"
VerticalScrollBarVisibility="{TemplateBinding (ScrollViewer.VerticalScrollBarVisibility)}"
Background="{TemplateBinding Background}"
DockPanel.Dock="Left">
<ItemsPresenter
Name="PART_ItemsPresenter"
Items="{TemplateBinding Items}"
ItemsPanel="{TemplateBinding ItemsPanel}"
ItemTemplate="{TemplateBinding ItemTemplate}">
</ItemsPresenter>
</ScrollViewer>
<ContentControl Content="{TemplateBinding Tag}" HorizontalContentAlignment="Right" DockPanel.Dock="Bottom"/>
<!--<ScrollViewer Background="{x:Null}"
HorizontalScrollBarVisibility="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=SelectedItem.(ScrollViewer.HorizontalScrollBarVisibility)}"
VerticalScrollBarVisibility="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=SelectedItem.(ScrollViewer.VerticalScrollBarVisibility)}">-->
<ContentPresenter
Name="PART_SelectedContentHost"
Margin="{TemplateBinding Padding}"
HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}"
VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}"
Content="{TemplateBinding SelectedContent}"
ContentTemplate="{TemplateBinding SelectedContentTemplate}">
</ContentPresenter>
<!--</ScrollViewer>-->
</DockPanel>
</Border>
</ControlTemplate>
</Setter>
</Style>
<ContentPresenter
Name="PART_SelectedContentHost"
Margin="{TemplateBinding Padding}"
HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}"
VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}"
Content="{TemplateBinding SelectedContent}"
ContentTemplate="{TemplateBinding SelectedContentTemplate}">
</ContentPresenter>
<!--</ScrollViewer>-->
</DockPanel>
</Border>
</ControlTemplate>
</Setter>
</Style>
<Style Selector="TabControl.NavBar > TabItem">
<Setter Property="BorderThickness" Value="0"/>
<Setter Property="FontSize" Value="14"/>
<Setter Property="Margin" Value="0"/>
<Setter Property="Padding" Value="16"/>
<Setter Property="Width" Value="240" />
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
<Setter Property="(ScrollViewer.HorizontalScrollBarVisibility)" Value="Auto"/>
<Setter Property="(ScrollViewer.VerticalScrollBarVisibility)" Value="Auto"/>
</Style>
<Style Selector="TabControl.NavBar > TabItem:selected /template/ Border#PART_SelectedPipe">
<Setter Property="IsVisible" Value="False" />
</Style>
<Style Selector="TabControl.NavBar > TabItem:selected">
<Setter Property="Background" Value="#1fffffff"/>
</Style>
<Style Selector="TabControl.NavBar > TabItem">
<Setter Property="BorderThickness" Value="0"/>
<Setter Property="FontSize" Value="14"/>
<Setter Property="Margin" Value="0"/>
<Setter Property="Padding" Value="16"/>
<Setter Property="Width" Value="240" />
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
<Setter Property="(ScrollViewer.HorizontalScrollBarVisibility)" Value="Auto"/>
<Setter Property="(ScrollViewer.VerticalScrollBarVisibility)" Value="Auto"/>
</Style>
<Style Selector="TabControl.NavBar > TabItem:pointerover /template/ Border#PART_LayoutRoot">
<Setter Property="Background" Value="#3fffffff"/>
</Style>
<Style Selector="TabControl.NavBar > TabItem:selected /template/ Border#PART_SelectedPipe">
<Setter Property="IsVisible" Value="False" />
</Style>
<Style Selector="TabControl.NavBar > TabItem:selected">
<Setter Property="Background" Value="#1fffffff"/>
</Style>
<Style Selector="TabControl.NavBar > TabItem:pointerover /template/ Border#PART_LayoutRoot">
<Setter Property="Background" Value="#3fffffff"/>
</Style>
</Styles>
@@ -135,7 +135,7 @@ namespace System.Application.UI.Views.Controls
var constraints = this.Bounds.Deflate(Padding);
var constraintsWidth = constraints.Width;
//让文字不要在宽度合适的时候滚动
//让文字不要在宽度合适的时候滚动
_isConstrained = _textWidth > constraintsWidth + 1;
if (_isConstrained & !_waiting)
@@ -154,7 +154,7 @@ namespace System.Application.UI.Views.Controls
if (nC.Intersects(nR))
using (context.PushPostTransform(Matrix.CreateTranslation(offset, padding.Top)))
TextLayout.Draw(context);
TextLayout.Draw(context, new Point(Padding.Left, Padding.Top));
}
}
else
@@ -162,7 +162,7 @@ namespace System.Application.UI.Views.Controls
_animate = false;
using (context.PushPostTransform(Matrix.CreateTranslation(padding.Left, padding.Top)))
TextLayout.Draw(context);
TextLayout.Draw(context, new Point(Padding.Left, Padding.Top));
}
}
}
@@ -2,6 +2,7 @@
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:ms="clr-namespace:System.Application.Models.Settings;assembly=System.Application.SteamTools.Client.Desktop"
mc:Ignorable="d"
x:Name="u" IsHitTestVisible="False"
Background="Transparent"
@@ -9,7 +10,7 @@
<DockPanel HorizontalAlignment="Stretch">
<ExperimentalAcrylicBorder DockPanel.Dock="Top" IsHitTestVisible="False" Height="{StaticResource TitleBarHeight}">
<ExperimentalAcrylicBorder.Material>
<ExperimentalAcrylicMaterial TintColor="{DynamicResource BackgroundColorKey}" MaterialOpacity="0.80" TintOpacity="1"/>
<ExperimentalAcrylicMaterial TintColor="{DynamicResource BackgroundColorKey}" MaterialOpacity="{ReflectionBinding Value,Source={x:Static ms:UISettings.AcrylicOpacity},Mode=OneWay}" TintOpacity="1"/>
</ExperimentalAcrylicBorder.Material>
<StackPanel Orientation="Horizontal" VerticalAlignment="Top" Margin="10 6 10 6">
<Image Source="/Application/UI/Assets/Icon.ico" Height="18" Width="18" Margin="0,0,10,0"/>
@@ -18,7 +19,7 @@
</ExperimentalAcrylicBorder>
<ExperimentalAcrylicBorder DockPanel.Dock="Bottom" IsHitTestVisible="False" Opacity="{StaticResource ContentOpacity}">
<ExperimentalAcrylicBorder.Material>
<ExperimentalAcrylicMaterial TintColor="{DynamicResource ThemeColorKey}" MaterialOpacity="0.75" TintOpacity="1"/>
<ExperimentalAcrylicMaterial TintColor="{DynamicResource ThemeColorKey}" MaterialOpacity="{ReflectionBinding Value,Source={x:Static ms:UISettings.AcrylicOpacity},Mode=OneWay}" TintOpacity="1"/>
</ExperimentalAcrylicBorder.Material>
</ExperimentalAcrylicBorder>
</DockPanel>
@@ -13,85 +13,85 @@
Background="Transparent"
IsVisible="{Binding Source={x:Static service:ToastService.Current},Path=IsVisible,Mode=OneWay}"
x:Class="System.Application.UI.Views.Controls.ToastMessage">
<UserControl.Styles>
<Style Selector="controls|ToastMessage">
<Setter Property="Margin" Value="0 0 0 20" />
<Setter Property="HorizontalAlignment" Value="Center" />
<Setter Property="VerticalAlignment" Value="Bottom" />
</Style>
<UserControl.Styles>
<Style Selector="controls|ToastMessage">
<Setter Property="Margin" Value="0 0 0 20" />
<Setter Property="HorizontalAlignment" Value="Center" />
<Setter Property="VerticalAlignment" Value="Bottom" />
</Style>
<Style Selector="controls|ToastMessage > Border">
<Setter Property="CornerRadius" Value="4" />
<Setter Property="BoxShadow" Value="{DynamicResource InfoBoxShadow}" />
<Setter Property="Transitions">
<Transitions>
<DoubleTransition Property="Opacity" Duration="0:0:0.3" />
</Transitions>
</Setter>
</Style>
<Style Selector="controls|ToastMessage > Border">
<Setter Property="CornerRadius" Value="4" />
<Setter Property="BoxShadow" Value="{DynamicResource InfoBoxShadow}" />
<Setter Property="Transitions">
<Transitions>
<DoubleTransition Property="Opacity" Duration="0:0:0.3" />
</Transitions>
</Setter>
</Style>
<Style Selector="controls|ToastMessage[IsVisible=true]">
<Style.Animations>
<Animation Duration="0:0:0.25" Easing="QuadraticEaseIn" FillMode="Forward">
<KeyFrame Cue="0%">
<Setter Property="Opacity" Value="0"/>
<Setter Property="TranslateTransform.Y" Value="20"/>
<Setter Property="ScaleTransform.ScaleX" Value="0.85"/>
<Setter Property="ScaleTransform.ScaleY" Value="0.85"/>
</KeyFrame>
<KeyFrame Cue="30%">
<Setter Property="TranslateTransform.Y" Value="-20"/>
</KeyFrame>
<KeyFrame Cue="100%">
<Setter Property="Opacity" Value="1"/>
<Setter Property="TranslateTransform.Y" Value="0"/>
<Setter Property="ScaleTransform.ScaleX" Value="1"/>
<Setter Property="ScaleTransform.ScaleY" Value="1"/>
</KeyFrame>
</Animation>
</Style.Animations>
</Style>
<Style Selector="controls|ToastMessage[IsVisible=true]">
<Style.Animations>
<Animation Duration="0:0:0.25" Easing="QuadraticEaseIn" FillMode="Forward">
<KeyFrame Cue="0%">
<Setter Property="Opacity" Value="0"/>
<Setter Property="TranslateTransform.Y" Value="20"/>
<Setter Property="ScaleTransform.ScaleX" Value="0.85"/>
<Setter Property="ScaleTransform.ScaleY" Value="0.85"/>
</KeyFrame>
<KeyFrame Cue="30%">
<Setter Property="TranslateTransform.Y" Value="-20"/>
</KeyFrame>
<KeyFrame Cue="100%">
<Setter Property="Opacity" Value="1"/>
<Setter Property="TranslateTransform.Y" Value="0"/>
<Setter Property="ScaleTransform.ScaleX" Value="1"/>
<Setter Property="ScaleTransform.ScaleY" Value="1"/>
</KeyFrame>
</Animation>
</Style.Animations>
</Style>
<Style Selector="controls|ToastMessage[IsVisible=false]">
<!--<Setter Property="RenderTransformOrigin" Value="50%,0%"/>-->
<Style.Animations>
<Animation Duration="0:0:0.75" Easing="QuadraticEaseOut" FillMode="Forward">
<KeyFrame Cue="0%">
<Setter Property="Opacity" Value="1"/>
<!--<Setter Property="TranslateTransform.X" Value="0"/>
<Style Selector="controls|ToastMessage[IsVisible=false]">
<!--<Setter Property="RenderTransformOrigin" Value="50%,0%"/>-->
<Style.Animations>
<Animation Duration="0:0:0.75" Easing="QuadraticEaseOut" FillMode="Forward">
<KeyFrame Cue="0%">
<Setter Property="Opacity" Value="1"/>
<!--<Setter Property="TranslateTransform.X" Value="0"/>
<Setter Property="ScaleTransform.ScaleY" Value="1"/>-->
</KeyFrame>
<KeyFrame Cue="70%">
<!--<Setter Property="TranslateTransform.X" Value="800"/>
</KeyFrame>
<KeyFrame Cue="70%">
<!--<Setter Property="TranslateTransform.X" Value="800"/>
<Setter Property="ScaleTransform.ScaleY" Value="1"/>-->
</KeyFrame>
<KeyFrame Cue="100%">
<Setter Property="Opacity" Value="0"/>
<!--<Setter Property="ScaleTransform.ScaleY" Value="0"/>
</KeyFrame>
<KeyFrame Cue="100%">
<Setter Property="Opacity" Value="0"/>
<!--<Setter Property="ScaleTransform.ScaleY" Value="0"/>
<Setter Property="TranslateTransform.X" Value="0"/>-->
</KeyFrame>
</Animation>
</Style.Animations>
</Style>
</UserControl.Styles>
</KeyFrame>
</Animation>
</Style.Animations>
</Style>
</UserControl.Styles>
<Border Background="{DynamicResource InactiveBackgroundBrushKey}" Padding="20 0 10 0">
<StackPanel Orientation="Horizontal">
<PathIcon Data="{StaticResource InfoDrawing}"
VerticalAlignment="Center"
Width="20"
Height="20"/>
<!--<TextBlock Text="{Binding Title}" FontSize="16"/>-->
<Border Padding="10">
<TextBlock Text="{Binding Source={x:Static service:ToastService.Current},Path=Message,Mode=OneWay}" FontSize="14" Foreground="{DynamicResource HighlightForegroundColorKey}" VerticalAlignment="Center" HorizontalAlignment="Center" TextWrapping="WrapWithOverflow" MaxWidth="780"/>
</Border>
<Button Width="40" Height="40"
Background="Transparent"
VerticalContentAlignment="Center"
Command="{ReflectionBinding Source={x:Static service:ToastService.Current},Path=CloseBtn_Click}"
Cursor="Hand">
<PathIcon Data="{DynamicResource CloseDrawing}" Width="12" Height="12"></PathIcon>
</Button>
</StackPanel>
</Border>
<Border Background="{DynamicResource InactiveBackgroundBrushKey}" Padding="20 0 10 0">
<StackPanel Orientation="Horizontal">
<PathIcon Data="{StaticResource InfoDrawing}"
VerticalAlignment="Center"
Width="20"
Height="20"/>
<!--<TextBlock Text="{Binding Title}" FontSize="16"/>-->
<Border Padding="10">
<TextBlock Text="{Binding Source={x:Static service:ToastService.Current},Path=Message,Mode=OneWay}" FontSize="14" Foreground="{DynamicResource HighlightForegroundColorKey}" VerticalAlignment="Center" HorizontalAlignment="Center" TextWrapping="WrapWithOverflow" MaxWidth="780"/>
</Border>
<Button Width="40" Height="40"
Background="Transparent"
VerticalContentAlignment="Center"
Command="{ReflectionBinding Source={x:Static service:ToastService.Current},Path=CloseBtn_Click}"
Cursor="Hand">
<PathIcon Data="{DynamicResource CloseDrawing}" Width="12" Height="12"></PathIcon>
</Button>
</StackPanel>
</Border>
</UserControl>
@@ -1,6 +1,7 @@
using Avalonia;
using Avalonia.Controls;
using Avalonia.Markup.Xaml;
using System.Application.Services;
namespace System.Application.UI.Views.Controls
{
@@ -9,6 +10,19 @@ namespace System.Application.UI.Views.Controls
public ToastMessage()
{
InitializeComponent();
var show = this.GetObservable(IsVisibleProperty);
show.Subscribe(value =>
{
if (value == true)
{
var window = this.VisualRoot as Window;
if (window.IsActiveWindow())
{
return;
}
IsVisible = false;
}
});
}
private void InitializeComponent()
@@ -5,6 +5,11 @@ using CefNet.Internal;
using System.Application.Services.CloudService;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Net.Http.Headers;
using System.Security.Cryptography;
using System.Threading.Tasks;
using static System.Application.Services.CloudService.Constants;
// ReSharper disable once CheckNamespace
@@ -43,7 +48,40 @@ namespace System.Application.UI.Views.Controls
RaiseEvent(e);
}
/// <summary>
/// 在浏览器中打开新窗口,所有新页面打开的Url会在浏览器中打开
/// </summary>
public bool OpenInBrowser { get; set; } = true;
/// <summary>
/// 是否固定单页,为 <see langword="true"/> 时所有跳转都将在浏览器中打开
/// </summary>
public bool FixedSinglePage { get; set; } = false;
/// <summary>
/// 需要拦截响应流的Url
/// </summary>
public string[]? StreamResponseFilterUrls { get; set; }
/// <summary>
/// 拦截响应流的处理
/// </summary>
public Action<string, Stream>? OnStreamResponseFilterResourceLoadComplete { get; set; }
public bool IsSecurity { get; set; }
public Aes? Aes { get; internal set; }
protected override void Dispose(bool disposing)
{
if (disposing)
{
Aes?.Dispose();
StreamResponseFilterUrls = null;
OnStreamResponseFilterResourceLoadComplete = null;
}
base.Dispose(disposing);
}
}
public class FullscreenModeChangeEventArgs : RoutedEventArgs
@@ -155,6 +193,11 @@ namespace System.Application.UI.Views.Controls
protected override bool OnBeforePopup(CefBrowser browser, CefFrame frame, string targetUrl, string targetFrameName, CefWindowOpenDisposition targetDisposition, bool userGesture, CefPopupFeatures popupFeatures, CefWindowInfo windowInfo, ref CefClient client, CefBrowserSettings settings, ref CefDictionaryValue extraInfo, ref int noJavascriptAccess)
{
if (webView.FixedSinglePage)
{
BrowserOpen(targetUrl);
return true;
}
switch (targetDisposition)
{
case CefWindowOpenDisposition.NewForegroundTab:
@@ -168,7 +211,10 @@ namespace System.Application.UI.Views.Controls
else
{
// 禁止创建新窗口,仅在当前窗口跳转
browser.MainFrame.LoadUrl(targetUrl);
if (IsHttpUrl(targetUrl))
{
browser.MainFrame.LoadUrl(targetUrl);
}
}
return true;
}
@@ -181,6 +227,17 @@ namespace System.Application.UI.Views.Controls
if (request.Url.StartsWith(sc.ApiBaseUrl, StringComparison.OrdinalIgnoreCase))
{
request.SetHeaderByName(Headers.Request.AppVersion, sc.Settings.AppVersionStr, true);
if (webView.IsSecurity)
{
if (webView.Aes == null)
{
webView.Aes = AESUtils.Create();
}
var skey_bytes = webView.Aes.ToParamsByteArray();
var conn_helper = DI.Get<IApiConnectionPlatformHelper>();
var skey_str = conn_helper.RSA.EncryptToString(skey_bytes);
request.SetHeaderByName(Headers.Request.SecurityKey, skey_str, true);
}
}
var returnValue = base.OnBeforeResourceLoad(browser, frame, request, callback);
return returnValue;
@@ -217,5 +274,152 @@ namespace System.Application.UI.Views.Controls
// var returnValue = base.OnBeforeResourceLoad(browser, frame, request, callback);
// return returnValue;
//}
protected override void OnResourceLoadComplete(CefBrowser browser, CefFrame frame, CefRequest request, CefResponse response, CefUrlRequestStatus status, long receivedContentLength)
{
base.OnResourceLoadComplete(browser, frame, request, response, status, receivedContentLength);
if (responseDictionary.TryGetValue(request.Identifier, out var filter))
{
if (webView.OnStreamResponseFilterResourceLoadComplete != null)
{
Task.Run(() =>
{
webView.OnStreamResponseFilterResourceLoadComplete(request.Url, filter.Data);
});
}
}
}
readonly Dictionary<ulong, StreamResponseFilter> responseDictionary = new();
protected override CefResponseFilter GetResourceResponseFilter(CefBrowser browser, CefFrame frame, CefRequest request, CefResponse response)
{
if (webView.StreamResponseFilterUrls != null &&
webView.StreamResponseFilterUrls.Any(x => request.Url.StartsWith(x, StringComparison.OrdinalIgnoreCase)) &&
webView.OnStreamResponseFilterResourceLoadComplete != null)
{
var rspIsCiphertext = false;
if (webView.IsSecurity)
{
var contentType = response.GetHeaderByName("Content-Type");
if (!string.IsNullOrWhiteSpace(contentType) && MediaTypeHeaderValue.TryParse(contentType, out var contentType_))
{
var mime = contentType_.MediaType;
if (mime == MediaTypeNames.Security)
{
rspIsCiphertext = true;
}
}
}
var dataFilter = new StreamResponseFilter(webView, rspIsCiphertext);
responseDictionary.Add(request.Identifier, dataFilter);
return dataFilter;
}
return base.GetResourceResponseFilter(browser, frame, request, response);
}
/// <summary>
/// https://stackoverflow.com/questions/45816851/using-cefsharp-to-capture-resource-response-data-body
/// </summary>
unsafe class StreamResponseFilter : CefResponseFilter
{
readonly WebView3 webView;
readonly bool rspIsCiphertext;
MemoryStream? memoryStream;
public StreamResponseFilter(WebView3 webView, bool rspIsCiphertext)
{
this.webView = webView;
this.rspIsCiphertext = rspIsCiphertext;
}
protected override bool InitFilter()
{
memoryStream = new();
return true;
}
protected override CefResponseFilterStatus Filter(IntPtr dataIn, long dataInSize, ref long dataInRead, IntPtr dataOut, long dataOutSize, ref long dataOutWritten)
{
Stream? dataInStream;
if (dataIn == default)
{
dataInStream = default;
}
else
{
var dataInBytePtr = (byte*)dataIn.ToPointer();
dataInStream = new UnmanagedMemoryStream(dataInBytePtr, dataInSize, dataInSize, FileAccess.Read);
}
var dataOutBytePtr = (byte*)dataOut.ToPointer();
UnmanagedMemoryStream dataOutStream = new(dataOutBytePtr, dataOutSize, dataOutSize, FileAccess.Write);
return Filter(dataInStream, dataInSize, ref dataInRead, dataOutStream, dataOutSize, ref dataOutWritten);
}
protected virtual CefResponseFilterStatus Filter(Stream? dataIn, long dataInSize, ref long dataInRead, Stream dataOut, long dataOutSize, ref long dataOutWritten)
{
if (dataIn == null)
{
dataInRead = 0;
dataOutWritten = 0;
return CefResponseFilterStatus.Done;
}
dataInRead = dataIn.Length;
dataOutWritten = Math.Min(dataInRead, dataOut.Length);
//Important we copy dataIn to dataOut
dataIn.CopyTo(dataOut);
//Copy data to stream
dataIn.Position = 0;
dataIn.CopyTo(memoryStream!);
return CefResponseFilterStatus.Done;
}
protected override void Dispose(bool disposing)
{
if (!disposing)
{
if (disposing)
{
if (memoryStream != null)
{
memoryStream?.Dispose();
memoryStream = null;
stream?.Dispose();
stream = null;
}
}
}
base.Dispose(disposing);
}
Stream? stream;
public Stream Data
{
get
{
if (stream == null) stream = GetStream();
return stream;
}
}
Stream GetStream()
{
if (rspIsCiphertext && webView.Aes != null)
{
memoryStream!.Position = 0;
var cryptoStream = new CryptoStream(memoryStream, webView.Aes.CreateDecryptor(), CryptoStreamMode.Read);
return cryptoStream;
}
return memoryStream!;
}
}
}
}
@@ -27,12 +27,12 @@
<DockPanel HorizontalAlignment="Stretch">
<ExperimentalAcrylicBorder IsHitTestVisible="False" DockPanel.Dock="Left" Width="240">
<ExperimentalAcrylicBorder.Material>
<ExperimentalAcrylicMaterial TintColor="{DynamicResource BackgroundColorKey}" MaterialOpacity="0.8" TintOpacity="1"/>
<ExperimentalAcrylicMaterial TintColor="{DynamicResource BackgroundColorKey}" MaterialOpacity="{ReflectionBinding Value,Source={x:Static ms:UISettings.AcrylicOpacity},Mode=OneWay}" TintOpacity="1"/>
</ExperimentalAcrylicBorder.Material>
</ExperimentalAcrylicBorder>
<ExperimentalAcrylicBorder IsHitTestVisible="False">
<ExperimentalAcrylicBorder.Material>
<ExperimentalAcrylicMaterial TintColor="{DynamicResource ThemeColorKey}" MaterialOpacity="0.8" TintOpacity="1" BackgroundSource="Digger" PlatformTransparencyCompensationLevel="0.5"/>
<ExperimentalAcrylicMaterial TintColor="{DynamicResource ThemeColorKey}" MaterialOpacity="{ReflectionBinding Value,Source={x:Static ms:UISettings.AcrylicOpacity},Mode=OneWay}" TintOpacity="1"/>
</ExperimentalAcrylicBorder.Material>
</ExperimentalAcrylicBorder>
</DockPanel>
@@ -43,7 +43,8 @@
<Image Source="/Application/UI/Assets/Icon.ico" Height="64" Width="64" VerticalAlignment="Center" Margin="-8,0,0,0"/>
<Label Content="{ReflectionBinding Path=Title}" Foreground="{DynamicResource HighlightForegroundBrushKey}" VerticalContentAlignment="Center" FontSize="20" Margin="8,0,0,0"/>
</StackPanel>
<TextBlock IsHitTestVisible="False" Grid.Column="1" Text="{ReflectionBinding SelectedItem.Name}" Foreground="{DynamicResource HighlightForegroundBrushKey}" Padding="15 8 0 0" FontSize="28"/>
<TextBlock IsHitTestVisible="False" Grid.Column="1" Text="{ReflectionBinding SelectedItem.Name}" Foreground="{DynamicResource HighlightForegroundBrushKey}"
Padding="15 8 0 0" FontSize="24" FontWeight="Regular"/>
<StackPanel Grid.Column="2" x:Name="titleMenu" Orientation="Horizontal" VerticalAlignment="Top">
<!--<Menu Items="{Binding SelectedItem.MenuItems}" IsVisible="{Binding !SelectedItem.MenuItems,Converter={StaticResource IsNullConverter}}" Classes="BindMenu">
</Menu>-->
@@ -83,10 +84,10 @@
<StackPanel Spacing="15">
<Image Source="{ReflectionBinding Path=AvaterPath, Source={x:Static service:UserService.Current},Mode=OneWay,Converter={StaticResource BitmapAssetValueConverter},ConverterParameter=100}"
Stretch="Uniform"
Height="80" Width="80"
Height="100" Width="100"
HorizontalAlignment="Center">
<!--<Image.Clip>
<EllipseGeometry Rect="0,0,100,100" />
<EllipseGeometry Rect="0,0,80,80" />
</Image.Clip>-->
</Image>
<TextBlock
@@ -113,20 +114,20 @@
Command="{ReflectionBinding Path=ShowWindow,Source={x:Static service:UserService.Current}}"
CommandParameter="UserProfile"></Button>
</ListBoxItem>
<ListBoxItem>
<ListBoxItem IsVisible="{ReflectionBinding Path=HasPhoneNumber,Source={x:Static service:UserService.Current}}}">
<Button
Classes="CodeButton"
Content="{ReflectionBinding Path=Res.User_ChangePhoneNum,Mode=OneWay,Source={x:Static resx:R.Current}}"
Command="{ReflectionBinding Path=ShowWindow,Source={x:Static service:UserService.Current}}"
CommandParameter="ChangeBindPhoneNumber"></Button>
</ListBoxItem>
<ListBoxItem>
<!--<ListBoxItem>
<Button
Classes="CodeButton"
Content="{ReflectionBinding Path=Res.DelAccount,Mode=OneWay,Source={x:Static resx:R.Current}}"
Command="{ReflectionBinding Path=ShowWindow,Source={x:Static service:UserService.Current}}"
CommandParameter="ChangeBindPhoneNumber"></Button>
</ListBoxItem>
</ListBoxItem>-->
<ListBoxItem>
<Button
Classes="CodeButton"
@@ -144,7 +145,7 @@
<TabControl
Items="{Binding TabItems}"
SelectedItem="{Binding SelectedItem}"
Margin="0 25 0 0"
Margin="0 22 0 0"
Classes="NavBar">
<TabControl.DataTemplates>
<DataTemplate DataType="vm:DebugWebViewPageViewModel">
@@ -177,6 +178,9 @@
<DataTemplate DataType="vm:LocalAuthPageViewModel">
<pages:LocalAuthPage/>
</DataTemplate>
<DataTemplate DataType="vm:GameRelatedPageViewModel">
<pages:GameRelatedPage/>
</DataTemplate>
</TabControl.DataTemplates>
<TabControl.ItemTemplate>
<DataTemplate>
@@ -5,5 +5,8 @@
xmlns:controls="clr-namespace:System.Application.UI.Views.Controls;assembly=System.Application.SteamTools.Client.Desktop.Avalonia"
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
x:Class="System.Application.UI.Views.Pages.About_FAQPage">
<controls:WebView3 x:Name="webViewQA" Background="Transparent" />
<Panel>
<controls:WebView3 x:Name="webViewQA" Background="Transparent" />
<controls:ProgressRing x:Name="webViewQALoading" IsIndeterminate="True" HorizontalAlignment="Stretch" Height="100" Width="100" />
</Panel>
</UserControl>
@@ -2,6 +2,7 @@ using Avalonia;
using Avalonia.Controls;
using Avalonia.LogicalTree;
using Avalonia.Markup.Xaml;
using CefNet;
using System.Application.UI.Resx;
using System.Application.UI.Views.Controls;
@@ -10,19 +11,32 @@ namespace System.Application.UI.Views.Pages
public class About_FAQPage : UserControl, IDisposable
{
readonly WebView3 webViewQA;
readonly ProgressRing webViewQALoading;
bool disposedValue;
public About_FAQPage()
{
InitializeComponent();
webViewQALoading = this.FindControl<ProgressRing>(nameof(webViewQALoading));
webViewQA = this.FindControl<WebView3>(nameof(webViewQA));
webViewQA.Opacity = 0;
webViewQA.LoadingStateChange += WebView_LoadingStateChange;
webViewQA.InitialUrl = string.Format(
"https://steampp.net/faqbox?theme={0}&language={1}",
CefNetApp.GetTheme(),
R.Language);
}
private void WebView_LoadingStateChange(object? sender, LoadingStateChangeEventArgs e)
{
if (!e.Busy)
{
if (webViewQA.Opacity != 1) webViewQA.Opacity = 1;
if (webViewQALoading.IsVisible) webViewQALoading.IsVisible = false;
}
}
private void InitializeComponent()
{
AvaloniaXamlLoader.Load(this);
@@ -34,12 +48,6 @@ namespace System.Application.UI.Views.Pages
Dispose();
}
protected override void OnDetachedFromVisualTree(VisualTreeAttachmentEventArgs e)
{
base.OnDetachedFromVisualTree(e);
Dispose();
}
protected virtual void Dispose(bool disposing)
{
if (!disposedValue)
@@ -49,6 +57,7 @@ namespace System.Application.UI.Views.Pages
// TODO: 释放托管状态(托管对象)
if (webViewQA != null)
{
webViewQA.LoadingStateChange -= WebView_LoadingStateChange;
((IDisposable)webViewQA).Dispose();
}
}
@@ -76,7 +76,9 @@
<Setter Property="VerticalContentAlignment" Value="Center" />
</Style>
</UserControl.Styles>
<Border Padding="{StaticResource PageMargin2}">
<ScrollViewer HorizontalScrollBarVisibility="Disabled"
VerticalScrollBarVisibility="Auto"
Padding="{StaticResource PageMargin2}">
<DockPanel>
<StackPanel Spacing="10" DockPanel.Dock="Top">
<StackPanel Orientation="Horizontal">
@@ -92,6 +94,10 @@
VerticalAlignment="Center"/>
<TextBox Classes="Content readonlybox"
Text="{Binding VersionDisplay,Mode=OneTime}"/>
<Button Classes="plain" Command="{Binding CheckUpdateCommand}"
VerticalAlignment="Center" VerticalContentAlignment="Center">
<TextBlock Text="{ReflectionBinding Path=Res.CheckUpdate,Source={x:Static resx:R.Current},Mode=OneWay}" Classes="Hyperlink" />
</Button>
</StackPanel>
<StackPanel Orientation="Horizontal" Spacing="5">
<TextBlock Classes="Header light"
@@ -201,5 +207,5 @@
<Panel Height="150" />
</DockPanel>
</DockPanel>
</Border>
</ScrollViewer>
</UserControl>
@@ -89,8 +89,8 @@
<StackPanel HorizontalAlignment="Right">
<TextBlock Text="{ReflectionBinding Path=Res.CommunityFix_ProxyMode,Mode=OneWay,Source={x:Static resx:R.Current}}" Margin="0 5"
Foreground="{DynamicResource HighlightForegroundBrushKey}"></TextBlock>
<RadioButton Content="{ReflectionBinding Path=Res.CommunityFix_ProxyMode_Hosts,Mode=OneWay,Source={x:Static resx:R.Current}}" IsChecked="{Binding Source={x:Static ms:ProxySettings.EnableWindowsProxy},Path=!Value, Mode=TwoWay}"></RadioButton>
<RadioButton Content="{ReflectionBinding Path=Res.CommunityFix_ProxyMode_WinSystem,Mode=OneWay,Source={x:Static resx:R.Current}}" IsChecked="{Binding Source={x:Static ms:ProxySettings.EnableWindowsProxy},Path=Value, Mode=TwoWay}"></RadioButton>
<RadioButton Content="{ReflectionBinding Path=Res.CommunityFix_ProxyMode_Hosts,Mode=OneWay,Source={x:Static resx:R.Current}}" ToolTip.Tip="{ReflectionBinding Path=Res.CommunityFix_ProxyMode_HostsTip,Mode=OneWay,Source={x:Static resx:R.Current}}" IsChecked="{Binding Source={x:Static ms:ProxySettings.EnableWindowsProxy},Path=!Value, Mode=TwoWay}"></RadioButton>
<RadioButton Content="{ReflectionBinding Path=Res.CommunityFix_ProxyMode_WinSystem,Mode=OneWay,Source={x:Static resx:R.Current}}" ToolTip.Tip="{ReflectionBinding Path=Res.CommunityFix_ProxyMode_WinSystemTip,Mode=OneWay,Source={x:Static resx:R.Current}}" IsChecked="{Binding Source={x:Static ms:ProxySettings.EnableWindowsProxy},Path=Value, Mode=TwoWay}"></RadioButton>
</StackPanel>
</WrapPanel>
</Border>
@@ -86,8 +86,8 @@
<!--<Button Background="Transparent"
Cursor="Hand"
ToolTip.Tip="添加未拥有的游戏">
<PathIcon Data="{StaticResource AddDrawing}" />
</Button>-->
<PathIcon Data="{StaticResource AddDrawing}" />
</Button>-->
<Button Background="Transparent"
Command="{ReflectionBinding RefreshGamesList,Source={x:Static service:SteamConnectService.Current},Mode=OneWay}"
Cursor="Hand"
@@ -194,6 +194,14 @@
</TreeView.ItemTemplate>
</TreeView>-->
<Panel>
<StackPanel IsVisible="{ReflectionBinding Source={x:Static service:SteamConnectService.Current},Path=IsLoadingGameList,Mode=OneWay}"
HorizontalAlignment="Center" VerticalAlignment="Center" Spacing="10">
<controls:ProgressRing IsIndeterminate="True"
Width="100" Height="100">
</controls:ProgressRing>
<TextBlock Text="{ReflectionBinding Path=Res.GameList_IsLoading,Mode=OneWay,Source={x:Static resx:R.Current}}"></TextBlock>
</StackPanel>
<TextBlock IsVisible="{Binding IsSteamAppsEmpty}"
Text="{ReflectionBinding Path=Res.GameList_IsEmpty,Mode=OneWay,Source={x:Static resx:R.Current}}"
TextWrapping="WrapWithOverflow"
@@ -201,12 +209,12 @@
<ScrollViewer HorizontalScrollBarVisibility="Disabled" VerticalScrollBarVisibility="Auto" Padding="0 0 0 10">
<ItemsRepeater Items="{Binding SteamApps}">
<ItemsRepeater.Layout>
<UniformGridLayout ItemsJustification="SpaceEvenly" MinRowSpacing="20" MaximumRowsOrColumns="8" ItemsStretch="Fill" />
<UniformGridLayout ItemsJustification="SpaceEvenly" MinRowSpacing="10" MinColumnSpacing="20" MaximumRowsOrColumns="10" ItemsStretch="Fill" />
</ItemsRepeater.Layout>
<ItemsRepeater.ItemTemplate>
<DataTemplate>
<StackPanel Margin="20 0" Spacing="8">
<Border DockPanel.Dock="Top" Classes="paper">
<StackPanel Spacing="8">
<Border DockPanel.Dock="Top" Classes="paper" Width="{ReflectionBinding Value,Source={x:Static ms:UISettings.AppGridSize},Mode=OneWay}">
<Border.ContextMenu>
<ContextMenu>
<MenuItem
@@ -228,7 +236,7 @@
</MenuItem.Icon>
</MenuItem>
<!--<MenuItem
Header="{ReflectionBinding Path=Res.Edit,Mode=OneWay,Source={x:Static resx:R.Current}}"
Header="{ReflectionBinding Path=Res.GameList_EditAppInfo,Mode=OneWay,Source={x:Static resx:R.Current}}"
Command="{ReflectionBinding #u.DataContext.OfflineModeButton_Click}"
CommandParameter="{Binding}" />-->
<MenuItem
@@ -239,14 +247,20 @@
<PathIcon Data="{StaticResource TrophyDrawing}" Width="16"></PathIcon>
</MenuItem.Icon>
</MenuItem>
<!--<MenuItem
Header="{ReflectionBinding Path=Res.GameList_HideTheGame,Mode=OneWay,Source={x:Static resx:R.Current}}"
Command="{ReflectionBinding #u.DataContext.DeleteUserButton_Click}"
<!--<MenuItem
Header="{ReflectionBinding Path=Res.GameList_HideTheGame,Mode=OneWay,Source={x:Static resx:R.Current}}"
Command="{ReflectionBinding #u.DataContext.AddHideAppList}"
CommandParameter="{Binding}" />
<MenuItem
Header="{ReflectionBinding Path=Res.GameList_SetCustomImage,Mode=OneWay,Source={x:Static resx:R.Current}}"
Command="{ReflectionBinding #u.DataContext.DeleteUserButton_Click}"
CommandParameter="{Binding}" />-->
<MenuItem
Header="添加到挂时长列表"
Command="{ReflectionBinding #u.DataContext.AddAFKAppList}"
CommandParameter="{Binding}" />-->
<!--<MenuItem
Header="{ReflectionBinding Path=Res.GameList_SetCustomImage,Mode=OneWay,Source={x:Static resx:R.Current}}"
Command="{ReflectionBinding #u.DataContext.DeleteUserButton_Click}"
CommandParameter="{Binding}" />-->
<MenuItem Header="-"></MenuItem>
<MenuItem
Header="{ReflectionBinding Path=Res.GameList_OpenStoreUrl,Mode=OneWay,Source={x:Static resx:R.Current}}"
Command="{ReflectionBinding #u.DataContext.OpenAppStoreUrl}"
@@ -261,7 +275,7 @@
CommandParameter="{Binding}" />
</ContextMenu>
</Border.ContextMenu>
<Panel x:Name="app" Width="{ReflectionBinding Value,Source={x:Static ms:UISettings.AppGridSize},Mode=OneWay}">
<Panel x:Name="app" Width="{ReflectionBinding $parent.Width}">
<!--<i:Interaction.Behaviors>
<ia:EventTriggerBehavior EventName="Tapped" SourceObject="{ReflectionBinding #app}">
<ia:InvokeCommandAction Command="{ReflectionBinding #u.DataContext.AppClick}" CommandParameter="{Binding}"/>
@@ -0,0 +1,16 @@
<UserControl xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:vm="clr-namespace:System.Application.UI.ViewModels;assembly=System.Application.SteamTools.Client.Desktop"
xmlns:resx="clr-namespace:System.Application.UI.Resx;assembly=System.Application.SteamTools.Client.Desktop"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
x:DataType="vm:StartPageViewModel"
x:CompileBindings="True"
x:Class="System.Application.UI.Views.Pages.GameRelatedPage">
<StackPanel HorizontalAlignment="Stretch" Margin="{StaticResource PageMargin}" Background="Transparent" Spacing="20">
<Grid ColumnDefinitions="Auto,Auto">
</Grid>
</StackPanel>
</UserControl>
@@ -0,0 +1,19 @@
using Avalonia.Controls;
using Avalonia.Markup.Xaml;
using System.Application.UI.ViewModels;
namespace System.Application.UI.Views.Pages
{
public class GameRelatedPage : UserControl
{
public GameRelatedPage()
{
InitializeComponent();
}
private void InitializeComponent()
{
AvaloniaXamlLoader.Load(this);
}
}
}
@@ -28,87 +28,116 @@
</ItemsRepeater.Layout>
<ItemsRepeater.ItemTemplate>
<DataTemplate>
<Panel>
<Border x:Name="panel" Classes="paper" Width="250" Height="250" Background="{DynamicResource ThemeBrushKey}">
<i:Interaction.Behaviors>
<ia:EventTriggerBehavior EventName="PointerEnter" SourceObject="{ReflectionBinding #panel}">
<ia:ChangePropertyAction TargetObject="{ReflectionBinding #delete_btn}" PropertyName="IsVisible" Value="True"/>
</ia:EventTriggerBehavior>
<ia:EventTriggerBehavior EventName="PointerLeave" SourceObject="{ReflectionBinding #panel}">
<ia:ChangePropertyAction TargetObject="{ReflectionBinding #delete_btn}" PropertyName="IsVisible" Value="False"/>
</ia:EventTriggerBehavior>
</i:Interaction.Behaviors>
<Grid RowDefinitions="30,165,Auto">
<DockPanel VerticalAlignment="Center">
<TextBox VerticalAlignment="Center"
VerticalContentAlignment="Center"
ToolTip.Tip="{ReflectionBinding Path=Res.LocalAuth_AuthName,Mode=OneWay,Source={x:Static resx:R.Current}}"
Text="{Binding Name,Mode=TwoWay}"
Classes="readonlybox"
DockPanel.Dock="Left"
Padding="10,5"
FontSize="16"
Foreground="{DynamicResource HighlightForegroundBrushKey}">
<TextBox.InnerRightContent>
<PathIcon Data="{StaticResource EditDrawing}"
Width="10" Height="10"
Opacity="0.8"
VerticalAlignment="Center" HorizontalAlignment="Left"
Margin="0">
</PathIcon>
</TextBox.InnerRightContent>
</TextBox>
<Button DockPanel.Dock="Right" x:Name="delete_btn" Classes="flatbutton" IsVisible="False" Background="{DynamicResource ThemeBrushKey}" HorizontalAlignment="Right" Cursor="Hand" ToolTip.Tip="{ReflectionBinding Path=Res.UserChange_DeleteUser,Mode=OneWay,Source={x:Static resx:R.Current}}"
Command="{ReflectionBinding #u.DataContext.DeleteAuth}" CommandParameter="{Binding}">
<PathIcon Data="{DynamicResource CloseDrawing}" Width="12"></PathIcon>
<Border x:Name="panel" Classes="paper" Width="250" Height="250" Background="{DynamicResource ThemeBrushKey}">
<Border.ContextMenu>
<ContextMenu>
<MenuItem
Header="复制令牌"
Command="{ReflectionBinding #u.DataContext.InstallOrStartApp}"
CommandParameter="{Binding}">
<MenuItem.Icon>
<PathIcon Data="{StaticResource CopyDrawing}" Width="14"></PathIcon>
</MenuItem.Icon>
</MenuItem>
<MenuItem Header="-"></MenuItem>
<MenuItem
Header="上移"
Command="{ReflectionBinding #u.DataContext.InstallOrStartApp}"
CommandParameter="{Binding}">
<MenuItem.Icon>
<PathIcon Data="{StaticResource DownloadDrawing}" Width="14"></PathIcon>
</MenuItem.Icon>
</MenuItem>
<MenuItem
Header="下移"
Command="{ReflectionBinding #u.DataContext.InstallOrStartApp}"
CommandParameter="{Binding}">
<MenuItem.Icon>
<PathIcon Data="{StaticResource DownloadDrawing}" Width="14"></PathIcon>
</MenuItem.Icon>
</MenuItem>
</ContextMenu>
</Border.ContextMenu>
<i:Interaction.Behaviors>
<ia:EventTriggerBehavior EventName="PointerEnter" SourceObject="{ReflectionBinding #panel}">
<ia:ChangePropertyAction TargetObject="{ReflectionBinding #delete_btn}" PropertyName="IsVisible" Value="True"/>
</ia:EventTriggerBehavior>
<ia:EventTriggerBehavior EventName="PointerLeave" SourceObject="{ReflectionBinding #panel}">
<ia:ChangePropertyAction TargetObject="{ReflectionBinding #delete_btn}" PropertyName="IsVisible" Value="False"/>
</ia:EventTriggerBehavior>
</i:Interaction.Behaviors>
<Grid RowDefinitions="30,165,Auto">
<DockPanel VerticalAlignment="Center">
<TextBox VerticalAlignment="Center"
VerticalContentAlignment="Center"
ToolTip.Tip="{ReflectionBinding Path=Res.LocalAuth_AuthName,Mode=OneWay,Source={x:Static resx:R.Current}}"
Text="{Binding Name,Mode=TwoWay}"
Classes="readonlybox"
DockPanel.Dock="Left"
Padding="10,5"
FontSize="16"
Foreground="{DynamicResource HighlightForegroundBrushKey}">
<TextBox.InnerRightContent>
<PathIcon Data="{StaticResource EditDrawing}"
Width="10" Height="10"
Opacity="0.8"
VerticalAlignment="Center" HorizontalAlignment="Left"
Margin="0">
</PathIcon>
</TextBox.InnerRightContent>
</TextBox>
<Button DockPanel.Dock="Right" x:Name="delete_btn" Classes="flatbutton" IsVisible="False" Background="{DynamicResource ThemeBrushKey}" HorizontalAlignment="Right" Cursor="Hand" ToolTip.Tip="{ReflectionBinding Path=Res.UserChange_DeleteUser,Mode=OneWay,Source={x:Static resx:R.Current}}"
Command="{ReflectionBinding #u.DataContext.DeleteAuth}" CommandParameter="{Binding}">
<PathIcon Data="{DynamicResource CloseDrawing}" Width="12"></PathIcon>
</Button>
</DockPanel>
<TextBlock Grid.Row="1" Text="------" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="64" IsVisible="{Binding !IsShowCode}" Foreground="{DynamicResource HighlightForegroundBrushKey}"></TextBlock>
<TextBlock Grid.Row="1" Text="{Binding CurrentCode}" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="54" IsVisible="{Binding IsShowCode}" Foreground="{DynamicResource HighlightForegroundBrushKey}">
</TextBlock>
<DockPanel Grid.Row="2" HorizontalAlignment="Stretch" VerticalAlignment="Center">
<Panel DockPanel.Dock="Top">
<Separator Height="13" IsVisible="{Binding !IsShowCode}"></Separator>
<ProgressBar Value="{Binding CodeCountdown,Mode=TwoWay}" IsVisible="{Binding IsShowCode}" Margin="0 10 0 4"/>
<Separator Classes="Separator" Margin="0 14 0 4"/>
</Panel>
<!--<controls:ScrollingTextBlock HorizontalAlignment="Center" Width="{Binding #panel.Width}" Text="{Binding}" FontSize="14" Foreground="{DynamicResource HighlightForegroundBrushKey}" ></controls:ScrollingTextBlock>-->
<StackPanel Orientation="Horizontal" Spacing="5">
<Button Cursor="Hand" Classes="flatbutton" Command="{ReflectionBinding #u.DataContext.ShowAuthCode}" CommandParameter="{Binding}"
ToolTip.Tip="{ReflectionBinding Path=Res.LocalAuth_ShowAuthCode,Mode=OneWay,Source={x:Static resx:R.Current}}" >
<PathIcon Data="{DynamicResource SearchDrawing}" Width="20"></PathIcon>
</Button>
</DockPanel>
<TextBlock Grid.Row="1" Text="------" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="64" IsVisible="{Binding !IsShowCode}" Foreground="{DynamicResource HighlightForegroundBrushKey}"></TextBlock>
<TextBlock Grid.Row="1" Text="{Binding CurrentCode}" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="54" IsVisible="{Binding IsShowCode}" Foreground="{DynamicResource HighlightForegroundBrushKey}">
</TextBlock>
<Button Cursor="Hand" Classes="flatbutton" Command="{ReflectionBinding #u.DataContext.ShowSteamAuthTrade}" CommandParameter="{Binding}"
ToolTip.Tip="{ReflectionBinding Path=Res.LocalAuth_AuthTrade,Mode=OneWay,Source={x:Static resx:R.Current}}" >
<PathIcon Data="{DynamicResource TradeDrawing}" Width="20"></PathIcon>
</Button>
<DockPanel Grid.Row="2" HorizontalAlignment="Stretch" VerticalAlignment="Center">
<Panel DockPanel.Dock="Top">
<Separator Height="13" IsVisible="{Binding !IsShowCode}"></Separator>
<ProgressBar Value="{Binding CodeCountdown,Mode=TwoWay}" IsVisible="{Binding IsShowCode}" Margin="0 10 0 4"/>
<Separator Classes="Separator" Margin="0 14 0 4"/>
</Panel>
<!--<controls:ScrollingTextBlock HorizontalAlignment="Center" Width="{Binding #panel.Width}" Text="{Binding}" FontSize="14" Foreground="{DynamicResource HighlightForegroundBrushKey}" ></controls:ScrollingTextBlock>-->
<StackPanel Orientation="Horizontal" Spacing="5">
<Button Cursor="Hand" Classes="flatbutton" Command="{ReflectionBinding #u.DataContext.ShowAuthCode}" CommandParameter="{Binding}"
ToolTip.Tip="{ReflectionBinding Path=Res.LocalAuth_ShowAuthCode,Mode=OneWay,Source={x:Static resx:R.Current}}" >
<PathIcon Data="{DynamicResource SearchDrawing}" Width="20"></PathIcon>
</Button>
<Button Cursor="Hand" Classes="flatbutton" Command="{ReflectionBinding #u.DataContext.ShowSteamAuthTrade}" CommandParameter="{Binding}"
ToolTip.Tip="{ReflectionBinding Path=Res.LocalAuth_AuthTrade,Mode=OneWay,Source={x:Static resx:R.Current}}" >
<PathIcon Data="{DynamicResource TradeDrawing}" Width="20"></PathIcon>
</Button>
<!--<Button Cursor="Hand" Classes="flatbutton"
<!--<Button Cursor="Hand" Classes="flatbutton"
ToolTip.Tip="{ReflectionBinding Path=Res.LocalAuth_CloudSync,Mode=OneWay,Source={x:Static resx:R.Current}}" >
<PathIcon Data="{DynamicResource CloudDrawing}" Width="20"></PathIcon>
</Button>-->
<Button Cursor="Hand" Classes="flatbutton" Command="{ReflectionBinding #u.DataContext.ShowSteamAuthData}" CommandParameter="{Binding}"
ToolTip.Tip="{ReflectionBinding Path=Res.LocalAuth_ShowAuthInfo,Mode=OneWay,Source={x:Static resx:R.Current}}" >
<PathIcon Data="{DynamicResource SlideSearchDrawing}" Width="20"></PathIcon>
</Button>
</StackPanel>
<Button Cursor="Hand" Classes="flatbutton" Command="{ReflectionBinding #u.DataContext.CopyCodeCilp}" CommandParameter="{Binding}" HorizontalAlignment="Right"
ToolTip.Tip="{ReflectionBinding Path=Res.LocalAuth_Copy,Mode=OneWay,Source={x:Static resx:R.Current}}" >
<PathIcon Data="{DynamicResource CopyDrawing}" Width="20"></PathIcon>
<Button Cursor="Hand" Classes="flatbutton" Command="{ReflectionBinding #u.DataContext.ShowSteamAuthData}" CommandParameter="{Binding}"
ToolTip.Tip="{ReflectionBinding Path=Res.LocalAuth_ShowAuthInfo,Mode=OneWay,Source={x:Static resx:R.Current}}" >
<PathIcon Data="{DynamicResource SlideSearchDrawing}" Width="20"></PathIcon>
</Button>
</DockPanel>
</Grid>
</Border>
</Panel>
</StackPanel>
<Button Cursor="Hand" Classes="flatbutton" Command="{ReflectionBinding #u.DataContext.CopyCodeCilp}" CommandParameter="{Binding}" HorizontalAlignment="Right"
ToolTip.Tip="{ReflectionBinding Path=Res.LocalAuth_Copy,Mode=OneWay,Source={x:Static resx:R.Current}}" >
<PathIcon Data="{DynamicResource CopyDrawing}" Width="20"></PathIcon>
</Button>
</DockPanel>
</Grid>
</Border>
</DataTemplate>
</ItemsRepeater.ItemTemplate>
</ItemsRepeater>
@@ -17,9 +17,7 @@
x:CompileBindings="True"
x:Class="System.Application.UI.Views.Pages.ProxyScriptManagePage">
<DockPanel>
<Border DockPanel.Dock="Top" Classes="paper" Background="{DynamicResource ThemeBrushKey}" Padding="10" Margin="20 0 20 10">
<DockPanel>
<StackPanel Orientation="Horizontal" Spacing="8" HorizontalAlignment="Left">
<ToggleSwitch Content="" OnContent="" OffContent=""
@@ -40,7 +38,7 @@
</Button>
<Button Background="Transparent" Cursor="Hand"
Command="{Binding ScriptStoreCommand}"
ToolTip.Tip="{ReflectionBinding Path=Res.Script_Shop,Mode=OneWay,Source={x:Static resx:R.Current}}">
ToolTip.Tip="{ReflectionBinding Path=Res.ScriptStore,Mode=OneWay,Source={x:Static resx:R.Current}}">
<PathIcon Width="16" Data="{StaticResource JavaScriptDrawing}" />
</Button>
</StackPanel>
@@ -70,115 +68,116 @@
<ScrollViewer HorizontalScrollBarVisibility="Disabled" Padding="{StaticResource ScrollMargin}">
<ItemsRepeater Items="{Binding ProxyScripts}">
<ItemsRepeater.Layout>
<WrapLayout HorizontalSpacing="20" VerticalSpacing="20" Orientation="Horizontal"/>
<StackLayout Spacing="20" Orientation="Vertical"/>
<!--<UniformGridLayout ItemsJustification="Start" ItemsStretch="Uniform" MinColumnSpacing="20" MinRowSpacing="20" MaximumRowsOrColumns="2" Orientation="Horizontal"/>-->
</ItemsRepeater.Layout>
<ItemsRepeater.ItemTemplate>
<DataTemplate>
<Border Width="450" Classes="paper" Background="{DynamicResource ThemeBrushKey}" Padding="20 10">
<DockPanel>
<Image Source="{Binding Icon}" DockPanel.Dock="Left"></Image>
<StackPanel Spacing="8" DockPanel.Dock="Right">
<DockPanel>
<controls:ScrollingTextBlock
Width="{Binding $parent.Width}"
Text="{Binding Name,Mode=OneWay}"
FontSize="16"
VerticalAlignment="Center"
Foreground="{DynamicResource HighlightForegroundBrushKey}"/>
<WrapPanel HorizontalAlignment="Right" VerticalAlignment="Center">
<TextBlock
Text="{Binding Author}"
FontSize="14"
<Border Classes="paper" Background="{DynamicResource ThemeBrushKey}" Padding="20 10">
<DockPanel>
<Image Source="{Binding Icon}" DockPanel.Dock="Left"></Image>
<StackPanel Spacing="8" DockPanel.Dock="Right">
<DockPanel>
<controls:ScrollingTextBlock
Width="{Binding $parent.Width}"
Text="{Binding Name,Mode=OneWay}"
FontSize="16"
VerticalAlignment="Center"
Foreground="{DynamicResource HighlightForegroundBrushKey}"/>
<TextBlock Text=" / v" FontSize="14"></TextBlock>
<TextBlock
Text="{Binding Version}"
FontSize="14"
VerticalAlignment="Center"
Foreground="{DynamicResource HighlightForegroundBrushKey}"/>
</WrapPanel>
</DockPanel>
<WrapPanel HorizontalAlignment="Right" VerticalAlignment="Center">
<TextBlock
Text="{Binding Author}"
FontSize="14"
VerticalAlignment="Center"
Foreground="{DynamicResource HighlightForegroundBrushKey}"/>
<Separator Classes="Separator" Margin="0 0 0 5"></Separator>
<TextBlock Text=" / v" FontSize="14"></TextBlock>
<TextBlock
Text="{Binding Version}"
FontSize="14"
VerticalAlignment="Center"
Foreground="{DynamicResource HighlightForegroundBrushKey}"/>
</WrapPanel>
</DockPanel>
<TextBlock
Width="{Binding $parent.Width}"
TextWrapping="WrapWithOverflow"
Text="{Binding Description}"
FontSize="12"
Foreground="{DynamicResource HighlightForegroundBrushKey}"/>
<Separator Classes="Separator" Margin="0 0 0 5"></Separator>
<TextBlock
Width="{Binding $parent.Width}"
TextWrapping="WrapWithOverflow"
Text="{Binding Description}"
FontSize="12"
Foreground="{DynamicResource HighlightForegroundBrushKey}"/>
<DockPanel VerticalAlignment="Bottom">
<StackPanel Orientation="Horizontal" Spacing="10">
<ToggleSwitch OnContent="" OffContent="" IsChecked="{Binding Enable,Mode=TwoWay}">
</ToggleSwitch>
<Button Background="Transparent" Cursor="Hand"
Command="{ReflectionBinding #u.DataContext.EditScriptItemButton}"
CommandParameter="{Binding}"
ToolTip.Tip="{ReflectionBinding Path=Res.Script_Edit,Mode=OneWay,Source={x:Static resx:R.Current}}">
<PathIcon Width="20" Data="{StaticResource CodeDrawing}" />
</Button>
<DockPanel VerticalAlignment="Bottom">
<StackPanel Orientation="Horizontal" Spacing="10">
<ToggleSwitch OnContent="" OffContent="" IsChecked="{Binding Enable,Mode=TwoWay}">
</ToggleSwitch>
<Button Background="Transparent" Cursor="Hand"
Command="{ReflectionBinding #u.DataContext.EditScriptItemButton}"
CommandParameter="{Binding}"
ToolTip.Tip="{ReflectionBinding Path=Res.Script_Edit,Mode=OneWay,Source={x:Static resx:R.Current}}">
<PathIcon Width="20" Data="{StaticResource CodeDrawing}" />
</Button>
<Button Background="Transparent" Cursor="Hand"
Command="{ReflectionBinding #u.DataContext.RefreshScriptItemButton}"
CommandParameter="{Binding}"
ToolTip.Tip="{ReflectionBinding Path=Res.Script_Refresh,Mode=OneWay,Source={x:Static resx:R.Current}}">
<PathIcon Width="16" Data="{StaticResource RefreshDrawing}" />
</Button>
<Button Background="Transparent" Cursor="Hand"
Command="{ReflectionBinding #u.DataContext.RefreshScriptItemButton}"
CommandParameter="{Binding}"
ToolTip.Tip="{ReflectionBinding Path=Res.Script_Refresh,Mode=OneWay,Source={x:Static resx:R.Current}}">
<PathIcon Width="16" Data="{StaticResource RefreshDrawing}" />
</Button>
<Button Background="Transparent" Cursor="Hand"
Command="{ReflectionBinding #u.DataContext.OpenHomeScriptItemButton}"
CommandParameter="{Binding}"
ToolTip.Tip="{ReflectionBinding Path=Res.Script_Home,Mode=OneWay,Source={x:Static resx:R.Current}}">
<PathIcon Width="16" Data="{StaticResource HomeDrawing}" />
</Button>
<Button Background="Transparent" Cursor="Hand"
Command="{ReflectionBinding #u.DataContext.OpenHomeScriptItemButton}"
CommandParameter="{Binding}"
ToolTip.Tip="{ReflectionBinding Path=Res.Script_Home,Mode=OneWay,Source={x:Static resx:R.Current}}">
<PathIcon Width="16" Data="{StaticResource HomeDrawing}" />
</Button>
<Button Background="Transparent" IsVisible="{Binding !IsBasics}" Cursor="Hand" HorizontalAlignment="Right"
Command="{ReflectionBinding #u.DataContext.DeleteScriptItemButton}"
CommandParameter="{Binding}"
ToolTip.Tip="{ReflectionBinding Path=Res.Delete,Mode=OneWay,Source={x:Static resx:R.Current}}">
<PathIcon Width="20" Data="{StaticResource DeleteDrawing}" />
</Button>
<Button Background="Transparent" IsVisible="{Binding !IsBasics}" Cursor="Hand" HorizontalAlignment="Right"
Command="{ReflectionBinding #u.DataContext.DeleteScriptItemButton}"
CommandParameter="{Binding}"
ToolTip.Tip="{ReflectionBinding Path=Res.Delete,Mode=OneWay,Source={x:Static resx:R.Current}}">
<PathIcon Width="20" Data="{StaticResource DeleteDrawing}" />
</Button>
</StackPanel>
</StackPanel>
<WrapPanel
DockPanel.Dock="Right"
HorizontalAlignment="Right"
VerticalAlignment="Center"
ToolTip.Tip="{ReflectionBinding Path=Res.Script_Update,Mode=OneWay,Source={x:Static resx:R.Current}}"
IsVisible="{Binding IsUpdate}">
<!--<Button Background="Transparent" IsVisible="{Binding IsUpdate}" Cursor="Hand" HorizontalAlignment="Right"
<WrapPanel
DockPanel.Dock="Right"
HorizontalAlignment="Right"
VerticalAlignment="Center"
ToolTip.Tip="{ReflectionBinding Path=Res.Script_Update,Mode=OneWay,Source={x:Static resx:R.Current}}"
IsVisible="{Binding IsUpdate}">
<!--<Button Background="Transparent" IsVisible="{Binding IsUpdate}" Cursor="Hand" HorizontalAlignment="Right"
Command="{ReflectionBinding #u.DataContext.DownloadScriptItemButton}"
CommandParameter="{Binding}"
ToolTip.Tip="{ReflectionBinding Path=Res.Script_Update,Mode=OneWay,Source={x:Static resx:R.Current}}">
<PathIcon Width="20" Height="20" Data="{StaticResource DownloadDrawing}" />
</Button>-->
<controls:ProgressRing IsIndeterminate="True"
ToolTip.Tip="{ReflectionBinding Path=Res.Script_ImportLoading,Mode=OneWay,Source={x:Static resx:R.Current}}" HorizontalAlignment="Stretch" Height="30" Width="30"
IsVisible="{Binding IsLoading}" />
<Button Classes="Hyperlink"
Command="{ReflectionBinding #u.DataContext.DownloadScriptItemButton}"
CommandParameter="{Binding}"
Content="{Binding NewVersion,StringFormat={}v{0}}"
FontSize="{DynamicResource FontSizeH7}"
VerticalContentAlignment="Center"
VerticalAlignment="Center"
Foreground="{DynamicResource HighlightForegroundBrushKey}"/>
<Ellipse VerticalAlignment="Center"
HorizontalAlignment="Center"
Height="6" Width="6" Margin="5 0"
Fill="{DynamicResource ValidationErrorColorKey}">
</Ellipse>
</WrapPanel>
</DockPanel>
</StackPanel>
</DockPanel>
</Border>
<controls:ProgressRing IsIndeterminate="True"
ToolTip.Tip="{ReflectionBinding Path=Res.Script_ImportLoading,Mode=OneWay,Source={x:Static resx:R.Current}}" HorizontalAlignment="Stretch" Height="30" Width="30"
IsVisible="{Binding IsLoading}" />
<Button Classes="Hyperlink"
Command="{ReflectionBinding #u.DataContext.DownloadScriptItemButton}"
CommandParameter="{Binding}"
Content="{Binding NewVersion,StringFormat={}v{0}}"
FontSize="{DynamicResource FontSizeH7}"
VerticalContentAlignment="Center"
VerticalAlignment="Center"
Foreground="{DynamicResource HighlightForegroundBrushKey}"/>
<Ellipse VerticalAlignment="Center"
HorizontalAlignment="Center"
Height="6" Width="6" Margin="5 0"
Fill="{DynamicResource ValidationErrorColorKey}">
</Ellipse>
</WrapPanel>
</DockPanel>
</StackPanel>
</DockPanel>
</Border>
</DataTemplate>
</ItemsRepeater.ItemTemplate>
</ItemsRepeater>
@@ -1,3 +1,4 @@
using Avalonia;
using Avalonia.Controls;
using Avalonia.Markup.Xaml;
using System.Application.Services;
@@ -7,37 +8,48 @@ using System.Properties;
namespace System.Application.UI.Views.Pages
{
public class ProxyScriptManagePage : UserControl
{
public ProxyScriptManagePage()
{
InitializeComponent();
}
public class ProxyScriptManagePage : UserControl
{
public ProxyScriptManagePage()
{
InitializeComponent();
}
private void InitializeComponent()
{
AvaloniaXamlLoader.Load(this);
}
private void InitializeComponent()
{
AvaloniaXamlLoader.Load(this);
private void AddNewScriptButton_Click(object sender, Avalonia.Interactivity.RoutedEventArgs e)
{
var fileDialog = new OpenFileDialog
{
Filters = new List<FileDialogFilter> {
new FileDialogFilter { Name = "JavaScript Files", Extensions = new List<string> { "js" } },
new FileDialogFilter { Name = "Text Files", Extensions = new List<string> { "txt" } },
new FileDialogFilter { Name = "All Files", Extensions = new List<string> { "*" } },
},
Title = ThisAssembly.AssemblyTrademark,
AllowMultiple = false,
};
fileDialog.ShowAsync(IDesktopAvaloniaAppService.Instance.MainWindow).ContinueWith(async (s) =>
{
if (s != null && s.Result.Length > 0)
{
await ProxyService.Current.AddNewScript(s.Result[0]);
}
});
}
}
var th = this.FindControl<UserControl>("u");
//var item = this.FindControl<Border>("item");
//th.GetObservable(UserControl.WidthProperty).Subscribe(v =>
//{
// if (v < 800)
// item.Width = 800;
// else
// item.Width = 450;
//});
}
private void AddNewScriptButton_Click(object sender, Avalonia.Interactivity.RoutedEventArgs e)
{
var fileDialog = new OpenFileDialog
{
Filters = new List<FileDialogFilter> {
new FileDialogFilter { Name = "JavaScript Files", Extensions = new List<string> { "js" } },
new FileDialogFilter { Name = "Text Files", Extensions = new List<string> { "txt" } },
new FileDialogFilter { Name = "All Files", Extensions = new List<string> { "*" } },
},
Title = ThisAssembly.AssemblyTrademark,
AllowMultiple = false,
};
fileDialog.ShowAsync(IDesktopAvaloniaAppService.Instance.MainWindow).ContinueWith(async (s) =>
{
if (s != null && s.Result.Length > 0)
{
await ProxyService.Current.AddNewScript(s.Result[0]);
}
});
}
}
}
@@ -7,64 +7,70 @@
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
x:Class="System.Application.UI.Views.Pages.Settings_UI">
<ScrollViewer>
<StackPanel Orientation="Vertical" HorizontalAlignment="Stretch" Spacing="20">
<StackPanel.Styles>
<Style Selector="TextBlock">
<Setter Property="FontSize" Value="{StaticResource FontSizeH7}"/>
<Setter Property="Foreground" Value="{DynamicResource HighlightForegroundBrushKey}" />
</Style>
<Style Selector="DockPanel > TextBlock">
<Setter Property="Margin" Value="0 0 20 0" />
<Setter Property="VerticalAlignment" Value="Center" />
<Setter Property="(DockPanel.Dock)" Value="Left" />
</Style>
<Style Selector="DockPanel > ToggleSwitch">
<Setter Property="Margin" Value="0 0 -12 0" />
<Setter Property="HorizontalAlignment" Value="Right" />
<Setter Property="VerticalAlignment" Value="Center" />
<Setter Property="OnContent" Value="{x:Null}" />
<Setter Property="OffContent" Value="{x:Null}" />
</Style>
</StackPanel.Styles>
<StackPanel Orientation="Vertical" Spacing="10">
<TextBlock Text="{ReflectionBinding Path=Res.Settings_Language,Mode=OneWay,Source={x:Static resx:R.Current}}"/>
<ComboBox HorizontalAlignment="Stretch" SelectedItem="{Binding SelectLanguage, Mode=TwoWay}" Items="{Binding Mode=OneWay,Source={x:Static resx:R.Languages}}" >
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Value,Mode=OneWay}"></TextBlock>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
</StackPanel>
<ScrollViewer>
<StackPanel Orientation="Vertical" HorizontalAlignment="Stretch" Spacing="20">
<StackPanel.Styles>
<Style Selector="TextBlock">
<Setter Property="FontSize" Value="{StaticResource FontSizeH7}"/>
<Setter Property="Foreground" Value="{DynamicResource HighlightForegroundBrushKey}" />
</Style>
<Style Selector="DockPanel > TextBlock">
<Setter Property="Margin" Value="0 0 20 0" />
<Setter Property="VerticalAlignment" Value="Center" />
<Setter Property="(DockPanel.Dock)" Value="Left" />
</Style>
<Style Selector="DockPanel > ToggleSwitch">
<Setter Property="Margin" Value="0 0 -12 0" />
<Setter Property="HorizontalAlignment" Value="Right" />
<Setter Property="VerticalAlignment" Value="Center" />
<Setter Property="OnContent" Value="{x:Null}" />
<Setter Property="OffContent" Value="{x:Null}" />
</Style>
</StackPanel.Styles>
<StackPanel Orientation="Vertical" Spacing="10">
<TextBlock Text="{ReflectionBinding Path=Res.Settings_Theme,Mode=OneWay,Source={x:Static resx:R.Current}}"/>
<ComboBox x:Name="Themes"
SelectedIndex="{Binding Source={x:Static ms:UISettings.Theme},Path=Value, Mode=TwoWay}"
HorizontalAlignment="Stretch">
<ComboBoxItem Content="{ReflectionBinding Path=Res.Settings_UI_SystemDefault,Mode=OneWay,Source={x:Static resx:R.Current}}"></ComboBoxItem>
<ComboBoxItem Content="{ReflectionBinding Path=Res.Settings_UI_Light,Mode=OneWay,Source={x:Static resx:R.Current}}"></ComboBoxItem>
<ComboBoxItem Content="{ReflectionBinding Path=Res.Settings_UI_Dark,Mode=OneWay,Source={x:Static resx:R.Current}}"></ComboBoxItem>
</ComboBox>
</StackPanel>
<StackPanel Orientation="Vertical" Spacing="10" Margin="0 5 0 0">
<TextBlock Text="{ReflectionBinding Path=Res.Settings_Language,Mode=OneWay,Source={x:Static resx:R.Current}}"/>
<ComboBox HorizontalAlignment="Stretch" SelectedItem="{Binding SelectLanguage, Mode=TwoWay}" Items="{Binding Mode=OneWay,Source={x:Static resx:R.Languages}}" >
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Value,Mode=OneWay}"></TextBlock>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
</StackPanel>
<StackPanel Orientation="Vertical" Spacing="10">
<TextBlock Text="{ReflectionBinding Path=Res.Settings_Fonts,Mode=OneWay,Source={x:Static resx:R.Current}}"/>
<ComboBox
Items="{Binding Mode=OneWay,Source={x:Static resx:R.Fonts}}"
SelectedItem="{Binding SelectFont}"
HorizontalAlignment="Stretch"
MaxDropDownHeight="450">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Key,Mode=OneWay}"
FontFamily="{Binding Value,Mode=OneWay,Converter={StaticResource NameToFontFamilyConverter}}"></TextBlock>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
</StackPanel>
<Separator Classes="Separator"/>
</StackPanel>
</ScrollViewer>
</UserControl>
<StackPanel Orientation="Vertical" Spacing="10">
<TextBlock Text="{ReflectionBinding Path=Res.Settings_Theme,Mode=OneWay,Source={x:Static resx:R.Current}}"/>
<ComboBox x:Name="Themes"
SelectedIndex="{Binding Source={x:Static ms:UISettings.Theme},Path=Value, Mode=TwoWay}"
HorizontalAlignment="Stretch">
<ComboBoxItem Content="{ReflectionBinding Path=Res.Settings_UI_SystemDefault,Mode=OneWay,Source={x:Static resx:R.Current}}"></ComboBoxItem>
<ComboBoxItem Content="{ReflectionBinding Path=Res.Settings_UI_Light,Mode=OneWay,Source={x:Static resx:R.Current}}"></ComboBoxItem>
<ComboBoxItem Content="{ReflectionBinding Path=Res.Settings_UI_Dark,Mode=OneWay,Source={x:Static resx:R.Current}}"></ComboBoxItem>
</ComboBox>
</StackPanel>
<StackPanel Orientation="Vertical" Spacing="10">
<TextBlock Text="{ReflectionBinding Path=Res.Settings_Fonts,Mode=OneWay,Source={x:Static resx:R.Current}}"/>
<ComboBox
Items="{Binding Mode=OneWay,Source={x:Static resx:R.Fonts}}"
SelectedItem="{Binding SelectFont}"
HorizontalAlignment="Stretch"
MaxDropDownHeight="450">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Key,Mode=OneWay}"
FontFamily="{Binding Value,Mode=OneWay,Converter={StaticResource NameToFontFamilyConverter}}"></TextBlock>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
</StackPanel>
<Separator Classes="Separator"/>
<StackPanel Orientation="Vertical" Spacing="8">
<TextBlock Text="{ReflectionBinding Path=Res.Settings_UI_AcrylicTransparency,Mode=OneWay,Source={x:Static resx:R.Current}}"/>
<Slider Value="{ReflectionBinding Value,Source={x:Static ms:UISettings.AcrylicOpacity},Mode=TwoWay}" Minimum="0" Maximum="1.0"></Slider>
</StackPanel>
<Separator Classes="Separator"/>
</StackPanel>
</ScrollViewer>
</UserControl>
@@ -29,8 +29,11 @@
</ItemsRepeater.Layout>
<ItemsRepeater.ItemTemplate>
<DataTemplate>
<Panel x:Name="panel" MinWidth="224">
<Panel.ContextMenu>
<Border x:Name="card"
Classes="paper"
Background="{DynamicResource ThemeBrushKey}">
<Border.ContextMenu>
<ContextMenu>
<MenuItem
Header="{ReflectionBinding Path=Res.UserChange_BtnText,Mode=OneWay,Source={x:Static resx:R.Current}}"
@@ -40,140 +43,136 @@
Header="{ReflectionBinding Path=Res.UserChange_OfflineBtn,Mode=OneWay,Source={x:Static resx:R.Current}}"
Command="{ReflectionBinding #u.DataContext.OfflineModeButton_Click}"
CommandParameter="{Binding}" />
<MenuItem Header="-"></MenuItem>
<MenuItem
Header="{ReflectionBinding Path=Res.UserChange_DeleteUser,Mode=OneWay,Source={x:Static resx:R.Current}}"
Command="{ReflectionBinding #u.DataContext.DeleteUserButton_Click}"
CommandParameter="{Binding}" />
</ContextMenu>
</Panel.ContextMenu>
<Border x:Name="card"
Classes="paper"
Background="{DynamicResource ThemeBrushKey}">
<i:Interaction.Behaviors>
<ia:EventTriggerBehavior EventName="PointerEnter" SourceObject="{ReflectionBinding #card}">
<ia:ChangePropertyAction TargetObject="{ReflectionBinding #delete_btn}" PropertyName="IsVisible" Value="True"/>
</ia:EventTriggerBehavior>
<ia:EventTriggerBehavior EventName="PointerLeave" SourceObject="{ReflectionBinding #card}">
<ia:ChangePropertyAction TargetObject="{ReflectionBinding #delete_btn}" PropertyName="IsVisible" Value="False"/>
</ia:EventTriggerBehavior>
</i:Interaction.Behaviors>
<Grid Width="{ReflectionBinding #panel.Width}" Height="184"
ColumnDefinitions="Auto,Auto,*,Auto">
<Panel>
<gif:Image2 x:Name="avatar"
Width="184"
AutoStart="true"
Stretch="Uniform"
Source="{Binding AvatarStream^}">
<!--<i:Interaction.Behaviors>
<ia:DataTriggerBehavior Binding="{Binding AvatarStream,Converter={StaticResource IsNullConverter},ConverterParameter=invert}" ComparisonCondition="Equal" Value="True">
<ia:ChangePropertyAction TargetObject="{ReflectionBinding #avatar}" PropertyName="Source" Value="{Binding AvatarStream}"/>
</ia:DataTriggerBehavior>
<ia:DataTriggerBehavior Binding="{Binding AvatarStream,Converter={StaticResource IsNullConverter},ConverterParameter=invert}" ComparisonCondition="Equal" Value="False">
<ia:ChangePropertyAction TargetObject="{ReflectionBinding #avatar}" PropertyName="Source" Value="avares://System.Application.SteamTools.Client.Desktop.Avalonia/Application/UI/Assets/AppResources/avater.jpg"/>
</ia:DataTriggerBehavior>
</i:Interaction.Behaviors>-->
</gif:Image2>
<Image Width="184" Stretch="Uniform" IsVisible="{Binding AvatarStream^,Converter={StaticResource IsNullConverter}}"
Source="avares://System.Application.SteamTools.Client.Desktop.Avalonia/Application/UI/Assets/AppResources/avater.jpg">
</Image>
<!--<gif:Image2 Width="184" Height="184"
</Border.ContextMenu>
<i:Interaction.Behaviors>
<ia:EventTriggerBehavior EventName="PointerEnter" SourceObject="{ReflectionBinding #card}">
<ia:ChangePropertyAction TargetObject="{ReflectionBinding #delete_btn}" PropertyName="IsVisible" Value="True"/>
</ia:EventTriggerBehavior>
<ia:EventTriggerBehavior EventName="PointerLeave" SourceObject="{ReflectionBinding #card}">
<ia:ChangePropertyAction TargetObject="{ReflectionBinding #delete_btn}" PropertyName="IsVisible" Value="False"/>
</ia:EventTriggerBehavior>
</i:Interaction.Behaviors>
<Grid Height="184"
ColumnDefinitions="Auto,*,Auto">
<Panel x:Name="avatar" Cursor="Hand"
ToolTip.Tip="{ReflectionBinding Path=Res.UserChange_OpenUserUrl,Mode=OneWay,Source={x:Static resx:R.Current}}">
<!--OpenUserProfileUrl-->
<i:Interaction.Behaviors>
<ia:EventTriggerBehavior EventName="Tapped" SourceObject="{ReflectionBinding #avatar}">
<ia:InvokeCommandAction Command="{ReflectionBinding #u.DataContext.OpenUserProfileUrl}" CommandParameter="{Binding}"/>
</ia:EventTriggerBehavior>
</i:Interaction.Behaviors>
<gif:Image2
Width="184"
AutoStart="true"
Stretch="Uniform"
Source="{Binding AvatarStream^}">
</gif:Image2>
<Image Width="184" Stretch="Uniform" IsVisible="{Binding AvatarStream^,Converter={StaticResource IsNullConverter}}"
Source="avares://System.Application.SteamTools.Client.Desktop.Avalonia/Application/UI/Assets/AppResources/avater.jpg">
</Image>
<!--<gif:Image2 Width="184" Height="184"
AutoStart="true"
Source="{Binding MiniProfile.AvatarFrameStream^}"
Stretch="Uniform"
IsVisible="{Binding MiniProfile.AvatarFrameStream^,Converter={StaticResource IsNullConverter},ConverterParameter=invert}"/>-->
</Panel>
<Panel Grid.Column="1" Margin="10 5">
<StackPanel>
<DockPanel LastChildFill="True">
<Ellipse VerticalAlignment="Center"
HorizontalAlignment="Center" x:Name="circle" Margin="5 0 12 0" Height="10" Width="10" StrokeThickness="0" ToolTip.Tip="{Binding OnlineState}">
<i:Interaction.Behaviors>
<ia:DataTriggerBehavior Binding="{Binding OnlineState}" ComparisonCondition="Equal" Value="online">
<ia:ChangePropertyAction TargetObject="{ReflectionBinding #circle}" PropertyName="Fill" Value="#08D969"/>
</ia:DataTriggerBehavior>
<ia:DataTriggerBehavior Binding="{Binding OnlineState}" ComparisonCondition="Equal" Value="offline">
<ia:ChangePropertyAction TargetObject="{ReflectionBinding #circle}" PropertyName="Fill" Value="#adadad"/>
</ia:DataTriggerBehavior>
</i:Interaction.Behaviors>
</Ellipse>
<controls:ScrollingTextBlock x:Name="nickname" Text="{Binding SteamNickName}" FontSize="24" Foreground="{DynamicResource HighlightForegroundBrushKey}" Cursor="Hand" ToolTip.Tip="{ReflectionBinding Path=Res.UserChange_OpenUserUrl,Mode=OneWay,Source={x:Static resx:R.Current}}">
<!--OpenUserProfileUrl-->
<i:Interaction.Behaviors>
<ia:EventTriggerBehavior EventName="Tapped" SourceObject="{ReflectionBinding #nickname}">
<ia:InvokeCommandAction Command="{ReflectionBinding #u.DataContext.OpenUserProfileUrl}" CommandParameter="{Binding}"/>
</ia:EventTriggerBehavior>
</i:Interaction.Behaviors>
</controls:ScrollingTextBlock>
<!--<WrapPanel VerticalAlignment="Center" IsVisible="{Binding Remark,Converter={StaticResource IsNullConverter},ConverterParameter=invert}">-->
<WrapPanel VerticalAlignment="Center">
<!--<TextBlock Text="("></TextBlock>-->
<!--<controls:ScrollingTextBlock Text="{Binding Remark}">
</Panel>
<Panel Grid.Column="1" Margin="10 5">
<StackPanel>
<DockPanel LastChildFill="True">
<Ellipse VerticalAlignment="Center"
HorizontalAlignment="Center" x:Name="circle" Margin="5 0 12 0" Height="10" Width="10" StrokeThickness="0" ToolTip.Tip="{Binding OnlineState}">
<i:Interaction.Behaviors>
<ia:DataTriggerBehavior Binding="{Binding OnlineState}" ComparisonCondition="Equal" Value="online">
<ia:ChangePropertyAction TargetObject="{ReflectionBinding #circle}" PropertyName="Fill" Value="#08D969"/>
</ia:DataTriggerBehavior>
<ia:DataTriggerBehavior Binding="{Binding OnlineState}" ComparisonCondition="Equal" Value="offline">
<ia:ChangePropertyAction TargetObject="{ReflectionBinding #circle}" PropertyName="Fill" Value="#adadad"/>
</ia:DataTriggerBehavior>
</i:Interaction.Behaviors>
</Ellipse>
<controls:ScrollingTextBlock x:Name="nickname" Text="{Binding SteamNickName}" FontSize="24" Foreground="{DynamicResource HighlightForegroundBrushKey}" Cursor="Hand" ToolTip.Tip="{ReflectionBinding Path=Res.UserChange_BtnTootlip,Mode=OneWay,Source={x:Static resx:R.Current}}">
<i:Interaction.Behaviors>
<ia:EventTriggerBehavior EventName="Tapped" SourceObject="{ReflectionBinding #nickname}">
<ia:InvokeCommandAction Command="{ReflectionBinding #u.DataContext.SteamId_Click}" CommandParameter="{Binding}"/>
</ia:EventTriggerBehavior>
</i:Interaction.Behaviors>
</controls:ScrollingTextBlock>
<!--<WrapPanel VerticalAlignment="Center" IsVisible="{Binding Remark,Converter={StaticResource IsNullConverter},ConverterParameter=invert}">-->
<WrapPanel VerticalAlignment="Center">
<!--<TextBlock Text="("></TextBlock>-->
<!--<controls:ScrollingTextBlock Text="{Binding Remark}">
</controls:ScrollingTextBlock>-->
<!--<TextBlock Text=")"></TextBlock>-->
<!--<PathIcon Data="{StaticResource EditDrawing}" Width="10" Height="10"></PathIcon>-->
<TextBox VerticalAlignment="Center"
VerticalContentAlignment="Center"
Watermark="{ReflectionBinding Path=Res.UserChange_EditRemark,Mode=OneWay,Source={x:Static resx:R.Current}}"
ToolTip.Tip="{ReflectionBinding Path=Res.UserChange_EditRemark,Mode=OneWay,Source={x:Static resx:R.Current}}"
Text="{Binding Remark,Mode=TwoWay}"
Classes="readonlybox"
Foreground="{DynamicResource InactiveForegroundBrushKey}">
<TextBox.InnerRightContent>
<PathIcon Data="{StaticResource EditDrawing}"
Width="10" Height="10"
Opacity="0.8"
VerticalAlignment="Center" HorizontalAlignment="Left"
Margin="0"
IsVisible="{Binding Remark,Converter={StaticResource IsNullConverter}}"/>
</TextBox.InnerRightContent>
</TextBox>
</WrapPanel>
</DockPanel>
<WrapPanel Orientation="Horizontal">
<TextBlock Text="{Binding AccountName}" FontSize="16" Foreground="{DynamicResource InactiveForegroundBrushKey}"/>
<TextBlock Text="(" FontSize="16" Foreground="{DynamicResource InactiveForegroundBrushKey}"/>
<TextBox Text="{Binding SteamId64,Mode=OneWay}" FontSize="14" Classes="readonlybox" Padding="0" Foreground="{DynamicResource InactiveForegroundBrushKey}" IsReadOnly="True"></TextBox>
<TextBlock Text=")" FontSize="16" Foreground="{DynamicResource InactiveForegroundBrushKey}"/>
<!--<TextBlock Text=")"></TextBlock>-->
<!--<PathIcon Data="{StaticResource EditDrawing}" Width="10" Height="10"></PathIcon>-->
<TextBox VerticalAlignment="Center"
VerticalContentAlignment="Center"
Watermark="{ReflectionBinding Path=Res.UserChange_EditRemark,Mode=OneWay,Source={x:Static resx:R.Current}}"
ToolTip.Tip="{ReflectionBinding Path=Res.UserChange_EditRemark,Mode=OneWay,Source={x:Static resx:R.Current}}"
Text="{Binding Remark,Mode=TwoWay}"
Classes="readonlybox"
Foreground="{DynamicResource InactiveForegroundBrushKey}">
<TextBox.InnerRightContent>
<PathIcon Data="{StaticResource EditDrawing}"
Width="10" Height="10"
Opacity="0.8"
VerticalAlignment="Center" HorizontalAlignment="Left"
Margin="0"
IsVisible="{Binding Remark,Converter={StaticResource IsNullConverter}}"/>
</TextBox.InnerRightContent>
</TextBox>
</WrapPanel>
</StackPanel>
<WrapPanel VerticalAlignment="Bottom" Orientation="Horizontal">
<PathIcon Data="{StaticResource ClockDrawing}" Width="16" VerticalAlignment="Center" Margin="5 0" Foreground="{DynamicResource InactiveForegroundBrushKey}">
</DockPanel>
<WrapPanel Orientation="Horizontal">
<TextBlock Text="{Binding AccountName}" FontSize="16" Foreground="{DynamicResource InactiveForegroundBrushKey}"/>
<TextBlock Text="(" FontSize="16" Foreground="{DynamicResource InactiveForegroundBrushKey}"/>
<TextBox Text="{Binding SteamId64,Mode=OneWay}" FontSize="14" Classes="readonlybox" Padding="0" Foreground="{DynamicResource InactiveForegroundBrushKey}" IsReadOnly="True"></TextBox>
<TextBlock Text=")" FontSize="16" Foreground="{DynamicResource InactiveForegroundBrushKey}"/>
</WrapPanel>
</StackPanel>
<WrapPanel VerticalAlignment="Bottom" Orientation="Horizontal">
<PathIcon Data="{StaticResource ClockDrawing}" Width="16" VerticalAlignment="Center" Margin="5 0" Foreground="{DynamicResource InactiveForegroundBrushKey}">
</PathIcon>
<TextBlock Text="{Binding LastLoginTime,StringFormat={}{0:yyyy-MM-dd HH:mm:ss}}" FontSize="16" VerticalAlignment="Center" Foreground="{DynamicResource InactiveForegroundBrushKey}"/>
</WrapPanel>
</Panel>
<Grid Grid.Column="3" RowDefinitions="*,Auto">
<Panel>
<Button Classes="flatbutton" IsVisible="False" x:Name="delete_btn" Background="{DynamicResource ThemeBrushKey}" Cursor="Hand" HorizontalAlignment="Right" Margin="0,0,0,121" ToolTip.Tip="{ReflectionBinding Path=Res.UserChange_DeleteUser,Mode=OneWay,Source={x:Static resx:R.Current}}" Command="{ReflectionBinding #u.DataContext.DeleteUserButton_Click}" CommandParameter="{Binding}">
<PathIcon Width="12" Data="{DynamicResource CloseDrawing}">
</PathIcon>
<TextBlock Text="{Binding LastLoginTime,StringFormat={}{0:yyyy-MM-dd HH:mm:ss}}" FontSize="16" VerticalAlignment="Center" Foreground="{DynamicResource InactiveForegroundBrushKey}"/>
</Button>
<WrapPanel HorizontalAlignment="Right" Orientation="Vertical" Margin="0 30 5 0">
<CheckBox Content="{ReflectionBinding Path=Res.UserChange_RecentLogin,Mode=OneWay,Source={x:Static resx:R.Current}}" IsChecked="{Binding MostRecent}" IsEnabled="False"></CheckBox>
<CheckBox Content="{ReflectionBinding Path=Res.UserChange_RememberMe,Mode=OneWay,Source={x:Static resx:R.Current}}" IsChecked="{Binding RememberPassword}" IsEnabled="False"></CheckBox>
</WrapPanel>
</Panel>
<Grid Grid.Column="3" RowDefinitions="*,Auto">
<Panel>
<Button Classes="flatbutton" IsVisible="False" x:Name="delete_btn" Background="{DynamicResource ThemeBrushKey}" Cursor="Hand" HorizontalAlignment="Right" Margin="0,0,0,121" ToolTip.Tip="{ReflectionBinding Path=Res.UserChange_DeleteUser,Mode=OneWay,Source={x:Static resx:R.Current}}" Command="{ReflectionBinding #u.DataContext.DeleteUserButton_Click}" CommandParameter="{Binding}">
<PathIcon Width="12" Data="{DynamicResource CloseDrawing}">
</PathIcon>
<WrapPanel Grid.Row="1" Orientation="Horizontal">
<Border BorderBrush="{DynamicResource SemiactiveBackgroundBrushKey}" BorderThickness=".66 .66 .66 0" ToolTip.Tip="{ReflectionBinding Path=Res.UserChange_OfflineBtn,Mode=OneWay,Source={x:Static resx:R.Current}}">
<Button Classes="flatbutton" Cursor="Hand" HorizontalAlignment="Stretch" MaxWidth="200" Background="{DynamicResource ThemeBrushKey}" Command="{ReflectionBinding #u.DataContext.OfflineModeButton_Click}" CommandParameter="{Binding}">
<controls:ScrollingTextBlock Text="{ReflectionBinding Path=Res.UserChange_OfflineBtn,Mode=OneWay,Source={x:Static resx:R.Current}}"></controls:ScrollingTextBlock>
</Button>
<WrapPanel HorizontalAlignment="Right" Orientation="Vertical" Margin="0 30 5 0">
<CheckBox Content="{ReflectionBinding Path=Res.UserChange_RecentLogin,Mode=OneWay,Source={x:Static resx:R.Current}}" IsChecked="{Binding MostRecent}" IsEnabled="False"></CheckBox>
<CheckBox Content="{ReflectionBinding Path=Res.UserChange_RememberMe,Mode=OneWay,Source={x:Static resx:R.Current}}" IsChecked="{Binding RememberPassword}" IsEnabled="False"></CheckBox>
</WrapPanel>
</Panel>
<WrapPanel Grid.Row="1" Orientation="Horizontal">
<Border BorderBrush="{DynamicResource SemiactiveBackgroundBrushKey}" BorderThickness=".66 .66 .66 0" ToolTip.Tip="{ReflectionBinding Path=Res.UserChange_OfflineBtn,Mode=OneWay,Source={x:Static resx:R.Current}}">
<Button Classes="flatbutton" Cursor="Hand" HorizontalAlignment="Stretch" MaxWidth="200" Background="{DynamicResource ThemeBrushKey}" Command="{ReflectionBinding #u.DataContext.OfflineModeButton_Click}" CommandParameter="{Binding}">
<controls:ScrollingTextBlock Text="{ReflectionBinding Path=Res.UserChange_OfflineBtn,Mode=OneWay,Source={x:Static resx:R.Current}}"></controls:ScrollingTextBlock>
</Button>
</Border>
<Border BorderBrush="{DynamicResource SemiactiveBackgroundBrushKey}" BorderThickness="0 .66 0 0" ToolTip.Tip="{ReflectionBinding Path=Res.UserChange_BtnTootlip,Mode=OneWay,Source={x:Static resx:R.Current}}">
<Button Classes="flatbutton" Cursor="Hand" MaxWidth="250" Background="{DynamicResource ThemeBrushKey}" HorizontalAlignment="Stretch" Command="{ReflectionBinding #u.DataContext.SteamId_Click}" CommandParameter="{Binding}">
<controls:ScrollingTextBlock Text="{ReflectionBinding Path=Res.UserChange_BtnText,Mode=OneWay,Source={x:Static resx:R.Current}}"></controls:ScrollingTextBlock>
</Button>
</Border>
</WrapPanel>
</Grid>
</Border>
<Border BorderBrush="{DynamicResource SemiactiveBackgroundBrushKey}" BorderThickness="0 .66 0 0" ToolTip.Tip="{ReflectionBinding Path=Res.UserChange_BtnTootlip,Mode=OneWay,Source={x:Static resx:R.Current}}">
<Button Classes="flatbutton" Cursor="Hand" MaxWidth="250" Background="{DynamicResource ThemeBrushKey}" HorizontalAlignment="Stretch" Command="{ReflectionBinding #u.DataContext.SteamId_Click}" CommandParameter="{Binding}">
<controls:ScrollingTextBlock Text="{ReflectionBinding Path=Res.UserChange_BtnText,Mode=OneWay,Source={x:Static resx:R.Current}}"></controls:ScrollingTextBlock>
</Button>
</Border>
</WrapPanel>
</Grid>
</Border>
</Panel>
</Grid>
</Border>
</DataTemplate>
</ItemsRepeater.ItemTemplate>
</ItemsRepeater>
@@ -15,7 +15,7 @@ namespace System.Application.UI.Views.Windows
readonly TextBox TbSmsCodeValidation;
readonly TextBox TbSmsCodeNew;
public ChangeBindPhoneNumberWindow()
public ChangeBindPhoneNumberWindow() : base()
{
InitializeComponent();
TbSmsCodeValidation = this.FindControl<TextBox>(nameof(TbSmsCodeValidation));
@@ -28,7 +28,7 @@ namespace System.Application.UI.Views.Windows
TbPhoneNumber.Focus();
}
};
void Submit(object _, KeyEventArgs e)
void Submit(object? _, KeyEventArgs e)
{
if (e.Key == Key.Return)
{
@@ -65,7 +65,7 @@ namespace System.Application.UI.Views.Windows
{
if (DataContext is ChangeBindPhoneNumberWindowViewModel vm && vm.CurrentStepIsNew && !vm.IsComplete)
{
// 进入第二步时,如果关闭窗口,则需二次确认
// 进入第二步时,如果关闭窗口,则需二次确认
e.Cancel = true;
var r = await MessageBoxCompat.ShowAsync(AppResources.UnsavedEditingWillBeDiscarded, AppResources.Warning, MessageBoxButtonCompat.OKCancel);
if (r == MessageBoxResultCompat.OK)
@@ -3,6 +3,7 @@ using Avalonia.Platform;
using Avalonia.Styling;
using System;
using System.Application.UI.Resx;
using System.Application.UI.ViewModels;
using System.ComponentModel;
using System.Threading.Tasks;
using System.Windows;
@@ -17,6 +18,8 @@ namespace Avalonia.Controls
public FluentWindow()
{
Constructor();
this.Opened += FluentWindow_Opened;
this.PositionChanged += FluentWindow_PositionChanged;
}
public FluentWindow(IWindowImpl impl) : base(impl)
@@ -24,6 +27,51 @@ namespace Avalonia.Controls
Constructor();
}
private void FluentWindow_PositionChanged(object? sender, PixelPointEventArgs e)
{
if (_isOpenWindow == false)
return;
if (this.DataContext is WindowViewModel vm)
{
vm.SizePosition.X = e.Point.X;
vm.SizePosition.Y = e.Point.Y;
}
}
bool _isOpenWindow;
private void FluentWindow_Opened(object? sender, EventArgs e)
{
_isOpenWindow = true;
if (this.DataContext is WindowViewModel vm)
{
if (vm.SizePosition.X > 0 && vm.SizePosition.Y > 0)
{
var point = new PixelPoint(vm.SizePosition.X, vm.SizePosition.Y);
if (Screens.Primary.WorkingArea.Contains(point))
this.Position = point;
}
if (vm.SizePosition.Width > 0
&& Screens.Primary.WorkingArea.Width >= vm.SizePosition.Width)
this.Width = vm.SizePosition.Width;
if (vm.SizePosition.Height > 0
&& Screens.Primary.WorkingArea.Height >= vm.SizePosition.Height)
this.Height = vm.SizePosition.Height;
HandleResized(new Size(this.Width, this.Height));
this.GetObservable(WidthProperty).Subscribe(v =>
{
vm.SizePosition.Width = v;
});
this.GetObservable(HeightProperty).Subscribe(v =>
{
vm.SizePosition.Height = v;
});
}
}
void Constructor()
{
ExtendClientAreaToDecorationsHint = true;
@@ -36,7 +36,7 @@
<DockPanel HorizontalAlignment="Stretch">
<ExperimentalAcrylicBorder DockPanel.Dock="Top" IsHitTestVisible="False" Height="80">
<ExperimentalAcrylicBorder.Material>
<ExperimentalAcrylicMaterial TintColor="{DynamicResource BackgroundColorKey}" MaterialOpacity="0.85" TintOpacity="1"/>
<ExperimentalAcrylicMaterial TintColor="{DynamicResource BackgroundColorKey}" MaterialOpacity="{ReflectionBinding Value,Source={x:Static ms:UISettings.AcrylicOpacity},Mode=OneWay}" TintOpacity="1"/>
</ExperimentalAcrylicBorder.Material>
<StackPanel Orientation="Horizontal" VerticalAlignment="Top" Margin="10 8 10 8">
<Image Source="/Application/UI/Assets/Icon.ico" Height="24" Width="24" Margin="0,0,10,0"/>
@@ -45,7 +45,7 @@
</ExperimentalAcrylicBorder>
<ExperimentalAcrylicBorder DockPanel.Dock="Bottom" IsHitTestVisible="False" Opacity="{StaticResource ContentOpacity}">
<ExperimentalAcrylicBorder.Material>
<ExperimentalAcrylicMaterial TintColor="{DynamicResource ThemeColorKey}" MaterialOpacity="0.85" TintOpacity="1"/>
<ExperimentalAcrylicMaterial TintColor="{DynamicResource ThemeColorKey}" MaterialOpacity="{ReflectionBinding Value,Source={x:Static ms:UISettings.AcrylicOpacity},Mode=OneWay}" TintOpacity="1"/>
</ExperimentalAcrylicBorder.Material>
</ExperimentalAcrylicBorder>
</DockPanel>
@@ -6,7 +6,7 @@ namespace System.Application.UI.Views.Windows
{
public class AchievementWindow : FluentWindow
{
public AchievementWindow()
public AchievementWindow() : base()
{
InitializeComponent();
#if DEBUG
@@ -0,0 +1,28 @@
<Window xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
Width="600" Height="450"
x:Class="System.Application.UI.Views.Windows.EditAppInfoWindow"
xmlns:resx="clr-namespace:System.Application.UI.Resx;assembly=System.Application.SteamTools.Client.Desktop"
xmlns:vm="clr-namespace:System.Application.UI.ViewModels;assembly=System.Application.SteamTools.Client.Desktop"
xmlns:controls="clr-namespace:System.Application.UI.Views.Controls"
xmlns:ms="clr-namespace:System.Application.Models.Settings;assembly=System.Application.SteamTools.Client.Desktop"
FontFamily="{Binding Source={x:Static ms:UISettings.FontName},Path=Value, Mode=OneWay,Converter={StaticResource NameToFontFamilyConverter}}"
Background="Transparent"
ExtendClientAreaToDecorationsHint="True"
ExtendClientAreaChromeHints="NoChrome"
ExtendClientAreaTitleBarHeightHint="30"
Title="{Binding Title}"
x:DataType="vm:EditAppInfoWindowViewModel"
x:CompileBindings="True">
<DockPanel>
<controls:TitleBar DockPanel.Dock="Top"></controls:TitleBar>
<StackPanel>
<Border Classes="paper" Background="{DynamicResource ThemeBrushKey}">
<TextBox></TextBox>
</Border>
</StackPanel>
</DockPanel>
</Window>
@@ -0,0 +1,22 @@
using Avalonia;
using Avalonia.Controls;
using Avalonia.Markup.Xaml;
namespace System.Application.UI.Views.Windows
{
public class EditAppInfoWindow : FluentWindow
{
public EditAppInfoWindow() : base()
{
InitializeComponent();
#if DEBUG
this.AttachDevTools();
#endif
}
private void InitializeComponent()
{
AvaloniaXamlLoader.Load(this);
}
}
}
@@ -0,0 +1,28 @@
<Window xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
Width="600" Height="450"
x:Class="System.Application.UI.Views.Windows.HideAppWindow"
xmlns:resx="clr-namespace:System.Application.UI.Resx;assembly=System.Application.SteamTools.Client.Desktop"
xmlns:vm="clr-namespace:System.Application.UI.ViewModels;assembly=System.Application.SteamTools.Client.Desktop"
xmlns:controls="clr-namespace:System.Application.UI.Views.Controls"
xmlns:ms="clr-namespace:System.Application.Models.Settings;assembly=System.Application.SteamTools.Client.Desktop"
FontFamily="{Binding Source={x:Static ms:UISettings.FontName},Path=Value, Mode=OneWay,Converter={StaticResource NameToFontFamilyConverter}}"
Background="Transparent"
ExtendClientAreaToDecorationsHint="True"
ExtendClientAreaChromeHints="NoChrome"
ExtendClientAreaTitleBarHeightHint="30"
Title="{Binding Title}"
x:DataType="vm:EditAppInfoWindowViewModel"
x:CompileBindings="True">
<DockPanel>
<controls:TitleBar DockPanel.Dock="Top"></controls:TitleBar>
<StackPanel>
<Border Classes="paper" Background="{DynamicResource ThemeBrushKey}">
<TextBox></TextBox>
</Border>
</StackPanel>
</DockPanel>
</Window>
@@ -0,0 +1,22 @@
using Avalonia;
using Avalonia.Controls;
using Avalonia.Markup.Xaml;
namespace System.Application.UI.Views.Windows
{
public class HideAppWindow : FluentWindow
{
public HideAppWindow() : base()
{
InitializeComponent();
#if DEBUG
this.AttachDevTools();
#endif
}
private void InitializeComponent()
{
AvaloniaXamlLoader.Load(this);
}
}
}
@@ -0,0 +1,28 @@
<Window xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
Width="600" Height="450"
x:Class="System.Application.UI.Views.Windows.IdleAppWindow"
xmlns:resx="clr-namespace:System.Application.UI.Resx;assembly=System.Application.SteamTools.Client.Desktop"
xmlns:vm="clr-namespace:System.Application.UI.ViewModels;assembly=System.Application.SteamTools.Client.Desktop"
xmlns:controls="clr-namespace:System.Application.UI.Views.Controls"
xmlns:ms="clr-namespace:System.Application.Models.Settings;assembly=System.Application.SteamTools.Client.Desktop"
FontFamily="{Binding Source={x:Static ms:UISettings.FontName},Path=Value, Mode=OneWay,Converter={StaticResource NameToFontFamilyConverter}}"
Background="Transparent"
ExtendClientAreaToDecorationsHint="True"
ExtendClientAreaChromeHints="NoChrome"
ExtendClientAreaTitleBarHeightHint="30"
Title="{Binding Title}"
x:DataType="vm:EditAppInfoWindowViewModel"
x:CompileBindings="True">
<DockPanel>
<controls:TitleBar DockPanel.Dock="Top"></controls:TitleBar>
<StackPanel>
<Border Classes="paper" Background="{DynamicResource ThemeBrushKey}">
<TextBox></TextBox>
</Border>
</StackPanel>
</DockPanel>
</Window>
@@ -0,0 +1,22 @@
using Avalonia;
using Avalonia.Controls;
using Avalonia.Markup.Xaml;
namespace System.Application.UI.Views.Windows
{
public class IdleAppWindow : FluentWindow
{
public IdleAppWindow() : base()
{
InitializeComponent();
#if DEBUG
this.AttachDevTools();
#endif
}
private void InitializeComponent()
{
AvaloniaXamlLoader.Load(this);
}
}
}
@@ -26,7 +26,7 @@
<DockPanel HorizontalAlignment="Stretch">
<ExperimentalAcrylicBorder DockPanel.Dock="Top" IsHitTestVisible="False" Height="95">
<ExperimentalAcrylicBorder.Material>
<ExperimentalAcrylicMaterial TintColor="{DynamicResource BackgroundColorKey}" MaterialOpacity="0.85" TintOpacity="1"/>
<ExperimentalAcrylicMaterial TintColor="{DynamicResource BackgroundColorKey}" MaterialOpacity="{ReflectionBinding Value,Source={x:Static ms:UISettings.AcrylicOpacity},Mode=OneWay}" TintOpacity="1"/>
</ExperimentalAcrylicBorder.Material>
<StackPanel Orientation="Horizontal" VerticalAlignment="Top" Margin="10 8 10 8">
<Image Source="/Application/UI/Assets/Icon.ico" Height="24" Width="24" Margin="0,0,10,0"/>
@@ -35,7 +35,7 @@
</ExperimentalAcrylicBorder>
<ExperimentalAcrylicBorder DockPanel.Dock="Bottom" IsHitTestVisible="False" Opacity="{StaticResource ContentOpacity}">
<ExperimentalAcrylicBorder.Material>
<ExperimentalAcrylicMaterial TintColor="{DynamicResource ThemeColorKey}" MaterialOpacity="0.85" TintOpacity="1"/>
<ExperimentalAcrylicMaterial TintColor="{DynamicResource ThemeColorKey}" MaterialOpacity="{ReflectionBinding Value,Source={x:Static ms:UISettings.AcrylicOpacity},Mode=OneWay}" TintOpacity="1"/>
</ExperimentalAcrylicBorder.Material>
</ExperimentalAcrylicBorder>
</DockPanel>
@@ -10,7 +10,7 @@ namespace System.Application.UI.Views.Windows
{
public class AddAuthWindow : FluentWindow
{
public AddAuthWindow()
public AddAuthWindow() : base()
{
InitializeComponent();
#if DEBUG
@@ -6,7 +6,7 @@ namespace System.Application.UI.Views.Windows
{
public class AuthTradeWindow : FluentWindow
{
public AuthTradeWindow()
public AuthTradeWindow() : base()
{
InitializeComponent();
#if DEBUG
@@ -0,0 +1,71 @@
<Window xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
Width="600" Height="450"
x:Class="System.Application.UI.Views.Windows.EncryptionAuthWindow"
xmlns:resx="clr-namespace:System.Application.UI.Resx;assembly=System.Application.SteamTools.Client.Desktop"
xmlns:vm="clr-namespace:System.Application.UI.ViewModels;assembly=System.Application.SteamTools.Client.Desktop"
xmlns:controls="clr-namespace:System.Application.UI.Views.Controls"
xmlns:ms="clr-namespace:System.Application.Models.Settings;assembly=System.Application.SteamTools.Client.Desktop"
FontFamily="{Binding Source={x:Static ms:UISettings.FontName},Path=Value, Mode=OneWay,Converter={StaticResource NameToFontFamilyConverter}}"
Background="Transparent"
ExtendClientAreaToDecorationsHint="True"
ExtendClientAreaChromeHints="NoChrome"
ExtendClientAreaTitleBarHeightHint="30"
Title="{Binding Title}"
x:DataType="vm:EncryptionAuthWindowViewModel"
x:CompileBindings="True">
<Panel HorizontalAlignment="Stretch">
<controls:TitleBar></controls:TitleBar>
<Border Padding="10" Margin="{StaticResource TitleBarAfterMargin}">
<StackPanel Spacing="10">
<StackPanel.Styles>
<Style Selector="TextBlock">
<Setter Property="FontSize" Value="{StaticResource FontSizeH7}"/>
<Setter Property="Foreground" Value="{DynamicResource HighlightForegroundBrushKey}" />
</Style>
<Style Selector="DockPanel > TextBlock">
<Setter Property="Margin" Value="0 0 20 0" />
<Setter Property="VerticalAlignment" Value="Center" />
<Setter Property="(DockPanel.Dock)" Value="Left" />
</Style>
<Style Selector="DockPanel > ToggleSwitch">
<Setter Property="Margin" Value="0 0 -12 0" />
<Setter Property="HorizontalAlignment" Value="Right" />
<Setter Property="VerticalAlignment" Value="Center" />
<Setter Property="OnContent" Value="{x:Null}" />
<Setter Property="OffContent" Value="{x:Null}" />
</Style>
</StackPanel.Styles>
<TextBlock Text="{ReflectionBinding Path=Res.LocalAuth_ProtectionAuth_Info,Source={x:Static resx:R.Current},Mode=OneWay}" TextWrapping="WrapWithOverflow">
</TextBlock>
<DockPanel>
<TextBlock Text="{ReflectionBinding Path=Res.LocalAuth_ProtectionAuth_EnablePassword,Source={x:Static resx:R.Current},Mode=OneWay}"/>
<ToggleSwitch IsChecked="{Binding IsPasswordEncrypt}"/>
</DockPanel>
<StackPanel Spacing="10" IsEnabled="{Binding IsPasswordEncrypt}">
<TextBlock Text="{ReflectionBinding Path=Res.LocalAuth_ProtectionAuth_EnablePasswordTip,Source={x:Static resx:R.Current},Mode=OneWay}" TextWrapping="WrapWithOverflow"></TextBlock>
<TextBox Watermark="{ReflectionBinding Path=Res.LocalAuth_ProtectionAuth_Password,Source={x:Static resx:R.Current},Mode=OneWay}" Text="{Binding Password}" PasswordChar="*"></TextBox>
<TextBox Watermark="{ReflectionBinding Path=Res.LocalAuth_ProtectionAuth_VerifyPassword,Source={x:Static resx:R.Current},Mode=OneWay}" Text="{Binding VerifyPassword}" PasswordChar="*"></TextBox>
</StackPanel>
<Separator Classes="Separator"></Separator>
<TextBlock Text="{ReflectionBinding Path=Res.LocalAuth_ProtectionAuth_IsOnlyCurrentComputerEncryptTip,Source={x:Static resx:R.Current},Mode=OneWay}" TextWrapping="WrapWithOverflow"></TextBlock>
<DockPanel>
<TextBlock Text="{ReflectionBinding Path=Res.LocalAuth_ProtectionAuth_IsOnlyCurrentComputerEncrypt,Source={x:Static resx:R.Current},Mode=OneWay}"/>
<ToggleSwitch IsChecked="{Binding IsOnlyCurrentComputerEncrypt}"/>
</DockPanel>
<Button HorizontalAlignment="Stretch" HorizontalContentAlignment="Center"
Content="{ReflectionBinding Path=Res.LocalAuth_ProtectionAuth_SaveApply,Source={x:Static resx:R.Current},Mode=OneWay}"></Button>
</StackPanel>
</Border>
</Panel>
</Window>
@@ -0,0 +1,22 @@
using Avalonia;
using Avalonia.Controls;
using Avalonia.Markup.Xaml;
namespace System.Application.UI.Views.Windows
{
public class EncryptionAuthWindow : FluentWindow
{
public EncryptionAuthWindow() : base()
{
InitializeComponent();
#if DEBUG
this.AttachDevTools();
#endif
}
private void InitializeComponent()
{
AvaloniaXamlLoader.Load(this);
}
}
}
@@ -0,0 +1,61 @@
<Window xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
Width="600" Height="450"
x:Class="System.Application.UI.Views.Windows.ExportAuthWindow"
xmlns:resx="clr-namespace:System.Application.UI.Resx;assembly=System.Application.SteamTools.Client.Desktop"
xmlns:vm="clr-namespace:System.Application.UI.ViewModels;assembly=System.Application.SteamTools.Client.Desktop"
xmlns:controls="clr-namespace:System.Application.UI.Views.Controls"
xmlns:ms="clr-namespace:System.Application.Models.Settings;assembly=System.Application.SteamTools.Client.Desktop"
FontFamily="{Binding Source={x:Static ms:UISettings.FontName},Path=Value, Mode=OneWay,Converter={StaticResource NameToFontFamilyConverter}}"
Background="Transparent"
ExtendClientAreaToDecorationsHint="True"
ExtendClientAreaChromeHints="NoChrome"
ExtendClientAreaTitleBarHeightHint="30"
Title="{Binding Title}"
x:DataType="vm:ShowAuthWindowViewModel"
x:CompileBindings="True">
<Panel HorizontalAlignment="Stretch">
<controls:TitleBar></controls:TitleBar>
<Border Padding="10" Margin="{StaticResource TitleBarAfterMargin}">
<StackPanel Spacing="10">
<StackPanel.Styles>
<Style Selector="TextBlock">
<Setter Property="FontSize" Value="{StaticResource FontSizeH7}"/>
<Setter Property="Foreground" Value="{DynamicResource HighlightForegroundBrushKey}" />
</Style>
<Style Selector="DockPanel > TextBlock">
<Setter Property="Margin" Value="0 0 20 0" />
<Setter Property="VerticalAlignment" Value="Center" />
<Setter Property="(DockPanel.Dock)" Value="Left" />
</Style>
<Style Selector="DockPanel > ToggleSwitch">
<Setter Property="Margin" Value="0 0 -12 0" />
<Setter Property="HorizontalAlignment" Value="Right" />
<Setter Property="VerticalAlignment" Value="Center" />
<Setter Property="OnContent" Value="{x:Null}" />
<Setter Property="OffContent" Value="{x:Null}" />
</Style>
</StackPanel.Styles>
<TextBlock Text="是否需要导出带加密的数据" TextWrapping="WrapWithOverflow">
</TextBlock>
<DockPanel>
<TextBlock Text="{ReflectionBinding Path=Res.LocalAuth_ProtectionAuth_EnablePassword,Source={x:Static resx:R.Current},Mode=OneWay}"/>
<ToggleSwitch/>
</DockPanel>
<StackPanel Spacing="10">
<TextBlock Text="{ReflectionBinding Path=Res.LocalAuth_ProtectionAuth_EnablePasswordTip,Source={x:Static resx:R.Current},Mode=OneWay}" TextWrapping="WrapWithOverflow"></TextBlock>
<TextBox Watermark="{ReflectionBinding Path=Res.LocalAuth_ProtectionAuth_Password,Source={x:Static resx:R.Current},Mode=OneWay}" PasswordChar="*"></TextBox>
</StackPanel>
<Button HorizontalAlignment="Stretch" HorizontalContentAlignment="Center"
Content="{ReflectionBinding Path=Res.LocalAuth_ProtectionAuth_SaveApply,Source={x:Static resx:R.Current},Mode=OneWay}"></Button>
</StackPanel>
</Border>
</Panel>
</Window>
@@ -0,0 +1,22 @@
using Avalonia;
using Avalonia.Controls;
using Avalonia.Markup.Xaml;
namespace System.Application.UI.Views.Windows
{
public class ExportAuthWindow : FluentWindow
{
public ExportAuthWindow() : base()
{
InitializeComponent();
#if DEBUG
this.AttachDevTools();
#endif
}
private void InitializeComponent()
{
AvaloniaXamlLoader.Load(this);
}
}
}

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