X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fqtui%2Finputwidget.cpp;h=be18830b0795eb1938c4f91cbed24e0e2a00adaf;hp=e30ba78671fd0762ff1a94aeecf8ed3280c75477;hb=a9c2f4157175cfb775980eb72c8312cdffcbfe00;hpb=fd675d4386592325ffbcb994cbb0a83407b01646 diff --git a/src/qtui/inputwidget.cpp b/src/qtui/inputwidget.cpp index e30ba786..be18830b 100644 --- a/src/qtui/inputwidget.cpp +++ b/src/qtui/inputwidget.cpp @@ -88,6 +88,35 @@ InputWidget::InputWidget(QWidget *parent) connect(activateInputline, SIGNAL(triggered()), SLOT(setFocus())); activateInputline->setText(tr("Focus Input Line")); activateInputline->setShortcut(tr("Ctrl+L")); + + actionTextBold = coll->add("TextBold"); + QFont bold; + bold.setBold(true); + actionTextBold->setFont(bold); + actionTextBold->setText(tr("Bold")); + actionTextBold->setShortcut(tr("Ctrl+B")); + actionTextBold->setCheckable(true); + connect(actionTextBold, SIGNAL(triggered()), SLOT(textBold())); + + actionTextUnderline = coll->add("TextUnderline"); + QFont underline; + underline.setUnderline(true); + actionTextUnderline->setFont(underline); + actionTextUnderline->setText(tr("Underline")); + actionTextUnderline->setShortcut(tr("Ctrl+U")); + actionTextUnderline->setCheckable(true); + connect(actionTextUnderline, SIGNAL(triggered()), SLOT(textUnderline())); + + actionTextItalic = coll->add("TextItalic"); + QFont italic; + italic.setItalic(true); + actionTextItalic->setFont(italic); + actionTextItalic->setText(tr("Italic")); + actionTextItalic->setShortcut(tr("Ctrl+I")); + actionTextItalic->setCheckable(true); + connect(actionTextItalic, SIGNAL(triggered()), SLOT(textItalic())); + + connect(inputLine(), SIGNAL(currentCharFormatChanged(QTextCharFormat)), this, SLOT(currentCharFormatChanged(QTextCharFormat))); } InputWidget::~InputWidget() { @@ -324,8 +353,64 @@ void InputWidget::changeNick(const QString &newNick) const { void InputWidget::on_inputEdit_textEntered(const QString &text) const { Client::userInput(currentBufferInfo(), text); + actionTextBold->setChecked(false); + actionTextUnderline->setChecked(false); + actionTextItalic->setChecked(false); + inputLine()->setFontWeight(QFont::Normal); + inputLine()->setFontUnderline(false); + inputLine()->setFontItalic(false); +} + +void InputWidget::mergeFormatOnWordOrSelection(const QTextCharFormat &format) { + QTextCursor cursor = inputLine()->textCursor(); + if (!cursor.hasSelection()) + cursor.select(QTextCursor::WordUnderCursor); + cursor.mergeCharFormat(format); + inputLine()->mergeCurrentCharFormat(format); } +void InputWidget::currentCharFormatChanged(const QTextCharFormat &format) { + fontChanged(format.font()); + colorChanged(format.foreground().color(), format.background().color()); +} + +void InputWidget::textBold() +{ + if (inputLine()->hasFocus()) { + QTextCharFormat fmt; + fmt.setFontWeight(actionTextBold->isChecked() ? QFont::Bold : QFont::Normal); + mergeFormatOnWordOrSelection(fmt); + } +} + +void InputWidget::textUnderline() +{ + if (inputLine()->hasFocus()) { + QTextCharFormat fmt; + fmt.setFontUnderline(actionTextUnderline->isChecked()); + mergeFormatOnWordOrSelection(fmt); + } +} + +void InputWidget::textItalic() +{ + if (inputLine()->hasFocus()) { + QTextCharFormat fmt; + fmt.setFontItalic(actionTextItalic->isChecked()); + mergeFormatOnWordOrSelection(fmt); + } +} + +void InputWidget::fontChanged(const QFont &f) +{ + actionTextBold->setChecked(f.bold()); + actionTextItalic->setChecked(f.italic()); + actionTextUnderline->setChecked(f.underline()); +} + +void InputWidget::colorChanged(const QColor &fg, const QColor &bg) { + //TODO update colorpicker +} // MOUSE WHEEL FILTER MouseWheelFilter::MouseWheelFilter(QObject *parent)