Skip to content
This repository was archived by the owner on May 1, 2024. It is now read-only.

Commit d4b0187

Browse files
User stopped typing behavior (#253)
* Created UserStoppedTyping Behavior * Added empty sample page and view model for UserStoppedTypingBehavior and added sample page to the BehaviorsGallery * Implemented UserStoppedTypingBehavior sample page and view model logic * Added all texts used to AppResources * Several syntax changes have been made * Implemented some unit tests for UserStoppedTypingBehavior * Applied changes requested by pull request review feedback * Applied requested changes from code review feedback from pictos * Final minor changes made requested by code review from AndreiMisiukevich
1 parent 590ae0b commit d4b0187

11 files changed

Lines changed: 442 additions & 32 deletions
Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
using System.Threading.Tasks;
2+
using System.Windows.Input;
3+
using Xamarin.CommunityToolkit.Behaviors;
4+
using Xamarin.Forms;
5+
using Xunit;
6+
7+
namespace Xamarin.CommunityToolkit.UnitTests.Behaviors
8+
{
9+
public class UserStoppedTypingBehavior_Tests
10+
{
11+
const int defaultThreshold = 1000;
12+
13+
[Fact]
14+
public async Task CommandExecutesAfterTimeThresholdExpires()
15+
{
16+
// arrange
17+
var commandHasBeenExecuted = false;
18+
var entry = CreateEntryWithBehavior(command: new Command<string>((s) => commandHasBeenExecuted = true));
19+
20+
// act
21+
entry.Text = "1";
22+
await Task.Delay(defaultThreshold + 100);
23+
24+
// assert
25+
Assert.True(commandHasBeenExecuted);
26+
}
27+
28+
[Fact]
29+
public async Task CommandNotExecutesYetBeforeTimeThresholdExpires()
30+
{
31+
// arrange
32+
var commandHasBeenExecuted = false;
33+
var entry = CreateEntryWithBehavior(command: new Command<string>((s) => commandHasBeenExecuted = true));
34+
35+
// act
36+
entry.Text = "1";
37+
await Task.Delay(defaultThreshold - 100);
38+
39+
// assert
40+
Assert.False(commandHasBeenExecuted);
41+
}
42+
43+
[Fact]
44+
public async Task CommandOnlyExecutesOnceWhenTextChangedOccurredMultipleTimes()
45+
{
46+
// arrange
47+
var timesExecuted = 0;
48+
var entry = CreateEntryWithBehavior(command: new Command<string>((s) => timesExecuted++));
49+
50+
// act
51+
entry.Text = "1";
52+
entry.Text = "12";
53+
entry.Text = "123";
54+
entry.Text = "1234";
55+
await Task.Delay(defaultThreshold + 100);
56+
57+
// assert
58+
Assert.Equal(1, timesExecuted);
59+
}
60+
61+
[Fact]
62+
public async Task KeyboardDimissesAfterTimeThresholdExpires()
63+
{
64+
// arrange
65+
var entry = CreateEntryWithBehavior(shouldDismissKeyboardAutomatically: true);
66+
67+
// act
68+
entry.Focus();
69+
entry.Text = "1";
70+
71+
await Task.Delay(defaultThreshold + 100);
72+
73+
// assert
74+
Assert.False(entry.IsFocused);
75+
}
76+
77+
public Entry CreateEntryWithBehavior(int threshold = defaultThreshold,
78+
bool shouldDismissKeyboardAutomatically = false,
79+
ICommand command = null)
80+
=> new Entry
81+
{
82+
Behaviors =
83+
{
84+
new UserStoppedTypingBehavior
85+
{
86+
StoppedTypingTimeThreshold = threshold,
87+
ShouldDismissKeyboardAutomatically = shouldDismissKeyboardAutomatically,
88+
Command = command
89+
}
90+
}
91+
};
92+
}
93+
}

XamarinCommunityToolkit.UnitTests/Xamarin.CommunityToolkit.UnitTests.csproj

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919

2020
<ItemGroup>
2121
<Folder Include="Converters\" />
22-
<Folder Include="Behaviors\" />
2322
<Folder Include="Mocks\" />
2423
</ItemGroup>
2524

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
using System.Threading;
2+
using System.Threading.Tasks;
3+
using System.Windows.Input;
4+
using Xamarin.Forms;
5+
6+
namespace Xamarin.CommunityToolkit.Behaviors
7+
{
8+
public class UserStoppedTypingBehavior : BaseBehavior
9+
{
10+
CancellationTokenSource tokenSource;
11+
12+
#region Bindable Properties
13+
14+
public static readonly BindableProperty CommandProperty = BindableProperty.Create(nameof(Command), typeof(ICommand), typeof(UserStoppedTypingBehavior));
15+
public ICommand Command
16+
{
17+
get => (ICommand)GetValue(CommandProperty);
18+
set => SetValue(CommandProperty, value);
19+
}
20+
21+
public static readonly BindableProperty StoppedTypingTimeThresholdProperty = BindableProperty.Create(nameof(StoppedTypingTimeThreshold), typeof(int), typeof(UserStoppedTypingBehavior), 1000);
22+
public int StoppedTypingTimeThreshold
23+
{
24+
get => (int)GetValue(StoppedTypingTimeThresholdProperty);
25+
set => SetValue(StoppedTypingTimeThresholdProperty, value);
26+
}
27+
28+
public static readonly BindableProperty ShouldDismissKeyboardAutomaticallyProperty = BindableProperty.Create(nameof(ShouldDismissKeyboardAutomatically), typeof(bool), typeof(UserStoppedTypingBehavior), false);
29+
public bool ShouldDismissKeyboardAutomatically
30+
{
31+
get => (bool)GetValue(ShouldDismissKeyboardAutomaticallyProperty);
32+
set => SetValue(ShouldDismissKeyboardAutomaticallyProperty, value);
33+
}
34+
35+
#endregion Bindable Properties
36+
37+
protected override void OnAttachedTo(View view)
38+
{
39+
base.OnAttachedTo(view);
40+
41+
if (!(view is InputView inputView)) return;
42+
43+
inputView.TextChanged += OnInputViewTextChanged;
44+
}
45+
46+
protected override void OnDetachingFrom(View view)
47+
{
48+
base.OnDetachingFrom(view);
49+
50+
if (!(view is InputView inputView)) return;
51+
52+
inputView.TextChanged -= OnInputViewTextChanged;
53+
}
54+
55+
void OnInputViewTextChanged(object sender, TextChangedEventArgs e)
56+
{
57+
if (tokenSource != null)
58+
{
59+
tokenSource.Cancel();
60+
tokenSource.Dispose();
61+
}
62+
63+
tokenSource = new CancellationTokenSource();
64+
65+
_ = PerformTextChanged((InputView)sender, e.NewTextValue, tokenSource.Token);
66+
}
67+
68+
Task PerformTextChanged(InputView inputView, string newTextValue, CancellationToken token)
69+
=> Task.Delay(StoppedTypingTimeThreshold, token)
70+
.ContinueWith(task =>
71+
{
72+
if (task.Exception != null || token.IsCancellationRequested) return;
73+
74+
if (ShouldDismissKeyboardAutomatically)
75+
inputView.Unfocus();
76+
77+
if (Command == null || !Command.CanExecute(newTextValue)) return;
78+
79+
Command.Execute(newTextValue);
80+
});
81+
}
82+
}

XamarinCommunityToolkitSample.sln

Lines changed: 62 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,11 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xamarin.CommunityToolkit.Sa
99
EndProject
1010
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Xamarin.CommunityToolkit.Sample", "XamarinCommunityToolkitSample\Xamarin.CommunityToolkit.Sample.csproj", "{81AADE72-D666-4AB0-83D9-8FE366E0755E}"
1111
EndProject
12-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xamarin.CommunityToolkit", "XamarinCommunityToolkit\Xamarin.CommunityToolkit.csproj", "{B0DCDF81-953D-47DA-A7D4-0565339BF07C}"
12+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Xamarin.CommunityToolkit", "XamarinCommunityToolkit\Xamarin.CommunityToolkit.csproj", "{B0DCDF81-953D-47DA-A7D4-0565339BF07C}"
1313
EndProject
1414
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tests", "Tests", "{47DFE508-04F1-433D-8C55-0C1ACD033573}"
1515
EndProject
16-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xamarin.CommunityToolkit.UnitTests", "XamarinCommunityToolkit.UnitTests\Xamarin.CommunityToolkit.UnitTests.csproj", "{54B7812B-45A5-4FE2-9CEA-C5F17D65BDE9}"
16+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Xamarin.CommunityToolkit.UnitTests", "XamarinCommunityToolkit.UnitTests\Xamarin.CommunityToolkit.UnitTests.csproj", "{54B7812B-45A5-4FE2-9CEA-C5F17D65BDE9}"
1717
EndProject
1818
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xamarin.CommunityToolkit.Sample.UWP", "XamarinCommunityToolkitSample.UWP\Xamarin.CommunityToolkit.Sample.UWP.csproj", "{91C748B4-E9ED-4543-880A-26747B03DE3A}"
1919
EndProject
@@ -36,81 +36,141 @@ Global
3636
{8B80BFA6-7B19-4DE7-BD97-7D84194AD0C2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
3737
{8B80BFA6-7B19-4DE7-BD97-7D84194AD0C2}.Debug|Any CPU.Build.0 = Debug|Any CPU
3838
{8B80BFA6-7B19-4DE7-BD97-7D84194AD0C2}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
39+
{8B80BFA6-7B19-4DE7-BD97-7D84194AD0C2}.Debug|ARM.ActiveCfg = Debug|Any CPU
40+
{8B80BFA6-7B19-4DE7-BD97-7D84194AD0C2}.Debug|ARM.Build.0 = Debug|Any CPU
41+
{8B80BFA6-7B19-4DE7-BD97-7D84194AD0C2}.Debug|ARM.Deploy.0 = Debug|Any CPU
3942
{8B80BFA6-7B19-4DE7-BD97-7D84194AD0C2}.Debug|iPhone.ActiveCfg = Debug|Any CPU
4043
{8B80BFA6-7B19-4DE7-BD97-7D84194AD0C2}.Debug|iPhone.Build.0 = Debug|Any CPU
4144
{8B80BFA6-7B19-4DE7-BD97-7D84194AD0C2}.Debug|iPhone.Deploy.0 = Debug|Any CPU
4245
{8B80BFA6-7B19-4DE7-BD97-7D84194AD0C2}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
4346
{8B80BFA6-7B19-4DE7-BD97-7D84194AD0C2}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
4447
{8B80BFA6-7B19-4DE7-BD97-7D84194AD0C2}.Debug|iPhoneSimulator.Deploy.0 = Debug|Any CPU
48+
{8B80BFA6-7B19-4DE7-BD97-7D84194AD0C2}.Debug|x64.ActiveCfg = Debug|Any CPU
49+
{8B80BFA6-7B19-4DE7-BD97-7D84194AD0C2}.Debug|x64.Build.0 = Debug|Any CPU
50+
{8B80BFA6-7B19-4DE7-BD97-7D84194AD0C2}.Debug|x64.Deploy.0 = Debug|Any CPU
51+
{8B80BFA6-7B19-4DE7-BD97-7D84194AD0C2}.Debug|x86.ActiveCfg = Debug|Any CPU
52+
{8B80BFA6-7B19-4DE7-BD97-7D84194AD0C2}.Debug|x86.Build.0 = Debug|Any CPU
53+
{8B80BFA6-7B19-4DE7-BD97-7D84194AD0C2}.Debug|x86.Deploy.0 = Debug|Any CPU
4554
{8B80BFA6-7B19-4DE7-BD97-7D84194AD0C2}.Release|Any CPU.ActiveCfg = Release|Any CPU
4655
{8B80BFA6-7B19-4DE7-BD97-7D84194AD0C2}.Release|Any CPU.Build.0 = Release|Any CPU
4756
{8B80BFA6-7B19-4DE7-BD97-7D84194AD0C2}.Release|Any CPU.Deploy.0 = Release|Any CPU
57+
{8B80BFA6-7B19-4DE7-BD97-7D84194AD0C2}.Release|ARM.ActiveCfg = Release|Any CPU
58+
{8B80BFA6-7B19-4DE7-BD97-7D84194AD0C2}.Release|ARM.Build.0 = Release|Any CPU
59+
{8B80BFA6-7B19-4DE7-BD97-7D84194AD0C2}.Release|ARM.Deploy.0 = Release|Any CPU
4860
{8B80BFA6-7B19-4DE7-BD97-7D84194AD0C2}.Release|iPhone.ActiveCfg = Release|Any CPU
4961
{8B80BFA6-7B19-4DE7-BD97-7D84194AD0C2}.Release|iPhone.Build.0 = Release|Any CPU
5062
{8B80BFA6-7B19-4DE7-BD97-7D84194AD0C2}.Release|iPhone.Deploy.0 = Release|Any CPU
5163
{8B80BFA6-7B19-4DE7-BD97-7D84194AD0C2}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
5264
{8B80BFA6-7B19-4DE7-BD97-7D84194AD0C2}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
5365
{8B80BFA6-7B19-4DE7-BD97-7D84194AD0C2}.Release|iPhoneSimulator.Deploy.0 = Release|Any CPU
66+
{8B80BFA6-7B19-4DE7-BD97-7D84194AD0C2}.Release|x64.ActiveCfg = Release|Any CPU
67+
{8B80BFA6-7B19-4DE7-BD97-7D84194AD0C2}.Release|x64.Build.0 = Release|Any CPU
68+
{8B80BFA6-7B19-4DE7-BD97-7D84194AD0C2}.Release|x64.Deploy.0 = Release|Any CPU
69+
{8B80BFA6-7B19-4DE7-BD97-7D84194AD0C2}.Release|x86.ActiveCfg = Release|Any CPU
70+
{8B80BFA6-7B19-4DE7-BD97-7D84194AD0C2}.Release|x86.Build.0 = Release|Any CPU
71+
{8B80BFA6-7B19-4DE7-BD97-7D84194AD0C2}.Release|x86.Deploy.0 = Release|Any CPU
5472
{B10BD8BF-43EA-4F95-BE5C-42ED8028CC6B}.Debug|Any CPU.ActiveCfg = Debug|iPhone
5573
{B10BD8BF-43EA-4F95-BE5C-42ED8028CC6B}.Debug|Any CPU.Build.0 = Debug|iPhone
5674
{B10BD8BF-43EA-4F95-BE5C-42ED8028CC6B}.Debug|Any CPU.Deploy.0 = Debug|iPhone
75+
{B10BD8BF-43EA-4F95-BE5C-42ED8028CC6B}.Debug|ARM.ActiveCfg = Debug|iPhoneSimulator
5776
{B10BD8BF-43EA-4F95-BE5C-42ED8028CC6B}.Debug|iPhone.ActiveCfg = Debug|iPhone
5877
{B10BD8BF-43EA-4F95-BE5C-42ED8028CC6B}.Debug|iPhone.Build.0 = Debug|iPhone
5978
{B10BD8BF-43EA-4F95-BE5C-42ED8028CC6B}.Debug|iPhone.Deploy.0 = Debug|iPhone
6079
{B10BD8BF-43EA-4F95-BE5C-42ED8028CC6B}.Debug|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator
6180
{B10BD8BF-43EA-4F95-BE5C-42ED8028CC6B}.Debug|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator
6281
{B10BD8BF-43EA-4F95-BE5C-42ED8028CC6B}.Debug|iPhoneSimulator.Deploy.0 = Debug|iPhoneSimulator
82+
{B10BD8BF-43EA-4F95-BE5C-42ED8028CC6B}.Debug|x64.ActiveCfg = Debug|iPhoneSimulator
83+
{B10BD8BF-43EA-4F95-BE5C-42ED8028CC6B}.Debug|x86.ActiveCfg = Debug|iPhoneSimulator
6384
{B10BD8BF-43EA-4F95-BE5C-42ED8028CC6B}.Release|Any CPU.ActiveCfg = Release|iPhone
6485
{B10BD8BF-43EA-4F95-BE5C-42ED8028CC6B}.Release|Any CPU.Build.0 = Release|iPhone
6586
{B10BD8BF-43EA-4F95-BE5C-42ED8028CC6B}.Release|Any CPU.Deploy.0 = Release|iPhone
87+
{B10BD8BF-43EA-4F95-BE5C-42ED8028CC6B}.Release|ARM.ActiveCfg = Release|iPhoneSimulator
6688
{B10BD8BF-43EA-4F95-BE5C-42ED8028CC6B}.Release|iPhone.ActiveCfg = Release|iPhone
6789
{B10BD8BF-43EA-4F95-BE5C-42ED8028CC6B}.Release|iPhone.Build.0 = Release|iPhone
6890
{B10BD8BF-43EA-4F95-BE5C-42ED8028CC6B}.Release|iPhone.Deploy.0 = Release|iPhone
6991
{B10BD8BF-43EA-4F95-BE5C-42ED8028CC6B}.Release|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator
7092
{B10BD8BF-43EA-4F95-BE5C-42ED8028CC6B}.Release|iPhoneSimulator.Build.0 = Release|iPhoneSimulator
7193
{B10BD8BF-43EA-4F95-BE5C-42ED8028CC6B}.Release|iPhoneSimulator.Deploy.0 = Release|iPhoneSimulator
94+
{B10BD8BF-43EA-4F95-BE5C-42ED8028CC6B}.Release|x64.ActiveCfg = Release|iPhoneSimulator
95+
{B10BD8BF-43EA-4F95-BE5C-42ED8028CC6B}.Release|x86.ActiveCfg = Release|iPhoneSimulator
7296
{81AADE72-D666-4AB0-83D9-8FE366E0755E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
7397
{81AADE72-D666-4AB0-83D9-8FE366E0755E}.Debug|Any CPU.Build.0 = Debug|Any CPU
7498
{81AADE72-D666-4AB0-83D9-8FE366E0755E}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
99+
{81AADE72-D666-4AB0-83D9-8FE366E0755E}.Debug|ARM.ActiveCfg = Debug|Any CPU
100+
{81AADE72-D666-4AB0-83D9-8FE366E0755E}.Debug|ARM.Build.0 = Debug|Any CPU
75101
{81AADE72-D666-4AB0-83D9-8FE366E0755E}.Debug|iPhone.ActiveCfg = Debug|Any CPU
76102
{81AADE72-D666-4AB0-83D9-8FE366E0755E}.Debug|iPhone.Build.0 = Debug|Any CPU
77103
{81AADE72-D666-4AB0-83D9-8FE366E0755E}.Debug|iPhone.Deploy.0 = Debug|Any CPU
78104
{81AADE72-D666-4AB0-83D9-8FE366E0755E}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
79105
{81AADE72-D666-4AB0-83D9-8FE366E0755E}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
80106
{81AADE72-D666-4AB0-83D9-8FE366E0755E}.Debug|iPhoneSimulator.Deploy.0 = Debug|Any CPU
107+
{81AADE72-D666-4AB0-83D9-8FE366E0755E}.Debug|x64.ActiveCfg = Debug|Any CPU
108+
{81AADE72-D666-4AB0-83D9-8FE366E0755E}.Debug|x64.Build.0 = Debug|Any CPU
109+
{81AADE72-D666-4AB0-83D9-8FE366E0755E}.Debug|x86.ActiveCfg = Debug|Any CPU
110+
{81AADE72-D666-4AB0-83D9-8FE366E0755E}.Debug|x86.Build.0 = Debug|Any CPU
81111
{81AADE72-D666-4AB0-83D9-8FE366E0755E}.Release|Any CPU.ActiveCfg = Release|Any CPU
82112
{81AADE72-D666-4AB0-83D9-8FE366E0755E}.Release|Any CPU.Build.0 = Release|Any CPU
83113
{81AADE72-D666-4AB0-83D9-8FE366E0755E}.Release|Any CPU.Deploy.0 = Release|Any CPU
114+
{81AADE72-D666-4AB0-83D9-8FE366E0755E}.Release|ARM.ActiveCfg = Release|Any CPU
115+
{81AADE72-D666-4AB0-83D9-8FE366E0755E}.Release|ARM.Build.0 = Release|Any CPU
84116
{81AADE72-D666-4AB0-83D9-8FE366E0755E}.Release|iPhone.ActiveCfg = Release|Any CPU
85117
{81AADE72-D666-4AB0-83D9-8FE366E0755E}.Release|iPhone.Build.0 = Release|Any CPU
86118
{81AADE72-D666-4AB0-83D9-8FE366E0755E}.Release|iPhone.Deploy.0 = Release|Any CPU
87119
{81AADE72-D666-4AB0-83D9-8FE366E0755E}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
88120
{81AADE72-D666-4AB0-83D9-8FE366E0755E}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
89121
{81AADE72-D666-4AB0-83D9-8FE366E0755E}.Release|iPhoneSimulator.Deploy.0 = Release|Any CPU
122+
{81AADE72-D666-4AB0-83D9-8FE366E0755E}.Release|x64.ActiveCfg = Release|Any CPU
123+
{81AADE72-D666-4AB0-83D9-8FE366E0755E}.Release|x64.Build.0 = Release|Any CPU
124+
{81AADE72-D666-4AB0-83D9-8FE366E0755E}.Release|x86.ActiveCfg = Release|Any CPU
125+
{81AADE72-D666-4AB0-83D9-8FE366E0755E}.Release|x86.Build.0 = Release|Any CPU
90126
{B0DCDF81-953D-47DA-A7D4-0565339BF07C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
91127
{B0DCDF81-953D-47DA-A7D4-0565339BF07C}.Debug|Any CPU.Build.0 = Debug|Any CPU
128+
{B0DCDF81-953D-47DA-A7D4-0565339BF07C}.Debug|ARM.ActiveCfg = Debug|Any CPU
129+
{B0DCDF81-953D-47DA-A7D4-0565339BF07C}.Debug|ARM.Build.0 = Debug|Any CPU
92130
{B0DCDF81-953D-47DA-A7D4-0565339BF07C}.Debug|iPhone.ActiveCfg = Debug|Any CPU
93131
{B0DCDF81-953D-47DA-A7D4-0565339BF07C}.Debug|iPhone.Build.0 = Debug|Any CPU
94132
{B0DCDF81-953D-47DA-A7D4-0565339BF07C}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
95133
{B0DCDF81-953D-47DA-A7D4-0565339BF07C}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
134+
{B0DCDF81-953D-47DA-A7D4-0565339BF07C}.Debug|x64.ActiveCfg = Debug|Any CPU
135+
{B0DCDF81-953D-47DA-A7D4-0565339BF07C}.Debug|x64.Build.0 = Debug|Any CPU
136+
{B0DCDF81-953D-47DA-A7D4-0565339BF07C}.Debug|x86.ActiveCfg = Debug|Any CPU
137+
{B0DCDF81-953D-47DA-A7D4-0565339BF07C}.Debug|x86.Build.0 = Debug|Any CPU
96138
{B0DCDF81-953D-47DA-A7D4-0565339BF07C}.Release|Any CPU.ActiveCfg = Release|Any CPU
97139
{B0DCDF81-953D-47DA-A7D4-0565339BF07C}.Release|Any CPU.Build.0 = Release|Any CPU
140+
{B0DCDF81-953D-47DA-A7D4-0565339BF07C}.Release|ARM.ActiveCfg = Release|Any CPU
141+
{B0DCDF81-953D-47DA-A7D4-0565339BF07C}.Release|ARM.Build.0 = Release|Any CPU
98142
{B0DCDF81-953D-47DA-A7D4-0565339BF07C}.Release|iPhone.ActiveCfg = Release|Any CPU
99143
{B0DCDF81-953D-47DA-A7D4-0565339BF07C}.Release|iPhone.Build.0 = Release|Any CPU
100144
{B0DCDF81-953D-47DA-A7D4-0565339BF07C}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
101145
{B0DCDF81-953D-47DA-A7D4-0565339BF07C}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
146+
{B0DCDF81-953D-47DA-A7D4-0565339BF07C}.Release|x64.ActiveCfg = Release|Any CPU
147+
{B0DCDF81-953D-47DA-A7D4-0565339BF07C}.Release|x64.Build.0 = Release|Any CPU
148+
{B0DCDF81-953D-47DA-A7D4-0565339BF07C}.Release|x86.ActiveCfg = Release|Any CPU
149+
{B0DCDF81-953D-47DA-A7D4-0565339BF07C}.Release|x86.Build.0 = Release|Any CPU
102150
{54B7812B-45A5-4FE2-9CEA-C5F17D65BDE9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
103151
{54B7812B-45A5-4FE2-9CEA-C5F17D65BDE9}.Debug|Any CPU.Build.0 = Debug|Any CPU
152+
{54B7812B-45A5-4FE2-9CEA-C5F17D65BDE9}.Debug|ARM.ActiveCfg = Debug|Any CPU
153+
{54B7812B-45A5-4FE2-9CEA-C5F17D65BDE9}.Debug|ARM.Build.0 = Debug|Any CPU
104154
{54B7812B-45A5-4FE2-9CEA-C5F17D65BDE9}.Debug|iPhone.ActiveCfg = Debug|Any CPU
105155
{54B7812B-45A5-4FE2-9CEA-C5F17D65BDE9}.Debug|iPhone.Build.0 = Debug|Any CPU
106156
{54B7812B-45A5-4FE2-9CEA-C5F17D65BDE9}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
107157
{54B7812B-45A5-4FE2-9CEA-C5F17D65BDE9}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
158+
{54B7812B-45A5-4FE2-9CEA-C5F17D65BDE9}.Debug|x64.ActiveCfg = Debug|Any CPU
159+
{54B7812B-45A5-4FE2-9CEA-C5F17D65BDE9}.Debug|x64.Build.0 = Debug|Any CPU
160+
{54B7812B-45A5-4FE2-9CEA-C5F17D65BDE9}.Debug|x86.ActiveCfg = Debug|Any CPU
161+
{54B7812B-45A5-4FE2-9CEA-C5F17D65BDE9}.Debug|x86.Build.0 = Debug|Any CPU
108162
{54B7812B-45A5-4FE2-9CEA-C5F17D65BDE9}.Release|Any CPU.ActiveCfg = Release|Any CPU
109163
{54B7812B-45A5-4FE2-9CEA-C5F17D65BDE9}.Release|Any CPU.Build.0 = Release|Any CPU
164+
{54B7812B-45A5-4FE2-9CEA-C5F17D65BDE9}.Release|ARM.ActiveCfg = Release|Any CPU
165+
{54B7812B-45A5-4FE2-9CEA-C5F17D65BDE9}.Release|ARM.Build.0 = Release|Any CPU
110166
{54B7812B-45A5-4FE2-9CEA-C5F17D65BDE9}.Release|iPhone.ActiveCfg = Release|Any CPU
111167
{54B7812B-45A5-4FE2-9CEA-C5F17D65BDE9}.Release|iPhone.Build.0 = Release|Any CPU
112168
{54B7812B-45A5-4FE2-9CEA-C5F17D65BDE9}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
113169
{54B7812B-45A5-4FE2-9CEA-C5F17D65BDE9}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
170+
{54B7812B-45A5-4FE2-9CEA-C5F17D65BDE9}.Release|x64.ActiveCfg = Release|Any CPU
171+
{54B7812B-45A5-4FE2-9CEA-C5F17D65BDE9}.Release|x64.Build.0 = Release|Any CPU
172+
{54B7812B-45A5-4FE2-9CEA-C5F17D65BDE9}.Release|x86.ActiveCfg = Release|Any CPU
173+
{54B7812B-45A5-4FE2-9CEA-C5F17D65BDE9}.Release|x86.Build.0 = Release|Any CPU
114174
{91C748B4-E9ED-4543-880A-26747B03DE3A}.Debug|Any CPU.ActiveCfg = Debug|x86
115175
{91C748B4-E9ED-4543-880A-26747B03DE3A}.Debug|Any CPU.Build.0 = Debug|x86
116176
{91C748B4-E9ED-4543-880A-26747B03DE3A}.Debug|Any CPU.Deploy.0 = Debug|x86

0 commit comments

Comments
 (0)