From 17a0a9f7a6f7ba60e3bc00979b78f9d44b282624 Mon Sep 17 00:00:00 2001 From: retr0volkov Date: Wed, 9 Sep 2026 16:19:45 +0300 Subject: [PATCH] Idk, dev work goin on --- WinWARP.Core/Data/AppDbContext.cs | 1 - WinWARP.Core/Enums/CommonDialogResult.cs | 13 + WinWARP.Core/Helper/FlagEmojiParser.cs | 62 ++ .../Messages/DeleteServerItemMessage.cs | 12 + WinWARP.Core/Models/Entities/Server.cs | 14 +- .../Models/Entities/StandaloneServer.cs | 1 - .../Models/Entities/SubscriptionServer.cs | 5 - .../Implementations/SubscriptionDbService.cs | 2 +- .../Implementations/SubscriptionFetcher.cs | 35 + .../Services/Interfaces/IDialogService.cs | 11 + .../Interfaces/ISubscriptionFetcher.cs | 12 + .../Dialogs/AddSubscriptionViewModel.cs | 36 + WinWARP.Core/ViewModels/HomeViewModel.cs | 9 +- .../ViewModels/ServerItemViewModel.cs | 71 ++ .../ViewModels/SubsSettingsViewModel.cs | 65 +- .../Wrappers/StandaloneServerViewModel.cs | 31 + .../Wrappers/SubscriptionServerViewModel.cs | 27 + WinWARP.Ui/App.xaml.cs | 43 +- WinWARP.Ui/Assets/Flags/ad.svg | 148 ++++ WinWARP.Ui/Assets/Flags/ae.svg | 6 + WinWARP.Ui/Assets/Flags/af.svg | 81 ++ WinWARP.Ui/Assets/Flags/ag.svg | 14 + WinWARP.Ui/Assets/Flags/ai.svg | 29 + WinWARP.Ui/Assets/Flags/al.svg | 5 + WinWARP.Ui/Assets/Flags/am.svg | 5 + WinWARP.Ui/Assets/Flags/ao.svg | 13 + WinWARP.Ui/Assets/Flags/aq.svg | 5 + WinWARP.Ui/Assets/Flags/ar.svg | 32 + WinWARP.Ui/Assets/Flags/arab.svg | 109 +++ WinWARP.Ui/Assets/Flags/as.svg | 73 ++ WinWARP.Ui/Assets/Flags/asean.svg | 13 + WinWARP.Ui/Assets/Flags/at.svg | 4 + WinWARP.Ui/Assets/Flags/au.svg | 8 + WinWARP.Ui/Assets/Flags/aw.svg | 186 +++++ WinWARP.Ui/Assets/Flags/ax.svg | 18 + WinWARP.Ui/Assets/Flags/az.svg | 8 + WinWARP.Ui/Assets/Flags/ba.svg | 12 + WinWARP.Ui/Assets/Flags/bb.svg | 6 + WinWARP.Ui/Assets/Flags/bd.svg | 4 + WinWARP.Ui/Assets/Flags/be.svg | 7 + WinWARP.Ui/Assets/Flags/bf.svg | 7 + WinWARP.Ui/Assets/Flags/bg.svg | 5 + WinWARP.Ui/Assets/Flags/bh.svg | 4 + WinWARP.Ui/Assets/Flags/bi.svg | 15 + WinWARP.Ui/Assets/Flags/bj.svg | 14 + WinWARP.Ui/Assets/Flags/bl.svg | 7 + WinWARP.Ui/Assets/Flags/bm.svg | 97 +++ WinWARP.Ui/Assets/Flags/bn.svg | 36 + WinWARP.Ui/Assets/Flags/bo.svg | 674 +++++++++++++++++ WinWARP.Ui/Assets/Flags/bq.svg | 5 + WinWARP.Ui/Assets/Flags/br.svg | 45 ++ WinWARP.Ui/Assets/Flags/bs.svg | 13 + WinWARP.Ui/Assets/Flags/bt.svg | 89 +++ WinWARP.Ui/Assets/Flags/bv.svg | 13 + WinWARP.Ui/Assets/Flags/bw.svg | 7 + WinWARP.Ui/Assets/Flags/by.svg | 18 + WinWARP.Ui/Assets/Flags/bz.svg | 145 ++++ WinWARP.Ui/Assets/Flags/ca.svg | 4 + WinWARP.Ui/Assets/Flags/cc.svg | 19 + WinWARP.Ui/Assets/Flags/cd.svg | 12 + WinWARP.Ui/Assets/Flags/cefta.svg | 13 + WinWARP.Ui/Assets/Flags/cf.svg | 15 + WinWARP.Ui/Assets/Flags/cg.svg | 12 + WinWARP.Ui/Assets/Flags/ch.svg | 9 + WinWARP.Ui/Assets/Flags/ci.svg | 7 + WinWARP.Ui/Assets/Flags/ck.svg | 9 + WinWARP.Ui/Assets/Flags/cl.svg | 13 + WinWARP.Ui/Assets/Flags/cm.svg | 15 + WinWARP.Ui/Assets/Flags/cn.svg | 11 + WinWARP.Ui/Assets/Flags/co.svg | 7 + WinWARP.Ui/Assets/Flags/cp.svg | 7 + WinWARP.Ui/Assets/Flags/cr.svg | 7 + WinWARP.Ui/Assets/Flags/cu.svg | 13 + WinWARP.Ui/Assets/Flags/cv.svg | 13 + WinWARP.Ui/Assets/Flags/cw.svg | 14 + WinWARP.Ui/Assets/Flags/cx.svg | 15 + WinWARP.Ui/Assets/Flags/cy.svg | 6 + WinWARP.Ui/Assets/Flags/cz.svg | 5 + WinWARP.Ui/Assets/Flags/de.svg | 5 + WinWARP.Ui/Assets/Flags/dg.svg | 130 ++++ WinWARP.Ui/Assets/Flags/dj.svg | 13 + WinWARP.Ui/Assets/Flags/dk.svg | 5 + WinWARP.Ui/Assets/Flags/dm.svg | 152 ++++ WinWARP.Ui/Assets/Flags/do.svg | 122 ++++ WinWARP.Ui/Assets/Flags/dz.svg | 5 + WinWARP.Ui/Assets/Flags/eac.svg | 48 ++ WinWARP.Ui/Assets/Flags/ec.svg | 138 ++++ WinWARP.Ui/Assets/Flags/ee.svg | 5 + WinWARP.Ui/Assets/Flags/eg.svg | 38 + WinWARP.Ui/Assets/Flags/eh.svg | 11 + WinWARP.Ui/Assets/Flags/er.svg | 13 + WinWARP.Ui/Assets/Flags/es-ct.svg | 4 + WinWARP.Ui/Assets/Flags/es-ga.svg | 187 +++++ WinWARP.Ui/Assets/Flags/es-pv.svg | 5 + WinWARP.Ui/Assets/Flags/es.svg | 547 ++++++++++++++ WinWARP.Ui/Assets/Flags/et.svg | 14 + WinWARP.Ui/Assets/Flags/eu.svg | 28 + WinWARP.Ui/Assets/Flags/fi.svg | 5 + WinWARP.Ui/Assets/Flags/fj.svg | 123 ++++ WinWARP.Ui/Assets/Flags/fk.svg | 89 +++ WinWARP.Ui/Assets/Flags/fm.svg | 11 + WinWARP.Ui/Assets/Flags/fo.svg | 12 + WinWARP.Ui/Assets/Flags/fr.svg | 5 + WinWARP.Ui/Assets/Flags/ga.svg | 7 + WinWARP.Ui/Assets/Flags/gb-eng.svg | 5 + WinWARP.Ui/Assets/Flags/gb-nir.svg | 131 ++++ WinWARP.Ui/Assets/Flags/gb-sct.svg | 4 + WinWARP.Ui/Assets/Flags/gb-wls.svg | 9 + WinWARP.Ui/Assets/Flags/gb.svg | 7 + WinWARP.Ui/Assets/Flags/gd.svg | 27 + WinWARP.Ui/Assets/Flags/ge.svg | 6 + WinWARP.Ui/Assets/Flags/gf.svg | 5 + WinWARP.Ui/Assets/Flags/gg.svg | 9 + WinWARP.Ui/Assets/Flags/gh.svg | 6 + WinWARP.Ui/Assets/Flags/gi.svg | 32 + WinWARP.Ui/Assets/Flags/gl.svg | 4 + WinWARP.Ui/Assets/Flags/gm.svg | 9 + WinWARP.Ui/Assets/Flags/gn.svg | 7 + WinWARP.Ui/Assets/Flags/gp.svg | 5 + WinWARP.Ui/Assets/Flags/gq.svg | 23 + WinWARP.Ui/Assets/Flags/gr.svg | 16 + WinWARP.Ui/Assets/Flags/gs.svg | 132 ++++ WinWARP.Ui/Assets/Flags/gt.svg | 204 ++++++ WinWARP.Ui/Assets/Flags/gu.svg | 19 + WinWARP.Ui/Assets/Flags/gw.svg | 15 + WinWARP.Ui/Assets/Flags/gy.svg | 9 + WinWARP.Ui/Assets/Flags/hk.svg | 8 + WinWARP.Ui/Assets/Flags/hm.svg | 8 + WinWARP.Ui/Assets/Flags/hn.svg | 18 + WinWARP.Ui/Assets/Flags/hr.svg | 56 ++ WinWARP.Ui/Assets/Flags/ht.svg | 116 +++ WinWARP.Ui/Assets/Flags/hu.svg | 7 + WinWARP.Ui/Assets/Flags/ic.svg | 7 + WinWARP.Ui/Assets/Flags/id.svg | 4 + WinWARP.Ui/Assets/Flags/ie.svg | 7 + WinWARP.Ui/Assets/Flags/il.svg | 14 + WinWARP.Ui/Assets/Flags/im.svg | 36 + WinWARP.Ui/Assets/Flags/in.svg | 25 + WinWARP.Ui/Assets/Flags/io.svg | 130 ++++ WinWARP.Ui/Assets/Flags/iq.svg | 10 + WinWARP.Ui/Assets/Flags/ir.svg | 219 ++++++ WinWARP.Ui/Assets/Flags/is.svg | 12 + WinWARP.Ui/Assets/Flags/it.svg | 7 + WinWARP.Ui/Assets/Flags/je.svg | 62 ++ WinWARP.Ui/Assets/Flags/jm.svg | 8 + WinWARP.Ui/Assets/Flags/jo.svg | 16 + WinWARP.Ui/Assets/Flags/jp.svg | 11 + WinWARP.Ui/Assets/Flags/ke.svg | 23 + WinWARP.Ui/Assets/Flags/kg.svg | 4 + WinWARP.Ui/Assets/Flags/kh.svg | 61 ++ WinWARP.Ui/Assets/Flags/ki.svg | 36 + WinWARP.Ui/Assets/Flags/km.svg | 16 + WinWARP.Ui/Assets/Flags/kn.svg | 14 + WinWARP.Ui/Assets/Flags/kp.svg | 15 + WinWARP.Ui/Assets/Flags/kr.svg | 17 + WinWARP.Ui/Assets/Flags/kw.svg | 13 + WinWARP.Ui/Assets/Flags/ky.svg | 103 +++ WinWARP.Ui/Assets/Flags/kz.svg | 36 + WinWARP.Ui/Assets/Flags/la.svg | 12 + WinWARP.Ui/Assets/Flags/lb.svg | 15 + WinWARP.Ui/Assets/Flags/lc.svg | 8 + WinWARP.Ui/Assets/Flags/li.svg | 43 ++ WinWARP.Ui/Assets/Flags/lk.svg | 22 + WinWARP.Ui/Assets/Flags/lr.svg | 14 + WinWARP.Ui/Assets/Flags/ls.svg | 8 + WinWARP.Ui/Assets/Flags/lt.svg | 7 + WinWARP.Ui/Assets/Flags/lu.svg | 5 + WinWARP.Ui/Assets/Flags/lv.svg | 6 + WinWARP.Ui/Assets/Flags/ly.svg | 13 + WinWARP.Ui/Assets/Flags/ma.svg | 4 + WinWARP.Ui/Assets/Flags/mc.svg | 6 + WinWARP.Ui/Assets/Flags/md.svg | 71 ++ WinWARP.Ui/Assets/Flags/me.svg | 118 +++ WinWARP.Ui/Assets/Flags/mf.svg | 5 + WinWARP.Ui/Assets/Flags/mg.svg | 7 + WinWARP.Ui/Assets/Flags/mh.svg | 8 + WinWARP.Ui/Assets/Flags/mk.svg | 5 + WinWARP.Ui/Assets/Flags/ml.svg | 7 + WinWARP.Ui/Assets/Flags/mm.svg | 10 + WinWARP.Ui/Assets/Flags/mn.svg | 14 + WinWARP.Ui/Assets/Flags/mo.svg | 9 + WinWARP.Ui/Assets/Flags/mp.svg | 86 +++ WinWARP.Ui/Assets/Flags/mq.svg | 5 + WinWARP.Ui/Assets/Flags/mr.svg | 6 + WinWARP.Ui/Assets/Flags/ms.svg | 25 + WinWARP.Ui/Assets/Flags/mt.svg | 56 ++ WinWARP.Ui/Assets/Flags/mu.svg | 8 + WinWARP.Ui/Assets/Flags/mv.svg | 6 + WinWARP.Ui/Assets/Flags/mw.svg | 15 + WinWARP.Ui/Assets/Flags/mx.svg | 377 ++++++++++ WinWARP.Ui/Assets/Flags/my.svg | 18 + WinWARP.Ui/Assets/Flags/mz.svg | 21 + WinWARP.Ui/Assets/Flags/na.svg | 16 + WinWARP.Ui/Assets/Flags/nc.svg | 12 + WinWARP.Ui/Assets/Flags/ne.svg | 6 + WinWARP.Ui/Assets/Flags/nf.svg | 11 + WinWARP.Ui/Assets/Flags/ng.svg | 6 + WinWARP.Ui/Assets/Flags/ni.svg | 129 ++++ WinWARP.Ui/Assets/Flags/nl.svg | 5 + WinWARP.Ui/Assets/Flags/no.svg | 7 + WinWARP.Ui/Assets/Flags/np.svg | 18 + WinWARP.Ui/Assets/Flags/nr.svg | 12 + WinWARP.Ui/Assets/Flags/nu.svg | 10 + WinWARP.Ui/Assets/Flags/nz.svg | 36 + WinWARP.Ui/Assets/Flags/om.svg | 115 +++ WinWARP.Ui/Assets/Flags/pa.svg | 13 + WinWARP.Ui/Assets/Flags/pc.svg | 33 + WinWARP.Ui/Assets/Flags/pe.svg | 4 + WinWARP.Ui/Assets/Flags/pf.svg | 18 + WinWARP.Ui/Assets/Flags/pg.svg | 16 + WinWARP.Ui/Assets/Flags/ph.svg | 6 + WinWARP.Ui/Assets/Flags/pk.svg | 15 + WinWARP.Ui/Assets/Flags/pl.svg | 6 + WinWARP.Ui/Assets/Flags/pm.svg | 5 + WinWARP.Ui/Assets/Flags/pn.svg | 53 ++ WinWARP.Ui/Assets/Flags/pr.svg | 13 + WinWARP.Ui/Assets/Flags/ps.svg | 6 + WinWARP.Ui/Assets/Flags/pt.svg | 57 ++ WinWARP.Ui/Assets/Flags/pw.svg | 11 + WinWARP.Ui/Assets/Flags/py.svg | 156 ++++ WinWARP.Ui/Assets/Flags/qa.svg | 4 + WinWARP.Ui/Assets/Flags/re.svg | 7 + WinWARP.Ui/Assets/Flags/ro.svg | 7 + WinWARP.Ui/Assets/Flags/rs.svg | 296 ++++++++ WinWARP.Ui/Assets/Flags/ru.svg | 5 + WinWARP.Ui/Assets/Flags/rw.svg | 13 + WinWARP.Ui/Assets/Flags/sa.svg | 25 + WinWARP.Ui/Assets/Flags/sb.svg | 13 + WinWARP.Ui/Assets/Flags/sc.svg | 7 + WinWARP.Ui/Assets/Flags/sd.svg | 13 + WinWARP.Ui/Assets/Flags/se.svg | 4 + WinWARP.Ui/Assets/Flags/sg.svg | 13 + WinWARP.Ui/Assets/Flags/sh-ac.svg | 690 ++++++++++++++++++ WinWARP.Ui/Assets/Flags/sh-hl.svg | 164 +++++ WinWARP.Ui/Assets/Flags/sh-ta.svg | 76 ++ WinWARP.Ui/Assets/Flags/sh.svg | 7 + WinWARP.Ui/Assets/Flags/si.svg | 18 + WinWARP.Ui/Assets/Flags/sj.svg | 7 + WinWARP.Ui/Assets/Flags/sk.svg | 9 + WinWARP.Ui/Assets/Flags/sl.svg | 12 + WinWARP.Ui/Assets/Flags/sm.svg | 73 ++ WinWARP.Ui/Assets/Flags/sn.svg | 8 + WinWARP.Ui/Assets/Flags/so.svg | 11 + WinWARP.Ui/Assets/Flags/sr.svg | 6 + WinWARP.Ui/Assets/Flags/ss.svg | 8 + WinWARP.Ui/Assets/Flags/st.svg | 16 + WinWARP.Ui/Assets/Flags/sv.svg | 593 +++++++++++++++ WinWARP.Ui/Assets/Flags/sx.svg | 56 ++ WinWARP.Ui/Assets/Flags/sy.svg | 6 + WinWARP.Ui/Assets/Flags/sz.svg | 34 + WinWARP.Ui/Assets/Flags/tc.svg | 50 ++ WinWARP.Ui/Assets/Flags/td.svg | 7 + WinWARP.Ui/Assets/Flags/tf.svg | 15 + WinWARP.Ui/Assets/Flags/tg.svg | 14 + WinWARP.Ui/Assets/Flags/th.svg | 7 + WinWARP.Ui/Assets/Flags/tj.svg | 26 + WinWARP.Ui/Assets/Flags/tk.svg | 5 + WinWARP.Ui/Assets/Flags/tl.svg | 13 + WinWARP.Ui/Assets/Flags/tm.svg | 205 ++++++ WinWARP.Ui/Assets/Flags/tn.svg | 4 + WinWARP.Ui/Assets/Flags/to.svg | 10 + WinWARP.Ui/Assets/Flags/tr.svg | 8 + WinWARP.Ui/Assets/Flags/tt.svg | 7 + WinWARP.Ui/Assets/Flags/tv.svg | 9 + WinWARP.Ui/Assets/Flags/tw.svg | 32 + WinWARP.Ui/Assets/Flags/tz.svg | 15 + WinWARP.Ui/Assets/Flags/ua.svg | 6 + WinWARP.Ui/Assets/Flags/ug.svg | 30 + WinWARP.Ui/Assets/Flags/um.svg | 9 + WinWARP.Ui/Assets/Flags/un.svg | 16 + WinWARP.Ui/Assets/Flags/us.svg | 9 + WinWARP.Ui/Assets/Flags/uy.svg | 28 + WinWARP.Ui/Assets/Flags/uz.svg | 30 + WinWARP.Ui/Assets/Flags/va.svg | 190 +++++ WinWARP.Ui/Assets/Flags/vc.svg | 8 + WinWARP.Ui/Assets/Flags/ve.svg | 26 + WinWARP.Ui/Assets/Flags/vg.svg | 59 ++ WinWARP.Ui/Assets/Flags/vi.svg | 28 + WinWARP.Ui/Assets/Flags/vn.svg | 11 + WinWARP.Ui/Assets/Flags/vu.svg | 21 + WinWARP.Ui/Assets/Flags/wf.svg | 5 + WinWARP.Ui/Assets/Flags/ws.svg | 7 + WinWARP.Ui/Assets/Flags/xk.svg | 5 + WinWARP.Ui/Assets/Flags/xx.svg | 4 + WinWARP.Ui/Assets/Flags/ye.svg | 7 + WinWARP.Ui/Assets/Flags/yt.svg | 5 + WinWARP.Ui/Assets/Flags/za.svg | 17 + WinWARP.Ui/Assets/Flags/zm.svg | 27 + WinWARP.Ui/Assets/Flags/zw.svg | 21 + .../Converters/BoolToVisibilityConverter.cs | 47 ++ .../Converters/CountryCodeToUriConverter.cs | 31 + .../UpdateIntervalToTextConverter.cs | 60 ++ WinWARP.Ui/Helpers/PluralCategory.cs | 30 + WinWARP.Ui/Helpers/ServerTemplateSelector.cs | 34 + WinWARP.Ui/Helpers/TypeExtension.cs | 3 + WinWARP.Ui/Helpers/XamlRootTracker.cs | 17 + WinWARP.Ui/MainWindow.xaml.cs | 7 +- WinWARP.Ui/Services/DialogService.cs | 47 ++ WinWARP.Ui/Services/NavigationService.cs | 2 + WinWARP.Ui/Strings/en-US/Resources.resw | 48 ++ WinWARP.Ui/Strings/ru-RU/Resources.resw | 48 ++ .../Views/Components/ServerListElement.xaml | 82 +++ .../Components/ServerListElement.xaml.cs | 83 +++ .../ConfigSettings/DnsSettingsPage.xaml.cs | 14 +- .../InboundSettingsPage.xaml.cs | 16 +- .../RoutingSettingsPage.xaml.cs | 14 +- .../ConfigSettings/TlsSettingsPage.xaml.cs | 14 +- .../ConfigSettings/WarpSettingsPage.xaml.cs | 10 +- WinWARP.Ui/Views/ConfigSettingsPage.xaml.cs | 10 +- .../Views/Dialogs/AddSubscriptionDialog.xaml | 31 + .../Dialogs/AddSubscriptionDialog.xaml.cs | 34 + WinWARP.Ui/Views/HomePage.xaml.cs | 7 +- .../Settings/GeneralSettingsPage.xaml.cs | 14 +- .../Views/Settings/UpdateSettingsPage.xaml.cs | 14 +- WinWARP.Ui/Views/SettingsPage.xaml.cs | 11 +- WinWARP.Ui/Views/SubsSettingsPage.xaml | 24 +- WinWARP.Ui/Views/SubsSettingsPage.xaml.cs | 8 +- WinWARP.Ui/WinWARP.Ui.csproj | 16 +- 318 files changed, 11908 insertions(+), 81 deletions(-) create mode 100644 WinWARP.Core/Enums/CommonDialogResult.cs create mode 100644 WinWARP.Core/Helper/FlagEmojiParser.cs create mode 100644 WinWARP.Core/Messages/DeleteServerItemMessage.cs create mode 100644 WinWARP.Core/Services/Implementations/SubscriptionFetcher.cs create mode 100644 WinWARP.Core/Services/Interfaces/IDialogService.cs create mode 100644 WinWARP.Core/Services/Interfaces/ISubscriptionFetcher.cs create mode 100644 WinWARP.Core/ViewModels/Dialogs/AddSubscriptionViewModel.cs create mode 100644 WinWARP.Core/ViewModels/ServerItemViewModel.cs create mode 100644 WinWARP.Core/ViewModels/Wrappers/StandaloneServerViewModel.cs create mode 100644 WinWARP.Core/ViewModels/Wrappers/SubscriptionServerViewModel.cs create mode 100644 WinWARP.Ui/Assets/Flags/ad.svg create mode 100644 WinWARP.Ui/Assets/Flags/ae.svg create mode 100644 WinWARP.Ui/Assets/Flags/af.svg create mode 100644 WinWARP.Ui/Assets/Flags/ag.svg create mode 100644 WinWARP.Ui/Assets/Flags/ai.svg create mode 100644 WinWARP.Ui/Assets/Flags/al.svg create mode 100644 WinWARP.Ui/Assets/Flags/am.svg create mode 100644 WinWARP.Ui/Assets/Flags/ao.svg create mode 100644 WinWARP.Ui/Assets/Flags/aq.svg create mode 100644 WinWARP.Ui/Assets/Flags/ar.svg create mode 100644 WinWARP.Ui/Assets/Flags/arab.svg create mode 100644 WinWARP.Ui/Assets/Flags/as.svg create mode 100644 WinWARP.Ui/Assets/Flags/asean.svg create mode 100644 WinWARP.Ui/Assets/Flags/at.svg create mode 100644 WinWARP.Ui/Assets/Flags/au.svg create mode 100644 WinWARP.Ui/Assets/Flags/aw.svg create mode 100644 WinWARP.Ui/Assets/Flags/ax.svg create mode 100644 WinWARP.Ui/Assets/Flags/az.svg create mode 100644 WinWARP.Ui/Assets/Flags/ba.svg create mode 100644 WinWARP.Ui/Assets/Flags/bb.svg create mode 100644 WinWARP.Ui/Assets/Flags/bd.svg create mode 100644 WinWARP.Ui/Assets/Flags/be.svg create mode 100644 WinWARP.Ui/Assets/Flags/bf.svg create mode 100644 WinWARP.Ui/Assets/Flags/bg.svg create mode 100644 WinWARP.Ui/Assets/Flags/bh.svg create mode 100644 WinWARP.Ui/Assets/Flags/bi.svg create mode 100644 WinWARP.Ui/Assets/Flags/bj.svg create mode 100644 WinWARP.Ui/Assets/Flags/bl.svg create mode 100644 WinWARP.Ui/Assets/Flags/bm.svg create mode 100644 WinWARP.Ui/Assets/Flags/bn.svg create mode 100644 WinWARP.Ui/Assets/Flags/bo.svg create mode 100644 WinWARP.Ui/Assets/Flags/bq.svg create mode 100644 WinWARP.Ui/Assets/Flags/br.svg create mode 100644 WinWARP.Ui/Assets/Flags/bs.svg create mode 100644 WinWARP.Ui/Assets/Flags/bt.svg create mode 100644 WinWARP.Ui/Assets/Flags/bv.svg create mode 100644 WinWARP.Ui/Assets/Flags/bw.svg create mode 100644 WinWARP.Ui/Assets/Flags/by.svg create mode 100644 WinWARP.Ui/Assets/Flags/bz.svg create mode 100644 WinWARP.Ui/Assets/Flags/ca.svg create mode 100644 WinWARP.Ui/Assets/Flags/cc.svg create mode 100644 WinWARP.Ui/Assets/Flags/cd.svg create mode 100644 WinWARP.Ui/Assets/Flags/cefta.svg create mode 100644 WinWARP.Ui/Assets/Flags/cf.svg create mode 100644 WinWARP.Ui/Assets/Flags/cg.svg create mode 100644 WinWARP.Ui/Assets/Flags/ch.svg create mode 100644 WinWARP.Ui/Assets/Flags/ci.svg create mode 100644 WinWARP.Ui/Assets/Flags/ck.svg create mode 100644 WinWARP.Ui/Assets/Flags/cl.svg create mode 100644 WinWARP.Ui/Assets/Flags/cm.svg create mode 100644 WinWARP.Ui/Assets/Flags/cn.svg create mode 100644 WinWARP.Ui/Assets/Flags/co.svg create mode 100644 WinWARP.Ui/Assets/Flags/cp.svg create mode 100644 WinWARP.Ui/Assets/Flags/cr.svg create mode 100644 WinWARP.Ui/Assets/Flags/cu.svg create mode 100644 WinWARP.Ui/Assets/Flags/cv.svg create mode 100644 WinWARP.Ui/Assets/Flags/cw.svg create mode 100644 WinWARP.Ui/Assets/Flags/cx.svg create mode 100644 WinWARP.Ui/Assets/Flags/cy.svg create mode 100644 WinWARP.Ui/Assets/Flags/cz.svg create mode 100644 WinWARP.Ui/Assets/Flags/de.svg create mode 100644 WinWARP.Ui/Assets/Flags/dg.svg create mode 100644 WinWARP.Ui/Assets/Flags/dj.svg create mode 100644 WinWARP.Ui/Assets/Flags/dk.svg create mode 100644 WinWARP.Ui/Assets/Flags/dm.svg create mode 100644 WinWARP.Ui/Assets/Flags/do.svg create mode 100644 WinWARP.Ui/Assets/Flags/dz.svg create mode 100644 WinWARP.Ui/Assets/Flags/eac.svg create mode 100644 WinWARP.Ui/Assets/Flags/ec.svg create mode 100644 WinWARP.Ui/Assets/Flags/ee.svg create mode 100644 WinWARP.Ui/Assets/Flags/eg.svg create mode 100644 WinWARP.Ui/Assets/Flags/eh.svg create mode 100644 WinWARP.Ui/Assets/Flags/er.svg create mode 100644 WinWARP.Ui/Assets/Flags/es-ct.svg create mode 100644 WinWARP.Ui/Assets/Flags/es-ga.svg create mode 100644 WinWARP.Ui/Assets/Flags/es-pv.svg create mode 100644 WinWARP.Ui/Assets/Flags/es.svg create mode 100644 WinWARP.Ui/Assets/Flags/et.svg create mode 100644 WinWARP.Ui/Assets/Flags/eu.svg create mode 100644 WinWARP.Ui/Assets/Flags/fi.svg create mode 100644 WinWARP.Ui/Assets/Flags/fj.svg create mode 100644 WinWARP.Ui/Assets/Flags/fk.svg create mode 100644 WinWARP.Ui/Assets/Flags/fm.svg create mode 100644 WinWARP.Ui/Assets/Flags/fo.svg create mode 100644 WinWARP.Ui/Assets/Flags/fr.svg create mode 100644 WinWARP.Ui/Assets/Flags/ga.svg create mode 100644 WinWARP.Ui/Assets/Flags/gb-eng.svg create mode 100644 WinWARP.Ui/Assets/Flags/gb-nir.svg create mode 100644 WinWARP.Ui/Assets/Flags/gb-sct.svg create mode 100644 WinWARP.Ui/Assets/Flags/gb-wls.svg create mode 100644 WinWARP.Ui/Assets/Flags/gb.svg create mode 100644 WinWARP.Ui/Assets/Flags/gd.svg create mode 100644 WinWARP.Ui/Assets/Flags/ge.svg create mode 100644 WinWARP.Ui/Assets/Flags/gf.svg create mode 100644 WinWARP.Ui/Assets/Flags/gg.svg create mode 100644 WinWARP.Ui/Assets/Flags/gh.svg create mode 100644 WinWARP.Ui/Assets/Flags/gi.svg create mode 100644 WinWARP.Ui/Assets/Flags/gl.svg create mode 100644 WinWARP.Ui/Assets/Flags/gm.svg create mode 100644 WinWARP.Ui/Assets/Flags/gn.svg create mode 100644 WinWARP.Ui/Assets/Flags/gp.svg create mode 100644 WinWARP.Ui/Assets/Flags/gq.svg create mode 100644 WinWARP.Ui/Assets/Flags/gr.svg create mode 100644 WinWARP.Ui/Assets/Flags/gs.svg create mode 100644 WinWARP.Ui/Assets/Flags/gt.svg create mode 100644 WinWARP.Ui/Assets/Flags/gu.svg create mode 100644 WinWARP.Ui/Assets/Flags/gw.svg create mode 100644 WinWARP.Ui/Assets/Flags/gy.svg create mode 100644 WinWARP.Ui/Assets/Flags/hk.svg create mode 100644 WinWARP.Ui/Assets/Flags/hm.svg create mode 100644 WinWARP.Ui/Assets/Flags/hn.svg create mode 100644 WinWARP.Ui/Assets/Flags/hr.svg create mode 100644 WinWARP.Ui/Assets/Flags/ht.svg create mode 100644 WinWARP.Ui/Assets/Flags/hu.svg create mode 100644 WinWARP.Ui/Assets/Flags/ic.svg create mode 100644 WinWARP.Ui/Assets/Flags/id.svg create mode 100644 WinWARP.Ui/Assets/Flags/ie.svg create mode 100644 WinWARP.Ui/Assets/Flags/il.svg create mode 100644 WinWARP.Ui/Assets/Flags/im.svg create mode 100644 WinWARP.Ui/Assets/Flags/in.svg create mode 100644 WinWARP.Ui/Assets/Flags/io.svg create mode 100644 WinWARP.Ui/Assets/Flags/iq.svg create mode 100644 WinWARP.Ui/Assets/Flags/ir.svg create mode 100644 WinWARP.Ui/Assets/Flags/is.svg create mode 100644 WinWARP.Ui/Assets/Flags/it.svg create mode 100644 WinWARP.Ui/Assets/Flags/je.svg create mode 100644 WinWARP.Ui/Assets/Flags/jm.svg create mode 100644 WinWARP.Ui/Assets/Flags/jo.svg create mode 100644 WinWARP.Ui/Assets/Flags/jp.svg create mode 100644 WinWARP.Ui/Assets/Flags/ke.svg create mode 100644 WinWARP.Ui/Assets/Flags/kg.svg create mode 100644 WinWARP.Ui/Assets/Flags/kh.svg create mode 100644 WinWARP.Ui/Assets/Flags/ki.svg create mode 100644 WinWARP.Ui/Assets/Flags/km.svg create mode 100644 WinWARP.Ui/Assets/Flags/kn.svg create mode 100644 WinWARP.Ui/Assets/Flags/kp.svg create mode 100644 WinWARP.Ui/Assets/Flags/kr.svg create mode 100644 WinWARP.Ui/Assets/Flags/kw.svg create mode 100644 WinWARP.Ui/Assets/Flags/ky.svg create mode 100644 WinWARP.Ui/Assets/Flags/kz.svg create mode 100644 WinWARP.Ui/Assets/Flags/la.svg create mode 100644 WinWARP.Ui/Assets/Flags/lb.svg create mode 100644 WinWARP.Ui/Assets/Flags/lc.svg create mode 100644 WinWARP.Ui/Assets/Flags/li.svg create mode 100644 WinWARP.Ui/Assets/Flags/lk.svg create mode 100644 WinWARP.Ui/Assets/Flags/lr.svg create mode 100644 WinWARP.Ui/Assets/Flags/ls.svg create mode 100644 WinWARP.Ui/Assets/Flags/lt.svg create mode 100644 WinWARP.Ui/Assets/Flags/lu.svg create mode 100644 WinWARP.Ui/Assets/Flags/lv.svg create mode 100644 WinWARP.Ui/Assets/Flags/ly.svg create mode 100644 WinWARP.Ui/Assets/Flags/ma.svg create mode 100644 WinWARP.Ui/Assets/Flags/mc.svg create mode 100644 WinWARP.Ui/Assets/Flags/md.svg create mode 100644 WinWARP.Ui/Assets/Flags/me.svg create mode 100644 WinWARP.Ui/Assets/Flags/mf.svg create mode 100644 WinWARP.Ui/Assets/Flags/mg.svg create mode 100644 WinWARP.Ui/Assets/Flags/mh.svg create mode 100644 WinWARP.Ui/Assets/Flags/mk.svg create mode 100644 WinWARP.Ui/Assets/Flags/ml.svg create mode 100644 WinWARP.Ui/Assets/Flags/mm.svg create mode 100644 WinWARP.Ui/Assets/Flags/mn.svg create mode 100644 WinWARP.Ui/Assets/Flags/mo.svg create mode 100644 WinWARP.Ui/Assets/Flags/mp.svg create mode 100644 WinWARP.Ui/Assets/Flags/mq.svg create mode 100644 WinWARP.Ui/Assets/Flags/mr.svg create mode 100644 WinWARP.Ui/Assets/Flags/ms.svg create mode 100644 WinWARP.Ui/Assets/Flags/mt.svg create mode 100644 WinWARP.Ui/Assets/Flags/mu.svg create mode 100644 WinWARP.Ui/Assets/Flags/mv.svg create mode 100644 WinWARP.Ui/Assets/Flags/mw.svg create mode 100644 WinWARP.Ui/Assets/Flags/mx.svg create mode 100644 WinWARP.Ui/Assets/Flags/my.svg create mode 100644 WinWARP.Ui/Assets/Flags/mz.svg create mode 100644 WinWARP.Ui/Assets/Flags/na.svg create mode 100644 WinWARP.Ui/Assets/Flags/nc.svg create mode 100644 WinWARP.Ui/Assets/Flags/ne.svg create mode 100644 WinWARP.Ui/Assets/Flags/nf.svg create mode 100644 WinWARP.Ui/Assets/Flags/ng.svg create mode 100644 WinWARP.Ui/Assets/Flags/ni.svg create mode 100644 WinWARP.Ui/Assets/Flags/nl.svg create mode 100644 WinWARP.Ui/Assets/Flags/no.svg create mode 100644 WinWARP.Ui/Assets/Flags/np.svg create mode 100644 WinWARP.Ui/Assets/Flags/nr.svg create mode 100644 WinWARP.Ui/Assets/Flags/nu.svg create mode 100644 WinWARP.Ui/Assets/Flags/nz.svg create mode 100644 WinWARP.Ui/Assets/Flags/om.svg create mode 100644 WinWARP.Ui/Assets/Flags/pa.svg create mode 100644 WinWARP.Ui/Assets/Flags/pc.svg create mode 100644 WinWARP.Ui/Assets/Flags/pe.svg create mode 100644 WinWARP.Ui/Assets/Flags/pf.svg create mode 100644 WinWARP.Ui/Assets/Flags/pg.svg create mode 100644 WinWARP.Ui/Assets/Flags/ph.svg create mode 100644 WinWARP.Ui/Assets/Flags/pk.svg create mode 100644 WinWARP.Ui/Assets/Flags/pl.svg create mode 100644 WinWARP.Ui/Assets/Flags/pm.svg create mode 100644 WinWARP.Ui/Assets/Flags/pn.svg create mode 100644 WinWARP.Ui/Assets/Flags/pr.svg create mode 100644 WinWARP.Ui/Assets/Flags/ps.svg create mode 100644 WinWARP.Ui/Assets/Flags/pt.svg create mode 100644 WinWARP.Ui/Assets/Flags/pw.svg create mode 100644 WinWARP.Ui/Assets/Flags/py.svg create mode 100644 WinWARP.Ui/Assets/Flags/qa.svg create mode 100644 WinWARP.Ui/Assets/Flags/re.svg create mode 100644 WinWARP.Ui/Assets/Flags/ro.svg create mode 100644 WinWARP.Ui/Assets/Flags/rs.svg create mode 100644 WinWARP.Ui/Assets/Flags/ru.svg create mode 100644 WinWARP.Ui/Assets/Flags/rw.svg create mode 100644 WinWARP.Ui/Assets/Flags/sa.svg create mode 100644 WinWARP.Ui/Assets/Flags/sb.svg create mode 100644 WinWARP.Ui/Assets/Flags/sc.svg create mode 100644 WinWARP.Ui/Assets/Flags/sd.svg create mode 100644 WinWARP.Ui/Assets/Flags/se.svg create mode 100644 WinWARP.Ui/Assets/Flags/sg.svg create mode 100644 WinWARP.Ui/Assets/Flags/sh-ac.svg create mode 100644 WinWARP.Ui/Assets/Flags/sh-hl.svg create mode 100644 WinWARP.Ui/Assets/Flags/sh-ta.svg create mode 100644 WinWARP.Ui/Assets/Flags/sh.svg create mode 100644 WinWARP.Ui/Assets/Flags/si.svg create mode 100644 WinWARP.Ui/Assets/Flags/sj.svg create mode 100644 WinWARP.Ui/Assets/Flags/sk.svg create mode 100644 WinWARP.Ui/Assets/Flags/sl.svg create mode 100644 WinWARP.Ui/Assets/Flags/sm.svg create mode 100644 WinWARP.Ui/Assets/Flags/sn.svg create mode 100644 WinWARP.Ui/Assets/Flags/so.svg create mode 100644 WinWARP.Ui/Assets/Flags/sr.svg create mode 100644 WinWARP.Ui/Assets/Flags/ss.svg create mode 100644 WinWARP.Ui/Assets/Flags/st.svg create mode 100644 WinWARP.Ui/Assets/Flags/sv.svg create mode 100644 WinWARP.Ui/Assets/Flags/sx.svg create mode 100644 WinWARP.Ui/Assets/Flags/sy.svg create mode 100644 WinWARP.Ui/Assets/Flags/sz.svg create mode 100644 WinWARP.Ui/Assets/Flags/tc.svg create mode 100644 WinWARP.Ui/Assets/Flags/td.svg create mode 100644 WinWARP.Ui/Assets/Flags/tf.svg create mode 100644 WinWARP.Ui/Assets/Flags/tg.svg create mode 100644 WinWARP.Ui/Assets/Flags/th.svg create mode 100644 WinWARP.Ui/Assets/Flags/tj.svg create mode 100644 WinWARP.Ui/Assets/Flags/tk.svg create mode 100644 WinWARP.Ui/Assets/Flags/tl.svg create mode 100644 WinWARP.Ui/Assets/Flags/tm.svg create mode 100644 WinWARP.Ui/Assets/Flags/tn.svg create mode 100644 WinWARP.Ui/Assets/Flags/to.svg create mode 100644 WinWARP.Ui/Assets/Flags/tr.svg create mode 100644 WinWARP.Ui/Assets/Flags/tt.svg create mode 100644 WinWARP.Ui/Assets/Flags/tv.svg create mode 100644 WinWARP.Ui/Assets/Flags/tw.svg create mode 100644 WinWARP.Ui/Assets/Flags/tz.svg create mode 100644 WinWARP.Ui/Assets/Flags/ua.svg create mode 100644 WinWARP.Ui/Assets/Flags/ug.svg create mode 100644 WinWARP.Ui/Assets/Flags/um.svg create mode 100644 WinWARP.Ui/Assets/Flags/un.svg create mode 100644 WinWARP.Ui/Assets/Flags/us.svg create mode 100644 WinWARP.Ui/Assets/Flags/uy.svg create mode 100644 WinWARP.Ui/Assets/Flags/uz.svg create mode 100644 WinWARP.Ui/Assets/Flags/va.svg create mode 100644 WinWARP.Ui/Assets/Flags/vc.svg create mode 100644 WinWARP.Ui/Assets/Flags/ve.svg create mode 100644 WinWARP.Ui/Assets/Flags/vg.svg create mode 100644 WinWARP.Ui/Assets/Flags/vi.svg create mode 100644 WinWARP.Ui/Assets/Flags/vn.svg create mode 100644 WinWARP.Ui/Assets/Flags/vu.svg create mode 100644 WinWARP.Ui/Assets/Flags/wf.svg create mode 100644 WinWARP.Ui/Assets/Flags/ws.svg create mode 100644 WinWARP.Ui/Assets/Flags/xk.svg create mode 100644 WinWARP.Ui/Assets/Flags/xx.svg create mode 100644 WinWARP.Ui/Assets/Flags/ye.svg create mode 100644 WinWARP.Ui/Assets/Flags/yt.svg create mode 100644 WinWARP.Ui/Assets/Flags/za.svg create mode 100644 WinWARP.Ui/Assets/Flags/zm.svg create mode 100644 WinWARP.Ui/Assets/Flags/zw.svg create mode 100644 WinWARP.Ui/Converters/BoolToVisibilityConverter.cs create mode 100644 WinWARP.Ui/Converters/CountryCodeToUriConverter.cs create mode 100644 WinWARP.Ui/Converters/UpdateIntervalToTextConverter.cs create mode 100644 WinWARP.Ui/Helpers/PluralCategory.cs create mode 100644 WinWARP.Ui/Helpers/ServerTemplateSelector.cs create mode 100644 WinWARP.Ui/Helpers/XamlRootTracker.cs create mode 100644 WinWARP.Ui/Services/DialogService.cs create mode 100644 WinWARP.Ui/Views/Components/ServerListElement.xaml create mode 100644 WinWARP.Ui/Views/Components/ServerListElement.xaml.cs create mode 100644 WinWARP.Ui/Views/Dialogs/AddSubscriptionDialog.xaml create mode 100644 WinWARP.Ui/Views/Dialogs/AddSubscriptionDialog.xaml.cs diff --git a/WinWARP.Core/Data/AppDbContext.cs b/WinWARP.Core/Data/AppDbContext.cs index e6d20d8..ba0e952 100644 --- a/WinWARP.Core/Data/AppDbContext.cs +++ b/WinWARP.Core/Data/AppDbContext.cs @@ -10,7 +10,6 @@ public class AppDbContext : DbContext { public DbSet Subscriptions => Set(); - public AppDbContext(DbContextOptions options) : base(options) { diff --git a/WinWARP.Core/Enums/CommonDialogResult.cs b/WinWARP.Core/Enums/CommonDialogResult.cs new file mode 100644 index 0000000..72e634e --- /dev/null +++ b/WinWARP.Core/Enums/CommonDialogResult.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace WinWARP.Core.Enums; + +public enum CommonDialogResult +{ + None, + Primary, + Secondary, + Cancel +} diff --git a/WinWARP.Core/Helper/FlagEmojiParser.cs b/WinWARP.Core/Helper/FlagEmojiParser.cs new file mode 100644 index 0000000..20d7d03 --- /dev/null +++ b/WinWARP.Core/Helper/FlagEmojiParser.cs @@ -0,0 +1,62 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace WinWARP.Core.Helper; + +public static class FlagEmojiParser +{ + private const int RegionalIndicatorStart = 0x1F1E6; // '🇦' + private const int RegionalIndicatorEnd = 0x1F1FF; // '🇿' + + /// + /// Parses a string and returns a list of ISO 3166-1 alpha-2 country codes found as emojis. + /// + public static List ExtractCountryCodes(string text) + { + var countryCodes = new List(); + if (string.IsNullOrEmpty(text)) return countryCodes; + + var i = 0; + int? firstLetterCode = null; + + while (i < text.Length) + { + // Read the 32-bit Unicode code point (handles emoji surrogate pairs) + var codePoint = char.ConvertToUtf32(text, i); + + // Advance the index (surrogate pairs take 2 char slots in .NET strings) + i += char.IsSurrogatePair(text, i) ? 2 : 1; + + // Check if the character is a Regional Indicator Symbol (A-Z flag component) + if (codePoint >= RegionalIndicatorStart && codePoint <= RegionalIndicatorEnd) + { + var letterOffset = codePoint - RegionalIndicatorStart; // 0 for A, 1 for B... + + if (firstLetterCode == null) + { + // This is the first letter of a flag pair + firstLetterCode = letterOffset; + } + else + { + // This is the second letter of a flag pair. Construct the ISO string. + var c1 = (char)('A' + firstLetterCode.Value); + var c2 = (char)('A' + letterOffset); + + countryCodes.Add($"{c1}{c2}"); + + // Reset to look for the next flag + firstLetterCode = null; + } + } + else + { + // If we hit any other character, break any broken/incomplete flag sequences + firstLetterCode = null; + } + } + + return countryCodes; + } +} \ No newline at end of file diff --git a/WinWARP.Core/Messages/DeleteServerItemMessage.cs b/WinWARP.Core/Messages/DeleteServerItemMessage.cs new file mode 100644 index 0000000..ac6b986 --- /dev/null +++ b/WinWARP.Core/Messages/DeleteServerItemMessage.cs @@ -0,0 +1,12 @@ +using System; +using System.Collections.Generic; +using System.Text; +using CommunityToolkit.Mvvm.Messaging.Messages; +using WinWARP.Core.ViewModels; + +namespace WinWARP.Core.Messages; + +public class DeleteServerItemMessage : ValueChangedMessage +{ + public DeleteServerItemMessage(ServerItemViewModel serverItem) : base(serverItem) {} +} diff --git a/WinWARP.Core/Models/Entities/Server.cs b/WinWARP.Core/Models/Entities/Server.cs index c619aea..446b2aa 100644 --- a/WinWARP.Core/Models/Entities/Server.cs +++ b/WinWARP.Core/Models/Entities/Server.cs @@ -14,13 +14,23 @@ public abstract class Server } [Required] - public string Name + public string DefaultTitle { get; set; } [StringLength(100)] - public string CustomName + public string Title + { + get; set; + } = string.Empty; + + public string Region + { + get; set; + } = string.Empty; + + public string ConnectionString { get; set; } = string.Empty; diff --git a/WinWARP.Core/Models/Entities/StandaloneServer.cs b/WinWARP.Core/Models/Entities/StandaloneServer.cs index a9f0a8c..f06d455 100644 --- a/WinWARP.Core/Models/Entities/StandaloneServer.cs +++ b/WinWARP.Core/Models/Entities/StandaloneServer.cs @@ -7,7 +7,6 @@ namespace WinWARP.Core.Models.Entities; public class StandaloneServer : Server { - [Required] public string FilePath { get; set; diff --git a/WinWARP.Core/Models/Entities/SubscriptionServer.cs b/WinWARP.Core/Models/Entities/SubscriptionServer.cs index 5150f91..bd225b1 100644 --- a/WinWARP.Core/Models/Entities/SubscriptionServer.cs +++ b/WinWARP.Core/Models/Entities/SubscriptionServer.cs @@ -10,9 +10,4 @@ public class SubscriptionServer : Server { get; set; } - - public string Region - { - get; set; - } = string.Empty; } diff --git a/WinWARP.Core/Services/Implementations/SubscriptionDbService.cs b/WinWARP.Core/Services/Implementations/SubscriptionDbService.cs index 17ce93a..82aa8d0 100644 --- a/WinWARP.Core/Services/Implementations/SubscriptionDbService.cs +++ b/WinWARP.Core/Services/Implementations/SubscriptionDbService.cs @@ -10,7 +10,7 @@ namespace WinWARP.Core.Services.Implementations; public class SubscriptionDbService : ISubscriptionDbService { - private IDbContextFactory _dbContextFactory; + private readonly IDbContextFactory _dbContextFactory; public SubscriptionDbService(IDbContextFactory dbContextFactory) { diff --git a/WinWARP.Core/Services/Implementations/SubscriptionFetcher.cs b/WinWARP.Core/Services/Implementations/SubscriptionFetcher.cs new file mode 100644 index 0000000..f7144c4 --- /dev/null +++ b/WinWARP.Core/Services/Implementations/SubscriptionFetcher.cs @@ -0,0 +1,35 @@ +using System; +using System.Collections.Generic; +using System.Text; +using WinWARP.Core.Helper; +using WinWARP.Core.Models.Entities; +using WinWARP.Core.Services.Interfaces; + +namespace WinWARP.Core.Services.Implementations; + +public class SubscriptionFetcher : ISubscriptionFetcher +{ + public bool IsUrlValid(string subscriptionUrl) + { + Uri? validatedUri; + if (!Uri.TryCreate(subscriptionUrl, UriKind.Absolute, out validatedUri)) + { + return false; + } + + return validatedUri.Scheme == Uri.UriSchemeHttp || + validatedUri.Scheme == Uri.UriSchemeHttps; + } + + public async Task FetchAsync(string subscriptionUrl) + { + // TODO: Implement the actual fetching logic here, e.g., using HttpClient to get the subscription data from the URL. + await Task.Delay(10); // Simulate an asynchronous operation + return new Subscription + { + DefaultTitle = "Default Subscription", + Link = subscriptionUrl, + Servers = [new() { DefaultTitle = "Default Server", Region = "NO", Title = "Not default title" }] + }; + } +} diff --git a/WinWARP.Core/Services/Interfaces/IDialogService.cs b/WinWARP.Core/Services/Interfaces/IDialogService.cs new file mode 100644 index 0000000..e3c4446 --- /dev/null +++ b/WinWARP.Core/Services/Interfaces/IDialogService.cs @@ -0,0 +1,11 @@ +using System; +using System.Collections.Generic; +using System.Text; +using WinWARP.Core.Enums; + +namespace WinWARP.Core.Services.Interfaces; + +public interface IDialogService +{ + Task<(CommonDialogResult Result, string Title, string URL, int UpdateInterval)> ShowAddSubscriptionAsync(); +} diff --git a/WinWARP.Core/Services/Interfaces/ISubscriptionFetcher.cs b/WinWARP.Core/Services/Interfaces/ISubscriptionFetcher.cs new file mode 100644 index 0000000..f26e2d4 --- /dev/null +++ b/WinWARP.Core/Services/Interfaces/ISubscriptionFetcher.cs @@ -0,0 +1,12 @@ +using System; +using System.Collections.Generic; +using System.Text; +using WinWARP.Core.Models.Entities; + +namespace WinWARP.Core.Services.Interfaces; + +public interface ISubscriptionFetcher +{ + public bool IsUrlValid(string url); + public Task FetchAsync(string url); +} diff --git a/WinWARP.Core/ViewModels/Dialogs/AddSubscriptionViewModel.cs b/WinWARP.Core/ViewModels/Dialogs/AddSubscriptionViewModel.cs new file mode 100644 index 0000000..7c367cb --- /dev/null +++ b/WinWARP.Core/ViewModels/Dialogs/AddSubscriptionViewModel.cs @@ -0,0 +1,36 @@ +using System; +using System.Collections.Generic; +using System.Text; +using CommunityToolkit.Mvvm.ComponentModel; +using WinWARP.Core.Services.Interfaces; + + +namespace WinWARP.Core.ViewModels.Dialogs; + +public partial class AddSubscriptionViewModel(ISubscriptionFetcher subscriptionFetcher, ILocalizationService localizationService) : ObservableObject +{ + private readonly ISubscriptionFetcher _subscriptionFetcher = subscriptionFetcher; + private readonly ILocalizationService _localizationService = localizationService; + + [ObservableProperty] + [NotifyPropertyChangedFor(nameof(CanSubmit))] + public partial string SubscriptionLink + { + get; + set; + } = string.Empty; + + [ObservableProperty] + public partial string CustomName + { + get; set; + } = string.Empty; + + [ObservableProperty] + public partial int UpdateInterval + { + get; set; + } = 0; + + public bool CanSubmit => _subscriptionFetcher.IsUrlValid(SubscriptionLink); +} diff --git a/WinWARP.Core/ViewModels/HomeViewModel.cs b/WinWARP.Core/ViewModels/HomeViewModel.cs index 9f98075..f61d1a0 100644 --- a/WinWARP.Core/ViewModels/HomeViewModel.cs +++ b/WinWARP.Core/ViewModels/HomeViewModel.cs @@ -7,14 +7,9 @@ using WinWARP.Core.Services.Interfaces; namespace WinWARP.Core.ViewModels; -public partial class HomeViewModel : ObservableObject +public partial class HomeViewModel(INavigationService navigationService) : ObservableObject { - private readonly INavigationService _navigationService; - - public HomeViewModel(INavigationService navigationService) - { - _navigationService = navigationService; - } + private readonly INavigationService _navigationService = navigationService; [RelayCommand] private void TestTransition() diff --git a/WinWARP.Core/ViewModels/ServerItemViewModel.cs b/WinWARP.Core/ViewModels/ServerItemViewModel.cs new file mode 100644 index 0000000..2f53357 --- /dev/null +++ b/WinWARP.Core/ViewModels/ServerItemViewModel.cs @@ -0,0 +1,71 @@ +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Text; +using CommunityToolkit.Mvvm.ComponentModel; +using CommunityToolkit.Mvvm.Input; +using WinWARP.Core.Models.Entities; + +namespace WinWARP.Core.ViewModels; + +public abstract partial class ServerItemViewModel : ObservableObject +{ + public ServerItemViewModel(Server server) + { + Id = server.Id; + DefaultTitle = server.DefaultTitle; + Title = server.Title; + ConnectionString = server.ConnectionString; + Region = server.Region; + } + + public int Id + { + get; set; + } + + [ObservableProperty] + public partial string DefaultTitle + { + get; set; + } = string.Empty; + + [ObservableProperty] + public partial string Title + { + get; set; + } = string.Empty; + + [ObservableProperty] + public partial string ConnectionString + { + get; set; + } = string.Empty; + + [ObservableProperty] + public partial string Region + { + get; set; + } = string.Empty; + + [RelayCommand] + public abstract Task DeleteAsync(); + + public abstract Task EditNameAsync(); + + [ObservableProperty] + public partial bool IsNameEditing + { + get; set; + } = false; + + [RelayCommand] + public void EditName() + { + if (IsNameEditing) + EditNameAsync(); + IsNameEditing = !IsNameEditing; + } + + public ObservableCollection Tags { get; } = []; +} diff --git a/WinWARP.Core/ViewModels/SubsSettingsViewModel.cs b/WinWARP.Core/ViewModels/SubsSettingsViewModel.cs index 9e7ae2f..ca2d178 100644 --- a/WinWARP.Core/ViewModels/SubsSettingsViewModel.cs +++ b/WinWARP.Core/ViewModels/SubsSettingsViewModel.cs @@ -1,19 +1,32 @@ using System; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Diagnostics; using System.Text; using CommunityToolkit.Mvvm.ComponentModel; using CommunityToolkit.Mvvm.Input; +using CommunityToolkit.Mvvm.Messaging; +using WinWARP.Core.Enums; +using WinWARP.Core.Messages; using WinWARP.Core.Models.Entities; using WinWARP.Core.Services.Interfaces; +using WinWARP.Core.ViewModels.Wrappers; namespace WinWARP.Core.ViewModels; -public partial class SubsSettingsViewModel(ISubscriptionDbService dbService) : ObservableObject +public partial class SubsSettingsViewModel(ISubscriptionDbService dbService, ISubscriptionFetcher fetcher, IDialogService dialogService) : ObservableRecipient, IRecipient { private readonly ISubscriptionDbService _dbService = dbService; + private readonly ISubscriptionFetcher _fetcher = fetcher; + private readonly IDialogService _dialogService = dialogService; - public ObservableCollection Subscriptions { get; } = []; + protected override void OnActivated() + { + Messenger.RegisterAll(this); + } + + public ObservableCollection Subscriptions { get; } = []; + public ObservableCollection Servers { get; } = []; public async Task LoadSubscriptionsAsync() { @@ -21,33 +34,49 @@ public partial class SubsSettingsViewModel(ISubscriptionDbService dbService) : O var data = await _dbService.GetSubscriptionsAsync(); foreach (var subscription in data) { - Subscriptions.Add(subscription); + Subscriptions.Add(new SubscriptionViewModel(subscription)); } + + Servers.Add(new StandaloneServerViewModel(new StandaloneServer() { Region = "NO", Title = "Not default title", DefaultTitle = "Default title" }) { Tags = { "VLESS", "GRPC", "REALITY" } }); + + ShowLoadingIndicator = false; } [ObservableProperty] - [NotifyCanExecuteChangedFor(nameof(AddSubscriptionCommand))] - public partial string NewSubscriptionLink { get; set; } = string.Empty; + public partial bool ShowLoadingIndicator + { + get; set; + } = false; - [RelayCommand(CanExecute = nameof(CanAddSubscription))] + [RelayCommand] public async Task AddSubscriptionAsync() { - if (!string.IsNullOrWhiteSpace(NewSubscriptionLink)) + (var result, var customName, var subscriptionLink, var updateInterval) = await _dialogService.ShowAddSubscriptionAsync(); + if (result is CommonDialogResult.Cancel or CommonDialogResult.None or CommonDialogResult.Secondary) return; + + ShowLoadingIndicator = true; + + var subscription = await _fetcher.FetchAsync(subscriptionLink); + // TODO: error handling here and in the fetcher, dialog that will display exception + if (subscription == null) { - var subscription = new Subscription - { - Link = NewSubscriptionLink, - Title = "New Subscription", - UpdateInterval = 60 // Default update interval - }; - await _dbService.AddSubscriptionAsync(subscription); - Subscriptions.Add(subscription); - NewSubscriptionLink = string.Empty; + ShowLoadingIndicator = false; + return; } + subscription.Title = customName; + subscription.UpdateInterval = updateInterval; + + Subscriptions.Add(new SubscriptionViewModel(subscription)); + foreach (var server in subscription.Servers) + { + Servers.Add(new SubscriptionServerViewModel(server) { Tags = { "VLESS", "WS", "TLS" } }); + } + ShowLoadingIndicator = false; } - private bool CanAddSubscription() + public void Receive(DeleteServerItemMessage message) { - return !string.IsNullOrWhiteSpace(NewSubscriptionLink); + Debug.WriteLine($"Deleting server: {message.Value.Title}"); + // TODO: add deletion logic } } diff --git a/WinWARP.Core/ViewModels/Wrappers/StandaloneServerViewModel.cs b/WinWARP.Core/ViewModels/Wrappers/StandaloneServerViewModel.cs new file mode 100644 index 0000000..4c0d08d --- /dev/null +++ b/WinWARP.Core/ViewModels/Wrappers/StandaloneServerViewModel.cs @@ -0,0 +1,31 @@ +using System; +using System.Collections.Generic; +using System.Text; +using CommunityToolkit.Mvvm.ComponentModel; +using WinWARP.Core.Models.Entities; + +namespace WinWARP.Core.ViewModels.Wrappers; + +public partial class StandaloneServerViewModel : ServerItemViewModel +{ + public StandaloneServerViewModel(StandaloneServer server) : base(server) + { + FilePath = server.FilePath; + } + + [ObservableProperty] + public partial string FilePath + { + get; set; + } = string.Empty; + + public async override Task DeleteAsync() + { + + } + + public async override Task EditNameAsync() + { + + } +} \ No newline at end of file diff --git a/WinWARP.Core/ViewModels/Wrappers/SubscriptionServerViewModel.cs b/WinWARP.Core/ViewModels/Wrappers/SubscriptionServerViewModel.cs new file mode 100644 index 0000000..f1aeadb --- /dev/null +++ b/WinWARP.Core/ViewModels/Wrappers/SubscriptionServerViewModel.cs @@ -0,0 +1,27 @@ +using System; +using System.Collections.Generic; +using System.Text; +using CommunityToolkit.Mvvm.ComponentModel; +using CommunityToolkit.Mvvm.Messaging; +using Microsoft.EntityFrameworkCore.Storage; +using WinWARP.Core.Messages; +using WinWARP.Core.Models.Entities; + +namespace WinWARP.Core.ViewModels.Wrappers; + +public partial class SubscriptionServerViewModel : ServerItemViewModel +{ + public SubscriptionServerViewModel(SubscriptionServer server) : base(server) + { + } + + public async override Task DeleteAsync() + { + WeakReferenceMessenger.Default.Send(new DeleteServerItemMessage(this)); + } + + public async override Task EditNameAsync() + { + + } +} diff --git a/WinWARP.Ui/App.xaml.cs b/WinWARP.Ui/App.xaml.cs index 87f01f3..f8ebf22 100644 --- a/WinWARP.Ui/App.xaml.cs +++ b/WinWARP.Ui/App.xaml.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Diagnostics; using System.IO; using System.Linq; using System.Runtime.InteropServices.WindowsRuntime; @@ -11,24 +12,28 @@ using Microsoft.UI.Xaml.Controls; using Microsoft.UI.Xaml.Controls.Primitives; using Microsoft.UI.Xaml.Data; using Microsoft.UI.Xaml.Input; +using Microsoft.UI.Xaml.Markup; using Microsoft.UI.Xaml.Media; using Microsoft.UI.Xaml.Navigation; +using Microsoft.UI.Xaml.XamlTypeInfo; using Windows.ApplicationModel; using Windows.ApplicationModel.Activation; using Windows.Foundation; using Windows.Foundation.Collections; using Windows.UI.ApplicationSettings; using WinUI3Localizer; -using WinWARP.Core.ViewModels; -using WinWARP.Core.ViewModels.ConfigSettings; -using WinWARP.Core.ViewModels.Settings; using WinWARP.Core.Data; -using WinWARP.Ui.Services; -using WinWARP.Ui.Views; -using WinWARP.Ui.Views.Settings; using WinWARP.Core.Services.Implementations; using WinWARP.Core.Services.Interfaces; -using System.Diagnostics; +using WinWARP.Core.ViewModels; +using WinWARP.Core.ViewModels.ConfigSettings; +using WinWARP.Core.ViewModels.Dialogs; +using WinWARP.Core.ViewModels.Settings; +using WinWARP.Ui.Helpers; +using WinWARP.Ui.Services; +using WinWARP.Ui.Views; +using WinWARP.Ui.Views.Dialogs; +using WinWARP.Ui.Views.Settings; // To learn more about WinUI, the WinUI project structure, // and more about our project templates, see: http://aka.ms/winui-project-info. @@ -98,9 +103,27 @@ public partial class App : Application services.AddTransient(); services.AddTransient(); + services.AddTransient(); + // Views + services.AddTransient(); + services.AddTransient(); + services.AddTransient(); + services.AddTransient(); services.AddTransient(); - + + services.AddTransient(); + services.AddTransient(); + services.AddTransient(); + services.AddTransient(); + services.AddTransient(); + services.AddTransient(); + + services.AddSingleton(); + + // Dialogs + services.AddTransient(); + // UI services var navigationService = new NavigationService(); navigationService.Configure(typeof(HomeViewModel), typeof(HomePage)); @@ -121,6 +144,10 @@ public partial class App : Application services.AddSingleton(); + services.AddSingleton(); + + services.AddSingleton(); + return services.BuildServiceProvider(); } diff --git a/WinWARP.Ui/Assets/Flags/ad.svg b/WinWARP.Ui/Assets/Flags/ad.svg new file mode 100644 index 0000000..f10067e --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/ad.svg @@ -0,0 +1,148 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/ae.svg b/WinWARP.Ui/Assets/Flags/ae.svg new file mode 100644 index 0000000..b59e113 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/ae.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/af.svg b/WinWARP.Ui/Assets/Flags/af.svg new file mode 100644 index 0000000..9f382e0 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/af.svg @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/ag.svg b/WinWARP.Ui/Assets/Flags/ag.svg new file mode 100644 index 0000000..9b951b6 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/ag.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/ai.svg b/WinWARP.Ui/Assets/Flags/ai.svg new file mode 100644 index 0000000..dfde89a --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/ai.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/al.svg b/WinWARP.Ui/Assets/Flags/al.svg new file mode 100644 index 0000000..1056793 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/al.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/WinWARP.Ui/Assets/Flags/am.svg b/WinWARP.Ui/Assets/Flags/am.svg new file mode 100644 index 0000000..a188adf --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/am.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/WinWARP.Ui/Assets/Flags/ao.svg b/WinWARP.Ui/Assets/Flags/ao.svg new file mode 100644 index 0000000..067ffc4 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/ao.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/aq.svg b/WinWARP.Ui/Assets/Flags/aq.svg new file mode 100644 index 0000000..28acee5 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/aq.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/WinWARP.Ui/Assets/Flags/ar.svg b/WinWARP.Ui/Assets/Flags/ar.svg new file mode 100644 index 0000000..1cfbbd9 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/ar.svg @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/arab.svg b/WinWARP.Ui/Assets/Flags/arab.svg new file mode 100644 index 0000000..aa7c958 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/arab.svg @@ -0,0 +1,109 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/as.svg b/WinWARP.Ui/Assets/Flags/as.svg new file mode 100644 index 0000000..4c7a9bc --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/as.svg @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/asean.svg b/WinWARP.Ui/Assets/Flags/asean.svg new file mode 100644 index 0000000..8536142 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/asean.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/at.svg b/WinWARP.Ui/Assets/Flags/at.svg new file mode 100644 index 0000000..758ced6 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/at.svg @@ -0,0 +1,4 @@ + + + + diff --git a/WinWARP.Ui/Assets/Flags/au.svg b/WinWARP.Ui/Assets/Flags/au.svg new file mode 100644 index 0000000..38bb245 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/au.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/aw.svg b/WinWARP.Ui/Assets/Flags/aw.svg new file mode 100644 index 0000000..1f03d61 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/aw.svg @@ -0,0 +1,186 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/ax.svg b/WinWARP.Ui/Assets/Flags/ax.svg new file mode 100644 index 0000000..481d2a3 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/ax.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/az.svg b/WinWARP.Ui/Assets/Flags/az.svg new file mode 100644 index 0000000..d692e22 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/az.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/ba.svg b/WinWARP.Ui/Assets/Flags/ba.svg new file mode 100644 index 0000000..456ca12 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/ba.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/bb.svg b/WinWARP.Ui/Assets/Flags/bb.svg new file mode 100644 index 0000000..9a42841 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/bb.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/bd.svg b/WinWARP.Ui/Assets/Flags/bd.svg new file mode 100644 index 0000000..86fcfba --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/bd.svg @@ -0,0 +1,4 @@ + + + + diff --git a/WinWARP.Ui/Assets/Flags/be.svg b/WinWARP.Ui/Assets/Flags/be.svg new file mode 100644 index 0000000..31d6210 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/be.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/bf.svg b/WinWARP.Ui/Assets/Flags/bf.svg new file mode 100644 index 0000000..a5078df --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/bf.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/bg.svg b/WinWARP.Ui/Assets/Flags/bg.svg new file mode 100644 index 0000000..78412c5 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/bg.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/WinWARP.Ui/Assets/Flags/bh.svg b/WinWARP.Ui/Assets/Flags/bh.svg new file mode 100644 index 0000000..2d131aa --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/bh.svg @@ -0,0 +1,4 @@ + + + + diff --git a/WinWARP.Ui/Assets/Flags/bi.svg b/WinWARP.Ui/Assets/Flags/bi.svg new file mode 100644 index 0000000..36a0d3a --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/bi.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/bj.svg b/WinWARP.Ui/Assets/Flags/bj.svg new file mode 100644 index 0000000..bb27414 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/bj.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/bl.svg b/WinWARP.Ui/Assets/Flags/bl.svg new file mode 100644 index 0000000..65550d9 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/bl.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/bm.svg b/WinWARP.Ui/Assets/Flags/bm.svg new file mode 100644 index 0000000..0274d14 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/bm.svg @@ -0,0 +1,97 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/bn.svg b/WinWARP.Ui/Assets/Flags/bn.svg new file mode 100644 index 0000000..8cb06d1 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/bn.svg @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/bo.svg b/WinWARP.Ui/Assets/Flags/bo.svg new file mode 100644 index 0000000..b4830ed --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/bo.svg @@ -0,0 +1,674 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/bq.svg b/WinWARP.Ui/Assets/Flags/bq.svg new file mode 100644 index 0000000..4b9168e --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/bq.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/WinWARP.Ui/Assets/Flags/br.svg b/WinWARP.Ui/Assets/Flags/br.svg new file mode 100644 index 0000000..d6095d7 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/br.svg @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/bs.svg b/WinWARP.Ui/Assets/Flags/bs.svg new file mode 100644 index 0000000..0faa4bb --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/bs.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/bt.svg b/WinWARP.Ui/Assets/Flags/bt.svg new file mode 100644 index 0000000..15eafc7 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/bt.svg @@ -0,0 +1,89 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/bv.svg b/WinWARP.Ui/Assets/Flags/bv.svg new file mode 100644 index 0000000..dcc6ad1 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/bv.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/bw.svg b/WinWARP.Ui/Assets/Flags/bw.svg new file mode 100644 index 0000000..328e13c --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/bw.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/by.svg b/WinWARP.Ui/Assets/Flags/by.svg new file mode 100644 index 0000000..7d2ef67 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/by.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/bz.svg b/WinWARP.Ui/Assets/Flags/bz.svg new file mode 100644 index 0000000..913392e --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/bz.svg @@ -0,0 +1,145 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/ca.svg b/WinWARP.Ui/Assets/Flags/ca.svg new file mode 100644 index 0000000..1c0864c --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/ca.svg @@ -0,0 +1,4 @@ + + + + diff --git a/WinWARP.Ui/Assets/Flags/cc.svg b/WinWARP.Ui/Assets/Flags/cc.svg new file mode 100644 index 0000000..73fc800 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/cc.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/cd.svg b/WinWARP.Ui/Assets/Flags/cd.svg new file mode 100644 index 0000000..ea17728 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/cd.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/cefta.svg b/WinWARP.Ui/Assets/Flags/cefta.svg new file mode 100644 index 0000000..ff1a19b --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/cefta.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/cf.svg b/WinWARP.Ui/Assets/Flags/cf.svg new file mode 100644 index 0000000..b0625db --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/cf.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/cg.svg b/WinWARP.Ui/Assets/Flags/cg.svg new file mode 100644 index 0000000..f786884 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/cg.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/ch.svg b/WinWARP.Ui/Assets/Flags/ch.svg new file mode 100644 index 0000000..52578bf --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/ch.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/ci.svg b/WinWARP.Ui/Assets/Flags/ci.svg new file mode 100644 index 0000000..2abf641 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/ci.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/ck.svg b/WinWARP.Ui/Assets/Flags/ck.svg new file mode 100644 index 0000000..43a1057 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/ck.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/cl.svg b/WinWARP.Ui/Assets/Flags/cl.svg new file mode 100644 index 0000000..5fb6096 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/cl.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/cm.svg b/WinWARP.Ui/Assets/Flags/cm.svg new file mode 100644 index 0000000..ed4952b --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/cm.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/cn.svg b/WinWARP.Ui/Assets/Flags/cn.svg new file mode 100644 index 0000000..e152f01 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/cn.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/co.svg b/WinWARP.Ui/Assets/Flags/co.svg new file mode 100644 index 0000000..5804bfe --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/co.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/cp.svg b/WinWARP.Ui/Assets/Flags/cp.svg new file mode 100644 index 0000000..ea3bfdc --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/cp.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/cr.svg b/WinWARP.Ui/Assets/Flags/cr.svg new file mode 100644 index 0000000..4e7889e --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/cr.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/cu.svg b/WinWARP.Ui/Assets/Flags/cu.svg new file mode 100644 index 0000000..a284902 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/cu.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/cv.svg b/WinWARP.Ui/Assets/Flags/cv.svg new file mode 100644 index 0000000..1170cd7 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/cv.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/cw.svg b/WinWARP.Ui/Assets/Flags/cw.svg new file mode 100644 index 0000000..57062ab --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/cw.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/cx.svg b/WinWARP.Ui/Assets/Flags/cx.svg new file mode 100644 index 0000000..73c0240 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/cx.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/cy.svg b/WinWARP.Ui/Assets/Flags/cy.svg new file mode 100644 index 0000000..3165d2d --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/cy.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/cz.svg b/WinWARP.Ui/Assets/Flags/cz.svg new file mode 100644 index 0000000..dcd0a6b --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/cz.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/WinWARP.Ui/Assets/Flags/de.svg b/WinWARP.Ui/Assets/Flags/de.svg new file mode 100644 index 0000000..05a0a69 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/de.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/WinWARP.Ui/Assets/Flags/dg.svg b/WinWARP.Ui/Assets/Flags/dg.svg new file mode 100644 index 0000000..8085a08 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/dg.svg @@ -0,0 +1,130 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/dj.svg b/WinWARP.Ui/Assets/Flags/dj.svg new file mode 100644 index 0000000..f5534d2 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/dj.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/dk.svg b/WinWARP.Ui/Assets/Flags/dk.svg new file mode 100644 index 0000000..5aaaa19 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/dk.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/WinWARP.Ui/Assets/Flags/dm.svg b/WinWARP.Ui/Assets/Flags/dm.svg new file mode 100644 index 0000000..cb7c958 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/dm.svg @@ -0,0 +1,152 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/do.svg b/WinWARP.Ui/Assets/Flags/do.svg new file mode 100644 index 0000000..727d669 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/do.svg @@ -0,0 +1,122 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/dz.svg b/WinWARP.Ui/Assets/Flags/dz.svg new file mode 100644 index 0000000..8abcd25 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/dz.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/WinWARP.Ui/Assets/Flags/eac.svg b/WinWARP.Ui/Assets/Flags/eac.svg new file mode 100644 index 0000000..ee6905e --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/eac.svg @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/ec.svg b/WinWARP.Ui/Assets/Flags/ec.svg new file mode 100644 index 0000000..e11e6ef --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/ec.svg @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/ee.svg b/WinWARP.Ui/Assets/Flags/ee.svg new file mode 100644 index 0000000..5a6a7e3 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/ee.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/WinWARP.Ui/Assets/Flags/eg.svg b/WinWARP.Ui/Assets/Flags/eg.svg new file mode 100644 index 0000000..0ce9c65 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/eg.svg @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/eh.svg b/WinWARP.Ui/Assets/Flags/eh.svg new file mode 100644 index 0000000..ae509fa --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/eh.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/er.svg b/WinWARP.Ui/Assets/Flags/er.svg new file mode 100644 index 0000000..1a4891e --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/er.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/es-ct.svg b/WinWARP.Ui/Assets/Flags/es-ct.svg new file mode 100644 index 0000000..a06a2e3 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/es-ct.svg @@ -0,0 +1,4 @@ + + + + diff --git a/WinWARP.Ui/Assets/Flags/es-ga.svg b/WinWARP.Ui/Assets/Flags/es-ga.svg new file mode 100644 index 0000000..ccbb9f5 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/es-ga.svg @@ -0,0 +1,187 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/es-pv.svg b/WinWARP.Ui/Assets/Flags/es-pv.svg new file mode 100644 index 0000000..7d383ed --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/es-pv.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/WinWARP.Ui/Assets/Flags/es.svg b/WinWARP.Ui/Assets/Flags/es.svg new file mode 100644 index 0000000..6bfa092 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/es.svg @@ -0,0 +1,547 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/et.svg b/WinWARP.Ui/Assets/Flags/et.svg new file mode 100644 index 0000000..eb7f3c4 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/et.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/eu.svg b/WinWARP.Ui/Assets/Flags/eu.svg new file mode 100644 index 0000000..4a07fbe --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/eu.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/fi.svg b/WinWARP.Ui/Assets/Flags/fi.svg new file mode 100644 index 0000000..aba2ef3 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/fi.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/WinWARP.Ui/Assets/Flags/fj.svg b/WinWARP.Ui/Assets/Flags/fj.svg new file mode 100644 index 0000000..e1c44ee --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/fj.svg @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/fk.svg b/WinWARP.Ui/Assets/Flags/fk.svg new file mode 100644 index 0000000..352eb51 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/fk.svg @@ -0,0 +1,89 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/fm.svg b/WinWARP.Ui/Assets/Flags/fm.svg new file mode 100644 index 0000000..4f7d313 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/fm.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/fo.svg b/WinWARP.Ui/Assets/Flags/fo.svg new file mode 100644 index 0000000..eec9945 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/fo.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/fr.svg b/WinWARP.Ui/Assets/Flags/fr.svg new file mode 100644 index 0000000..0f60170 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/fr.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/WinWARP.Ui/Assets/Flags/ga.svg b/WinWARP.Ui/Assets/Flags/ga.svg new file mode 100644 index 0000000..113a5b5 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/ga.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/gb-eng.svg b/WinWARP.Ui/Assets/Flags/gb-eng.svg new file mode 100644 index 0000000..ee48fed --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/gb-eng.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/WinWARP.Ui/Assets/Flags/gb-nir.svg b/WinWARP.Ui/Assets/Flags/gb-nir.svg new file mode 100644 index 0000000..b92e69f --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/gb-nir.svg @@ -0,0 +1,131 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/gb-sct.svg b/WinWARP.Ui/Assets/Flags/gb-sct.svg new file mode 100644 index 0000000..44d38cc --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/gb-sct.svg @@ -0,0 +1,4 @@ + + + + diff --git a/WinWARP.Ui/Assets/Flags/gb-wls.svg b/WinWARP.Ui/Assets/Flags/gb-wls.svg new file mode 100644 index 0000000..5115b59 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/gb-wls.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/gb.svg b/WinWARP.Ui/Assets/Flags/gb.svg new file mode 100644 index 0000000..ce4d1e0 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/gb.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/gd.svg b/WinWARP.Ui/Assets/Flags/gd.svg new file mode 100644 index 0000000..3159c67 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/gd.svg @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/ge.svg b/WinWARP.Ui/Assets/Flags/ge.svg new file mode 100644 index 0000000..d3dc729 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/ge.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/gf.svg b/WinWARP.Ui/Assets/Flags/gf.svg new file mode 100644 index 0000000..9cf5aa2 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/gf.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/WinWARP.Ui/Assets/Flags/gg.svg b/WinWARP.Ui/Assets/Flags/gg.svg new file mode 100644 index 0000000..480f550 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/gg.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/gh.svg b/WinWARP.Ui/Assets/Flags/gh.svg new file mode 100644 index 0000000..a64271b --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/gh.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/gi.svg b/WinWARP.Ui/Assets/Flags/gi.svg new file mode 100644 index 0000000..fe465ea --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/gi.svg @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/gl.svg b/WinWARP.Ui/Assets/Flags/gl.svg new file mode 100644 index 0000000..eaa817b --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/gl.svg @@ -0,0 +1,4 @@ + + + + diff --git a/WinWARP.Ui/Assets/Flags/gm.svg b/WinWARP.Ui/Assets/Flags/gm.svg new file mode 100644 index 0000000..2a8f724 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/gm.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/gn.svg b/WinWARP.Ui/Assets/Flags/gn.svg new file mode 100644 index 0000000..ae81f9d --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/gn.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/gp.svg b/WinWARP.Ui/Assets/Flags/gp.svg new file mode 100644 index 0000000..9dd8e3b --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/gp.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/WinWARP.Ui/Assets/Flags/gq.svg b/WinWARP.Ui/Assets/Flags/gq.svg new file mode 100644 index 0000000..3a991a1 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/gq.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/gr.svg b/WinWARP.Ui/Assets/Flags/gr.svg new file mode 100644 index 0000000..a268830 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/gr.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/gs.svg b/WinWARP.Ui/Assets/Flags/gs.svg new file mode 100644 index 0000000..cf596f6 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/gs.svg @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/gt.svg b/WinWARP.Ui/Assets/Flags/gt.svg new file mode 100644 index 0000000..b736d28 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/gt.svg @@ -0,0 +1,204 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/gu.svg b/WinWARP.Ui/Assets/Flags/gu.svg new file mode 100644 index 0000000..3f4d3da --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/gu.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/gw.svg b/WinWARP.Ui/Assets/Flags/gw.svg new file mode 100644 index 0000000..61a0548 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/gw.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/gy.svg b/WinWARP.Ui/Assets/Flags/gy.svg new file mode 100644 index 0000000..35e2f08 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/gy.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/hk.svg b/WinWARP.Ui/Assets/Flags/hk.svg new file mode 100644 index 0000000..eef02a1 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/hk.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/hm.svg b/WinWARP.Ui/Assets/Flags/hm.svg new file mode 100644 index 0000000..1f4d007 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/hm.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/hn.svg b/WinWARP.Ui/Assets/Flags/hn.svg new file mode 100644 index 0000000..847df20 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/hn.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/hr.svg b/WinWARP.Ui/Assets/Flags/hr.svg new file mode 100644 index 0000000..d8719a4 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/hr.svg @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/ht.svg b/WinWARP.Ui/Assets/Flags/ht.svg new file mode 100644 index 0000000..101bd59 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/ht.svg @@ -0,0 +1,116 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/hu.svg b/WinWARP.Ui/Assets/Flags/hu.svg new file mode 100644 index 0000000..088242d --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/hu.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/ic.svg b/WinWARP.Ui/Assets/Flags/ic.svg new file mode 100644 index 0000000..096603d --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/ic.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/id.svg b/WinWARP.Ui/Assets/Flags/id.svg new file mode 100644 index 0000000..df08018 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/id.svg @@ -0,0 +1,4 @@ + + + + diff --git a/WinWARP.Ui/Assets/Flags/ie.svg b/WinWARP.Ui/Assets/Flags/ie.svg new file mode 100644 index 0000000..e13de22 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/ie.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/il.svg b/WinWARP.Ui/Assets/Flags/il.svg new file mode 100644 index 0000000..0a2a6d9 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/il.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/im.svg b/WinWARP.Ui/Assets/Flags/im.svg new file mode 100644 index 0000000..05c3fa4 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/im.svg @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/in.svg b/WinWARP.Ui/Assets/Flags/in.svg new file mode 100644 index 0000000..26a02cf --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/in.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/io.svg b/WinWARP.Ui/Assets/Flags/io.svg new file mode 100644 index 0000000..9ce776a --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/io.svg @@ -0,0 +1,130 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/iq.svg b/WinWARP.Ui/Assets/Flags/iq.svg new file mode 100644 index 0000000..d354c99 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/iq.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/ir.svg b/WinWARP.Ui/Assets/Flags/ir.svg new file mode 100644 index 0000000..66537b6 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/ir.svg @@ -0,0 +1,219 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/is.svg b/WinWARP.Ui/Assets/Flags/is.svg new file mode 100644 index 0000000..26510b9 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/is.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/it.svg b/WinWARP.Ui/Assets/Flags/it.svg new file mode 100644 index 0000000..b9596d0 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/it.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/je.svg b/WinWARP.Ui/Assets/Flags/je.svg new file mode 100644 index 0000000..52c6645 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/je.svg @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/jm.svg b/WinWARP.Ui/Assets/Flags/jm.svg new file mode 100644 index 0000000..07f023c --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/jm.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/jo.svg b/WinWARP.Ui/Assets/Flags/jo.svg new file mode 100644 index 0000000..fbbd681 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/jo.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/jp.svg b/WinWARP.Ui/Assets/Flags/jp.svg new file mode 100644 index 0000000..118686a --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/jp.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/ke.svg b/WinWARP.Ui/Assets/Flags/ke.svg new file mode 100644 index 0000000..09168c2 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/ke.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/kg.svg b/WinWARP.Ui/Assets/Flags/kg.svg new file mode 100644 index 0000000..732b2f1 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/kg.svg @@ -0,0 +1,4 @@ + + + + diff --git a/WinWARP.Ui/Assets/Flags/kh.svg b/WinWARP.Ui/Assets/Flags/kh.svg new file mode 100644 index 0000000..567577a --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/kh.svg @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/ki.svg b/WinWARP.Ui/Assets/Flags/ki.svg new file mode 100644 index 0000000..02d7569 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/ki.svg @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/km.svg b/WinWARP.Ui/Assets/Flags/km.svg new file mode 100644 index 0000000..b19fd10 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/km.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/kn.svg b/WinWARP.Ui/Assets/Flags/kn.svg new file mode 100644 index 0000000..42d5adf --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/kn.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/kp.svg b/WinWARP.Ui/Assets/Flags/kp.svg new file mode 100644 index 0000000..67f3338 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/kp.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/kr.svg b/WinWARP.Ui/Assets/Flags/kr.svg new file mode 100644 index 0000000..af3d35e --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/kr.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/kw.svg b/WinWARP.Ui/Assets/Flags/kw.svg new file mode 100644 index 0000000..b2fe54f --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/kw.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/ky.svg b/WinWARP.Ui/Assets/Flags/ky.svg new file mode 100644 index 0000000..72e5164 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/ky.svg @@ -0,0 +1,103 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/kz.svg b/WinWARP.Ui/Assets/Flags/kz.svg new file mode 100644 index 0000000..c65c5d5 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/kz.svg @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/la.svg b/WinWARP.Ui/Assets/Flags/la.svg new file mode 100644 index 0000000..af70d0d --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/la.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/lb.svg b/WinWARP.Ui/Assets/Flags/lb.svg new file mode 100644 index 0000000..a5ffc76 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/lb.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/lc.svg b/WinWARP.Ui/Assets/Flags/lc.svg new file mode 100644 index 0000000..aa18fac --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/lc.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/li.svg b/WinWARP.Ui/Assets/Flags/li.svg new file mode 100644 index 0000000..436dfc5 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/li.svg @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/lk.svg b/WinWARP.Ui/Assets/Flags/lk.svg new file mode 100644 index 0000000..2ac8183 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/lk.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/lr.svg b/WinWARP.Ui/Assets/Flags/lr.svg new file mode 100644 index 0000000..74382ab --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/lr.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/ls.svg b/WinWARP.Ui/Assets/Flags/ls.svg new file mode 100644 index 0000000..605c087 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/ls.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/lt.svg b/WinWARP.Ui/Assets/Flags/lt.svg new file mode 100644 index 0000000..52ada94 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/lt.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/lu.svg b/WinWARP.Ui/Assets/Flags/lu.svg new file mode 100644 index 0000000..037c315 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/lu.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/WinWARP.Ui/Assets/Flags/lv.svg b/WinWARP.Ui/Assets/Flags/lv.svg new file mode 100644 index 0000000..5af883c --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/lv.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/ly.svg b/WinWARP.Ui/Assets/Flags/ly.svg new file mode 100644 index 0000000..4375a9e --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/ly.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/ma.svg b/WinWARP.Ui/Assets/Flags/ma.svg new file mode 100644 index 0000000..8041667 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/ma.svg @@ -0,0 +1,4 @@ + + + + diff --git a/WinWARP.Ui/Assets/Flags/mc.svg b/WinWARP.Ui/Assets/Flags/mc.svg new file mode 100644 index 0000000..04173a4 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/mc.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/md.svg b/WinWARP.Ui/Assets/Flags/md.svg new file mode 100644 index 0000000..f204511 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/md.svg @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/me.svg b/WinWARP.Ui/Assets/Flags/me.svg new file mode 100644 index 0000000..25c6b28 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/me.svg @@ -0,0 +1,118 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/mf.svg b/WinWARP.Ui/Assets/Flags/mf.svg new file mode 100644 index 0000000..8d3285b --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/mf.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/WinWARP.Ui/Assets/Flags/mg.svg b/WinWARP.Ui/Assets/Flags/mg.svg new file mode 100644 index 0000000..4f901ca --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/mg.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/mh.svg b/WinWARP.Ui/Assets/Flags/mh.svg new file mode 100644 index 0000000..1db268d --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/mh.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/mk.svg b/WinWARP.Ui/Assets/Flags/mk.svg new file mode 100644 index 0000000..0ee923a --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/mk.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/WinWARP.Ui/Assets/Flags/ml.svg b/WinWARP.Ui/Assets/Flags/ml.svg new file mode 100644 index 0000000..665d6b2 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/ml.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/mm.svg b/WinWARP.Ui/Assets/Flags/mm.svg new file mode 100644 index 0000000..391f0c7 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/mm.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/mn.svg b/WinWARP.Ui/Assets/Flags/mn.svg new file mode 100644 index 0000000..0df5211 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/mn.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/mo.svg b/WinWARP.Ui/Assets/Flags/mo.svg new file mode 100644 index 0000000..50624d7 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/mo.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/mp.svg b/WinWARP.Ui/Assets/Flags/mp.svg new file mode 100644 index 0000000..27e8980 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/mp.svg @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/mq.svg b/WinWARP.Ui/Assets/Flags/mq.svg new file mode 100644 index 0000000..dcf0054 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/mq.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/WinWARP.Ui/Assets/Flags/mr.svg b/WinWARP.Ui/Assets/Flags/mr.svg new file mode 100644 index 0000000..d06c5b8 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/mr.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/ms.svg b/WinWARP.Ui/Assets/Flags/ms.svg new file mode 100644 index 0000000..53baf7c --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/ms.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/mt.svg b/WinWARP.Ui/Assets/Flags/mt.svg new file mode 100644 index 0000000..bcc01dd --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/mt.svg @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/mu.svg b/WinWARP.Ui/Assets/Flags/mu.svg new file mode 100644 index 0000000..2afe1d3 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/mu.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/mv.svg b/WinWARP.Ui/Assets/Flags/mv.svg new file mode 100644 index 0000000..c9a6c5b --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/mv.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/mw.svg b/WinWARP.Ui/Assets/Flags/mw.svg new file mode 100644 index 0000000..576ba8c --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/mw.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/mx.svg b/WinWARP.Ui/Assets/Flags/mx.svg new file mode 100644 index 0000000..2b371e7 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/mx.svg @@ -0,0 +1,377 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/my.svg b/WinWARP.Ui/Assets/Flags/my.svg new file mode 100644 index 0000000..4f62c7d --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/my.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/mz.svg b/WinWARP.Ui/Assets/Flags/mz.svg new file mode 100644 index 0000000..e1e1569 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/mz.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/na.svg b/WinWARP.Ui/Assets/Flags/na.svg new file mode 100644 index 0000000..36ac8d7 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/na.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/nc.svg b/WinWARP.Ui/Assets/Flags/nc.svg new file mode 100644 index 0000000..6226ebc --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/nc.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/ne.svg b/WinWARP.Ui/Assets/Flags/ne.svg new file mode 100644 index 0000000..a96b027 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/ne.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/nf.svg b/WinWARP.Ui/Assets/Flags/nf.svg new file mode 100644 index 0000000..c9e5743 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/nf.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/ng.svg b/WinWARP.Ui/Assets/Flags/ng.svg new file mode 100644 index 0000000..62813e8 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/ng.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/ni.svg b/WinWARP.Ui/Assets/Flags/ni.svg new file mode 100644 index 0000000..7ea3eb6 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/ni.svg @@ -0,0 +1,129 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/nl.svg b/WinWARP.Ui/Assets/Flags/nl.svg new file mode 100644 index 0000000..49ca5bc --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/nl.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/WinWARP.Ui/Assets/Flags/no.svg b/WinWARP.Ui/Assets/Flags/no.svg new file mode 100644 index 0000000..939920d --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/no.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/np.svg b/WinWARP.Ui/Assets/Flags/np.svg new file mode 100644 index 0000000..f0e0b5d --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/np.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/nr.svg b/WinWARP.Ui/Assets/Flags/nr.svg new file mode 100644 index 0000000..c8c827e --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/nr.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/nu.svg b/WinWARP.Ui/Assets/Flags/nu.svg new file mode 100644 index 0000000..ce31672 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/nu.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/nz.svg b/WinWARP.Ui/Assets/Flags/nz.svg new file mode 100644 index 0000000..ee617d6 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/nz.svg @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/om.svg b/WinWARP.Ui/Assets/Flags/om.svg new file mode 100644 index 0000000..038631f --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/om.svg @@ -0,0 +1,115 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/pa.svg b/WinWARP.Ui/Assets/Flags/pa.svg new file mode 100644 index 0000000..108c40b --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/pa.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/pc.svg b/WinWARP.Ui/Assets/Flags/pc.svg new file mode 100644 index 0000000..e0d561b --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/pc.svg @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/pe.svg b/WinWARP.Ui/Assets/Flags/pe.svg new file mode 100644 index 0000000..9ba4c61 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/pe.svg @@ -0,0 +1,4 @@ + + + + diff --git a/WinWARP.Ui/Assets/Flags/pf.svg b/WinWARP.Ui/Assets/Flags/pf.svg new file mode 100644 index 0000000..2580dd2 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/pf.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/pg.svg b/WinWARP.Ui/Assets/Flags/pg.svg new file mode 100644 index 0000000..1b6e536 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/pg.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/ph.svg b/WinWARP.Ui/Assets/Flags/ph.svg new file mode 100644 index 0000000..390f1fd --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/ph.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/pk.svg b/WinWARP.Ui/Assets/Flags/pk.svg new file mode 100644 index 0000000..1a573af --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/pk.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/pl.svg b/WinWARP.Ui/Assets/Flags/pl.svg new file mode 100644 index 0000000..8c43577 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/pl.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/pm.svg b/WinWARP.Ui/Assets/Flags/pm.svg new file mode 100644 index 0000000..950c6e8 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/pm.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/WinWARP.Ui/Assets/Flags/pn.svg b/WinWARP.Ui/Assets/Flags/pn.svg new file mode 100644 index 0000000..886abca --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/pn.svg @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/pr.svg b/WinWARP.Ui/Assets/Flags/pr.svg new file mode 100644 index 0000000..eb302ad --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/pr.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/ps.svg b/WinWARP.Ui/Assets/Flags/ps.svg new file mode 100644 index 0000000..5d28cc8 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/ps.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/pt.svg b/WinWARP.Ui/Assets/Flags/pt.svg new file mode 100644 index 0000000..6c8334b --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/pt.svg @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/pw.svg b/WinWARP.Ui/Assets/Flags/pw.svg new file mode 100644 index 0000000..ef6be79 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/pw.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/py.svg b/WinWARP.Ui/Assets/Flags/py.svg new file mode 100644 index 0000000..107bd1d --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/py.svg @@ -0,0 +1,156 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/qa.svg b/WinWARP.Ui/Assets/Flags/qa.svg new file mode 100644 index 0000000..897a21b --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/qa.svg @@ -0,0 +1,4 @@ + + + + diff --git a/WinWARP.Ui/Assets/Flags/re.svg b/WinWARP.Ui/Assets/Flags/re.svg new file mode 100644 index 0000000..41d87d9 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/re.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/ro.svg b/WinWARP.Ui/Assets/Flags/ro.svg new file mode 100644 index 0000000..e6cf0f6 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/ro.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/rs.svg b/WinWARP.Ui/Assets/Flags/rs.svg new file mode 100644 index 0000000..3610fd1 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/rs.svg @@ -0,0 +1,296 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/ru.svg b/WinWARP.Ui/Assets/Flags/ru.svg new file mode 100644 index 0000000..f428b0c --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/ru.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/WinWARP.Ui/Assets/Flags/rw.svg b/WinWARP.Ui/Assets/Flags/rw.svg new file mode 100644 index 0000000..3d484fd --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/rw.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/sa.svg b/WinWARP.Ui/Assets/Flags/sa.svg new file mode 100644 index 0000000..8bf5eda --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/sa.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/sb.svg b/WinWARP.Ui/Assets/Flags/sb.svg new file mode 100644 index 0000000..398c708 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/sb.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/sc.svg b/WinWARP.Ui/Assets/Flags/sc.svg new file mode 100644 index 0000000..2996bac --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/sc.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/sd.svg b/WinWARP.Ui/Assets/Flags/sd.svg new file mode 100644 index 0000000..0b9abdc --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/sd.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/se.svg b/WinWARP.Ui/Assets/Flags/se.svg new file mode 100644 index 0000000..8f3f134 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/se.svg @@ -0,0 +1,4 @@ + + + + diff --git a/WinWARP.Ui/Assets/Flags/sg.svg b/WinWARP.Ui/Assets/Flags/sg.svg new file mode 100644 index 0000000..60625e9 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/sg.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/sh-ac.svg b/WinWARP.Ui/Assets/Flags/sh-ac.svg new file mode 100644 index 0000000..5f82d66 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/sh-ac.svg @@ -0,0 +1,690 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/sh-hl.svg b/WinWARP.Ui/Assets/Flags/sh-hl.svg new file mode 100644 index 0000000..179fed6 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/sh-hl.svg @@ -0,0 +1,164 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/sh-ta.svg b/WinWARP.Ui/Assets/Flags/sh-ta.svg new file mode 100644 index 0000000..619301b --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/sh-ta.svg @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/sh.svg b/WinWARP.Ui/Assets/Flags/sh.svg new file mode 100644 index 0000000..2fd3727 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/sh.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/si.svg b/WinWARP.Ui/Assets/Flags/si.svg new file mode 100644 index 0000000..ba67e19 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/si.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/sj.svg b/WinWARP.Ui/Assets/Flags/sj.svg new file mode 100644 index 0000000..ecb9c79 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/sj.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/sk.svg b/WinWARP.Ui/Assets/Flags/sk.svg new file mode 100644 index 0000000..4846127 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/sk.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/sl.svg b/WinWARP.Ui/Assets/Flags/sl.svg new file mode 100644 index 0000000..b649f1b --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/sl.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/sm.svg b/WinWARP.Ui/Assets/Flags/sm.svg new file mode 100644 index 0000000..7fe8b14 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/sm.svg @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/sn.svg b/WinWARP.Ui/Assets/Flags/sn.svg new file mode 100644 index 0000000..ff9cf2e --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/sn.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/so.svg b/WinWARP.Ui/Assets/Flags/so.svg new file mode 100644 index 0000000..4848dbe --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/so.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/sr.svg b/WinWARP.Ui/Assets/Flags/sr.svg new file mode 100644 index 0000000..0ca3596 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/sr.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/ss.svg b/WinWARP.Ui/Assets/Flags/ss.svg new file mode 100644 index 0000000..bb50fac --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/ss.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/st.svg b/WinWARP.Ui/Assets/Flags/st.svg new file mode 100644 index 0000000..c5e7c5c --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/st.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/sv.svg b/WinWARP.Ui/Assets/Flags/sv.svg new file mode 100644 index 0000000..110f78d --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/sv.svg @@ -0,0 +1,593 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/sx.svg b/WinWARP.Ui/Assets/Flags/sx.svg new file mode 100644 index 0000000..fbf7468 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/sx.svg @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/sy.svg b/WinWARP.Ui/Assets/Flags/sy.svg new file mode 100644 index 0000000..b2fdc2f --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/sy.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/sz.svg b/WinWARP.Ui/Assets/Flags/sz.svg new file mode 100644 index 0000000..bd5e237 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/sz.svg @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/tc.svg b/WinWARP.Ui/Assets/Flags/tc.svg new file mode 100644 index 0000000..52a2452 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/tc.svg @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/td.svg b/WinWARP.Ui/Assets/Flags/td.svg new file mode 100644 index 0000000..8201312 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/td.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/tf.svg b/WinWARP.Ui/Assets/Flags/tf.svg new file mode 100644 index 0000000..1ab7f6a --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/tf.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/tg.svg b/WinWARP.Ui/Assets/Flags/tg.svg new file mode 100644 index 0000000..6ed03c5 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/tg.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/th.svg b/WinWARP.Ui/Assets/Flags/th.svg new file mode 100644 index 0000000..35141d3 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/th.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/tj.svg b/WinWARP.Ui/Assets/Flags/tj.svg new file mode 100644 index 0000000..9232ec1 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/tj.svg @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/tk.svg b/WinWARP.Ui/Assets/Flags/tk.svg new file mode 100644 index 0000000..9ff92e5 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/tk.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/WinWARP.Ui/Assets/Flags/tl.svg b/WinWARP.Ui/Assets/Flags/tl.svg new file mode 100644 index 0000000..4fbb245 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/tl.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/tm.svg b/WinWARP.Ui/Assets/Flags/tm.svg new file mode 100644 index 0000000..0272d71 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/tm.svg @@ -0,0 +1,205 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/tn.svg b/WinWARP.Ui/Assets/Flags/tn.svg new file mode 100644 index 0000000..ab3e36e --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/tn.svg @@ -0,0 +1,4 @@ + + + + diff --git a/WinWARP.Ui/Assets/Flags/to.svg b/WinWARP.Ui/Assets/Flags/to.svg new file mode 100644 index 0000000..3f1b600 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/to.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/tr.svg b/WinWARP.Ui/Assets/Flags/tr.svg new file mode 100644 index 0000000..0fe9017 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/tr.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/tt.svg b/WinWARP.Ui/Assets/Flags/tt.svg new file mode 100644 index 0000000..0f7f26e --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/tt.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/tv.svg b/WinWARP.Ui/Assets/Flags/tv.svg new file mode 100644 index 0000000..098b916 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/tv.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/tw.svg b/WinWARP.Ui/Assets/Flags/tw.svg new file mode 100644 index 0000000..83f4e44 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/tw.svg @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/tz.svg b/WinWARP.Ui/Assets/Flags/tz.svg new file mode 100644 index 0000000..846cbb5 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/tz.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/ua.svg b/WinWARP.Ui/Assets/Flags/ua.svg new file mode 100644 index 0000000..7ceb894 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/ua.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/ug.svg b/WinWARP.Ui/Assets/Flags/ug.svg new file mode 100644 index 0000000..fd377df --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/ug.svg @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/um.svg b/WinWARP.Ui/Assets/Flags/um.svg new file mode 100644 index 0000000..b8d4502 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/um.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/un.svg b/WinWARP.Ui/Assets/Flags/un.svg new file mode 100644 index 0000000..fc75c91 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/un.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/us.svg b/WinWARP.Ui/Assets/Flags/us.svg new file mode 100644 index 0000000..a722047 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/us.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/uy.svg b/WinWARP.Ui/Assets/Flags/uy.svg new file mode 100644 index 0000000..f6b08b2 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/uy.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/uz.svg b/WinWARP.Ui/Assets/Flags/uz.svg new file mode 100644 index 0000000..3385bc5 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/uz.svg @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/va.svg b/WinWARP.Ui/Assets/Flags/va.svg new file mode 100644 index 0000000..04e6d50 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/va.svg @@ -0,0 +1,190 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/vc.svg b/WinWARP.Ui/Assets/Flags/vc.svg new file mode 100644 index 0000000..21d41a8 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/vc.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/ve.svg b/WinWARP.Ui/Assets/Flags/ve.svg new file mode 100644 index 0000000..665135b --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/ve.svg @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/vg.svg b/WinWARP.Ui/Assets/Flags/vg.svg new file mode 100644 index 0000000..31fcae3 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/vg.svg @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/vi.svg b/WinWARP.Ui/Assets/Flags/vi.svg new file mode 100644 index 0000000..4509ac9 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/vi.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/vn.svg b/WinWARP.Ui/Assets/Flags/vn.svg new file mode 100644 index 0000000..49a68f0 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/vn.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/vu.svg b/WinWARP.Ui/Assets/Flags/vu.svg new file mode 100644 index 0000000..3dbcf95 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/vu.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/wf.svg b/WinWARP.Ui/Assets/Flags/wf.svg new file mode 100644 index 0000000..5ba64e4 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/wf.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/WinWARP.Ui/Assets/Flags/ws.svg b/WinWARP.Ui/Assets/Flags/ws.svg new file mode 100644 index 0000000..ab08fdb --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/ws.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/xk.svg b/WinWARP.Ui/Assets/Flags/xk.svg new file mode 100644 index 0000000..b5403e3 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/xk.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/WinWARP.Ui/Assets/Flags/xx.svg b/WinWARP.Ui/Assets/Flags/xx.svg new file mode 100644 index 0000000..5a44cb7 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/xx.svg @@ -0,0 +1,4 @@ + + + + diff --git a/WinWARP.Ui/Assets/Flags/ye.svg b/WinWARP.Ui/Assets/Flags/ye.svg new file mode 100644 index 0000000..2ccb23b --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/ye.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/yt.svg b/WinWARP.Ui/Assets/Flags/yt.svg new file mode 100644 index 0000000..41a4408 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/yt.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/WinWARP.Ui/Assets/Flags/za.svg b/WinWARP.Ui/Assets/Flags/za.svg new file mode 100644 index 0000000..397696e --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/za.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/zm.svg b/WinWARP.Ui/Assets/Flags/zm.svg new file mode 100644 index 0000000..9b20601 --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/zm.svg @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Assets/Flags/zw.svg b/WinWARP.Ui/Assets/Flags/zw.svg new file mode 100644 index 0000000..f9f65ee --- /dev/null +++ b/WinWARP.Ui/Assets/Flags/zw.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Converters/BoolToVisibilityConverter.cs b/WinWARP.Ui/Converters/BoolToVisibilityConverter.cs new file mode 100644 index 0000000..3b86285 --- /dev/null +++ b/WinWARP.Ui/Converters/BoolToVisibilityConverter.cs @@ -0,0 +1,47 @@ +using System; +using System.Collections.Generic; +using System.Text; +using Microsoft.UI.Xaml; +using Microsoft.UI.Xaml.Data; +using Microsoft.UI.Xaml.Markup; + +namespace WinWARP.Ui.Converters; + +[MarkupExtensionReturnType(ReturnType = typeof(IValueConverter))] +public partial class BoolToVisibilityConverter : MarkupExtension, IValueConverter +{ + public bool IsInverted { get; set; } = false; + + // IValueConverter implementation + public object Convert(object value, Type targetType, object parameter, string language) + { + bool flag = false; + if (value is bool boolValue) + { + flag = boolValue; + } + + if (IsInverted) + { + flag = !flag; + } + + return flag ? Visibility.Visible : Visibility.Collapsed; + } + + public object ConvertBack(object value, Type targetType, object parameter, string language) + { + if (value is Visibility visibility) + { + bool result = (visibility == Visibility.Visible); + return IsInverted ? !result : result; + } + return false; + } + + // MarkupExtension override returning self as the instance + protected override object ProvideValue() + { + return this; + } +} \ No newline at end of file diff --git a/WinWARP.Ui/Converters/CountryCodeToUriConverter.cs b/WinWARP.Ui/Converters/CountryCodeToUriConverter.cs new file mode 100644 index 0000000..9414c44 --- /dev/null +++ b/WinWARP.Ui/Converters/CountryCodeToUriConverter.cs @@ -0,0 +1,31 @@ +using System; +using System.Collections.Generic; +using System.Text; +using Microsoft.UI.Xaml.Data; +using Microsoft.UI.Xaml.Markup; + +namespace WinWARP.Ui.Converters; + +[MarkupExtensionReturnType(ReturnType = typeof(IValueConverter))] +public class CountryCodeToUriConverter : MarkupExtension, IValueConverter +{ + protected override object ProvideValue() => this; + + public object Convert(object value, Type targetType, object parameter, string language) + { + if (value is string countryCode) + { + if (!string.IsNullOrWhiteSpace(countryCode)) + { + return new Uri($"ms-appx:///Assets/Flags/{countryCode.ToLower()}.svg"); + } + else + { + return new Uri("ms-appx:///Assets/Flags/xx.svg"); + } + } + else return null; + } + + public object ConvertBack(object value, Type targetType, object parameter, string language) => throw new NotImplementedException(); +} \ No newline at end of file diff --git a/WinWARP.Ui/Converters/UpdateIntervalToTextConverter.cs b/WinWARP.Ui/Converters/UpdateIntervalToTextConverter.cs new file mode 100644 index 0000000..204b21c --- /dev/null +++ b/WinWARP.Ui/Converters/UpdateIntervalToTextConverter.cs @@ -0,0 +1,60 @@ +using System; +using System.Collections.Generic; +using System.Globalization; +using System.Text; +using System.Text.RegularExpressions; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.UI.Xaml.Data; +using Microsoft.UI.Xaml.Markup; +using Microsoft.Windows.AI.Text; +using WinWARP.Core.Services.Interfaces; +using WinWARP.Ui.Helpers; + +namespace WinWARP.Ui.Converters; + +[MarkupExtensionReturnType(ReturnType = typeof(IValueConverter))] +public class UpdateIntervalToTextConverter : MarkupExtension, IValueConverter +{ + private ILocalizationService _localizationService; + + protected override object ProvideValue() + { + _localizationService ??= App.Services.GetRequiredService(); + return this; + } + + public object Convert(object value, Type targetType, object parameter, string language) + { + if (value is double interval) + { + interval = Math.Truncate(interval); + return interval switch + { + -1 => _localizationService.GetString("UpdateInterval_never"), + 0 => _localizationService.GetString("UpdateInterval_auto"), + _ => NumberToTranslatedString(interval) + }; + } + return "Unknown"; + } + + public object ConvertBack(object value, Type targetType, object parameter, string language) + { + throw new NotImplementedException(); + } + + private string NumberToTranslatedString(double value) + { + var category = PluralCategory.GetCategory(value, new CultureInfo(_localizationService.GetCurrentLanguage())); + var resourceKey = $"UpdateInterval_{category}"; + var localizedTemplate = _localizationService.GetString(resourceKey); + + if (string.IsNullOrEmpty(localizedTemplate)) + { + // Fallback to a default template if the localized string is not found + localizedTemplate = "Every {0} hours"; + } + + return string.Format(localizedTemplate, value); + } +} diff --git a/WinWARP.Ui/Helpers/PluralCategory.cs b/WinWARP.Ui/Helpers/PluralCategory.cs new file mode 100644 index 0000000..51b0494 --- /dev/null +++ b/WinWARP.Ui/Helpers/PluralCategory.cs @@ -0,0 +1,30 @@ +using System; +using System.Collections.Generic; +using System.Globalization; +using System.Text; +using Jeffijoe.MessageFormat; + +namespace WinWARP.Ui.Helpers; + +/// +/// Provides methods to determine the plural category of a number based on the specified locale and whether it is an ordinal or cardinal number. +/// +public static class PluralCategory +{ + private static readonly MessageFormatter Formatter = new(); + + private static readonly string CardinalPattern = + "{n, plural, zero{zero} one{one} two{two} few{few} many{many} other{other}}"; + + private static readonly string OrdinalPattern = + "{n, selectordinal, zero{zero} one{one} two{two} few{few} many{many} other{other}}"; + + public static string GetCategory(double number, CultureInfo locale, bool isOrdinal = false) + { + var pattern = isOrdinal ? OrdinalPattern : CardinalPattern; + var args = new Dictionary { { "n", number } }; + + // Formatter resolves the logic and returns the matched keyword block literal + return Formatter.FormatMessage(pattern, args, locale); + } +} diff --git a/WinWARP.Ui/Helpers/ServerTemplateSelector.cs b/WinWARP.Ui/Helpers/ServerTemplateSelector.cs new file mode 100644 index 0000000..2469207 --- /dev/null +++ b/WinWARP.Ui/Helpers/ServerTemplateSelector.cs @@ -0,0 +1,34 @@ +using System; +using System.Collections.Generic; +using System.Text; +using Microsoft.UI.Xaml; +using Microsoft.UI.Xaml.Controls; +using WinWARP.Core.ViewModels.Wrappers; + +namespace WinWARP.Ui.Helpers; + +/// +/// A DataTemplateSelector that selects the appropriate DataTemplate based on the type of server item (StandaloneServerViewModel or SubscriptionServerViewModel). +/// +public class ServerTemplateSelector : DataTemplateSelector +{ + public DataTemplate StandaloneTemplate + { + get; set; + } + public DataTemplate SubscriptionTemplate + { + get; set; + } + + protected override DataTemplate SelectTemplateCore(object item) + { + // Evaluate the type of the item currently being rendered in the list row + return item switch + { + StandaloneServerViewModel => StandaloneTemplate, + SubscriptionServerViewModel => SubscriptionTemplate, + _ => base.SelectTemplateCore(item) // Fallback if type doesn't match + }; + } +} diff --git a/WinWARP.Ui/Helpers/TypeExtension.cs b/WinWARP.Ui/Helpers/TypeExtension.cs index 26b5358..d86e72d 100644 --- a/WinWARP.Ui/Helpers/TypeExtension.cs +++ b/WinWARP.Ui/Helpers/TypeExtension.cs @@ -5,6 +5,9 @@ using Microsoft.UI.Xaml.Markup; namespace WinWARP.Ui.Helpers; +/// +/// A markup extension that allows you to specify a in XAML. +/// [MarkupExtensionReturnType(ReturnType = typeof(Type))] public sealed class TypeExtension : MarkupExtension { diff --git a/WinWARP.Ui/Helpers/XamlRootTracker.cs b/WinWARP.Ui/Helpers/XamlRootTracker.cs new file mode 100644 index 0000000..f1d6b94 --- /dev/null +++ b/WinWARP.Ui/Helpers/XamlRootTracker.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.Text; +using Microsoft.UI.Xaml; + +namespace WinWARP.Ui.Helpers; + +/// +/// A helper class to track the XamlRoot of a frame's content via DI. +/// +public class XamlRootTracker +{ + public XamlRoot? XamlRoot + { + get; set; + } +} diff --git a/WinWARP.Ui/MainWindow.xaml.cs b/WinWARP.Ui/MainWindow.xaml.cs index 2edd83a..c18cade 100644 --- a/WinWARP.Ui/MainWindow.xaml.cs +++ b/WinWARP.Ui/MainWindow.xaml.cs @@ -16,6 +16,7 @@ using Windows.Foundation; using Windows.Foundation.Collections; using WinWARP.Core.Services.Interfaces; using WinWARP.Core.ViewModels; +using WinWARP.Ui.Helpers; using WinWARP.Ui.Services; // To learn more about WinUI, the WinUI project structure, @@ -28,12 +29,14 @@ namespace WinWARP.Ui; public sealed partial class MainWindow : Window { public MainViewModel ViewModel { get; } + private XamlRootTracker _xamlRootTracker; - public MainWindow(MainViewModel viewModel) + public MainWindow(MainViewModel viewModel, XamlRootTracker xamlRootTracker) { InitializeComponent(); ViewModel = viewModel; + _xamlRootTracker = xamlRootTracker; ExtendsContentIntoTitleBar = true; AppWindow.TitleBar.PreferredHeightOption = Microsoft.UI.Windowing.TitleBarHeightOption.Tall; @@ -62,6 +65,8 @@ public sealed partial class MainWindow : Window { RootNavigationView.SelectedItem = targetItem; } + + _xamlRootTracker.XamlRoot = RootFrame.XamlRoot; } private void TitleBar_BackRequested(TitleBar sender, object args) diff --git a/WinWARP.Ui/Services/DialogService.cs b/WinWARP.Ui/Services/DialogService.cs new file mode 100644 index 0000000..adbc1bd --- /dev/null +++ b/WinWARP.Ui/Services/DialogService.cs @@ -0,0 +1,47 @@ +using System; +using System.Collections.Generic; +using System.Runtime.CompilerServices; +using System.Text; +using System.Threading.Tasks; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.UI.Xaml; +using Microsoft.UI.Xaml.Controls; +using Microsoft.UI.Xaml.Media; +using WinWARP.Core.Enums; +using WinWARP.Core.Services.Interfaces; +using WinWARP.Ui.Helpers; +using WinWARP.Ui.Views.Dialogs; + +namespace WinWARP.Ui.Services; + +public class DialogService : IDialogService +{ + private readonly XamlRootTracker _tracker; + + public DialogService(XamlRootTracker tracker) + { + _tracker = tracker; + } + + public async Task<(CommonDialogResult Result, string Title, string URL, int UpdateInterval)> ShowAddSubscriptionAsync() + { + var dialog = App.Services.GetRequiredService(); + //dialog.Title = "Add new subscription"; + //dialog.PrimaryButtonText = "Add"; + //dialog.CloseButtonText = "Cancel"; + dialog.XamlRoot = _tracker.XamlRoot; + dialog.Style = Application.Current.Resources["DefaultContentDialogStyle"] as Style; + + var result = await dialog.ShowAsync(); + + var mappedResult = result switch + { + ContentDialogResult.Primary => CommonDialogResult.Primary, + ContentDialogResult.Secondary => CommonDialogResult.Secondary, + ContentDialogResult.None => CommonDialogResult.Cancel, + _ => CommonDialogResult.None + }; + + return (mappedResult, dialog.ViewModel.CustomName, dialog.ViewModel.SubscriptionLink, dialog.ViewModel.UpdateInterval); + } +} diff --git a/WinWARP.Ui/Services/NavigationService.cs b/WinWARP.Ui/Services/NavigationService.cs index 7e33f31..51518e3 100644 --- a/WinWARP.Ui/Services/NavigationService.cs +++ b/WinWARP.Ui/Services/NavigationService.cs @@ -3,9 +3,11 @@ using System.Collections.Generic; using System.ComponentModel; using System.Runtime.CompilerServices; using System.Text; +using Microsoft.Extensions.DependencyInjection; using Microsoft.UI.Xaml.Controls; using Microsoft.UI.Xaml.Navigation; using WinWARP.Core.Services.Interfaces; +using WinWARP.Ui.Helpers; namespace WinWARP.Ui.Services; diff --git a/WinWARP.Ui/Strings/en-US/Resources.resw b/WinWARP.Ui/Strings/en-US/Resources.resw index fc1e114..aa26dec 100644 --- a/WinWARP.Ui/Strings/en-US/Resources.resw +++ b/WinWARP.Ui/Strings/en-US/Resources.resw @@ -219,4 +219,52 @@ Configs settings + + Add new subscription + + + Add + + + Cancel + + + New subscription name + + + Leave empty for default name + + + Subscription URL + + + Only subscriptions, for single server choose "Add server" + + + Update interval + + + Every {0} hour + + + - + + + - + + + - + + + - + + + Every {0} hours + + + Never + + + Auto + \ No newline at end of file diff --git a/WinWARP.Ui/Strings/ru-RU/Resources.resw b/WinWARP.Ui/Strings/ru-RU/Resources.resw index 3e65fe5..761f351 100644 --- a/WinWARP.Ui/Strings/ru-RU/Resources.resw +++ b/WinWARP.Ui/Strings/ru-RU/Resources.resw @@ -219,4 +219,52 @@ Конфигурации + + Добавить новую подписку + + + Добавить + + + Отмена + + + Название подписки + + + Оставьте пустым для имя по умолчанию + + + Ссылка на подписку + + + Только подписки, для серверов "Добавить сервер" + + + Частота обновления + + + Каждый {0} час + + + - + + + - + + + Каждыe {0} часа + + + Каждые {0} часов + + + Каждые {0} часов + + + Никогда + + + Автоматически + \ No newline at end of file diff --git a/WinWARP.Ui/Views/Components/ServerListElement.xaml b/WinWARP.Ui/Views/Components/ServerListElement.xaml new file mode 100644 index 0000000..7e1a5bf --- /dev/null +++ b/WinWARP.Ui/Views/Components/ServerListElement.xaml @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Views/Components/ServerListElement.xaml.cs b/WinWARP.Ui/Views/Components/ServerListElement.xaml.cs new file mode 100644 index 0000000..8eff4ba --- /dev/null +++ b/WinWARP.Ui/Views/Components/ServerListElement.xaml.cs @@ -0,0 +1,83 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.IO; +using System.Linq; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices.WindowsRuntime; +using Microsoft.UI.Xaml; +using Microsoft.UI.Xaml.Controls; +using Microsoft.UI.Xaml.Controls.Primitives; +using Microsoft.UI.Xaml.Data; +using Microsoft.UI.Xaml.Input; +using Microsoft.UI.Xaml.Media; +using Microsoft.UI.Xaml.Navigation; +using Windows.Foundation; +using Windows.Foundation.Collections; +using WinWARP.Core.ViewModels; +using WinWARP.Core.ViewModels.Wrappers; + +// To learn more about WinUI, the WinUI project structure, +// and more about our project templates, see: http://aka.ms/winui-project-info. + +namespace WinWARP.Ui.Views.Components; + +public sealed partial class ServerListElement : UserControl +{ + + public static readonly DependencyProperty ServerDataProperty = + DependencyProperty.Register(nameof(ServerData), typeof(ServerItemViewModel), + typeof(ServerListElement), new PropertyMetadata(null)); + + public ServerItemViewModel ServerData + { + get => (ServerItemViewModel)GetValue(ServerDataProperty); + set => SetValue(ServerDataProperty, value); + } + + public string Title(ServerItemViewModel serverData) => string.IsNullOrEmpty(serverData?.Title) ? (string.IsNullOrEmpty(serverData?.DefaultTitle) ? string.Empty : serverData.DefaultTitle) : serverData.Title; + + public Visibility IsNotDefaultTitle(ServerItemViewModel serverData) => (!string.IsNullOrEmpty(serverData?.Title) && serverData?.Title != serverData?.DefaultTitle) ? Visibility.Visible : Visibility.Collapsed; + + public ServerListElement() + { + InitializeComponent(); + } + + private DataTemplate ChooseTemplate(ServerItemViewModel data) + { + if (data == null) return null; + + return data switch + { + StandaloneServerViewModel => (DataTemplate)Resources["StandaloneServerTemplate"], + SubscriptionServerViewModel => (DataTemplate)Resources["SubscriptionServerTemplate"], + _ => (DataTemplate)Resources["StandaloneServerTemplate"] + }; + } + + private Uri CountryCodeToUri(string countryCode) + { + if (!string.IsNullOrWhiteSpace(countryCode)) + { + return new Uri($"ms-appx:///Assets/Flags/{countryCode.ToLower()}.svg", UriKind.Absolute); + } + else + { + return new Uri("ms-appx:///Assets/Flags/xx.svg", UriKind.Absolute); + } + } + + private void MenuButton_Click(object sender, RoutedEventArgs e) + { + if (sender is Button button) + { + var options = new FlyoutShowOptions + { + Placement = FlyoutPlacementMode.LeftEdgeAlignedTop, + ShowMode = FlyoutShowMode.Standard + }; + ServerListFlyout.ShowAt(button, options); + } + } +} diff --git a/WinWARP.Ui/Views/ConfigSettings/DnsSettingsPage.xaml.cs b/WinWARP.Ui/Views/ConfigSettings/DnsSettingsPage.xaml.cs index 49d4912..4473b9a 100644 --- a/WinWARP.Ui/Views/ConfigSettings/DnsSettingsPage.xaml.cs +++ b/WinWARP.Ui/Views/ConfigSettings/DnsSettingsPage.xaml.cs @@ -3,8 +3,7 @@ using System.Collections.Generic; using System.IO; using System.Linq; using System.Runtime.InteropServices.WindowsRuntime; -using Windows.Foundation; -using Windows.Foundation.Collections; +using Microsoft.Extensions.DependencyInjection; using Microsoft.UI.Xaml; using Microsoft.UI.Xaml.Controls; using Microsoft.UI.Xaml.Controls.Primitives; @@ -12,6 +11,9 @@ using Microsoft.UI.Xaml.Data; using Microsoft.UI.Xaml.Input; using Microsoft.UI.Xaml.Media; using Microsoft.UI.Xaml.Navigation; +using Windows.Foundation; +using Windows.Foundation.Collections; +using WinWARP.Core.ViewModels.ConfigSettings; // To learn more about WinUI, the WinUI project structure, // and more about our project templates, see: http://aka.ms/winui-project-info. @@ -23,8 +25,14 @@ namespace WinWARP.Ui.Views.Settings; /// public sealed partial class DnsSettingsPage : Page { - public DnsSettingsPage() + public DnsSettingsViewModel ViewModel { get; } + + public DnsSettingsPage() : this(App.Services.GetRequiredService()) {} + + public DnsSettingsPage(DnsSettingsViewModel viewModel) { InitializeComponent(); + ViewModel = viewModel; + DataContext = ViewModel; } } diff --git a/WinWARP.Ui/Views/ConfigSettings/InboundSettingsPage.xaml.cs b/WinWARP.Ui/Views/ConfigSettings/InboundSettingsPage.xaml.cs index f3f7d08..a475cc1 100644 --- a/WinWARP.Ui/Views/ConfigSettings/InboundSettingsPage.xaml.cs +++ b/WinWARP.Ui/Views/ConfigSettings/InboundSettingsPage.xaml.cs @@ -3,8 +3,7 @@ using System.Collections.Generic; using System.IO; using System.Linq; using System.Runtime.InteropServices.WindowsRuntime; -using Windows.Foundation; -using Windows.Foundation.Collections; +using Microsoft.Extensions.DependencyInjection; using Microsoft.UI.Xaml; using Microsoft.UI.Xaml.Controls; using Microsoft.UI.Xaml.Controls.Primitives; @@ -12,6 +11,9 @@ using Microsoft.UI.Xaml.Data; using Microsoft.UI.Xaml.Input; using Microsoft.UI.Xaml.Media; using Microsoft.UI.Xaml.Navigation; +using Windows.Foundation; +using Windows.Foundation.Collections; +using WinWARP.Core.ViewModels.ConfigSettings; // To learn more about WinUI, the WinUI project structure, // and more about our project templates, see: http://aka.ms/winui-project-info. @@ -23,8 +25,14 @@ namespace WinWARP.Ui.Views.Settings; /// public sealed partial class InboundSettingsPage : Page { - public InboundSettingsPage() + public InboundSettingsViewModel ViewModel { get; } + + public InboundSettingsPage() : this(App.Services.GetRequiredService()) {} + + public InboundSettingsPage(InboundSettingsViewModel viewModel) { InitializeComponent(); + ViewModel = viewModel; + DataContext = ViewModel; } -} +} \ No newline at end of file diff --git a/WinWARP.Ui/Views/ConfigSettings/RoutingSettingsPage.xaml.cs b/WinWARP.Ui/Views/ConfigSettings/RoutingSettingsPage.xaml.cs index a6cbbad..9e9c4ea 100644 --- a/WinWARP.Ui/Views/ConfigSettings/RoutingSettingsPage.xaml.cs +++ b/WinWARP.Ui/Views/ConfigSettings/RoutingSettingsPage.xaml.cs @@ -3,8 +3,7 @@ using System.Collections.Generic; using System.IO; using System.Linq; using System.Runtime.InteropServices.WindowsRuntime; -using Windows.Foundation; -using Windows.Foundation.Collections; +using Microsoft.Extensions.DependencyInjection; using Microsoft.UI.Xaml; using Microsoft.UI.Xaml.Controls; using Microsoft.UI.Xaml.Controls.Primitives; @@ -12,6 +11,9 @@ using Microsoft.UI.Xaml.Data; using Microsoft.UI.Xaml.Input; using Microsoft.UI.Xaml.Media; using Microsoft.UI.Xaml.Navigation; +using Windows.Foundation; +using Windows.Foundation.Collections; +using WinWARP.Core.ViewModels.ConfigSettings; // To learn more about WinUI, the WinUI project structure, // and more about our project templates, see: http://aka.ms/winui-project-info. @@ -23,8 +25,14 @@ namespace WinWARP.Ui.Views.Settings; /// public sealed partial class RoutingSettingsPage : Page { - public RoutingSettingsPage() + public RoutingSettingsViewModel ViewModel { get; } + + public RoutingSettingsPage() : this(App.Services.GetRequiredService()) {} + + public RoutingSettingsPage(RoutingSettingsViewModel viewModel) { InitializeComponent(); + ViewModel = viewModel; + DataContext = ViewModel; } } diff --git a/WinWARP.Ui/Views/ConfigSettings/TlsSettingsPage.xaml.cs b/WinWARP.Ui/Views/ConfigSettings/TlsSettingsPage.xaml.cs index 06a637d..ca1b4bf 100644 --- a/WinWARP.Ui/Views/ConfigSettings/TlsSettingsPage.xaml.cs +++ b/WinWARP.Ui/Views/ConfigSettings/TlsSettingsPage.xaml.cs @@ -3,8 +3,7 @@ using System.Collections.Generic; using System.IO; using System.Linq; using System.Runtime.InteropServices.WindowsRuntime; -using Windows.Foundation; -using Windows.Foundation.Collections; +using Microsoft.Extensions.DependencyInjection; using Microsoft.UI.Xaml; using Microsoft.UI.Xaml.Controls; using Microsoft.UI.Xaml.Controls.Primitives; @@ -12,6 +11,9 @@ using Microsoft.UI.Xaml.Data; using Microsoft.UI.Xaml.Input; using Microsoft.UI.Xaml.Media; using Microsoft.UI.Xaml.Navigation; +using Windows.Foundation; +using Windows.Foundation.Collections; +using WinWARP.Core.ViewModels.ConfigSettings; // To learn more about WinUI, the WinUI project structure, // and more about our project templates, see: http://aka.ms/winui-project-info. @@ -23,8 +25,14 @@ namespace WinWARP.Ui.Views.Settings; /// public sealed partial class TlsSettingsPage : Page { - public TlsSettingsPage() + public TlsSettingsViewModel ViewModel { get; } + + public TlsSettingsPage() : this(App.Services.GetRequiredService < TlsSettingsViewModel>()) {} + + public TlsSettingsPage(TlsSettingsViewModel viewModel) { InitializeComponent(); + ViewModel = viewModel; + DataContext = ViewModel; } } diff --git a/WinWARP.Ui/Views/ConfigSettings/WarpSettingsPage.xaml.cs b/WinWARP.Ui/Views/ConfigSettings/WarpSettingsPage.xaml.cs index ee9516d..6b7e30e 100644 --- a/WinWARP.Ui/Views/ConfigSettings/WarpSettingsPage.xaml.cs +++ b/WinWARP.Ui/Views/ConfigSettings/WarpSettingsPage.xaml.cs @@ -12,6 +12,8 @@ using Microsoft.UI.Xaml.Data; using Microsoft.UI.Xaml.Input; using Microsoft.UI.Xaml.Media; using Microsoft.UI.Xaml.Navigation; +using WinWARP.Core.ViewModels.ConfigSettings; +using Microsoft.Extensions.DependencyInjection; // To learn more about WinUI, the WinUI project structure, // and more about our project templates, see: http://aka.ms/winui-project-info. @@ -23,8 +25,14 @@ namespace WinWARP.Ui.Views.Settings; /// public sealed partial class WarpSettingsPage : Page { - public WarpSettingsPage() + public WarpSettingsViewModel ViewModel { get; } + + public WarpSettingsPage() : this(App.Services.GetRequiredService()) {} + + public WarpSettingsPage(WarpSettingsViewModel viewModel) { InitializeComponent(); + ViewModel = viewModel; + DataContext = ViewModel; } } diff --git a/WinWARP.Ui/Views/ConfigSettingsPage.xaml.cs b/WinWARP.Ui/Views/ConfigSettingsPage.xaml.cs index cc21127..df1fa5c 100644 --- a/WinWARP.Ui/Views/ConfigSettingsPage.xaml.cs +++ b/WinWARP.Ui/Views/ConfigSettingsPage.xaml.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.IO; using System.Linq; using System.Runtime.InteropServices.WindowsRuntime; +using Microsoft.Extensions.DependencyInjection; using Microsoft.UI.Xaml; using Microsoft.UI.Xaml.Controls; using Microsoft.UI.Xaml.Controls.Primitives; @@ -12,6 +13,7 @@ using Microsoft.UI.Xaml.Media; using Microsoft.UI.Xaml.Navigation; using Windows.Foundation; using Windows.Foundation.Collections; +using WinWARP.Core.ViewModels; // To learn more about WinUI, the WinUI project structure, // and more about our project templates, see: http://aka.ms/winui-project-info. @@ -22,8 +24,14 @@ namespace WinWARP.Ui.Views; /// public sealed partial class ConfigSettingsPage : Page { - public ConfigSettingsPage() + public ConfigSettingsViewModel ViewModel { get; } + + public ConfigSettingsPage() : this(App.Services.GetRequiredService()) {} + + public ConfigSettingsPage(ConfigSettingsViewModel viewModel) { InitializeComponent(); + ViewModel = viewModel; + DataContext = ViewModel; } } diff --git a/WinWARP.Ui/Views/Dialogs/AddSubscriptionDialog.xaml b/WinWARP.Ui/Views/Dialogs/AddSubscriptionDialog.xaml new file mode 100644 index 0000000..9e75354 --- /dev/null +++ b/WinWARP.Ui/Views/Dialogs/AddSubscriptionDialog.xaml @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + diff --git a/WinWARP.Ui/Views/Dialogs/AddSubscriptionDialog.xaml.cs b/WinWARP.Ui/Views/Dialogs/AddSubscriptionDialog.xaml.cs new file mode 100644 index 0000000..3135916 --- /dev/null +++ b/WinWARP.Ui/Views/Dialogs/AddSubscriptionDialog.xaml.cs @@ -0,0 +1,34 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Runtime.InteropServices.WindowsRuntime; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.UI.Xaml; +using Microsoft.UI.Xaml.Controls; +using Microsoft.UI.Xaml.Controls.Primitives; +using Microsoft.UI.Xaml.Data; +using Microsoft.UI.Xaml.Input; +using Microsoft.UI.Xaml.Media; +using Microsoft.UI.Xaml.Navigation; +using Windows.Foundation; +using Windows.Foundation.Collections; +using WinWARP.Core.ViewModels.Dialogs; + +// To learn more about WinUI, the WinUI project structure, +// and more about our project templates, see: http://aka.ms/winui-project-info. + +namespace WinWARP.Ui.Views.Dialogs; + +public sealed partial class AddSubscriptionDialog : ContentDialog +{ + public AddSubscriptionViewModel ViewModel { get; } + + public AddSubscriptionDialog() : this(App.Services.GetRequiredService()) {} + + public AddSubscriptionDialog(AddSubscriptionViewModel viewModel) + { + InitializeComponent(); + ViewModel = viewModel; + } +} diff --git a/WinWARP.Ui/Views/HomePage.xaml.cs b/WinWARP.Ui/Views/HomePage.xaml.cs index 23d527a..6e77a9b 100644 --- a/WinWARP.Ui/Views/HomePage.xaml.cs +++ b/WinWARP.Ui/Views/HomePage.xaml.cs @@ -26,11 +26,12 @@ public sealed partial class HomePage : Page { public HomeViewModel ViewModel { get; } - public HomePage() + public HomePage() : this(App.Services.GetRequiredService()) {} + + public HomePage(HomeViewModel viewModel) { InitializeComponent(); - - ViewModel = App.Services.GetRequiredService(); + ViewModel = viewModel; DataContext = ViewModel; } } diff --git a/WinWARP.Ui/Views/Settings/GeneralSettingsPage.xaml.cs b/WinWARP.Ui/Views/Settings/GeneralSettingsPage.xaml.cs index 76bc38b..e95e731 100644 --- a/WinWARP.Ui/Views/Settings/GeneralSettingsPage.xaml.cs +++ b/WinWARP.Ui/Views/Settings/GeneralSettingsPage.xaml.cs @@ -3,8 +3,7 @@ using System.Collections.Generic; using System.IO; using System.Linq; using System.Runtime.InteropServices.WindowsRuntime; -using Windows.Foundation; -using Windows.Foundation.Collections; +using Microsoft.Extensions.DependencyInjection; using Microsoft.UI.Xaml; using Microsoft.UI.Xaml.Controls; using Microsoft.UI.Xaml.Controls.Primitives; @@ -12,6 +11,9 @@ using Microsoft.UI.Xaml.Data; using Microsoft.UI.Xaml.Input; using Microsoft.UI.Xaml.Media; using Microsoft.UI.Xaml.Navigation; +using Windows.Foundation; +using Windows.Foundation.Collections; +using WinWARP.Core.ViewModels.Settings; // To learn more about WinUI, the WinUI project structure, // and more about our project templates, see: http://aka.ms/winui-project-info. @@ -23,8 +25,14 @@ namespace WinWARP.Ui.Views.Settings; /// public sealed partial class GeneralSettingsPage : Page { - public GeneralSettingsPage() + public GeneralSettingsViewModel ViewModel { get; } + + public GeneralSettingsPage() : this(App.Services.GetRequiredService()) {} + + public GeneralSettingsPage(GeneralSettingsViewModel viewModel) { InitializeComponent(); + ViewModel = viewModel; + DataContext = ViewModel; } } diff --git a/WinWARP.Ui/Views/Settings/UpdateSettingsPage.xaml.cs b/WinWARP.Ui/Views/Settings/UpdateSettingsPage.xaml.cs index eebd900..c0836d1 100644 --- a/WinWARP.Ui/Views/Settings/UpdateSettingsPage.xaml.cs +++ b/WinWARP.Ui/Views/Settings/UpdateSettingsPage.xaml.cs @@ -3,8 +3,7 @@ using System.Collections.Generic; using System.IO; using System.Linq; using System.Runtime.InteropServices.WindowsRuntime; -using Windows.Foundation; -using Windows.Foundation.Collections; +using Microsoft.Extensions.DependencyInjection; using Microsoft.UI.Xaml; using Microsoft.UI.Xaml.Controls; using Microsoft.UI.Xaml.Controls.Primitives; @@ -12,6 +11,9 @@ using Microsoft.UI.Xaml.Data; using Microsoft.UI.Xaml.Input; using Microsoft.UI.Xaml.Media; using Microsoft.UI.Xaml.Navigation; +using Windows.Foundation; +using Windows.Foundation.Collections; +using WinWARP.Core.ViewModels.Settings; // To learn more about WinUI, the WinUI project structure, // and more about our project templates, see: http://aka.ms/winui-project-info. @@ -23,8 +25,14 @@ namespace WinWARP.Ui.Views.Settings; /// public sealed partial class UpdateSettingsPage : Page { - public UpdateSettingsPage() + public UpdateSettingsViewModel ViewModel { get; } + + public UpdateSettingsPage() : this(App.Services.GetRequiredService()) { } + + public UpdateSettingsPage(UpdateSettingsViewModel viewModel) { InitializeComponent(); + ViewModel = viewModel; + DataContext = ViewModel; } } diff --git a/WinWARP.Ui/Views/SettingsPage.xaml.cs b/WinWARP.Ui/Views/SettingsPage.xaml.cs index 81ddf86..cb4c338 100644 --- a/WinWARP.Ui/Views/SettingsPage.xaml.cs +++ b/WinWARP.Ui/Views/SettingsPage.xaml.cs @@ -24,16 +24,15 @@ namespace WinWARP.Ui.Views; /// public sealed partial class SettingsPage : Page { - public SettingsViewModel ViewModel - { - get; - } + public SettingsViewModel ViewModel { get; } - public SettingsPage() + public SettingsPage() : this(App.Services.GetRequiredService()) {} + + public SettingsPage(SettingsViewModel viewModel) { InitializeComponent(); - ViewModel = App.Services.GetRequiredService(); + ViewModel = viewModel; DataContext = ViewModel; } } diff --git a/WinWARP.Ui/Views/SubsSettingsPage.xaml b/WinWARP.Ui/Views/SubsSettingsPage.xaml index 64fe484..b243ccf 100644 --- a/WinWARP.Ui/Views/SubsSettingsPage.xaml +++ b/WinWARP.Ui/Views/SubsSettingsPage.xaml @@ -6,10 +6,26 @@ xmlns:local="using:WinWARP.Ui.Views" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" - xmlns:m="using:WinWARP.Core.Models.Entities" + xmlns:c="using:WinWARP.Ui.Views.Components" + xmlns:vm="using:WinWARP.Core.ViewModels" + mc:Ignorable="d"> - - - + +