<commit_before>#include "widgets/chatwidgetinput.hpp"
#include "chatwidget.hpp"
#include "colorscheme.hpp"
#include "completionmanager.hpp"
#include "ircmanager.hpp"
#include "settingsmanager.hpp"

#include <QCompleter>
#include <QPainter>
#include <boost/signals2.hpp>

namespace chatterino {
namespace widgets {

ChatWidgetInput::ChatWidgetInput(ChatWidget *_chatWidget)
    : BaseWidget(_chatWidget)
    , chatWidget(_chatWidget)
    , emotesLabel(this)
{
    this->setMaximumHeight(150);

    this->setLayout(&this->hbox);

    this->hbox.setMargin(4);

    this->hbox.addLayout(&this->editContainer);
    this->hbox.addLayout(&this->vbox);

    this->editContainer.addWidget(&this->textInput);
    this->editContainer.setMargin(4);

    this->vbox.addWidget(&this->textLengthLabel);
    this->vbox.addStretch(1);
    this->vbox.addWidget(&this->emotesLabel);

    this->textLengthLabel.setText("100");
    this->textLengthLabel.setAlignment(Qt::AlignRight);

    this->emotesLabel.getLabel().setTextFormat(Qt::RichText);
    this->emotesLabel.getLabel().setText(
        "<img src=':/images/Emoji_Color_1F60A_19.png' width='12' height='12' "
        "/>");

    connect(&textInput, &ResizingTextEdit::textChanged, this, &ChatWidgetInput::editTextChanged);

    this->refreshTheme();
    this->setMessageLengthVisible(SettingsManager::getInstance().showMessageLength.get());

    auto completer = new QCompleter(
        this->chatWidget->completionManager.createModel(this->chatWidget->channelName));

    this->textInput.setCompleter(completer);

    this->textInput.keyPressed.connect([this](QKeyEvent *event) {
        if (event->key() == Qt::Key_Enter || event->key() == Qt::Key_Return) {
            auto c = this->chatWidget->getChannel();
            if (c == nullptr) {
                return;
            }
            c->sendMessage(textInput.toPlainText());
            prevMsg.append(textInput.toPlainText());
            event->accept();
            if(!(event->modifiers() == Qt::ControlModifier))
            {
                textInput.setText(QString());
                prevIndex = 0;
            }
            else if(textInput.toPlainText() == prevMsg.at(prevMsg.size()-1))
            {
                prevMsg.removeLast();
            }
            prevIndex = prevMsg.size();
        }
        else if(event->key() == Qt::Key_Up){
            if(prevMsg.size() && prevIndex){
                prevIndex--;
                textInput.setText(prevMsg.at(prevIndex));
            }
        }
        else if(event->key() == Qt::Key_Down){
            if(prevIndex != (prevMsg.size() - 1) && prevIndex != prevMsg.size()){
                prevIndex++;
                textInput.setText(prevMsg.at(prevIndex));
            } else {
                prevIndex = prevMsg.size();
                textInput.setText(QString());
            }
        }
    });

    /* XXX(pajlada): FIX THIS
    QObject::connect(&Settings::getInstance().showMessageLength,
                     &BoolSetting::valueChanged, this,
                     &ChatWidgetInput::setMessageLengthVisible);
                     */
}

ChatWidgetInput::~ChatWidgetInput()
{
    /* XXX(pajlada): FIX THIS
    QObject::disconnect(
        &Settings::getInstance().getShowMessageLength(),
        &BoolSetting::valueChanged, this,
        &ChatWidgetInput::setMessageLengthVisible);
        */
}
<commit_msg>reformat<commit_after>#include "widgets/chatwidgetinput.hpp"
#include "chatwidget.hpp"
#include "colorscheme.hpp"
#include "completionmanager.hpp"
#include "ircmanager.hpp"
#include "settingsmanager.hpp"

#include <QCompleter>
#include <QPainter>
#include <boost/signals2.hpp>

namespace chatterino {
namespace widgets {

ChatWidgetInput::ChatWidgetInput(ChatWidget *_chatWidget)
    : BaseWidget(_chatWidget)
    , chatWidget(_chatWidget)
    , emotesLabel(this)
{
    this->setMaximumHeight(150);

    this->setLayout(&this->hbox);

    this->hbox.setMargin(4);

    this->hbox.addLayout(&this->editContainer);
    this->hbox.addLayout(&this->vbox);

    this->editContainer.addWidget(&this->textInput);
    this->editContainer.setMargin(4);

    this->vbox.addWidget(&this->textLengthLabel);
    this->vbox.addStretch(1);
    this->vbox.addWidget(&this->emotesLabel);

    this->textLengthLabel.setText("100");
    this->textLengthLabel.setAlignment(Qt::AlignRight);

    this->emotesLabel.getLabel().setTextFormat(Qt::RichText);
    this->emotesLabel.getLabel().setText(
        "<img src=':/images/Emoji_Color_1F60A_19.png' width='12' height='12' "
        "/>");

    connect(&textInput, &ResizingTextEdit::textChanged, this, &ChatWidgetInput::editTextChanged);

    this->refreshTheme();
    this->setMessageLengthVisible(SettingsManager::getInstance().showMessageLength.get());

    auto completer = new QCompleter(
        this->chatWidget->completionManager.createModel(this->chatWidget->channelName));

    this->textInput.setCompleter(completer);

    this->textInput.keyPressed.connect([this](QKeyEvent *event) {
        if (event->key() == Qt::Key_Enter || event->key() == Qt::Key_Return) {
            auto c = this->chatWidget->getChannel();
            if (c == nullptr) {
                return;
            }
            c->sendMessage(textInput.toPlainText());
            prevMsg.append(textInput.toPlainText());
            event->accept();
            if (!(event->modifiers() == Qt::ControlModifier)) {
                textInput.setText(QString());
                prevIndex = 0;
            } else if (textInput.toPlainText() == prevMsg.at(prevMsg.size() - 1)) {
                prevMsg.removeLast();
            }
            prevIndex = prevMsg.size();
        } else if (event->key() == Qt::Key_Up) {
            if (prevMsg.size() && prevIndex) {
                prevIndex--;
                textInput.setText(prevMsg.at(prevIndex));
            }
        } else if (event->key() == Qt::Key_Down) {
            if (prevIndex != (prevMsg.size() - 1) && prevIndex != prevMsg.size()) {
                prevIndex++;
                textInput.setText(prevMsg.at(prevIndex));
            } else {
                prevIndex = prevMsg.size();
                textInput.setText(QString());
            }
        }
    });

    /* XXX(pajlada): FIX THIS
    QObject::connect(&Settings::getInstance().showMessageLength,
                     &BoolSetting::valueChanged, this,
                     &ChatWidgetInput::setMessageLengthVisible);
                     */
}

ChatWidgetInput::~ChatWidgetInput()
{
    /* XXX(pajlada): FIX THIS
    QObject::disconnect(
        &Settings::getInstance().getShowMessageLength(),
        &BoolSetting::valueChanged, this,
        &ChatWidgetInput::setMessageLengthVisible);
        */
}

{'fraction_non_alphanumeric': 0.15098825977113983, 'fraction_numerical': 0.00653886164363204, 'mean_word_length': 2.6516549104720566, 'pattern_counts': {'":': 0, '<': 11, '<?xml version=': 0, '>': 85, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '4205332', 'n_tokens_mistral': 2027, 'n_tokens_neox': 1943, 'n_words': 251}