/// <summary> /// Adds the sync menu item. /// </summary> /// <param name="item">The item.</param> public void AddSyncMenuItem(Outlook.OlItemType oItemType) { SyncMenuItem menuItem = CreateSyncMenuItem(oItemType); if (menuItem != null) { _vistaMenuCtrl.Items.Add(menuItem); _vistaMenuCtrl.Invalidate(); } }
protected virtual void DisableEnableSyncItem(bool disableEnable, SyncMenuItem menuItem) { if (menuItem == null) throw new ArgumentNullException("menuItem"); if (menuItem.Disabled != disableEnable) { menuItem.Disabled = disableEnable; } }
protected virtual void vistaMenuCtrl_itemclick(OutlookAddin.OutlookUI.VistaMenuControl.VistaMenuItemClickArgs args) { Outlook.OlItemType oItemType = (Outlook.OlItemType)args.Item.ItemTag; SyncMenuItem menuItem = FindSyncMenuItem(oItemType); //Избегаем повторного нажатия if (menuItem != null && menuItem.CurrentSyncStatus != eSyncStatus.InProgress) { SyncItemEventArgs syncItemArgs = new SyncItemEventArgs(oItemType); OnProcessSync(syncItemArgs); } }
/// <summary> /// THRs the update sync item status. /// </summary> /// <param name="oItemType">Type of the o item.</param> /// <param name="args">The <see cref="Microsoft.Synchronization.SyncStagedProgressEventArgs"/> instance containing the event data.</param> /// <returns></returns> public bool ThrUpdateSyncItemStatus(Outlook.OlItemType oItemType) { bool retVal = true; if (this.InvokeRequired) { Func <Outlook.OlItemType, bool> func = this.ThrUpdateSyncItemStatus; retVal = (bool)this.Invoke(func, oItemType); } else { SyncMenuItem item = FindSyncMenuItem(oItemType); if (item == null) { throw new Exception("Unable to find menuItem"); } int percent = 0; string syncState = "unknow"; string reportingProvider = "unknow"; uint totalWork = 0; uint completedWork = 0; if (CurrentSyncStagedProgress != null) { totalWork = CurrentSyncStagedProgress.TotalWork; completedWork = CurrentSyncStagedProgress.CompletedWork; percent = totalWork == 0 ? 0 : (int)((double)completedWork / (double)totalWork * 100); reportingProvider = CurrentSyncStagedProgress.ReportingProvider.ToString(); } if (CurrentSyncSessionStage != null) { syncState = CurrentSyncSessionStage.NewState.ToString(); } //item.Description = FormatingStatus(Resources.SyncMenuItem_ProcessStatus_Pattern1, // new object[] { syncState, reportingProvider, percent }); item.Description = FormatingStatus(Resources.FormSyncMenuItem_ProcessStatus_Pattern2, new object[] { syncState, reportingProvider, completedWork, totalWork }); } return(retVal); }
/// <summary> /// Creates the sync menu item. /// </summary> /// <param name="oItemType">Type of the o item.</param> /// <returns></returns> private SyncMenuItem CreateSyncMenuItem(Outlook.OlItemType oItemType) { SyncMenuItem retVal = new SyncMenuItem(_vistaMenuCtrl, this.imageList1); switch (oItemType) { case Outlook.OlItemType.olAppointmentItem: retVal.RegisterStatusImages(eSyncStatus.InProgress, (int)eSyncMenuItem_Icon.Calendar_sync, (int)eSyncMenuItem_Icon.Calendar_sync_1, (int)eSyncMenuItem_Icon.Calendar_sync_2, (int)eSyncMenuItem_Icon.Calendar_sync_3); retVal.RegisterStatusImages(eSyncStatus.Failed, (int)eSyncMenuItem_Icon.Calendar_failed); retVal.RegisterStatusImages(eSyncStatus.Canceled, (int)eSyncMenuItem_Icon.Calendar_canceled); retVal.RegisterStatusImages(eSyncStatus.ReadyProgress, (int)eSyncMenuItem_Icon.Calendar_sync, (int)eSyncMenuItem_Icon.Calendar_sync_1, (int)eSyncMenuItem_Icon.Calendar_sync_2, (int)eSyncMenuItem_Icon.Calendar_sync_3); retVal.RegisterStatusImages(eSyncStatus.Ready, (int)eSyncMenuItem_Icon.Calendar_ready); retVal.RegisterStatusImages(eSyncStatus.Ok, (int)eSyncMenuItem_Icon.Calendar_ok); retVal.RegisterStatusImages(eSyncStatus.Unknow, (int)eSyncMenuItem_Icon.Calendar_unknow); retVal.RegisterStatusImages(eSyncStatus.SkipedChangesDetected, (int)eSyncMenuItem_Icon.Calendar_canceled); retVal.ItemTag = oItemType; retVal.Text = Resources.FormSyncMenuItem_TextCalendar; break; case Outlook.OlItemType.olContactItem: retVal.RegisterStatusImages(eSyncStatus.InProgress, (int)eSyncMenuItem_Icon.Contact_sync, (int)eSyncMenuItem_Icon.Contact_sync_1, (int)eSyncMenuItem_Icon.Contact_sync_2, (int)eSyncMenuItem_Icon.Contact_sync_3); retVal.RegisterStatusImages(eSyncStatus.Failed, (int)eSyncMenuItem_Icon.Contact_failed); retVal.RegisterStatusImages(eSyncStatus.Canceled, (int)eSyncMenuItem_Icon.Contact_canceled); retVal.RegisterStatusImages(eSyncStatus.ReadyProgress, (int)eSyncMenuItem_Icon.Contact_sync, (int)eSyncMenuItem_Icon.Contact_sync_1, (int)eSyncMenuItem_Icon.Contact_sync_2, (int)eSyncMenuItem_Icon.Contact_sync_3); retVal.RegisterStatusImages(eSyncStatus.Ready, (int)eSyncMenuItem_Icon.Contact_ok); retVal.RegisterStatusImages(eSyncStatus.Unknow, (int)eSyncMenuItem_Icon.Contact_unknow); retVal.ItemTag = oItemType; retVal.Text = Resources.FormSyncMenuItem_TextContact; break; case Outlook.OlItemType.olTaskItem: retVal.RegisterStatusImages(eSyncStatus.InProgress, (int)eSyncMenuItem_Icon.Task_sync, (int)eSyncMenuItem_Icon.Task_sync_1, (int)eSyncMenuItem_Icon.Task_sync_2, (int)eSyncMenuItem_Icon.Task_sync_3); retVal.RegisterStatusImages(eSyncStatus.Failed, (int)eSyncMenuItem_Icon.Task_failed); retVal.RegisterStatusImages(eSyncStatus.Canceled, (int)eSyncMenuItem_Icon.Task_canceled); retVal.RegisterStatusImages(eSyncStatus.ReadyProgress, (int)eSyncMenuItem_Icon.Task_sync, (int)eSyncMenuItem_Icon.Task_sync_1, (int)eSyncMenuItem_Icon.Task_sync_2, (int)eSyncMenuItem_Icon.Task_sync_3); retVal.RegisterStatusImages(eSyncStatus.Ready, (int)eSyncMenuItem_Icon.Task_ready); retVal.RegisterStatusImages(eSyncStatus.Unknow, (int)eSyncMenuItem_Icon.Task_unknow); retVal.ItemTag = oItemType; retVal.Text = Resources.FormSyncMenuItem_TextTask; break; case Outlook.OlItemType.olNoteItem: retVal.RegisterStatusImages(eSyncStatus.InProgress, (int)eSyncMenuItem_Icon.Note_sync, (int)eSyncMenuItem_Icon.Note_sync_1, (int)eSyncMenuItem_Icon.Note_sync_2, (int)eSyncMenuItem_Icon.Note_sync_3); retVal.RegisterStatusImages(eSyncStatus.Failed, (int)eSyncMenuItem_Icon.Note_failed); retVal.RegisterStatusImages(eSyncStatus.Canceled, (int)eSyncMenuItem_Icon.Note_canceled); retVal.RegisterStatusImages(eSyncStatus.ReadyProgress, (int)eSyncMenuItem_Icon.Note_sync, (int)eSyncMenuItem_Icon.Note_sync_1, (int)eSyncMenuItem_Icon.Note_sync_2, (int)eSyncMenuItem_Icon.Note_sync_3); retVal.RegisterStatusImages(eSyncStatus.Ready, (int)eSyncMenuItem_Icon.Note_ok); retVal.RegisterStatusImages(eSyncStatus.Unknow, (int)eSyncMenuItem_Icon.Note_unknow); retVal.ItemTag = oItemType; retVal.Text = Resources.FormSyncMenuItem_TextNote; break; } if (retVal != null) { retVal.SelectionStartColor = Color.FromArgb(152, 193, 233); retVal.SelectionEndColor = Color.FromArgb(134, 186, 237); retVal.SelectionStartColorStart = Color.FromArgb(104, 169, 234); retVal.SelectionEndColorEnd = Color.FromArgb(169, 232, 255); retVal.InnerBorder = Color.FromArgb(254, 254, 254); retVal.OuterBorder = Color.FromArgb(231, 231, 231); retVal.CaptionFont = new Font("Tahoma", 10, FontStyle.Bold); retVal.ContentFont = new Font("Tahoma", 7); retVal.CaptionColor = Color.Black; retVal.ContentColor = Color.Black; } return retVal; }
/// <summary> /// Creates the sync menu item. /// </summary> /// <param name="oItemType">Type of the o item.</param> /// <returns></returns> private SyncMenuItem CreateSyncMenuItem(Outlook.OlItemType oItemType) { SyncMenuItem retVal = new SyncMenuItem(_vistaMenuCtrl, this.imageList1); switch (oItemType) { case Outlook.OlItemType.olAppointmentItem: retVal.RegisterStatusImages(eSyncStatus.InProgress, (int)eSyncMenuItem_Icon.Calendar_sync, (int)eSyncMenuItem_Icon.Calendar_sync_1, (int)eSyncMenuItem_Icon.Calendar_sync_2, (int)eSyncMenuItem_Icon.Calendar_sync_3); retVal.RegisterStatusImages(eSyncStatus.Failed, (int)eSyncMenuItem_Icon.Calendar_failed); retVal.RegisterStatusImages(eSyncStatus.Canceled, (int)eSyncMenuItem_Icon.Calendar_canceled); retVal.RegisterStatusImages(eSyncStatus.ReadyProgress, (int)eSyncMenuItem_Icon.Calendar_sync, (int)eSyncMenuItem_Icon.Calendar_sync_1, (int)eSyncMenuItem_Icon.Calendar_sync_2, (int)eSyncMenuItem_Icon.Calendar_sync_3); retVal.RegisterStatusImages(eSyncStatus.Ready, (int)eSyncMenuItem_Icon.Calendar_ready); retVal.RegisterStatusImages(eSyncStatus.Ok, (int)eSyncMenuItem_Icon.Calendar_ok); retVal.RegisterStatusImages(eSyncStatus.Unknow, (int)eSyncMenuItem_Icon.Calendar_unknow); retVal.RegisterStatusImages(eSyncStatus.SkipedChangesDetected, (int)eSyncMenuItem_Icon.Calendar_canceled); retVal.ItemTag = oItemType; retVal.Text = Resources.FormSyncMenuItem_TextCalendar; break; case Outlook.OlItemType.olContactItem: retVal.RegisterStatusImages(eSyncStatus.InProgress, (int)eSyncMenuItem_Icon.Contact_sync, (int)eSyncMenuItem_Icon.Contact_sync_1, (int)eSyncMenuItem_Icon.Contact_sync_2, (int)eSyncMenuItem_Icon.Contact_sync_3); retVal.RegisterStatusImages(eSyncStatus.Failed, (int)eSyncMenuItem_Icon.Contact_failed); retVal.RegisterStatusImages(eSyncStatus.Canceled, (int)eSyncMenuItem_Icon.Contact_canceled); retVal.RegisterStatusImages(eSyncStatus.ReadyProgress, (int)eSyncMenuItem_Icon.Contact_sync, (int)eSyncMenuItem_Icon.Contact_sync_1, (int)eSyncMenuItem_Icon.Contact_sync_2, (int)eSyncMenuItem_Icon.Contact_sync_3); retVal.RegisterStatusImages(eSyncStatus.Ready, (int)eSyncMenuItem_Icon.Contact_ok); retVal.RegisterStatusImages(eSyncStatus.Unknow, (int)eSyncMenuItem_Icon.Contact_unknow); retVal.ItemTag = oItemType; retVal.Text = Resources.FormSyncMenuItem_TextContact; break; case Outlook.OlItemType.olTaskItem: retVal.RegisterStatusImages(eSyncStatus.InProgress, (int)eSyncMenuItem_Icon.Task_sync, (int)eSyncMenuItem_Icon.Task_sync_1, (int)eSyncMenuItem_Icon.Task_sync_2, (int)eSyncMenuItem_Icon.Task_sync_3); retVal.RegisterStatusImages(eSyncStatus.Failed, (int)eSyncMenuItem_Icon.Task_failed); retVal.RegisterStatusImages(eSyncStatus.Canceled, (int)eSyncMenuItem_Icon.Task_canceled); retVal.RegisterStatusImages(eSyncStatus.ReadyProgress, (int)eSyncMenuItem_Icon.Task_sync, (int)eSyncMenuItem_Icon.Task_sync_1, (int)eSyncMenuItem_Icon.Task_sync_2, (int)eSyncMenuItem_Icon.Task_sync_3); retVal.RegisterStatusImages(eSyncStatus.Ready, (int)eSyncMenuItem_Icon.Task_ready); retVal.RegisterStatusImages(eSyncStatus.Unknow, (int)eSyncMenuItem_Icon.Task_unknow); retVal.ItemTag = oItemType; retVal.Text = Resources.FormSyncMenuItem_TextTask; break; case Outlook.OlItemType.olNoteItem: retVal.RegisterStatusImages(eSyncStatus.InProgress, (int)eSyncMenuItem_Icon.Note_sync, (int)eSyncMenuItem_Icon.Note_sync_1, (int)eSyncMenuItem_Icon.Note_sync_2, (int)eSyncMenuItem_Icon.Note_sync_3); retVal.RegisterStatusImages(eSyncStatus.Failed, (int)eSyncMenuItem_Icon.Note_failed); retVal.RegisterStatusImages(eSyncStatus.Canceled, (int)eSyncMenuItem_Icon.Note_canceled); retVal.RegisterStatusImages(eSyncStatus.ReadyProgress, (int)eSyncMenuItem_Icon.Note_sync, (int)eSyncMenuItem_Icon.Note_sync_1, (int)eSyncMenuItem_Icon.Note_sync_2, (int)eSyncMenuItem_Icon.Note_sync_3); retVal.RegisterStatusImages(eSyncStatus.Ready, (int)eSyncMenuItem_Icon.Note_ok); retVal.RegisterStatusImages(eSyncStatus.Unknow, (int)eSyncMenuItem_Icon.Note_unknow); retVal.ItemTag = oItemType; retVal.Text = Resources.FormSyncMenuItem_TextNote; break; } if (retVal != null) { retVal.SelectionStartColor = Color.FromArgb(152, 193, 233); retVal.SelectionEndColor = Color.FromArgb(134, 186, 237); retVal.SelectionStartColorStart = Color.FromArgb(104, 169, 234); retVal.SelectionEndColorEnd = Color.FromArgb(169, 232, 255); retVal.InnerBorder = Color.FromArgb(254, 254, 254); retVal.OuterBorder = Color.FromArgb(231, 231, 231); retVal.CaptionFont = new Font("Tahoma", 10, FontStyle.Bold); retVal.ContentFont = new Font("Tahoma", 7); retVal.CaptionColor = Color.Black; retVal.ContentColor = Color.Black; } return(retVal); }
/// <summary> /// Sets the sync item status. /// </summary> /// <param name="oItemType">Type of the o item.</param> /// <param name="status">The status.</param> public bool ThrSetSyncItemStatus(Outlook.OlItemType oItemType, SyncItemInfo syncInfo) { if (this.InvokeRequired) { Func <Outlook.OlItemType, SyncItemInfo, bool> func = this.ThrSetSyncItemStatus; this.Invoke(func, oItemType, syncInfo); } else { SyncMenuItem item = FindSyncMenuItem(oItemType); if (item != null) { //Если предыдущий статус был InProgress, снимаем disable c других пунктов if (item.CurrentSyncStatus == eSyncStatus.InProgress && syncInfo.Status != eSyncStatus.InProgress) { EnableAllSyncItems(x => x.CurrentSyncStatus != eSyncStatus.Unknow); } if (syncInfo.Status == eSyncStatus.InProgress) { //Делаем неактивнми остальные пункты меню синхронизации DisableAllSyncItems(x => (Outlook.OlItemType)x.ItemTag != oItemType); item.Description = Resources.FormSyncMenuItem_ProcessStatus; } else if (syncInfo.Status == eSyncStatus.Ready || syncInfo.Status == eSyncStatus.Ok) { if (syncInfo.LastSyncDate != DateTime.MinValue) { item.Description = FormatingStatus(Resources.FormSyncMenuItem_ReadyStatus_Pattern, new object[] { syncInfo.LastSyncDate }); } else { item.Description = Resources.FormSyncMenuItem_NotSyncStatus_Pattern; } } else if (syncInfo.Status == eSyncStatus.Failed) { item.Description = FormatingStatus(Resources.FormSyncmenuItem_FailStatus_Pattern, new object[] { syncInfo.ErrorDescr }); } else if (syncInfo.Status == eSyncStatus.SkipedChangesDetected) { item.Description = FormatingStatus(Resources.FormSyncMenuItem_SkippedItemPattern, new object[] { syncInfo.SkippedCount }); } else if (syncInfo.Status == eSyncStatus.Unknow) { //Disabling unknow status item.Description = Resources.FormSyncMenuItem_NotSyncStatus_Pattern; DisableSyncItem(oItemType); } //Устанавливаем новый статус item.CurrentSyncStatus = syncInfo.Status; item.AnimateStatusImg = false; switch (item.CurrentSyncStatus) { case eSyncStatus.InProgress: item.AnimateStatusImg = true; item.AnimateDuration = -1; break; case eSyncStatus.ReadyProgress: item.AnimateDuration = _onMouseHoverAnimateDuration; item.AnimateStatusImg = true; break; } } } return(true); }