/// <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); } }
/// <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)); } }
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 {} }
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; } } }
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 {} }
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; } } }
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; }
/// <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; } } }
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 {} }
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() ***"); } }
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 {} }
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); } } }
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 { } }
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); } }
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; } } }
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 {} }