Esempio n. 1
0
        static void Main()
        {
            // загружаем конфиг
            Config.LoadConfig();

            // включаем логирование. пока что в файл
            Logger.AddAlgorithm(new FileLogWriteAlgorithm(Config.GetParam(Config.LogFileName)));

            AppDomain.CurrentDomain.UnhandledException +=
                (sender, args) => TypedLogger.Error(
                    typeof(Program),
                    LocalizibleStrings.ErrorUnhandledException,
                    args.ExceptionObject as Exception);

            // получаем и устанавливаем язык
            string      lang    = Config.GetParam(Config.Lang);
            CultureInfo culture = LocalizationHelper.TryGetCulture(lang);

            Thread.CurrentThread.CurrentCulture   = culture;
            Thread.CurrentThread.CurrentUICulture = culture;

            int port;

            if (!int.TryParse(Config.GetParam(Config.SmtpPort), out port))
            {
                ShowWarn(
                    LocalizibleStrings.SmtpUndefined
                    + LocalizibleStrings.StandartEnd);
                port = -1;
            }

            string mailFrom = Config.GetParam(Config.ErrorMailSender);

            if (string.IsNullOrWhiteSpace(mailFrom))
            {
                ShowWarn(
                    LocalizibleStrings.SenderUndefined
                    + LocalizibleStrings.StandartEnd);
            }

            string mailTo = Config.GetParam(Config.ErrorMailAndress);

            if (string.IsNullOrWhiteSpace(mailTo))
            {
                ShowWarn(
                    LocalizibleStrings.ErrorAdressUndefined
                    + LocalizibleStrings.StandartEnd);
            }

            string smtpServer = Config.GetParam(Config.SmtpServer);

            if (string.IsNullOrWhiteSpace(smtpServer))
            {
                ShowWarn(
                    LocalizibleStrings.SmtpServerUndefined
                    + LocalizibleStrings.StandartEnd);
            }

            Mailer.SetParams(mailFrom, mailTo, smtpServer, port);

            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new MainForm());
        }
Esempio n. 2
0
        private void MainFormLoad(object sender, EventArgs e)
        {
            Form.CheckForIllegalCrossThreadCalls = false;
            Action <string> action = str => this.lbLog.Items.Add(str);

            Logger.AddAlgorithm(new ComponentLogWriteAlgorithm(action));

            this.panel1.Enabled = false;
            this.generateToolStripMenuItem.Enabled     = false;
            this.saveSettingsToolStripMenuItem.Enabled = false;

            this.splitContainer4.SplitterWidth = 10;
            this.splitContainer1.SplitterWidth = 10;
            this.RearrangeCountControls();

            ToolStripButton tsbtnMove =
                new ToolStripButton(LocalizibleStrings.BtnAddSelectedToMailList)
            {
                DisplayStyle = ToolStripItemDisplayStyle.Image,
                Image        = LocalizibleStrings.ArrowRight
            };

            tsbtnMove.Click += (o, args) =>
            {
                IEnumerable <StoredContact> storedContacts =
                    this.clTargetContacts.dgObjects.Objects.Cast <StoredContact>().ToList();

                foreach (Contact obj in
                         from Contact obj in this.clEwsContacts.dgObjects.SelectedObjects
                         let existed = storedContacts.FirstOrDefault(s => s.UniqId == obj.Id.UniqueId)
                                       where existed == null
                                       select obj)
                {
                    this.clTargetContacts.dgObjects.AddObject(new StoredContact(obj));
                }
            };

            this.clEwsContacts._barTools.Items.Insert(2, tsbtnMove);

            string mailTemplateFolder;
            string eventTemplateFolder;

            switch (Thread.CurrentThread.CurrentUICulture.LCID)
            {
            case LocalizationHelper.EnInt:
                this.englishToolStripMenuItem.Checked = true;
                this.russianToolStripMenuItem.Checked = false;
                mailTemplateFolder  = Config.EmailTemplateFolderEn;
                eventTemplateFolder = Config.EventTemplateFolderEn;
                break;

            case LocalizationHelper.RuInt:
                this.russianToolStripMenuItem.Checked = true;
                this.englishToolStripMenuItem.Checked = false;
                mailTemplateFolder  = Config.EmailTemplateFolderRu;
                eventTemplateFolder = Config.EventTemplateFolderRu;
                break;

            default:
                this.englishToolStripMenuItem.Checked = true;
                this.russianToolStripMenuItem.Checked = false;
                mailTemplateFolder  = Config.EmailTemplateFolderEn;
                eventTemplateFolder = Config.EventTemplateFolderEn;
                break;
            }

            this.SetEwsContactsColumns();
            this.SetMailTemplatesColumns();
            this.SetEventTemplatesColumns();
            this.SetTargetContactsColumns();

            this.clEwsContacts.tsbtnFilteredProperties.Visible = false;
            this.clEwsContacts.tsbtnCreate.Visible             = false;
            this.clEwsContacts.tsbtnEdit.Visible               = false;
            this.clEwsContacts.tsbtnDelete.Visible             = false;
            this.clEwsContacts.tsbtnFilterSettings.Visible     = false;
            this.clEwsContacts.tsbtnFilteredProperties.Visible = false;

            this.clEwsContacts.tsbtnRefresh.Text     = LocalizibleStrings.BtnRefresh;
            this.clEwsContacts.tsbtnClearFilter.Text = LocalizibleStrings.BtnClear;
            this.clEwsContacts.tsbtnSearch.Text      = LocalizibleStrings.BtnSearch;
            this.clEwsContacts.tslbSearch.Text       = LocalizibleStrings.LbSearch;
            this.clEwsContacts.tslbCount.Text        = LocalizibleStrings.LbCount;

            this.clEwsContacts.tsbtnRefresh.Click += (s, args) =>
            {
                try
                {
                    Folder contactsFolder;
                    if (!TryGetFolder(Config.ContactFolder, out contactsFolder))
                    {
                        Logger.Message(LocalizibleStrings.TryLoadFromDefault);
                        contactsFolder = ContactsFolder.Bind(_service, WellKnownFolderName.Contacts);
                    }

                    SearchFilter sf = new SearchFilter.IsEqualTo(ItemSchema.ItemClass, @"IPM.Contact");

                    FindItemsResults <Item> items =
                        contactsFolder.FindItems(sf, new ItemView(int.MaxValue));
                    this.clEwsContacts.dgObjects.SetObjects(items.ToList());
                }
                catch (Exception exc)
                {
                    Logger.Error(LocalizibleStrings.CannotGetContactList, exc);
                }
            };

            this.clMailTemplates.tsbtnFilteredProperties.Visible = false;
            this.clMailTemplates.tsbtnCreate.Visible             = false;
            this.clMailTemplates.tsbtnEdit.Visible               = false;
            this.clMailTemplates.tsbtnDelete.Visible             = false;
            this.clMailTemplates.tsbtnFilterSettings.Visible     = false;
            this.clMailTemplates.tsbtnFilteredProperties.Visible = false;

            this.clMailTemplates.tsbtnRefresh.Text     = LocalizibleStrings.BtnRefresh;
            this.clMailTemplates.tsbtnClearFilter.Text = LocalizibleStrings.BtnClear;
            this.clMailTemplates.tsbtnSearch.Text      = LocalizibleStrings.BtnSearch;
            this.clMailTemplates.tslbSearch.Text       = LocalizibleStrings.LbSearch;
            this.clMailTemplates.tslbCount.Text        = LocalizibleStrings.LbCount;

            this.clMailTemplates.tsbtnRefresh.Click += (s, args) =>
            {
                try
                {
                    /*Folder templatesFolder;
                     * if (!TryGetFolder(mailTemplateFolder, out templatesFolder))
                     *  return;
                     *
                     * FindItemsResults<Item> items =
                     *  templatesFolder.FindItems(new ItemView(int.MaxValue));*/

                    IList <Storage.Message> items = new List <Storage.Message>();

                    // ReSharper disable once LoopCanBeConvertedToQuery
                    // под отладчиком всякая фигня происходит если linq
                    foreach (string path in
                             Directory.GetFiles(Config.GetParam(mailTemplateFolder)))
                    {
                        items.Add(new Storage.Message(path));
                    }

                    this.clMailTemplates.dgObjects.SetObjects(items.ToList());
                }
                catch (Exception exc)
                {
                    Logger.Error(LocalizibleStrings.CannotGetMailTemplateList, exc);
                }
            };

            this.clEventTemplates.tsbtnCreate.Visible             = false;
            this.clEventTemplates.tsbtnEdit.Visible               = false;
            this.clEventTemplates.tsbtnDelete.Visible             = false;
            this.clEventTemplates.tsbtnFilterSettings.Visible     = false;
            this.clEventTemplates.tsbtnFilteredProperties.Visible = false;

            this.clEventTemplates.tsbtnRefresh.Text     = LocalizibleStrings.BtnRefresh;
            this.clEventTemplates.tsbtnClearFilter.Text = LocalizibleStrings.BtnClear;
            this.clEventTemplates.tsbtnSearch.Text      = LocalizibleStrings.BtnSearch;
            this.clEventTemplates.tslbSearch.Text       = LocalizibleStrings.LbSearch;
            this.clEventTemplates.tslbCount.Text        = LocalizibleStrings.LbCount;

            this.clEventTemplates.tsbtnRefresh.Click += (s, args) =>
            {
                try
                {
                    /*Folder templatesFolder;
                     * if (!TryGetFolder(eventTemplateFolder, out templatesFolder))
                     *  return;
                     *
                     * FindItemsResults<Item> items =
                     *  templatesFolder.FindItems(new ItemView(int.MaxValue));*/

                    List <Storage.Message> tasks =
                        Directory.GetFiles(Config.GetParam(eventTemplateFolder))
                        .Select(t => new Storage.Message(t))
                        .ToList();

                    this.clEventTemplates.dgObjects.SetObjects(tasks);
                }
                catch (Exception exc)
                {
                    Logger.Error(LocalizibleStrings.CannotGetEventTemplateList, exc);
                }
            };

            this.clTargetContacts.tsbtnCreate.Text      = LocalizibleStrings.BtnCreate;
            this.clTargetContacts.tsbtnDelete.Text      = LocalizibleStrings.BtnDelete;
            this.clTargetContacts.tsbtnRefresh.Text     = LocalizibleStrings.BtnRefresh;
            this.clTargetContacts.tsbtnClearFilter.Text = LocalizibleStrings.BtnClear;
            this.clTargetContacts.tsbtnSearch.Text      = LocalizibleStrings.BtnSearch;
            this.clTargetContacts.tslbSearch.Text       = LocalizibleStrings.LbSearch;
            this.clTargetContacts.tslbCount.Text        = LocalizibleStrings.LbCount;

            this.clTargetContacts.tsbtnCreate.Visible             = true;
            this.clTargetContacts.tsbtnEdit.Visible               = false;
            this.clTargetContacts.tsbtnDelete.Visible             = true;
            this.clTargetContacts.tsbtnFilterSettings.Visible     = false;
            this.clTargetContacts.tsbtnFilteredProperties.Visible = false;

            this.clTargetContacts.dgObjects.TriStateCheckBoxes = false;
            this.clTargetContacts.dgObjects.RenderNonEditableCheckboxesAsDisabled = false;
            this.clTargetContacts.dgObjects.UseSubItemCheckBoxes = true;

            ToolStripButton tsbtnSave =
                new ToolStripButton(LocalizibleStrings.BtnSaveAll)
            {
                DisplayStyle = ToolStripItemDisplayStyle.Image,
                Image        = LocalizibleStrings.Save
            };

            tsbtnSave.Click +=
                (o, args) =>
            {
                IEnumerable <StoredContact> contacts =
                    this.clTargetContacts.dgObjects.Objects.Cast <StoredContact>();
                foreach (StoredContact contact in contacts)
                {
                    contact.Save();
                }
            };

            this.clTargetContacts._barTools.Items.Insert(1, tsbtnSave);

            this.clTargetContacts.tsbtnRefresh.Click += (s, args) =>
            {
                try
                {
                    this.clTargetContacts.dgObjects.SetObjects(StoredContact.GetAll());
                }
                catch (Exception exc)
                {
                    Logger.Error(LocalizibleStrings.CannotGetStoredContacts, exc);
                }
            };

            this.clTargetContacts.tsbtnCreate.Click +=
                (o, args) => this.clTargetContacts.dgObjects.AddObject(new StoredContact());

            this.clTargetContacts.tsbtnDelete.Click += (o, args) =>
            {
                DialogResult res = MessageBox.Show(
                    LocalizibleStrings.DeleteConfirmation,
                    LocalizibleStrings.Warning,
                    MessageBoxButtons.YesNo,
                    MessageBoxIcon.Warning,
                    MessageBoxDefaultButton.Button2);

                if (res == DialogResult.No)
                {
                    return;
                }

                foreach (StoredContact cont in this.clTargetContacts.dgObjects.SelectedObjects)
                {
                    try
                    {
                        this.clTargetContacts.dgObjects.RemoveObject(cont);
                        cont.Delete();
                    }
                    catch (Exception exc)
                    {
                        Logger.Error(LocalizibleStrings.CannotDeleteContact + cont.FileName, exc);
                    }
                }
            };
        }