Пример #1
0
        void RemoveCore(Bookmark[] bookmarks)
        {
            uiDispatcher.VerifyAccess();
            var removed = new List <Bookmark>(bookmarks.Length);

            lock (lockObj) {
                foreach (var bm in bookmarks)
                {
                    var bmImpl = bm as BookmarkImpl;
                    Debug.Assert(!(bmImpl is null));
                    if (bmImpl is null)
                    {
                        continue;
                    }
                    if (!this.bookmarks.Contains(bmImpl))
                    {
                        continue;
                    }
                    removed.Add(bmImpl);
                    this.bookmarks.Remove(bmImpl);
                    bool b = locationToBookmark.Remove(bmImpl.Location);
                    Debug.Assert(b);
                }
            }
            if (removed.Count > 0)
            {
                BookmarksChanged?.Invoke(this, new CollectionChangedEventArgs <Bookmark>(removed, added: false));
                foreach (var bm in removed)
                {
                    bm.Close();
                }
            }
        }
Пример #2
0
        /// <summary>
        /// Saves settings
        /// </summary>
        public void SaveSettings()
        {
            var jArray = JArray.FromObject(Bookmarks.Select(f => f.Serialize()).ToArray());

            Properties.Settings.Default.Bookmarks = JsonConvert.SerializeObject(jArray);
            Properties.Settings.Default.Save();

            BookmarksChanged?.Invoke(null, EventArgs.Empty);
        }
Пример #3
0
 void ClearCore()
 {
     uiDispatcher.VerifyAccess();
     Bookmark[] removed;
     lock (lockObj) {
         removed = bookmarks.ToArray();
         bookmarks.Clear();
         locationToBookmark.Clear();
     }
     if (removed.Length > 0)
     {
         BookmarksChanged?.Invoke(this, new CollectionChangedEventArgs <Bookmark>(removed, added: false));
         foreach (var bm in removed)
         {
             bm.Close();
         }
     }
 }
Пример #4
0
        void AddCore(List <BookmarkImpl> bookmarks, List <BMObject>?objsToClose)
        {
            uiDispatcher.VerifyAccess();
            var added = new List <Bookmark>(bookmarks.Count);

            lock (lockObj) {
                foreach (var bm in bookmarks)
                {
                    Debug.Assert(!this.bookmarks.Contains(bm));
                    if (this.bookmarks.Contains(bm))
                    {
                        continue;
                    }
                    if (locationToBookmark.ContainsKey(bm.Location))
                    {
                        if (objsToClose is null)
                        {
                            objsToClose = new List <BMObject>();
                        }
                        objsToClose.Add(bm);
                    }
                    else
                    {
                        added.Add(bm);
                        this.bookmarks.Add(bm);
                        locationToBookmark.Add(bm.Location, bm);
                    }
                }
            }
            if (!(objsToClose is null))
            {
                foreach (var obj in objsToClose)
                {
                    obj.Close();
                }
            }
            if (added.Count > 0)
            {
                BookmarksChanged?.Invoke(this, new CollectionChangedEventArgs <Bookmark>(added, added: true));
            }
        }