├── .editorconfig
├── .gitattributes
├── .gitignore
├── LICENSE
├── Readme.md
├── StateMachine.sln
├── StateMachine.sln.DotSettings
├── StateMachine
├── StateMachine.Android
│ ├── Assets
│ │ └── AboutAssets.txt
│ ├── MainActivity.cs
│ ├── Properties
│ │ ├── AndroidManifest.xml
│ │ └── AssemblyInfo.cs
│ ├── Resources
│ │ ├── AboutResources.txt
│ │ ├── Resource.Designer.cs
│ │ ├── drawable-hdpi
│ │ │ └── icon.png
│ │ ├── drawable-xhdpi
│ │ │ └── icon.png
│ │ ├── drawable-xxhdpi
│ │ │ └── icon.png
│ │ ├── drawable
│ │ │ └── icon.png
│ │ ├── layout
│ │ │ ├── Tabbar.axml
│ │ │ └── Toolbar.axml
│ │ └── values
│ │ │ └── styles.xml
│ ├── StateMachine.Android.csproj
│ ├── app.config
│ └── packages.config
├── StateMachine.iOS
│ ├── AppDelegate.cs
│ ├── Entitlements.plist
│ ├── Info.plist
│ ├── Main.cs
│ ├── Properties
│ │ └── AssemblyInfo.cs
│ ├── Resources
│ │ ├── Default-568h@2x.png
│ │ ├── Default-Portrait.png
│ │ ├── Default-Portrait@2x.png
│ │ ├── Default.png
│ │ ├── Default@2x.png
│ │ ├── Icon-60@2x.png
│ │ ├── Icon-60@3x.png
│ │ ├── Icon-76.png
│ │ ├── Icon-76@2x.png
│ │ ├── Icon-Small-40.png
│ │ ├── Icon-Small-40@2x.png
│ │ ├── Icon-Small-40@3x.png
│ │ ├── Icon-Small.png
│ │ ├── Icon-Small@2x.png
│ │ ├── Icon-Small@3x.png
│ │ └── LaunchScreen.storyboard
│ ├── StateMachine.iOS.csproj
│ ├── app.config
│ ├── iTunesArtwork
│ ├── iTunesArtwork@2x
│ └── packages.config
└── StateMachine
│ ├── App.cs
│ ├── MainPage.xaml
│ ├── MainPage.xaml.cs
│ ├── Properties
│ └── AssemblyInfo.cs
│ ├── StateMachine.csproj
│ ├── Storyboard.cs
│ └── packages.config
└── resharper.DotSettings
/.editorconfig:
--------------------------------------------------------------------------------
1 | # Based on https://docs.microsoft.com/en-us/visualstudio/ide/editorconfig-code-style-settings-reference
2 | # Use https://github.com/dotnet/roslyn/blob/master/.editorconfig as a sample
3 |
4 | root = true
5 |
6 | [*]
7 | end_of_line = crlf
8 | charset = utf-8
9 | trim_trailing_whitespace = true
10 | insert_final_newline = false
11 | indent_style = tab
12 | indent_size = 4
13 | max_line_length = 160
14 |
15 | [*.md]
16 | trim_trailing_whitespace = false
17 | insert_final_newline = true
18 |
19 |
20 | [*.cs]
21 | dotnet_sort_system_directives_first = true
22 |
23 | dotnet_style_coalesce_expression = true:error
24 | dotnet_style_collection_initializer = true:error
25 | dotnet_style_explicit_tuple_names = true:error
26 | dotnet_style_null_propagation = true:error
27 | dotnet_style_object_initializer = true:error
28 | dotnet_style_predefined_type_for_locals_parameters_members = true:error
29 | dotnet_style_predefined_type_for_member_access = true:error
30 | dotnet_style_qualification_for_event = false:error
31 | dotnet_style_qualification_for_field = false:error
32 | dotnet_style_qualification_for_method = false:error
33 | dotnet_style_qualification_for_property = false:error
34 |
35 | csharp_new_line_before_catch = true : error
36 | csharp_new_line_before_else = true : error
37 | csharp_new_line_before_finally = true : error
38 | csharp_new_line_before_members_in_anonymous_types = false : error
39 | csharp_new_line_before_members_in_object_initializers = false : error
40 | csharp_new_line_before_open_brace = none : error
41 | csharp_new_line_between_query_expression_clauses = false : error
42 |
43 | csharp_indent_block_contents = true : error
44 | csharp_indent_braces = true : error
45 | csharp_indent_case_contents = true : error
46 | csharp_indent_switch_labels = true : error
47 |
48 | csharp_preserve_single_line_blocks = true : error
49 | csharp_preserve_single_line_statements = true : error
50 |
51 | csharp_space_after_cast = false : error
52 | csharp_space_after_colon_in_inheritance_clause = true : error
53 | csharp_space_after_comma = true : error
54 | csharp_space_after_dot = false : error
55 | csharp_space_after_keywords_in_control_flow_statements = true : error
56 | csharp_space_after_semicolon_in_for_statement = true : error
57 |
58 | csharp_space_around_binary_operators = before_and_after : error
59 | csharp_space_around_declaration_statements = do_not_ignore : error
60 |
61 | csharp_space_before_colon_in_inheritance_clause = false : error
62 | csharp_space_before_comma = false : error
63 | csharp_space_before_dot = false : error
64 | csharp_space_before_open_square_brackets = false : error
65 | csharp_space_before_semicolon_in_for_statement = false : error
66 |
67 | csharp_space_between_empty_square_brackets = false : error
68 | csharp_space_between_method_call_empty_parameter_list_parentheses = false : error
69 | csharp_space_between_method_call_name_and_opening_parenthesis = false : error
70 | csharp_space_between_method_call_parameter_list_parentheses = false : error
71 | csharp_space_between_method_declaration_empty_parameter_list_parentheses = false : error
72 | csharp_space_between_method_declaration_name_and_open_parenthesis = false : error
73 | csharp_space_between_method_declaration_parameter_list_parentheses = false : error
74 | csharp_space_between_parentheses = control_flow_statements : error
75 | csharp_space_between_square_brackets = false : error
76 |
77 | csharp_style_conditional_delegate_call = true : error
78 | csharp_style_expression_bodied_accessors = false : error
79 | csharp_style_expression_bodied_constructors = false: error
80 | csharp_style_expression_bodied_indexers = true:warning
81 | csharp_style_expression_bodied_methods = false:error
82 | csharp_style_expression_bodied_operators = false:error
83 | csharp_style_expression_bodied_properties = true: warning
84 | csharp_style_inlined_variable_declaration = false: error
85 | csharp_style_pattern_matching_over_as_with_null_check = false : error
86 | csharp_style_pattern_matching_over_is_with_cast_check = false:error
87 | csharp_style_throw_expression = false:warning
88 | csharp_style_var_elsewhere = true:error
89 | csharp_style_var_for_built_in_types = true:error
90 | csharp_style_var_when_type_is_apparent = true:error
91 |
92 | # Name all constant fields using PascalCase
93 | dotnet_naming_rule.constant_fields_should_be_pascal_case.severity = suggestion
94 | dotnet_naming_rule.constant_fields_should_be_pascal_case.symbols = constant_fields
95 | dotnet_naming_rule.constant_fields_should_be_pascal_case.style = pascal_case_style
96 |
97 | dotnet_naming_symbols.constant_fields.applicable_kinds = field
98 | dotnet_naming_symbols.constant_fields.required_modifiers = const
99 |
100 | dotnet_naming_style.pascal_case_style.capitalization = pascal_case
101 |
102 | # Internal and private fields should be _camelCase
103 | dotnet_naming_rule.camel_case_for_private_internal_fields.severity = suggestion
104 | dotnet_naming_rule.camel_case_for_private_internal_fields.symbols = private_internal_fields
105 | dotnet_naming_rule.camel_case_for_private_internal_fields.style = camel_case_underscore_style
106 |
107 | dotnet_naming_symbols.private_internal_fields.applicable_kinds = field
108 | dotnet_naming_symbols.private_internal_fields.applicable_accessibilities = private, internal
109 |
110 | dotnet_naming_style.camel_case_underscore_style.required_prefix = _
111 | dotnet_naming_style.camel_case_underscore_style.capitalization = camel_case
112 |
113 |
--------------------------------------------------------------------------------
/.gitattributes:
--------------------------------------------------------------------------------
1 | # Set default behaviour, in case users don't have core.autocrlf set.
2 | * text=auto
3 |
4 | # Explicitly declare text files we want to always be normalized and converted
5 | # to native line endings on checkout.
6 | *.cs text
7 |
8 | # Declare files that will always have CRLF line endings on checkout.
9 | *.sln text eol=crlf
10 |
11 | # Denote all files that are truly binary and should not be modified.
12 | *.png binary
13 | *.jpg binary
14 | *.jpeg binary
15 |
16 | # Always checkout docs using unix line endings because mdoc uses unix line endings even on windows
17 | /docs/**/*.xml text eol=lf
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Xamarin Components
2 | **/Components/*
3 |
4 | # Created by https://www.gitignore.io
5 |
6 | ### Windows ###
7 | # Windows image file caches
8 | Thumbs.db
9 | ehthumbs.db
10 |
11 | # Folder config file
12 | Desktop.ini
13 |
14 | # Recycle Bin used on file shares
15 | $RECYCLE.BIN/
16 |
17 | # Windows Installer files
18 | *.cab
19 | *.msi
20 | *.msm
21 | *.msp
22 |
23 | # Windows shortcuts
24 | *.lnk
25 |
26 |
27 | ### Xcode ###
28 | build/
29 | *.pbxuser
30 | !default.pbxuser
31 | *.mode1v3
32 | !default.mode1v3
33 | *.mode2v3
34 | !default.mode2v3
35 | *.perspectivev3
36 | !default.perspectivev3
37 | xcuserdata
38 | *.xccheckout
39 | *.moved-aside
40 | DerivedData
41 | *.xcuserstate
42 |
43 |
44 | ### VisualStudio ###
45 | ## Ignore Visual Studio temporary files, build results, and
46 | ## files generated by popular Visual Studio add-ons.
47 |
48 | # User-specific files
49 | *.suo
50 | *.user
51 | *.userosscache
52 | *.sln.docstates
53 |
54 | # User-specific files (MonoDevelop/Xamarin Studio)
55 | *.userprefs
56 |
57 | # Build results
58 | [Dd]ebug/
59 | [Dd]ebugPublic/
60 | [Rr]elease/
61 | [Rr]eleases/
62 | x64/
63 | x86/
64 | build/
65 | bld/
66 | [Bb]in/
67 | [Oo]bj/
68 |
69 | # Visual Studo 2015 cache/options directory
70 | .vs/
71 |
72 | # MSTest test Results
73 | [Tt]est[Rr]esult*/
74 | [Bb]uild[Ll]og.*
75 |
76 | # NUNIT
77 | *.VisualState.xml
78 | TestResult.xml
79 |
80 | # Build Results of an ATL Project
81 | [Dd]ebugPS/
82 | [Rr]eleasePS/
83 | dlldata.c
84 |
85 | *_i.c
86 | *_p.c
87 | *_i.h
88 | *.ilk
89 | *.meta
90 | *.obj
91 | *.pch
92 | *.pdb
93 | *.pgc
94 | *.pgd
95 | *.rsp
96 | *.sbr
97 | *.tlb
98 | *.tli
99 | *.tlh
100 | *.tmp
101 | *.tmp_proj
102 | *.log
103 | *.vspscc
104 | *.vssscc
105 | .builds
106 | *.pidb
107 | *.svclog
108 | *.scc
109 |
110 | # Chutzpah Test files
111 | _Chutzpah*
112 |
113 | # Visual C++ cache files
114 | ipch/
115 | *.aps
116 | *.ncb
117 | *.opensdf
118 | *.sdf
119 | *.cachefile
120 |
121 | # Visual Studio profiler
122 | *.psess
123 | *.vsp
124 | *.vspx
125 |
126 | # TFS 2012 Local Workspace
127 | $tf/
128 |
129 | # Guidance Automation Toolkit
130 | *.gpState
131 |
132 | # ReSharper is a .NET coding add-in
133 | _ReSharper*/
134 | *.[Rr]e[Ss]harper
135 | *.DotSettings.user
136 |
137 | # JustCode is a .NET coding addin-in
138 | .JustCode
139 |
140 | # TeamCity is a build add-in
141 | _TeamCity*
142 |
143 | # DotCover is a Code Coverage Tool
144 | *.dotCover
145 |
146 | # NCrunch
147 | _NCrunch_*
148 | .*crunch*.local.xml
149 |
150 | # MightyMoose
151 | *.mm.*
152 | AutoTest.Net/
153 |
154 | # Web workbench (sass)
155 | .sass-cache/
156 |
157 | # Installshield output folder
158 | [Ee]xpress/
159 |
160 | # DocProject is a documentation generator add-in
161 | DocProject/buildhelp/
162 | DocProject/Help/*.HxT
163 | DocProject/Help/*.HxC
164 | DocProject/Help/*.hhc
165 | DocProject/Help/*.hhk
166 | DocProject/Help/*.hhp
167 | DocProject/Help/Html2
168 | DocProject/Help/html
169 |
170 | # Click-Once directory
171 | publish/
172 |
173 | # Publish Web Output
174 | *.[Pp]ublish.xml
175 | *.azurePubxml
176 | # TODO: Comment the next line if you want to checkin your web deploy settings
177 | # but database connection strings (with potential passwords) will be unencrypted
178 | *.pubxml
179 | *.publishproj
180 |
181 | # NuGet Packages #Disable for store local nupkg
182 | # *.nupkg
183 | # The packages folder can be ignored because of Package Restore
184 | **/packages/*
185 | # except build/, which is used as an MSBuild target.
186 | !**/packages/build/
187 | # Uncomment if necessary however generally it will be regenerated when needed
188 | !**/packages/repositories.config
189 |
190 | # Windows Azure Build Output
191 | csx/
192 | *.build.csdef
193 |
194 | # Windows Store app package directory
195 | AppPackages/
196 |
197 | # Others
198 | *.[Cc]ache
199 | ClientBin/
200 | [Ss]tyle[Cc]op.*
201 | ~$*
202 | *~
203 | *.dbmdl
204 | *.dbproj.schemaview
205 | *.pfx
206 | *.publishsettings
207 | node_modules/
208 | bower_components/
209 |
210 | # RIA/Silverlight projects
211 | Generated_Code/
212 |
213 | # Backup & report files from converting an old project file
214 | # to a newer Visual Studio version. Backup files are not needed,
215 | # because we have git ;-)
216 | _UpgradeReport_Files/
217 | Backup*/
218 | UpgradeLog*.XML
219 | UpgradeLog*.htm
220 |
221 | # SQL Server files
222 | *.mdf
223 | *.ldf
224 |
225 | # Business Intelligence projects
226 | *.rdl.data
227 | *.bim.layout
228 | *.bim_*.settings
229 |
230 | # Microsoft Fakes
231 | FakesAssemblies/
232 |
233 | # Node.js Tools for Visual Studio
234 | .ntvs_analysis.dat
235 |
236 | # Visual Studio 6 build log
237 | *.plg
238 |
239 | # Visual Studio 6 workspace options file
240 | *.opt
241 |
242 |
243 | ### XamarinStudio ###
244 | bin/
245 | obj/
246 | *.userprefs
247 |
248 |
249 | ### Objective-C ###
250 | # Xcode
251 | #
252 | build/
253 | *.pbxuser
254 | !default.pbxuser
255 | *.mode1v3
256 | !default.mode1v3
257 | *.mode2v3
258 | !default.mode2v3
259 | *.perspectivev3
260 | !default.perspectivev3
261 | xcuserdata
262 | *.xccheckout
263 | *.moved-aside
264 | DerivedData
265 | *.hmap
266 | *.ipa
267 | *.xcuserstate
268 |
269 | # CocoaPods
270 | #
271 | # We recommend against adding the Pods directory to your .gitignore. However
272 | # you should judge for yourself, the pros and cons are mentioned at:
273 | # http://guides.cocoapods.org/using/using-cocoapods.html#should-i-ignore-the-pods-directory-in-source-control
274 | #
275 | #Pods/
276 |
277 |
278 | ### Eclipse ###
279 | *.pydevproject
280 | .metadata
281 | .gradle
282 | bin/
283 | tmp/
284 | *.tmp
285 | *.bak
286 | *.swp
287 | *~.nib
288 | local.properties
289 | .settings/
290 | .loadpath
291 |
292 | # Eclipse Core
293 | .project
294 |
295 | # External tool builders
296 | .externalToolBuilders/
297 |
298 | # Locally stored "Eclipse launch configurations"
299 | *.launch
300 |
301 | # CDT-specific
302 | .cproject
303 |
304 | # JDT-specific (Eclipse Java Development Tools)
305 | .classpath
306 |
307 | # PDT-specific
308 | .buildpath
309 |
310 | # sbteclipse plugin
311 | .target
312 |
313 | # TeXlipse plugin
314 | .texlipse
315 |
316 |
317 | ### OSX ###
318 | .DS_Store
319 | .AppleDouble
320 | .LSOverride
321 |
322 | # Icon must end with two \r
323 | Icon
324 |
325 |
326 | # Thumbnails
327 | ._*
328 |
329 | # Files that might appear in the root of a volume
330 | .DocumentRevisions-V100
331 | .fseventsd
332 | .Spotlight-V100
333 | .TemporaryItems
334 | .Trashes
335 | .VolumeIcon.icns
336 |
337 | # Directories potentially created on remote AFP share
338 | .AppleDB
339 | .AppleDesktop
340 | Network Trash Folder
341 | Temporary Items
342 | .apdisk
343 |
344 |
345 | ### Android ###
346 | # Built application files
347 | *.apk
348 | *.ap_
349 |
350 | # Files for the Dalvik VM
351 | *.dex
352 |
353 | # Java class files
354 | *.class
355 |
356 | # Generated files
357 | bin/
358 | gen/
359 |
360 | # Gradle files
361 | .gradle/
362 | build/
363 | /*/build/
364 |
365 | # Local configuration file (sdk path, etc)
366 | local.properties
367 |
368 | # Proguard folder generated by Eclipse
369 | proguard/
370 |
371 | # Log Files
372 | *.log
373 |
374 | ### Android Patch ###
375 | gen-external-apklibs
376 | *.stackdump
377 | *.exe
378 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2019 Binwell Ltd.
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/Readme.md:
--------------------------------------------------------------------------------
1 | # Binwell StateMachine for Xamarin.Forms
2 |
3 | Demo of using Finite State Machine (FSM) for making complex animation
4 |
5 | Here is an article with detailed description: [https://blog.xamarin.com/complex-animations-xamarin-forms-using-finite-state-machine/](https://blog.xamarin.com/complex-animations-xamarin-forms-using-finite-state-machine/)
6 |
7 | [](https://www.youtube.com/watch?v=8qDfWoq-zpg)
8 |
--------------------------------------------------------------------------------
/StateMachine.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 12.00
3 | # Visual Studio 15
4 | VisualStudioVersion = 15.0.26430.16
5 | MinimumVisualStudioVersion = 10.0.40219.1
6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StateMachine.Android", "StateMachine\StateMachine.Android\StateMachine.Android.csproj", "{E4ACB8BD-57DF-471E-9BC4-E60CFB6B2EAB}"
7 | EndProject
8 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StateMachine", "StateMachine\StateMachine\StateMachine.csproj", "{68E026CB-ABA9-46AA-B080-E681BC02D9F3}"
9 | EndProject
10 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StateMachine.iOS", "StateMachine\StateMachine.iOS\StateMachine.iOS.csproj", "{F4869A79-252A-4E5E-A87F-FB65052E82B7}"
11 | EndProject
12 | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{E356AF8F-7F46-4F93-B1F7-716EB8D2D7FB}"
13 | ProjectSection(SolutionItems) = preProject
14 | .editorconfig = .editorconfig
15 | Readme.md = Readme.md
16 | EndProjectSection
17 | EndProject
18 | Global
19 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
20 | Ad-Hoc|Any CPU = Ad-Hoc|Any CPU
21 | Ad-Hoc|iPhone = Ad-Hoc|iPhone
22 | Ad-Hoc|iPhoneSimulator = Ad-Hoc|iPhoneSimulator
23 | AppStore|Any CPU = AppStore|Any CPU
24 | AppStore|iPhone = AppStore|iPhone
25 | AppStore|iPhoneSimulator = AppStore|iPhoneSimulator
26 | Debug|Any CPU = Debug|Any CPU
27 | Debug|iPhone = Debug|iPhone
28 | Debug|iPhoneSimulator = Debug|iPhoneSimulator
29 | Release|Any CPU = Release|Any CPU
30 | Release|iPhone = Release|iPhone
31 | Release|iPhoneSimulator = Release|iPhoneSimulator
32 | EndGlobalSection
33 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
34 | {E4ACB8BD-57DF-471E-9BC4-E60CFB6B2EAB}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU
35 | {E4ACB8BD-57DF-471E-9BC4-E60CFB6B2EAB}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU
36 | {E4ACB8BD-57DF-471E-9BC4-E60CFB6B2EAB}.Ad-Hoc|Any CPU.Deploy.0 = Release|Any CPU
37 | {E4ACB8BD-57DF-471E-9BC4-E60CFB6B2EAB}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU
38 | {E4ACB8BD-57DF-471E-9BC4-E60CFB6B2EAB}.Ad-Hoc|iPhone.Build.0 = Release|Any CPU
39 | {E4ACB8BD-57DF-471E-9BC4-E60CFB6B2EAB}.Ad-Hoc|iPhone.Deploy.0 = Release|Any CPU
40 | {E4ACB8BD-57DF-471E-9BC4-E60CFB6B2EAB}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU
41 | {E4ACB8BD-57DF-471E-9BC4-E60CFB6B2EAB}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|Any CPU
42 | {E4ACB8BD-57DF-471E-9BC4-E60CFB6B2EAB}.Ad-Hoc|iPhoneSimulator.Deploy.0 = Release|Any CPU
43 | {E4ACB8BD-57DF-471E-9BC4-E60CFB6B2EAB}.AppStore|Any CPU.ActiveCfg = Release|Any CPU
44 | {E4ACB8BD-57DF-471E-9BC4-E60CFB6B2EAB}.AppStore|Any CPU.Build.0 = Release|Any CPU
45 | {E4ACB8BD-57DF-471E-9BC4-E60CFB6B2EAB}.AppStore|Any CPU.Deploy.0 = Release|Any CPU
46 | {E4ACB8BD-57DF-471E-9BC4-E60CFB6B2EAB}.AppStore|iPhone.ActiveCfg = Release|Any CPU
47 | {E4ACB8BD-57DF-471E-9BC4-E60CFB6B2EAB}.AppStore|iPhone.Build.0 = Release|Any CPU
48 | {E4ACB8BD-57DF-471E-9BC4-E60CFB6B2EAB}.AppStore|iPhone.Deploy.0 = Release|Any CPU
49 | {E4ACB8BD-57DF-471E-9BC4-E60CFB6B2EAB}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU
50 | {E4ACB8BD-57DF-471E-9BC4-E60CFB6B2EAB}.AppStore|iPhoneSimulator.Build.0 = Release|Any CPU
51 | {E4ACB8BD-57DF-471E-9BC4-E60CFB6B2EAB}.AppStore|iPhoneSimulator.Deploy.0 = Release|Any CPU
52 | {E4ACB8BD-57DF-471E-9BC4-E60CFB6B2EAB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
53 | {E4ACB8BD-57DF-471E-9BC4-E60CFB6B2EAB}.Debug|Any CPU.Build.0 = Debug|Any CPU
54 | {E4ACB8BD-57DF-471E-9BC4-E60CFB6B2EAB}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
55 | {E4ACB8BD-57DF-471E-9BC4-E60CFB6B2EAB}.Debug|iPhone.ActiveCfg = Debug|Any CPU
56 | {E4ACB8BD-57DF-471E-9BC4-E60CFB6B2EAB}.Debug|iPhone.Build.0 = Debug|Any CPU
57 | {E4ACB8BD-57DF-471E-9BC4-E60CFB6B2EAB}.Debug|iPhone.Deploy.0 = Debug|Any CPU
58 | {E4ACB8BD-57DF-471E-9BC4-E60CFB6B2EAB}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
59 | {E4ACB8BD-57DF-471E-9BC4-E60CFB6B2EAB}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
60 | {E4ACB8BD-57DF-471E-9BC4-E60CFB6B2EAB}.Debug|iPhoneSimulator.Deploy.0 = Debug|Any CPU
61 | {E4ACB8BD-57DF-471E-9BC4-E60CFB6B2EAB}.Release|Any CPU.ActiveCfg = Release|Any CPU
62 | {E4ACB8BD-57DF-471E-9BC4-E60CFB6B2EAB}.Release|Any CPU.Build.0 = Release|Any CPU
63 | {E4ACB8BD-57DF-471E-9BC4-E60CFB6B2EAB}.Release|Any CPU.Deploy.0 = Release|Any CPU
64 | {E4ACB8BD-57DF-471E-9BC4-E60CFB6B2EAB}.Release|iPhone.ActiveCfg = Release|Any CPU
65 | {E4ACB8BD-57DF-471E-9BC4-E60CFB6B2EAB}.Release|iPhone.Build.0 = Release|Any CPU
66 | {E4ACB8BD-57DF-471E-9BC4-E60CFB6B2EAB}.Release|iPhone.Deploy.0 = Release|Any CPU
67 | {E4ACB8BD-57DF-471E-9BC4-E60CFB6B2EAB}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
68 | {E4ACB8BD-57DF-471E-9BC4-E60CFB6B2EAB}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
69 | {E4ACB8BD-57DF-471E-9BC4-E60CFB6B2EAB}.Release|iPhoneSimulator.Deploy.0 = Release|Any CPU
70 | {68E026CB-ABA9-46AA-B080-E681BC02D9F3}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU
71 | {68E026CB-ABA9-46AA-B080-E681BC02D9F3}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU
72 | {68E026CB-ABA9-46AA-B080-E681BC02D9F3}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU
73 | {68E026CB-ABA9-46AA-B080-E681BC02D9F3}.Ad-Hoc|iPhone.Build.0 = Release|Any CPU
74 | {68E026CB-ABA9-46AA-B080-E681BC02D9F3}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU
75 | {68E026CB-ABA9-46AA-B080-E681BC02D9F3}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|Any CPU
76 | {68E026CB-ABA9-46AA-B080-E681BC02D9F3}.AppStore|Any CPU.ActiveCfg = Release|Any CPU
77 | {68E026CB-ABA9-46AA-B080-E681BC02D9F3}.AppStore|Any CPU.Build.0 = Release|Any CPU
78 | {68E026CB-ABA9-46AA-B080-E681BC02D9F3}.AppStore|iPhone.ActiveCfg = Release|Any CPU
79 | {68E026CB-ABA9-46AA-B080-E681BC02D9F3}.AppStore|iPhone.Build.0 = Release|Any CPU
80 | {68E026CB-ABA9-46AA-B080-E681BC02D9F3}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU
81 | {68E026CB-ABA9-46AA-B080-E681BC02D9F3}.AppStore|iPhoneSimulator.Build.0 = Release|Any CPU
82 | {68E026CB-ABA9-46AA-B080-E681BC02D9F3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
83 | {68E026CB-ABA9-46AA-B080-E681BC02D9F3}.Debug|Any CPU.Build.0 = Debug|Any CPU
84 | {68E026CB-ABA9-46AA-B080-E681BC02D9F3}.Debug|iPhone.ActiveCfg = Debug|Any CPU
85 | {68E026CB-ABA9-46AA-B080-E681BC02D9F3}.Debug|iPhone.Build.0 = Debug|Any CPU
86 | {68E026CB-ABA9-46AA-B080-E681BC02D9F3}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
87 | {68E026CB-ABA9-46AA-B080-E681BC02D9F3}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
88 | {68E026CB-ABA9-46AA-B080-E681BC02D9F3}.Release|Any CPU.ActiveCfg = Release|Any CPU
89 | {68E026CB-ABA9-46AA-B080-E681BC02D9F3}.Release|Any CPU.Build.0 = Release|Any CPU
90 | {68E026CB-ABA9-46AA-B080-E681BC02D9F3}.Release|iPhone.ActiveCfg = Release|Any CPU
91 | {68E026CB-ABA9-46AA-B080-E681BC02D9F3}.Release|iPhone.Build.0 = Release|Any CPU
92 | {68E026CB-ABA9-46AA-B080-E681BC02D9F3}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
93 | {68E026CB-ABA9-46AA-B080-E681BC02D9F3}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
94 | {F4869A79-252A-4E5E-A87F-FB65052E82B7}.Ad-Hoc|Any CPU.ActiveCfg = Ad-Hoc|iPhone
95 | {F4869A79-252A-4E5E-A87F-FB65052E82B7}.Ad-Hoc|iPhone.ActiveCfg = Ad-Hoc|iPhone
96 | {F4869A79-252A-4E5E-A87F-FB65052E82B7}.Ad-Hoc|iPhone.Build.0 = Ad-Hoc|iPhone
97 | {F4869A79-252A-4E5E-A87F-FB65052E82B7}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Ad-Hoc|iPhoneSimulator
98 | {F4869A79-252A-4E5E-A87F-FB65052E82B7}.Ad-Hoc|iPhoneSimulator.Build.0 = Ad-Hoc|iPhoneSimulator
99 | {F4869A79-252A-4E5E-A87F-FB65052E82B7}.AppStore|Any CPU.ActiveCfg = AppStore|iPhone
100 | {F4869A79-252A-4E5E-A87F-FB65052E82B7}.AppStore|iPhone.ActiveCfg = AppStore|iPhone
101 | {F4869A79-252A-4E5E-A87F-FB65052E82B7}.AppStore|iPhone.Build.0 = AppStore|iPhone
102 | {F4869A79-252A-4E5E-A87F-FB65052E82B7}.AppStore|iPhoneSimulator.ActiveCfg = AppStore|iPhoneSimulator
103 | {F4869A79-252A-4E5E-A87F-FB65052E82B7}.AppStore|iPhoneSimulator.Build.0 = AppStore|iPhoneSimulator
104 | {F4869A79-252A-4E5E-A87F-FB65052E82B7}.Debug|Any CPU.ActiveCfg = Debug|iPhone
105 | {F4869A79-252A-4E5E-A87F-FB65052E82B7}.Debug|iPhone.ActiveCfg = Debug|iPhone
106 | {F4869A79-252A-4E5E-A87F-FB65052E82B7}.Debug|iPhone.Build.0 = Debug|iPhone
107 | {F4869A79-252A-4E5E-A87F-FB65052E82B7}.Debug|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator
108 | {F4869A79-252A-4E5E-A87F-FB65052E82B7}.Debug|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator
109 | {F4869A79-252A-4E5E-A87F-FB65052E82B7}.Release|Any CPU.ActiveCfg = Release|iPhone
110 | {F4869A79-252A-4E5E-A87F-FB65052E82B7}.Release|iPhone.ActiveCfg = Release|iPhone
111 | {F4869A79-252A-4E5E-A87F-FB65052E82B7}.Release|iPhone.Build.0 = Release|iPhone
112 | {F4869A79-252A-4E5E-A87F-FB65052E82B7}.Release|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator
113 | {F4869A79-252A-4E5E-A87F-FB65052E82B7}.Release|iPhoneSimulator.Build.0 = Release|iPhoneSimulator
114 | EndGlobalSection
115 | GlobalSection(SolutionProperties) = preSolution
116 | HideSolutionNode = FALSE
117 | EndGlobalSection
118 | EndGlobal
119 |
--------------------------------------------------------------------------------
/StateMachine.sln.DotSettings:
--------------------------------------------------------------------------------
1 |
2 | A:\Projects\StateMachine\resharper.DotSettings
3 | ..\resharper.DotSettings
4 | True
5 | True
6 | 1
--------------------------------------------------------------------------------
/StateMachine/StateMachine.Android/Assets/AboutAssets.txt:
--------------------------------------------------------------------------------
1 | Any raw assets you want to be deployed with your application can be placed in
2 | this directory (and child directories) and given a Build Action of "AndroidAsset".
3 |
4 | These files will be deployed with you package and will be accessible using Android's
5 | AssetManager, like this:
6 |
7 | public class ReadAsset : Activity
8 | {
9 | protected override void OnCreate (Bundle bundle)
10 | {
11 | base.OnCreate (bundle);
12 |
13 | InputStream input = Assets.Open ("my_asset.txt");
14 | }
15 | }
16 |
17 | Additionally, some Android functions will automatically load asset files:
18 |
19 | Typeface tf = Typeface.CreateFromAsset (Context.Assets, "fonts/samplefont.ttf");
20 |
--------------------------------------------------------------------------------
/StateMachine/StateMachine.Android/MainActivity.cs:
--------------------------------------------------------------------------------
1 | using Android.App;
2 | using Android.Content.PM;
3 | using Android.OS;
4 | using Xamarin;
5 | using Xamarin.Forms;
6 | using Xamarin.Forms.Platform.Android;
7 | using Xamarin.Forms.PlatformConfiguration.AndroidSpecific;
8 |
9 | namespace StateMachine.Droid {
10 | [Activity(Label = "StateMachine", Icon = "@drawable/icon", Theme = "@style/MainTheme", MainLauncher = true,
11 | ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)]
12 | public class MainActivity : FormsAppCompatActivity {
13 | protected override void OnCreate(Bundle bundle) {
14 | TabLayoutResource = Resource.Layout.Tabbar;
15 | ToolbarResource = Resource.Layout.Toolbar;
16 |
17 | base.OnCreate(bundle);
18 |
19 | Forms.Init(this, bundle);
20 | FormsMaps.Init(this, bundle);
21 | LoadApplication(new App());
22 | }
23 | }
24 | }
--------------------------------------------------------------------------------
/StateMachine/StateMachine.Android/Properties/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/StateMachine/StateMachine.Android/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.InteropServices;
3 | using Android;
4 | using Android.App;
5 |
6 | // General Information about an assembly is controlled through the following
7 | // set of attributes. Change these attribute values to modify the information
8 | // associated with an assembly.
9 | [assembly: AssemblyTitle("StateMachine.Android")]
10 | [assembly: AssemblyDescription("")]
11 | [assembly: AssemblyConfiguration("")]
12 | [assembly: AssemblyCompany("")]
13 | [assembly: AssemblyProduct("StateMachine.Android")]
14 | [assembly: AssemblyCopyright("Copyright © 2014")]
15 | [assembly: AssemblyTrademark("")]
16 | [assembly: AssemblyCulture("")]
17 | [assembly: ComVisible(false)]
18 |
19 | // Version information for an assembly consists of the following four values:
20 | //
21 | // Major Version
22 | // Minor Version
23 | // Build Number
24 | // Revision
25 | //
26 | // You can specify all the values or you can default the Build and Revision Numbers
27 | // by using the '*' as shown below:
28 | // [assembly: AssemblyVersion("1.0.*")]
29 | [assembly: AssemblyVersion("1.0.0.0")]
30 | [assembly: AssemblyFileVersion("1.0.0.0")]
31 |
32 | // Add some common permissions, these can be removed if not needed
33 | [assembly: UsesPermission(Manifest.Permission.Internet)]
34 | [assembly: UsesPermission(Manifest.Permission.WriteExternalStorage)]
--------------------------------------------------------------------------------
/StateMachine/StateMachine.Android/Resources/AboutResources.txt:
--------------------------------------------------------------------------------
1 | Images, layout descriptions, binary blobs and string dictionaries can be included
2 | in your application as resource files. Various Android APIs are designed to
3 | operate on the resource IDs instead of dealing with images, strings or binary blobs
4 | directly.
5 |
6 | For example, a sample Android app that contains a user interface layout (main.xml),
7 | an internationalization string table (strings.xml) and some icons (drawable-XXX/icon.png)
8 | would keep its resources in the "Resources" directory of the application:
9 |
10 | Resources/
11 | drawable-hdpi/
12 | icon.png
13 |
14 | drawable-ldpi/
15 | icon.png
16 |
17 | drawable-mdpi/
18 | icon.png
19 |
20 | layout/
21 | main.xml
22 |
23 | values/
24 | strings.xml
25 |
26 | In order to get the build system to recognize Android resources, set the build action to
27 | "AndroidResource". The native Android APIs do not operate directly with filenames, but
28 | instead operate on resource IDs. When you compile an Android application that uses resources,
29 | the build system will package the resources for distribution and generate a class called
30 | "Resource" that contains the tokens for each one of the resources included. For example,
31 | for the above Resources layout, this is what the Resource class would expose:
32 |
33 | public class Resource {
34 | public class drawable {
35 | public const int icon = 0x123;
36 | }
37 |
38 | public class layout {
39 | public const int main = 0x456;
40 | }
41 |
42 | public class strings {
43 | public const int first_string = 0xabc;
44 | public const int second_string = 0xbcd;
45 | }
46 | }
47 |
48 | You would then use R.drawable.icon to reference the drawable/icon.png file, or Resource.layout.main
49 | to reference the layout/main.xml file, or Resource.strings.first_string to reference the first
50 | string in the dictionary file values/strings.xml.
51 |
--------------------------------------------------------------------------------
/StateMachine/StateMachine.Android/Resources/drawable-hdpi/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Binwell/XamarinStateMachine/deaf69b7cdf887d8fb3e7e8bbec2c6cf8b6940fb/StateMachine/StateMachine.Android/Resources/drawable-hdpi/icon.png
--------------------------------------------------------------------------------
/StateMachine/StateMachine.Android/Resources/drawable-xhdpi/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Binwell/XamarinStateMachine/deaf69b7cdf887d8fb3e7e8bbec2c6cf8b6940fb/StateMachine/StateMachine.Android/Resources/drawable-xhdpi/icon.png
--------------------------------------------------------------------------------
/StateMachine/StateMachine.Android/Resources/drawable-xxhdpi/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Binwell/XamarinStateMachine/deaf69b7cdf887d8fb3e7e8bbec2c6cf8b6940fb/StateMachine/StateMachine.Android/Resources/drawable-xxhdpi/icon.png
--------------------------------------------------------------------------------
/StateMachine/StateMachine.Android/Resources/drawable/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Binwell/XamarinStateMachine/deaf69b7cdf887d8fb3e7e8bbec2c6cf8b6940fb/StateMachine/StateMachine.Android/Resources/drawable/icon.png
--------------------------------------------------------------------------------
/StateMachine/StateMachine.Android/Resources/layout/Tabbar.axml:
--------------------------------------------------------------------------------
1 |
2 |
12 |
--------------------------------------------------------------------------------
/StateMachine/StateMachine.Android/Resources/layout/Toolbar.axml:
--------------------------------------------------------------------------------
1 |
9 |
10 |
--------------------------------------------------------------------------------
/StateMachine/StateMachine.Android/Resources/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
7 |
8 |
27 |
28 |
31 |
--------------------------------------------------------------------------------
/StateMachine/StateMachine.Android/StateMachine.Android.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Debug
5 | AnyCPU
6 | 8.0.30703
7 | 2.0
8 | {E4ACB8BD-57DF-471E-9BC4-E60CFB6B2EAB}
9 | {EFBA0AD7-5A72-4C68-AF49-83D382785DCF};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
10 | Library
11 | Properties
12 | StateMachine.Droid
13 | StateMachine.Android
14 | 512
15 | true
16 | Resources\Resource.Designer.cs
17 | Off
18 | Properties\AndroidManifest.xml
19 | true
20 | v7.1
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 | true
30 | full
31 | false
32 | bin\Debug\
33 | DEBUG;TRACE
34 | prompt
35 | 4
36 | True
37 | None
38 | armeabi,armeabi-v7a,x86
39 |
40 |
41 | pdbonly
42 | true
43 | bin\Release\
44 | TRACE
45 | prompt
46 | 4
47 | False
48 | SdkOnly
49 |
50 |
51 |
52 | ..\..\packages\Xamarin.Forms.2.3.4.247\lib\MonoAndroid10\FormsViewGroup.dll
53 |
54 |
55 |
56 |
57 | ..\..\packages\Newtonsoft.Json.9.0.1\lib\portable-net45+wp80+win8+wpa81\Newtonsoft.Json.dll
58 |
59 |
60 |
61 |
62 |
63 | ..\..\packages\Microsoft.Net.Http.2.2.29\lib\monoandroid\System.Net.Http.Extensions.dll
64 |
65 |
66 | ..\..\packages\Microsoft.Net.Http.2.2.29\lib\monoandroid\System.Net.Http.Primitives.dll
67 |
68 |
69 |
70 |
71 | ..\..\packages\Xamarin.Android.Support.Animated.Vector.Drawable.23.3.0\lib\MonoAndroid403\Xamarin.Android.Support.Animated.Vector.Drawable.dll
72 |
73 |
74 | ..\..\packages\Xamarin.Android.Support.Design.23.3.0\lib\MonoAndroid43\Xamarin.Android.Support.Design.dll
75 |
76 |
77 | ..\..\packages\Xamarin.Android.Support.v4.23.3.0\lib\MonoAndroid403\Xamarin.Android.Support.v4.dll
78 |
79 |
80 | ..\..\packages\Xamarin.Android.Support.v7.AppCompat.23.3.0\lib\MonoAndroid403\Xamarin.Android.Support.v7.AppCompat.dll
81 |
82 |
83 | ..\..\packages\Xamarin.Android.Support.v7.CardView.23.3.0\lib\MonoAndroid403\Xamarin.Android.Support.v7.CardView.dll
84 |
85 |
86 | ..\..\packages\Xamarin.Android.Support.v7.MediaRouter.23.3.0\lib\MonoAndroid403\Xamarin.Android.Support.v7.MediaRouter.dll
87 |
88 |
89 | ..\..\packages\Xamarin.Android.Support.v7.RecyclerView.23.3.0\lib\MonoAndroid403\Xamarin.Android.Support.v7.RecyclerView.dll
90 |
91 |
92 | ..\..\packages\Xamarin.Android.Support.Vector.Drawable.23.3.0\lib\MonoAndroid403\Xamarin.Android.Support.Vector.Drawable.dll
93 |
94 |
95 | ..\..\packages\Xamarin.Forms.2.3.4.247\lib\MonoAndroid10\Xamarin.Forms.Core.dll
96 |
97 |
98 | ..\..\packages\Xamarin.Forms.Maps.2.3.4.247\lib\MonoAndroid10\Xamarin.Forms.Maps.dll
99 |
100 |
101 | ..\..\packages\Xamarin.Forms.Maps.2.3.4.247\lib\MonoAndroid10\Xamarin.Forms.Maps.Android.dll
102 |
103 |
104 | ..\..\packages\Xamarin.Forms.2.3.4.247\lib\MonoAndroid10\Xamarin.Forms.Platform.dll
105 |
106 |
107 | ..\..\packages\Xamarin.Forms.2.3.4.247\lib\MonoAndroid10\Xamarin.Forms.Platform.Android.dll
108 |
109 |
110 | ..\..\packages\Xamarin.Forms.2.3.4.247\lib\MonoAndroid10\Xamarin.Forms.Xaml.dll
111 |
112 |
113 | ..\..\packages\Xamarin.GooglePlayServices.Base.29.0.0.1\lib\MonoAndroid41\Xamarin.GooglePlayServices.Base.dll
114 |
115 |
116 | ..\..\packages\Xamarin.GooglePlayServices.Basement.29.0.0.1\lib\MonoAndroid41\Xamarin.GooglePlayServices.Basement.dll
117 |
118 |
119 | ..\..\packages\Xamarin.GooglePlayServices.Location.29.0.0.1\lib\MonoAndroid41\Xamarin.GooglePlayServices.Location.dll
120 |
121 |
122 | ..\..\packages\Xamarin.GooglePlayServices.Maps.29.0.0.1\lib\MonoAndroid41\Xamarin.GooglePlayServices.Maps.dll
123 |
124 |
125 |
126 |
127 |
128 |
129 |
130 |
131 |
132 |
133 |
134 |
135 |
136 |
137 |
138 |
139 |
140 |
141 |
142 |
143 |
144 | Designer
145 |
146 |
147 |
148 |
149 |
150 |
151 |
152 |
153 |
154 | {1ddee920-c491-4ad2-94d3-0f5eddc66a42}
155 | StateMachine
156 |
157 |
158 |
159 |
160 |
161 |
162 | This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.
163 |
164 |
165 |
166 |
167 |
168 |
169 |
170 |
--------------------------------------------------------------------------------
/StateMachine/StateMachine.Android/app.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/StateMachine/StateMachine.Android/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/StateMachine/StateMachine.iOS/AppDelegate.cs:
--------------------------------------------------------------------------------
1 | using Foundation;
2 | using UIKit;
3 | using Xamarin;
4 | using Xamarin.Forms;
5 | using Xamarin.Forms.Platform.iOS;
6 |
7 | namespace StateMachine.iOS {
8 | [Register("AppDelegate")]
9 | public class AppDelegate : FormsApplicationDelegate {
10 | public override bool FinishedLaunching(UIApplication app, NSDictionary options) {
11 | Forms.Init();
12 | FormsMaps.Init();
13 | LoadApplication(new App());
14 |
15 | return base.FinishedLaunching(app, options);
16 | }
17 | }
18 | }
--------------------------------------------------------------------------------
/StateMachine/StateMachine.iOS/Entitlements.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/StateMachine/StateMachine.iOS/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | UIDeviceFamily
6 |
7 | 1
8 |
9 | UISupportedInterfaceOrientations
10 |
11 | UIInterfaceOrientationPortrait
12 | UIInterfaceOrientationPortraitUpsideDown
13 | UIInterfaceOrientationLandscapeRight
14 |
15 | UISupportedInterfaceOrientations~ipad
16 |
17 | UIInterfaceOrientationPortrait
18 | UIInterfaceOrientationPortraitUpsideDown
19 | UIInterfaceOrientationLandscapeLeft
20 | UIInterfaceOrientationLandscapeRight
21 |
22 | MinimumOSVersion
23 | 8.0
24 | CFBundleDisplayName
25 | StateMachine
26 | CFBundleVersion
27 | 1.0
28 | CFBundleIconFiles
29 |
30 | Icon-60@2x
31 | Icon-60@3x
32 | Icon-76
33 | Icon-76@2x
34 | Default
35 | Default@2x
36 | Default-568h@2x
37 | Default-Portrait
38 | Default-Portrait@2x
39 | Icon-Small-40
40 | Icon-Small-40@2x
41 | Icon-Small-40@3x
42 | Icon-Small
43 | Icon-Small@2x
44 | Icon-Small@3x
45 |
46 | UILaunchStoryboardName
47 | LaunchScreen
48 | CFBundleIdentifier
49 | com.binwell.StateMachine
50 | CFBundleShortVersionString
51 | 1
52 |
53 |
54 |
--------------------------------------------------------------------------------
/StateMachine/StateMachine.iOS/Main.cs:
--------------------------------------------------------------------------------
1 | using UIKit;
2 |
3 | namespace StateMachine.iOS {
4 | public class Application {
5 | // This is the main entry point of the application.
6 | static void Main(string[] args) {
7 | // if you want to use a different Application Delegate class from "AppDelegate"
8 | // you can specify it here.
9 | UIApplication.Main(args, null, "AppDelegate");
10 | }
11 | }
12 | }
--------------------------------------------------------------------------------
/StateMachine/StateMachine.iOS/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.InteropServices;
3 |
4 | // General Information about an assembly is controlled through the following
5 | // set of attributes. Change these attribute values to modify the information
6 | // associated with an assembly.
7 | [assembly: AssemblyTitle("StateMachine.iOS")]
8 | [assembly: AssemblyDescription("")]
9 | [assembly: AssemblyConfiguration("")]
10 | [assembly: AssemblyCompany("")]
11 | [assembly: AssemblyProduct("StateMachine.iOS")]
12 | [assembly: AssemblyCopyright("Copyright © 2014")]
13 | [assembly: AssemblyTrademark("")]
14 | [assembly: AssemblyCulture("")]
15 |
16 | // Setting ComVisible to false makes the types in this assembly not visible
17 | // to COM components. If you need to access a type in this assembly from
18 | // COM, set the ComVisible attribute to true on that type.
19 | [assembly: ComVisible(false)]
20 |
21 | // The following GUID is for the ID of the typelib if this project is exposed to COM
22 | [assembly: Guid("72bdc44f-c588-44f3-b6df-9aace7daafdd")]
23 |
24 | // Version information for an assembly consists of the following four values:
25 | //
26 | // Major Version
27 | // Minor Version
28 | // Build Number
29 | // Revision
30 | //
31 | // You can specify all the values or you can default the Build and Revision Numbers
32 | // by using the '*' as shown below:
33 | // [assembly: AssemblyVersion("1.0.*")]
34 | [assembly: AssemblyVersion("1.0.0.0")]
35 | [assembly: AssemblyFileVersion("1.0.0.0")]
--------------------------------------------------------------------------------
/StateMachine/StateMachine.iOS/Resources/Default-568h@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Binwell/XamarinStateMachine/deaf69b7cdf887d8fb3e7e8bbec2c6cf8b6940fb/StateMachine/StateMachine.iOS/Resources/Default-568h@2x.png
--------------------------------------------------------------------------------
/StateMachine/StateMachine.iOS/Resources/Default-Portrait.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Binwell/XamarinStateMachine/deaf69b7cdf887d8fb3e7e8bbec2c6cf8b6940fb/StateMachine/StateMachine.iOS/Resources/Default-Portrait.png
--------------------------------------------------------------------------------
/StateMachine/StateMachine.iOS/Resources/Default-Portrait@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Binwell/XamarinStateMachine/deaf69b7cdf887d8fb3e7e8bbec2c6cf8b6940fb/StateMachine/StateMachine.iOS/Resources/Default-Portrait@2x.png
--------------------------------------------------------------------------------
/StateMachine/StateMachine.iOS/Resources/Default.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Binwell/XamarinStateMachine/deaf69b7cdf887d8fb3e7e8bbec2c6cf8b6940fb/StateMachine/StateMachine.iOS/Resources/Default.png
--------------------------------------------------------------------------------
/StateMachine/StateMachine.iOS/Resources/Default@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Binwell/XamarinStateMachine/deaf69b7cdf887d8fb3e7e8bbec2c6cf8b6940fb/StateMachine/StateMachine.iOS/Resources/Default@2x.png
--------------------------------------------------------------------------------
/StateMachine/StateMachine.iOS/Resources/Icon-60@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Binwell/XamarinStateMachine/deaf69b7cdf887d8fb3e7e8bbec2c6cf8b6940fb/StateMachine/StateMachine.iOS/Resources/Icon-60@2x.png
--------------------------------------------------------------------------------
/StateMachine/StateMachine.iOS/Resources/Icon-60@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Binwell/XamarinStateMachine/deaf69b7cdf887d8fb3e7e8bbec2c6cf8b6940fb/StateMachine/StateMachine.iOS/Resources/Icon-60@3x.png
--------------------------------------------------------------------------------
/StateMachine/StateMachine.iOS/Resources/Icon-76.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Binwell/XamarinStateMachine/deaf69b7cdf887d8fb3e7e8bbec2c6cf8b6940fb/StateMachine/StateMachine.iOS/Resources/Icon-76.png
--------------------------------------------------------------------------------
/StateMachine/StateMachine.iOS/Resources/Icon-76@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Binwell/XamarinStateMachine/deaf69b7cdf887d8fb3e7e8bbec2c6cf8b6940fb/StateMachine/StateMachine.iOS/Resources/Icon-76@2x.png
--------------------------------------------------------------------------------
/StateMachine/StateMachine.iOS/Resources/Icon-Small-40.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Binwell/XamarinStateMachine/deaf69b7cdf887d8fb3e7e8bbec2c6cf8b6940fb/StateMachine/StateMachine.iOS/Resources/Icon-Small-40.png
--------------------------------------------------------------------------------
/StateMachine/StateMachine.iOS/Resources/Icon-Small-40@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Binwell/XamarinStateMachine/deaf69b7cdf887d8fb3e7e8bbec2c6cf8b6940fb/StateMachine/StateMachine.iOS/Resources/Icon-Small-40@2x.png
--------------------------------------------------------------------------------
/StateMachine/StateMachine.iOS/Resources/Icon-Small-40@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Binwell/XamarinStateMachine/deaf69b7cdf887d8fb3e7e8bbec2c6cf8b6940fb/StateMachine/StateMachine.iOS/Resources/Icon-Small-40@3x.png
--------------------------------------------------------------------------------
/StateMachine/StateMachine.iOS/Resources/Icon-Small.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Binwell/XamarinStateMachine/deaf69b7cdf887d8fb3e7e8bbec2c6cf8b6940fb/StateMachine/StateMachine.iOS/Resources/Icon-Small.png
--------------------------------------------------------------------------------
/StateMachine/StateMachine.iOS/Resources/Icon-Small@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Binwell/XamarinStateMachine/deaf69b7cdf887d8fb3e7e8bbec2c6cf8b6940fb/StateMachine/StateMachine.iOS/Resources/Icon-Small@2x.png
--------------------------------------------------------------------------------
/StateMachine/StateMachine.iOS/Resources/Icon-Small@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Binwell/XamarinStateMachine/deaf69b7cdf887d8fb3e7e8bbec2c6cf8b6940fb/StateMachine/StateMachine.iOS/Resources/Icon-Small@3x.png
--------------------------------------------------------------------------------
/StateMachine/StateMachine.iOS/Resources/LaunchScreen.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
--------------------------------------------------------------------------------
/StateMachine/StateMachine.iOS/StateMachine.iOS.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Debug
5 | iPhoneSimulator
6 | 8.0.30703
7 | 2.0
8 | {F4869A79-252A-4E5E-A87F-FB65052E82B7}
9 | {FEACFBD2-3405-455C-9665-78FE426C6842};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
10 | Exe
11 | StateMachine.iOS
12 | Resources
13 | StateMachine.iOS
14 |
15 |
16 |
17 |
18 | true
19 | full
20 | false
21 | bin\iPhoneSimulator\Debug
22 | DEBUG
23 | prompt
24 | 4
25 | false
26 | i386, x86_64
27 | None
28 | true
29 |
30 |
31 | none
32 | true
33 | bin\iPhoneSimulator\Release
34 | prompt
35 | 4
36 | None
37 | i386, x86_64
38 | false
39 |
40 |
41 | true
42 | full
43 | false
44 | bin\iPhone\Debug
45 | DEBUG
46 | prompt
47 | 4
48 | false
49 | ARMv7, ARM64
50 | iPhone Developer
51 | true
52 | Entitlements.plist
53 |
54 |
55 | none
56 | true
57 | bin\iPhone\Release
58 | prompt
59 | 4
60 | ARMv7, ARM64
61 | false
62 | iPhone Developer
63 | Entitlements.plist
64 |
65 |
66 | none
67 | True
68 | bin\iPhone\Ad-Hoc
69 | prompt
70 | 4
71 | False
72 | ARMv7, ARM64
73 | True
74 | Automatic:AdHoc
75 | iPhone Distribution
76 | Entitlements.plist
77 |
78 |
79 | none
80 | True
81 | bin\iPhone\AppStore
82 | prompt
83 | 4
84 | False
85 | ARMv7, ARM64
86 | Automatic:AppStore
87 | iPhone Distribution
88 | Entitlements.plist
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 |
110 |
111 |
112 |
113 |
114 |
115 |
116 |
117 |
118 |
119 |
120 |
121 | ..\..\packages\Newtonsoft.Json.9.0.1\lib\portable-net45+wp80+win8+wpa81\Newtonsoft.Json.dll
122 |
123 |
124 |
125 | ..\..\packages\Microsoft.Net.Http.2.2.29\lib\Xamarin.iOS10\System.Net.Http.Extensions.dll
126 |
127 |
128 | ..\..\packages\Microsoft.Net.Http.2.2.29\lib\Xamarin.iOS10\System.Net.Http.Primitives.dll
129 |
130 |
131 |
132 |
133 | ..\..\packages\Xamarin.Forms.2.3.4.247\lib\Xamarin.iOS10\Xamarin.Forms.Core.dll
134 |
135 |
136 | ..\..\packages\Xamarin.Forms.Maps.2.3.4.247\lib\Xamarin.iOS10\Xamarin.Forms.Maps.dll
137 |
138 |
139 | ..\..\packages\Xamarin.Forms.Maps.2.3.4.247\lib\Xamarin.iOS10\Xamarin.Forms.Maps.iOS.dll
140 |
141 |
142 | ..\..\packages\Xamarin.Forms.2.3.4.247\lib\Xamarin.iOS10\Xamarin.Forms.Platform.dll
143 |
144 |
145 | ..\..\packages\Xamarin.Forms.2.3.4.247\lib\Xamarin.iOS10\Xamarin.Forms.Platform.iOS.dll
146 |
147 |
148 | ..\..\packages\Xamarin.Forms.2.3.4.247\lib\Xamarin.iOS10\Xamarin.Forms.Xaml.dll
149 |
150 |
151 |
152 |
153 |
154 | {1ddee920-c491-4ad2-94d3-0f5eddc66a42}
155 | StateMachine
156 |
157 |
158 |
159 |
160 |
161 |
162 | This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.
163 |
164 |
165 |
166 |
167 |
168 |
--------------------------------------------------------------------------------
/StateMachine/StateMachine.iOS/app.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/StateMachine/StateMachine.iOS/iTunesArtwork:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Binwell/XamarinStateMachine/deaf69b7cdf887d8fb3e7e8bbec2c6cf8b6940fb/StateMachine/StateMachine.iOS/iTunesArtwork
--------------------------------------------------------------------------------
/StateMachine/StateMachine.iOS/iTunesArtwork@2x:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Binwell/XamarinStateMachine/deaf69b7cdf887d8fb3e7e8bbec2c6cf8b6940fb/StateMachine/StateMachine.iOS/iTunesArtwork@2x
--------------------------------------------------------------------------------
/StateMachine/StateMachine.iOS/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/StateMachine/StateMachine/App.cs:
--------------------------------------------------------------------------------
1 | using Xamarin.Forms;
2 |
3 | namespace StateMachine {
4 | public class App : Application {
5 | public App() {
6 | MainPage = new MainPage();
7 | }
8 | }
9 | }
--------------------------------------------------------------------------------
/StateMachine/StateMachine/MainPage.xaml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
8 |
9 |
10 |
11 |
12 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
25 |
26 |
27 |
28 |
29 |
31 |
32 |
33 |
34 |
35 |
36 |
--------------------------------------------------------------------------------
/StateMachine/StateMachine/MainPage.xaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Threading.Tasks;
3 | using Xamarin.Forms;
4 |
5 | namespace StateMachine {
6 | public partial class MainPage : ContentPage {
7 | enum States {
8 | Main,
9 | FindAddress,
10 | ShowRoute,
11 | Drive
12 | }
13 |
14 | readonly Storyboard _storyboard = new Storyboard();
15 |
16 | public MainPage() {
17 | InitializeComponent();
18 |
19 | _storyboard.Add(States.Main, new[] {
20 | new ViewTransition(MainView, AnimationType.Opacity, 1, 300), // Active and visible
21 | new ViewTransition(EnterAddressButton, AnimationType.Scale, 0.9, 0),
22 | new ViewTransition(EnterAddressButton, AnimationType.Scale, 1, 300, Easing.BounceOut, 200),
23 | new ViewTransition(FindAddressView, AnimationType.Opacity, 0),
24 | new ViewTransition(ShowRouteView, AnimationType.TranslationY, 200),
25 | new ViewTransition(ShowRouteView, AnimationType.Opacity, 0),
26 | new ViewTransition(DriveView, AnimationType.TranslationY, -80),
27 | new ViewTransition(DriveView, AnimationType.Opacity, 0),
28 | });
29 | _storyboard.Add(States.FindAddress, new[] {
30 | new ViewTransition(MainView, AnimationType.Opacity, 0, 100),
31 | new ViewTransition(FindAddressView, AnimationType.Opacity, 1, delay: 100), // Active and visible
32 | new ViewTransition(ShowRouteView, AnimationType.TranslationY, 200),
33 | new ViewTransition(ShowRouteView, AnimationType.Opacity, 0, 200),
34 | new ViewTransition(ShowRouteGoButton, AnimationType.Scale, 0.8, 0),
35 | new ViewTransition(ShowRouteGoButton, AnimationType.Scale, 1, 300, Easing.BounceOut, 300),
36 | new ViewTransition(ShowRouteCancelButton, AnimationType.Scale, 0.8, 0),
37 | new ViewTransition(ShowRouteCancelButton, AnimationType.Scale, 1, 300, Easing.BounceOut, 500)
38 | });
39 | _storyboard.Add(States.ShowRoute, new[] {
40 | new ViewTransition(FindAddressView, AnimationType.Opacity, 0),
41 | new ViewTransition(ShowRouteView, AnimationType.TranslationY, 0, 300, delay: 250), // Active and visible
42 | new ViewTransition(ShowRouteView, AnimationType.Opacity, 1, 0), // Active and visible
43 | new ViewTransition(DriveView, AnimationType.TranslationY, -80),
44 | new ViewTransition(DriveView, AnimationType.Opacity, 0)
45 | });
46 | _storyboard.Add(States.Drive, new[] {
47 | new ViewTransition(ShowRouteView, AnimationType.TranslationY, 200),
48 | new ViewTransition(ShowRouteView, AnimationType.Opacity, 0, 0, delay: 250),
49 | new ViewTransition(DriveView, AnimationType.TranslationY, 0, 300, delay: 250), // Active and visible
50 | new ViewTransition(DriveView, AnimationType.Opacity, 1, 0) // Active and visible
51 | });
52 |
53 | _storyboard.Go(States.Main, false);
54 | }
55 |
56 | async void GotoFindAddressClicked(object sender, EventArgs e) {
57 | _storyboard.Go(States.FindAddress);
58 | await Task.Delay(500);
59 | FinalAddressEntry.Focus();
60 | }
61 |
62 | void GotoShowRouteClicked(object sender, EventArgs e) {
63 | FinalAddressEntry.Unfocus();
64 | _storyboard.Go(States.ShowRoute);
65 | }
66 |
67 | void GotoDriveClicked(object sender, EventArgs e) {
68 | _storyboard.Go(States.Drive);
69 | }
70 |
71 | void GotoMainClicked(object sender, EventArgs e) {
72 | FinalAddressEntry.Unfocus();
73 | _storyboard.Go(States.Main);
74 | }
75 | }
76 | }
--------------------------------------------------------------------------------
/StateMachine/StateMachine/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Resources;
3 |
4 | // General Information about an assembly is controlled through the following
5 | // set of attributes. Change these attribute values to modify the information
6 | // associated with an assembly.
7 | [assembly: AssemblyTitle("StateMachine")]
8 | [assembly: AssemblyDescription("")]
9 | [assembly: AssemblyConfiguration("")]
10 | [assembly: AssemblyCompany("")]
11 | [assembly: AssemblyProduct("StateMachine")]
12 | [assembly: AssemblyCopyright("Copyright © 2014")]
13 | [assembly: AssemblyTrademark("")]
14 | [assembly: AssemblyCulture("")]
15 | [assembly: NeutralResourcesLanguage("en")]
16 |
17 | // Version information for an assembly consists of the following four values:
18 | //
19 | // Major Version
20 | // Minor Version
21 | // Build Number
22 | // Revision
23 | //
24 | // You can specify all the values or you can default the Build and Revision Numbers
25 | // by using the '*' as shown below:
26 | // [assembly: AssemblyVersion("1.0.*")]
27 | [assembly: AssemblyVersion("1.0.0.0")]
28 | [assembly: AssemblyFileVersion("1.0.0.0")]
--------------------------------------------------------------------------------
/StateMachine/StateMachine/StateMachine.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | 11.0
6 | Debug
7 | AnyCPU
8 | {68E026CB-ABA9-46AA-B080-E681BC02D9F3}
9 | Library
10 | Properties
11 | StateMachine
12 | StateMachine
13 | 512
14 | v4.5
15 | Profile259
16 | {786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
17 |
18 |
19 |
20 |
21 | true
22 | full
23 | false
24 | bin\Debug\
25 | DEBUG;TRACE
26 | prompt
27 | 4
28 |
29 |
30 | pdbonly
31 | true
32 | bin\Release\
33 | TRACE
34 | prompt
35 | 4
36 |
37 |
38 |
39 |
40 | MainPage.xaml
41 |
42 |
43 |
44 |
45 |
46 |
47 | Designer
48 | MSBuild:UpdateDesignTimeXaml
49 |
50 |
51 |
52 |
53 | ..\..\packages\Newtonsoft.Json.9.0.1\lib\portable-net45+wp80+win8+wpa81\Newtonsoft.Json.dll
54 |
55 |
56 | ..\..\packages\Microsoft.Net.Http.2.2.29\lib\portable-net40+sl4+win8+wp71+wpa81\System.Net.Http.dll
57 |
58 |
59 | ..\..\packages\Microsoft.Net.Http.2.2.29\lib\portable-net40+sl4+win8+wp71+wpa81\System.Net.Http.Extensions.dll
60 |
61 |
62 | ..\..\packages\Microsoft.Net.Http.2.2.29\lib\portable-net40+sl4+win8+wp71+wpa81\System.Net.Http.Primitives.dll
63 |
64 |
65 | ..\..\packages\Xamarin.Forms.2.3.4.247\lib\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+Xamarin.iOS10+xamarinmac20\Xamarin.Forms.Core.dll
66 |
67 |
68 | ..\..\packages\Xamarin.Forms.Maps.2.3.4.247\lib\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+Xamarin.iOS10\Xamarin.Forms.Maps.dll
69 |
70 |
71 | ..\..\packages\Xamarin.Forms.2.3.4.247\lib\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+Xamarin.iOS10+xamarinmac20\Xamarin.Forms.Platform.dll
72 |
73 |
74 | ..\..\packages\Xamarin.Forms.2.3.4.247\lib\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+Xamarin.iOS10+xamarinmac20\Xamarin.Forms.Xaml.dll
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 | This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.
85 |
86 |
87 |
88 |
89 |
90 |
--------------------------------------------------------------------------------
/StateMachine/StateMachine/Storyboard.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Threading.Tasks;
5 | using Xamarin.Forms;
6 |
7 | namespace StateMachine {
8 | public enum AnimationType {
9 | Scale,
10 | Opacity,
11 | TranslationX,
12 | TranslationY,
13 | Rotation
14 | }
15 |
16 | public class Storyboard {
17 | readonly Dictionary _stateTransitions = new Dictionary();
18 |
19 | public void Add(object state, ViewTransition[] viewTransitions) {
20 | var stateStr = state?.ToString().ToUpperInvariant();
21 |
22 | if( string.IsNullOrEmpty(stateStr) || viewTransitions == null )
23 | throw new NullReferenceException("Value of 'state', 'viewTransitions' cannot be null");
24 |
25 | if( _stateTransitions.ContainsKey(stateStr) )
26 | throw new ArgumentException($"State {state} already added");
27 |
28 | _stateTransitions.Add(stateStr, viewTransitions);
29 | }
30 |
31 | public void Go(object newState, bool withAnimation = true) {
32 | var newStateStr = newState?.ToString().ToUpperInvariant();
33 |
34 | if( string.IsNullOrEmpty(newStateStr) )
35 | throw new NullReferenceException("Value of newState cannot be null");
36 |
37 | if( !_stateTransitions.ContainsKey(newStateStr))
38 | throw new KeyNotFoundException($"There is no state {newState}");
39 |
40 | // Get all ViewTransitions
41 | var viewTransitions = _stateTransitions[newStateStr];
42 |
43 | // Get transition tasks
44 | var tasks = viewTransitions.Select(viewTransition => viewTransition.GetTransition(withAnimation));
45 |
46 | // Run all transition tasks
47 | Task.WhenAll(tasks);
48 | }
49 | }
50 |
51 | public class ViewTransition {
52 | readonly AnimationType _animationType;
53 | readonly int _delay;
54 | readonly uint _length;
55 | readonly Easing _easing;
56 | readonly double _endValue;
57 | readonly WeakReference _targetElementReference;
58 |
59 | public ViewTransition(VisualElement targetElement, AnimationType animationType, double endValue, uint length = 250, Easing easing = null, int delay = 0) {
60 | _targetElementReference = new WeakReference(targetElement);
61 | _animationType = animationType;
62 | _length = length;
63 | _endValue = endValue;
64 | _delay = delay;
65 | _easing = easing;
66 | }
67 |
68 | public async Task GetTransition(bool withAnimation) {
69 | VisualElement targetElement;
70 | if( !_targetElementReference.TryGetTarget(out targetElement) )
71 | throw new ObjectDisposedException("Target VisualElement was disposed");
72 |
73 | if ( _delay > 0 )
74 | await Task.Delay(_delay);
75 |
76 | withAnimation &= _length > 0;
77 |
78 | switch ( _animationType ) {
79 | case AnimationType.Scale:
80 | if( withAnimation )
81 | await targetElement.ScaleTo(_endValue, _length, _easing);
82 | else
83 | targetElement.Scale = _endValue;
84 | break;
85 |
86 | case AnimationType.Opacity:
87 | if( withAnimation ) {
88 | if( !targetElement.IsVisible && _endValue <= 0 )
89 | break;
90 |
91 | if( targetElement.IsVisible && _endValue < targetElement.Opacity ) {
92 | await targetElement.FadeTo(_endValue, _length, _easing);
93 | targetElement.IsVisible = _endValue > 0;
94 | }
95 | else if( targetElement.IsVisible && _endValue > targetElement.Opacity ) {
96 | await targetElement.FadeTo(_endValue, _length, _easing);
97 | }
98 | else if( !targetElement.IsVisible && _endValue > targetElement.Opacity ) {
99 | targetElement.Opacity = 0;
100 | targetElement.IsVisible = true;
101 | await targetElement.FadeTo(_endValue, _length, _easing);
102 | }
103 | }
104 | else {
105 | targetElement.Opacity = _endValue;
106 | targetElement.IsVisible = _endValue > 0;
107 | }
108 | break;
109 |
110 | case AnimationType.TranslationX:
111 | if( withAnimation )
112 | await targetElement.TranslateTo(_endValue, targetElement.TranslationY, _length, _easing);
113 | else
114 | targetElement.TranslationX = _endValue;
115 | break;
116 |
117 | case AnimationType.TranslationY:
118 | if( withAnimation )
119 | await targetElement.TranslateTo(targetElement.TranslationX, _endValue, _length, _easing);
120 | else
121 | targetElement.TranslationY = _endValue;
122 | break;
123 |
124 | case AnimationType.Rotation:
125 | if( withAnimation )
126 | await targetElement.RotateTo(_endValue, _length, _easing);
127 | else
128 | targetElement.Rotation = _endValue;
129 | break;
130 |
131 | default:
132 | throw new ArgumentOutOfRangeException();
133 | }
134 | }
135 | }
136 | }
--------------------------------------------------------------------------------
/StateMachine/StateMachine/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/resharper.DotSettings:
--------------------------------------------------------------------------------
1 |
2 | ERROR
3 | ERROR
4 | True
5 | True
6 | True
7 | True
8 | True
9 | True
10 | True
11 | True
12 | True
13 | True
14 | True
15 | True
16 | True
17 | True
18 | True
19 | True
20 | True
21 | True
22 | True
23 | True
24 | False
25 | True
26 | C:\Users\slava\AppData\Local\JetBrains\Transient\ReSharperPlatformVs15\v08_e32b15b7\SolutionCaches
27 | True
28 | True
29 | True
--------------------------------------------------------------------------------