Класс представляющий папку Избранного
Inheritance: IFavoritesEntry, IGetData
        public void Reload()
        {
            RootFolder = CreateFavoritesFolders(GetFavorites());

            OnReload();
            SetFavoriteLinksSetDirty();
        }
        public void Delete(FavoritesFolder folder)
        {
            var parentFolder = (FavoritesFolder)folder.Parent;

            var ids = new List <int>(GetSubFoldersIds(folder))
            {
                folder.Id
            };

            using (var db = _provider.CreateDBContext())
                using (var tx = db.BeginTransaction())
                {
                    var splits = ids.SplitForInClause(_provider);
                    foreach (var series in splits)
                    {
                        // ReSharper disable AccessToModifiedClosure
                        db.FavoriteItems(fi => series.Contains(fi.FolderID)).Delete();
                    }
                    // ReSharper restore AccessToModifiedClosure

                    foreach (var series in splits)
                    {
                        // ReSharper disable AccessToModifiedClosure
                        db.FavoriteFolders(ff => series.Contains(ff.ID)).Delete();
                    }
                    // ReSharper restore AccessToModifiedClosure

                    tx.Commit();
                }

            parentFolder.SubFolders.Remove(folder);
            SetFavoriteLinksSetDirty();
        }
        public void AddFolder(string name, string comment, FavoritesFolder parentFolder)
        {
            if (parentFolder.SubFolders.Any(f => f.Name == name))
            {
                return;
            }

            var newFolder =
                FavoritesFolder.CreateInstance(_provider, -1, name, comment, parentFolder);

            using (var db = _provider.CreateDBContext())
                using (var tx = db.BeginTransaction())
                {
                    db
                    .IntoFavoriteFolders()
                    .Value(_ => _.Name, name)
                    .Value(_ => _.ParentID, parentFolder.Id)
                    .Value(_ => _.Comment, comment)
                    .Insert();

                    newFolder.Id = db.FavoriteFolders().Max(ff => ff.ID);
                    tx.Commit();
                }
            parentFolder.SubFolders.Add(newFolder);
            SetFavoriteLinksSetDirty();
        }
Ejemplo n.º 4
0
		public void Reload()
		{
			RootFolder = CreateFavoritesFolders(GetFavorites());

			OnReload();
			SetFavoriteLinksSetDirty();
		}
        public bool Move(
            FavoritesLink msg,
            FavoritesFolder newParent)
        {
            if (FindByMessageId(newParent.Links, msg.MessageId) != null)
            {
                return(false);
            }

            var oldParent = (FavoritesFolder)msg.Parent;

            // здесь, т.к. в Links.Add() Parent будет переустановлен

            newParent.Links.Add(msg);

            using (var db = _provider.CreateDBContext())
                db
                .FavoriteItems(fi => fi.ID == ((IFavoritesEntry)msg).Id)
                .Set(_ => _.FolderID, newParent.Id)
                .Update();
            oldParent.Links.Remove(msg);

            newParent.SortLinks(Config.Instance.FavoritesMessagesSortCriteria);

            return(true);
        }
Ejemplo n.º 6
0
        private void RestoreFavorites(FavoritesFolder favoritesFolder,
                                      IEnumerable <Folder> folders, IEnumerable <Link> links)
        {
            foreach (var link in links)
            {
                if (link.MessageId != 0)
                {
                    _favManager.AddMessageLink(
                        link.MessageId, link.Comment, favoritesFolder);
                }
                else
                {
                    _favManager.AddUrlLink(
                        link.Url, link.Comment, favoritesFolder);
                }
            }

            foreach (var folder in folders)
            {
                _favManager.AddFolder(folder.Name, folder.Comment, favoritesFolder);

                var parentFolder =
// ReSharper disable AccessToModifiedClosure
                    favoritesFolder.SubFolders.FirstOrDefault(f => f.Name == folder.Name);
// ReSharper restore AccessToModifiedClosure

                if (parentFolder != null)
                {
                    RestoreFavorites(parentFolder, folder.Folders, folder.Links);
                }
            }
        }
        public void AddUrlLink(string url, string comment, FavoritesFolder folder)
        {
            var link =
                FavoritesLink.CreateInstance(_provider, -1, url, comment, folder);

            folder.Links.Add(link);
            InsertFavoritesLink(link);
            SetFavoriteLinksSetDirty();
        }
 public void Update(FavoritesFolder folder)
 {
     using (var db = _provider.CreateDBContext())
         db
         .FavoriteFolders(ff => ff.ID == folder.Id)
         .Set(_ => _.Name, folder.Name)
         .Set(_ => _.ParentID, folder.Parent.Id)
         .Set(_ => _.Comment, folder.Comment)
         .Update();
 }
        private Dictionary <int, FavoritesFolder> GetFavorites()
        {
            using (var db = _provider.CreateDBContext())
            {
                var folders =
                    db
                    .FavoriteFolders()
                    .Select(
                        ff =>
                        new FavoritesFolder(_provider)
                {
                    Id       = ff.ID,
                    Name     = ff.Name,
                    ParentId = ff.ParentID,
                    Comment  = ff.Comment
                })
                    .ToDictionary(ff => ff.Id);

                var links =
                    db
                    .FavoriteItems()
                    .Select(
                        i =>
                        new FavoritesLink(_provider)
                {
                    Id        = i.ID,
                    FolderId  = i.FolderID,
                    Comment   = i.Comment,
                    Url       = i.Url,
                    MessageId = i.MessageID,
                })
                    .ToList();

                var rootFolder =
                    FavoritesFolder.CreateInstance(
                        _provider,
                        0,
                        string.Empty,
                        string.Empty,
                        null);

                folders.Add(0, rootFolder);

                foreach (var link in links)
                {
                    var folder = folders[link.FolderId];

                    folder.Links.Add(link);
                    link.Parent = folder;
                }

                return(folders);
            }
        }
        public bool Move(FavoritesFolder folder, FavoritesFolder newParent)
        {
            var parentFolder = (FavoritesFolder)folder.Parent;

            parentFolder.SubFolders.Remove(folder);
            newParent.SubFolders.Add(folder);
            folder.Update();

            newParent.SortFolders(Config.Instance.FavoritesFoldersSortDirection);

            return(true);
        }
Ejemplo n.º 11
0
		public static FavoritesLink CreateInstance(
			IServiceProvider provider,
			int id,
			string url,
			string comment,
			FavoritesFolder parent)
		{
			var link = CreateInstance(provider);
			link.Id = id;
			link.Url = url;
			link.Comment = comment;
			link.Parent = parent;
			return link;
		}
Ejemplo n.º 12
0
		public static FavoritesLink CreateInstance(
			IServiceProvider provider,
			int id,
			int messageID,
			string comment,
			FavoritesFolder parent)
		{
			var link = CreateInstance(provider);
			link.Id = id;
			link.MessageId = messageID;
			link.Comment = comment;
			link.Parent = parent;
			return link;
		}
Ejemplo n.º 13
0
        public static FavoritesLink CreateInstance(
            IServiceProvider provider,
            int id,
            string url,
            string comment,
            FavoritesFolder parent)
        {
            var link = CreateInstance(provider);

            link.Id      = id;
            link.Url     = url;
            link.Comment = comment;
            link.Parent  = parent;
            return(link);
        }
        public bool AddMessageLink(int messageId, string comment, FavoritesFolder folder)
        {
            if (FindByMessageId(folder.Links, messageId) != null)
            {
                return(false);
            }

            var link =
                FavoritesLink.CreateInstance(_provider, -1, messageId, comment, folder);

            folder.Links.Add(link);
            InsertFavoritesLink(link);
            SetFavoriteLinksSetDirty();
            return(true);
        }
        private static IEnumerable <int> GetSubFoldersIds(FavoritesFolder folder)
        {
            if (folder == null)
            {
                throw new ArgumentNullException("folder");
            }

            foreach (var subFolder in folder.SubFolders)
            {
                yield return(subFolder.Id);

                foreach (var fid in GetSubFoldersIds(subFolder))
                {
                    yield return(fid);
                }
            }
        }
Ejemplo n.º 16
0
        private static Folder GetFavorites(FavoritesFolder favoritesFolder)
        {
            var folder = new Folder(
                favoritesFolder.Name, favoritesFolder.Comment);

            foreach (var subFolder in favoritesFolder.SubFolders)
            {
                folder.Folders.Add(GetFavorites(subFolder));
            }

            foreach (var link in favoritesFolder.Links)
            {
                folder.Links.Add(
                    new Link(link.MessageId, link.Link, link.Comment));
            }

            return(folder);
        }
Ejemplo n.º 17
0
        public static FavoritesFolder CreateInstance(
            IServiceProvider provider,
            int id,
            string name,
            string comment,
            FavoritesFolder parent)
        {
            var folder =
                new FavoritesFolder(provider)
            {
                Id      = id,
                Name    = name,
                Comment = comment,
                Parent  = parent
            };

            return(folder);
        }
Ejemplo n.º 18
0
        private static IEnumerable <FavoritesLink> GetFavoritesLinks(FavoritesFolder folder)
        {
            if (folder == null)
            {
                throw new ArgumentNullException("folder");
            }

            foreach (var link in folder.Links)
            {
                yield return(link);
            }
            foreach (var subFolder in folder.SubFolders)
            {
                foreach (var link in GetFavoritesLinks(subFolder))
                {
                    yield return(link);
                }
            }
        }
Ejemplo n.º 19
0
        public FavoritesSelectFolderForm(
            IServiceProvider provider,
            FavoritesFolder folders, bool newItem)
        {
            _favManager = provider.GetRequiredService<IFavoritesManager>();
            InitializeComponent();

            if (!newItem)
            {
                _comment.Visible = false;
                _commentLabel.Visible = false;
            }

            _folderView.SmallImageList = FavoritesDummyForm.Instance.TreeImages;

            if (folders.ShowLinks)
                folders.ShowLinks = false;
            _folderView.Nodes = folders;
        }
Ejemplo n.º 20
0
        public FavoritesSelectFolderForm(
            IServiceProvider provider,
            FavoritesFolder folders, bool newItem)
        {
            _favManager = provider.GetRequiredService <IFavoritesManager>();
            InitializeComponent();

            if (!newItem)
            {
                _comment.Visible      = false;
                _commentLabel.Visible = false;
            }

            _folderView.SmallImageList = FavoritesDummyForm.Instance.TreeImages;

            if (folders.ShowLinks)
            {
                folders.ShowLinks = false;
            }
            _folderView.Nodes = folders;
        }
Ejemplo n.º 21
0
        public void AddFolder(string name, string comment, FavoritesFolder parentFolder)
        {
            if (parentFolder.SubFolders.Any(f => f.Name == name))
                return;

            var newFolder =
                FavoritesFolder.CreateInstance(_provider, -1, name, comment, parentFolder);

            using (var db = _provider.CreateDBContext())
            using (var tx = db.BeginTransaction())
            {
                db
                    .IntoFavoriteFolders()
                        .Value(_ => _.Name,     name)
                        .Value(_ => _.ParentID, parentFolder.Id)
                        .Value(_ => _.Comment,  comment)
                    .Insert();

                newFolder.Id = db.FavoriteFolders().Max(ff => ff.ID);
                tx.Commit();
            }
            parentFolder.SubFolders.Add(newFolder);
            SetFavoriteLinksSetDirty();
        }
Ejemplo n.º 22
0
		private static IEnumerable<FavoritesLink> GetFavoritesLinks(FavoritesFolder folder)
		{
			if (folder == null)
				throw new ArgumentNullException(nameof(folder));

			foreach (var link in folder.Links)
				yield return link;
			foreach (var subFolder in folder.SubFolders)
				foreach (var link in GetFavoritesLinks(subFolder))
					yield return link;
		}
Ejemplo n.º 23
0
        private static Folder GetFavorites(FavoritesFolder favoritesFolder)
        {
            var folder = new Folder(
                favoritesFolder.Name, favoritesFolder.Comment);

            foreach (var subFolder in favoritesFolder.SubFolders)
                folder.Folders.Add(GetFavorites(subFolder));

            foreach (var link in favoritesFolder.Links)
                folder.Links.Add(
                    new Link(link.MessageId, link.Link, link.Comment));

            return folder;
        }
Ejemplo n.º 24
0
		public void Delete(FavoritesFolder folder)
		{
			var parentFolder = (FavoritesFolder)folder.Parent;

			var ids = new List<int>(GetSubFoldersIds(folder)) {folder.Id};

			using (var db = _provider.CreateDBContext())
			using (var tx = db.BeginTransaction())
			{
				var splits = ids.SplitForInClause(_provider);
				foreach (var series in splits)
					// ReSharper disable AccessToModifiedClosure
					db.FavoriteItems(fi => series.Contains(fi.FolderID)).Delete();
				// ReSharper restore AccessToModifiedClosure

				foreach (var series in splits)
					// ReSharper disable AccessToModifiedClosure
					db.FavoriteFolders(ff => series.Contains(ff.ID)).Delete();
				// ReSharper restore AccessToModifiedClosure

				tx.Commit();
			}

			parentFolder.SubFolders.Remove(folder);
			SetFavoriteLinksSetDirty();
		}
Ejemplo n.º 25
0
		public void Update(FavoritesFolder folder)
		{
			using (var db = _provider.CreateDBContext())
				db
					.FavoriteFolders(ff => ff.ID == folder.Id)
						.Set(_ => _.Name, folder.Name)
						.Set(_ => _.ParentID, folder.Parent.Id)
						.Set(_ => _.Comment, folder.Comment)
					.Update();
		}
Ejemplo n.º 26
0
		public void AddUrlLink(string url, string comment, FavoritesFolder folder)
		{
			var link =
				FavoritesLink.CreateInstance(_provider, -1, url, comment, folder);

			folder.Links.Add(link);
			InsertFavoritesLink(link);
			SetFavoriteLinksSetDirty();
		}
Ejemplo n.º 27
0
        private static IEnumerable<int> GetFavoriteLinks(FavoritesFolder folder)
        {
            if (folder == null)
                throw new ArgumentNullException("folder");

            foreach (var link in folder.Links)
                yield return link.MessageId;

            foreach (var subFolder in folder.SubFolders)
                foreach (var mid in GetFavoriteLinks(subFolder))
                    yield return mid;
        }
Ejemplo n.º 28
0
		public static FavoritesFolder CreateInstance(
			IServiceProvider provider,
			int id,
			string name,
			string comment,
			FavoritesFolder parent)
		{
			var folder =
				new FavoritesFolder(provider)
					{
						Id = id,
						Name = name,
						Comment = comment,
						Parent = parent
					};

			return folder;
		}
Ejemplo n.º 29
0
		private static IEnumerable<int> GetSubFoldersIds(FavoritesFolder folder)
		{
			if (folder == null)
				throw new ArgumentNullException(nameof(folder));

			foreach (var subFolder in folder.SubFolders)
			{
				yield return subFolder.Id;
				foreach (var fid in GetSubFoldersIds(subFolder))
					yield return fid;
			}
		}
Ejemplo n.º 30
0
        private void RestoreFavorites(FavoritesFolder favoritesFolder,
            IEnumerable<Folder> folders, IEnumerable<Link> links)
        {
            foreach (var link in links)
                if (link.MessageId != 0)
                    _favManager.AddMessageLink(
                        link.MessageId, link.Comment, favoritesFolder);
                else
                    _favManager.AddUrlLink(
                        link.Url, link.Comment, favoritesFolder);

            foreach (var folder in folders)
            {
                _favManager.AddFolder(folder.Name, folder.Comment, favoritesFolder);

                var parentFolder =
            // ReSharper disable AccessToModifiedClosure
                    favoritesFolder.SubFolders.FirstOrDefault(f => f.Name == folder.Name);
            // ReSharper restore AccessToModifiedClosure

                if (parentFolder != null)
                    RestoreFavorites(parentFolder, folder.Folders, folder.Links);
            }
        }
Ejemplo n.º 31
0
		public bool Move(
			FavoritesLink msg,
			FavoritesFolder newParent)
		{
			if (FindByMessageId(newParent.Links, msg.MessageId) != null)
				return false;

			var oldParent = (FavoritesFolder)msg.Parent;
			// здесь, т.к. в Links.Add() Parent будет переустановлен

			newParent.Links.Add(msg);

			using (var db = _provider.CreateDBContext())
				db
					.FavoriteItems(fi => fi.ID == ((IFavoritesEntry)msg).Id)
						.Set(_ => _.FolderID, newParent.Id)
					.Update();
			oldParent.Links.Remove(msg);

			newParent.SortLinks(Config.Instance.FavoritesMessagesSortCriteria);

			return true;
		}
Ejemplo n.º 32
0
		public bool AddMessageLink(int messageId, string comment, FavoritesFolder folder)
		{
			if (FindByMessageId(folder.Links, messageId) != null)
				return false;

			var link =
				FavoritesLink.CreateInstance(_provider, -1, messageId, comment, folder);

			folder.Links.Add(link);
			InsertFavoritesLink(link);
			SetFavoriteLinksSetDirty();
			return true;
		}
Ejemplo n.º 33
0
		public bool Move(FavoritesFolder folder, FavoritesFolder newParent)
		{
			var parentFolder = (FavoritesFolder)folder.Parent;
			parentFolder.SubFolders.Remove(folder);
			newParent.SubFolders.Add(folder);
			folder.Update();

			newParent.SortFolders(Config.Instance.FavoritesFoldersSortDirection);

			return true;
		}