示例#1
0
        public override void HarvestSetting(ref object setting)
        {
            syncAppointmentSetting appointmentSetting = setting as syncAppointmentSetting;

            if (appointmentSetting != null)
            {
                base.HarvestSetting(ref setting);
            }
        }
示例#2
0
        public override void SetSetting(object setting)
        {
            syncAppointmentSetting appointmentSetting = setting as syncAppointmentSetting;

            if (appointmentSetting != null)
            {
                base.SetSetting(setting);
            }
        }
示例#3
0
        /// <summary>
        /// Sets the setting.
        /// </summary>
        /// <param name="setting">The setting.</param>
        public virtual void SetSetting(object setting)
        {
            syncAppointmentSetting appointmentSetting = setting as syncAppointmentSetting;

            if (appointmentSetting != null)
            {
                cbDirection.SelectedItem =
                    ((IEnumerable <KeyValuePair <string, SyncDirectionOrder> >)cbDirection.DataSource).First(x => x.Value == (SyncDirectionOrder)appointmentSetting.syncDirection);
                cbConflictPolicy.SelectedItem =
                    ((IEnumerable <KeyValuePair <string, ConflictResolutionPolicy> >)cbConflictPolicy.DataSource).First(x => x.Value == (ConflictResolutionPolicy)appointmentSetting.syncConflictResolution);
                tbSyncFolder.Text = appointmentSetting.localFolder;
                chkboxIncludeSubfolder.Checked  = appointmentSetting.recursive;
                cbRemoteSyncTarget.SelectedItem = appointmentSetting.remoteFolder;
            }
        }
示例#4
0
        /// <summary>
        /// Harvests the setting.
        /// </summary>
        /// <param name="setting">The setting.</param>
        public virtual void HarvestSetting(ref object setting)
        {
            syncAppointmentSetting appSetting = setting as syncAppointmentSetting;

            if (appSetting != null)
            {
                appSetting.localFolder = tbSyncFolder.Text;
                appSetting.recursive   = chkboxIncludeSubfolder.Checked;
                object selectedItem = cbRemoteSyncTarget.SelectedItem;
                if (selectedItem != null)
                {
                    appSetting.remoteFolder = selectedItem.ToString();
                }
                appSetting.syncDirection          = (int)((KeyValuePair <string, SyncDirectionOrder>)cbDirection.SelectedItem).Value;
                appSetting.syncConflictResolution = (int)((KeyValuePair <string, ConflictResolutionPolicy>)cbConflictPolicy.SelectedItem).Value;
            }
        }
示例#5
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);
        }
示例#6
0
 public static AppointmentSyncProvider CreateInstance(syncAppointmentSetting settings, OutlookApplication outlookApplication)
 {
     return(new AppointmentSyncProvider(settings, outlookApplication));
 }
示例#7
0
 private AppointmentSyncProvider(syncAppointmentSetting settings, OutlookApplication outlookApplication)
 {
     _outlookApplication = outlookApplication;
     _activeSyncSetting  = settings;
 }