3bf111a091
There are missing parts to the "account-based" emotes that needs to be completed before emote completion can be considered done. For now, when I've been testing, I've been manually injecting the oauthClient and oauthToken to the settings file with the `user_subscriptions` scope
129 lines
3.5 KiB
C++
129 lines
3.5 KiB
C++
#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());
|
|
event->accept();
|
|
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);
|
|
*/
|
|
}
|
|
|
|
void ChatWidgetInput::refreshTheme()
|
|
{
|
|
QPalette palette;
|
|
|
|
palette.setColor(QPalette::Foreground, this->colorScheme.Text);
|
|
|
|
this->textLengthLabel.setPalette(palette);
|
|
|
|
this->textInput.setStyleSheet(this->colorScheme.InputStyleSheet);
|
|
}
|
|
|
|
void ChatWidgetInput::editTextChanged()
|
|
{
|
|
}
|
|
|
|
// void
|
|
// ChatWidgetInput::editKeyPressed(QKeyEvent *event)
|
|
//{
|
|
// if (event->key() == Qt::Key_Enter) {
|
|
// event->accept();
|
|
// IrcManager::send("PRIVMSG #" + edit.toPlainText();
|
|
// edit.setText(QString());
|
|
// }
|
|
//}
|
|
|
|
void ChatWidgetInput::paintEvent(QPaintEvent *)
|
|
{
|
|
QPainter painter(this);
|
|
|
|
painter.fillRect(this->rect(), this->colorScheme.ChatInputBackground);
|
|
painter.setPen(this->colorScheme.ChatInputBorder);
|
|
painter.drawRect(0, 0, this->width() - 1, this->height() - 1);
|
|
}
|
|
|
|
void ChatWidgetInput::resizeEvent(QResizeEvent *)
|
|
{
|
|
if (this->height() == this->maximumHeight()) {
|
|
this->textInput.setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded);
|
|
} else {
|
|
this->textInput.setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
|
|
}
|
|
}
|
|
|
|
} // namespace widgets
|
|
} // namespace chatterino
|