Example #1
0
        /// <summary>
        /// Called when [sync end].
        /// </summary>
        /// <param name="sender">The sender.</param>
        /// <param name="args">The <see cref="System.EventArgs"/> instance containing the event data.</param>
        protected virtual void OnSyncEnd(object sender, EventArgs args)
        {
            if (_syncApp.CurrentProcessedSyncType == null)
            {
                throw new NullReferenceException("CurrentProcessedSyncType");
            }
            SyncApplication syncApp = sender as SyncApplication;

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

            //Устанавливаем новый статус
            SyncItemInfo status = new SyncItemInfo();

            status.Status       = syncApp.LastSyncErrorOccur ? eSyncStatus.Failed : eSyncStatus.Ok;
            status.Status       = syncApp.SkippedItems.Count() != 0 ? eSyncStatus.SkipedChangesDetected : status.Status;
            status.LastSyncDate = DateTime.Now;
            status.ErrorDescr   = syncApp.LastSyncErrorDescr;
            status.SkippedCount = syncApp.SkippedItems.Count();
            //Вызываем в потоке формы функцию установки статуса
            _syncItemForm.ThrSetSyncItemStatus(_syncApp.CurrentProcessedSyncType.Value, status);
            _syncItemForm.ThrUpdateSyncStatisticStatus(_syncApp.SyncStatistics);

            //Запоминаем статус и дату последней синхронизации
            syncProviderSetting provSetting = _syncApp.GetSyncProviderSettingByType(_syncApp.CurrentProcessedSyncType.Value);

            if (provSetting != null)
            {
                provSetting.lastSyncStatus = (int)status.Status;
                provSetting.lastSyncDate   = DateTime.Now.Ticks / TimeSpan.TicksPerSecond;
                _syncApp.CurrentSettings.SaveActiveProfile();
            }
        }
Example #2
0
 private UIController(AddinModule addinModule, OutlookListener outlookListener, SyncApplication app,
                      FormSyncItem syncForm, FormSyncOptions syncOprionsForm, FormSyncConflictResolution syncConflictResForm)
 {
     _addinModule         = addinModule;
     _outlookListener     = outlookListener;
     _syncApp             = app;
     _syncItemForm        = syncForm;
     _syncOptionsForm     = syncOprionsForm;
     _syncConflictResForm = syncConflictResForm;
 }
Example #3
0
        private void HookEvents(SyncApplication syncApp)
        {
            syncApp.SyncProcessBeginEvent -= OnSyncBegin;
            syncApp.SyncProcessBeginEvent += OnSyncBegin;

            syncApp.SyncProcessEndEvent -= OnSyncEnd;
            syncApp.SyncProcessEndEvent += OnSyncEnd;

            syncApp.ProgressChanged -= OnSyncProcessChange;
            syncApp.ProgressChanged += OnSyncProcessChange;

            syncApp.SessionStateChanged -= OnSyncSessionStageProcessChange;
            syncApp.SessionStateChanged += OnSyncSessionStageProcessChange;

            syncApp.ItemConflicting -= OnSyncItemConflicting;
            syncApp.ItemConflicting += OnSyncItemConflicting;

            syncApp.ItemChangeSkipped -= OnSyncItemChangeSkiped;
            syncApp.ItemChangeSkipped += OnSyncItemChangeSkiped;
        }
Example #4
0
        //this method must call in Addin thread
        public static UIController CreateInstance(AddinModule addinModule)
        {
            if (addinModule == null)
            {
                throw new ArgumentNullException("addinModule");
            }

            if (_instance != null)
            {
                return(_instance);
            }

            //Set LogFilePath
            DebugAssistant.LogFilePath = ApplicationConfig.LogPathFile;

            FormSyncOptions            syncOptionsForm     = new FormSyncOptions();
            FormSyncItem               syncForm            = new FormSyncItem();
            FormSyncConflictResolution syncConflictResForm = new FormSyncConflictResolution();
            OutlookListener            listener            = new OutlookListener(addinModule);
            IntPtr             handle             = listener.Handle;
            OutlookApplication outlookApplication = OutlookApplication.CreateInstance(listener);
            SyncApplication    syncApp            = SyncApplication.CreateInstance(outlookApplication);

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

            UIController retVal = new UIController(addinModule, listener, syncApp, syncForm,
                                                   syncOptionsForm, syncConflictResForm);

            if (syncConflictResForm != null)
            {
                //Force create control
                handle = syncConflictResForm.Handle;
            }

            if (syncForm != null)
            {
                //Subscribe events SyncApp(Model)
                retVal.HookEvents(syncApp);
                //Sunscribe events syncForm(View)
                retVal.HookEvents(syncForm);
                //Force create control
                handle = syncForm.Handle;

                //TODO: Нужно прочитать историю последней синхронизации и установить статус прошлой синхронизации
                syncForm.AddSyncMenuItem(Outlook.OlItemType.olAppointmentItem);
                syncForm.AddSyncMenuItem(Outlook.OlItemType.olContactItem);
                syncForm.AddSyncMenuItem(Outlook.OlItemType.olTaskItem);
                syncForm.AddSyncMenuItem(Outlook.OlItemType.olNoteItem);
                //Appointment
                SyncItemInfo           status          = new SyncItemInfo();
                syncAppointmentSetting apppointSetting = syncApp.CurrentSettings.CurrentSyncAppointentSetting;
                if (apppointSetting != null)
                {
                    status.Status = (eSyncStatus)apppointSetting.lastSyncStatus;
                    if (status.Status != eSyncStatus.Unknow)
                    {
                        status.LastSyncDate = new DateTime(TimeSpan.TicksPerSecond * apppointSetting.lastSyncDate);
                    }

                    if (status.Status == eSyncStatus.Ok || status.Status == eSyncStatus.Unknow)
                    {
                        status.Status = eSyncStatus.Ready;
                    }
                }

                syncForm.ThrSetSyncItemStatus(Outlook.OlItemType.olAppointmentItem, status);
                //Contact
                //Task
                status        = new SyncItemInfo();
                status.Status = eSyncStatus.Ready;
                syncForm.ThrSetSyncItemStatus(Outlook.OlItemType.olTaskItem, status);
                //Note
                status        = new SyncItemInfo();
                status.Status = eSyncStatus.Unknow;
                syncForm.ThrSetSyncItemStatus(Outlook.OlItemType.olContactItem, status);

                syncForm.ThrSetSyncItemStatus(Outlook.OlItemType.olNoteItem, status);


                retVal._syncItemForm = syncForm;
            }

            if (syncOptionsForm != null)
            {
                //Force create control
                handle = syncOptionsForm.Handle;
                //Sunscribe events syncOptionsForm(View)
                retVal.HookEvents(syncOptionsForm);
            }

            _instance = retVal;

            return(retVal);
        }