X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fqtui%2Finputwidget.cpp;h=e30ba78671fd0762ff1a94aeecf8ed3280c75477;hp=7534ab691701cb7f15c110e95d97fc951897096c;hb=3efffa2c3f687b21c8040e9a7ee3830e8f539abf;hpb=d7832127ff8412b09d9fa4e56570d8a890abcbbe diff --git a/src/qtui/inputwidget.cpp b/src/qtui/inputwidget.cpp index 7534ab69..e30ba786 100644 --- a/src/qtui/inputwidget.cpp +++ b/src/qtui/inputwidget.cpp @@ -37,7 +37,6 @@ InputWidget::InputWidget(QWidget *parent) _networkId(0) { ui.setupUi(this); - connect(ui.inputEdit, SIGNAL(textEntered(QString)), this, SLOT(sendText(QString))); connect(ui.ownNick, SIGNAL(activated(QString)), this, SLOT(changeNick(QString))); layout()->setAlignment(ui.ownNick, Qt::AlignBottom); @@ -49,16 +48,20 @@ InputWidget::InputWidget(QWidget *parent) ui.ownNick->setSizeAdjustPolicy(QComboBox::AdjustToContents); ui.ownNick->installEventFilter(new MouseWheelFilter(this)); ui.inputEdit->installEventFilter(new JumpKeyHandler(this)); + ui.inputEdit->installEventFilter(this); ui.inputEdit->setMinHeight(1); ui.inputEdit->setMaxHeight(5); ui.inputEdit->setMode(MultiLineEdit::MultiLine); + ui.inputEdit->setPasteProtectionEnabled(true); new TabCompleter(ui.inputEdit); UiStyleSettings fs("Fonts"); + fs.notify("UseCustomInputWidgetFont", this, SLOT(setUseCustomFont(QVariant))); fs.notify("InputWidget", this, SLOT(setCustomFont(QVariant))); - setCustomFont(fs.value("InputWidget", QFont())); + if(fs.value("UseCustomInputWidgetFont", false).toBool()) + setCustomFont(fs.value("InputWidget", QFont())); UiSettings s("InputWidget"); @@ -73,8 +76,11 @@ InputWidget::InputWidget(QWidget *parent) s.notify("MaxNumLines", this, SLOT(setMaxLines(QVariant))); setMaxLines(s.value("MaxNumLines", 5)); - s.notify("EnableScrollBars", this, SLOT(setEnableScrollBars(QVariant))); - setEnableScrollBars(s.value("EnableScrollBars", true)); + s.notify("EnableScrollBars", this, SLOT(setScrollBarsEnabled(QVariant))); + setScrollBarsEnabled(s.value("EnableScrollBars", true)); + + s.notify("EnableMultiLine", this, SLOT(setMultiLineEnabled(QVariant))); + setMultiLineEnabled(s.value("EnableMultiLine", true)); ActionCollection *coll = QtUi::actionCollection(); @@ -87,6 +93,14 @@ InputWidget::InputWidget(QWidget *parent) InputWidget::~InputWidget() { } +void InputWidget::setUseCustomFont(const QVariant &v) { + if(v.toBool()) { + UiStyleSettings fs("Fonts"); + setCustomFont(fs.value("InputWidget")); + } else + setCustomFont(QFont()); +} + void InputWidget::setCustomFont(const QVariant &v) { QFont font = v.value(); if(font.family().isEmpty()) @@ -95,7 +109,7 @@ void InputWidget::setCustomFont(const QVariant &v) { } void InputWidget::setEnableSpellCheck(const QVariant &v) { - ui.inputEdit->enableSpellCheck(v.toBool()); + ui.inputEdit->setSpellCheckEnabled(v.toBool()); } void InputWidget::setShowNickSelector(const QVariant &v) { @@ -106,40 +120,43 @@ void InputWidget::setMaxLines(const QVariant &v) { ui.inputEdit->setMaxHeight(v.toInt()); } -void InputWidget::setEnableScrollBars(const QVariant &v) { - ui.inputEdit->enableScrollBars(v.toBool()); +void InputWidget::setScrollBarsEnabled(const QVariant &v) { + ui.inputEdit->setScrollBarsEnabled(v.toBool()); +} + +void InputWidget::setMultiLineEnabled(const QVariant &v) { + ui.inputEdit->setMode(v.toBool()? MultiLineEdit::MultiLine : MultiLineEdit::SingleLine); } bool InputWidget::eventFilter(QObject *watched, QEvent *event) { if(event->type() != QEvent::KeyPress) return false; + QKeyEvent *keyEvent = static_cast(event); + // keys from BufferView should be sent to (and focus) the input line BufferView *view = qobject_cast(watched); if(view) { - QKeyEvent *keyEvent = static_cast(event); if(keyEvent->text().length() == 1 && !(keyEvent->modifiers() & (Qt::ControlModifier ^ Qt::AltModifier)) ) { // normal key press QChar c = keyEvent->text().at(0); if(c.isLetterOrNumber() || c.isSpace() || c.isPunct() || c.isSymbol()) { setFocus(); QCoreApplication::sendEvent(inputLine(), keyEvent); return true; - } else - return false; + } } - } - return false; -} - -void InputWidget::keyPressEvent(QKeyEvent * event) { - if(event->matches(QKeySequence::Find)) { - QAction *act = GraphicalUi::actionCollection()->action("ToggleSearchBar"); - if(act) { - act->toggle(); - return; + return false; + } else if(watched == ui.inputEdit) { + if(keyEvent->matches(QKeySequence::Find)) { + QAction *act = GraphicalUi::actionCollection()->action("ToggleSearchBar"); + if(act) { + act->toggle(); + return true; + } } + return false; } - AbstractItemView::keyPressEvent(event); + return false; } void InputWidget::currentChanged(const QModelIndex ¤t, const QModelIndex &previous) { @@ -285,7 +302,7 @@ void InputWidget::updateNickSelector() const { if(!me->userModes().isEmpty()) nicks[nickIdx] += QString(" (+%1)").arg(me->userModes()); } - + ui.ownNick->addItems(nicks); if(me && me->isAway()) @@ -305,7 +322,7 @@ void InputWidget::changeNick(const QString &newNick) const { Client::userInput(BufferInfo::fakeStatusBuffer(net->networkId()), QString("/NICK %1").arg(newNick)); } -void InputWidget::sendText(const QString &text) const { +void InputWidget::on_inputEdit_textEntered(const QString &text) const { Client::userInput(currentBufferInfo(), text); }