MailFieldsWidget::MailFieldsWidget(QWidget& parent, QAction& actionSend, AddressBookModel& abModel, bool editMode) : QWidget(&parent), ui(new Ui::MailFieldsWidget), ActionSend(actionSend), VisibleFields(0), EditMode(editMode) { ui->setupUi(this); QCompleter* completer = abModel.getContactCompleter(); bool readOnly = editMode == false; ContactListEdit* recipientEdits[4]; recipientEdits[0] = ui->toEdit; recipientEdits[1] = ui->ccEdit; recipientEdits[2] = ui->bccEdit; recipientEdits[3] = ui->fromEdit; for(unsigned int i = 0; i < sizeof(recipientEdits)/sizeof(ContactListEdit*); ++i) { ContactListEdit* edit = recipientEdits[i]; edit->setCompleter(completer); edit->setReadOnly(readOnly); connect(edit->document(), SIGNAL(contentsChanged()), this, SLOT(onRecipientListChanged())); } /// This edit must be always read only - it is automatically filled by 'from' tool button selection. ui->fromEdit->setReadOnly(true); ui->fromEdit->setCompleter(completer); if(editMode) fillSenderIdentities(); validateSendButtonState(); ui->fromButton->setEnabled(editMode); ui->toButton->setEnabled(editMode); ui->ccButton->setEnabled(editMode); ui->bccButton->setEnabled(editMode); ui->subjectEdit->setReadOnly(readOnly); ui->sendButton->setEnabled(editMode); ui->sendButton->setVisible(editMode); }
MailFieldsWidget::MailFieldsWidget(QWidget& parent, QAction& actionSend, AddressBookModel& abModel) : QWidget(&parent), ui(new Ui::MailFieldsWidget), ActionSend(actionSend) { ui->setupUi(this); fillSenderIdentities(); validateSendButtonState(); ContactListEdit* recipientEdits[3]; recipientEdits[0] = ui->toEdit; recipientEdits[1] = ui->ccEdit; recipientEdits[2] = ui->bccEdit; QCompleter* completer = abModel.getContactCompleter(); for(unsigned int i = 0; i < sizeof(recipientEdits)/sizeof(ContactListEdit*); ++i) { ContactListEdit* edit = recipientEdits[i]; edit->setCompleter(completer); connect(edit->document(), SIGNAL(contentsChanged()), this, SLOT(onRecipientListChanged())); } }
MailEditorMainWindow::MailEditorMainWindow(ATopLevelWindowsContainer* parent, AddressBookModel& abModel, IMailProcessor& mailProcessor, bool editMode) : ATopLevelWindow(parent), ui(new Ui::MailEditorWindow()), ABModel(abModel), MailProcessor(mailProcessor), FontCombo(nullptr), EditMode(editMode) { ui->setupUi(this); /** Disable these toolbars by default. They should be showed up on demand, when given action will be trigerred. */ ui->fileAttachementToolBar->hide(); ui->moneyAttachementToolBar->hide(); ui->editToolBar->hide(); ui->adjustToolbar->hide(); ui->formatToolBar->hide(); MoneyAttachement = new TMoneyAttachementWidget(ui->moneyAttachementToolBar); ui->moneyAttachementToolBar->addWidget(MoneyAttachement); FileAttachment = new TFileAttachmentWidget(ui->fileAttachementToolBar, editMode); ui->fileAttachementToolBar->addWidget(FileAttachment); MailFields = new MailFieldsWidget(*this, *ui->actionSend, abModel, editMode); /// Initially only basic mail fields (To: and Subject:) should be visible MailFields->showCcControls(false); MailFields->showBccControls(false); ui->mailFieldsToolBar->addWidget(MailFields); connect(MailFields, SIGNAL(subjectChanged(QString)), this, SLOT(onSubjectChanged(QString))); connect(MailFields, SIGNAL(recipientListChanged()), this, SLOT(onRecipientListChanged())); connect(FileAttachment, SIGNAL(attachmentListChanged()), this, SLOT(onAttachmentListChanged())); if(editMode) { /** Supplement definition of mailFieldSelectorToolbar since Qt Creator doesn't support putting into its context dedicated controls (like preconfigured toolbutton). Setup local menu for 'actionMailFields' toolButton (used to enable/disable additional mail field selection). */ QMenu* mailFieldsMenu = new QMenu(this); mailFieldsMenu->addAction(ui->actionFrom); mailFieldsMenu->addAction(ui->actionCC); mailFieldsMenu->addAction(ui->actionBCC); /// Update state of sub-menu commands. ui->actionBCC->setChecked(MailFields->isFieldVisible(MailFieldsWidget::BCC_FIELDS)); ui->actionCC->setChecked(MailFields->isFieldVisible(MailFieldsWidget::CC_FIELD)); ui->actionFrom->setChecked(MailFields->isFieldVisible(MailFieldsWidget::FROM_FIELD)); ui->actionMailFields->setMenu(mailFieldsMenu); ui->mainToolBar->insertAction(ui->actionShowFormatOptions, ui->actionMailFields); } setupEditorCommands(); ui->messageEdit->setFocus(); fontChanged(ui->messageEdit->font()); colorChanged(ui->messageEdit->textColor()); alignmentChanged(ui->messageEdit->alignment()); QString subject = MailFields->getSubject(); onSubjectChanged(subject); /// Clear modified flag ui->messageEdit->document()->setModified(false); setWindowModified(ui->messageEdit->document()->isModified()); ui->actionSave->setEnabled(ui->messageEdit->document()->isModified()); ui->actionUndo->setEnabled(ui->messageEdit->document()->isUndoAvailable()); ui->actionRedo->setEnabled(ui->messageEdit->document()->isRedoAvailable()); /// Setup command update ui related to 'save' option activity control and window modify marker. connect(ui->messageEdit->document(), SIGNAL(modificationChanged(bool)), ui->actionSave, SLOT(setEnabled(bool))); connect(ui->messageEdit->document(), SIGNAL(modificationChanged(bool)), this, SLOT(setWindowModified(bool))); connect(ui->messageEdit, SIGNAL(addAttachments(QStringList)), this, SLOT(onAddAttachments(QStringList))); #ifndef QT_NO_CLIPBOARD connect(QApplication::clipboard(), SIGNAL(dataChanged()), this, SLOT(onClipboardDataChanged())); #endif toggleReadOnlyMode(); }