├── Installers └── MacOsX │ └── SQRL.app.zip ├── SQRLDotNetClientUI ├── Assets │ ├── VL.png │ ├── error.ico │ ├── Icons │ │ ├── ok.png │ │ ├── error.png │ │ ├── pdf_16.png │ │ ├── question.png │ │ ├── warning.png │ │ └── MenuIcons │ │ │ ├── Exit_16x.png │ │ │ ├── Key_16x.png │ │ │ ├── db_16x.png │ │ │ ├── About_16x.png │ │ │ ├── Export_16x.png │ │ │ ├── Import_16x.png │ │ │ ├── AddUser_16x.png │ │ │ ├── CheckOut_16x.png │ │ │ ├── Localize_16x.png │ │ │ ├── NewFile_16x.png │ │ │ ├── Password_16x.png │ │ │ ├── Settings_16x.png │ │ │ ├── Uninstall_16x.png │ │ │ ├── DeleteUser_16x.png │ │ │ ├── SwitchIdentity_16x.png │ │ │ └── IdentitySettings_16x.png │ ├── Mac_Error1.png │ ├── MacOsx_Error2.png │ ├── SQRL_InAction.gif │ ├── WinInstaller.png │ ├── WinRunAnyways.png │ ├── avalonia-logo.ico │ ├── Linux_Installer.png │ ├── MacOsx_Installer.png │ ├── Mac_AllowAnyways.png │ ├── NewIdentitySetup.gif │ ├── SQRL_icon_light_128.png │ ├── SQRL_icon_light_16.png │ ├── SQRL_icon_light_256.png │ ├── SQRL_icon_light_32.png │ ├── SQRL_icon_light_64.png │ ├── SQRL_icon_normal_16.png │ ├── SQRL_icon_normal_32.png │ ├── SQRL_icon_normal_64.png │ ├── WinInstallerPrompt.png │ ├── Fonts │ │ ├── SpaceMono-Bold.ttf │ │ ├── UbuntuMono-Bold.ttf │ │ ├── SpaceMono-Italic.ttf │ │ ├── SpaceMono-Regular.ttf │ │ ├── UbuntuMono-Regular.ttf │ │ └── SpaceMono-BoldItalic.ttf │ ├── SQRL_icon_normal_128.png │ ├── SQRL_icon_normal_256.png │ ├── sqrl_icon_normal_256.ico │ ├── MacOsx_InstallerPrompt.png │ ├── Mac_SecurityAndPrivacy.png │ ├── sqrl_icon_normal_48_icon.ico │ └── sqrl_icon_normal_256_32_icon.ico ├── Properties │ └── launchSettings.json ├── nuget.config ├── Views │ ├── AboutView.xaml.cs │ ├── AskView.xaml.cs │ ├── ReKeyView.xaml.cs │ ├── AppSettingsView.xaml.cs │ ├── ExportIdentityView.xaml.cs │ ├── ImportIdentityView.xaml.cs │ ├── IdentitySettingsView.xaml.cs │ ├── NewIdentityView.xaml.cs │ ├── ChangePasswordView.xaml.cs │ ├── NewIdentityVerifyView.xaml.cs │ ├── ImportIdentitySetupView.xaml.cs │ ├── MainWindow.xaml │ ├── MessageBoxView.xaml │ ├── ProgressDialogView.xaml │ ├── MainMenuView.xaml.cs │ ├── AuthenticationView.xaml.cs │ ├── InputSecretDialogView.xaml │ ├── SelectIdentityView.xaml │ ├── AppSettingsView.xaml │ ├── ImportIdentityView.xaml │ ├── AskView.xaml │ ├── SelectIdentityView.xaml.cs │ ├── ReKeyView.xaml │ ├── NewIdentityVerifyView.xaml │ ├── AboutView.xaml │ ├── MainWindow.xaml.cs │ ├── ChangePasswordView.xaml │ ├── ExportIdentityView.xaml │ ├── NewIdentityView.xaml │ └── InputSecretDialogView.xaml.cs ├── App.xaml ├── Behaviors │ └── FocusOnAttached.cs ├── DB │ ├── Migrations │ │ ├── 20200418165401_AddStartMinimized.cs │ │ ├── 20200219133551_InitialCreate.cs │ │ ├── 20200219133551_InitialCreate.Designer.cs │ │ ├── SQRLDBContextModelSnapshot.cs │ │ └── 20200418165401_AddStartMinimized.Designer.cs │ ├── Models │ │ ├── UserData.cs │ │ └── Identity.cs │ └── DBContext │ │ └── SQRLDBContext.cs ├── Models │ ├── SystemEventArgs.cs │ ├── ISystemEventNotifier.cs │ └── INotifyIcon.cs ├── ViewLocator.cs ├── ViewModels │ ├── SelectIdentityViewModel.cs │ ├── ViewModelBase.cs │ ├── AppSettingsViewModel.cs │ ├── MainWindowViewModel.cs │ ├── AboutViewModel.cs │ └── InputSecretDialogViewModel.cs └── Platform │ ├── Linux │ ├── LinuxTrayIcon.cs │ └── NotifyIcon.cs │ ├── Win │ └── Interop │ │ └── NativeWindow.cs │ └── Implementation.cs ├── SQRLPlatformAwareInstaller ├── Assets │ ├── VL.png │ ├── key.png │ ├── mac.png │ ├── crown.png │ ├── linux.png │ ├── unknown.png │ ├── windows.png │ ├── SQRL_InAction.gif │ ├── avalonia-logo.ico │ ├── SQRL_icon_light_16.png │ ├── SQRL_icon_light_32.png │ ├── SQRL_icon_light_64.png │ ├── Fonts │ │ ├── SpaceMono-Bold.ttf │ │ ├── SpaceMono-Italic.ttf │ │ ├── SpaceMono-Regular.ttf │ │ └── SpaceMono-BoldItalic.ttf │ ├── Icons │ │ ├── alert-triangle.png │ │ └── alert-triangle.svg │ ├── SQRL_icon_light_128.png │ ├── SQRL_icon_light_256.png │ ├── SQRL_icon_normal_128.png │ ├── SQRL_icon_normal_16.png │ ├── SQRL_icon_normal_256.png │ ├── SQRL_icon_normal_32.png │ ├── SQRL_icon_normal_64.png │ ├── sqrl_icon_normal_256.ico │ ├── sqrl_icon_normal_48_icon.ico │ ├── sqrl_icon_normal_256_32_icon.ico │ └── SQRLPlatformAwareInstaller_linux.policy ├── Properties │ └── launchSettings.json ├── nuget.config ├── Views │ ├── RootBailView.xaml.cs │ ├── UninstallView.xaml.cs │ ├── MainInstallView.xaml.cs │ ├── VersionSelectorView.xaml.cs │ ├── InstallationCompleteView.xaml.cs │ ├── MainWindow.xaml │ ├── MainWindow.xaml.cs │ ├── InstallationCompleteView.xaml │ ├── RootBailView.xaml │ ├── UninstallView.xaml │ └── MainInstallView.xaml ├── ViewModels │ ├── RootBailViewModel.cs │ ├── ViewModelBase.cs │ ├── MainWindowViewModel.cs │ └── InstallationCompleteViewModel.cs ├── App.xaml ├── ViewLocator.cs ├── Platform │ ├── Implementation.cs │ ├── Windows │ │ ├── ShellLink.cs │ │ └── VcRedistHelper.cs │ └── OSX │ │ └── Installer.cs ├── Models │ └── IInstaller.cs ├── Program.cs ├── App.xaml.cs └── app.manifest ├── SQRLUtilsLib ├── Resources │ ├── SQRLClientDemo.gif │ └── sqrl_icon_normal_64.png └── SQRLUtilsLib.csproj ├── SQRLCommon ├── Assets │ └── Localization │ │ └── Flags │ │ ├── default_16.png │ │ ├── germany_16.png │ │ └── united_states_16.png ├── AvaloniaExtensions │ ├── MenuItemViewModel.cs │ ├── StringUppercaseConverter.cs │ ├── EnumBooleanConverter.cs │ ├── WindowExtensions.cs │ └── CopyPasteTextBox.cs └── SQRLCommon.csproj ├── .github └── workflows │ ├── dotnetcore.yml │ └── createrelease.yml ├── Sodium.Core ├── Exceptions │ ├── KeyOutOfRangeException.cs │ ├── MacOutOfRangeException.cs │ ├── SaltOutOfRangeException.cs │ ├── SeedOutOfRangeException.cs │ ├── BytesOutOfRangeException.cs │ ├── NonceOutOfRangeException.cs │ ├── PersonalOutOfRangeException.cs │ ├── SignatureOutOfRangeException .cs │ └── AdditionalDataOutOfRangeException.cs ├── SecretAead.cs ├── DetachedBox.cs ├── SodiumCore.cs ├── ShortHash.cs ├── Sodium.Core.ForSqrl.csproj ├── CryptoHash.cs ├── KeyPair.cs └── ScalarMult.cs ├── SQRLUtilLibTest └── SQRLUtilLibTest.csproj ├── .vscode ├── tasks.json └── launch.json └── .gitattributes /Installers/MacOsX/SQRL.app.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sqrldev/SQRLDotNetClient/HEAD/Installers/MacOsX/SQRL.app.zip -------------------------------------------------------------------------------- /SQRLDotNetClientUI/Assets/VL.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sqrldev/SQRLDotNetClient/HEAD/SQRLDotNetClientUI/Assets/VL.png -------------------------------------------------------------------------------- /SQRLDotNetClientUI/Assets/error.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sqrldev/SQRLDotNetClient/HEAD/SQRLDotNetClientUI/Assets/error.ico -------------------------------------------------------------------------------- /SQRLDotNetClientUI/Assets/Icons/ok.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sqrldev/SQRLDotNetClient/HEAD/SQRLDotNetClientUI/Assets/Icons/ok.png -------------------------------------------------------------------------------- /SQRLDotNetClientUI/Assets/Icons/error.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sqrldev/SQRLDotNetClient/HEAD/SQRLDotNetClientUI/Assets/Icons/error.png -------------------------------------------------------------------------------- /SQRLDotNetClientUI/Assets/Mac_Error1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sqrldev/SQRLDotNetClient/HEAD/SQRLDotNetClientUI/Assets/Mac_Error1.png -------------------------------------------------------------------------------- /SQRLPlatformAwareInstaller/Assets/VL.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sqrldev/SQRLDotNetClient/HEAD/SQRLPlatformAwareInstaller/Assets/VL.png -------------------------------------------------------------------------------- /SQRLPlatformAwareInstaller/Assets/key.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sqrldev/SQRLDotNetClient/HEAD/SQRLPlatformAwareInstaller/Assets/key.png -------------------------------------------------------------------------------- /SQRLPlatformAwareInstaller/Assets/mac.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sqrldev/SQRLDotNetClient/HEAD/SQRLPlatformAwareInstaller/Assets/mac.png -------------------------------------------------------------------------------- /SQRLUtilsLib/Resources/SQRLClientDemo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sqrldev/SQRLDotNetClient/HEAD/SQRLUtilsLib/Resources/SQRLClientDemo.gif -------------------------------------------------------------------------------- /SQRLDotNetClientUI/Assets/Icons/pdf_16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sqrldev/SQRLDotNetClient/HEAD/SQRLDotNetClientUI/Assets/Icons/pdf_16.png -------------------------------------------------------------------------------- /SQRLDotNetClientUI/Assets/Icons/question.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sqrldev/SQRLDotNetClient/HEAD/SQRLDotNetClientUI/Assets/Icons/question.png -------------------------------------------------------------------------------- /SQRLDotNetClientUI/Assets/Icons/warning.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sqrldev/SQRLDotNetClient/HEAD/SQRLDotNetClientUI/Assets/Icons/warning.png -------------------------------------------------------------------------------- /SQRLDotNetClientUI/Assets/MacOsx_Error2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sqrldev/SQRLDotNetClient/HEAD/SQRLDotNetClientUI/Assets/MacOsx_Error2.png -------------------------------------------------------------------------------- /SQRLDotNetClientUI/Assets/SQRL_InAction.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sqrldev/SQRLDotNetClient/HEAD/SQRLDotNetClientUI/Assets/SQRL_InAction.gif -------------------------------------------------------------------------------- /SQRLDotNetClientUI/Assets/WinInstaller.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sqrldev/SQRLDotNetClient/HEAD/SQRLDotNetClientUI/Assets/WinInstaller.png -------------------------------------------------------------------------------- /SQRLDotNetClientUI/Assets/WinRunAnyways.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sqrldev/SQRLDotNetClient/HEAD/SQRLDotNetClientUI/Assets/WinRunAnyways.png -------------------------------------------------------------------------------- /SQRLDotNetClientUI/Assets/avalonia-logo.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sqrldev/SQRLDotNetClient/HEAD/SQRLDotNetClientUI/Assets/avalonia-logo.ico -------------------------------------------------------------------------------- /SQRLPlatformAwareInstaller/Assets/crown.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sqrldev/SQRLDotNetClient/HEAD/SQRLPlatformAwareInstaller/Assets/crown.png -------------------------------------------------------------------------------- /SQRLPlatformAwareInstaller/Assets/linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sqrldev/SQRLDotNetClient/HEAD/SQRLPlatformAwareInstaller/Assets/linux.png -------------------------------------------------------------------------------- /SQRLDotNetClientUI/Assets/Linux_Installer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sqrldev/SQRLDotNetClient/HEAD/SQRLDotNetClientUI/Assets/Linux_Installer.png -------------------------------------------------------------------------------- /SQRLDotNetClientUI/Assets/MacOsx_Installer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sqrldev/SQRLDotNetClient/HEAD/SQRLDotNetClientUI/Assets/MacOsx_Installer.png -------------------------------------------------------------------------------- /SQRLDotNetClientUI/Assets/Mac_AllowAnyways.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sqrldev/SQRLDotNetClient/HEAD/SQRLDotNetClientUI/Assets/Mac_AllowAnyways.png -------------------------------------------------------------------------------- /SQRLDotNetClientUI/Assets/NewIdentitySetup.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sqrldev/SQRLDotNetClient/HEAD/SQRLDotNetClientUI/Assets/NewIdentitySetup.gif -------------------------------------------------------------------------------- /SQRLPlatformAwareInstaller/Assets/unknown.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sqrldev/SQRLDotNetClient/HEAD/SQRLPlatformAwareInstaller/Assets/unknown.png -------------------------------------------------------------------------------- /SQRLPlatformAwareInstaller/Assets/windows.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sqrldev/SQRLDotNetClient/HEAD/SQRLPlatformAwareInstaller/Assets/windows.png -------------------------------------------------------------------------------- /SQRLUtilsLib/Resources/sqrl_icon_normal_64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sqrldev/SQRLDotNetClient/HEAD/SQRLUtilsLib/Resources/sqrl_icon_normal_64.png -------------------------------------------------------------------------------- /SQRLDotNetClientUI/Assets/SQRL_icon_light_128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sqrldev/SQRLDotNetClient/HEAD/SQRLDotNetClientUI/Assets/SQRL_icon_light_128.png -------------------------------------------------------------------------------- /SQRLDotNetClientUI/Assets/SQRL_icon_light_16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sqrldev/SQRLDotNetClient/HEAD/SQRLDotNetClientUI/Assets/SQRL_icon_light_16.png -------------------------------------------------------------------------------- /SQRLDotNetClientUI/Assets/SQRL_icon_light_256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sqrldev/SQRLDotNetClient/HEAD/SQRLDotNetClientUI/Assets/SQRL_icon_light_256.png -------------------------------------------------------------------------------- /SQRLDotNetClientUI/Assets/SQRL_icon_light_32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sqrldev/SQRLDotNetClient/HEAD/SQRLDotNetClientUI/Assets/SQRL_icon_light_32.png -------------------------------------------------------------------------------- /SQRLDotNetClientUI/Assets/SQRL_icon_light_64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sqrldev/SQRLDotNetClient/HEAD/SQRLDotNetClientUI/Assets/SQRL_icon_light_64.png -------------------------------------------------------------------------------- /SQRLDotNetClientUI/Assets/SQRL_icon_normal_16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sqrldev/SQRLDotNetClient/HEAD/SQRLDotNetClientUI/Assets/SQRL_icon_normal_16.png -------------------------------------------------------------------------------- /SQRLDotNetClientUI/Assets/SQRL_icon_normal_32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sqrldev/SQRLDotNetClient/HEAD/SQRLDotNetClientUI/Assets/SQRL_icon_normal_32.png -------------------------------------------------------------------------------- /SQRLDotNetClientUI/Assets/SQRL_icon_normal_64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sqrldev/SQRLDotNetClient/HEAD/SQRLDotNetClientUI/Assets/SQRL_icon_normal_64.png -------------------------------------------------------------------------------- /SQRLDotNetClientUI/Assets/WinInstallerPrompt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sqrldev/SQRLDotNetClient/HEAD/SQRLDotNetClientUI/Assets/WinInstallerPrompt.png -------------------------------------------------------------------------------- /SQRLCommon/Assets/Localization/Flags/default_16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sqrldev/SQRLDotNetClient/HEAD/SQRLCommon/Assets/Localization/Flags/default_16.png -------------------------------------------------------------------------------- /SQRLCommon/Assets/Localization/Flags/germany_16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sqrldev/SQRLDotNetClient/HEAD/SQRLCommon/Assets/Localization/Flags/germany_16.png -------------------------------------------------------------------------------- /SQRLDotNetClientUI/Assets/Fonts/SpaceMono-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sqrldev/SQRLDotNetClient/HEAD/SQRLDotNetClientUI/Assets/Fonts/SpaceMono-Bold.ttf -------------------------------------------------------------------------------- /SQRLDotNetClientUI/Assets/Fonts/UbuntuMono-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sqrldev/SQRLDotNetClient/HEAD/SQRLDotNetClientUI/Assets/Fonts/UbuntuMono-Bold.ttf -------------------------------------------------------------------------------- /SQRLDotNetClientUI/Assets/SQRL_icon_normal_128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sqrldev/SQRLDotNetClient/HEAD/SQRLDotNetClientUI/Assets/SQRL_icon_normal_128.png -------------------------------------------------------------------------------- /SQRLDotNetClientUI/Assets/SQRL_icon_normal_256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sqrldev/SQRLDotNetClient/HEAD/SQRLDotNetClientUI/Assets/SQRL_icon_normal_256.png -------------------------------------------------------------------------------- /SQRLDotNetClientUI/Assets/sqrl_icon_normal_256.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sqrldev/SQRLDotNetClient/HEAD/SQRLDotNetClientUI/Assets/sqrl_icon_normal_256.ico -------------------------------------------------------------------------------- /SQRLDotNetClientUI/Properties/launchSettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "profiles": { 3 | "SQRLDotNetClientUI": { 4 | "commandName": "Project" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /SQRLPlatformAwareInstaller/Assets/SQRL_InAction.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sqrldev/SQRLDotNetClient/HEAD/SQRLPlatformAwareInstaller/Assets/SQRL_InAction.gif -------------------------------------------------------------------------------- /SQRLPlatformAwareInstaller/Assets/avalonia-logo.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sqrldev/SQRLDotNetClient/HEAD/SQRLPlatformAwareInstaller/Assets/avalonia-logo.ico -------------------------------------------------------------------------------- /SQRLDotNetClientUI/Assets/Fonts/SpaceMono-Italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sqrldev/SQRLDotNetClient/HEAD/SQRLDotNetClientUI/Assets/Fonts/SpaceMono-Italic.ttf -------------------------------------------------------------------------------- /SQRLDotNetClientUI/Assets/Fonts/SpaceMono-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sqrldev/SQRLDotNetClient/HEAD/SQRLDotNetClientUI/Assets/Fonts/SpaceMono-Regular.ttf -------------------------------------------------------------------------------- /SQRLDotNetClientUI/Assets/Fonts/UbuntuMono-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sqrldev/SQRLDotNetClient/HEAD/SQRLDotNetClientUI/Assets/Fonts/UbuntuMono-Regular.ttf -------------------------------------------------------------------------------- /SQRLDotNetClientUI/Assets/Icons/MenuIcons/Exit_16x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sqrldev/SQRLDotNetClient/HEAD/SQRLDotNetClientUI/Assets/Icons/MenuIcons/Exit_16x.png -------------------------------------------------------------------------------- /SQRLDotNetClientUI/Assets/Icons/MenuIcons/Key_16x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sqrldev/SQRLDotNetClient/HEAD/SQRLDotNetClientUI/Assets/Icons/MenuIcons/Key_16x.png -------------------------------------------------------------------------------- /SQRLDotNetClientUI/Assets/Icons/MenuIcons/db_16x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sqrldev/SQRLDotNetClient/HEAD/SQRLDotNetClientUI/Assets/Icons/MenuIcons/db_16x.png -------------------------------------------------------------------------------- /SQRLDotNetClientUI/Assets/MacOsx_InstallerPrompt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sqrldev/SQRLDotNetClient/HEAD/SQRLDotNetClientUI/Assets/MacOsx_InstallerPrompt.png -------------------------------------------------------------------------------- /SQRLDotNetClientUI/Assets/Mac_SecurityAndPrivacy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sqrldev/SQRLDotNetClient/HEAD/SQRLDotNetClientUI/Assets/Mac_SecurityAndPrivacy.png -------------------------------------------------------------------------------- /SQRLDotNetClientUI/Assets/sqrl_icon_normal_48_icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sqrldev/SQRLDotNetClient/HEAD/SQRLDotNetClientUI/Assets/sqrl_icon_normal_48_icon.ico -------------------------------------------------------------------------------- /SQRLDotNetClientUI/Assets/Fonts/SpaceMono-BoldItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sqrldev/SQRLDotNetClient/HEAD/SQRLDotNetClientUI/Assets/Fonts/SpaceMono-BoldItalic.ttf -------------------------------------------------------------------------------- /SQRLDotNetClientUI/Assets/Icons/MenuIcons/About_16x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sqrldev/SQRLDotNetClient/HEAD/SQRLDotNetClientUI/Assets/Icons/MenuIcons/About_16x.png -------------------------------------------------------------------------------- /SQRLDotNetClientUI/Assets/Icons/MenuIcons/Export_16x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sqrldev/SQRLDotNetClient/HEAD/SQRLDotNetClientUI/Assets/Icons/MenuIcons/Export_16x.png -------------------------------------------------------------------------------- /SQRLDotNetClientUI/Assets/Icons/MenuIcons/Import_16x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sqrldev/SQRLDotNetClient/HEAD/SQRLDotNetClientUI/Assets/Icons/MenuIcons/Import_16x.png -------------------------------------------------------------------------------- /SQRLPlatformAwareInstaller/Assets/SQRL_icon_light_16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sqrldev/SQRLDotNetClient/HEAD/SQRLPlatformAwareInstaller/Assets/SQRL_icon_light_16.png -------------------------------------------------------------------------------- /SQRLPlatformAwareInstaller/Assets/SQRL_icon_light_32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sqrldev/SQRLDotNetClient/HEAD/SQRLPlatformAwareInstaller/Assets/SQRL_icon_light_32.png -------------------------------------------------------------------------------- /SQRLPlatformAwareInstaller/Assets/SQRL_icon_light_64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sqrldev/SQRLDotNetClient/HEAD/SQRLPlatformAwareInstaller/Assets/SQRL_icon_light_64.png -------------------------------------------------------------------------------- /SQRLCommon/Assets/Localization/Flags/united_states_16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sqrldev/SQRLDotNetClient/HEAD/SQRLCommon/Assets/Localization/Flags/united_states_16.png -------------------------------------------------------------------------------- /SQRLDotNetClientUI/Assets/Icons/MenuIcons/AddUser_16x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sqrldev/SQRLDotNetClient/HEAD/SQRLDotNetClientUI/Assets/Icons/MenuIcons/AddUser_16x.png -------------------------------------------------------------------------------- /SQRLDotNetClientUI/Assets/Icons/MenuIcons/CheckOut_16x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sqrldev/SQRLDotNetClient/HEAD/SQRLDotNetClientUI/Assets/Icons/MenuIcons/CheckOut_16x.png -------------------------------------------------------------------------------- /SQRLDotNetClientUI/Assets/Icons/MenuIcons/Localize_16x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sqrldev/SQRLDotNetClient/HEAD/SQRLDotNetClientUI/Assets/Icons/MenuIcons/Localize_16x.png -------------------------------------------------------------------------------- /SQRLDotNetClientUI/Assets/Icons/MenuIcons/NewFile_16x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sqrldev/SQRLDotNetClient/HEAD/SQRLDotNetClientUI/Assets/Icons/MenuIcons/NewFile_16x.png -------------------------------------------------------------------------------- /SQRLDotNetClientUI/Assets/Icons/MenuIcons/Password_16x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sqrldev/SQRLDotNetClient/HEAD/SQRLDotNetClientUI/Assets/Icons/MenuIcons/Password_16x.png -------------------------------------------------------------------------------- /SQRLDotNetClientUI/Assets/Icons/MenuIcons/Settings_16x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sqrldev/SQRLDotNetClient/HEAD/SQRLDotNetClientUI/Assets/Icons/MenuIcons/Settings_16x.png -------------------------------------------------------------------------------- /SQRLDotNetClientUI/Assets/Icons/MenuIcons/Uninstall_16x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sqrldev/SQRLDotNetClient/HEAD/SQRLDotNetClientUI/Assets/Icons/MenuIcons/Uninstall_16x.png -------------------------------------------------------------------------------- /SQRLDotNetClientUI/Assets/sqrl_icon_normal_256_32_icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sqrldev/SQRLDotNetClient/HEAD/SQRLDotNetClientUI/Assets/sqrl_icon_normal_256_32_icon.ico -------------------------------------------------------------------------------- /SQRLPlatformAwareInstaller/Assets/Fonts/SpaceMono-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sqrldev/SQRLDotNetClient/HEAD/SQRLPlatformAwareInstaller/Assets/Fonts/SpaceMono-Bold.ttf -------------------------------------------------------------------------------- /SQRLPlatformAwareInstaller/Assets/Icons/alert-triangle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sqrldev/SQRLDotNetClient/HEAD/SQRLPlatformAwareInstaller/Assets/Icons/alert-triangle.png -------------------------------------------------------------------------------- /SQRLPlatformAwareInstaller/Assets/SQRL_icon_light_128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sqrldev/SQRLDotNetClient/HEAD/SQRLPlatformAwareInstaller/Assets/SQRL_icon_light_128.png -------------------------------------------------------------------------------- /SQRLPlatformAwareInstaller/Assets/SQRL_icon_light_256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sqrldev/SQRLDotNetClient/HEAD/SQRLPlatformAwareInstaller/Assets/SQRL_icon_light_256.png -------------------------------------------------------------------------------- /SQRLPlatformAwareInstaller/Assets/SQRL_icon_normal_128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sqrldev/SQRLDotNetClient/HEAD/SQRLPlatformAwareInstaller/Assets/SQRL_icon_normal_128.png -------------------------------------------------------------------------------- /SQRLPlatformAwareInstaller/Assets/SQRL_icon_normal_16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sqrldev/SQRLDotNetClient/HEAD/SQRLPlatformAwareInstaller/Assets/SQRL_icon_normal_16.png -------------------------------------------------------------------------------- /SQRLPlatformAwareInstaller/Assets/SQRL_icon_normal_256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sqrldev/SQRLDotNetClient/HEAD/SQRLPlatformAwareInstaller/Assets/SQRL_icon_normal_256.png -------------------------------------------------------------------------------- /SQRLPlatformAwareInstaller/Assets/SQRL_icon_normal_32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sqrldev/SQRLDotNetClient/HEAD/SQRLPlatformAwareInstaller/Assets/SQRL_icon_normal_32.png -------------------------------------------------------------------------------- /SQRLPlatformAwareInstaller/Assets/SQRL_icon_normal_64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sqrldev/SQRLDotNetClient/HEAD/SQRLPlatformAwareInstaller/Assets/SQRL_icon_normal_64.png -------------------------------------------------------------------------------- /SQRLPlatformAwareInstaller/Assets/sqrl_icon_normal_256.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sqrldev/SQRLDotNetClient/HEAD/SQRLPlatformAwareInstaller/Assets/sqrl_icon_normal_256.ico -------------------------------------------------------------------------------- /SQRLDotNetClientUI/Assets/Icons/MenuIcons/DeleteUser_16x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sqrldev/SQRLDotNetClient/HEAD/SQRLDotNetClientUI/Assets/Icons/MenuIcons/DeleteUser_16x.png -------------------------------------------------------------------------------- /SQRLPlatformAwareInstaller/Assets/Fonts/SpaceMono-Italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sqrldev/SQRLDotNetClient/HEAD/SQRLPlatformAwareInstaller/Assets/Fonts/SpaceMono-Italic.ttf -------------------------------------------------------------------------------- /SQRLPlatformAwareInstaller/Assets/Fonts/SpaceMono-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sqrldev/SQRLDotNetClient/HEAD/SQRLPlatformAwareInstaller/Assets/Fonts/SpaceMono-Regular.ttf -------------------------------------------------------------------------------- /SQRLDotNetClientUI/Assets/Icons/MenuIcons/SwitchIdentity_16x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sqrldev/SQRLDotNetClient/HEAD/SQRLDotNetClientUI/Assets/Icons/MenuIcons/SwitchIdentity_16x.png -------------------------------------------------------------------------------- /SQRLPlatformAwareInstaller/Assets/Fonts/SpaceMono-BoldItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sqrldev/SQRLDotNetClient/HEAD/SQRLPlatformAwareInstaller/Assets/Fonts/SpaceMono-BoldItalic.ttf -------------------------------------------------------------------------------- /SQRLPlatformAwareInstaller/Assets/sqrl_icon_normal_48_icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sqrldev/SQRLDotNetClient/HEAD/SQRLPlatformAwareInstaller/Assets/sqrl_icon_normal_48_icon.ico -------------------------------------------------------------------------------- /SQRLDotNetClientUI/Assets/Icons/MenuIcons/IdentitySettings_16x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sqrldev/SQRLDotNetClient/HEAD/SQRLDotNetClientUI/Assets/Icons/MenuIcons/IdentitySettings_16x.png -------------------------------------------------------------------------------- /SQRLPlatformAwareInstaller/Assets/sqrl_icon_normal_256_32_icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sqrldev/SQRLDotNetClient/HEAD/SQRLPlatformAwareInstaller/Assets/sqrl_icon_normal_256_32_icon.ico -------------------------------------------------------------------------------- /SQRLPlatformAwareInstaller/Properties/launchSettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "profiles": { 3 | "SQRLPlatformAwareInstaller": { 4 | "commandName": "Project", 5 | "nativeDebugging": true 6 | } 7 | } 8 | } -------------------------------------------------------------------------------- /SQRLDotNetClientUI/nuget.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /SQRLPlatformAwareInstaller/nuget.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /SQRLPlatformAwareInstaller/Assets/Icons/alert-triangle.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /SQRLDotNetClientUI/Views/AboutView.xaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia; 2 | using Avalonia.Controls; 3 | using Avalonia.Markup.Xaml; 4 | 5 | namespace SQRLDotNetClientUI.Views 6 | { 7 | public class AboutView : UserControl 8 | { 9 | public AboutView() 10 | { 11 | this.InitializeComponent(); 12 | } 13 | 14 | private void InitializeComponent() 15 | { 16 | AvaloniaXamlLoader.Load(this); 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /SQRLDotNetClientUI/Views/AskView.xaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia; 2 | using Avalonia.Controls; 3 | using Avalonia.Markup.Xaml; 4 | 5 | namespace SQRLDotNetClientUI.Views 6 | { 7 | public class AskView : UserControl 8 | { 9 | public AskView() 10 | { 11 | this.InitializeComponent(); 12 | 13 | } 14 | 15 | private void InitializeComponent() 16 | { 17 | AvaloniaXamlLoader.Load(this); 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /SQRLDotNetClientUI/Views/ReKeyView.xaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia; 2 | using Avalonia.Controls; 3 | using Avalonia.Markup.Xaml; 4 | 5 | namespace SQRLDotNetClientUI.Views 6 | { 7 | public class ReKeyView : UserControl 8 | { 9 | public ReKeyView() 10 | { 11 | this.InitializeComponent(); 12 | } 13 | 14 | private void InitializeComponent() 15 | { 16 | AvaloniaXamlLoader.Load(this); 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /SQRLDotNetClientUI/Views/AppSettingsView.xaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia; 2 | using Avalonia.Controls; 3 | using Avalonia.Markup.Xaml; 4 | 5 | namespace SQRLDotNetClientUI.Views 6 | { 7 | public class AppSettingsView : UserControl 8 | { 9 | public AppSettingsView() 10 | { 11 | this.InitializeComponent(); 12 | } 13 | 14 | private void InitializeComponent() 15 | { 16 | AvaloniaXamlLoader.Load(this); 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /SQRLDotNetClientUI/Views/ExportIdentityView.xaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia; 2 | using Avalonia.Controls; 3 | using Avalonia.Markup.Xaml; 4 | 5 | namespace SQRLDotNetClientUI.Views 6 | { 7 | public class ExportIdentityView : UserControl 8 | { 9 | public ExportIdentityView() 10 | { 11 | this.InitializeComponent(); 12 | } 13 | 14 | private void InitializeComponent() 15 | { 16 | AvaloniaXamlLoader.Load(this); 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /SQRLDotNetClientUI/Views/ImportIdentityView.xaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia; 2 | using Avalonia.Controls; 3 | using Avalonia.Markup.Xaml; 4 | 5 | namespace SQRLDotNetClientUI.Views 6 | { 7 | public class ImportIdentityView : UserControl 8 | { 9 | public ImportIdentityView() 10 | { 11 | this.InitializeComponent(); 12 | } 13 | 14 | private void InitializeComponent() 15 | { 16 | AvaloniaXamlLoader.Load(this); 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /SQRLPlatformAwareInstaller/Views/RootBailView.xaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia; 2 | using Avalonia.Controls; 3 | using Avalonia.Markup.Xaml; 4 | 5 | namespace SQRLPlatformAwareInstaller.Views 6 | { 7 | public class RootBailView : UserControl 8 | { 9 | public RootBailView() 10 | { 11 | this.InitializeComponent(); 12 | } 13 | 14 | private void InitializeComponent() 15 | { 16 | AvaloniaXamlLoader.Load(this); 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /SQRLPlatformAwareInstaller/Views/UninstallView.xaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia; 2 | using Avalonia.Controls; 3 | using Avalonia.Markup.Xaml; 4 | 5 | namespace SQRLPlatformAwareInstaller.Views 6 | { 7 | public class UninstallView : UserControl 8 | { 9 | public UninstallView() 10 | { 11 | this.InitializeComponent(); 12 | } 13 | 14 | private void InitializeComponent() 15 | { 16 | AvaloniaXamlLoader.Load(this); 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /SQRLDotNetClientUI/Views/IdentitySettingsView.xaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia; 2 | using Avalonia.Controls; 3 | using Avalonia.Markup.Xaml; 4 | 5 | namespace SQRLDotNetClientUI.Views 6 | { 7 | public class IdentitySettingsView : UserControl 8 | { 9 | public IdentitySettingsView() 10 | { 11 | this.InitializeComponent(); 12 | } 13 | 14 | private void InitializeComponent() 15 | { 16 | AvaloniaXamlLoader.Load(this); 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /SQRLPlatformAwareInstaller/Views/MainInstallView.xaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia; 2 | using Avalonia.Controls; 3 | using Avalonia.Markup.Xaml; 4 | 5 | namespace SQRLPlatformAwareInstaller.Views 6 | { 7 | public class MainInstallView : UserControl 8 | { 9 | public MainInstallView() 10 | { 11 | this.InitializeComponent(); 12 | } 13 | 14 | private void InitializeComponent() 15 | { 16 | AvaloniaXamlLoader.Load(this); 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /SQRLPlatformAwareInstaller/Views/VersionSelectorView.xaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia; 2 | using Avalonia.Controls; 3 | using Avalonia.Markup.Xaml; 4 | 5 | namespace SQRLPlatformAwareInstaller.Views 6 | { 7 | public class VersionSelectorView : UserControl 8 | { 9 | public VersionSelectorView() 10 | { 11 | this.InitializeComponent(); 12 | } 13 | 14 | private void InitializeComponent() 15 | { 16 | AvaloniaXamlLoader.Load(this); 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /SQRLPlatformAwareInstaller/Views/InstallationCompleteView.xaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia; 2 | using Avalonia.Controls; 3 | using Avalonia.Markup.Xaml; 4 | 5 | namespace SQRLPlatformAwareInstaller.Views 6 | { 7 | public class InstallationCompleteView : UserControl 8 | { 9 | public InstallationCompleteView() 10 | { 11 | this.InitializeComponent(); 12 | } 13 | 14 | private void InitializeComponent() 15 | { 16 | AvaloniaXamlLoader.Load(this); 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /.github/workflows/dotnetcore.yml: -------------------------------------------------------------------------------- 1 | name: Build & Test 2 | 3 | on: [push, pull_request] 4 | 5 | jobs: 6 | build: 7 | 8 | runs-on: ubuntu-latest 9 | 10 | steps: 11 | - uses: actions/checkout@v1 12 | - name: Setup .NET Core SDK 13 | uses: actions/setup-dotnet@v1.4.0 14 | with: 15 | # SDK version to use. Example: 2.2.104 16 | dotnet-version: 3.1.100 # optional 17 | - name: Build with dotnet 18 | run: dotnet build --configuration Release 19 | - name: Test with dotnet 20 | run: dotnet test 21 | -------------------------------------------------------------------------------- /SQRLCommon/AvaloniaExtensions/MenuItemViewModel.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | using System.Windows.Input; 5 | 6 | namespace SQRLCommon.AvaloniaExtensions 7 | { 8 | public class MenuItemViewModel 9 | { 10 | public string Header { get; set; } 11 | public ICommand Command { get; set; } 12 | public object CommandParameter { get; set; } 13 | public IList Items { get; set; } 14 | 15 | public override string ToString() 16 | { 17 | return Header; 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /SQRLDotNetClientUI/App.xaml: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /SQRLPlatformAwareInstaller/ViewModels/RootBailViewModel.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | 5 | namespace SQRLPlatformAwareInstaller.ViewModels 6 | { 7 | /// 8 | /// Simple View Model for displaying "bail out" message 9 | /// 10 | public class RootBailViewModel: ViewModelBase 11 | { 12 | public RootBailViewModel() 13 | { 14 | this.Title = _loc.GetLocalizationValue("BailTitle"); 15 | } 16 | public void Leave() 17 | { 18 | Environment.Exit(0); 19 | } 20 | 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /SQRLPlatformAwareInstaller/App.xaml: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /.github/workflows/createrelease.yml: -------------------------------------------------------------------------------- 1 | name: Create and Publish Release 2 | 3 | on: 4 | milestone: 5 | types: [closed] 6 | 7 | jobs: 8 | build: 9 | 10 | runs-on: windows-latest 11 | 12 | steps: 13 | - uses: actions/checkout@v1 14 | - name: Setup .NET Core SDK 15 | uses: actions/setup-dotnet@v1.4.0 16 | with: 17 | # SDK version to use. Example: 2.2.104 18 | dotnet-version: 3.1.100 # optional 19 | - name: Create Releases Assets 20 | run: | 21 | powershell .github/releases.ps1 -token ${{secrets.TOKEN}} -milestone ${{ github.event.milestone.title }} -milestonedesc ${{ github.event.milestone.description }} 22 | -------------------------------------------------------------------------------- /SQRLDotNetClientUI/Behaviors/FocusOnAttached.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | using Avalonia.Threading; 3 | using Avalonia.Xaml.Interactivity; 4 | 5 | namespace SQRLDotNetClientUI.Behaviors 6 | { 7 | /// 8 | /// This behaviour can be set in XAML to give initial focus 9 | /// to a UI control. 10 | /// 11 | public class FocusOnAttached: Behavior 12 | { 13 | protected override void OnAttached() 14 | { 15 | base.OnAttached(); 16 | 17 | Dispatcher.UIThread.Post(() => 18 | { 19 | AssociatedObject.Focus(); 20 | }, DispatcherPriority.Layout); 21 | } 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /SQRLCommon/AvaloniaExtensions/StringUppercaseConverter.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Data.Converters; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Text; 5 | 6 | namespace SQRLCommon.AvaloniaExtensions 7 | { 8 | public class StringUppercaseConverter : IValueConverter 9 | { 10 | public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 11 | { 12 | return value.ToString().ToUpper(); 13 | } 14 | 15 | public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 16 | { 17 | return value.ToString().ToLower(); 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Sodium.Core/Exceptions/KeyOutOfRangeException.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Sodium.Exceptions 4 | { 5 | public class KeyOutOfRangeException : ArgumentOutOfRangeException 6 | { 7 | public KeyOutOfRangeException() 8 | { 9 | } 10 | 11 | public KeyOutOfRangeException(string message) 12 | : base(message) 13 | { 14 | } 15 | 16 | public KeyOutOfRangeException(string message, Exception inner) 17 | : base(message, inner) 18 | { 19 | } 20 | 21 | public KeyOutOfRangeException(string paramName, object actualValue, string message) 22 | : base(paramName, actualValue, message) 23 | { 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /Sodium.Core/Exceptions/MacOutOfRangeException.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Sodium.Exceptions 4 | { 5 | public class MacOutOfRangeException : ArgumentOutOfRangeException 6 | { 7 | public MacOutOfRangeException() 8 | { 9 | } 10 | 11 | public MacOutOfRangeException(string message) 12 | : base(message) 13 | { 14 | } 15 | 16 | public MacOutOfRangeException(string message, Exception inner) 17 | : base(message, inner) 18 | { 19 | } 20 | 21 | public MacOutOfRangeException(string paramName, object actualValue, string message) 22 | : base(paramName, actualValue, message) 23 | { 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /Sodium.Core/Exceptions/SaltOutOfRangeException.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Sodium.Exceptions 4 | { 5 | public class SaltOutOfRangeException : ArgumentOutOfRangeException 6 | { 7 | public SaltOutOfRangeException() 8 | { 9 | } 10 | 11 | public SaltOutOfRangeException(string message) 12 | : base(message) 13 | { 14 | } 15 | 16 | public SaltOutOfRangeException(string message, Exception inner) 17 | : base(message, inner) 18 | { 19 | } 20 | 21 | public SaltOutOfRangeException(string paramName, object actualValue, string message) 22 | : base(paramName, actualValue, message) 23 | { 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /Sodium.Core/Exceptions/SeedOutOfRangeException.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Sodium.Exceptions 4 | { 5 | public class SeedOutOfRangeException : ArgumentOutOfRangeException 6 | { 7 | public SeedOutOfRangeException() 8 | { 9 | } 10 | 11 | public SeedOutOfRangeException(string message) 12 | : base(message) 13 | { 14 | } 15 | 16 | public SeedOutOfRangeException(string message, Exception inner) 17 | : base(message, inner) 18 | { 19 | } 20 | 21 | public SeedOutOfRangeException(string paramName, object actualValue, string message) 22 | : base(paramName, actualValue, message) 23 | { 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /Sodium.Core/Exceptions/BytesOutOfRangeException.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Sodium.Exceptions 4 | { 5 | public class BytesOutOfRangeException : ArgumentOutOfRangeException 6 | { 7 | public BytesOutOfRangeException() 8 | { 9 | } 10 | 11 | public BytesOutOfRangeException(string message) 12 | : base(message) 13 | { 14 | } 15 | 16 | public BytesOutOfRangeException(string message, Exception inner) 17 | : base(message, inner) 18 | { 19 | } 20 | 21 | public BytesOutOfRangeException(string paramName, object actualValue, string message) 22 | : base(paramName, actualValue, message) 23 | { 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /Sodium.Core/Exceptions/NonceOutOfRangeException.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Sodium.Exceptions 4 | { 5 | public class NonceOutOfRangeException : ArgumentOutOfRangeException 6 | { 7 | public NonceOutOfRangeException() 8 | { 9 | } 10 | 11 | public NonceOutOfRangeException(string message) 12 | : base(message) 13 | { 14 | } 15 | 16 | public NonceOutOfRangeException(string message, Exception inner) 17 | : base(message, inner) 18 | { 19 | } 20 | 21 | public NonceOutOfRangeException(string paramName, object actualValue, string message) 22 | : base(paramName, actualValue, message) 23 | { 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /Sodium.Core/Exceptions/PersonalOutOfRangeException.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Sodium.Exceptions 4 | { 5 | public class PersonalOutOfRangeException : ArgumentOutOfRangeException 6 | { 7 | public PersonalOutOfRangeException() 8 | { 9 | } 10 | 11 | public PersonalOutOfRangeException(string message) 12 | : base(message) 13 | { 14 | } 15 | 16 | public PersonalOutOfRangeException(string message, Exception inner) 17 | : base(message, inner) 18 | { 19 | } 20 | 21 | public PersonalOutOfRangeException(string paramName, object actualValue, string message) 22 | : base(paramName, actualValue, message) 23 | { 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /Sodium.Core/Exceptions/SignatureOutOfRangeException .cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Sodium.Exceptions 4 | { 5 | public class SignatureOutOfRangeException : ArgumentOutOfRangeException 6 | { 7 | public SignatureOutOfRangeException() 8 | { 9 | } 10 | 11 | public SignatureOutOfRangeException(string message) 12 | : base(message) 13 | { 14 | } 15 | 16 | public SignatureOutOfRangeException(string message, Exception inner) 17 | : base(message, inner) 18 | { 19 | } 20 | 21 | public SignatureOutOfRangeException(string paramName, object actualValue, string message) 22 | : base(paramName, actualValue, message) 23 | { 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /Sodium.Core/Exceptions/AdditionalDataOutOfRangeException.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Sodium.Exceptions 4 | { 5 | public class AdditionalDataOutOfRangeException : ArgumentOutOfRangeException 6 | { 7 | public AdditionalDataOutOfRangeException() 8 | { 9 | } 10 | 11 | public AdditionalDataOutOfRangeException(string message) 12 | : base(message) 13 | { 14 | } 15 | 16 | public AdditionalDataOutOfRangeException(string message, Exception inner) 17 | : base(message, inner) 18 | { 19 | } 20 | 21 | public AdditionalDataOutOfRangeException(string paramName, object actualValue, string message) 22 | : base(paramName, actualValue, message) 23 | { 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /SQRLDotNetClientUI/DB/Migrations/20200418165401_AddStartMinimized.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.EntityFrameworkCore.Migrations; 2 | 3 | namespace SQRLDotNetClientUI.Migrations 4 | { 5 | public partial class AddStartMinimized : Migration 6 | { 7 | protected override void Up(MigrationBuilder migrationBuilder) 8 | { 9 | migrationBuilder.AddColumn( 10 | name: "StartMinimized", 11 | table: "UserData", 12 | nullable: false, 13 | defaultValue: false); 14 | } 15 | 16 | protected override void Down(MigrationBuilder migrationBuilder) 17 | { 18 | migrationBuilder.DropColumn( 19 | name: "StartMinimized", 20 | table: "UserData"); 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /SQRLPlatformAwareInstaller/ViewModels/ViewModelBase.cs: -------------------------------------------------------------------------------- 1 | using Avalonia; 2 | using Avalonia.Platform; 3 | using ReactiveUI; 4 | using SQRLCommon.AvaloniaExtensions; 5 | using SQRLPlatformAwareInstaller.Views; 6 | 7 | namespace SQRLPlatformAwareInstaller.ViewModels 8 | { 9 | public class ViewModelBase : ReactiveObject 10 | { 11 | protected MainWindow _mainWindow = AvaloniaLocator.Current.GetService(); 12 | protected LocalizationExtension _loc = AvaloniaLocator.Current.GetService().LocalizationService; 13 | protected IAssetLoader _assets = AvaloniaLocator.Current.GetService(); 14 | 15 | private string title = ""; 16 | public string Title 17 | { 18 | get => this.title; 19 | set { this.RaiseAndSetIfChanged(ref title, value); } 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /Sodium.Core/SecretAead.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Sodium 4 | { 5 | [Obsolete("Use SecretAeadChaCha20Poly1305 instead")] 6 | public static class SecretAead 7 | { 8 | [Obsolete("Use SecretAeadChaCha20Poly1305.GenerateNonce instead")] 9 | public static byte[] GenerateNonce() => SecretAeadChaCha20Poly1305.GenerateNonce(); 10 | 11 | [Obsolete("Use SecretAeadChaCha20Poly1305.Encrypt instead")] 12 | public static byte[] Encrypt(byte[] message, byte[] nonce, byte[] key, byte[] additionalData = null) => SecretAeadChaCha20Poly1305.Encrypt(message, nonce, key, additionalData); 13 | 14 | [Obsolete("Use SecretAeadChaCha20Poly1305.Decrypt instead")] 15 | public static byte[] Decrypt(byte[] cipher, byte[] nonce, byte[] key, byte[] additionalData = null) => SecretAeadChaCha20Poly1305.Decrypt(cipher, nonce, key, additionalData); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /SQRLCommon/AvaloniaExtensions/EnumBooleanConverter.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Data.Converters; 2 | using System; 3 | 4 | 5 | namespace SQRLCommon.AvaloniaExtensions 6 | { 7 | public class EnumBooleanConverter : IValueConverter 8 | { 9 | public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 10 | { 11 | string parameterString = parameter.ToString(); 12 | 13 | object parameterValue = Enum.Parse(value.GetType(), parameterString); 14 | 15 | return parameterValue.Equals(value); 16 | } 17 | 18 | public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 19 | { 20 | string parameterString = parameter.ToString(); 21 | 22 | return Enum.Parse(targetType, parameterString); 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /SQRLDotNetClientUI/DB/Models/UserData.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | 5 | namespace SQRLDotNetClientUI.DB.Models 6 | { 7 | /// 8 | /// Stores user information such as the last loaded identity, etc. 9 | /// 10 | public class UserData 11 | { 12 | /// 13 | /// The database record id for the UserData. 14 | /// 15 | public int Id { get; set; } 16 | 17 | /// 18 | /// The id of the last loaded identity. 19 | /// 20 | public string LastLoadedIdentity { get; set; } 21 | 22 | /// 23 | /// Gets or sets a value that determines if the app should start 24 | /// minimized to the tray icon. 25 | /// 26 | public bool StartMinimized { get; set; } = false; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /SQRLDotNetClientUI/Models/SystemEventArgs.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | 5 | namespace SQRLDotNetClientUI.Models 6 | { 7 | /// 8 | /// Represents event args for system event notifications. 9 | /// 10 | public class SystemEventArgs : EventArgs 11 | { 12 | /// 13 | /// The description of the system event that triggered the notification. 14 | /// 15 | public string EventDescription; 16 | 17 | /// 18 | /// Creates a new SystemEventArgs instance. 19 | /// 20 | /// The description of the system event that triggered the notification. 21 | public SystemEventArgs(string eventDescription) 22 | { 23 | this.EventDescription = eventDescription; 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /SQRLDotNetClientUI/ViewLocator.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Avalonia.Controls; 3 | using Avalonia.Controls.Templates; 4 | using SQRLDotNetClientUI.ViewModels; 5 | 6 | namespace SQRLDotNetClientUI 7 | { 8 | public class ViewLocator : IDataTemplate 9 | { 10 | public bool SupportsRecycling => false; 11 | 12 | public IControl Build(object data) 13 | { 14 | var name = data.GetType().FullName.Replace("ViewModel", "View"); 15 | var type = Type.GetType(name); 16 | 17 | if (type != null) 18 | { 19 | return (Control)Activator.CreateInstance(type); 20 | } 21 | else 22 | { 23 | return new TextBlock { Text = "Not Found: " + name }; 24 | } 25 | } 26 | 27 | public bool Match(object data) 28 | { 29 | return data is ViewModelBase; 30 | } 31 | } 32 | } -------------------------------------------------------------------------------- /SQRLPlatformAwareInstaller/ViewLocator.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Avalonia.Controls; 3 | using Avalonia.Controls.Templates; 4 | using SQRLPlatformAwareInstaller.ViewModels; 5 | 6 | namespace SQRLPlatformAwareInstaller 7 | { 8 | public class ViewLocator : IDataTemplate 9 | { 10 | public bool SupportsRecycling => false; 11 | 12 | public IControl Build(object data) 13 | { 14 | var name = data.GetType().FullName.Replace("ViewModel", "View"); 15 | var type = Type.GetType(name); 16 | 17 | if (type != null) 18 | { 19 | return (Control)Activator.CreateInstance(type); 20 | } 21 | else 22 | { 23 | return new TextBlock { Text = "Not Found: " + name }; 24 | } 25 | } 26 | 27 | public bool Match(object data) 28 | { 29 | return data is ViewModelBase; 30 | } 31 | } 32 | } -------------------------------------------------------------------------------- /Sodium.Core/DetachedBox.cs: -------------------------------------------------------------------------------- 1 | namespace Sodium 2 | { 3 | /// A ciphertext / mac pair. 4 | public class DetachedBox 5 | { 6 | /// Initializes a new instance of the class. 7 | public DetachedBox() 8 | { 9 | //do nothing 10 | } 11 | 12 | /// Initializes a new instance of the class. 13 | /// The cipher. 14 | /// The 16 byte mac. 15 | public DetachedBox(byte[] cipherText, byte[] mac) 16 | { 17 | CipherText = cipherText; 18 | Mac = mac; 19 | } 20 | 21 | /// Gets or sets the Cipher. 22 | public byte[] CipherText { get; set; } 23 | 24 | /// Gets or sets the MAC. 25 | public byte[] Mac { get; set; } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /SQRLDotNetClientUI/Views/NewIdentityView.xaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia; 2 | using Avalonia.Controls; 3 | using Avalonia.Markup.Xaml; 4 | using SQRLCommon.AvaloniaExtensions; 5 | 6 | namespace SQRLDotNetClientUI.Views 7 | { 8 | public class NewIdentityView : UserControl 9 | { 10 | public NewIdentityView() 11 | { 12 | this.InitializeComponent(); 13 | } 14 | 15 | private void InitializeComponent() 16 | { 17 | AvaloniaXamlLoader.Load(this); 18 | 19 | // This is only here because for some reason the XAML behaviour "FocusOnAttached" 20 | // isn't working for this window. No clue why, probably a dumb mistake on my part. 21 | // If anyone gets this working in XAML, this ugly hack can be removed! 22 | this.FindControl("txtIdentityName").AttachedToVisualTree += 23 | (sender, e) => (sender as CopyPasteTextBox).Focus(); 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /SQRLDotNetClientUI/Views/ChangePasswordView.xaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia; 2 | using Avalonia.Controls; 3 | using Avalonia.Markup.Xaml; 4 | using SQRLCommon.AvaloniaExtensions; 5 | 6 | namespace SQRLDotNetClientUI.Views 7 | { 8 | public class ChangePasswordView : UserControl 9 | { 10 | public ChangePasswordView() 11 | { 12 | this.InitializeComponent(); 13 | } 14 | 15 | private void InitializeComponent() 16 | { 17 | AvaloniaXamlLoader.Load(this); 18 | 19 | // This is only here because for some reason the XAML behaviour "FocusOnAttached" 20 | // isn't working for this window. No clue why, probably a dumb mistake on my part. 21 | // If anyone gets this working in XAML, this ugly hack can be removed! 22 | this.FindControl("txtPassword").AttachedToVisualTree += 23 | (sender, e) => (sender as CopyPasteTextBox).Focus(); 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /SQRLDotNetClientUI/Views/NewIdentityVerifyView.xaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia; 2 | using Avalonia.Controls; 3 | using Avalonia.Markup.Xaml; 4 | using SQRLCommon.AvaloniaExtensions; 5 | 6 | namespace SQRLDotNetClientUI.Views 7 | { 8 | public class NewIdentityVerifyView : UserControl 9 | { 10 | public NewIdentityVerifyView() 11 | { 12 | this.InitializeComponent(); 13 | } 14 | 15 | private void InitializeComponent() 16 | { 17 | AvaloniaXamlLoader.Load(this); 18 | 19 | // This is only here because for some reason the XAML behaviour "FocusOnAttached" 20 | // isn't working for this window. No clue why, probably a dumb mistake on my part. 21 | // If anyone gets this working in XAML, this ugly hack can be removed! 22 | this.FindControl("txtRescueCode").AttachedToVisualTree += 23 | (sender, e) => (sender as CopyPasteTextBox).Focus(); 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /SQRLPlatformAwareInstaller/Assets/SQRLPlatformAwareInstaller_linux.policy: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | Run SQRL Platform Installer Program 8 | Authentication is required to run the SQRL Platform Installer 9 | system-software-install 10 | 11 | auth_admin 12 | auth_admin 13 | auth_admin 14 | 15 | INSTALLER_PATH 16 | true 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /SQRLDotNetClientUI/Views/ImportIdentitySetupView.xaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia; 2 | using Avalonia.Controls; 3 | using Avalonia.Markup.Xaml; 4 | using SQRLCommon.AvaloniaExtensions; 5 | 6 | namespace SQRLDotNetClientUI.Views 7 | { 8 | public class ImportIdentitySetupView : UserControl 9 | { 10 | public ImportIdentitySetupView() 11 | { 12 | this.InitializeComponent(); 13 | } 14 | 15 | private void InitializeComponent() 16 | { 17 | AvaloniaXamlLoader.Load(this); 18 | 19 | // This is only here because for some reason the XAML behaviour "FocusOnAttached" 20 | // isn't working for this window. No clue why, probably a dumb mistake on my part. 21 | // If anyone gets this working in XAML, this ugly hack can be removed! 22 | this.FindControl("txtIdentityName").AttachedToVisualTree += 23 | (sender, e) => (sender as CopyPasteTextBox).Focus(); 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /SQRLPlatformAwareInstaller/Views/MainWindow.xaml: -------------------------------------------------------------------------------- 1 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /SQRLPlatformAwareInstaller/Views/MainWindow.xaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia; 2 | using Avalonia.Controls; 3 | using Avalonia.Markup.Xaml; 4 | using SQRLCommon.AvaloniaExtensions; 5 | 6 | namespace SQRLPlatformAwareInstaller.Views 7 | { 8 | public class MainWindow : Window 9 | { 10 | public LocalizationExtension LocalizationService { get; } 11 | public MainWindow() 12 | { 13 | InitializeComponent(); 14 | if (AvaloniaLocator.Current.GetService() == null) 15 | { 16 | AvaloniaLocator.CurrentMutable.Bind().ToConstant(this); 17 | } 18 | this.LocalizationService = new LocalizationExtension(); 19 | this.WindowStartupLocation = WindowStartupLocation.CenterScreen; 20 | #if DEBUG 21 | this.AttachDevTools(); 22 | #endif 23 | } 24 | 25 | private void InitializeComponent() 26 | { 27 | AvaloniaXamlLoader.Load(this); 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /SQRLDotNetClientUI/DB/Models/Identity.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.ComponentModel.DataAnnotations; 4 | using System.Text; 5 | 6 | namespace SQRLDotNetClientUI.DB.Models 7 | { 8 | /// 9 | /// This is a database model representing a SQRL identity record. 10 | /// 11 | public class Identity 12 | { 13 | /// 14 | /// The unique identifier of the identity. 15 | /// 16 | [Key] 17 | public string UniqueId { get; set; } 18 | 19 | /// 20 | /// The genesis identifier of the identity. 21 | /// 22 | public string GenesisId { get; set; } 23 | 24 | /// 25 | /// The identity's name. 26 | /// 27 | public string Name { get; set; } 28 | 29 | /// 30 | /// The identity's raw data bytes. 31 | /// 32 | public byte[] DataBytes { get; set; } 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /SQRLUtilLibTest/SQRLUtilLibTest.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | netcoreapp3.1 5 | 6 | false 7 | 8 | 9 | 10 | 11 | 12 | 13 | all 14 | runtime; build; native; contentfiles; analyzers; buildtransitive 15 | 16 | 17 | all 18 | runtime; build; native; contentfiles; analyzers; buildtransitive 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /SQRLDotNetClientUI/Views/MainWindow.xaml: -------------------------------------------------------------------------------- 1 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /SQRLDotNetClientUI/Views/MessageBoxView.xaml: -------------------------------------------------------------------------------- 1 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /SQRLDotNetClientUI/Views/ProgressDialogView.xaml: -------------------------------------------------------------------------------- 1 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /SQRLDotNetClientUI/Views/MainMenuView.xaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia; 2 | using Avalonia.Controls; 3 | using Avalonia.Markup.Xaml; 4 | using SQRLCommon.AvaloniaExtensions; 5 | using SQRLDotNetClientUI.ViewModels; 6 | using System.Collections.Generic; 7 | 8 | namespace SQRLDotNetClientUI.Views 9 | { 10 | public class MainMenuView : UserControl 11 | { 12 | public MainMenuView() 13 | { 14 | this.InitializeComponent(); 15 | SetupLanguageMenu(); 16 | } 17 | 18 | /// 19 | /// Adds all available language options to the main menu. 20 | /// 21 | private void SetupLanguageMenu() 22 | { 23 | // We need to instantiate a LocalizationExtension here 24 | // so that the can be sure that the localization data is initialized. 25 | LocalizationExtension loc = new LocalizationExtension(); 26 | 27 | MenuItem languageMenu = this.FindControl("menuLanguage"); 28 | 29 | var mmvm = ((MainWindowViewModel)AvaloniaLocator.Current.GetService().DataContext).MainMenu; 30 | List items = loc.GetLanguageMenuItems(mmvm); 31 | 32 | languageMenu.Items = items; 33 | } 34 | 35 | private void InitializeComponent() 36 | { 37 | AvaloniaXamlLoader.Load(this); 38 | } 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /.vscode/tasks.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "2.0.0", 3 | "tasks": [ 4 | { 5 | "label": "build", 6 | "command": "dotnet", 7 | "type": "process", 8 | "args": [ 9 | "build", 10 | "${workspaceFolder}/SQRLDotNetClientUI/SQRLDotNetClientUI.csproj", 11 | "/property:GenerateFullPaths=true", 12 | "/consoleloggerparameters:NoSummary" 13 | ], 14 | "problemMatcher": "$msCompile" 15 | }, 16 | { 17 | "label": "publish", 18 | "command": "dotnet", 19 | "type": "process", 20 | "args": [ 21 | "publish", 22 | "${workspaceFolder}/SQRLDotNetClientUI/SQRLDotNetClientUI.csproj", 23 | "/property:GenerateFullPaths=true", 24 | "/consoleloggerparameters:NoSummary" 25 | ], 26 | "problemMatcher": "$msCompile" 27 | }, 28 | { 29 | "label": "watch", 30 | "command": "dotnet", 31 | "type": "process", 32 | "args": [ 33 | "watch", 34 | "run", 35 | "${workspaceFolder}/SQRLDotNetClientUI/SQRLDotNetClientUI.csproj", 36 | "/property:GenerateFullPaths=true", 37 | "/consoleloggerparameters:NoSummary" 38 | ], 39 | "problemMatcher": "$msCompile" 40 | } 41 | ] 42 | } -------------------------------------------------------------------------------- /SQRLDotNetClientUI/Views/AuthenticationView.xaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia; 2 | using Avalonia.Controls; 3 | using Avalonia.Markup.Xaml; 4 | using SQRLCommon.AvaloniaExtensions; 5 | using SQRLDotNetClientUI.ViewModels; 6 | 7 | namespace SQRLDotNetClientUI.Views 8 | { 9 | public class AuthenticationView : UserControl 10 | { 11 | private CopyPasteTextBox _txtPassword = null; 12 | private CopyPasteTextBox _txtAltID = null; 13 | 14 | public AuthenticationView() 15 | { 16 | this.InitializeComponent(); 17 | _txtPassword = this.FindControl("txtPassword"); 18 | _txtAltID = this.FindControl("txtAltID"); 19 | this.GotFocus += AuthenticationView_GotFocus; 20 | } 21 | 22 | private void InitializeComponent() 23 | { 24 | AvaloniaXamlLoader.Load(this); 25 | } 26 | 27 | private void AuthenticationView_GotFocus(object sender, Avalonia.Input.GotFocusEventArgs e) 28 | { 29 | if (e?.Source is Button) 30 | { 31 | if (((Button)e.Source).Name == "btnIdentitySelector") 32 | { 33 | _txtPassword.Focus(); 34 | e.Handled = true; 35 | } 36 | 37 | if (((Button)e.Source).Name == "btnAdvancedFunctions") 38 | { 39 | _txtAltID.Focus(); 40 | e.Handled = true; 41 | } 42 | } 43 | } 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /SQRLCommon/SQRLCommon.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | netcoreapp3.1 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /SQRLDotNetClientUI/ViewModels/SelectIdentityViewModel.cs: -------------------------------------------------------------------------------- 1 | using System.Threading; 2 | using System.Threading.Tasks; 3 | 4 | namespace SQRLDotNetClientUI.ViewModels 5 | { 6 | /// 7 | /// Represents a view model for the SelectIdentityView screen. 8 | /// 9 | public class SelectIdentityViewModel : ViewModelBase 10 | { 11 | private AutoResetEvent _identitySelected = null; 12 | private ViewModelBase _parent = null; 13 | 14 | public SelectIdentityViewModel() 15 | { 16 | _identitySelected = new AutoResetEvent(false); 17 | } 18 | 19 | /// 20 | /// Handles the event of an identity being selected. 21 | /// 22 | public void OnIdentitySelected(string identityUniqueId) 23 | { 24 | _identityManager.SetCurrentIdentity(identityUniqueId); 25 | 26 | // Signal the auto reset event that we're done 27 | _identitySelected.Set(); 28 | } 29 | 30 | public async void ShowDialog(ViewModelBase Parent) 31 | { 32 | this._parent = Parent; 33 | 34 | // Set the content of the main window to the select identity screen 35 | ((MainWindowViewModel)_mainWindow.DataContext).Content = this; 36 | 37 | // Wait for an identity to get selected 38 | await Task.Run(() => _identitySelected.WaitOne()); 39 | 40 | // Set the content of the main window back to where it was before 41 | ((MainWindowViewModel)_mainWindow.DataContext).Content = _parent; 42 | } 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /SQRLDotNetClientUI/Views/InputSecretDialogView.xaml: -------------------------------------------------------------------------------- 1 | 12 | 13 | 14 | 15 | 16 | Please enter secret: 17 | 18 | 19 | 20 | 21 | 22 | 38 | 41 | 42 | 43 | 44 | 45 | -------------------------------------------------------------------------------- /SQRLPlatformAwareInstaller/Views/UninstallView.xaml: -------------------------------------------------------------------------------- 1 | 9 | 10 | 11 | 12 | 13 | 14 | 16 | 17 | 18 | 19 | 22 | 23 | 24 | 25 | 44 | 45 | 46 | 47 | 48 | 52 | 53 | 54 |