void SubjectsForm::moveSubjectDown() { if(subjectsListWidget->count()<=1) return; int i=subjectsListWidget->currentRow(); if(i<0 || i>=subjectsListWidget->count()) return; if(i==subjectsListWidget->count()-1) return; QString s1=subjectsListWidget->item(i)->text(); QString s2=subjectsListWidget->item(i+1)->text(); Subject* sbj1=gt.rules.subjectsList.at(i); Subject* sbj2=gt.rules.subjectsList.at(i+1); gt.rules.internalStructureComputed=false; setRulesModifiedAndOtherThings(>.rules); subjectsListWidget->item(i)->setText(s2); subjectsListWidget->item(i+1)->setText(s1); gt.rules.subjectsList[i]=sbj2; gt.rules.subjectsList[i+1]=sbj1; subjectsListWidget->setCurrentRow(i+1); subjectChanged(i+1); }
void SubjectsForm::renameSubject() { int i=subjectsListWidget->currentRow(); if(subjectsListWidget->currentRow()<0){ QMessageBox::information(this, tr("FET information"), tr("Invalid selected subject")); return; } QString initialSubjectName=subjectsListWidget->currentItem()->text(); int subject_ID=gt.rules.searchSubject(initialSubjectName); if(subject_ID<0){ QMessageBox::information(this, tr("FET information"), tr("Invalid selected subject")); return; } bool ok = false; QString finalSubjectName; finalSubjectName = QInputDialog::getText( this, tr("Modify subject"), tr("Please enter new subject's name") , QLineEdit::Normal, initialSubjectName, &ok); if ( ok && !(finalSubjectName.isEmpty()) ){ // user entered something and pressed OK if(gt.rules.searchSubject(finalSubjectName)>=0){ QMessageBox::information( this, tr("Subject insertion dialog"), tr("Could not modify item. New name must be a duplicate")); } else{ gt.rules.modifySubject(initialSubjectName, finalSubjectName); subjectsListWidget->item(i)->setText(finalSubjectName); subjectChanged(subjectsListWidget->currentRow()); } } }
void SubjectsForm::comments() { int ind=subjectsListWidget->currentRow(); if(ind<0){ QMessageBox::information(this, tr("FET information"), tr("Invalid selected subject")); return; } Subject* sbj=gt.rules.subjectsList[ind]; assert(sbj!=NULL); QDialog getCommentsDialog(this); getCommentsDialog.setWindowTitle(tr("Subject comments")); QPushButton* okPB=new QPushButton(tr("OK")); okPB->setDefault(true); QPushButton* cancelPB=new QPushButton(tr("Cancel")); connect(okPB, SIGNAL(clicked()), &getCommentsDialog, SLOT(accept())); connect(cancelPB, SIGNAL(clicked()), &getCommentsDialog, SLOT(reject())); QHBoxLayout* hl=new QHBoxLayout(); hl->addStretch(); hl->addWidget(okPB); hl->addWidget(cancelPB); QVBoxLayout* vl=new QVBoxLayout(); QPlainTextEdit* commentsPT=new QPlainTextEdit(); commentsPT->setPlainText(sbj->comments); commentsPT->selectAll(); commentsPT->setFocus(); vl->addWidget(commentsPT); vl->addLayout(hl); getCommentsDialog.setLayout(vl); const QString settingsName=QString("SubjectCommentsDialog"); getCommentsDialog.resize(500, 320); centerWidgetOnScreen(&getCommentsDialog); restoreFETDialogGeometry(&getCommentsDialog, settingsName); int t=getCommentsDialog.exec(); saveFETDialogGeometry(&getCommentsDialog, settingsName); if(t==QDialog::Accepted){ sbj->comments=commentsPT->toPlainText(); gt.rules.internalStructureComputed=false; setRulesModifiedAndOtherThings(>.rules); subjectChanged(ind); } }
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(); }
bool CFrmGroupChat::Join(const QString &jid) { if(jid.isEmpty()) return false; QList<QXmppMucRoom*> rooms = CGlobal::Instance()->GetXmppClient()->m_MucManager.rooms(); QXmppMucRoom* r; foreach(r, rooms) { if(r->jid() == jid) { LOG_MODEL_DEBUG("Group chat", "had joined room[%s]", qPrintable(jid)); return false; } } m_pRoom = CGlobal::Instance()->GetXmppClient()->m_MucManager.addRoom(jid); if(m_pRoom) { bool check = connect(m_pRoom, SIGNAL(joined()), SLOT(slotJoined())); Q_ASSERT(check); check = connect(m_pRoom, SIGNAL(left()), SLOT(slotLeft())); Q_ASSERT(check); check = connect(m_pRoom, SIGNAL(nameChanged(QString)), SLOT(slotNameChanged(QString))); Q_ASSERT(check); check = connect(m_pRoom, SIGNAL(error(QXmppStanza::Error)), SLOT(slotError(QXmppStanza::Error))); Q_ASSERT(check); check = connect(m_pRoom, SIGNAL(subjectChanged(QString)), SLOT(slotSubjectChanged(QString))); Q_ASSERT(check); check = connect(m_pRoom, SIGNAL(messageReceived(QXmppMessage)), SLOT(slotMessageReceived(QXmppMessage))); Q_ASSERT(check); check = connect(m_pRoom, SIGNAL(participantAdded(QString)), SLOT(slotParticipantAdded(QString))); Q_ASSERT(check); check = connect(m_pRoom, SIGNAL(participantChanged(QString)), SLOT(slotParticipantChanged(QString))); Q_ASSERT(check); check = connect(m_pRoom, SIGNAL(participantRemoved(QString)), SLOT(slotParticipantRemoved(QString))); Q_ASSERT(check); check = connect(m_pRoom, SIGNAL(permissionsReceived(QList<QXmppMucItem>)), SLOT(slotPermissionsReceived(QList<QXmppMucItem>))); Q_ASSERT(check); check = connect(m_pRoom, SIGNAL(configurationReceived(QXmppDataForm)), SLOT(slotConfigurationReceived(QXmppDataForm))); Q_ASSERT(check); //设置昵称 m_pRoom->setNickName(CGlobal::Instance()->GetRoster()->Name()); //加入房间 return m_pRoom->join(); } return false; }
void MailFieldsWidget::onSubjectChanged(const QString &subject) { emit subjectChanged(subject); }