Пример #1
0
 protected virtual void HandleResourceChanged(object sender, ResourcePropIndexEventArgs e)
 {
     if (!_disposed)
     {
         _listView.UpdateItemSafe(e.Resource);
     }
 }
Пример #2
0
 /// <summary>
 /// A workspace has changed.
 /// If it's a change in its name, update the button.
 /// </summary>
 private void OnWorkspaceChanged(object sender, ResourcePropIndexEventArgs e)
 {
     if (e.ChangeSet.IsDisplayNameAffected)            // Relayout the button to update its widthхотя тут наверно жд ту
     {
         Core.UserInterfaceAP.QueueJob("Update Workspace Button", new MethodInvoker(UpdateButtonWidth));
     }
 }
Пример #3
0
 private void _unreadArticles_ResourceChanged(object sender, ResourcePropIndexEventArgs e)
 {
     if (e.ChangeSet.IsPropertyChanged(Core.Props.IsDeleted))
     {
         _updatedResources.Add(e.Resource);
     }
 }
Пример #4
0
 private void HandleResourceChanged(object sender, ResourcePropIndexEventArgs e)
 {
     if (e.ChangeSet.IsPropertyChanged(_parentProp))
     {
         LinkChange[] changes = e.ChangeSet.GetLinkChanges(_parentProp);
         for (int i = 0; i < changes.Length; i++)
         {
             IResource target = Core.ResourceStore.TryLoadResource(changes [i].TargetId);
             if (target != null)
             {
                 if (changes [i].ChangeType == LinkChangeType.Add)
                 {
                     NotifyListeners(target, Operation.Added, e.Resource, null);
                 }
                 else
                 {
                     NotifyListeners(target, Operation.Deleting, e.Resource, null);
                 }
             }
         }
     }
     else
     {
         IResource parent = e.Resource.GetLinkProp(_parentProp);
         NotifyListeners(parent, Operation.Changed, e.Resource, e.ChangeSet);
     }
 }
Пример #5
0
        private void _ABList_ResourceChanged(object sender, ResourcePropIndexEventArgs e)
        {
            string    entryID   = e.Resource.GetStringProp(PROP.EntryID);
            IResource resFolder = Folder.Find(entryID);
            PairIDs   pairIDs   = PairIDs.Get(resFolder);

            if (pairIDs == null)
            {
                return;
            }

            IEFolder folder = OutlookSession.OpenFolder(pairIDs.EntryId, pairIDs.StoreId);

            if (folder != null)
            {
                using ( folder )
                {
                    if (!e.Resource.GetPropText(Core.Props.Name).EndsWith("(Outlook)"))
                    {
                        folder.SetStringProp(MAPIConst.PR_DISPLAY_NAME, e.Resource.GetStringProp(Core.Props.Name));
                        folder.SaveChanges();
                    }
                }
            }
        }
Пример #6
0
 private void OnTaskChanged(object sender, ResourcePropIndexEventArgs e)
 {
     if (Settings.ExportTasks)
     {
         new ExportTaskDescriptor(e.Resource).QueueJob(JobPriority.AboveNormal);
     }
 }
Пример #7
0
 /// <summary>
 /// The holder has changed, if the change affects the order-property,
 /// </summary>
 protected void OnOrderPropertyHolderChanged(object sender, ResourcePropIndexEventArgs e)
 {
     if (e.ChangeSet.IsPropertyChanged(Core.Props.UserResourceOrder))
     {
         OnUserResourceOrderChanged(this, EventArgs.Empty);
     }
 }
Пример #8
0
 private void ConversationChangedHandler(object sender, ResourcePropIndexEventArgs e)
 {
     if (_displayedResource == sender)
     {
         Core.ResourceBrowser.RedisplaySelectedResource();
     }
 }
Пример #9
0
 private void OnRootResourceChanged(object sender, ResourcePropIndexEventArgs e)
 {
     // If the sorting-order has changed, reapply the sorting
     if (e.ChangeSet.IsPropertyChanged(Core.Props.UserResourceOrder))
     {
         Core.UserInterfaceAP.QueueJob("Rearrange Children", new RearrangeChildrenDelegate(RearrangeChildren), e.Resource);
     }
 }
Пример #10
0
 private void _feedGroups_ResourceChanged(object sender, ResourcePropIndexEventArgs e)
 {
     if (e.ChangeSet.IsPropertyChanged(Core.Props.Parent) ||
         (_activeWs != null && e.ChangeSet.GetLinkChange(_propWorkspaceVisible, _activeWs.Id) != LinkChangeType.None))
     {
         UpdateGroupUnreadCount(true);
     }
 }
Пример #11
0
        private void OnPhoneChanged(object sender, ResourcePropIndexEventArgs e)
        {
            IResource phone   = e.Resource;
            IResource contact = phone.GetLinkProp(ContactManager._propPhone);

            if (contact != null && contact.HasProp(PROP.Imported) && contact.HasProp(PROP.EntryID))
            {
                OutlookSession.OutlookProcessor.QueueJob(new ExportContactDescriptor(contact));
            }
        }
Пример #12
0
        private void OnCategory(object sender, ResourcePropIndexEventArgs args)
        {
            DecorateResource(args.Resource);
            IResourceList parents = args.Resource.GetLinksFrom("Category", Core.Props.Parent);

            if (parents.Count > 0)
            {
                DecorateResource(parents[0]);
            }
        }
Пример #13
0
 private void CategoryChanged(object sender, ResourcePropIndexEventArgs e)
 {
     if (!Settings.SyncTaskCategory && !Settings.SyncMailCategory && !Settings.SyncContactCategory)
     {
         return;
     }
     if (e.ChangeSet.IsPropertyChanged(Core.Props.Parent) || e.ChangeSet.IsPropertyChanged(Core.Props.Name))
     {
         ProcessCategoriesRecursive(e.Resource);
     }
 }
Пример #14
0
 /// <summary>
 /// When the active workspace is changed, updates the filter list.
 /// </summary>
 private void OnActiveWorkspaceChanged(object sender, ResourcePropIndexEventArgs e)
 {
     if (Core.UserInterfaceAP.IsOwnerThread)
     {
         ProcessActiveWorkspaceChange();
     }
     else
     {
         Core.UIManager.QueueUIJob(new MethodInvoker(ProcessActiveWorkspaceChange));
     }
 }
Пример #15
0
 protected virtual void HandleResourceChanged(object sender, ResourcePropIndexEventArgs e)
 {
     if (!_disposed)
     {
         // UpdateItemSafe() is necessary because in some cases (OM-8629) some plugin performs
         // a resource change from the ResourceAdded event handler, which causes
         // JetListView to receive ResourceChanged notification for a resource before it
         // has received a ResourceAdded notification for the same resource.
         _listView.UpdateItemSafe(e.Resource);
     }
 }
Пример #16
0
 private void HandleResourceChanged(object sender, ResourcePropIndexEventArgs e)
 {
     if (e.ChangeSet.IsDisplayNameAffected || _showIcon)
     {
         Core.UIManager.QueueUIJob(new MethodInvoker(RefreshResource));
     }
     if (ResourceChanged != null)
     {
         ResourceChanged(this, new ResourcePropEventArgs(e.Resource, e.ChangeSet));
     }
 }
Пример #17
0
        [SetUp] public void SetUp()
        {
            _core        = new TestCore();
            _storage     = _core.ResourceStore;
            _propSize    = _storage.PropTypes.Register("Size", PropDataType.Int);
            _propSubject = _storage.PropTypes.Register("Subject", PropDataType.String);
            _storage.ResourceTypes.Register("Email", "Subject");
            _storage.ResourceTypes.Register("Person", "Name");

            _provider       = new SimplePropertyProvider();
            _lastChangeArgs = null;
        }
Пример #18
0
        private void OnContainerChanged(object sender, ResourcePropIndexEventArgs args)
        {
            IPropertyChangeSet set = args.ChangeSet;

            if (set.IsPropertyChanged(_itemLink) || (_folderLink >= 0 && set.IsPropertyChanged(_folderLink)))
            {
                if (DecorationChanged != null)
                {
                    DecorationChanged(this, new ResourceEventArgs(args.Resource));
                }
            }
        }
Пример #19
0
 /// <summary>
 /// Handle adding or removal of the resource to/from a workspace. It is indicated by
 /// the link with property Core.WorkspaceManager.Props.WorkspaceVisible
 /// </summary>
 private void HandleViewUnreadChanged(object sender, ResourcePropIndexEventArgs e)
 {
     LinkChange[] changes = e.ChangeSet.GetLinkChanges(((WorkspaceManager)Core.WorkspaceManager).Props.WorkspaceVisible);
     if (changes != null)
     {
         IResource viewResource = _unreadResourcesToView [(IResourceList)sender];
         for (int i = 0; i < changes.Length; i++)
         {
             _unreadManager.AdjustViewWorkspaceCounter(e.Resource, viewResource, changes[i].TargetId,
                                                       (changes[i].ChangeType == LinkChangeType.Add) ? 1 : -1);
         }
     }
 }
Пример #20
0
        private void HandleFileChangeChanged(object sender, ResourcePropIndexEventArgs e)
        {
            if (!Core.UserInterfaceAP.IsOwnerThread)
            {
                Core.UIManager.QueueUIJob(() => HandleFileChangeChanged(sender, e));
                return;
            }
            FileChange fileChange = (FileChange)_changedFilesList.SelectedItem;

            if (fileChange != null && fileChange.Resource == e.Resource)
            {
                UpdateSelectedChange();
            }
        }
Пример #21
0
        private void _resourceList_ResourceChanged(object sender, ResourcePropIndexEventArgs e)
        {
            _refresh.Enabled = true;

            AddStringToTraceBox(DateTime.Now.ToLongTimeString() + " resource was changed.");
            foreach (int propID in e.ChangeSet.GetChangedProperties())
            {
                string message = "\t" + Core.ResourceStore.PropTypes.GetPropDisplayName(propID);
                if (Core.ResourceStore.PropTypes[propID].DataType != PropDataType.Link)
                {
                    message += "\t\t" + e.ChangeSet.GetOldValue(propID);
                    message += " --> " + e.Resource.GetProp(propID);
                }
                AddStringToTraceBox(message);
            }
        }
Пример #22
0
        private void WeblinkOrFolderChanged(object sender, ResourcePropIndexEventArgs e)
        {
            IResource webLink = e.Resource;

            IPropertyChangeSet set = e.ChangeSet;
            int propLastModified   = Core.ResourceStore.PropTypes["LastModified"].Id;

            if (BookmarkService.DownloadMethod != 2 && webLink == _lastDisplayedWeblink &&
                ((set.IsPropertyChanged(propLastModified) && webLink.HasProp("Source")) ||
                 (set.IsPropertyChanged(Core.Props.LastError) && webLink.HasProp(Core.Props.LastError))))
            {
                // if the displayed web link has changed, redisplay it
                IResourceBrowser browser = Core.ResourceBrowser;
                if ((webLink == _favoritesTreePane.SelectedNode && Core.TabManager.CurrentTabId == "Web") ||
                    (browser.SelectedResources.Count == 1 && webLink == browser.SelectedResources[0]))
                {
                    Core.UserInterfaceAP.QueueJobAt(DateTime.Now.AddSeconds(1), "RedisplaySelectedResource", browser.RedisplaySelectedResource);
                }
            }

            string URL = webLink.GetPropText(_propURL);

            if (URL.Length > 0)
            {
                if (set.IsPropertyChanged(_propLastUpdated) || set.IsPropertyChanged(_propUpdateFreq))
                {
                    BookmarkService.QueueWeblink(webLink, URL, BookmarkService.BookmarkSynchronizationTime(webLink));
                }
                if (set.IsPropertyChanged(_propURL))
                {
                    BookmarkService.ImmediateQueueWeblink(webLink, URL);
                }
            }
            if (set.IsPropertyChanged(Core.PropIds.Name) || set.IsPropertyChanged(_propURL))
            {
                IBookmarkProfile profile = _bookmarkService.GetOwnerProfile(webLink);
                string           error;
                if (profile != null && profile.CanCreate(webLink, out error))
                {
                    profile.Create(webLink);
                }
            }
        }
Пример #23
0
 private void _feeds_ResourceChanged(object sender, ResourcePropIndexEventArgs e)
 {
     if (e.ChangeSet == null)
     {
         return;
     }
     if (e.ChangeSet.IsPropertyChanged(Core.Props.Parent) ||
         (_activeWs != null && e.ChangeSet.GetLinkChange(_propWorkspaceVisible, _activeWs.Id) != LinkChangeType.None))
     {
         UpdateGroupUnreadCount(true);
     }
     else if (e.ChangeSet.IsPropertyChanged(_propUnreadCount))
     {
         object oldValue = e.ChangeSet.GetOldValue(_propUnreadCount);
         int    oldCount = (oldValue == null) ? 0 : (int)oldValue;
         int    newCount = e.Resource.GetIntProp(_propUnreadCount);
         AdjustGroupUnreadCount(e.Resource, newCount - oldCount);
     }
 }
Пример #24
0
        //---------------------------------------------------------------------
        //  Trace the event when a link between a resource (e.g. folder) and
        //  an expiration rule is removed. When there is no link between a rule
        //  and other resources, the rule must be deleted automatically.
        //---------------------------------------------------------------------
        private void RuleLinkageChanged(object sender, ResourcePropIndexEventArgs e)
        {
            bool checkRes = false;

            LinkChange[] changes = e.ChangeSet.GetLinkChanges(-ExpRuleLinkId);
            foreach (LinkChange change in changes)
            {
                if (change.ChangeType == LinkChangeType.Delete)
                {
                    checkRes = true;
                }
            }

            int linksCount = e.Resource.GetLinksOfType(null, ExpRuleLinkId).Count;

            if (checkRes && linksCount == 0)
            {
                e.Resource.Delete();
            }
        }
Пример #25
0
 private void HandleChangesetChanged(object sender, ResourcePropIndexEventArgs e)
 {
     // redisplay resource only if interesting changes occur
     if (!e.ChangeSet.IsPropertyChanged(Props.Change) && !e.ChangeSet.IsPropertyChanged(Core.PropIds.LongBody))
     {
         return;
     }
     if (!Core.UserInterfaceAP.IsOwnerThread)
     {
         Core.UIManager.QueueUIJob(() => HandleChangesetChanged(sender, e));
         return;
     }
     if (e.Resource == _changeSet)
     {
         EndDisplayResource(e.Resource);
         if (!e.Resource.IsDeleting)
         {
             DisplayResource(e.Resource);
         }
     }
 }
Пример #26
0
        protected override void HandleResourceChanged(object sender, ResourcePropIndexEventArgs e)
        {
            if (_disposed)
            {
                return;
            }

            lock ( _resourceList )
            {
                ConversationNode node = FindConversationNode(e.Resource.Id);
                if (_threadingHandler.IsThreadChanged(e.Resource, e.ChangeSet))
                {
                    if (node != null && node.LvNode != null)
                    {
                        UpdateItemThread(e.Resource, node);
                    }
                }
                else if (node != null)    // if we use a live snapshot list, it's possible to get
                // ResourceChanged notifications for nodes which weren't included
                // in predicate GetMatchingResources() output (OM-8711)
                {
                    _listView.UpdateItemSafe(e.Resource);
                    IResource lastCollapsedParent = null;
                    node = node.Parent;
                    while (node != null)
                    {
                        if (node.LvNode != null && !node.LvNode.Expanded)
                        {
                            lastCollapsedParent = (IResource)node.LvNode.Data;
                        }
                        node = node.Parent;
                    }
                    if (lastCollapsedParent != null)
                    {
                        _listView.UpdateItemSafe(lastCollapsedParent);
                    }
                }
            }
        }
Пример #27
0
        private void OnContactChanged(object sender, ResourcePropIndexEventArgs e)
        {
            if (IsDisposed)
            {
                return;
            }

            //  Some desynchronization is possible during visual context
            //  switching, thus check that handler is actually called for
            //  the appropriate resource.
            if (_contact.Id == e.Resource.Id)
            {
                if (InvokeRequired)
                {
                    Core.UIManager.QueueUIJob(new ResourcePropIndexEventHandler(OnContactChanged), new object[] { sender, e });
                }
                else
                {
                    ShowResourceContent();
                }
            }
        }
Пример #28
0
        private void  BaseResourceChanged(object sender, ResourcePropIndexEventArgs e)
        {
            foreach (int linkId in TracedLinks.Keys)
            {
                LinkChange[] changes;

                //  For undirected links take always a positive value.
                if (Core.ResourceStore.PropTypes[linkId].HasFlag(PropTypeFlags.DirectedLink))
                {
                    changes = e.ChangeSet.GetLinkChanges(-linkId);
                }
                else
                {
                    changes = e.ChangeSet.GetLinkChanges(linkId);
                }

                foreach (LinkChange change in changes)
                {
                    ProcessLinkChange(linkId, e.Resource, change);
                }
            }
        }
Пример #29
0
        private void _views_ResourceChanged(object sender, ResourcePropIndexEventArgs e)
        {
            string type           = e.Resource.GetStringProp(Core.Props.ContentType);
            bool   isStillContact = (type != null && type.IndexOf("Contact") != -1);

            for (int i = 0; i < _cmbCategory.Items.Count; i++)
            {
                object o = _cmbCategory.Items[i];
                if (o is IResource)
                {
                    IResource item = (IResource)o;
                    if (item != null && item.Id == e.Resource.Id)
                    {
                        if (!isStillContact)
                        {
                            Core.UIManager.QueueUIJob(new TypedResDelegate(DeleteResource),
                                                      e.Resource, FilterManagerProps.ViewResName);
                        }
                        return;
                    }
                }
            }
        }
Пример #30
0
        private void OnResourceChanged(object sender, ResourcePropIndexEventArgs e)
        {
            IResourceList resList = _resList;

            if (resList == null || e.Index < 0)
            {
                return;
            }

            lock ( resList )
            {
                lock ( _events )
                {
                    if (_resList == null)
                    {
                        return;
                    }
                    ResourceListEvent ev = new ResourceListEvent(_resList, EventType.Change, e.Resource.Id, e.Index, e.ChangeSet);
                    _events.Add(ev);
                    _needMerge = true;
                }
            }
        }