mirror of
https://github.com/Chatterino/chatterino2.git
synced 2024-11-21 22:24:07 +01:00
Merge branch 'master' of https://github.com/fourtf/chatterino2
This commit is contained in:
commit
54ed42f884
5 changed files with 110 additions and 55 deletions
|
@ -6,6 +6,7 @@
|
|||
#include "debug/log.hpp"
|
||||
#include "emotemanager.hpp"
|
||||
#include "messages/messageparseargs.hpp"
|
||||
#include "settingsmanager.hpp"
|
||||
#include "twitch/twitchmessagebuilder.hpp"
|
||||
#include "twitch/twitchparsemessage.hpp"
|
||||
#include "twitch/twitchuser.hpp"
|
||||
|
@ -31,6 +32,9 @@ IrcManager::IrcManager(ChannelManager &_channelManager, Resources &_resources,
|
|||
, resources(_resources)
|
||||
, windowManager(_windowManager)
|
||||
{
|
||||
this->messageSuffix.append(' ');
|
||||
this->messageSuffix.append(QChar(0x206D));
|
||||
|
||||
AccountManager::getInstance().Twitch.userChanged.connect([this]() {
|
||||
this->setUser(AccountManager::getInstance().Twitch.getCurrent());
|
||||
|
||||
|
@ -177,11 +181,15 @@ void IrcManager::disconnect()
|
|||
this->writeConnection->close();
|
||||
}
|
||||
|
||||
void IrcManager::sendMessage(const QString &channelName, const QString &message)
|
||||
void IrcManager::sendMessage(const QString &channelName, QString message)
|
||||
{
|
||||
this->connectionMutex.lock();
|
||||
static int i = 0;
|
||||
|
||||
if (this->writeConnection) {
|
||||
if (SettingsManager::getInstance().allowDuplicateMessages && (++i % 2) == 0) {
|
||||
message.append(this->messageSuffix);
|
||||
}
|
||||
this->writeConnection->sendRaw("PRIVMSG #" + channelName + " :" + message);
|
||||
}
|
||||
|
||||
|
|
|
@ -38,7 +38,7 @@ public:
|
|||
bool tryRemoveIgnoredUser(QString const &username, QString &errorMessage);
|
||||
void removeIgnoredUser(QString const &username);
|
||||
|
||||
void sendMessage(const QString &channelName, const QString &message);
|
||||
void sendMessage(const QString &channelName, QString message);
|
||||
|
||||
void joinChannel(const QString &channelName);
|
||||
void partChannel(const QString &channelName);
|
||||
|
@ -89,6 +89,9 @@ private:
|
|||
|
||||
void onConnected();
|
||||
void onDisconnected();
|
||||
|
||||
private:
|
||||
QByteArray messageSuffix;
|
||||
};
|
||||
|
||||
} // namespace chatterino
|
||||
|
|
|
@ -198,6 +198,11 @@ void SplitInput::clearSelection()
|
|||
this->textInput.setTextCursor(c);
|
||||
}
|
||||
|
||||
QString SplitInput::getInputText() const
|
||||
{
|
||||
return this->textInput.toPlainText();
|
||||
}
|
||||
|
||||
void SplitInput::refreshTheme()
|
||||
{
|
||||
QPalette palette;
|
||||
|
@ -213,6 +218,8 @@ void SplitInput::editTextChanged()
|
|||
{
|
||||
QString text = this->textInput.toPlainText();
|
||||
|
||||
this->textChanged.invoke(text);
|
||||
|
||||
text = text.trimmed();
|
||||
static QRegularExpression spaceRegex("\\s\\s+");
|
||||
text = text.replace(spaceRegex, " ");
|
||||
|
|
|
@ -26,6 +26,9 @@ public:
|
|||
SplitInput(Split *_chatWidget);
|
||||
|
||||
void clearSelection();
|
||||
QString getInputText() const;
|
||||
|
||||
pajlada::Signals::Signal<const QString &> textChanged;
|
||||
|
||||
protected:
|
||||
virtual void paintEvent(QPaintEvent *) override;
|
||||
|
|
|
@ -96,6 +96,26 @@ Split::Split(ChannelManager &_channelManager, SplitContainer *parent)
|
|||
this->input.clearSelection();
|
||||
}
|
||||
});
|
||||
|
||||
this->input.textChanged.connect([this](const QString &newText) {
|
||||
if (!SettingsManager::getInstance().hideEmptyInput) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (newText.length() == 0) {
|
||||
this->input.hide();
|
||||
} else if (this->input.isHidden()) {
|
||||
this->input.show();
|
||||
}
|
||||
});
|
||||
|
||||
SettingsManager::getInstance().hideEmptyInput.connect([this](const bool &hideEmptyInput, auto) {
|
||||
if (hideEmptyInput && this->input.getInputText().length() == 0) {
|
||||
this->input.hide();
|
||||
} else {
|
||||
this->input.show();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
Split::~Split()
|
||||
|
@ -294,7 +314,25 @@ void Split::doOpenStreamlink()
|
|||
QString path = QString::fromStdString(settings.streamlinkPath.getValue());
|
||||
QString channel = QString::fromStdString(this->channelName.getValue());
|
||||
QFileInfo fileinfo = QFileInfo(path);
|
||||
if (fileinfo.exists() && fileinfo.isExecutable()) {
|
||||
|
||||
if (path.isEmpty()) {
|
||||
debug::Log("[Split:doOpenStreamlink] No streamlink path selected in Settings");
|
||||
return;
|
||||
}
|
||||
|
||||
if (!fileinfo.exists()) {
|
||||
debug::Log("[Split:doOpenStreamlink] Streamlink path ({}) is invalid, file does not exist",
|
||||
path);
|
||||
return;
|
||||
}
|
||||
|
||||
if (fileinfo.isDir() || !fileinfo.isExecutable()) {
|
||||
debug::Log("[Split:doOpenStreamlink] Streamlink path ({}) is invalid, it needs to point to "
|
||||
"the streamlink executable",
|
||||
path);
|
||||
return;
|
||||
}
|
||||
|
||||
if (preferredQuality != "choose") {
|
||||
QStringList args = {"twitch.tv/" + channel};
|
||||
QString quality = "";
|
||||
|
@ -322,12 +360,9 @@ void Split::doOpenStreamlink()
|
|||
QProcess *p = new QProcess();
|
||||
// my god that signal though
|
||||
QObject::connect(p, static_cast<void (QProcess::*)(int)>(&QProcess::finished), this,
|
||||
[path, channel, p](int exitCode) {
|
||||
if (exitCode > 0) {
|
||||
return;
|
||||
}
|
||||
[path, channel, p](int) {
|
||||
QString lastLine = QString(p->readAllStandardOutput());
|
||||
lastLine = lastLine.trimmed().split('\n').last();
|
||||
lastLine = lastLine.trimmed().split('\n').last().trimmed();
|
||||
if (lastLine.startsWith("Available streams: ")) {
|
||||
QStringList options;
|
||||
QStringList split =
|
||||
|
@ -347,8 +382,7 @@ void Split::doOpenStreamlink()
|
|||
QualityPopup::showDialog(channel, path, options);
|
||||
}
|
||||
});
|
||||
p->start(path, {"twitch.tv/" + channel});
|
||||
}
|
||||
p->start(path, {"twitch.tv/" + channel, "--default-stream=KKona"});
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue