Esempio n. 1
0
        private void NodeChangedHandler(NodeEventArgs nargs)
        {
            try
            {
                switch (nargs.Type)
                {
                case "Collection":
                {
                    iFolderHolder ifHolder =
                        ifdata.ReadiFolder(nargs.Collection);

                    if ((ifHolder != null) &&
                        (ifHolder.iFolder.HasConflicts))
                    {
                        lock (NodeEventQueue)
                        {
                            NodeEventQueue.Enqueue(new SimiasEvent(
                                                       ifHolder.iFolder.ID, null, null,
                                                       SimiasEventType.ChangediFolder));
                            SimiasEventFired.WakeupMain();
                        }
                    }

                    break;
                }

                case "Member":
                {
                    if (ifdata.IsiFolder(nargs.Collection))
                    {
                        iFolderUser newuser =
                            ifdata.GetiFolderUserFromNodeID(
                                nargs.Collection, nargs.ID);

                        if ((newuser != null) &&
                            !ifdata.IsCurrentUser(newuser.UserID))
                        {
                            lock (NodeEventQueue)
                            {
                                NodeEventQueue.Enqueue(new SimiasEvent(
                                                           nargs.Collection, newuser,
                                                           newuser.UserID,
                                                           SimiasEventType.ChangedUser));
                                SimiasEventFired.WakeupMain();
                            }
                        }
                    }
                    break;
                }


                case "Subscription":
                {
                    if (ifdata.ISPOBox(nargs.Collection))
                    {
                        // The Collection is the PO Box so the node
                        // is most likely an invitation

                        iFolderHolder ifHolder =
                            ifdata.ReadAvailableiFolder(nargs.ID,
                                                        nargs.Collection);
                        if (ifHolder != null)
                        {
                            lock (NodeEventQueue)
                            {
                                NodeEventQueue.Enqueue(new SimiasEvent(
                                                           ifHolder.iFolder.CollectionID, null, null,
                                                           SimiasEventType.ChangediFolder));
                                SimiasEventFired.WakeupMain();
                            }
                        }
                    }
                    break;
                }
                }
            }
            catch (Exception e)
            {
                if (printErrors)
                {
                    Debug.PrintLine("Exception in NodeChangedHandler(): " + e.Message);
                    Debug.PrintLine(e.StackTrace);
                }
            }
        }