X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fqtui%2Ftopicwidget.cpp;h=511d27522520e6730079cab26afbef1a9fbaa3d9;hp=06303c8385252c528873208042cebd641d109403;hb=fb6f5bcbdebd8660f355a558dd7cc47f6df45965;hpb=8699dd758516d0ded076811e8ea656adc95e69d0 diff --git a/src/qtui/topicwidget.cpp b/src/qtui/topicwidget.cpp index 06303c83..511d2752 100644 --- a/src/qtui/topicwidget.cpp +++ b/src/qtui/topicwidget.cpp @@ -26,15 +26,52 @@ TopicWidget::TopicWidget(QWidget *parent) : QWidget(parent) { ui.setupUi(this); -} - -QString TopicWidget::topic() const { - return ui.topicLineEdit->text(); + ui.topicLineEdit->hide(); + ui.topicLineEdit->installEventFilter(this); + ui.topicButton->show(); } void TopicWidget::setTopic(const QString &newtopic) { + if(_topic == newtopic) + return; + + _topic = newtopic; + ui.topicButton->setAndStyleText(newtopic); ui.topicLineEdit->setText(newtopic); + switchPlain(); +} + +void TopicWidget::on_topicLineEdit_returnPressed() { + switchPlain(); + emit topicChanged(topic()); +} + +void TopicWidget::on_topicButton_clicked() { + switchEditable(); } -TopicWidget::~TopicWidget() { +void TopicWidget::switchEditable() { + ui.topicButton->hide(); + ui.topicLineEdit->show(); + ui.topicLineEdit->setFocus(); +} + +void TopicWidget::switchPlain() { + ui.topicLineEdit->hide(); + ui.topicButton->show(); +} + +bool TopicWidget::eventFilter(QObject *obj, QEvent *event) { + if(event->type() != QEvent::KeyPress) + return QObject::eventFilter(obj, event); + + QKeyEvent *keyEvent = static_cast(event); + + if(keyEvent->key() == Qt::Key_Escape) { + switchPlain(); + ui.topicLineEdit->setText(_topic); + return true; + } + + return false; }