コード例 #1
0
ファイル: SyncApplication.cs プロジェクト: 0anion0/IBN
        /// <summary>
        /// Возвращает объект настройки для соотв типа синхронизации
        /// </summary>
        /// <param name="oItemType">Type of the o item.</param>
        /// <returns></returns>
        public syncProviderSetting GetSyncProviderSettingByType(Outlook.OlItemType oItemType)
        {
            syncProviderSetting retVal = null;

            if (CurrentSettings == null)
            {
                throw new NullReferenceException("CurrentSetting");
            }

            switch (oItemType)
            {
            case Outlook.OlItemType.olAppointmentItem:
                retVal = CurrentSettings.CurrentSyncAppointentSetting;
                break;

            case Outlook.OlItemType.olContactItem:
                retVal = CurrentSettings.CurrentContactSetting;
                break;

            case Outlook.OlItemType.olNoteItem:
                retVal = null;
                break;

            case Outlook.OlItemType.olTaskItem:
                retVal = CurrentSettings.CurrentTaskSetting;
                break;
            }

            return(retVal);
        }
コード例 #2
0
        /// <summary>
        /// Creates the instance.
        /// </summary>
        /// <param name="appSetting">The app setting.</param>
        /// <param name="oItemType">Type of the o item.</param>
        /// <returns></returns>
        public static RemoteProviderProxy CreateInstance(syncAppSetting appSetting, Outlook.OlItemType oItemType)
        {
            RemoteProviderProxy retVal = null;
            NetworkCredential   cred   = new NetworkCredential();

            cred.UserName = appSetting.ibnPortalLogin;
            cred.Password = appSetting.ibnPortalPassword;
            SynchronizationService syncService = new SynchronizationService();

            //enable session
            syncService.CookieContainer = new System.Net.CookieContainer();

            string syncServiceUrl = appSetting.ibnPortalUrl;

            if (!syncServiceUrl.Contains(OutlookAddin.Resources.System_IbnSyncWebServicePath))
            {
                Uri        url        = new Uri(syncServiceUrl);
                UriBuilder uriBuilder = new UriBuilder();
                uriBuilder.Scheme = Uri.UriSchemeHttp;
                uriBuilder.Port   = url.Port;
                uriBuilder.Host   = url.Host;
                uriBuilder.Path   = url.AbsolutePath + OutlookAddin.Resources.System_IbnSyncWebServicePath;
                syncServiceUrl    = uriBuilder.ToString();
            }

            syncService.Url = syncServiceUrl;
            //Authentificate
            syncService.SetCredentials(cred);
            //Set sync provider
            syncService.SetProviderTypeForSyncSession((OutlookAddin.SyncService.eSyncProviderType)oItemType);
            retVal = new RemoteProviderProxy(syncService);


            return(retVal);
        }
コード例 #3
0
ファイル: FormSyncItem.cs プロジェクト: alex765022/IBN
 /// <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();
     }
 }
コード例 #4
0
ファイル: FormSyncItem.cs プロジェクト: alex765022/IBN
 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);
     }
 }
コード例 #5
0
ファイル: FormSyncItem.cs プロジェクト: 0anion0/IBN
 protected virtual void DisableEnableSyncItem(bool disableEnable, Outlook.OlItemType oItemType)
 {
     foreach (SyncMenuItem menuItem in MenuItems)
     {
         if (((Outlook.OlItemType)menuItem.ItemTag) == oItemType)
         {
             DisableEnableSyncItem(disableEnable, menuItem);
             break;
         }
     }
 }
コード例 #6
0
ファイル: SyncApplication.cs プロジェクト: 0anion0/IBN
        private KnowledgeSyncProvider GetLocalSyncProviderBySyncType(Outlook.OlItemType oItemType)
        {
            //return new KnowledgeSyncProvider[] { ClientOutlook.TestProvider.MyProviderFactory.CreateAProvider() };
            KnowledgeSyncProvider retVal = null;

            lock (_lockObject)
            {
                if (!_syncProviderCache.TryGetValue(oItemType, out retVal))
                {
                    retVal = AppointmentSyncProvider.CreateInstance(_settings.CurrentSyncAppointentSetting, _outlookApplication);
                    _syncProviderCache.Add(oItemType, retVal);
                }
            }
            //TODO: Add other types
            return(retVal);
        }
コード例 #7
0
ファイル: CtrlSyncItemSetting.cs プロジェクト: 0anion0/IBN
        public CtrlSyncItemSetting(ImageList imgList, Outlook.OlItemType oItemType)
        {
            InitializeComponent();

            SyncItemType = oItemType;
            _header      = new CtrlHeaderListItem(imgList);
            _header.Dock = DockStyle.Fill;
            this.pnlTop.Controls.Add(_header);

            this.imageList1 = imgList;
            AdditionalInitialize();
            _deltaSize  = this.pnlBottom.Height;
            this.Height = this.pnlTop.Height;

            this.pnlBottom.Paint += new PaintEventHandler(OnPaintExtendedPanel);
        }
コード例 #8
0
ファイル: FormSyncItem.cs プロジェクト: 0anion0/IBN
        /// <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);
        }
コード例 #9
0
        public CtrlSyncItem(Outlook.OlItemType itemType)
        {
            this.SetStyle(ControlStyles.AllPaintingInWmPaint |
                          ControlStyles.UserPaint |
                          ControlStyles.OptimizedDoubleBuffer, true);


            InitializeComponent();

            this.SyncItemType = itemType;

            this.SuspendLayout();
            _deltaSize          = this.panel2.Height;
            this.panel2.Visible = false;
            this.Height         = this.panel1.Height;
            this.ResumeLayout(false);

            HookAllEvents(this.panel1, false);
            HookAllEvents(this.panel2, false);
        }
コード例 #10
0
        /// <summary>
        /// Adds the folder item.
        /// </summary>
        /// <param name="oFolder">The o folder.</param>
        /// <param name="oItemType">Type of the o item.</param>
        /// <returns></returns>
        public OutlookItem AddFolderItem(Outlook.MAPIFolder oFolder, Outlook.OlItemType oItemType)
        {
            OutlookItem retVal = null;

            if (oFolder == null)
            {
                throw new ArgumentNullException("oFolder");
            }
            if (this.InvokeRequired)
            {
                Func <Outlook.MAPIFolder, Outlook.OlItemType, OutlookItem> func = AddFolderItem;
                retVal = this.Invoke(func, oFolder, oItemType) as OutlookItem;
            }
            else
            {
                object newItem = oFolder.Items.Add(oItemType);
                if (newItem != null)
                {
                    retVal = _factory.Create <OutlookItem>(newItem) as OutlookItem;
                }
            }
            return(retVal);
        }
コード例 #11
0
ファイル: OutlookApplication.cs プロジェクト: 0anion0/IBN
        /// <summary>
        /// Picks the outlook folder path.
        /// </summary>
        /// <param name="oApp">The o app.</param>
        /// <param name="oItemType">Type of the o item.</param>
        /// <returns></returns>
        public static string PickOutlookFolderPath(Outlook._Application oApp, Outlook.OlItemType oItemType)
        {
            string retVal = null;
            bool   correctFolderSelected = false;

            try
            {
                while (!correctFolderSelected)
                {
                    Outlook.NameSpace  oNameSpace  = oApp.GetNamespace("MAPI");
                    Outlook.MAPIFolder oMapiFolder = oNameSpace.PickFolder();
                    if (oMapiFolder.DefaultItemType != oItemType)
                    {
                        DebugAssistant.Log(DebugSeverity.Error | DebugSeverity.MessageBox,
                                           Resources.ERR_OUTLOOK_BAD_FOLDER_TYPE, oItemType);
                        continue;
                    }

                    correctFolderSelected = true;
                    retVal = oMapiFolder.Name;
                    while (oMapiFolder.Parent is Outlook.MAPIFolder)
                    {
                        oMapiFolder = (Outlook.MAPIFolder)oMapiFolder.Parent;
                        retVal      = string.Format("{0}/", oMapiFolder.Name) + retVal;
                    }
                    retVal = "//" + retVal;
                }
            }
            catch (Exception e)
            {
                DebugAssistant.Log(DebugSeverity.Debug, e.Message);
                DebugAssistant.Log(DebugSeverity.Debug | DebugSeverity.MessageBox, Resources.DBG_OUTLOOK_FOLDER_NOT_SELECTED);
            }

            return(retVal);
        }
コード例 #12
0
ファイル: FromSyncOptions.cs プロジェクト: alex765022/IBN
        private CtrlExtendedListItemBase CreateSyncItemSetting(Outlook.OlItemType oItemType)
        {
            CtrlSyncItemSetting retVal = null;

            switch (oItemType)
            {
            case Outlook.OlItemType.olAppointmentItem:
                retVal = new CtrlSyncItemSettingAppointment(this.imageList32);
                retVal.Header.RegisterStateImage(eSettingItem_State.Normal, (int)eMenuSyncItemSettings_Icon.Calendar);
                retVal.Header.RegisterStateImage(eSettingItem_State.Disabled, (int)eMenuSyncItemSettings_Icon.Calendar);
                retVal.Header.RegisterStateImage(eSettingItem_State.Hover, (int)eMenuSyncItemSettings_Icon.Calendar);
                retVal.Header.RegisterStateImage(eSettingItem_State.Selected, (int)eMenuSyncItemSettings_Icon.Calendar);
                retVal.Header.Caption = Resources.FormSyncMenuItem_TextCalendar;
                break;

            case Outlook.OlItemType.olContactItem:
                retVal = new CtrlSyncItemSettingContact(this.imageList32);
                retVal.Header.RegisterStateImage(eSettingItem_State.Normal, (int)eMenuSyncItemSettings_Icon.Contact);
                retVal.Header.RegisterStateImage(eSettingItem_State.Disabled, (int)eMenuSyncItemSettings_Icon.Contact);
                retVal.Header.RegisterStateImage(eSettingItem_State.Hover, (int)eMenuSyncItemSettings_Icon.Contact);
                retVal.Header.RegisterStateImage(eSettingItem_State.Selected, (int)eMenuSyncItemSettings_Icon.Contact);
                retVal.Header.Caption = Resources.FormSyncMenuItem_TextContact;
                break;

            case Outlook.OlItemType.olTaskItem:
                retVal = new CtrlSyncItemSettingTask(this.imageList32);
                retVal.Header.RegisterStateImage(eSettingItem_State.Normal, (int)eMenuSyncItemSettings_Icon.Task);
                retVal.Header.RegisterStateImage(eSettingItem_State.Disabled, (int)eMenuSyncItemSettings_Icon.Task);
                retVal.Header.RegisterStateImage(eSettingItem_State.Hover, (int)eMenuSyncItemSettings_Icon.Task);
                retVal.Header.RegisterStateImage(eSettingItem_State.Selected, (int)eMenuSyncItemSettings_Icon.Task);
                retVal.Header.Caption = Resources.FormSyncMenuItem_TextTask;
                break;
            }

            return(retVal);
        }
コード例 #13
0
ファイル: Definition.cs プロジェクト: 0anion0/IBN
 public SyncItemEventArgs(Outlook.OlItemType itemType)
 {
     oItemType = itemType;
 }
コード例 #14
0
 public static string GenerateReplicaStoreFileName(Outlook.OlItemType oItemType)
 {
     return("c:\\" + oItemType.ToString() + ".dat");
 }
コード例 #15
0
ファイル: OutlookFolder.cs プロジェクト: 0anion0/IBN
 /// <summary>
 /// Adds the item.
 /// </summary>
 /// <param name="oItemType">Type of the o item.</param>
 /// <returns></returns>
 public OutlookItem AddItem(Outlook.OlItemType oItemType)
 {
     return(base._outlookListener.AddFolderItem(_oFolder, oItemType));
 }
コード例 #16
0
ファイル: SyncApplication.cs プロジェクト: 0anion0/IBN
        /// <summary>
        /// Does the sync. Выполняется в другом потоке отличном от AddinModule
        /// </summary>
        /// <param name="oItemType">Type of the o item.</param>
        private void DoSync(Outlook.OlItemType oItemType)
        {
            //reset last error
            LastSyncErrorDescr = string.Empty;
            LastSyncErrorOccur = false;
            //reset skipped items
            _skippedItems.Clear();

            KnowledgeSyncProvider localProvider  = null;
            KnowledgeSyncProvider remoteProvider = null;

            CurrentProcessedSyncType = oItemType;
            try
            {
                remoteProvider = GetRemoteSyncProvidersBySyncType(oItemType);
                localProvider  = GetLocalSyncProviderBySyncType(oItemType);

                if (localProvider != null)
                {
                    //Create sync session
                    if (_syncAgent == null)
                    {
                        _syncAgent = new SyncOrchestrator();
                        //Subscribe sync framework events
                        SubscribeEvents(_syncAgent);
                    }

                    //ISyncProviderSetting providerSetting = localProvider.ProviderSetting;
                    ISyncProviderSetting providerSetting = localProvider as ISyncProviderSetting;
                    if (providerSetting != null)
                    {
                        SyncDirectionOrder       direction          = providerSetting.SyncDirectionOrderSetting;
                        ConflictResolutionPolicy conflictResolution = providerSetting.ConflictResolutionPolicySetting;

                        remoteProvider.Configuration.ConflictResolutionPolicy = conflictResolution;
                        localProvider.Configuration.ConflictResolutionPolicy  = conflictResolution;

                        _syncAgent.Direction      = direction;
                        _syncAgent.LocalProvider  = localProvider;
                        _syncAgent.RemoteProvider = remoteProvider;

                        //Subscribe to knowledege provider events
                        SubscribeEvents(localProvider);
                        SubscribeEvents(remoteProvider);
                        //raise sync process begin event
                        OnSyncProcessBegin(new SyncProcessEventArgs());

                        SyncOperationStatistics syncStats = _syncAgent.Synchronize();
                        CollectStatistics(syncStats);
                    }
                }
            }
            catch (UriFormatException e)
            {
                DebugAssistant.Log(DebugSeverity.Error, e.Message);
                LastSyncErrorOccur = true;
                LastSyncErrorDescr = OutlookAddin.Resources.ERR_SYNC_SERVICE_INVALID_URL;
                //DebugAssistant.Log(DebugSeverity.Error | DebugSeverity.MessageBox,
                //					OutlookAddin.Resources.ERR_SYNC_SERVICE_INVALID_URL);
            }
            catch (SoapException e)
            {
                LastSyncErrorOccur = true;
                SyncronizationServiceError syncError = SoapErrorHandler.HandleError(e);

                string msg = OutlookAddin.Resources.ERR_SYNC_SERVICE_UKNOW;
                if (syncError != null)
                {
                    DebugAssistant.Log(DebugSeverity.Error, syncError.errorType.ToString() + " "
                                       + syncError.message + " " + syncError.stackTrace);

                    switch (syncError.errorType)
                    {
                    case SyncronizationServiceError.eServiceErrorType.AuthFailed:
                        msg = Resources.ERR_SYNC_SERVICE_AUTH_FAILED;
                        break;

                    case SyncronizationServiceError.eServiceErrorType.NotAuthRequest:
                        msg = Resources.ERR_SYNC_SERVICE_NOT_AUTH;
                        break;

                    case SyncronizationServiceError.eServiceErrorType.ProviderNotSpecified:
                        msg = Resources.ERR_SYNC_SERVICE_INVALID_PROVIDER;
                        break;

                    case SyncronizationServiceError.eServiceErrorType.SyncFramework:
                        msg = Resources.ERR_SYNC_SERVICE_FRAMEWORK;
                        break;

                    case SyncronizationServiceError.eServiceErrorType.SyncProvider:
                        msg = Resources.ERR_SYNC_SERVICE_PROVIDER;
                        break;

                    case SyncronizationServiceError.eServiceErrorType.ServerError:
                        msg = Resources.ERR_SYNC_SERVICE_SERVER;
                        break;

                    case SyncronizationServiceError.eServiceErrorType.Undef:
                        msg = Resources.ERR_SYNC_SERVICE_UKNOW;
                        break;
                    }
                }

                LastSyncErrorDescr = msg;

                //DebugAssistant.Log(DebugSeverity.Error | DebugSeverity.MessageBox, msg);
            }
            catch (System.Net.WebException e)
            {
                LastSyncErrorOccur = true;
                LastSyncErrorDescr = Resources.ERR_SYNC_CONNECTION;
                DebugAssistant.Log(DebugSeverity.Error, e.Message);
            }
            catch (Exception e)
            {
                LastSyncErrorOccur = true;
                LastSyncErrorDescr = OutlookAddin.Resources.ERR_ADDIN_UNKNOW;
                DebugAssistant.Log(DebugSeverity.Error, e.Message);
                //DebugAssistant.Log(DebugSeverity.Error | DebugSeverity.MessageBox, OutlookAddin.Resources.ERR_ADDIN_UNKNOW);
            }
            finally
            {
                if (localProvider != null)
                {
                    localProvider.EndSession(null);
                }
                if (remoteProvider != null)
                {
                    remoteProvider.EndSession(null);
                }
                OnSyncProcessEnd(new SyncProcessEventArgs());
                CurrentProcessedSyncType = null;
            }
        }
コード例 #17
0
ファイル: SyncApplication.cs プロジェクト: 0anion0/IBN
 private KnowledgeSyncProvider GetRemoteSyncProvidersBySyncType(Outlook.OlItemType oItemType)
 {
     return(RemoteProviderProxy.CreateInstance(_settings.CurrentSyncAppSetting, oItemType));
     //return  ClientOutlook.TestProvider.MyProviderFactory.CreateBProvider() ;
 }
コード例 #18
0
ファイル: FormSyncItem.cs プロジェクト: 0anion0/IBN
 protected void DisableSyncItem(Outlook.OlItemType oItemType)
 {
     DisableEnableSyncItem(true, oItemType);
 }
コード例 #19
0
ファイル: FormSyncItem.cs プロジェクト: 0anion0/IBN
 protected void EnableSyncItem(Outlook.OlItemType oItemType)
 {
     DisableEnableSyncItem(false, oItemType);
 }
コード例 #20
0
ファイル: FormSyncItem.cs プロジェクト: 0anion0/IBN
        /// <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);
        }
コード例 #21
0
ファイル: FormSyncItem.cs プロジェクト: 0anion0/IBN
        /// <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);
        }
コード例 #22
0
ファイル: FormSyncItem.cs プロジェクト: 0anion0/IBN
 private SyncMenuItem FindSyncMenuItem(Outlook.OlItemType oItemType)
 {
     return(MenuItems.FirstOrDefault(x => (Outlook.OlItemType)x.ItemTag == oItemType));
 }
コード例 #23
0
ファイル: SyncApplication.cs プロジェクト: 0anion0/IBN
 /// <summary>
 /// Adds the syncronize task.
 /// </summary>
 /// <param name="oSyncItem">The o sync item.</param>
 public void SheduleSyncronizeTask(Outlook.OlItemType oSyncItem)
 {
     this._workManager.SheduleTask(oSyncItem);
     //DoSync(oSyncItem);
 }