├── .gitignore
├── DialogsExamples
├── DialogsExamples.Android
│ ├── Assets
│ │ └── AboutAssets.txt
│ ├── DialogsExamples.Android.csproj
│ ├── MainActivity.cs
│ ├── Properties
│ │ ├── AndroidManifest.xml
│ │ └── AssemblyInfo.cs
│ └── Resources
│ │ ├── AboutResources.txt
│ │ ├── Resource.designer.cs
│ │ ├── drawable-hdpi
│ │ ├── monkeyfest.png
│ │ └── xds.png
│ │ ├── drawable-ldpi
│ │ ├── monkeyfest.png
│ │ └── xds.png
│ │ ├── drawable-mdpi
│ │ ├── monkeyfest.png
│ │ └── xds.png
│ │ ├── drawable-xhdpi
│ │ ├── monkeyfest.png
│ │ └── xds.png
│ │ ├── drawable-xxhdpi
│ │ ├── monkeyfest.png
│ │ └── xds.png
│ │ ├── drawable-xxxhdpi
│ │ ├── monkeyfest.png
│ │ └── xds.png
│ │ ├── layout
│ │ ├── Tabbar.xml
│ │ └── Toolbar.xml
│ │ ├── mipmap-anydpi-v26
│ │ ├── icon.xml
│ │ └── icon_round.xml
│ │ ├── mipmap-hdpi
│ │ ├── icon.png
│ │ └── launcher_foreground.png
│ │ ├── mipmap-mdpi
│ │ ├── icon.png
│ │ └── launcher_foreground.png
│ │ ├── mipmap-xhdpi
│ │ ├── icon.png
│ │ └── launcher_foreground.png
│ │ ├── mipmap-xxhdpi
│ │ ├── icon.png
│ │ └── launcher_foreground.png
│ │ ├── mipmap-xxxhdpi
│ │ ├── icon.png
│ │ └── launcher_foreground.png
│ │ └── values
│ │ ├── colors.xml
│ │ └── styles.xml
├── DialogsExamples.iOS
│ ├── AppDelegate.cs
│ ├── Assets.xcassets
│ │ └── AppIcon.appiconset
│ │ │ ├── Contents.json
│ │ │ ├── Icon1024.png
│ │ │ ├── Icon120.png
│ │ │ ├── Icon152.png
│ │ │ ├── Icon167.png
│ │ │ ├── Icon180.png
│ │ │ ├── Icon20.png
│ │ │ ├── Icon29.png
│ │ │ ├── Icon40.png
│ │ │ ├── Icon58.png
│ │ │ ├── Icon60.png
│ │ │ ├── Icon76.png
│ │ │ ├── Icon80.png
│ │ │ └── Icon87.png
│ ├── DialogsExamples.iOS.csproj
│ ├── Entitlements.plist
│ ├── FodyWeavers.xml
│ ├── FodyWeavers.xsd
│ ├── Info.plist
│ ├── Main.cs
│ ├── Properties
│ │ └── AssemblyInfo.cs
│ └── Resources
│ │ ├── Default-568h@2x.png
│ │ ├── Default-Portrait.png
│ │ ├── Default-Portrait@2x.png
│ │ ├── Default.png
│ │ ├── Default@2x.png
│ │ ├── LaunchScreen.storyboard
│ │ ├── monkeyfest.png
│ │ ├── monkeyfest@2x.png
│ │ ├── monkeyfest@3x.png
│ │ ├── xds.png
│ │ ├── xds@2x.png
│ │ └── xds@3x.png
├── DialogsExamples.sln
└── DialogsExamples
│ ├── App.xaml
│ ├── App.xaml.cs
│ ├── AssemblyInfo.cs
│ ├── Controls
│ ├── HorizontalDivider.xaml
│ └── HorizontalDivider.xaml.cs
│ ├── CustomPopup.xaml
│ ├── CustomPopup.xaml.cs
│ ├── DialogsExamples.csproj
│ ├── FodyWeavers.xml
│ ├── FodyWeavers.xsd
│ ├── MainPage.xaml
│ ├── MainPage.xaml.cs
│ └── MainViewModel.cs
├── LICENSE
├── README.md
└── img
├── action-sheet.png
├── alert.png
├── banner-image.png
├── confirm.png
├── custom-popup.png
├── progress.png
├── prompt.png
└── toast.png
/.gitignore:
--------------------------------------------------------------------------------
1 | ## Ignore Visual Studio temporary files, build results, and
2 | ## files generated by popular Visual Studio add-ons.
3 | ##
4 | ## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
5 |
6 | # User-specific files
7 | *.rsuser
8 | *.suo
9 | *.user
10 | *.userosscache
11 | *.sln.docstates
12 |
13 | # User-specific files (MonoDevelop/Xamarin Studio)
14 | *.userprefs
15 |
16 | # Mono auto generated files
17 | mono_crash.*
18 |
19 | # Build results
20 | [Dd]ebug/
21 | [Dd]ebugPublic/
22 | [Rr]elease/
23 | [Rr]eleases/
24 | x64/
25 | x86/
26 | [Aa][Rr][Mm]/
27 | [Aa][Rr][Mm]64/
28 | bld/
29 | [Bb]in/
30 | [Oo]bj/
31 | [Ll]og/
32 | [Ll]ogs/
33 |
34 | # Visual Studio 2015/2017 cache/options directory
35 | .vs/
36 | # Uncomment if you have tasks that create the project's static files in wwwroot
37 | #wwwroot/
38 |
39 | # Visual Studio 2017 auto generated files
40 | Generated\ Files/
41 |
42 | # MSTest test Results
43 | [Tt]est[Rr]esult*/
44 | [Bb]uild[Ll]og.*
45 |
46 | # NUnit
47 | *.VisualState.xml
48 | TestResult.xml
49 | nunit-*.xml
50 |
51 | # Build Results of an ATL Project
52 | [Dd]ebugPS/
53 | [Rr]eleasePS/
54 | dlldata.c
55 |
56 | # Benchmark Results
57 | BenchmarkDotNet.Artifacts/
58 |
59 | # .NET Core
60 | project.lock.json
61 | project.fragment.lock.json
62 | artifacts/
63 |
64 | # StyleCop
65 | StyleCopReport.xml
66 |
67 | # Files built by Visual Studio
68 | *_i.c
69 | *_p.c
70 | *_h.h
71 | *.ilk
72 | *.meta
73 | *.obj
74 | *.iobj
75 | *.pch
76 | *.pdb
77 | *.ipdb
78 | *.pgc
79 | *.pgd
80 | *.rsp
81 | *.sbr
82 | *.tlb
83 | *.tli
84 | *.tlh
85 | *.tmp
86 | *.tmp_proj
87 | *_wpftmp.csproj
88 | *.log
89 | *.vspscc
90 | *.vssscc
91 | .builds
92 | *.pidb
93 | *.svclog
94 | *.scc
95 |
96 | # Chutzpah Test files
97 | _Chutzpah*
98 |
99 | # Visual C++ cache files
100 | ipch/
101 | *.aps
102 | *.ncb
103 | *.opendb
104 | *.opensdf
105 | *.sdf
106 | *.cachefile
107 | *.VC.db
108 | *.VC.VC.opendb
109 |
110 | # Visual Studio profiler
111 | *.psess
112 | *.vsp
113 | *.vspx
114 | *.sap
115 |
116 | # Visual Studio Trace Files
117 | *.e2e
118 |
119 | # TFS 2012 Local Workspace
120 | $tf/
121 |
122 | # Guidance Automation Toolkit
123 | *.gpState
124 |
125 | # ReSharper is a .NET coding add-in
126 | _ReSharper*/
127 | *.[Rr]e[Ss]harper
128 | *.DotSettings.user
129 |
130 | # TeamCity is a build add-in
131 | _TeamCity*
132 |
133 | # DotCover is a Code Coverage Tool
134 | *.dotCover
135 |
136 | # AxoCover is a Code Coverage Tool
137 | .axoCover/*
138 | !.axoCover/settings.json
139 |
140 | # Visual Studio code coverage results
141 | *.coverage
142 | *.coveragexml
143 |
144 | # NCrunch
145 | _NCrunch_*
146 | .*crunch*.local.xml
147 | nCrunchTemp_*
148 |
149 | # MightyMoose
150 | *.mm.*
151 | AutoTest.Net/
152 |
153 | # Web workbench (sass)
154 | .sass-cache/
155 |
156 | # Installshield output folder
157 | [Ee]xpress/
158 |
159 | # DocProject is a documentation generator add-in
160 | DocProject/buildhelp/
161 | DocProject/Help/*.HxT
162 | DocProject/Help/*.HxC
163 | DocProject/Help/*.hhc
164 | DocProject/Help/*.hhk
165 | DocProject/Help/*.hhp
166 | DocProject/Help/Html2
167 | DocProject/Help/html
168 |
169 | # Click-Once directory
170 | publish/
171 |
172 | # Publish Web Output
173 | *.[Pp]ublish.xml
174 | *.azurePubxml
175 | # Note: Comment the next line if you want to checkin your web deploy settings,
176 | # but database connection strings (with potential passwords) will be unencrypted
177 | *.pubxml
178 | *.publishproj
179 |
180 | # Microsoft Azure Web App publish settings. Comment the next line if you want to
181 | # checkin your Azure Web App publish settings, but sensitive information contained
182 | # in these scripts will be unencrypted
183 | PublishScripts/
184 |
185 | # NuGet Packages
186 | *.nupkg
187 | # NuGet Symbol Packages
188 | *.snupkg
189 | # The packages folder can be ignored because of Package Restore
190 | **/[Pp]ackages/*
191 | # except build/, which is used as an MSBuild target.
192 | !**/[Pp]ackages/build/
193 | # Uncomment if necessary however generally it will be regenerated when needed
194 | #!**/[Pp]ackages/repositories.config
195 | # NuGet v3's project.json files produces more ignorable files
196 | *.nuget.props
197 | *.nuget.targets
198 |
199 | # Microsoft Azure Build Output
200 | csx/
201 | *.build.csdef
202 |
203 | # Microsoft Azure Emulator
204 | ecf/
205 | rcf/
206 |
207 | # Windows Store app package directories and files
208 | AppPackages/
209 | BundleArtifacts/
210 | Package.StoreAssociation.xml
211 | _pkginfo.txt
212 | *.appx
213 | *.appxbundle
214 | *.appxupload
215 |
216 | # Visual Studio cache files
217 | # files ending in .cache can be ignored
218 | *.[Cc]ache
219 | # but keep track of directories ending in .cache
220 | !?*.[Cc]ache/
221 |
222 | # Others
223 | ClientBin/
224 | ~$*
225 | *~
226 | *.dbmdl
227 | *.dbproj.schemaview
228 | *.jfm
229 | *.pfx
230 | *.publishsettings
231 | orleans.codegen.cs
232 |
233 | # Including strong name files can present a security risk
234 | # (https://github.com/github/gitignore/pull/2483#issue-259490424)
235 | #*.snk
236 |
237 | # Since there are multiple workflows, uncomment next line to ignore bower_components
238 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
239 | #bower_components/
240 |
241 | # RIA/Silverlight projects
242 | Generated_Code/
243 |
244 | # Backup & report files from converting an old project file
245 | # to a newer Visual Studio version. Backup files are not needed,
246 | # because we have git ;-)
247 | _UpgradeReport_Files/
248 | Backup*/
249 | UpgradeLog*.XML
250 | UpgradeLog*.htm
251 | ServiceFabricBackup/
252 | *.rptproj.bak
253 |
254 | # SQL Server files
255 | *.mdf
256 | *.ldf
257 | *.ndf
258 |
259 | # Business Intelligence projects
260 | *.rdl.data
261 | *.bim.layout
262 | *.bim_*.settings
263 | *.rptproj.rsuser
264 | *- [Bb]ackup.rdl
265 | *- [Bb]ackup ([0-9]).rdl
266 | *- [Bb]ackup ([0-9][0-9]).rdl
267 |
268 | # Microsoft Fakes
269 | FakesAssemblies/
270 |
271 | # GhostDoc plugin setting file
272 | *.GhostDoc.xml
273 |
274 | # Node.js Tools for Visual Studio
275 | .ntvs_analysis.dat
276 | node_modules/
277 |
278 | # Visual Studio 6 build log
279 | *.plg
280 |
281 | # Visual Studio 6 workspace options file
282 | *.opt
283 |
284 | # Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
285 | *.vbw
286 |
287 | # Visual Studio LightSwitch build output
288 | **/*.HTMLClient/GeneratedArtifacts
289 | **/*.DesktopClient/GeneratedArtifacts
290 | **/*.DesktopClient/ModelManifest.xml
291 | **/*.Server/GeneratedArtifacts
292 | **/*.Server/ModelManifest.xml
293 | _Pvt_Extensions
294 |
295 | # Paket dependency manager
296 | .paket/paket.exe
297 | paket-files/
298 |
299 | # FAKE - F# Make
300 | .fake/
301 |
302 | # CodeRush personal settings
303 | .cr/personal
304 |
305 | # Python Tools for Visual Studio (PTVS)
306 | __pycache__/
307 | *.pyc
308 |
309 | # Cake - Uncomment if you are using it
310 | # tools/**
311 | # !tools/packages.config
312 |
313 | # Tabs Studio
314 | *.tss
315 |
316 | # Telerik's JustMock configuration file
317 | *.jmconfig
318 |
319 | # BizTalk build output
320 | *.btp.cs
321 | *.btm.cs
322 | *.odx.cs
323 | *.xsd.cs
324 |
325 | # OpenCover UI analysis results
326 | OpenCover/
327 |
328 | # Azure Stream Analytics local run output
329 | ASALocalRun/
330 |
331 | # MSBuild Binary and Structured Log
332 | *.binlog
333 |
334 | # NVidia Nsight GPU debugger configuration file
335 | *.nvuser
336 |
337 | # MFractors (Xamarin productivity tool) working folder
338 | .mfractor/
339 |
340 | # Local History for Visual Studio
341 | .localhistory/
342 |
343 | # BeatPulse healthcheck temp database
344 | healthchecksdb
345 |
346 | # Backup folder for Package Reference Convert tool in Visual Studio 2017
347 | MigrationBackup/
348 |
349 | # Ionide (cross platform F# VS Code tools) working folder
350 | .ionide/
351 |
--------------------------------------------------------------------------------
/DialogsExamples/DialogsExamples.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 your 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 |
--------------------------------------------------------------------------------
/DialogsExamples/DialogsExamples.Android/DialogsExamples.Android.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Debug
5 | AnyCPU
6 | {654CF5DE-8FFC-4503-A566-317A611B6F37}
7 | {EFBA0AD7-5A72-4C68-AF49-83D382785DCF};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
8 | {c9e5eea5-ca05-42a1-839b-61506e0a37df}
9 | Library
10 | DialogsExamples.Droid
11 | DialogsExamples.Android
12 | True
13 | Resources\Resource.designer.cs
14 | Resource
15 | Properties\AndroidManifest.xml
16 | Resources
17 | Assets
18 | v9.0
19 | true
20 | true
21 | Xamarin.Android.Net.AndroidClientHandler
22 |
23 |
24 |
25 |
26 | true
27 | portable
28 | false
29 | bin\Debug
30 | DEBUG;
31 | prompt
32 | 4
33 | None
34 |
35 |
36 | true
37 | portable
38 | true
39 | bin\Release
40 | prompt
41 | 4
42 | true
43 | false
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 | 7.0.35
59 |
60 |
61 | 1.2.0.223
62 |
63 |
64 | 6.1.0
65 | runtime; build; native; contentfiles; analyzers; buildtransitive
66 | all
67 |
68 |
69 | 3.2.6
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
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 |
122 |
123 |
124 |
125 |
126 |
127 |
128 |
129 |
130 |
131 |
132 |
133 |
134 |
135 |
136 |
137 |
138 |
139 |
140 |
141 |
142 |
143 |
144 |
145 |
146 |
147 |
148 |
149 |
150 |
151 |
152 |
153 | {278474D7-1DFE-48C1-8B6B-186D7107828F}
154 | DialogsExamples
155 |
156 |
157 |
158 |
159 |
--------------------------------------------------------------------------------
/DialogsExamples/DialogsExamples.Android/MainActivity.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | using Android.App;
4 | using Android.Content.PM;
5 | using Android.Runtime;
6 | using Android.Views;
7 | using Android.Widget;
8 | using Android.OS;
9 | using Acr.UserDialogs;
10 |
11 | namespace DialogsExamples.Droid
12 | {
13 | [Activity(Label = "DialogsExamples", Icon = "@mipmap/icon", Theme = "@style/MainTheme", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)]
14 | public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
15 | {
16 | protected override void OnCreate(Bundle savedInstanceState)
17 | {
18 | TabLayoutResource = Resource.Layout.Tabbar;
19 | ToolbarResource = Resource.Layout.Toolbar;
20 |
21 | base.OnCreate(savedInstanceState);
22 |
23 | Acr.UserDialogs.UserDialogs.Init(this);
24 | Rg.Plugins.Popup.Popup.Init(this, savedInstanceState);
25 |
26 | Xamarin.Essentials.Platform.Init(this, savedInstanceState);
27 | global::Xamarin.Forms.Forms.Init(this, savedInstanceState);
28 |
29 | LoadApplication(new App());
30 | }
31 | public override void OnRequestPermissionsResult(int requestCode, string[] permissions, [GeneratedEnum] Android.Content.PM.Permission[] grantResults)
32 | {
33 | Xamarin.Essentials.Platform.OnRequestPermissionsResult(requestCode, permissions, grantResults);
34 |
35 | base.OnRequestPermissionsResult(requestCode, permissions, grantResults);
36 | }
37 | }
38 | }
--------------------------------------------------------------------------------
/DialogsExamples/DialogsExamples.Android/Properties/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/DialogsExamples/DialogsExamples.Android/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
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("DialogsExamples.Android")]
10 | [assembly: AssemblyDescription("")]
11 | [assembly: AssemblyConfiguration("")]
12 | [assembly: AssemblyCompany("")]
13 | [assembly: AssemblyProduct("DialogsExamples.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(Android.Manifest.Permission.Internet)]
34 | [assembly: UsesPermission(Android.Manifest.Permission.WriteExternalStorage)]
35 |
--------------------------------------------------------------------------------
/DialogsExamples/DialogsExamples.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 |
--------------------------------------------------------------------------------
/DialogsExamples/DialogsExamples.Android/Resources/drawable-hdpi/monkeyfest.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mfractor/xamarin-forms.dialogs/8d3e2350b451a39325f4df0c813f0b45ab4b0a33/DialogsExamples/DialogsExamples.Android/Resources/drawable-hdpi/monkeyfest.png
--------------------------------------------------------------------------------
/DialogsExamples/DialogsExamples.Android/Resources/drawable-hdpi/xds.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mfractor/xamarin-forms.dialogs/8d3e2350b451a39325f4df0c813f0b45ab4b0a33/DialogsExamples/DialogsExamples.Android/Resources/drawable-hdpi/xds.png
--------------------------------------------------------------------------------
/DialogsExamples/DialogsExamples.Android/Resources/drawable-ldpi/monkeyfest.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mfractor/xamarin-forms.dialogs/8d3e2350b451a39325f4df0c813f0b45ab4b0a33/DialogsExamples/DialogsExamples.Android/Resources/drawable-ldpi/monkeyfest.png
--------------------------------------------------------------------------------
/DialogsExamples/DialogsExamples.Android/Resources/drawable-ldpi/xds.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mfractor/xamarin-forms.dialogs/8d3e2350b451a39325f4df0c813f0b45ab4b0a33/DialogsExamples/DialogsExamples.Android/Resources/drawable-ldpi/xds.png
--------------------------------------------------------------------------------
/DialogsExamples/DialogsExamples.Android/Resources/drawable-mdpi/monkeyfest.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mfractor/xamarin-forms.dialogs/8d3e2350b451a39325f4df0c813f0b45ab4b0a33/DialogsExamples/DialogsExamples.Android/Resources/drawable-mdpi/monkeyfest.png
--------------------------------------------------------------------------------
/DialogsExamples/DialogsExamples.Android/Resources/drawable-mdpi/xds.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mfractor/xamarin-forms.dialogs/8d3e2350b451a39325f4df0c813f0b45ab4b0a33/DialogsExamples/DialogsExamples.Android/Resources/drawable-mdpi/xds.png
--------------------------------------------------------------------------------
/DialogsExamples/DialogsExamples.Android/Resources/drawable-xhdpi/monkeyfest.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mfractor/xamarin-forms.dialogs/8d3e2350b451a39325f4df0c813f0b45ab4b0a33/DialogsExamples/DialogsExamples.Android/Resources/drawable-xhdpi/monkeyfest.png
--------------------------------------------------------------------------------
/DialogsExamples/DialogsExamples.Android/Resources/drawable-xhdpi/xds.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mfractor/xamarin-forms.dialogs/8d3e2350b451a39325f4df0c813f0b45ab4b0a33/DialogsExamples/DialogsExamples.Android/Resources/drawable-xhdpi/xds.png
--------------------------------------------------------------------------------
/DialogsExamples/DialogsExamples.Android/Resources/drawable-xxhdpi/monkeyfest.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mfractor/xamarin-forms.dialogs/8d3e2350b451a39325f4df0c813f0b45ab4b0a33/DialogsExamples/DialogsExamples.Android/Resources/drawable-xxhdpi/monkeyfest.png
--------------------------------------------------------------------------------
/DialogsExamples/DialogsExamples.Android/Resources/drawable-xxhdpi/xds.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mfractor/xamarin-forms.dialogs/8d3e2350b451a39325f4df0c813f0b45ab4b0a33/DialogsExamples/DialogsExamples.Android/Resources/drawable-xxhdpi/xds.png
--------------------------------------------------------------------------------
/DialogsExamples/DialogsExamples.Android/Resources/drawable-xxxhdpi/monkeyfest.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mfractor/xamarin-forms.dialogs/8d3e2350b451a39325f4df0c813f0b45ab4b0a33/DialogsExamples/DialogsExamples.Android/Resources/drawable-xxxhdpi/monkeyfest.png
--------------------------------------------------------------------------------
/DialogsExamples/DialogsExamples.Android/Resources/drawable-xxxhdpi/xds.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mfractor/xamarin-forms.dialogs/8d3e2350b451a39325f4df0c813f0b45ab4b0a33/DialogsExamples/DialogsExamples.Android/Resources/drawable-xxxhdpi/xds.png
--------------------------------------------------------------------------------
/DialogsExamples/DialogsExamples.Android/Resources/layout/Tabbar.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/DialogsExamples/DialogsExamples.Android/Resources/layout/Toolbar.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/DialogsExamples/DialogsExamples.Android/Resources/mipmap-anydpi-v26/icon.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/DialogsExamples/DialogsExamples.Android/Resources/mipmap-anydpi-v26/icon_round.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/DialogsExamples/DialogsExamples.Android/Resources/mipmap-hdpi/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mfractor/xamarin-forms.dialogs/8d3e2350b451a39325f4df0c813f0b45ab4b0a33/DialogsExamples/DialogsExamples.Android/Resources/mipmap-hdpi/icon.png
--------------------------------------------------------------------------------
/DialogsExamples/DialogsExamples.Android/Resources/mipmap-hdpi/launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mfractor/xamarin-forms.dialogs/8d3e2350b451a39325f4df0c813f0b45ab4b0a33/DialogsExamples/DialogsExamples.Android/Resources/mipmap-hdpi/launcher_foreground.png
--------------------------------------------------------------------------------
/DialogsExamples/DialogsExamples.Android/Resources/mipmap-mdpi/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mfractor/xamarin-forms.dialogs/8d3e2350b451a39325f4df0c813f0b45ab4b0a33/DialogsExamples/DialogsExamples.Android/Resources/mipmap-mdpi/icon.png
--------------------------------------------------------------------------------
/DialogsExamples/DialogsExamples.Android/Resources/mipmap-mdpi/launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mfractor/xamarin-forms.dialogs/8d3e2350b451a39325f4df0c813f0b45ab4b0a33/DialogsExamples/DialogsExamples.Android/Resources/mipmap-mdpi/launcher_foreground.png
--------------------------------------------------------------------------------
/DialogsExamples/DialogsExamples.Android/Resources/mipmap-xhdpi/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mfractor/xamarin-forms.dialogs/8d3e2350b451a39325f4df0c813f0b45ab4b0a33/DialogsExamples/DialogsExamples.Android/Resources/mipmap-xhdpi/icon.png
--------------------------------------------------------------------------------
/DialogsExamples/DialogsExamples.Android/Resources/mipmap-xhdpi/launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mfractor/xamarin-forms.dialogs/8d3e2350b451a39325f4df0c813f0b45ab4b0a33/DialogsExamples/DialogsExamples.Android/Resources/mipmap-xhdpi/launcher_foreground.png
--------------------------------------------------------------------------------
/DialogsExamples/DialogsExamples.Android/Resources/mipmap-xxhdpi/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mfractor/xamarin-forms.dialogs/8d3e2350b451a39325f4df0c813f0b45ab4b0a33/DialogsExamples/DialogsExamples.Android/Resources/mipmap-xxhdpi/icon.png
--------------------------------------------------------------------------------
/DialogsExamples/DialogsExamples.Android/Resources/mipmap-xxhdpi/launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mfractor/xamarin-forms.dialogs/8d3e2350b451a39325f4df0c813f0b45ab4b0a33/DialogsExamples/DialogsExamples.Android/Resources/mipmap-xxhdpi/launcher_foreground.png
--------------------------------------------------------------------------------
/DialogsExamples/DialogsExamples.Android/Resources/mipmap-xxxhdpi/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mfractor/xamarin-forms.dialogs/8d3e2350b451a39325f4df0c813f0b45ab4b0a33/DialogsExamples/DialogsExamples.Android/Resources/mipmap-xxxhdpi/icon.png
--------------------------------------------------------------------------------
/DialogsExamples/DialogsExamples.Android/Resources/mipmap-xxxhdpi/launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mfractor/xamarin-forms.dialogs/8d3e2350b451a39325f4df0c813f0b45ab4b0a33/DialogsExamples/DialogsExamples.Android/Resources/mipmap-xxxhdpi/launcher_foreground.png
--------------------------------------------------------------------------------
/DialogsExamples/DialogsExamples.Android/Resources/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #FFFFFF
4 | #3F51B5
5 | #303F9F
6 | #FF4081
7 |
--------------------------------------------------------------------------------
/DialogsExamples/DialogsExamples.Android/Resources/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
6 |
24 |
27 |
--------------------------------------------------------------------------------
/DialogsExamples/DialogsExamples.iOS/AppDelegate.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 |
5 | using Foundation;
6 | using UIKit;
7 |
8 | namespace DialogsExamples.iOS
9 | {
10 | // The UIApplicationDelegate for the application. This class is responsible for launching the
11 | // User Interface of the application, as well as listening (and optionally responding) to
12 | // application events from iOS.
13 | [Register("AppDelegate")]
14 | public partial class AppDelegate : global::Xamarin.Forms.Platform.iOS.FormsApplicationDelegate
15 | {
16 | //
17 | // This method is invoked when the application has loaded and is ready to run. In this
18 | // method you should instantiate the window, load the UI into it and then make the window
19 | // visible.
20 | //
21 | // You have 17 seconds to return from this method, or iOS will terminate your application.
22 | //
23 | public override bool FinishedLaunching(UIApplication app, NSDictionary options)
24 | {
25 | Rg.Plugins.Popup.Popup.Init();
26 |
27 | global::Xamarin.Forms.Forms.Init();
28 | LoadApplication(new App());
29 |
30 | return base.FinishedLaunching(app, options);
31 | }
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/DialogsExamples/DialogsExamples.iOS/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images": [
3 | {
4 | "scale": "2x",
5 | "size": "20x20",
6 | "idiom": "iphone",
7 | "filename": "Icon40.png"
8 | },
9 | {
10 | "scale": "3x",
11 | "size": "20x20",
12 | "idiom": "iphone",
13 | "filename": "Icon60.png"
14 | },
15 | {
16 | "scale": "2x",
17 | "size": "29x29",
18 | "idiom": "iphone",
19 | "filename": "Icon58.png"
20 | },
21 | {
22 | "scale": "3x",
23 | "size": "29x29",
24 | "idiom": "iphone",
25 | "filename": "Icon87.png"
26 | },
27 | {
28 | "scale": "2x",
29 | "size": "40x40",
30 | "idiom": "iphone",
31 | "filename": "Icon80.png"
32 | },
33 | {
34 | "scale": "3x",
35 | "size": "40x40",
36 | "idiom": "iphone",
37 | "filename": "Icon120.png"
38 | },
39 | {
40 | "scale": "2x",
41 | "size": "60x60",
42 | "idiom": "iphone",
43 | "filename": "Icon120.png"
44 | },
45 | {
46 | "scale": "3x",
47 | "size": "60x60",
48 | "idiom": "iphone",
49 | "filename": "Icon180.png"
50 | },
51 | {
52 | "scale": "1x",
53 | "size": "20x20",
54 | "idiom": "ipad",
55 | "filename": "Icon20.png"
56 | },
57 | {
58 | "scale": "2x",
59 | "size": "20x20",
60 | "idiom": "ipad",
61 | "filename": "Icon40.png"
62 | },
63 | {
64 | "scale": "1x",
65 | "size": "29x29",
66 | "idiom": "ipad",
67 | "filename": "Icon29.png"
68 | },
69 | {
70 | "scale": "2x",
71 | "size": "29x29",
72 | "idiom": "ipad",
73 | "filename": "Icon58.png"
74 | },
75 | {
76 | "scale": "1x",
77 | "size": "40x40",
78 | "idiom": "ipad",
79 | "filename": "Icon40.png"
80 | },
81 | {
82 | "scale": "2x",
83 | "size": "40x40",
84 | "idiom": "ipad",
85 | "filename": "Icon80.png"
86 | },
87 | {
88 | "scale": "1x",
89 | "size": "76x76",
90 | "idiom": "ipad",
91 | "filename": "Icon76.png"
92 | },
93 | {
94 | "scale": "2x",
95 | "size": "76x76",
96 | "idiom": "ipad",
97 | "filename": "Icon152.png"
98 | },
99 | {
100 | "scale": "2x",
101 | "size": "83.5x83.5",
102 | "idiom": "ipad",
103 | "filename": "Icon167.png"
104 | },
105 | {
106 | "scale": "1x",
107 | "size": "1024x1024",
108 | "idiom": "ios-marketing",
109 | "filename": "Icon1024.png"
110 | }
111 | ],
112 | "properties": {},
113 | "info": {
114 | "version": 1,
115 | "author": "xcode"
116 | }
117 | }
--------------------------------------------------------------------------------
/DialogsExamples/DialogsExamples.iOS/Assets.xcassets/AppIcon.appiconset/Icon1024.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mfractor/xamarin-forms.dialogs/8d3e2350b451a39325f4df0c813f0b45ab4b0a33/DialogsExamples/DialogsExamples.iOS/Assets.xcassets/AppIcon.appiconset/Icon1024.png
--------------------------------------------------------------------------------
/DialogsExamples/DialogsExamples.iOS/Assets.xcassets/AppIcon.appiconset/Icon120.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mfractor/xamarin-forms.dialogs/8d3e2350b451a39325f4df0c813f0b45ab4b0a33/DialogsExamples/DialogsExamples.iOS/Assets.xcassets/AppIcon.appiconset/Icon120.png
--------------------------------------------------------------------------------
/DialogsExamples/DialogsExamples.iOS/Assets.xcassets/AppIcon.appiconset/Icon152.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mfractor/xamarin-forms.dialogs/8d3e2350b451a39325f4df0c813f0b45ab4b0a33/DialogsExamples/DialogsExamples.iOS/Assets.xcassets/AppIcon.appiconset/Icon152.png
--------------------------------------------------------------------------------
/DialogsExamples/DialogsExamples.iOS/Assets.xcassets/AppIcon.appiconset/Icon167.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mfractor/xamarin-forms.dialogs/8d3e2350b451a39325f4df0c813f0b45ab4b0a33/DialogsExamples/DialogsExamples.iOS/Assets.xcassets/AppIcon.appiconset/Icon167.png
--------------------------------------------------------------------------------
/DialogsExamples/DialogsExamples.iOS/Assets.xcassets/AppIcon.appiconset/Icon180.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mfractor/xamarin-forms.dialogs/8d3e2350b451a39325f4df0c813f0b45ab4b0a33/DialogsExamples/DialogsExamples.iOS/Assets.xcassets/AppIcon.appiconset/Icon180.png
--------------------------------------------------------------------------------
/DialogsExamples/DialogsExamples.iOS/Assets.xcassets/AppIcon.appiconset/Icon20.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mfractor/xamarin-forms.dialogs/8d3e2350b451a39325f4df0c813f0b45ab4b0a33/DialogsExamples/DialogsExamples.iOS/Assets.xcassets/AppIcon.appiconset/Icon20.png
--------------------------------------------------------------------------------
/DialogsExamples/DialogsExamples.iOS/Assets.xcassets/AppIcon.appiconset/Icon29.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mfractor/xamarin-forms.dialogs/8d3e2350b451a39325f4df0c813f0b45ab4b0a33/DialogsExamples/DialogsExamples.iOS/Assets.xcassets/AppIcon.appiconset/Icon29.png
--------------------------------------------------------------------------------
/DialogsExamples/DialogsExamples.iOS/Assets.xcassets/AppIcon.appiconset/Icon40.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mfractor/xamarin-forms.dialogs/8d3e2350b451a39325f4df0c813f0b45ab4b0a33/DialogsExamples/DialogsExamples.iOS/Assets.xcassets/AppIcon.appiconset/Icon40.png
--------------------------------------------------------------------------------
/DialogsExamples/DialogsExamples.iOS/Assets.xcassets/AppIcon.appiconset/Icon58.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mfractor/xamarin-forms.dialogs/8d3e2350b451a39325f4df0c813f0b45ab4b0a33/DialogsExamples/DialogsExamples.iOS/Assets.xcassets/AppIcon.appiconset/Icon58.png
--------------------------------------------------------------------------------
/DialogsExamples/DialogsExamples.iOS/Assets.xcassets/AppIcon.appiconset/Icon60.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mfractor/xamarin-forms.dialogs/8d3e2350b451a39325f4df0c813f0b45ab4b0a33/DialogsExamples/DialogsExamples.iOS/Assets.xcassets/AppIcon.appiconset/Icon60.png
--------------------------------------------------------------------------------
/DialogsExamples/DialogsExamples.iOS/Assets.xcassets/AppIcon.appiconset/Icon76.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mfractor/xamarin-forms.dialogs/8d3e2350b451a39325f4df0c813f0b45ab4b0a33/DialogsExamples/DialogsExamples.iOS/Assets.xcassets/AppIcon.appiconset/Icon76.png
--------------------------------------------------------------------------------
/DialogsExamples/DialogsExamples.iOS/Assets.xcassets/AppIcon.appiconset/Icon80.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mfractor/xamarin-forms.dialogs/8d3e2350b451a39325f4df0c813f0b45ab4b0a33/DialogsExamples/DialogsExamples.iOS/Assets.xcassets/AppIcon.appiconset/Icon80.png
--------------------------------------------------------------------------------
/DialogsExamples/DialogsExamples.iOS/Assets.xcassets/AppIcon.appiconset/Icon87.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mfractor/xamarin-forms.dialogs/8d3e2350b451a39325f4df0c813f0b45ab4b0a33/DialogsExamples/DialogsExamples.iOS/Assets.xcassets/AppIcon.appiconset/Icon87.png
--------------------------------------------------------------------------------
/DialogsExamples/DialogsExamples.iOS/DialogsExamples.iOS.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Debug
5 | iPhoneSimulator
6 | 8.0.30703
7 | 2.0
8 | {4798C730-C68F-444D-8BCD-2D82BCE2AED0}
9 | {FEACFBD2-3405-455C-9665-78FE426C6842};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
10 | {6143fdea-f3c2-4a09-aafa-6e230626515e}
11 | Exe
12 | DialogsExamples.iOS
13 | Resources
14 | DialogsExamples.iOS
15 | true
16 | NSUrlSessionHandler
17 |
18 |
19 | true
20 | full
21 | false
22 | bin\iPhoneSimulator\Debug
23 | DEBUG
24 | prompt
25 | 4
26 | x86_64
27 | None
28 | true
29 |
30 |
31 | none
32 | true
33 | bin\iPhoneSimulator\Release
34 | prompt
35 | 4
36 | None
37 | x86_64
38 |
39 |
40 | true
41 | full
42 | false
43 | bin\iPhone\Debug
44 | DEBUG
45 | prompt
46 | 4
47 | ARM64
48 | iPhone Developer
49 | true
50 | Entitlements.plist
51 | None
52 | -all
53 |
54 |
55 | none
56 | true
57 | bin\iPhone\Release
58 | prompt
59 | 4
60 | ARM64
61 | iPhone Developer
62 | Entitlements.plist
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 | false
75 |
76 |
77 | false
78 |
79 |
80 | false
81 |
82 |
83 | false
84 |
85 |
86 | false
87 |
88 |
89 | false
90 |
91 |
92 | false
93 |
94 |
95 | false
96 |
97 |
98 | false
99 |
100 |
101 | false
102 |
103 |
104 | false
105 |
106 |
107 | false
108 |
109 |
110 | false
111 |
112 |
113 | false
114 |
115 |
116 |
117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 |
125 |
126 |
127 |
128 | 7.0.35
129 |
130 |
131 | 1.2.0.223
132 |
133 |
134 | 6.1.0
135 | runtime; build; native; contentfiles; analyzers; buildtransitive
136 | all
137 |
138 |
139 | 3.2.6
140 |
141 |
142 |
143 |
144 |
145 | {278474D7-1DFE-48C1-8B6B-186D7107828F}
146 | DialogsExamples
147 |
148 |
149 |
150 |
151 |
152 |
153 |
154 |
155 |
156 |
157 |
--------------------------------------------------------------------------------
/DialogsExamples/DialogsExamples.iOS/Entitlements.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/DialogsExamples/DialogsExamples.iOS/FodyWeavers.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/DialogsExamples/DialogsExamples.iOS/FodyWeavers.xsd:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 | Used to control if the On_PropertyName_Changed feature is enabled.
12 |
13 |
14 |
15 |
16 | Used to change the name of the method that fires the notify event. This is a string that accepts multiple values in a comma separated form.
17 |
18 |
19 |
20 |
21 | Used to control if equality checks should be inserted. If false, equality checking will be disabled for the project.
22 |
23 |
24 |
25 |
26 | Used to control if equality checks should use the Equals method resolved from the base class.
27 |
28 |
29 |
30 |
31 | Used to control if equality checks should use the static Equals method resolved from the base class.
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 | 'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed.
40 |
41 |
42 |
43 |
44 | A comma-separated list of error codes that can be safely ignored in assembly verification.
45 |
46 |
47 |
48 |
49 | 'false' to turn off automatic generation of the XML Schema file.
50 |
51 |
52 |
53 |
54 |
--------------------------------------------------------------------------------
/DialogsExamples/DialogsExamples.iOS/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | UIDeviceFamily
6 |
7 | 1
8 | 2
9 |
10 | UISupportedInterfaceOrientations
11 |
12 | UIInterfaceOrientationPortrait
13 | UIInterfaceOrientationLandscapeLeft
14 | UIInterfaceOrientationLandscapeRight
15 |
16 | UISupportedInterfaceOrientations~ipad
17 |
18 | UIInterfaceOrientationPortrait
19 | UIInterfaceOrientationPortraitUpsideDown
20 | UIInterfaceOrientationLandscapeLeft
21 | UIInterfaceOrientationLandscapeRight
22 |
23 | MinimumOSVersion
24 | 8.0
25 | CFBundleDisplayName
26 | DialogsExamples
27 | CFBundleIdentifier
28 | com.companyname.DialogsExamples
29 | CFBundleVersion
30 | 1.0
31 | UILaunchStoryboardName
32 | LaunchScreen
33 | CFBundleName
34 | DialogsExamples
35 | XSAppIconAssets
36 | Assets.xcassets/AppIcon.appiconset
37 |
38 |
39 |
--------------------------------------------------------------------------------
/DialogsExamples/DialogsExamples.iOS/Main.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 |
5 | using Foundation;
6 | using UIKit;
7 |
8 | namespace DialogsExamples.iOS
9 | {
10 | public class Application
11 | {
12 | // This is the main entry point of the application.
13 | static void Main(string[] args)
14 | {
15 | // if you want to use a different Application Delegate class from "AppDelegate"
16 | // you can specify it here.
17 | UIApplication.Main(args, null, "AppDelegate");
18 | }
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/DialogsExamples/DialogsExamples.iOS/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | // General Information about an assembly is controlled through the following
6 | // set of attributes. Change these attribute values to modify the information
7 | // associated with an assembly.
8 | [assembly: AssemblyTitle("DialogsExamples.iOS")]
9 | [assembly: AssemblyDescription("")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("")]
12 | [assembly: AssemblyProduct("DialogsExamples.iOS")]
13 | [assembly: AssemblyCopyright("Copyright © 2014")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // Setting ComVisible to false makes the types in this assembly not visible
18 | // to COM components. If you need to access a type in this assembly from
19 | // COM, set the ComVisible attribute to true on that type.
20 | [assembly: ComVisible(false)]
21 |
22 | // The following GUID is for the ID of the typelib if this project is exposed to COM
23 | [assembly: Guid("72bdc44f-c588-44f3-b6df-9aace7daafdd")]
24 |
25 | // Version information for an assembly consists of the following four values:
26 | //
27 | // Major Version
28 | // Minor Version
29 | // Build Number
30 | // Revision
31 | //
32 | // You can specify all the values or you can default the Build and Revision Numbers
33 | // by using the '*' as shown below:
34 | // [assembly: AssemblyVersion("1.0.*")]
35 | [assembly: AssemblyVersion("1.0.0.0")]
36 | [assembly: AssemblyFileVersion("1.0.0.0")]
37 |
--------------------------------------------------------------------------------
/DialogsExamples/DialogsExamples.iOS/Resources/Default-568h@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mfractor/xamarin-forms.dialogs/8d3e2350b451a39325f4df0c813f0b45ab4b0a33/DialogsExamples/DialogsExamples.iOS/Resources/Default-568h@2x.png
--------------------------------------------------------------------------------
/DialogsExamples/DialogsExamples.iOS/Resources/Default-Portrait.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mfractor/xamarin-forms.dialogs/8d3e2350b451a39325f4df0c813f0b45ab4b0a33/DialogsExamples/DialogsExamples.iOS/Resources/Default-Portrait.png
--------------------------------------------------------------------------------
/DialogsExamples/DialogsExamples.iOS/Resources/Default-Portrait@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mfractor/xamarin-forms.dialogs/8d3e2350b451a39325f4df0c813f0b45ab4b0a33/DialogsExamples/DialogsExamples.iOS/Resources/Default-Portrait@2x.png
--------------------------------------------------------------------------------
/DialogsExamples/DialogsExamples.iOS/Resources/Default.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mfractor/xamarin-forms.dialogs/8d3e2350b451a39325f4df0c813f0b45ab4b0a33/DialogsExamples/DialogsExamples.iOS/Resources/Default.png
--------------------------------------------------------------------------------
/DialogsExamples/DialogsExamples.iOS/Resources/Default@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mfractor/xamarin-forms.dialogs/8d3e2350b451a39325f4df0c813f0b45ab4b0a33/DialogsExamples/DialogsExamples.iOS/Resources/Default@2x.png
--------------------------------------------------------------------------------
/DialogsExamples/DialogsExamples.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 |
--------------------------------------------------------------------------------
/DialogsExamples/DialogsExamples.iOS/Resources/monkeyfest.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mfractor/xamarin-forms.dialogs/8d3e2350b451a39325f4df0c813f0b45ab4b0a33/DialogsExamples/DialogsExamples.iOS/Resources/monkeyfest.png
--------------------------------------------------------------------------------
/DialogsExamples/DialogsExamples.iOS/Resources/monkeyfest@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mfractor/xamarin-forms.dialogs/8d3e2350b451a39325f4df0c813f0b45ab4b0a33/DialogsExamples/DialogsExamples.iOS/Resources/monkeyfest@2x.png
--------------------------------------------------------------------------------
/DialogsExamples/DialogsExamples.iOS/Resources/monkeyfest@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mfractor/xamarin-forms.dialogs/8d3e2350b451a39325f4df0c813f0b45ab4b0a33/DialogsExamples/DialogsExamples.iOS/Resources/monkeyfest@3x.png
--------------------------------------------------------------------------------
/DialogsExamples/DialogsExamples.iOS/Resources/xds.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mfractor/xamarin-forms.dialogs/8d3e2350b451a39325f4df0c813f0b45ab4b0a33/DialogsExamples/DialogsExamples.iOS/Resources/xds.png
--------------------------------------------------------------------------------
/DialogsExamples/DialogsExamples.iOS/Resources/xds@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mfractor/xamarin-forms.dialogs/8d3e2350b451a39325f4df0c813f0b45ab4b0a33/DialogsExamples/DialogsExamples.iOS/Resources/xds@2x.png
--------------------------------------------------------------------------------
/DialogsExamples/DialogsExamples.iOS/Resources/xds@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mfractor/xamarin-forms.dialogs/8d3e2350b451a39325f4df0c813f0b45ab4b0a33/DialogsExamples/DialogsExamples.iOS/Resources/xds@3x.png
--------------------------------------------------------------------------------
/DialogsExamples/DialogsExamples.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 12.00
3 | # Visual Studio 15
4 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DialogsExamples.Android", "DialogsExamples.Android\DialogsExamples.Android.csproj", "{654CF5DE-8FFC-4503-A566-317A611B6F37}"
5 | EndProject
6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DialogsExamples.iOS", "DialogsExamples.iOS\DialogsExamples.iOS.csproj", "{4798C730-C68F-444D-8BCD-2D82BCE2AED0}"
7 | EndProject
8 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DialogsExamples", "DialogsExamples\DialogsExamples.csproj", "{278474D7-1DFE-48C1-8B6B-186D7107828F}"
9 | EndProject
10 | Global
11 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
12 | Debug|Any CPU = Debug|Any CPU
13 | Release|Any CPU = Release|Any CPU
14 | Debug|iPhoneSimulator = Debug|iPhoneSimulator
15 | Release|iPhoneSimulator = Release|iPhoneSimulator
16 | Debug|iPhone = Debug|iPhone
17 | Release|iPhone = Release|iPhone
18 | EndGlobalSection
19 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
20 | {654CF5DE-8FFC-4503-A566-317A611B6F37}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
21 | {654CF5DE-8FFC-4503-A566-317A611B6F37}.Debug|Any CPU.Build.0 = Debug|Any CPU
22 | {654CF5DE-8FFC-4503-A566-317A611B6F37}.Release|Any CPU.ActiveCfg = Release|Any CPU
23 | {654CF5DE-8FFC-4503-A566-317A611B6F37}.Release|Any CPU.Build.0 = Release|Any CPU
24 | {654CF5DE-8FFC-4503-A566-317A611B6F37}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
25 | {654CF5DE-8FFC-4503-A566-317A611B6F37}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
26 | {654CF5DE-8FFC-4503-A566-317A611B6F37}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
27 | {654CF5DE-8FFC-4503-A566-317A611B6F37}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
28 | {654CF5DE-8FFC-4503-A566-317A611B6F37}.Debug|iPhone.ActiveCfg = Debug|Any CPU
29 | {654CF5DE-8FFC-4503-A566-317A611B6F37}.Debug|iPhone.Build.0 = Debug|Any CPU
30 | {654CF5DE-8FFC-4503-A566-317A611B6F37}.Release|iPhone.ActiveCfg = Release|Any CPU
31 | {654CF5DE-8FFC-4503-A566-317A611B6F37}.Release|iPhone.Build.0 = Release|Any CPU
32 | {4798C730-C68F-444D-8BCD-2D82BCE2AED0}.Debug|Any CPU.ActiveCfg = Debug|iPhoneSimulator
33 | {4798C730-C68F-444D-8BCD-2D82BCE2AED0}.Debug|Any CPU.Build.0 = Debug|iPhoneSimulator
34 | {4798C730-C68F-444D-8BCD-2D82BCE2AED0}.Release|Any CPU.ActiveCfg = Release|iPhoneSimulator
35 | {4798C730-C68F-444D-8BCD-2D82BCE2AED0}.Release|Any CPU.Build.0 = Release|iPhoneSimulator
36 | {4798C730-C68F-444D-8BCD-2D82BCE2AED0}.Debug|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator
37 | {4798C730-C68F-444D-8BCD-2D82BCE2AED0}.Debug|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator
38 | {4798C730-C68F-444D-8BCD-2D82BCE2AED0}.Release|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator
39 | {4798C730-C68F-444D-8BCD-2D82BCE2AED0}.Release|iPhoneSimulator.Build.0 = Release|iPhoneSimulator
40 | {4798C730-C68F-444D-8BCD-2D82BCE2AED0}.Debug|iPhone.ActiveCfg = Debug|iPhone
41 | {4798C730-C68F-444D-8BCD-2D82BCE2AED0}.Debug|iPhone.Build.0 = Debug|iPhone
42 | {4798C730-C68F-444D-8BCD-2D82BCE2AED0}.Release|iPhone.ActiveCfg = Release|iPhone
43 | {4798C730-C68F-444D-8BCD-2D82BCE2AED0}.Release|iPhone.Build.0 = Release|iPhone
44 | {278474D7-1DFE-48C1-8B6B-186D7107828F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
45 | {278474D7-1DFE-48C1-8B6B-186D7107828F}.Debug|Any CPU.Build.0 = Debug|Any CPU
46 | {278474D7-1DFE-48C1-8B6B-186D7107828F}.Release|Any CPU.ActiveCfg = Release|Any CPU
47 | {278474D7-1DFE-48C1-8B6B-186D7107828F}.Release|Any CPU.Build.0 = Release|Any CPU
48 | {278474D7-1DFE-48C1-8B6B-186D7107828F}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
49 | {278474D7-1DFE-48C1-8B6B-186D7107828F}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
50 | {278474D7-1DFE-48C1-8B6B-186D7107828F}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
51 | {278474D7-1DFE-48C1-8B6B-186D7107828F}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
52 | {278474D7-1DFE-48C1-8B6B-186D7107828F}.Debug|iPhone.ActiveCfg = Debug|Any CPU
53 | {278474D7-1DFE-48C1-8B6B-186D7107828F}.Debug|iPhone.Build.0 = Debug|Any CPU
54 | {278474D7-1DFE-48C1-8B6B-186D7107828F}.Release|iPhone.ActiveCfg = Release|Any CPU
55 | {278474D7-1DFE-48C1-8B6B-186D7107828F}.Release|iPhone.Build.0 = Release|Any CPU
56 | EndGlobalSection
57 | EndGlobal
58 |
--------------------------------------------------------------------------------
/DialogsExamples/DialogsExamples/App.xaml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/DialogsExamples/DialogsExamples/App.xaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using Xamarin.Forms;
3 | using Xamarin.Forms.Xaml;
4 |
5 | namespace DialogsExamples
6 | {
7 | public partial class App : Application
8 | {
9 | public App()
10 | {
11 | InitializeComponent();
12 |
13 | MainPage = new MainPage();
14 | }
15 |
16 | protected override void OnStart()
17 | {
18 | }
19 |
20 | protected override void OnSleep()
21 | {
22 | }
23 |
24 | protected override void OnResume()
25 | {
26 | }
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/DialogsExamples/DialogsExamples/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using Xamarin.Forms.Xaml;
2 |
3 | [assembly: XamlCompilation(XamlCompilationOptions.Compile)]
--------------------------------------------------------------------------------
/DialogsExamples/DialogsExamples/Controls/HorizontalDivider.xaml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/DialogsExamples/DialogsExamples/Controls/HorizontalDivider.xaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using Xamarin.Forms;
3 |
4 |
5 | namespace DialogsExamples.Controls
6 | {
7 | public partial class HorizontalDivider : ContentView
8 | {
9 | public HorizontalDivider()
10 | {
11 | InitializeComponent();
12 | }
13 | }
14 | }
--------------------------------------------------------------------------------
/DialogsExamples/DialogsExamples/CustomPopup.xaml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/DialogsExamples/DialogsExamples/CustomPopup.xaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Threading.Tasks;
3 | using Rg.Plugins.Popup.Extensions;
4 | using Rg.Plugins.Popup.Pages;
5 | using Xamarin.Forms;
6 |
7 |
8 | namespace DialogsExamples
9 | {
10 | public partial class CustomPopup : PopupPage
11 | {
12 | private readonly Action setResultAction;
13 |
14 | public void CancelAttendanceClicked(object sender, EventArgs e)
15 | {
16 | setResultAction?.Invoke(false);
17 | this.Navigation.PopPopupAsync().ConfigureAwait(false);
18 | }
19 |
20 | public void ConfirmAttendanceClicked(object sender, EventArgs e)
21 | {
22 | setResultAction?.Invoke(true);
23 | this.Navigation.PopPopupAsync().ConfigureAwait(false);
24 | }
25 |
26 | public CustomPopup(Action setResultAction)
27 | {
28 | InitializeComponent();
29 | this.setResultAction = setResultAction;
30 | }
31 |
32 | public static async Task ConfirmConferenceAttendance(INavigation navigation)
33 | {
34 | TaskCompletionSource completionSource = new TaskCompletionSource();
35 |
36 | void callback(bool didConfirm)
37 | {
38 | completionSource.TrySetResult(didConfirm);
39 | }
40 |
41 | var popup = new CustomPopup(callback);
42 |
43 | await navigation.PushPopupAsync(popup);
44 |
45 | return await completionSource.Task;
46 | }
47 | }
48 | }
--------------------------------------------------------------------------------
/DialogsExamples/DialogsExamples/DialogsExamples.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | netstandard2.0
5 | true
6 |
7 |
8 |
9 | portable
10 | true
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 | runtime; build; native; contentfiles; analyzers; buildtransitive
20 | all
21 |
22 |
23 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/DialogsExamples/DialogsExamples/FodyWeavers.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/DialogsExamples/DialogsExamples/FodyWeavers.xsd:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 | Used to control if the On_PropertyName_Changed feature is enabled.
12 |
13 |
14 |
15 |
16 | Used to change the name of the method that fires the notify event. This is a string that accepts multiple values in a comma separated form.
17 |
18 |
19 |
20 |
21 | Used to control if equality checks should be inserted. If false, equality checking will be disabled for the project.
22 |
23 |
24 |
25 |
26 | Used to control if equality checks should use the Equals method resolved from the base class.
27 |
28 |
29 |
30 |
31 | Used to control if equality checks should use the static Equals method resolved from the base class.
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 | 'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed.
40 |
41 |
42 |
43 |
44 | A comma-separated list of error codes that can be safely ignored in assembly verification.
45 |
46 |
47 |
48 |
49 | 'false' to turn off automatic generation of the XML Schema file.
50 |
51 |
52 |
53 |
54 |
--------------------------------------------------------------------------------
/DialogsExamples/DialogsExamples/MainPage.xaml:
--------------------------------------------------------------------------------
1 |
2 |
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 |
41 |
42 |
43 |
44 |
--------------------------------------------------------------------------------
/DialogsExamples/DialogsExamples/MainPage.xaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.ComponentModel;
4 | using System.Linq;
5 | using System.Text;
6 | using System.Threading.Tasks;
7 | using Xamarin.Forms;
8 |
9 | namespace DialogsExamples
10 | {
11 | // Learn more about making custom code visible in the Xamarin.Forms previewer
12 | // by visiting https://aka.ms/xamarinforms-previewer
13 | [DesignTimeVisible(false)]
14 | public partial class MainPage : ContentPage
15 | {
16 | public MainPage()
17 | {
18 | InitializeComponent();
19 |
20 | BindingContext = new MainViewModel(Navigation, Acr.UserDialogs.UserDialogs.Instance);
21 | }
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/DialogsExamples/DialogsExamples/MainViewModel.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using Acr.UserDialogs;
3 | using PropertyChanged;
4 | using Xamarin.Forms;
5 | using System.Windows.Input;
6 | using System.Threading;
7 | using System.Threading.Tasks;
8 |
9 | namespace DialogsExamples
10 | {
11 | [AddINotifyPropertyChangedInterface]
12 | public class MainViewModel
13 | {
14 | public string Message
15 | {
16 | get;
17 | set;
18 | }
19 |
20 | public ICommand ActionSheetCommand
21 | {
22 | get
23 | {
24 | return new Command(async () =>
25 | {
26 | var choices = new [] { "Oranges", "Apples", "Bananas" };
27 |
28 | var choice = await userDialogs.ActionSheetAsync("Choose A Fruit", "Cancel", "Destroy", CancellationToken.None, choices);
29 |
30 | if (!string.IsNullOrEmpty(choice))
31 | {
32 | Message = "You chose " + choice;
33 | }
34 | else
35 | {
36 | Message = "Action sheet was cancelled";
37 | }
38 | });
39 | }
40 | }
41 |
42 | public ICommand CustomPopupCommand
43 | {
44 | get
45 | {
46 | return new Command(async() =>
47 | {
48 | var result = await CustomPopup.ConfirmConferenceAttendance(navigation);
49 |
50 | if (result)
51 | {
52 | Message = "You confirmed conference attendance";
53 | }
54 | else
55 | {
56 | Message = "You are not going to the conference ☹️";
57 | }
58 | });
59 | }
60 | }
61 |
62 | public ICommand ProgressIndicatorCommand
63 | {
64 | get
65 | {
66 | return new Command(async () =>
67 | {
68 | using (var progress = userDialogs.Progress("Loading..."))
69 | {
70 | for (var i = 0; i < 100; i++)
71 | {
72 | progress.PercentComplete = i;
73 |
74 | await Task.Delay(20);
75 | }
76 | }
77 | });
78 | }
79 | }
80 |
81 | public ICommand AlertCommand
82 | {
83 | get
84 | {
85 | return new Command(() =>
86 | {
87 | userDialogs.Alert("Welcome to alert dialogs", "Welcome", "Ok");
88 | });
89 | }
90 | }
91 |
92 | public ICommand ConfirmCommand
93 | {
94 | get
95 | {
96 | return new Command(async () =>
97 | {
98 | var result = await userDialogs.ConfirmAsync("Would you like to confirm selection?", "Confirm Selection", "Yes", "No");
99 |
100 | if (result)
101 | {
102 | Console.WriteLine("Selection confirmed!");
103 | }
104 | });
105 | }
106 | }
107 |
108 | public ICommand ToastCommand
109 | {
110 | get
111 | {
112 | return new Command(() =>
113 | {
114 | userDialogs.Toast("I am a toast. Great for showing small pieces of transient information.");
115 | });
116 | }
117 | }
118 |
119 | public ICommand PromptCommand
120 | {
121 | get
122 | {
123 | return new Command(async () =>
124 | {
125 | var input = await userDialogs.PromptAsync("What is your email?", "Confirm Email", "Confirm", "Cancel");
126 |
127 | if (input.Ok)
128 | {
129 | Console.WriteLine("Your email is" + input.Text);
130 | }
131 | });
132 | }
133 | }
134 |
135 | IUserDialogs userDialogs;
136 | INavigation navigation;
137 |
138 | public MainViewModel(INavigation navigation, IUserDialogs userDialogs)
139 | {
140 | this.navigation = navigation;
141 | this.userDialogs = userDialogs;
142 | }
143 | }
144 | }
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2020 MFractor
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 | # A Beginners Guide To Dialogs In Xamarin.Forms
2 |
3 | When developing mobile applications, dialogs are a foundational building block in our tool-belt. We can use dialogs to show a confirmation message, to indicate when the app is working or even to create a rich input form that appears over our main user interface.
4 |
5 | This article aims to be a getting-started guide for using dialogs in Xamarin.Forms and is intended to be for beginners. I aim to introduce the core concepts and terminology, get you started with the most current dialog frameworks and provide a quick reference on the main dialog types.
6 |
7 | If you're totally new Xamarin.Forms and want to learn about dialogs, this is the article for you 😉
8 |
9 | Before we dive in, let's take a moment to introduce two important terms used throughout this article:
10 |
11 | * **Modal**: A dialog appears over the existing user interface and blocks input to the elements beneath it, not allowing users to exit by tapping outside it. Modal dialogs effectively *focus* the users attention onto the dialog.
12 | * **Transient**: A temporary dialog that dismisses by itself without user intervention. For example, dialogs that automatically dismiss after a specified time span are transient.
13 |
14 | These terms, Modal and Transient, will be used many times in this article
15 |
16 | Next, let's explore the six main dialogs kinds that we will explore in this guide:
17 |
18 | * [Alert](#alerts): A dialog that shows a message.
19 | * [Alert](#alerts): A dialog that shows a message and gives the user two options.
20 | * [Prompt](#prompts): A dialog that requests input from a user.
21 | * [Action Sheet](#action-sheets): A list of choices presented to a user.
22 | * [Toast](#toasts): A small, unobtrusive message that shows for a small amount of time.
23 | * [Progress Indicator](#progress-indicator): A dialog to indicate that our app is working.
24 | * [Custom Popup](#custom-popup): A modal dialog with fully customised content.
25 |
26 | The full source code for this article can be found [here](https://github.com/mfractor/xamarin-forms.dialogs).
27 |
28 | ## Packages And Frameworks
29 |
30 | Before we get started lets take a look at the packages we'll be using.
31 |
32 | While Xamarin.Forms has some basic dialogs built in, we'll be using a couple of Nuget packages to access more options.
33 |
34 | * Acr.UserDialogs: A rich dialogs library for Xamarin.Forms. Acr.User dialogs is the de facto standard when working with dialogs in Xamarin.Forms.
35 | * [Readme](https://github.com/aritchie/userdialogs);
36 | * Rg.Popups: Create fully customised popups and modal dialogs using Xamarin.Forms pages.
37 | * [Getting Start Guide](https://github.com/rotorgames/Rg.Plugins.Popup/wiki/Getting-started)
38 |
39 | ## Dialogs 101
40 |
41 | ### Alerts
42 |
43 | An **Alert** is a modal dialog used to show a message to a user.
44 |
45 | 
46 |
47 | Alerts are a convenient way to inform the user that something has happened or that they need to make an action. They're useful when you need confirmation from the user that they have read the message.
48 |
49 | Using Acr.UserDialogs, we would show an alert like so:
50 |
51 | ```
52 | Acr.UserDialogs.UserDialogs.Instance.Alert("Welcome to alert dialogs", "Ok");
53 | ```
54 |
55 | To keep concise, from now on I'll keep that Instance in field called `userDialogs`. So for the rest of the examples we can just call `userDialogs.Alert("Welcome to alert dialogs", "Ok");`.
56 |
57 | ### Confirm
58 |
59 | A special kind of alert dialog is a **Confirm** dialog, an alert that display a message with a choice of two actions.
60 |
61 | 
62 |
63 | Presenting a Confirm Dialog is quite similar to an alert but instead you call `ConfirmAsync` and pass in another string argument for the extra button. It returns a `Task` to let you check the user's selection.
64 |
65 | ```
66 | var result = await userDialogs.ConfirmAsync("Would you like to confirm selection?", "Confirm Selection", "Yes", "No");
67 | ```
68 |
69 | Confirm dialogs are used ask a user to make sure something is correct before the action occurs, or to choose between two options.
70 |
71 | ### Prompts
72 |
73 | A **Prompt** is a modal dialog that asks the user for some basic text input, such as asking for a name or email address.
74 |
75 | 
76 |
77 | **Using a prompt**
78 |
79 | Displaying a prompt is quite similar to how we display Alerts and Confirm dialogs. The key difference being in the PromptResult that it returns, where you'll find a `bool` `Ok` to indicate if the user confirmed input and `Text` which contains the text they entered.
80 |
81 | ```
82 | var input = await userDialogs.PromptAsync("What is your email?", "Confirm Email", "Confirm", "Cancel");
83 |
84 | if (input.Ok)
85 | {
86 | Console.WriteLine("Your email is" + input.Text);
87 | }
88 | ```
89 |
90 | ### Action Sheets
91 |
92 | An **Action Sheet** is a modal dialog that presents the user with a selection of choices and, optionally, a cancel and destructive action.
93 |
94 | These are typically used when there are multiple actions a user might want to take. An example would be in an email application if a user clicks on an email they may want to Open, Forward, Reply, etc. In this case the destructive action would be **Delete** which would be displayed in red and separated from the rest of the list, hinting to the user that this action is serious and that they should think carefully. The **Cancel** option is also displayed differently to make it obvious that it is different to the other choices, this would generally
95 |
96 | 
97 |
98 | To display an ActionSheet, we'll need a list of choices and then we call `userDialogs.ActionSheetAsync()`.
99 |
100 | ```
101 | var choices = new [] { "Oranges", "Apples", "Bananas" };
102 |
103 | var choice = await userDialogs.ActionSheetAsync("Choose A Fruit", "Cancel", "Destroy", CancellationToken.None, choices);
104 |
105 | if (!string.IsNullOrEmpty(choice))
106 | {
107 | Message = "You chose " + choice;
108 | }
109 | else
110 | {
111 | Message = "Action sheet was cancelled";
112 | }
113 | ```
114 |
115 | If you don't want a Cancel button or Destructive action you can pass `null` instead of a string for these parameters.
116 |
117 | ### Toasts
118 |
119 | A **Toast** is a small, temporary popup that shows at the bottom of the screen useful for display displaying small and unobtrusive messages. Toasts are effectively transient dialogs.
120 |
121 | 
122 |
123 | A good example of when to use a toast is to notify the user that their data has been saved successfully.
124 |
125 | Displaying a Toast is once again done using userDialogs, but this time calling the Toast method. As there is no title or dismiss button we only need one string input for the text to display.
126 | ```
127 | userDialogs.Toast("I am a toast. Great for showing small pieces of transient information.");
128 | ```
129 |
130 | ### Progress Indicator
131 |
132 | A **Progress** indicator is similar to the built in activity indicator, the key difference being that it keeps the user updated on the progress throughout the task instead of simply indicating that something is happening.
133 |
134 | 
135 |
136 | Here I'm updating progress using a loop with a delay of 20ms, in a real app you would update this based on how much work had been done and what was remaining.
137 |
138 | ```
139 | using (var progress = userDialogs.Progress("Loading..."))
140 | {
141 | for (var i = 0; i < 100; i++)
142 | {
143 | progress.PercentComplete = i;
144 |
145 | await Task.Delay(20);
146 | }
147 | }
148 | ```
149 |
150 | ### Custom Popup
151 |
152 | All the dialogs we've looked at so far have a fixed layout and serve a specific purpose. With a custom **Popup** you can put any content you want inside with any appearance. These are useful if you want more advanced interaction or if you want it styled to match your app instead of the system UI.
153 |
154 | Custom popup take a bit more work than the others, for this example we'll show a popup with an image and two buttons.
155 |
156 | 
157 |
158 | The first step is to create a new Xaml ContentView called CustomPopup, this will give you a `CustomPopup.xaml` and a `CustomPopup.xaml.cs`. Instead of using ContentView as the base class, we'll swap the element to be a `popups:PopupPage` which will allow us to use it as a popup.
159 |
160 | Inside the PopupPage we can put any Xamarin.Forms content we like. Here I've got a `Grid` that contains an `Image` and two `Button`s.
161 | ```
162 |
163 |
169 |
170 |
171 |
172 |
173 |
174 |
175 |
176 |
177 |
178 |
179 |
180 |
181 |
182 |
183 | ```
184 |
185 | In the code behind we'll need a constructor that takes in an `Action`, and methods for **Confirm** and **Cancel**.
186 |
187 | ```
188 | public partial class CustomPopup : PopupPage
189 | {
190 | private readonly Action setResultAction;
191 |
192 | public void CancelAttendanceClicked(object sender, EventArgs e)
193 | {
194 | setResultAction?.Invoke(false);
195 | this.Navigation.PopPopupAsync().ConfigureAwait(false);
196 | }
197 |
198 | public void ConfirmAttendanceClicked(object sender, EventArgs e)
199 | {
200 | setResultAction?.Invoke(true);
201 | this.Navigation.PopPopupAsync().ConfigureAwait(false);
202 | }
203 |
204 | public CustomPopup(Action setResultAction)
205 | {
206 | InitializeComponent();
207 | this.setResultAction = setResultAction;
208 | }
209 | }
210 | ```
211 |
212 | With these methods we can create a our custom popup and display it with the true/false result being passed to a callback. This code is a little messy and if we're using this code in multiple places in the app it's a bit of a pain. instead we can add a static method to CustomPopup which makes it much neater to call from other classes.
213 |
214 | ```
215 | public static async Task ConfirmConferenceAttendance(INavigation navigation)
216 | {
217 | TaskCompletionSource completionSource = new TaskCompletionSource();
218 |
219 | void callback(bool didConfirm)
220 | {
221 | completionSource.TrySetResult(didConfirm);
222 | }
223 |
224 | var popup = new CustomPopup(callback);
225 |
226 | await navigation.PushPopupAsync(popup);
227 |
228 | return await completionSource.Task;
229 | }
230 | ```
231 |
232 | This wraps up the callback in an awaitable `Task` so you don't have to worry about actions. Now when we want to display the `CustomPopup`, it feels a lot more like how we displayed the other dialogs.
233 |
234 | ```
235 | var result = await CustomPopup.ConfirmConferenceAttendance(navigation);
236 | ```
237 |
238 | ## Summary
239 | All of these dialogs are similar but have slight variations based on what you need to present and what input you need from the user.
240 |
241 | As a quick guide for deciding which to pick, consider which situation best describes your needs:
242 |
243 | **I want to display some text and have the user acknowledge the message**
244 | * Use an [Alert](#alerts)
245 |
246 | **I want to get some short text input from a user**
247 | * Use a [Prompt](#prompts) dialog.
248 |
249 | **I want to display some text to a user but no interaction is needed**
250 | * Use a [Toast](#toasts)
251 |
252 | **I want to ask the user a question with two options such as yes/no or confirm/cancel**
253 | * Use a [Confirm](#confirm) dialog
254 |
255 | **I want to ask to present the user with multiple options**
256 | * Use an [Action Sheet](#action-sheets)
257 |
258 | **I want to let the user know how much of a job has been completed**
259 | * Use a [Progress Indicator](#progress-indicator)
260 |
261 | **I want complete control of the content and style of my dialog**
262 | * Use a [Custom Popup](#custom-popup)
263 |
264 |
265 | These libraries are both free and Open Source but they rely on the support of their users. If you find UserDialogs to be useful in your project please sponsor Allan Ritchie through his [github sponsor page](https://github.com/sponsors/aritchie).
266 |
267 | If you like Rg.Popup visit the github repo for more information [https://github.com/rotorgames/Rg.Plugins.Popup](https://github.com/rotorgames/Rg.Plugins.Popup)
268 |
--------------------------------------------------------------------------------
/img/action-sheet.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mfractor/xamarin-forms.dialogs/8d3e2350b451a39325f4df0c813f0b45ab4b0a33/img/action-sheet.png
--------------------------------------------------------------------------------
/img/alert.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mfractor/xamarin-forms.dialogs/8d3e2350b451a39325f4df0c813f0b45ab4b0a33/img/alert.png
--------------------------------------------------------------------------------
/img/banner-image.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mfractor/xamarin-forms.dialogs/8d3e2350b451a39325f4df0c813f0b45ab4b0a33/img/banner-image.png
--------------------------------------------------------------------------------
/img/confirm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mfractor/xamarin-forms.dialogs/8d3e2350b451a39325f4df0c813f0b45ab4b0a33/img/confirm.png
--------------------------------------------------------------------------------
/img/custom-popup.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mfractor/xamarin-forms.dialogs/8d3e2350b451a39325f4df0c813f0b45ab4b0a33/img/custom-popup.png
--------------------------------------------------------------------------------
/img/progress.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mfractor/xamarin-forms.dialogs/8d3e2350b451a39325f4df0c813f0b45ab4b0a33/img/progress.png
--------------------------------------------------------------------------------
/img/prompt.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mfractor/xamarin-forms.dialogs/8d3e2350b451a39325f4df0c813f0b45ab4b0a33/img/prompt.png
--------------------------------------------------------------------------------
/img/toast.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mfractor/xamarin-forms.dialogs/8d3e2350b451a39325f4df0c813f0b45ab4b0a33/img/toast.png
--------------------------------------------------------------------------------