Ejemplo n.º 1
0
        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;
        }
Ejemplo n.º 2
0
 public async Task UpdateCheckPopups(bool alwaysDisplay, DownloadVersion downloadVersion)
 {
     if (await CriticalUpdateWarningPopupAsync(downloadVersion))
     {
         return;
     }
     if (await NewVersionAvailablePopupAsync(alwaysDisplay, downloadVersion))
     {
         return;
     }
     await NoUpdateAvailablePopupAsync(alwaysDisplay, downloadVersion);
 }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        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;
            }
        }
Ejemplo n.º 6
0
        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);
        }
Ejemplo n.º 7
0
 public VersionEventArgs(DownloadVersion downloadVersion, DateTime lastUpdateCheck)
 {
     DownloadVersion = downloadVersion;
     LastUpdateCheck = lastUpdateCheck;
 }