Ejemplo n.º 1
0
        public static IResourceList ExcludeUnloadedPluginResources(IResourceList resList)
        {
            ArrayList     unloadedResourceTypes = null;
            IResourceList excludedTypes         = null;

            foreach (IResourceType rt in Core.ResourceStore.ResourceTypes)
            {
                if (!rt.OwnerPluginLoaded)
                {
                    if (unloadedResourceTypes == null)
                    {
                        unloadedResourceTypes = new ArrayList();
                    }
                    unloadedResourceTypes.Add(rt.Name);
                }
            }
            if (unloadedResourceTypes != null)
            {
                string[] resTypes = (string[])unloadedResourceTypes.ToArray(typeof(string));
                excludedTypes = Core.ResourceStore.GetAllResourcesLive(resTypes);
            }

            foreach (IPropType pt in Core.ResourceStore.PropTypes)
            {
                if (pt.HasFlag(PropTypeFlags.SourceLink) && !pt.OwnerPluginLoaded)
                {
                    excludedTypes = Core.ResourceStore.FindResourcesWithProp(null, pt.Id).Union(excludedTypes);
                }
            }
            if (excludedTypes != null)
            {
                return(resList.Minus(excludedTypes));
            }
            return(resList);
        }
Ejemplo n.º 2
0
        public IResourceList Filter(string resType)
        {
            IResourceList result = Core.ResourceStore.FindResourcesWithProp(SelectionType.LiveSnapshot, null, "Category");

            result = result.Minus(Core.ResourceStore.GetAllResources("Category"));
            return(result);
        }
Ejemplo n.º 3
0
        public IResourceList GetChildResources(IResource parent)
        {
            IResourceList result = null;

            if (parent == _treeRoot)
            {
                return(_workspaceContentsList);
            }
            WorkspaceResourceType wrType = Core.WorkspaceManager.GetWorkspaceResourceType(parent.Type);

            if (wrType == WorkspaceResourceType.Container && parent.HasLink(_workspaceManager.Props.InWorkspace, _workspace))
            {
                // if it's a container that is not linked recursively - do not show children
                return(Core.ResourceStore.EmptyResourceList);
            }

            result = parent.GetLinksToLive(null, _dataProvider.ParentProperty);
            result = result.Minus(_workspace.GetLinksToLive(null, _workspaceManager.Props.ExcludeFromWorkspace));
            string sortProps = Core.ResourceTreeManager.GetResourceNodeSort(parent);

            if (sortProps != null)
            {
                result.Sort(sortProps);
            }
            return(result);
        }
Ejemplo n.º 4
0
        private static IResourceList ComputeList(IResource view)
        {
            IResourceList list = Core.FilterEngine.ExecView(view, null, SelectionType.Live);

            list = ResourceTypeHelper.ExcludeUnloadedPluginResources(list);
            list = list.Minus(Core.ResourceStore.FindResourcesWithProp(null, Core.Props.IsDeleted));
            list = list.Intersect(Core.ResourceStore.FindResourcesWithProp(null, Core.Props.IsUnread), true);
            return(list);
        }
Ejemplo n.º 5
0
        public bool DecorateNode(IResource res, RichText nodeText)
        {
            if (res.HasProp(Core.Props.ShowTotalCount))
            {
                IResource wsp = Core.WorkspaceManager.ActiveWorkspace;
                if (res.Type == FilterManagerProps.ViewResName)
                {
                    IResourceList total = Core.FilterEngine.ExecView(res);
                    if (!res.HasProp("ShowDeletedItems"))
                    {
                        total = total.Minus(_allDeleted);
                    }
                    total = total.Intersect(_allTyped);
                    if (wsp != null)
                    {
                        total = total.Intersect(wsp.GetLinksOfType(null, "WorkspaceVisible"), true);
                    }

                    if (total.Count != 0)
                    {
                        nodeText.Append(" ");
                        nodeText.Append("[" + total.Count + "]", _textStyle);
                    }
                    return(true);
                }
                else
                if (res.Type == "Category")
                {
                    bool          leafCategory = (res.GetLinksTo(null, Core.Props.Parent).Count == 0);
                    IResourceList inThis = Core.ResourceStore.EmptyResourceList, total;

                    if (leafCategory)
                    {
                        total = CollectResources(res, wsp);
                    }
                    else
                    {
                        CollectResources(res, wsp, out inThis, out total);
                    }

                    if (total.Count != 0)
                    {
                        nodeText.Append(" ");
                        if (leafCategory)
                        {
                            nodeText.Append("[" + total.Count + "]", _textStyle);
                        }
                        else
                        {
                            nodeText.Append("[" + inThis.Count + "|" + total.Count + "]", _textStyle);
                        }
                    }
                    return(true);
                }
            }
            return(false);
        }
Ejemplo n.º 6
0
        public static IResourceList GetVisibleResourceTypes()
        {
            IResourceList resTypes = Core.ResourceStore.GetAllResources("ResourceType");

            resTypes = resTypes.Minus(Core.ResourceStore.FindResources("ResourceType", "Internal", 1));

            resTypes.Sort(new SortSettings(ResourceProps.DisplayName, true));

            return(resTypes);
        }
Ejemplo n.º 7
0
        //---------------------------------------------------------------------
        //  1. Collect all ContactNames from Myself which are NOT linked to
        //     any email account.
        //  2. Iterate over all such cNames, if a cName with such name string
        //     was already met, relink all dependant links to correspondence
        //     to that first cName.
        //---------------------------------------------------------------------
        private void  MergeContactNamesWithoutAccount()
        {
            int           removedCount = 0;
            IContact      myself       = Core.ContactManager.MySelf;
            IResourceList linkedCNames = myself.Resource.GetLinksOfType(null, "BaseContact");
            IResourceList properCNames = Core.ResourceStore.FindResourcesWithProp("ContactName", Core.ContactManager.Props.LinkEmailAcct);

            linkedCNames = linkedCNames.Minus(properCNames);

            Hashtable cnames = new Hashtable();

            for (int i = 0; i < linkedCNames.Count; i++)
            {
                IResource cName = linkedCNames[i];
                Debug.Assert(cName.GetLinksOfType("EmailAccount", Core.ContactManager.Props.LinkEmailAcct).Count == 0);

                string name = cName.GetStringProp("Name");

                //  Empty names are removed unconditionally.
                if (name == null)
                {
                    linkedCNames[i].Delete();
                }
                else
                if (cnames.ContainsKey(name))
                {
                    IResource existingCName = (IResource)cnames[name];

                    IResourceList linkedMails = cName.GetLinksOfType(null, Core.ContactManager.Props.LinkNameTo);
                    foreach (IResource mail in linkedMails)
                    {
                        mail.AddLink(Core.ContactManager.Props.LinkNameTo, existingCName);
                    }

                    linkedMails = cName.GetLinksOfType(null, Core.ContactManager.Props.LinkNameFrom);
                    foreach (IResource mail in linkedMails)
                    {
                        mail.AddLink(Core.ContactManager.Props.LinkNameFrom, existingCName);
                    }

                    linkedMails = cName.GetLinksOfType(null, Core.ContactManager.Props.LinkNameCC);
                    foreach (IResource mail in linkedMails)
                    {
                        mail.AddLink(Core.ContactManager.Props.LinkNameCC, existingCName);
                    }

                    linkedCNames[i].Delete();
                }
                else
                {
                    cnames[cName.GetStringProp("Name")] = linkedCNames[i];
                }
            }
            Trace.WriteLine("ContactUpgrader -- MergeContactNamesWithoutAccount removed " + removedCount + " contact names with equal name.");
        }
Ejemplo n.º 8
0
        /// <summary>
        /// Initiates the procedure for fetching the descriptions of all change sets which
        /// don't currently have known descriptions.
        /// </summary>
        private void DescribeNewChangeSets(IResource repository)
        {
            IResourceList changeSets = repository.GetLinksOfType(Props.ChangeSetResource, Props.ChangeSetRepository);

            changeSets = changeSets.Minus(Core.ResourceStore.FindResourcesWithProp(Props.ChangeSetResource, Core.Props.Subject));
            if (changeSets.Count > 0)
            {
                Core.NetworkAP.QueueJob("Describing Perforce changeset",
                                        () => DescribeChangeSets(repository, changeSets, 0));
            }
        }
Ejemplo n.º 9
0
        internal bool HandleDropResourceOnCategory(IResourceList resDroppedRaw, IResource category)
        {
            // Categories have already been processed separately
            IResourceList resDropped = resDroppedRaw.Minus(Core.ResourceStore.GetAllResources("Category"));

            // Content-type of the target category
            string contentType = category.GetStringProp("ContentType");

            // Constrain
            foreach (IResource res in resDropped)
            {
                if (Core.ResourceStore.ResourceTypes[res.Type].HasFlag(ResourceTypeFlags.Internal))
                {
                    continue;
                }

                if (contentType != null && contentType != res.Type)
                {
                    DialogResult dr = MessageBox.Show(Core.MainWindow,
                                                      String.Format("The category “{0}” is configured to contain only “{1}” resources. Do you wish to change it to a general category?", category.DisplayName, contentType), "Add Resource to Category", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                    if (dr == DialogResult.No)
                    {
                        return(false);
                    }

                    Debug.WriteLine("Changing parent for category " + category.Id);
                    _categoryManager.SetContentTypeRecursive(category, null);
                    new ResourceProxy(category, JobPriority.Immediate).SetPropAsync("Parent", Core.CategoryManager.RootCategory);
                    contentType = null;
                    break;
                }
            }

            //  Presence of Alt modifier means "movement" of a resource to a category,
            //  not an addition of another one.
            bool isMove = (Control.ModifierKeys & Keys.Alt) > 0;

            foreach (IResource res in resDropped)
            {
                if (!Core.ResourceStore.ResourceTypes[res.Type].HasFlag(ResourceTypeFlags.Internal))
                {
                    if (!isMove)
                    {
                        Core.CategoryManager.AddResourceCategory(res, category);
                    }
                    else
                    {
                        Core.CategoryManager.SetResourceCategory(res, category);
                    }
                }
            }

            return(true);
        }
Ejemplo n.º 10
0
        private static void FixValidButIgnoredContacts()
        {
            IResourceStore store   = Core.ResourceStore;
            IResourceList  ignored = store.FindResourcesWithProp("Contact", "IsIgnored");

            ignored = ignored.Minus(store.FindResourcesWithProp("Contact", Core.Props.IsDeleted));
            Trace.WriteLine("Upgrade1Initializer -- Found " + ignored.Count + " ignored but non-deleted contacts");
            for (int i = 0; i < ignored.Count; i++)
            {
                ignored[i].DeleteProp("IsIgnored");
            }
        }
Ejemplo n.º 11
0
        private void  AttachResourceWatchHandlers()
        {
            _categories.ResourceAdded    += _categories_ResourceAdded;
            _categories.ResourceDeleting += _categories_ResourceDeleted;

            _views = Core.ResourceStore.GetAllResourcesLive(FilterManagerProps.ViewResName);
            _views = _views.Minus(Core.ResourceStore.FindResourcesWithPropLive(FilterManagerProps.ViewResName, "IsTrayIconFilter"));
            _views = _views.Minus(Core.ResourceStore.FindResourcesWithPropLive(FilterManagerProps.ViewResName, "IsFormattingFilter"));
            _views.ResourceAdded    += _views_ResourceAdded;
            _views.ResourceChanged  += _views_ResourceChanged;
            _views.ResourceDeleting += _views_ResourceDeleted;
        }
Ejemplo n.º 12
0
        private void buttonRemoveContact_Click(object sender, EventArgs e)
        {
            IResourceList sel = _contactsToMerge.GetSelectedResources();

            for (int i = 0; i < sel.Count; i++)
            {
                _suggestedContactList = _suggestedContactList.Union(sel);
                _contactsToMergeList  = _contactsToMergeList.Minus(sel);
                _suggestedContacts.JetListView.Nodes.Add(sel[i]);
                _contactsToMerge.JetListView.Nodes.Remove(sel[i]);
            }
            VerifyButtonsCondition();
        }
Ejemplo n.º 13
0
        private void buttonOneToLeaved_Click(object sender, System.EventArgs e)
        {
            Debug.Assert(listSplittedContacts.SelectedIndex != -1);
            if (buttonOneToLeaved.Enabled)
            {
                ListBox.SelectedObjectCollection coll = listSplittedContacts.SelectedItems;
                foreach (IResource res in coll)
                {
                    listLeavedContacts.Items.Add(res);
                }

                IResource[] list = new IResource[coll.Count];
                coll.CopyTo(list, 0);
                foreach (IResource res in list)
                {
                    listSplittedContacts.Items.Remove(res);
                    AccumulatedContactsToSplit = AccumulatedContactsToSplit.Minus(res.ToResourceList());
                }

                VerifyButtonsAccessibility();
            }
        }
Ejemplo n.º 14
0
        private void EnumerateFavorites(string folder, IResource parent)
        {
            FileInfo[] files = IOTools.GetFiles(folder);
            if (files != null)
            {
                IResourceList weblinks          = BookmarkService.SubNodes("Weblink", parent);
                IntArrayList  processedWeblinks = new IntArrayList(files.Length);
                foreach (FileInfo fileInfo in files)
                {
                    IResource weblink = null;
                    try
                    {
                        if (fileInfo.Extension.ToLower() == ".url")
                        {
                            weblink = ProcessFavoriteFile(fileInfo, parent);
                        }
                        else if (fileInfo.Extension.ToLower() == ".lnk")
                        {
                            weblink = ProcessShortcut(fileInfo, parent);
                        }
                    }
                    catch (Exception e)
                    {
                        FavoritesTools.TraceIfAllowed(e.Message);
                        continue;
                    }
                    if (weblink != null)
                    {
                        processedWeblinks.Add(weblink.Id);
                    }
                }
                _bookmarkservice.DeleteBookmarks(weblinks.Minus(
                                                     Core.ResourceStore.ListFromIds(processedWeblinks, false)));
            }

            DirectoryInfo[] dirs = IOTools.GetDirectories(folder);
            if (dirs != null)
            {
                IResourceList folders          = BookmarkService.SubNodes("Folder", parent);
                IntArrayList  processedFolders = new IntArrayList(dirs.Length);
                foreach (DirectoryInfo dirInfo in dirs)
                {
                    IResource subfolder = _bookmarkservice.FindOrCreateFolder(parent, dirInfo.Name);
                    EnumerateFavorites(IOTools.GetFullName(dirInfo), subfolder);
                    processedFolders.Add(subfolder.Id);
                }
                _bookmarkservice.DeleteFolders(folders.Minus(
                                                   Core.ResourceStore.ListFromIds(processedFolders, false)));
            }
        }
Ejemplo n.º 15
0
        public IResourceList Filter(string resType, IActionParameterStore actionStore)
        {
            IResourceList categories = actionStore.ParametersAsResList();

            categories = CategoriesTree(categories);
            IResourceList result = Core.ResourceStore.EmptyResourceList;

            foreach (IResource category in categories)
            {
                result = result.Union(category.GetLinksOfType(null, "Category"));
            }
            result = result.Minus(Core.ResourceStore.GetAllResources("Category"));
            return(result);
        }
Ejemplo n.º 16
0
        /**
         * If there are any resources or subcategories connected to the category,
         * shows a confirmation dialog.
         */

        public static bool ConfirmDeleteCategories(IWin32Window ownerWindow, IResourceList categoryList)
        {
            int linkCount = 0, subCategoryCount = 0;

            foreach (IResource category in categoryList)
            {
                IResourceList linked = category.GetLinksOfType(null, _propCategory);
                linked     = linked.Minus(Core.ResourceStore.FindResourcesWithProp(null, Core.Props.IsDeleted));
                linkCount += linked.Count;

                subCategoryCount += category.GetLinksTo(null, Core.Props.Parent).Count;
            }

            if (linkCount > 0 || subCategoryCount > 0)
            {
                string msg = "There are ";
                if (linkCount > 0)
                {
                    msg += linkCount + " resources ";
                    if (subCategoryCount > 0)
                    {
                        msg += "and ";
                    }
                }
                if (subCategoryCount > 0)
                {
                    msg += subCategoryCount + " subcategories ";
                }

                if (categoryList.Count == 1)
                {
                    msg += "in the category " + categoryList [0].DisplayName +
                           ". Are you sure you wish to delete the category?";
                }
                else
                {
                    msg += "in the " + categoryList.Count + " selected categories" +
                           ". Are you sure you wish to delete the categories?";
                }

                DialogResult dr = MessageBox.Show(ownerWindow,
                                                  msg, "Delete Category", MessageBoxButtons.YesNo);
                if (dr == DialogResult.No)
                {
                    return(false);
                }
            }
            return(true);
        }
Ejemplo n.º 17
0
        private static bool  CheckExpirationExceptions(IResourceList exceptions)
        {
            if (exceptions.IndexOf(Core.FilterRegistry.Std.ResourceIsFlagged) != -1)
            {
                exceptions = exceptions.Minus(Core.FilterRegistry.Std.ResourceIsFlagged.ToResourceList());
                exceptions = exceptions.Minus(Core.FilterRegistry.Std.ResourceIsAnnotated.ToResourceList());
            }
            exceptions = exceptions.Minus(Core.FilterRegistry.Std.ResourceIsCategorized.ToResourceList());
            exceptions = exceptions.Minus(Core.FilterRegistry.Std.ResourceIsUnread.ToResourceList());

            if (exceptions.Count == 1)
            {
                IResource cond     = exceptions[0];
                IResource template = cond.GetLinkProp("TemplateLink");
                if (template != null && template.Id == Core.FilterRegistry.Std.ReceivedInTheTimeSpanX.Id)
                {
                    string   text   = EditTimeSpanConditionForm.Condition2Text(cond);
                    string[] fields = text.Split(' ');
                    return(fields[0].ToLower() == "last");
                }
            }

            return(false);
        }
Ejemplo n.º 18
0
        private void ExportTasksImpl()
        {
            IResourceList tasksToExport  = Core.ResourceStore.GetAllResources(STR.Task);
            IResourceList tasksWithEntry = Core.ResourceStore.FindResourcesWithProp(null, PROP.EntryID);

            tasksToExport = tasksToExport.Minus(tasksWithEntry);
            foreach (IResource task in tasksToExport.ValidResources)
            {
                if (Finished)
                {
                    break;
                }
                new ExportTaskDescriptor(task).QueueJob(JobPriority.AboveNormal);
            }
        }
Ejemplo n.º 19
0
        public WatchedArticlesDecorator()
        {
            IResourceStore store = Core.ResourceStore;

            _unreadArticles = store.FindResourcesWithPropLive(NntpPlugin._newsArticle, Core.Props.IsUnread);
            _unreadArticles = _unreadArticles.Minus(store.FindResourcesWithPropLive(null, Core.Props.IsDeleted));
            _unreadArticles.ResourceAdded    += _unreadArticles_Updated;
            _unreadArticles.ResourceDeleting += _unreadArticles_Updated;

            _formattingRules = Core.FilterRegistry.GetFormattingRules(false);
            _formattingRules.ResourceAdded    += RuleConditionsListChanged;
            _formattingRules.ResourceDeleting += RuleConditionsListChanged;
            _formattingRules.ResourceChanged  += RuleConditionsChanged;
            HeadsChanged();
        }
Ejemplo n.º 20
0
        /// <summary>
        /// Queue for download those enclosures of the feed's unread items which
        /// are not yet downloaded or queued.
        /// </summary>
        /// <param name="feed">A feed resource which items are to be analyzed.</param>
        private void ScheduleEnclosures(IResource feed)
        {
            IResourceList items = feed.GetLinksOfType(Props.RSSItemResource, Props.RSSItem);

            items = items.Intersect(Core.ResourceStore.FindResourcesWithProp(Props.RSSItemResource, Core.Props.IsUnread), true);
            items = items.Minus(Core.ResourceStore.FindResourcesWithProp(Props.RSSItemResource, Core.Props.IsDeleted));

            IResourceList itemsWithEncls = Core.ResourceStore.FindResources(null, Props.EnclosureDownloadingState, (int)EnclosureDownloadState.NotDownloaded);

            items = items.Intersect(itemsWithEncls, true);

            foreach (IResource item in items)
            {
                EnclosureDownloadManager.PlanToDownload(item);
            }
        }
Ejemplo n.º 21
0
        public override void ShowPane()
        {
            _wereChanges = false;
            _statusBox.Items.AddRange(new string[] { "Immediately", "On Startup", "Never" });
            _statusBox.SelectedIndex = 1;

            _folders = Core.ResourceStore.FindResourcesWithPropLive(
                FileProxy._folderResourceType, FileProxy._propStatus);
            _folders = _folders.Minus(Core.ResourceStore.FindResourcesWithPropLive(
                                          FileProxy._folderResourceType, FileProxy._propDeleted));

            ArrayList garbage = new ArrayList();

            foreach (IResource folder in _folders)
            {
                if (!folder.HasLink(FileProxy._propParentFolder, FoldersCollection.Instance.FilesRoot))
                {
                    garbage.Add(folder);
                }
            }
            foreach (IResource folder in garbage)
            {
                FoldersCollection.Instance.DeleteResource(folder);
            }

            // force monitoring of my documents if list is empty and we are in Startup Wizard
            if (IsStartupPane)
            {
                _statusColumn.Width = 0;
                _statusBox.Visible  = false;
                if (_folders.Count == 0)
                {
                    _wereChanges = true;
                    Core.ResourceAP.RunUniqueJob(new MethodInvoker(CreateMyDocumentsFolder));
                }
            }

            foreach (IResource folder in _folders)
            {
                _initialStatuses[folder.GetPropText(FileProxy._propDirectory)] =
                    folder.GetIntProp(FileProxy._propStatus);
            }
            _folders.Sort(new int[] { Core.Props.Name }, true);
            _folderList.DataProvider = new ResourceListDataProvider(_folders);
        }
Ejemplo n.º 22
0
        private void  InitializeWatcher(IResource rule, string name, Icon icon)
        {
            IResourceList watchList = Core.FilterEngine.ExecView(rule);

            watchList = watchList.Minus(Core.ResourceStore.FindResourcesWithPropLive(null, Core.Props.IsDeleted));

            WatchersOrder.Add(name);
            WatchedLists[name]          = watchList;
            WatchedIcons[name]          = icon;
            watchList.ResourceAdded    += watchList_ResourceAdded;
            watchList.ResourceDeleting += watchList_ResourceDeleting;

            if (!rule.HasProp("RuleTurnedOff") && watchList.Count > 0)
            {
                FireIconOfWatcher(name);
                SetTooltipText();
            }
        }
Ejemplo n.º 23
0
        public void RegisterViewsFirstRun()
        {
            IResourceList list = Core.ResourceStore.FindResources(FilterManagerProps.ConditionTemplateResName, "Name", RSSViewsConstructor.PostInCategoryName);
            IResource     one  = Core.ResourceStore.FindUniqueResource(FilterManagerProps.ConditionTemplateResName, "DeepName", RSSViewsConstructor.PostInCategoryName);

            if (one != null)
            {
                list = list.Minus(one.ToResourceList());
                list.DeleteAll();
                one.SetProp("DeepName", RSSViewsConstructor.PostInCategoryDeep);
            }
            else
            {
                IFilterRegistry mgr = Core.FilterRegistry;
                IResource       res = mgr.CreateConditionTemplate(RSSViewsConstructor.PostInCategoryName, RSSViewsConstructor.PostInCategoryDeep,
                                                                  new string[] { "RSSItem" }, ConditionOp.Eq, "RSSCategory");
                mgr.AssociateConditionWithGroup(res, RSSViewsConstructor.RSSConditionsGroup);
            }
        }
Ejemplo n.º 24
0
        private void InitSpyResourceList(IResource task)
        {
            IResourceStore store     = Core.ResourceStore;
            IResourceList  currTasks = Core.ResourceStore.EmptyResourceList;

            //  In order to correctly form a new live list we have to reconstruct
            //  it from scratch - first, form a "plain" (Union with merge) list
            //  and only then add minus and intersection.
            foreach (IResource res in _taskLive)
            {
                currTasks = currTasks.Union(res.ToResourceListLive(), true);
            }
            _taskLive = currTasks.Union(task.ToResourceListLive(), true);

            _taskLive = _taskLive.Minus(store.FindResources(null, TasksPlugin._propStatus, (int)TaskStatuses.Completed));
            _taskLive = _taskLive.Intersect(store.FindResourcesInRange(null, TasksPlugin._propRemindDate,
                                                                       DateTime.MinValue.AddSeconds(1), DateTime.Now), true);
            _taskLive.ResourceDeleting += new ResourceIndexEventHandler(_taskLive_ResourceDeleting);
        }
Ejemplo n.º 25
0
        public void _btnMoreContacts_Click(object sender, EventArgs e)
        {
            IResourceList contactsList = Core.ResourceStore.GetAllResources("Contact");

            contactsList = contactsList.Minus(_contactsToMergeList);
            contactsList.Sort(new SortSettings(ResourceProps.DisplayName, true));
            IResourceList contacts = Core.UIManager.SelectResourcesFromList(this, contactsList,
                                                                            "Select Contact(s) for Merging");

            if (contacts != null)
            {
                foreach (IResource res in contacts)
                {
                    _contactsToMerge.JetListView.Nodes.Add(res);
                }
                _contactsToMergeList = _contactsToMergeList.Union(contacts);
            }
            VerifyButtonsCondition();
        }
Ejemplo n.º 26
0
        public static IResourceList GetCustomProperties()
        {
            if (_customProperties == null)
            {
                IResourceStore store = ICore.Instance.ResourceStore;
                _customProperties = store.FindResourcesLive("PropType", "Custom", 1);
                _customProperties = _customProperties.Minus(store.FindResources("PropType",
                                                                                "DataType", (int)PropDataType.Link));
                _customProperties.ResourceAdded    += OnCustomPropertyAdded;
                _customProperties.ResourceDeleting += OnCustomPropertyDeleting;

                _customPropTypes = new ArrayList();
                foreach (IResource res in _customProperties)
                {
                    int propID = res.GetIntProp("ID");
                    _customPropTypes.Add(store.PropTypes [propID]);
                }
            }

            return(_customProperties);
        }
Ejemplo n.º 27
0
        private IResourceList GetNodeResourceList(IResource res)
        {
            IResourceList result = Core.ResourceStore.EmptyResourceList;

            if (res.Type == _resourceNodeType)
            {
                result = res.GetLinksOfType(null, _itemLink);
            }
            if (_folderLink >= 0)
            {
                foreach (IResource child in res.GetLinksTo(null, _folderLink))
                {
                    result = result.Union(GetNodeResourceList(child));
                }
            }
            if (!res.HasProp("ShowDeletedItems"))
            {
                result = result.Minus(_allDel);
            }
            return(result);
        }
Ejemplo n.º 28
0
        /// <summary>
        /// Rebuilds the list of unread resources belonging to the workspace.
        /// </summary>
        private void UpdateUnreadResourceList()
        {
            if (_workspace != null && _workspace.IsDeleting)
            {
                return;
            }

            string workspaceName = WorkspaceName;

            Trace.WriteLine("Start update unread resources list for workspace " + workspaceName);
            if (_unreadResources != null)
            {
                _unreadResources.Dispose();
            }

            IResourceList unreadList = Core.ResourceStore.FindResourcesWithPropLive(null, Core.Props.IsUnread);

            unreadList = unreadList.Minus(Core.ResourceStore.FindResourcesWithProp(null, Core.Props.IsDeleted));

            Text = workspaceName;
            if (_workspace != null)
            {
                if (ICore.Instance != null)
                {
                    _unreadResources = unreadList.Intersect(_manager.GetFilterList(_workspace), true);
                }
            }
            else
            {
                _unreadResources = unreadList;
            }
            if (_unreadResources != null)
            {
                _unreadResources.ResourceAdded    += OnUnreadResourceAdded;
                _unreadResources.ResourceDeleting += OnUnreadResourceDeleting;
            }

            UpdateUnreadCounters();
            Trace.WriteLine("End update unread resources list for workspace " + workspaceName);
        }
Ejemplo n.º 29
0
        /**
         * Saves the category links from the specified tree node collection.
         */

        private void SaveCategoriesFromNodes(IResourceList resList)
        {
            IResourceList checkedCats = Core.ResourceStore.EmptyResourceList;

            GetCheckedCategories(ref checkedCats);

            foreach (IResource res in resList)
            {
                IResourceList currCats  = Core.CategoryManager.GetResourceCategories(res);
                IResourceList minusCats = currCats.Minus(checkedCats);

                foreach (IResource cat in checkedCats)
                {
                    Core.CategoryManager.AddResourceCategory(res, cat);
                }

                foreach (IResource cat in minusCats)
                {
                    Core.CategoryManager.RemoveResourceCategory(res, cat);
                }
            }
        }
Ejemplo n.º 30
0
        private void InitializeLists()
        {
            String[]      contextKeys = new String[] { "IsActionFilter", "IsFormattingFilter", "IsTrayIconFilter", "IsExpirationFilter" };
            IResourceList invisibles  = Store.FindResources(null, "Invisible", true);

            foreach (string context in contextKeys)
            {
                IResourceList allRules = Store.FindResourcesWithProp(null, context);
                allRules = allRules.Minus(invisibles);
                allRules = FilterOutRulesByLoadedPluginType(allRules);

                switch (context)
                {
                case "IsActionFilter": InitList(ref _listActionRules, "_listActionRules", allRules); break;

                case "IsFormattingFilter": InitList(ref _listFormattingRules, "_listFormattingRules", allRules); break;

                case "IsTrayIconFilter": InitList(ref _listTrayIconRules, "_listTrayIconRules", allRules); break;

                case "IsExpirationFilter": InitList(ref _listExpirationRules, "_listExpirationRules", allRules); break;
                }
            }
        }