private void RunOneDriveProviderLinkWizard() { OneDriveCartridgeProvider provider = GetOneDriveProvider(); // Coerce value. if (provider.CartridgeCount == 0 || System.Windows.MessageBox.Show("Cartridges and savegames from a previous OneDrive link are still stored locally. They may be deleted, depending on the OneDrive account you are about to link to.", "Overwriting Link", MessageBoxButton.OKCancel) == System.Windows.MessageBoxResult.OK) { // Progress bar. _progress[ProgressSourceOneDriveLink] = true; // Starts the link. provider.BeginLink(); } else { // Restores the previous state. IsOneDriveProviderEnabled = _appSettings.ProviderLinkedHint; } }
private void OnIsOneDriveProviderEnabledChanged(bool newValue) { if (!_isReady) { return; } OneDriveCartridgeProvider provider = GetOneDriveProvider(); if (!newValue && _appSettings.ProviderLinkedHint) { // Coerce value. if (System.Windows.MessageBox.Show("Geowigo will forget the link to your OneDrive account. Cartridges and savegames will be kept and playable until you link to OneDrive again.", "Unlink OneDrive", MessageBoxButton.OKCancel) == System.Windows.MessageBoxResult.OK) { // Unlink. try { provider.Unlink(); _appSettings.ProviderLinkedHint = false; } catch (Exception e) { DebugUtils.DumpException(e, "OneDrive unlink", true); System.Windows.MessageBox.Show("An error occurred while trying to unlink your OneDrive account. Make sure the device can reach the internet.", "Error", MessageBoxButton.OK); _appSettings.ProviderLinkedHint = true; } } else { // Restores the previous state. IsOneDriveProviderEnabled = _appSettings.ProviderLinkedHint; } } else if (newValue && !_appSettings.ProviderLinkedHint) { // Starts linking. RunOneDriveProviderLinkWizard(); } RefreshOneDrive(); }
private void RefreshOneDrive() { // Refresh provider info. OneDriveCartridgeProvider provider = GetOneDriveProvider(); if (provider == null) { // We're sure the provider is not linked. _appSettings.ProviderLinkedHint = false; IsOneDriveProviderEnabled = false; } else if (provider.IsLinked) { // We know the provider is linked, keep this memory. _appSettings.ProviderLinkedHint = true; IsOneDriveProviderEnabled = true; } else { // We're not sure if the provider is unlinked, or if the internet is just off. // Use previously stored data to figure it out. IsOneDriveProviderEnabled = _appSettings.ProviderLinkedHint; } // Refresh simple status. string simpleStatus = null; if (provider != null && (provider.IsLinked || provider.CartridgeCount > 0)) { simpleStatus = ""; if (provider.IsLinked && !String.IsNullOrEmpty(provider.OwnerName)) { simpleStatus += provider.OwnerName + ", "; } simpleStatus += String.Format("{0} cartridges", provider.CartridgeCount); } OneDriveProviderSimpleStatus = simpleStatus; // Refresh advanced status. string advancedStatus = null; if (provider != null) { if (provider.IsLinked || provider.IsSyncing) { // Provider is linked: sync status. if (provider.IsSyncing) { advancedStatus = "Syncing..."; } else { advancedStatus = "Synchronized. "; advancedStatus += "Downloads from OneDrive folder /Geowigo. "; if (_appSettings.CanProviderUpload) { advancedStatus += "Uploads to OneDrive folder /Geowigo/Uploads. "; } else { advancedStatus += "Upload disabled. "; } } } else if (provider.CartridgeCount > 0) { // Provider not linked but local content exists. if (_appSettings.ProviderLinkedHint) { advancedStatus = "Cartridges and savegames will not be synchronized with the cloud until the device can reach the Internet."; } else { advancedStatus = "Cartridges and savegames are not synchronized with the cloud unless you link your OneDrive account."; } } } OneDriveProviderAdvancedStatus = advancedStatus; }