private void SaveDates(DateTime[] dates)
			{
				try
				{
					if (!Directory.Exists(_path))
					{
						if (dates.IsEmpty())
							return;

						Directory.CreateDirectory(_path);
					}
					
					var stream = new MemoryStream();

					stream.WriteByte((byte)_dateVersion.Major);
					stream.WriteByte((byte)_dateVersion.Minor);
					stream.Write(dates.Length);

					foreach (var date in dates)
						stream.Write(date);

					lock (_cacheSync)
					{
						stream.Position = 0;
						stream.Save(GetDatesCachePath());
					}
				}
				catch (UnauthorizedAccessException)
				{
					// если папка с данными с правами только на чтение
				}
			}
Example #2
0
		private void Save()
		{
			try
			{
				lock (_timerSync)
				{
					if (!_needToSave)
						return;

					_needToSave = false;
				}

				CultureInfo.InvariantCulture.DoInCulture(() =>
				{
					var root = new SettingsStorage();

					root.SetValue("DriveCache", DriveCache.Instance.Save());
					root.SetValue("DatabaseConnectionCache", DatabaseConnectionCache.Instance.Save());

					var mainWindow = new SettingsStorage();

					mainWindow.SetValue("Width", MainWindow.Width);
					mainWindow.SetValue("Height", MainWindow.Height);
					mainWindow.SetValue("Location", MainWindow.GetLocation());
					mainWindow.SetValue("WindowState", MainWindow.WindowState);

					root.SetValue("mainWindow", mainWindow);

					var navBar = new SettingsStorage();

					navBar.SetValue("IsMinimized", MainWindow.NavigationBar.IsMinimized);
					navBar.SetValue("Width", MainWindow.NavigationBar.ContentWidth);
					navBar.SetValue("SelectedPane", MainWindow.NavigationBar.SelectedIndex);
					navBar.SetValue("SelectedSource", MainWindow.CurrentSources.SelectedIndex);
					navBar.SetValue("SelectedConverter", MainWindow.CurrentConverters.SelectedIndex);

					root.SetValue("navBar", navBar);

					var panes = new List<SettingsStorage>();

					foreach (var paneWnd in MainWindow.DockSite.DocumentWindows.OfType<PaneWindow>())
					{
						var settings = paneWnd.Pane.SaveEntire(false);
						settings.SetValue("isActive", MainWindow.DockSite.ActiveWindow == paneWnd);
						panes.Add(settings);
					}

					root.SetValue("panes", panes);

					new XmlSerializer<SettingsStorage>().Serialize(root, _configFile);

					if (MainWindow.DockSite != null)
					{
						var stream = new MemoryStream();
						LayoutSerializer.SaveToStream(stream, MainWindow.DockSite);
						stream.Position = 0;
						stream.Save(_layoutFile);
					}
				});
			}
			catch (Exception ex)
			{
				this.AddErrorLog(ex);
			}
		}
			private void SaveDates(DateTime[] dates)
			{
				try
				{
					if (!Directory.Exists(_path))
					{
						if (dates.IsEmpty())
							return;

						Directory.CreateDirectory(_path);
					}

					var stream = new MemoryStream();

					//stream.WriteByte((byte)_dateVersion.Major);
					//stream.WriteByte((byte)_dateVersion.Minor);
					//stream.Write(dates.Length);

					CultureInfo.InvariantCulture.DoInCulture(() =>
					{
						var writer = new StreamWriter(stream) { AutoFlush = true };

						foreach (var date in dates)
						{
							writer.WriteLine(date.ToString(_dateFormat));
							//stream.Write(date);
						}
					});
					
					lock (_cacheSync)
					{
						stream.Position = 0;
						stream.Save(_datesPath);
					}
				}
				catch (UnauthorizedAccessException)
				{
					// если папка с данными с правами только на чтение
				}
			}