private void InitializePropertyValues() { WatchedFoldersEnabled = false; WatchedFolders = new string[0]; DragAndDropFiles = new string[0]; RecentFiles = new ActiveFile[0]; SelectedRecentFiles = new string[0]; SelectedWatchedFolders = new string[0]; DecryptedFiles = new ActiveFile[0]; DebugMode = _userSettings.DebugMode; FolderOperationMode = _userSettings.FolderOperationMode; DownloadVersion = DownloadVersion.Empty; VersionUpdateStatus = DownloadVersion.CalculateStatus(New <IVersion>().Current, New <INow>().Utc, _userSettings.LastUpdateCheckUtc); License = New <LicensePolicy>().Capabilities; EncryptionUpgradeMode = _userSettings.EncryptionUpgradeMode; AddWatchedFolders = new AsyncDelegateAction <IEnumerable <string> >((folders) => AddWatchedFoldersActionAsync(folders), (folders) => Task.FromResult(LoggedOn)); RemoveRecentFiles = new AsyncDelegateAction <IEnumerable <string> >((files) => RemoveRecentFilesAction(files)); EncryptPendingFiles = new AsyncDelegateAction <object>((parameter) => EncryptPendingFilesAction()); ClearPassphraseMemory = new AsyncDelegateAction <object>((parameter) => ClearPassphraseMemoryAction()); DecryptWatchedFolders = new AsyncDelegateAction <IEnumerable <string> >((folders) => DecryptWatchedFoldersAction(folders), (folders) => Task.FromResult(LoggedOn)); OpenSelectedFolder = new DelegateAction <string>((folder) => OpenSelectedFolderAction(folder)); AxCryptUpdateCheck = new AsyncDelegateAction <DateTime>((utc) => AxCryptUpdateCheckAction(utc)); LicenseUpdate = new DelegateAction <object>((o) => License = New <LicensePolicy>().Capabilities); RemoveWatchedFolders = new AsyncDelegateAction <IEnumerable <string> >((folders) => RemoveWatchedFoldersAction(folders), (folders) => Task.FromResult(LoggedOn)); WarnIfAnyDecryptedFiles = new AsyncDelegateAction <object>((o) => WarnIfAnyDecryptedFilesActionAsync()); DecryptFileEnabled = true; OpenEncryptedEnabled = true; RandomRenameEnabled = true; }
public async Task UpdateCheckPopups(bool alwaysDisplay, DownloadVersion downloadVersion) { if (await CriticalUpdateWarningPopupAsync(downloadVersion)) { return; } if (await NewVersionAvailablePopupAsync(alwaysDisplay, downloadVersion)) { return; } await NoUpdateAvailablePopupAsync(alwaysDisplay, downloadVersion); }
private async Task <bool> CriticalUpdateWarningPopupAsync(DownloadVersion downloadVersion) { string msg = GetCriticalUpdateWarning(downloadVersion.Level); if (msg.Length == 0) { return(false); } await New <IPopup>().ShowAsync(PopupButtons.Ok, Texts.WarningTitle, msg); New <IBrowser>().OpenUri(new Uri(Resolve.UserSettings.UpdateUrl.ToString())); return(true); }
private async Task <bool> NoUpdateAvailablePopupAsync(bool alwaysDisplay, DownloadVersion downloadVersion) { if (!alwaysDisplay) { return(false); } if (New <IVersion>().Current.ToString() != downloadVersion.Version.ToString()) { return(false); } await New <IPopup>().ShowAsync(PopupButtons.Ok, Texts.InformationTitle, Texts.LatestVersionAlreadyPresentText); return(false); }
/// <summary> /// Perform a background version check. The VersionUpdate event is guaranteed to be /// raised, regardless of response and result. If a check is already in progress, the /// later call is ignored and only one check is performed. /// </summary> public virtual async Task CheckInBackgroundAsync(DateTime lastCheckTimeUtc, string newestKnownVersion, Uri updateWebpageUrl, string cultureName) { if (newestKnownVersion == null) { throw new ArgumentNullException(nameof(newestKnownVersion)); } if (updateWebpageUrl == null) { throw new ArgumentNullException(nameof(updateWebpageUrl)); } if (cultureName == null) { throw new ArgumentNullException(nameof(cultureName)); } Version newestKnownVersionValue = ParseVersion(newestKnownVersion); if (lastCheckTimeUtc.AddDays(1) >= New <INow>().Utc) { if (Resolve.Log.IsInfoEnabled) { Resolve.Log.LogInfo("Attempt to check for new version was ignored because it is too soon. Returning version {0}.".InvariantFormat(newestKnownVersionValue)); } OnVersionUpdate(new VersionEventArgs(new DownloadVersion(updateWebpageUrl, newestKnownVersionValue), lastCheckTimeUtc)); return; } if (_inProgress) { return; } _inProgress = true; try { DownloadVersion newVersion = await CheckWebForNewVersionAsync(updateWebpageUrl, cultureName).Free(); if (newVersion.Url != null) { OnVersionUpdate(new VersionEventArgs(newVersion, lastCheckTimeUtc)); } } finally { _inProgress = false; } }
private async Task <bool> NewVersionAvailablePopupAsync(bool alwaysDisplay, DownloadVersion downloadVersion) { Version version = downloadVersion.Version; if (New <IVersion>().Current >= version) { return(false); } if (!alwaysDisplay && New <UserSettings>().MostRecentVersionInformed == version.ToString()) { return(false); } New <UserSettings>().MostRecentVersionInformed = version.ToString(); PopupButtons result = await New <IPopup>().ShowAsync(PopupButtons.OkCancel, Texts.InformationTitle, Texts.NewVersionIsAvailableText.InvariantFormat(version)); if (result == PopupButtons.Ok) { New <IBrowser>().OpenUri(Resolve.UserSettings.UpdateUrl); } return(true); }
public VersionEventArgs(DownloadVersion downloadVersion, DateTime lastUpdateCheck) { DownloadVersion = downloadVersion; LastUpdateCheck = lastUpdateCheck; }