public static void ExportCloudData(this ServiceConnector.Models.Rest.Wallbin.Settings.AutoWidget target,
			 AutoWidget source)
		{
			target.Extension = source.Extension;
			target.Inverted = source.Inverted;
			target.OriginalImage = source.Widget;
			target.DisplayedImage = source.DisplayedImage;
		}
		public static void ImportCloudData(this Library.LibrarySettings target,
			ServiceConnector.Models.Rest.Wallbin.Settings.LibrarySettings source)
		{
			target.ApplyAppearanceForAllWindows = source.ApplyAppearanceForAllWindows.HasValue && source.ApplyAppearanceForAllWindows.Value;
			target.ApplyBannerForAllWindows = source.ApplyBannerForAllWindows.HasValue && source.ApplyBannerForAllWindows.Value;
			target.ApplyWidgetForAllWindows = source.ApplyWidgetForAllWindows.HasValue && source.ApplyWidgetForAllWindows.Value;

			target.AutoWidgets.Clear();
			foreach (var sourceAutoWidget in source.AutoWidgets)
			{
				var targetAutoWidget = new AutoWidget();
				targetAutoWidget.ImportCloudData(sourceAutoWidget);
				target.AutoWidgets.Add(targetAutoWidget);
			}
		}
		private void buttonEditNewExtension_ButtonClick(object sender, ButtonPressedEventArgs e)
		{
			var newExtension = buttonEditNewExtension.EditValue as String;
			if (String.IsNullOrEmpty(newExtension))
			{
				MainController.Instance.PopupMessages.ShowWarning("Extension not set");
				return;
			}
			newExtension = newExtension.Trim().ToLower();
			if (Library.Settings.AutoWidgets.Any(widget => widget.Extension.Equals(newExtension)))
			{
				MainController.Instance.PopupMessages.ShowWarning("Auto Widter is existed for this extension already");
				return;
			}
			var autoWidget = new AutoWidget();
			autoWidget.Extension = newExtension;
			Library.Settings.AutoWidgets.Add(autoWidget);
			buttonEditNewExtension.EditValue = null;
			LoadData();
		}
		public static void ImportLegacyData(this Library target, string libraryPath)
		{
			if (!File.Exists(Path.Combine(libraryPath, Constants.LegacyStorageFileName))) return;

			var legacyLibrary = new Legacy.Entities.Library(target.Name, new DirectoryInfo(libraryPath), false, 0);
			target.ExtId = legacyLibrary.Identifier;
			target.SyncDate = legacyLibrary.SyncDate;

			target.Settings.ApplyAppearanceForAllWindows = legacyLibrary.ApplyAppearanceForAllWindows;
			target.Settings.ApplyBannerForAllWindows = legacyLibrary.ApplyBannerForAllWindows;
			target.Settings.ApplyWidgetForAllWindows = legacyLibrary.ApplyWidgetForAllWindows;

			target.SyncSettings.CloseAfterSync = legacyLibrary.CloseAfterSync;
			target.SyncSettings.MinimizeOnSync = legacyLibrary.MinimizeOnSync;
			target.SyncSettings.ShowProgress = legacyLibrary.ShowProgressDuringSync;

			target.InactiveLinksSettings.Enable = legacyLibrary.EnableInactiveLinks;
			target.InactiveLinksSettings.ShowBoldWarning = legacyLibrary.InactiveLinksBoldWarning;
			target.InactiveLinksSettings.ShowMessageAtStartup = legacyLibrary.InactiveLinksMessageAtStartup;
			target.InactiveLinksSettings.ReplaceInactiveLinksWithLineBreak = legacyLibrary.ReplaceInactiveLinksWithLineBreak;
			target.InactiveLinksSettings.SendEmail = legacyLibrary.SendEmail;
			target.InactiveLinksSettings.EmailList.AddRange(legacyLibrary.EmailList);

			target.ProgramData.Enable = legacyLibrary.EnableProgramManagerSync;
			target.ProgramData.Path = legacyLibrary.ProgramManagerLocation;

			target.Calendar.Enabled = legacyLibrary.OvernightsCalendar.Enabled;
			target.Calendar.Path = legacyLibrary.OvernightsCalendar.RootFolder?.FullName;
			target.Calendar.CalendarBackColor = legacyLibrary.OvernightsCalendar.CalendarBackColor;
			target.Calendar.CalendarBorderColor = legacyLibrary.OvernightsCalendar.CalendarBorderColor;
			target.Calendar.CalendarHeaderBackColor = legacyLibrary.OvernightsCalendar.CalendarHeaderBackColor;
			target.Calendar.CalendarHeaderForeColor = legacyLibrary.OvernightsCalendar.CalendarHeaderForeColor;
			target.Calendar.DeadLinksForeColor = legacyLibrary.OvernightsCalendar.DeadLinksForeColor;
			target.Calendar.MonthBodyBackColor = legacyLibrary.OvernightsCalendar.MonthBodyBackColor;
			target.Calendar.MonthBodyForeColor = legacyLibrary.OvernightsCalendar.MonthBodyForeColor;
			target.Calendar.MonthHeaderBackColor = legacyLibrary.OvernightsCalendar.MonthHeaderBackColor;
			target.Calendar.MonthHeaderForeColor = legacyLibrary.OvernightsCalendar.MonthHeaderForeColor;
			target.Calendar.SweepBackColor = legacyLibrary.OvernightsCalendar.SweepBackColor;
			target.Calendar.SweepForeColor = legacyLibrary.OvernightsCalendar.SweepForeColor;

			foreach (var previewContainer in legacyLibrary.PreviewContainers)
			{
				var targetPreviewContainer = BasePreviewContainer.Create(Path.Combine(target.Path, previewContainer.OriginalPath), target);
				if (targetPreviewContainer == null) continue;
				targetPreviewContainer.ExtId = Guid.Parse(previewContainer.Identifier);
				targetPreviewContainer.Library = target;
				target.PreviewContainers.AddItem(targetPreviewContainer);
			}

			foreach (var legacyPage in legacyLibrary.Pages)
			{
				var targetPage = WallbinEntity.CreateEntity<LibraryPage>();
				targetPage.Library = target;
				targetPage.ImportLegacyData(legacyPage);
				target.Pages.Add(targetPage);
			}

			foreach (var autoWidget in legacyLibrary.AutoWidgets)
			{
				var targetAutoWidget = new AutoWidget();
				targetAutoWidget.ImportLegacyData(autoWidget);
				target.Settings.AutoWidgets.Add(targetAutoWidget);
			}
		}