Esempio n. 1
0
 /// <summary>
 /// Call back method which is called when sync event occurs
 /// </summary>
 /// <param name="args">Simias event details</param>
 private void OnSyncEvent(SimiasEventArgs args)
 {
     try
     {
         if (enabled)
         {
             CollectionSyncEventArgs cArgs = args as CollectionSyncEventArgs;
             if (cArgs != null)
             {
                 if (CollectionSync != null)
                 {
                     Delegate[] cbList = CollectionSync.GetInvocationList();
                     foreach (CollectionSyncEventHandler cb in cbList)
                     {
                         try
                         {
                             cb(cArgs);
                         }
                         catch (Exception ex)
                         {
                             logger.Debug(ex, "Delegate {0}.{1} failed", cb.Target, cb.Method);
                             CollectionSync -= cb;
                         }
                     }
                 }
             }
             else
             {
                 FileSyncEventArgs fArgs = args as FileSyncEventArgs;
                 if (fArgs != null)
                 {
                     if (FileSync != null)
                     {
                         Delegate[] cbList = FileSync.GetInvocationList();
                         foreach (FileSyncEventHandler cb in cbList)
                         {
                             try
                             {
                                 cb(fArgs);
                             }
                             catch (Exception ex)
                             {
                                 logger.Debug(ex, "Delegate {0}.{1} failed", cb.Target, cb.Method);
                                 FileSync -= cb;
                             }
                         }
                     }
                 }
             }
         }
     }
     catch (Exception ex)
     {
         new SimiasException(args.ToString(), ex);
     }
 }
Esempio n. 2
0
 /// <summary>
 /// Callback used to indicate that a collection is beginning or ending a sync cycle.
 /// </summary>
 /// <param name="args">Arguments that give information about the collection.</param>
 private void CollectionSyncEventCallback(CollectionSyncEventArgs args)
 {
     try
     {
         // Send the event to the client.
         byte[] buffer = new IProcEventData(args).ToBuffer();
         eventSocket.BeginSend(buffer, 0, buffer.Length, SocketFlags.None, new AsyncCallback(EventSendComplete), this);
     }
     catch (Exception e)
     {
         DisposeSubscribers();
         log.Error(e, String.Format("{0} : Error processing CollectionSyncEventCallback event for client.", port));
     }
 }
Esempio n. 3
0
 private void syncCollection(CollectionSyncEventArgs syncEventArgs)
 {
     try
        {
     progressBar1.Visible = false;
     switch (syncEventArgs.Action)
     {
      case Action.StartLocalSync:
      {
                 if (!syncEventArgs.Name.StartsWith("POBox:"))
       {
        statusBar1.Text = string.Format(TrayApp.Properties.Resources.localSync, syncEventArgs.Name);
        lock (ht)
        {
     TileListViewItem tlvi = (TileListViewItem)ht[syncEventArgs.ID];
     if (tlvi != null)
     {
      iFolderObject ifolderObject = (iFolderObject)tlvi.Tag;
      ifolderObject.iFolderState = iFolderState.SynchronizingLocal;
      int imageIndex;
      tlvi.Status = getItemState( ifolderObject, 0, out imageIndex );
      tlvi.ImageIndex = imageIndex;
                             if (!thumbnailView)
                             {
                                 ListViewItem item = listView1.FindItemWithText(ifolderObject.iFolderWeb.ID);
                                 listView1.Items[item.Index].ImageIndex = imageIndex;
                                 listView1.Items[item.Index].SubItems[3].Text = tlvi.Status;
                             }
     }
        }
       }
       break;
      }
      case Action.StartSync:
      {
                 this.MenuRevert.Enabled = false;
                 this.menuActionRevert.Enabled = false;
       if (syncEventArgs.Name.StartsWith("POBox:"))
       {
        statusBar1.Text = TrayApp.Properties.Resources.checkingForiFolders;
       }
       else
       {
        statusBar1.Text = string.Format(TrayApp.Properties.Resources.synciFolder, syncEventArgs.Name);
        lock (ht)
        {
     TileListViewItem tlvi = (TileListViewItem)ht[syncEventArgs.ID];
     if (tlvi != null)
     {
      startSync = true;
      iFolderObject ifolderObject = (iFolderObject)tlvi.Tag;
      ifolderObject.iFolderState = iFolderState.Synchronizing;
      tlvi.ItemLocation = ifolderObject.iFolderWeb.UnManagedPath;
      int imageIndex;
      tlvi.Status = getItemState( ifolderObject, 0, out imageIndex );
      tlvi.ImageIndex = imageIndex;
                             if (!thumbnailView)
                             {
                                 ListViewItem item = listView1.FindItemWithText(ifolderObject.iFolderWeb.ID);
                                 listView1.Items[item.Index].ImageIndex = imageIndex;
                                 listView1.Items[item.Index].SubItems[3].Text = tlvi.Status;
                             }
     }
        }
       }
       break;
      }
             case Action.NoPassphrase:
      {
       lock(ht)
       {
        TileListViewItem tlvi = (TileListViewItem)ht[syncEventArgs.ID];
        if (tlvi != null)
        {
     iFolderObject ifolderObject = (iFolderObject)tlvi.Tag;
     ifolderObject.iFolderState = iFolderState.NoPassphrase;
                         int imageIndex;
     tlvi.Status = getItemState( ifolderObject, 0, out imageIndex );
     tlvi.ImageIndex = imageIndex;
     tlvi.Tag = ifolderObject;
                         if (!thumbnailView)
                         {
                             ListViewItem item = listView1.FindItemWithText(ifolderObject.iFolderWeb.ID);
                             listView1.Items[item.Index].ImageIndex = imageIndex;
                             listView1.Items[item.Index].SubItems[3].Text = tlvi.Status;
                         }
        }
       }
       statusBar1.Text = resourceManager.GetString("statusBar1.Text");
                 syncLog.AddMessageToLog(DateTime.Now,
                     string.Format("Passphrase not provided, will not sync the folder \"{0}\""));
       if (initialConnect)
       {
        initialConnect = false;
        updateEnterpriseTimer.Start();
       }
                 this.MenuRevert.Enabled = true;
                 this.menuActionRevert.Enabled = true;
       break;
      }
      case Action.StopSync:
      {
       lock(ht)
       {
        TileListViewItem tlvi = (TileListViewItem)ht[syncEventArgs.ID];
        if (tlvi != null)
        {
     iFolderObject ifolderObject = (iFolderObject)tlvi.Tag;
     uint objectsToSync2 = 0;
     try
     {
      SyncSize syncSize = ifWebService.CalculateSyncSize(syncEventArgs.ID);
      objectsToSync2 = syncSize.SyncNodeCount;
     }
     catch {}
     if (objectsToSync2 == 0)
     {
       ifolderObject.iFolderState = syncEventArgs.Connected ? iFolderState.Normal : iFolderState.Disconnected;
       ifolderObject.iFolderState = syncEventArgs.Yielded ? iFolderState.Synchronizing : ifolderObject.iFolderState;
     }
     else
     {
      ifolderObject.iFolderState = iFolderState.FailedSync;
     }
     int imageIndex;
     tlvi.Status = getItemState( ifolderObject, objectsToSync2, out imageIndex );
     tlvi.ImageIndex = imageIndex;
     tlvi.Tag = ifolderObject;
                         if (!thumbnailView)
                         {
                             ListViewItem item = listView1.FindItemWithText(ifolderObject.iFolderWeb.ID);
                             listView1.Items[item.Index].ImageIndex = imageIndex;
                             listView1.Items[item.Index].SubItems[3].Text = tlvi.Status;
                         }
        }
        objectsToSync = 0;
       }
       statusBar1.Text = resourceManager.GetString("statusBar1.Text");
       if (initialConnect)
       {
        initialConnect = false;
        updateEnterpriseTimer.Start();
       }
                 this.MenuRevert.Enabled = true;
                 this.menuActionRevert.Enabled = true;
       break;
      }
             case Action.DisabledSync:
             {
                 lock (ht)
                 {
                     TileListViewItem tlvi = (TileListViewItem)ht[syncEventArgs.ID];
                     if (tlvi != null)
                     {
                         iFolderObject ifolderObject = (iFolderObject)tlvi.Tag;
                         ifolderObject.iFolderState = iFolderState.Normal;
                         ifolderObject.iFolderWeb.State = "WaitSync";
                         int imageIndex;
                         tlvi.ItemLocation = ifolderObject.iFolderWeb.UnManagedPath;
                         tlvi.Status = getItemState(ifolderObject, 0, out imageIndex);
                         tlvi.ImageIndex = imageIndex;
                         tlvi.Tag = ifolderObject;
                         if (!thumbnailView)
                         {
                             ListViewItem item = listView1.FindItemWithText(ifolderObject.iFolderWeb.ID);
                             listView1.Items[item.Index].ImageIndex = imageIndex;
                             listView1.Items[item.Index].SubItems[3].Text = tlvi.Status;
                         }
                         syncLog.AddMessageToLog(DateTime.Now,
                         string.Format("Synchronization Disable for:{0}", ifolderObject.iFolderWeb.Name));
                     }
                 }
                 break;
             }
     }
        }
        catch {}
 }
Esempio n. 4
0
 private void OniFolderSyncEvent(object o, CollectionSyncEventArgs args)
 {
     if (args == null || args.ID == null || args.Name == null)
     return;
        switch(args.Action)
        {
     case Simias.Client.Event.Action.StartLocalSync:
     {
                       this.RevertMenuItem.Sensitive = false;
     this.RemoveiFolderButton.Sensitive = false;
      if (args.Name != null && args.Name.StartsWith("POBox:"))
      {
       DomainInformation domain = domainController.GetPOBoxDomain(args.ID);
       if (domain != null)
        UpdateStatus(string.Format(Util.GS("Checking for new iFolders: {0}"), domain.Name));
       else
        UpdateStatus(Util.GS("Checking for new iFolders..."));
      }
      else
      {
       UpdateStatus(string.Format(Util.GS(
      "Checking for changes: {0}"), args.Name));
      }
      if( ifolderlistview.Visible )
                                        UpdateRowInListView(args.ID);
      break;
     }
     case Simias.Client.Event.Action.StartSync:
     {
                       this.RevertMenuItem.Sensitive = false;
     this.RemoveiFolderButton.Sensitive = false;
      if (args.Name != null && args.Name.StartsWith("POBox:"))
      {
       DomainInformation domain = domainController.GetPOBoxDomain(args.ID);
       if (domain != null)
        UpdateStatus(string.Format(Util.GS("Checking for new iFolders: {0}"), domain.Name));
       else
        UpdateStatus(Util.GS("Checking for new iFolders..."));
      }
      else
      {
       UpdateStatus(string.Format(Util.GS(
       "Synchronizing: {0}"), args.Name));
      }
      if( ifolderlistview.Visible )
                                        UpdateRowInListView(args.ID);
      break;
     }
     case Simias.Client.Event.Action.StopSync:
     {
      if(SyncBar != null)
       SyncBar.Hide();
      UpdateStatus(Util.GS("Idle..."));
      iFolderHolder holder = null;
               holder = iFolderIconView.SelectedFolder;
      if ( (holder != null)
                    && (holder.iFolder != null)
                    && (!holder.iFolder.IsSubscription)
                           && (null != this.RemoveiFolderButton) )
      {
      this.RevertMenuItem.Sensitive = true;
       this.RemoveiFolderButton.Sensitive = true;
      }
      if (args.Name != null )
      {
                     DomainInformation domain = domainController.GetDomain(args.ID);
        UpdateQoutaData(domain);
      UpdateServerInfoForSelectedDomain();
      }
      if( ifolderlistview.Visible )
                                         UpdateRowInListView(args.ID);
      break;
     }
     case Simias.Client.Event.Action.NoPassphrase:
     {
      if(SyncBar != null)
       SyncBar.Hide();
      UpdateStatus(Util.GS("Idle..."));
      iFolderHolder holder = null;
               holder = iFolderIconView.SelectedFolder;
      if ( (holder != null)
                    && (holder.iFolder != null)
                    && (!holder.iFolder.IsSubscription)
                           && (null != this.RemoveiFolderButton) )
      {
      this.RevertMenuItem.Sensitive = true;
       this.RemoveiFolderButton.Sensitive = true;
       holder.State = iFolderState.NoPassphrase;
      }
      if( ifolderlistview.Visible )
                                         UpdateRowInListView(args.ID);
      break;
     }
     case Simias.Client.Event.Action.DisabledSync:
     {
      iFolderHolder holder = null;
               holder = iFolderIconView.SelectedFolder;
      if(holder != null && holder.iFolder != null)
      {
       holder.State = iFolderState.Normal;
      holder.iFolder.State = "WaitSync";
      }
      break;
     }
        }
 }
Esempio n. 5
0
 private void collectionSync(CollectionSyncEventArgs collectionSyncEventArgs)
 {
     try
        {
     SyncSize syncSize = ifWebService.CalculateSyncSize(currentiFolder.ID);
     objectCount.Text = syncSize.SyncNodeCount.ToString();
     if (collectionSyncEventArgs.Action.Equals(Action.StartSync))
     {
      startSync = true;
     }
     else if ((collectionSyncEventArgs.Action == Action.StopSync) && collectionSyncEventArgs.Connected)
     {
      lastSync.Text = ifWebService.GetMinimaliFolder(currentiFolder.ID,1).LastSyncTime;
     }
        }
        catch {}
 }
Esempio n. 6
0
 private void OniFolderSyncEvent(object o, CollectionSyncEventArgs args)
 {
     if (args == null || args.ID == null || args.Name == null)
     return;
        switch(args.Action)
        {
     case Simias.Client.Event.Action.StartLocalSync:
     {
             this.RevertMenuItem.Sensitive = false;
     this.RemoveiFolderButton.Sensitive = false;
      if (args.Name != null && args.Name.StartsWith("POBox:"))
      {
       DomainInformation domain = domainController.GetPOBoxDomain(args.ID);
       if (domain != null)
        UpdateStatus(string.Format(Util.GS("Checking for new iFolders: {0}"), domain.Name));
       else
        UpdateStatus(Util.GS("Checking for new iFolders..."));
      }
      else
      {
       UpdateStatus(string.Format(Util.GS(
      "Checking for changes: {0}"), args.Name));
      }
      break;
     }
     case Simias.Client.Event.Action.StartSync:
     {
             this.RevertMenuItem.Sensitive = false;
     this.RemoveiFolderButton.Sensitive = false;
      if (args.Name != null && args.Name.StartsWith("POBox:"))
      {
       DomainInformation domain = domainController.GetPOBoxDomain(args.ID);
       if (domain != null)
        UpdateStatus(string.Format(Util.GS("Checking for new iFolders: {0}"), domain.Name));
       else
        UpdateStatus(Util.GS("Checking for new iFolders..."));
      }
      else
      {
       UpdateStatus(string.Format(Util.GS(
       "Synchronizing: {0}"), args.Name));
      }
      break;
     }
     case Simias.Client.Event.Action.StopSync:
     {
      if(SyncBar != null)
       SyncBar.Hide();
      UpdateStatus(Util.GS("Idle..."));
     this.RevertMenuItem.Sensitive = true;
      this.RemoveiFolderButton.Sensitive = true;
      if (args.Name != null )
      {
                  DomainInformation domain = domainController.GetDomain(args.ID);
        UpdateQoutaData(domain);
      }
      break;
     }
        }
 }
Esempio n. 7
0
 private void OniFolderSyncEvent(object o, CollectionSyncEventArgs args)
 {
     if (args == null || args.ID == null || args.Name == null)
     return;
        switch(args.Action)
        {
     case Simias.Client.Event.Action.StartLocalSync:
      if (args.Name != null && args.Name.StartsWith("POBox:"))
      {
       DomainController domainController = DomainController.GetDomainController();
       DomainInformation domain = domainController.GetPOBoxDomain(args.ID);
       if (domain != null)
        LogMessage(string.Format(Util.GS("Checking for new iFolders: {0}"), domain.Name));
       else
        LogMessage(Util.GS("Checking for new iFolders..."));
      }
      else
      {
       LogMessage(string.Format(Util.GS(
        "Checking for changes: {0}"), args.Name));
      }
      break;
     case Simias.Client.Event.Action.StartSync:
     {
      if (args.Name != null && !args.Name.StartsWith("POBox:"))
      {
       LogMessage(string.Format(Util.GS(
        "Started synchronization: {0}"), args.Name));
      }
      break;
     }
     case Simias.Client.Event.Action.StopSync:
     {
      if (args.Name != null && args.Name.StartsWith("POBox:"))
      {
       DomainController domainController = DomainController.GetDomainController();
       DomainInformation domain = domainController.GetPOBoxDomain(args.ID);
       if (domain != null)
        LogMessage(string.Format(Util.GS("Done checking for new iFolders: {0}"), domain.Name));
       else
        LogMessage(Util.GS("Done checking for new iFolders"));
      }
      else
      {
       LogMessage(string.Format(Util.GS(
        "Finished synchronization: {0}"), args.Name));
      }
      break;
     }
        }
 }
 private void OniFolderSyncEvent(object o, CollectionSyncEventArgs args)
 {
     if (args == null || args.ID == null || args.Name == null)
     return;
        switch(args.Action)
        {
     case Simias.Client.Event.Action.StartSync:
     {
      collectionSynchronizing = args.ID;
      break;
     }
     case Simias.Client.Event.Action.StopSync:
     {
      currentIconAnimationDirection = 0;
       if (collectionSynchronizing != null)
       {
        iFolderHolder ifHolder = ifdata.GetiFolder(collectionSynchronizing);
        if (ifHolder != null)
        {
     if (synchronizationErrors.ContainsKey(ifHolder.iFolder.ID))
     {
      Hashtable collectionSyncErrors = (Hashtable)synchronizationErrors[ifHolder.iFolder.ID];
      ICollection errors = collectionSyncErrors.Keys;
      Debug.PrintLine(String.Format("Number of errors: {0}", errors.Count));
      ArrayList keysToClear = new ArrayList();
      bool showErrorBaloon = false;
      bool showGenericBaloon = true;
      foreach(SyncStatus syncStatusKey in errors)
      {
       string errMsg = (string) collectionSyncErrors[syncStatusKey];
       if (errMsg != null && errMsg.Length > 0)
       {
     showErrorBaloon = true;
     NotifyWindow notifyWin = new NotifyWindow(
     tIcon, string.Format(Util.GS("Incomplete Synchronization: {0}"), ifHolder.iFolder.Name),
     errMsg,
     Gtk.MessageType.Warning, 5000);
     notifyWin.LinkClicked +=
     new LinkClickedEventHandler(OnNotifyWindowLinkClicked);
     notifyWin.ShowAll();
     showGenericBaloon = false;
     keysToClear.Add(syncStatusKey);
       }
      }
      if( showErrorBaloon == true)
      {
       if( showGenericBaloon )
       {
        NotifyWindow notifyWin = new NotifyWindow(
        tIcon, string.Format(Util.GS("Incomplete Synchronization: {0}"), ifHolder.iFolder.Name),
        Util.GS("Synchronization log contains the information regarding the files that are not synchronized"),
        Gtk.MessageType.Warning, 5000);
        notifyWin.LinkClicked +=
        new LinkClickedEventHandler(OnNotifyWindowLinkClicked);
        notifyWin.ShowAll();
       }
      }
      foreach(SyncStatus syncStatusKey in keysToClear)
      {
       collectionSyncErrors.Remove( syncStatusKey);
      }
      Debug.PrintLine(String.Format("After removing keys count: {0}", collectionSyncErrors.Count));
     }
        }
       }
      collectionSynchronizing = null;
      break;
     }
        }
        gAppIcon.Pixbuf = RunningPixbuf;
 }
Esempio n. 9
0
        /// <summary>
        /// On iFolder Sync Event
        /// </summary>
        private void OniFolderSyncEvent(object o, CollectionSyncEventArgs args)
        {
            if (args == null || args.ID == null || args.Name == null)
            {
                return;                 // Prevent a null object exception
            }
            switch (args.Action)
            {
            case Simias.Client.Event.Action.StartLocalSync:
                if (args.Name != null && args.Name.StartsWith("POBox:"))
                {
                    DomainController  domainController = DomainController.GetDomainController();
                    DomainInformation domain           = domainController.GetPOBoxDomain(args.ID);
                    if (domain != null)
                    {
                        LogMessage(string.Format(Util.GS("Checking for new iFolders: {0}"), domain.Name));
                    }
                    else
                    {
                        LogMessage(Util.GS("Checking for new iFolders..."));
                    }
                }
                else
                {
                    LogMessage(string.Format(Util.GS(
                                                 "Checking for changes: {0}"), args.Name));
                }
                break;

            case Simias.Client.Event.Action.StartSync:
            {
                // We only need to add a log entry for the PO Box in the
                // StartLocalSync case.  Moved that code there.
                if (args.Name != null && !args.Name.StartsWith("POBox:"))
                {
                    LogMessage(string.Format(Util.GS(
                                                 "Started synchronization: {0}"), args.Name));
                }
                break;
            }

            case Simias.Client.Event.Action.StopSync:
            {
                if (args.Name != null && args.Name.StartsWith("POBox:"))
                {
                    DomainController  domainController = DomainController.GetDomainController();
                    DomainInformation domain           = domainController.GetPOBoxDomain(args.ID);
                    if (domain != null)
                    {
                        LogMessage(string.Format(Util.GS("Done checking for new iFolders: {0}"), domain.Name));
                    }
                    else
                    {
                        LogMessage(Util.GS("Done checking for new iFolders"));
                    }
                }
                else
                {
                    LogMessage(string.Format(Util.GS(
                                                 "Finished synchronization: {0}"), args.Name));
                }
                break;
            }

            case Simias.Client.Event.Action.DisabledSync:
            {
                if (args.Name != null)
                {
                    LogMessage(string.Format(Util.GS("Synchronization Disable for: {0}"), args.Name));
                }
                break;
            }
            }
        }
Esempio n. 10
0
 private void syncCollection(CollectionSyncEventArgs syncEventArgs)
 {
     try
        {
     progressBar1.Visible = false;
     switch (syncEventArgs.Action)
     {
      case Action.StartLocalSync:
      {
       if (!syncEventArgs.Name.StartsWith("POBox:"))
       {
        statusBar1.Text = string.Format(resourceManager.GetString("localSync"), syncEventArgs.Name);
        lock (ht)
        {
     ListViewItem lvi = (ListViewItem)ht[syncEventArgs.ID];
     if (lvi != null)
     {
      ((iFolderObject)lvi.Tag).iFolderState = iFolderState.SynchronizingLocal;
      lvi.SubItems[2].Text = resourceManager.GetString("preSync");
     }
        }
       }
       break;
      }
      case Action.StartSync:
      {
       if (syncEventArgs.Name.StartsWith("POBox:"))
       {
        statusBar1.Text = resourceManager.GetString("checkingForiFolders");
       }
       else
       {
        statusBar1.Text = string.Format(resourceManager.GetString("synciFolder"), syncEventArgs.Name);
        lock (ht)
        {
     ListViewItem lvi = (ListViewItem)ht[syncEventArgs.ID];
     if (lvi != null)
     {
      startSync = true;
      ((iFolderObject)lvi.Tag).iFolderState = iFolderState.Synchronizing;
      lvi.SubItems[2].Text = resourceManager.GetString("statusSyncing");
     }
        }
       }
       break;
      }
      case Action.StopSync:
      {
       lock(ht)
       {
        ListViewItem lvi = (ListViewItem)ht[syncEventArgs.ID];
        if (lvi != null)
        {
     try
     {
      SyncSize syncSize = ifWebService.CalculateSyncSize(syncEventArgs.ID);
      objectsToSync = syncSize.SyncNodeCount;
     }
     catch {}
     if (objectsToSync == 0)
     {
      iFolderObject ifolderObject = (iFolderObject)lvi.Tag;
      if (syncEventArgs.Connected)
      {
       ifolderObject.iFolderState = iFolderState.Normal;
      }
      else
      {
       ifolderObject.iFolderState = iFolderState.Disconnected;
      }
      int imageIndex;
      lvi.SubItems[2].Text = stateToString(ifolderObject, out imageIndex);
     }
     else
     {
      lvi.SubItems[2].Text = string.Format(resourceManager.GetString("statusSyncItemsFailed"), objectsToSync);
      ((iFolderObject)lvi.Tag).iFolderState = iFolderState.FailedSync;
     }
        }
        objectsToSync = 0;
       }
       statusBar1.Text = resourceManager.GetString("statusBar1.Text");
       if (initialConnect)
       {
        initialConnect = false;
        updateEnterpriseTimer.Start();
       }
       break;
      }
     }
        }
        catch {}
 }
Esempio n. 11
0
 private void OniFolderSyncEvent(object o, CollectionSyncEventArgs args)
 {
     if (args == null || args.ID == null || args.Name == null)
     return;
        TreeIter iter = TreeIter.Zero;
        iFolderHolder ifHolder = null;
        if (ifolderIters.ContainsKey(args.ID))
        {
     iter = (TreeIter)ifolderIters[args.ID];
     ifHolder = (iFolderHolder)iFolderListStore.GetValue(iter, 0);
        }
        if (ifHolder == null) return;
        switch(args.Action)
        {
     case Simias.Client.Event.Action.StartLocalSync:
      ifHolder.State = iFolderState.SynchronizingLocal;
      break;
     case Simias.Client.Event.Action.StartSync:
      startingSync = true;
      ifHolder.State = iFolderState.Synchronizing;
      break;
     case Simias.Client.Event.Action.StopSync:
      try
      {
       ReadiFolder(args.ID);
       SyncSize syncSize = ifws.CalculateSyncSize(args.ID);
       objectsToSync = syncSize.SyncNodeCount;
       ifHolder.ObjectsToSync = objectsToSync;
      }
      catch
      {}
      if (ifHolder.ObjectsToSync > 0)
       ifHolder.State = iFolderState.Normal;
      else
      {
       if (args.Connected)
        ifHolder.State = iFolderState.Normal;
       else
        ifHolder.State = iFolderState.Disconnected;
      }
      objectsToSync = 0;
      break;
     default:
      break;
        }
        TreePath path = iFolderListStore.GetPath(iter);
        if (path != null)
     iFolderListStore.EmitRowChanged(path, iter);
        else
        {
     Console.WriteLine("*** SOMETHING WENT BAD IN iFolderData.OniFolderSyncEvent() ***");
        }
 }
Esempio n. 12
0
 private void OniFolderSyncEvent(object o, CollectionSyncEventArgs args)
 {
     if (args == null || args.ID == null || args.Name == null)
     return;
        switch(args.Action)
        {
     case Simias.Client.Event.Action.StartSync:
     {
      bCollectionIsSynchronizing = true;
      collectionSynchronizing = args.ID;
      break;
     }
     case Simias.Client.Event.Action.StopSync:
     {
      bCollectionIsSynchronizing = false;
      currentIconAnimationDirection = 0;
      gAppIcon.Pixbuf = RunningPixbuf;
       if (collectionSynchronizing != null)
       {
        iFolderHolder ifHolder = ifdata.GetiFolder(collectionSynchronizing);
        if (ifHolder != null)
        {
     if (synchronizationErrors.ContainsKey(ifHolder.iFolder.ID))
     {
      Hashtable collectionSyncErrors = (Hashtable)synchronizationErrors[ifHolder.iFolder.ID];
      ICollection errors = collectionSyncErrors.Keys;
      ArrayList keysToClear = new ArrayList();
      foreach(SyncStatus syncStatusKey in errors)
      {
       string errMsg = (string) collectionSyncErrors[syncStatusKey];
       if (errMsg != null && errMsg.Length > 0)
       {
        NotifyWindow notifyWin = new NotifyWindow(
     tIcon, string.Format(Util.GS("Incomplete Synchronization: {0}"), ifHolder.iFolder.Name),
     errMsg,
     Gtk.MessageType.Warning, 10000);
        notifyWin.LinkClicked +=
     new LinkClickedEventHandler(OnNotifyWindowLinkClicked);
        notifyWin.ShowAll();
        keysToClear.Add(syncStatusKey);
       }
      }
      foreach(SyncStatus syncStatusKey in keysToClear)
      {
       collectionSyncErrors[syncStatusKey] = "";
      }
     }
        }
       }
      collectionSynchronizing = null;
      break;
     }
        }
        try
        {
     iFolderWindow ifwin = Util.GetiFolderWindow();
     if(ifwin != null)
      ifwin.HandleSyncEvent(args);
     LogWindow logwin = Util.GetLogWindow(simiasManager);
     if(logwin != null)
      logwin.HandleSyncEvent(args);
        }
        catch {}
 }
Esempio n. 13
0
        private void SimiasEventSyncCollectionHandler(SimiasEventArgs args)
        {
            try
            {
                if (args == null)
                {
                    Debug.PrintLine("SimiasEventSyncCollectionHandler received a null SimiasEventArgs");
                    return;
                }
                CollectionSyncEventArgs syncEventArgs =
                    args as CollectionSyncEventArgs;
                if (syncEventArgs == null || syncEventArgs.Name == null || syncEventArgs.ID == null)
                {
                    Debug.PrintLine("SimiasEventSyncCollectionHandler() Name, ID, Action, or Connected is null");
                    return;                     // Prevent a null object
                }

                if (ifdata.IsiFolder(syncEventArgs.ID))
                {
                    iFolderHolder ifHolder =
                        ifdata.GetiFolder(syncEventArgs.ID);

                    if (ifHolder != null)
                    {
                        switch (syncEventArgs.Action)
                        {
                        case Simias.Client.Event.Action.StartLocalSync:
                            ifHolder.State = iFolderState.SynchronizingLocal;
                            break;

                        case Simias.Client.Event.Action.StartSync:
                            ifHolder.State = iFolderState.Synchronizing;
                            break;

                        case Simias.Client.Event.Action.StopSync:
                            try
                            {
                                SyncSize syncSize = ifws.CalculateSyncSize(syncEventArgs.ID);
                                ifHolder.ObjectsToSync = syncSize.SyncNodeCount;
                            }
                            catch
                            {}

                            if (ifHolder.ObjectsToSync > 0)
                            {
                                ifHolder.State = iFolderState.Normal;
                            }
                            else
                            {
                                if (syncEventArgs.Connected || ifHolder.iFolder.Role == "Master")
                                {
                                    ifHolder.State = iFolderState.Normal;
                                }
                                else
                                {
                                    ifHolder.State = iFolderState.Disconnected;
                                }
                            }
                            break;
                        }

                        if ((ifHolder.iFolder.UnManagedPath == null) ||
                            (ifHolder.iFolder.UnManagedPath.Length == 0))
                        {
                            // Because the iFolder has no path
                            // re-read the iFolder and fire a changed event
                            ifHolder = ifdata.ReadiFolder(syncEventArgs.ID);
                            if (ifHolder != null)
                            {
                                lock (NodeEventQueue)
                                {
                                    NodeEventQueue.Enqueue(new SimiasEvent(
                                                               ifHolder.iFolder.ID, null,
                                                               null, SimiasEventType.ChangediFolder));
                                    SimiasEventFired.WakeupMain();
                                }
                            }
                        }
                    }
                }

                // pass the sync event on to the client
                lock (SyncEventQueue)
                {
                    SyncEventQueue.Enqueue(syncEventArgs);
                    SyncEventFired.WakeupMain();
                }
            }
            catch (Exception e)
            {
                if (printErrors)
                {
                    Debug.PrintLine("Exception in SimiasEventSyncCollectionHandler(): " + e.Message);
                    Debug.PrintLine(e.StackTrace);
                }
            }
        }
Esempio n. 14
0
 private void syncCollection(CollectionSyncEventArgs syncEventArgs)
 {
     try
     {
         string message = null;
         switch (syncEventArgs.Action)
         {
             case Action.StartLocalSync:
                 if (!syncEventArgs.Name.StartsWith("POBox:"))
                 {
                     message = string.Format(resourceManager.GetString("localSync"), syncEventArgs.Name);
                 }
                 break;
             case Action.StartSync:
                 {
                     currentSyncCollectionName = syncEventArgs.Name;
                     errorSyncingCurrentCollection = false;
                     if (syncEventArgs.Name.StartsWith("POBox:"))
                     {
                         message = string.Format(resourceManager.GetString("checkingForiFolders"), preferences.GetDomainName(syncEventArgs.ID));
                     }
                     else
                     {
                         message = string.Format(resourceManager.GetString("synciFolder"), syncEventArgs.Name);
                     }
                     break;
                 }
             case Action.StopSync:
                 {
                     syncAnimateTimer.Stop();
                     shellNotifyIcon.Icon = trayIcon;
                     shellNotifyIcon.Text = resourceManager.GetString("iFolderServices");
                     if (initialSyncCollections.Contains(syncEventArgs.ID) && syncEventArgs.Connected)
                     {
                         initialSyncCollections.Remove(syncEventArgs.ID);
                     }
                     if (syncEventArgs.Name.StartsWith("POBox:"))
                     {
                         message = string.Format(resourceManager.GetString("doneCheckingForiFolders"), preferences.GetDomainName(syncEventArgs.ID));
                     }
                     else
                     {
                         message = string.Format(resourceManager.GetString("syncComplete"), syncEventArgs.Name);
                         if (errorSyncingCurrentCollection == true && ifWebService.CheckiFolder(syncEventArgs.ID) != true)
                         {
                         }
                     }
                     if (errorSyncingCurrentCollection == true)
                     {
                         string title = string.Format(resourceManager.GetString("quotaFailureTitle"), currentSyncCollectionName);
                         notifyType = NotifyType.SyncError;
                         infolog_Show();
                     }
                     break;
                 }
         }
         syncLog.AddMessageToLog(syncEventArgs.TimeStamp, message);
     }
     catch { }
 }
Esempio n. 15
0
 private void OniFolderSyncEvent(object o, CollectionSyncEventArgs args)
 {
     if (args == null || args.ID == null || args.Name == null)
     return;
        TreeIter iter = TreeIter.Zero;
        iFolderHolder ifHolder = null;
        if (ifolderIters.ContainsKey(args.ID))
        {
     iter = (TreeIter)ifolderIters[args.ID];
     ifHolder = (iFolderHolder)iFolderListStore.GetValue(iter, 0);
        }
        if (ifHolder == null) return;
        switch(args.Action)
        {
     case Simias.Client.Event.Action.StartLocalSync:
      ifHolder.State = iFolderState.SynchronizingLocal;
      break;
     case Simias.Client.Event.Action.StartSync:
      startingSync = true;
      bFileSyncFailed = false;
      ifHolder.State = iFolderState.Synchronizing;
      break;
     case Simias.Client.Event.Action.StopSync:
      try
      {
       ReadiFolder(args.ID);
       SyncSize syncSize = ifws.CalculateSyncSize(args.ID);
       objectsToSync = syncSize.SyncNodeCount;
       ifHolder.ObjectsToSync = objectsToSync;
      }
      catch
      {}
      if (ifHolder.ObjectsToSync > 0)
      {
       if (bFileSyncFailed)
        ifHolder.State = iFolderState.FailedSync;
       else
        ifHolder.State = iFolderState.Normal;
      }
      else
      {
       if (args.Connected || ifHolder.iFolder.Role == "Master")
        ifHolder.State = iFolderState.Normal;
       else
        ifHolder.State = iFolderState.Disconnected;
      }
      objectsToSync = 0;
      break;
     default:
      break;
        }
        TreePath path = iFolderListStore.GetPath(iter);
        if (path != null)
        {
      iFolderChangedHandler changedHandler =
        new iFolderChangedHandler( path, iter, iFolderListStore);
      GLib.Idle.Add(changedHandler.IdleHandler);
        }
 }
Esempio n. 16
0
 public void HandleSyncEvent(CollectionSyncEventArgs args)
 {
     switch(args.Action)
        {
     case Simias.Client.Event.Action.StartLocalSync:
     {
      if (args.Name != null && args.Name.StartsWith("POBox:"))
      {
       DomainInformation domain = domainController.GetPOBoxDomain(args.ID);
       if (domain != null)
        UpdateStatus(string.Format(Util.GS("Checking for new iFolders: {0}"), domain.Name));
       else
        UpdateStatus(Util.GS("Checking for new iFolders..."));
      }
      else
      {
       UpdateStatus(string.Format(Util.GS(
      "Checking for changes: {0}"), args.Name));
      }
      break;
     }
     case Simias.Client.Event.Action.StartSync:
     {
      if (args.Name != null && args.Name.StartsWith("POBox:"))
      {
       DomainInformation domain = domainController.GetPOBoxDomain(args.ID);
       if (domain != null)
        UpdateStatus(string.Format(Util.GS("Checking for new iFolders: {0}"), domain.Name));
       else
        UpdateStatus(Util.GS("Checking for new iFolders..."));
      }
      else
      {
       UpdateStatus(string.Format(Util.GS(
       "Synchronizing: {0}"), args.Name));
      }
      break;
     }
     case Simias.Client.Event.Action.StopSync:
     {
      if(SyncBar != null)
       SyncBar.Hide();
      UpdateStatus(Util.GS("Idle..."));
      break;
     }
        }
 }
Esempio n. 17
0
 private void syncCollection(CollectionSyncEventArgs syncEventArgs)
 {
     try
        {
     progressBar1.Visible = false;
     switch (syncEventArgs.Action)
     {
      case Action.StartLocalSync:
      {
                 if (!syncEventArgs.Name.StartsWith("POBox:"))
       {
        statusBar1.Text = string.Format(resourceManager.GetString("localSync"), syncEventArgs.Name);
        lock (ht)
        {
     TileListViewItem tlvi = (TileListViewItem)ht[syncEventArgs.ID];
     if (tlvi != null)
     {
      iFolderObject ifolderObject = (iFolderObject)tlvi.Tag;
      ifolderObject.iFolderState = iFolderState.SynchronizingLocal;
      int imageIndex;
      tlvi.Status = getItemState( ifolderObject, 0, out imageIndex );
      tlvi.ImageIndex = imageIndex;
     }
        }
       }
       break;
      }
      case Action.StartSync:
      {
                 this.revert.Enabled = false;
                 this.menuRevert.Enabled = false;
                 this.menuActionRevert.Enabled = false;
       if (syncEventArgs.Name.StartsWith("POBox:"))
       {
        statusBar1.Text = resourceManager.GetString("checkingForiFolders");
       }
       else
       {
        statusBar1.Text = string.Format(resourceManager.GetString("synciFolder"), syncEventArgs.Name);
        lock (ht)
        {
     TileListViewItem tlvi = (TileListViewItem)ht[syncEventArgs.ID];
     if (tlvi != null)
     {
      startSync = true;
      iFolderObject ifolderObject = (iFolderObject)tlvi.Tag;
      ifolderObject.iFolderState = iFolderState.Synchronizing;
      tlvi.ItemLocation = ifolderObject.iFolderWeb.UnManagedPath;
      int imageIndex;
      tlvi.Status = getItemState( ifolderObject, 0, out imageIndex );
      tlvi.ImageIndex = imageIndex;
     }
        }
       }
       break;
      }
      case Action.StopSync:
      {
       lock(ht)
       {
        TileListViewItem tlvi = (TileListViewItem)ht[syncEventArgs.ID];
        if (tlvi != null)
        {
     iFolderObject ifolderObject = (iFolderObject)tlvi.Tag;
     uint objectsToSync2 = 0;
     try
     {
      SyncSize syncSize = ifWebService.CalculateSyncSize(syncEventArgs.ID);
      objectsToSync2 = syncSize.SyncNodeCount;
     }
     catch {}
     if (objectsToSync2 == 0)
     {
       ifolderObject.iFolderState = syncEventArgs.Connected ? iFolderState.Normal : iFolderState.Disconnected;
       ifolderObject.iFolderState = syncEventArgs.Yielded ? iFolderState.Synchronizing : ifolderObject.iFolderState;
     }
     else
     {
      ifolderObject.iFolderState = iFolderState.FailedSync;
     }
     int imageIndex;
     tlvi.Status = getItemState( ifolderObject, objectsToSync2, out imageIndex );
     tlvi.ImageIndex = imageIndex;
     tlvi.Tag = ifolderObject;
        }
        objectsToSync = 0;
       }
       statusBar1.Text = resourceManager.GetString("statusBar1.Text");
       if (initialConnect)
       {
        initialConnect = false;
        updateEnterpriseTimer.Start();
       }
                 this.revert.Enabled = true;
                 this.menuRevert.Enabled = true;
                 this.menuActionRevert.Enabled = true;
       break;
      }
     }
        }
        catch {}
 }