mirror of
https://github.com/Chatterino/chatterino2.git
synced 2024-11-13 19:49:51 +01:00
asd
This commit is contained in:
parent
4ccbc8d4e4
commit
2b4fa8071f
3
.gitmodules
vendored
Normal file
3
.gitmodules
vendored
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
[submodule "lib/libcommuni"]
|
||||||
|
path = lib/libcommuni
|
||||||
|
url = https://github.com/communi/libcommuni
|
51
channel.cpp
51
channel.cpp
|
@ -3,6 +3,8 @@
|
||||||
const Channel Channel::whispers = Channel(QString("/whispers"));
|
const Channel Channel::whispers = Channel(QString("/whispers"));
|
||||||
const Channel Channel::mentions = Channel(QString("/mentions"));
|
const Channel Channel::mentions = Channel(QString("/mentions"));
|
||||||
|
|
||||||
|
QMap<QString, Channel*> Channel::channels = QMap<QString, Channel*>();
|
||||||
|
|
||||||
Channel::Channel(QString channel)
|
Channel::Channel(QString channel)
|
||||||
{
|
{
|
||||||
name = (channel.length() > 0 && channel[0] == '#') ? channel.mid(1) : channel;
|
name = (channel.length() > 0 && channel[0] == '#') ? channel.mid(1) : channel;
|
||||||
|
@ -11,6 +13,55 @@ Channel::Channel(QString channel)
|
||||||
popoutPlayerLink = "https://player.twitch.tv/?channel=" + name;
|
popoutPlayerLink = "https://player.twitch.tv/?channel=" + name;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Channel* Channel::addChannel(const QString &channel)
|
||||||
|
{
|
||||||
|
auto c = getChannel(channel);
|
||||||
|
|
||||||
|
if (c == NULL) {
|
||||||
|
c = new Channel(channel);
|
||||||
|
channels.insert(channel, c);
|
||||||
|
|
||||||
|
return c;
|
||||||
|
}
|
||||||
|
|
||||||
|
c->referenceCount++;
|
||||||
|
|
||||||
|
return c;
|
||||||
|
}
|
||||||
|
|
||||||
|
Channel* Channel::getChannel(const QString &channel)
|
||||||
|
{
|
||||||
|
if (channel == "/whispers") {
|
||||||
|
return const_cast<Channel*>(&whispers);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (channel == "/mentions") {
|
||||||
|
return const_cast<Channel*>(&mentions);
|
||||||
|
}
|
||||||
|
|
||||||
|
auto a = channels.find(channel);
|
||||||
|
|
||||||
|
if (a == channels.end()) {
|
||||||
|
return *a;
|
||||||
|
}
|
||||||
|
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Channel::removeChannel(const QString &channel)
|
||||||
|
{
|
||||||
|
auto c = getChannel(channel);
|
||||||
|
|
||||||
|
if (c == NULL) return;
|
||||||
|
|
||||||
|
c->referenceCount--;
|
||||||
|
|
||||||
|
if (c->referenceCount == 0) {
|
||||||
|
channels.remove(channel);
|
||||||
|
delete c;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
QString Channel::getSubLink() { return subLink ; }
|
QString Channel::getSubLink() { return subLink ; }
|
||||||
QString Channel::getChannelLink() { return channelLink ; }
|
QString Channel::getChannelLink() { return channelLink ; }
|
||||||
QString Channel::getPopoutPlayerLink() { return popoutPlayerLink ; }
|
QString Channel::getPopoutPlayerLink() { return popoutPlayerLink ; }
|
||||||
|
|
10
channel.h
10
channel.h
|
@ -2,6 +2,7 @@
|
||||||
#define CHANNEL_H
|
#define CHANNEL_H
|
||||||
|
|
||||||
#include "QString"
|
#include "QString"
|
||||||
|
#include "QMap"
|
||||||
|
|
||||||
class Channel
|
class Channel
|
||||||
{
|
{
|
||||||
|
@ -9,8 +10,9 @@ public:
|
||||||
static const Channel whispers;
|
static const Channel whispers;
|
||||||
static const Channel mentions;
|
static const Channel mentions;
|
||||||
|
|
||||||
static Channel addChannel(QString channel);
|
static Channel* addChannel(const QString &channel);
|
||||||
static void removeChannel(QString channel);
|
static Channel* getChannel(const QString &channel);
|
||||||
|
static void removeChannel(const QString &channel);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
QString getSubLink();
|
QString getSubLink();
|
||||||
|
@ -25,7 +27,9 @@ public:
|
||||||
private:
|
private:
|
||||||
Channel(QString channel);
|
Channel(QString channel);
|
||||||
|
|
||||||
int referenceCount = 0;
|
static QMap<QString, Channel*> channels;
|
||||||
|
|
||||||
|
int referenceCount = 1;
|
||||||
|
|
||||||
QString name;
|
QString name;
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,11 @@
|
||||||
#
|
#
|
||||||
#-------------------------------------------------
|
#-------------------------------------------------
|
||||||
|
|
||||||
QT += core gui
|
QT += core gui network
|
||||||
|
CONFIG += communi c++11
|
||||||
|
COMMUNI += core model util
|
||||||
|
|
||||||
|
include(lib/libcommuni/src/src.pri)
|
||||||
|
|
||||||
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
|
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
|
||||||
|
|
||||||
|
@ -38,7 +42,11 @@ SOURCES += main.cpp\
|
||||||
channel.cpp \
|
channel.cpp \
|
||||||
dialog.cpp \
|
dialog.cpp \
|
||||||
settingsdialog.cpp \
|
settingsdialog.cpp \
|
||||||
settingsdialogtab.cpp
|
settingsdialogtab.cpp \
|
||||||
|
scrollbar.cpp \
|
||||||
|
scrollbarhighlight.cpp \
|
||||||
|
ircmanager.cpp \
|
||||||
|
lambdaqrunnable.cpp
|
||||||
|
|
||||||
HEADERS += mainwindow.h \
|
HEADERS += mainwindow.h \
|
||||||
chatwidget.h \
|
chatwidget.h \
|
||||||
|
@ -54,7 +62,11 @@ HEADERS += mainwindow.h \
|
||||||
channel.h \
|
channel.h \
|
||||||
dialog.h \
|
dialog.h \
|
||||||
settingsdialog.h \
|
settingsdialog.h \
|
||||||
settingsdialogtab.h
|
settingsdialogtab.h \
|
||||||
|
scrollbar.h \
|
||||||
|
scrollbarhighlight.h \
|
||||||
|
ircmanager.h \
|
||||||
|
lambdaqrunnable.h
|
||||||
|
|
||||||
FORMS += \
|
FORMS += \
|
||||||
dialog.ui
|
dialog.ui
|
||||||
|
|
|
@ -15,9 +15,6 @@ ChatWidget::ChatWidget(QWidget *parent)
|
||||||
vbox.addWidget(&header);
|
vbox.addWidget(&header);
|
||||||
vbox.addWidget(&view);
|
vbox.addWidget(&view);
|
||||||
vbox.addWidget(&input);
|
vbox.addWidget(&input);
|
||||||
|
|
||||||
// QFont font("Segoe UI", 15, QFont::Normal, false);
|
|
||||||
// this->font = font;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ChatWidget::~ChatWidget()
|
ChatWidget::~ChatWidget()
|
||||||
|
@ -30,14 +27,4 @@ void ChatWidget::paintEvent(QPaintEvent *)
|
||||||
QPainter painter (this);
|
QPainter painter (this);
|
||||||
|
|
||||||
painter.fillRect(rect(), ColorScheme::getInstance().ChatBackground);
|
painter.fillRect(rect(), ColorScheme::getInstance().ChatBackground);
|
||||||
|
|
||||||
// QColor color (255, 0, 0);
|
|
||||||
|
|
||||||
// painter.setPen(color);
|
|
||||||
|
|
||||||
// painter.setFont(this->font);
|
|
||||||
// painter.drawRect(0, 0, width() - 1, height() - 1);
|
|
||||||
|
|
||||||
// QString text = "test text";
|
|
||||||
// painter.drawText(20, 20, text);
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
#include "chatwidgetheader.h"
|
#include "chatwidgetheader.h"
|
||||||
#include "chatwidgetview.h"
|
#include "chatwidgetview.h"
|
||||||
#include "chatwidgetinput.h"
|
#include "chatwidgetinput.h"
|
||||||
|
#include "channel.h"
|
||||||
|
|
||||||
class ChatWidget : public QWidget
|
class ChatWidget : public QWidget
|
||||||
{
|
{
|
||||||
|
@ -25,6 +26,9 @@ private:
|
||||||
ChatWidgetHeader header;
|
ChatWidgetHeader header;
|
||||||
ChatWidgetView view;
|
ChatWidgetView view;
|
||||||
ChatWidgetInput input;
|
ChatWidgetInput input;
|
||||||
|
|
||||||
|
|
||||||
|
Channel* channel = NULL;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // CHATWIDGET_H
|
#endif // CHATWIDGET_H
|
||||||
|
|
|
@ -1,7 +1,14 @@
|
||||||
#include "chatwidgetview.h"
|
#include "chatwidgetview.h"
|
||||||
|
|
||||||
ChatWidgetView::ChatWidgetView()
|
ChatWidgetView::ChatWidgetView()
|
||||||
: QWidget()
|
: QWidget(),
|
||||||
|
scrollbar(this)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ChatWidgetView::resizeEvent(QResizeEvent *)
|
||||||
|
{
|
||||||
|
scrollbar.resize(scrollbar.width(), height());
|
||||||
|
scrollbar.move(width() - scrollbar.width(), 0);
|
||||||
|
}
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
#define CHATVIEW_H
|
#define CHATVIEW_H
|
||||||
|
|
||||||
#include <QWidget>
|
#include <QWidget>
|
||||||
|
#include "scrollbar.h"
|
||||||
|
|
||||||
class ChatWidgetView : public QWidget
|
class ChatWidgetView : public QWidget
|
||||||
{
|
{
|
||||||
|
@ -9,6 +10,12 @@ class ChatWidgetView : public QWidget
|
||||||
|
|
||||||
public:
|
public:
|
||||||
ChatWidgetView();
|
ChatWidgetView();
|
||||||
|
|
||||||
|
protected:
|
||||||
|
void resizeEvent(QResizeEvent *);
|
||||||
|
|
||||||
|
private:
|
||||||
|
ScrollBar scrollbar;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // CHATVIEW_H
|
#endif // CHATVIEW_H
|
||||||
|
|
|
@ -51,6 +51,9 @@ public:
|
||||||
QColor TabSelectedText;
|
QColor TabSelectedText;
|
||||||
QColor TabHighlightedText;
|
QColor TabHighlightedText;
|
||||||
|
|
||||||
|
const int HighlightColorCount = 3;
|
||||||
|
QColor HighlightColors[3];
|
||||||
|
|
||||||
static ColorScheme& getInstance()
|
static ColorScheme& getInstance()
|
||||||
{
|
{
|
||||||
static ColorScheme instance;
|
static ColorScheme instance;
|
||||||
|
|
81
ircmanager.cpp
Normal file
81
ircmanager.cpp
Normal file
|
@ -0,0 +1,81 @@
|
||||||
|
#include "ircmanager.h"
|
||||||
|
#include "ircconnection.h"
|
||||||
|
#include "irccommand.h"
|
||||||
|
#include "future"
|
||||||
|
#include "QThreadPool"
|
||||||
|
#include "QRunnable"
|
||||||
|
#include "lambdaqrunnable.h"
|
||||||
|
|
||||||
|
IrcConnection* IrcManager::connection = NULL;
|
||||||
|
QMutex* IrcManager::connectionMutex = new QMutex();
|
||||||
|
long IrcManager::connectionIteration = 0;
|
||||||
|
|
||||||
|
IrcManager::IrcManager()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void IrcManager::connect()
|
||||||
|
{
|
||||||
|
disconnect();
|
||||||
|
|
||||||
|
QThreadPool::globalInstance()->start(new LambdaQRunnable([]{ beginConnecting(); return false; }));
|
||||||
|
}
|
||||||
|
|
||||||
|
void IrcManager::beginConnecting()
|
||||||
|
{
|
||||||
|
int iteration = ++connectionIteration;
|
||||||
|
|
||||||
|
auto c = new IrcConnection();
|
||||||
|
|
||||||
|
QObject::connect(c,
|
||||||
|
&IrcConnection::messageReceived,
|
||||||
|
&messageReceived);
|
||||||
|
QObject::connect(c,
|
||||||
|
&IrcConnection::privateMessageReceived,
|
||||||
|
&privateMessageReceived);
|
||||||
|
|
||||||
|
c->setHost("irc.chat.twitch.tv");
|
||||||
|
c->setPort(6667);
|
||||||
|
|
||||||
|
c->setUserName("justinfan123");
|
||||||
|
c->setNickName("justinfan123");
|
||||||
|
c->setRealName("justinfan123");
|
||||||
|
c->sendRaw("JOIN #hsdogdog");
|
||||||
|
|
||||||
|
c->sendCommand(IrcCommand::createCapability("REQ", "twitch.tv/commands"));
|
||||||
|
c->sendCommand(IrcCommand::createCapability("REQ", "twitch.tv/tags"));
|
||||||
|
|
||||||
|
c->open();
|
||||||
|
|
||||||
|
connectionMutex->lock();
|
||||||
|
if (iteration == connectionIteration) {
|
||||||
|
connection = c;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
delete c;
|
||||||
|
}
|
||||||
|
connectionMutex->unlock();
|
||||||
|
}
|
||||||
|
|
||||||
|
void IrcManager::disconnect()
|
||||||
|
{
|
||||||
|
connectionMutex->lock();
|
||||||
|
|
||||||
|
if (connection != NULL) {
|
||||||
|
delete connection;
|
||||||
|
connection = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
connectionMutex->unlock();
|
||||||
|
}
|
||||||
|
|
||||||
|
void IrcManager::messageReceived(IrcMessage *message)
|
||||||
|
{
|
||||||
|
// qInfo(message->());
|
||||||
|
}
|
||||||
|
|
||||||
|
void IrcManager::privateMessageReceived(IrcPrivateMessage *message)
|
||||||
|
{
|
||||||
|
qInfo(message->content().toStdString().c_str());
|
||||||
|
}
|
28
ircmanager.h
Normal file
28
ircmanager.h
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
#ifndef IRCMANAGER_H
|
||||||
|
#define IRCMANAGER_H
|
||||||
|
|
||||||
|
#define TWITCH_MAX_MESSAGELENGTH 500
|
||||||
|
|
||||||
|
#include "IrcMessage"
|
||||||
|
#include "QMutex"
|
||||||
|
|
||||||
|
class IrcManager
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
static void connect();
|
||||||
|
static void disconnect();
|
||||||
|
|
||||||
|
private:
|
||||||
|
IrcManager();
|
||||||
|
|
||||||
|
static void beginConnecting();
|
||||||
|
|
||||||
|
static IrcConnection* connection;
|
||||||
|
static QMutex* connectionMutex;
|
||||||
|
static long connectionIteration;
|
||||||
|
|
||||||
|
static void messageReceived(IrcMessage* message);
|
||||||
|
static void privateMessageReceived(IrcPrivateMessage* message);
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // IRCMANAGER_H
|
11
lambdaqrunnable.cpp
Normal file
11
lambdaqrunnable.cpp
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
#include "lambdaqrunnable.h"
|
||||||
|
|
||||||
|
LambdaQRunnable::LambdaQRunnable(std::function<bool ()> action)
|
||||||
|
{
|
||||||
|
this->action = action;
|
||||||
|
}
|
||||||
|
|
||||||
|
void LambdaQRunnable::run()
|
||||||
|
{
|
||||||
|
action();
|
||||||
|
}
|
18
lambdaqrunnable.h
Normal file
18
lambdaqrunnable.h
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
#ifndef LAMBDAQRUNNABLE_H
|
||||||
|
#define LAMBDAQRUNNABLE_H
|
||||||
|
|
||||||
|
#include "QRunnable"
|
||||||
|
#include "functional"
|
||||||
|
|
||||||
|
class LambdaQRunnable : public QRunnable
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
LambdaQRunnable(std::function<bool ()> action);
|
||||||
|
|
||||||
|
void run();
|
||||||
|
|
||||||
|
private:
|
||||||
|
std::function<bool ()> action;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // LAMBDAQRUNNABLE_H
|
1
lib/libcommuni
Submodule
1
lib/libcommuni
Submodule
|
@ -0,0 +1 @@
|
||||||
|
Subproject commit 1c7ebef19662ba5b09a78e01fc77dd901e302947
|
3
main.cpp
3
main.cpp
|
@ -1,6 +1,7 @@
|
||||||
#include <QApplication>
|
#include <QApplication>
|
||||||
#include "mainwindow.h"
|
#include "mainwindow.h"
|
||||||
#include "colorscheme.h"
|
#include "colorscheme.h"
|
||||||
|
#include "ircmanager.h"
|
||||||
|
|
||||||
int main(int argc, char *argv[])
|
int main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
|
@ -11,5 +12,7 @@ int main(int argc, char *argv[])
|
||||||
MainWindow w;
|
MainWindow w;
|
||||||
w.show();
|
w.show();
|
||||||
|
|
||||||
|
IrcManager::connect();
|
||||||
|
|
||||||
return a.exec();
|
return a.exec();
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,6 +2,10 @@
|
||||||
background-color: #333;
|
background-color: #333;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
* {
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
SettingsDialogTab {
|
SettingsDialogTab {
|
||||||
color: #FFF;
|
color: #FFF;
|
||||||
}
|
}
|
||||||
|
@ -10,6 +14,6 @@ SettingsDialogTab:hover {
|
||||||
border: 1px solid grey;
|
border: 1px solid grey;
|
||||||
}
|
}
|
||||||
|
|
||||||
QLabel {
|
QLabel, QCheckBox, QGroupBox {
|
||||||
color: white;
|
color: white;
|
||||||
}
|
}
|
||||||
|
|
83
scrollbar.cpp
Normal file
83
scrollbar.cpp
Normal file
|
@ -0,0 +1,83 @@
|
||||||
|
#include "QPainter"
|
||||||
|
#include "scrollbar.h"
|
||||||
|
#include "colorscheme.h"
|
||||||
|
|
||||||
|
ScrollBar::ScrollBar(QWidget* widget)
|
||||||
|
: QWidget(widget),
|
||||||
|
mutex()
|
||||||
|
{
|
||||||
|
resize(16, 100);
|
||||||
|
}
|
||||||
|
|
||||||
|
ScrollBar::~ScrollBar()
|
||||||
|
{
|
||||||
|
auto highlight = highlights;
|
||||||
|
|
||||||
|
while (highlight != NULL)
|
||||||
|
{
|
||||||
|
auto tmp = highlight->next;
|
||||||
|
delete highlight;
|
||||||
|
highlight = tmp;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ScrollBar::removeHighlightsWhere(std::function<bool (ScrollBarHighlight&)> func)
|
||||||
|
{
|
||||||
|
mutex.lock();
|
||||||
|
|
||||||
|
ScrollBarHighlight* last = NULL;
|
||||||
|
ScrollBarHighlight* current = highlights;
|
||||||
|
|
||||||
|
while (current != NULL)
|
||||||
|
{
|
||||||
|
if (func(*current))
|
||||||
|
{
|
||||||
|
if (last == NULL)
|
||||||
|
{
|
||||||
|
highlights = current->next;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
last->next = current->next;
|
||||||
|
}
|
||||||
|
|
||||||
|
auto oldCurrent = current;
|
||||||
|
|
||||||
|
current = current->next;
|
||||||
|
last = current;
|
||||||
|
|
||||||
|
delete oldCurrent;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
mutex.unlock();
|
||||||
|
}
|
||||||
|
|
||||||
|
void ScrollBar::addHighlight(ScrollBarHighlight* highlight)
|
||||||
|
{
|
||||||
|
mutex.lock();
|
||||||
|
|
||||||
|
if (highlights == NULL)
|
||||||
|
{
|
||||||
|
highlights = highlight;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
highlight->next = highlights->next;
|
||||||
|
highlights->next = highlight;
|
||||||
|
}
|
||||||
|
|
||||||
|
mutex.unlock();
|
||||||
|
}
|
||||||
|
|
||||||
|
void ScrollBar::paintEvent(QPaintEvent *)
|
||||||
|
{
|
||||||
|
QPainter painter(this);
|
||||||
|
painter.fillRect(rect(), ColorScheme::getInstance().ScrollbarBG);
|
||||||
|
|
||||||
|
mutex.lock();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
mutex.unlock();
|
||||||
|
}
|
28
scrollbar.h
Normal file
28
scrollbar.h
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
#ifndef SCROLLBAR_H
|
||||||
|
#define SCROLLBAR_H
|
||||||
|
|
||||||
|
#include <functional>
|
||||||
|
#include "QWidget"
|
||||||
|
#include "QMutex"
|
||||||
|
#include "scrollbarhighlight.h"
|
||||||
|
|
||||||
|
class ScrollBar : public QWidget
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
ScrollBar(QWidget* parent = 0);
|
||||||
|
~ScrollBar();
|
||||||
|
|
||||||
|
void removeHighlightsWhere(std::function<bool (ScrollBarHighlight&)> func);
|
||||||
|
void addHighlight(ScrollBarHighlight* highlight);
|
||||||
|
|
||||||
|
private:
|
||||||
|
QMutex mutex;
|
||||||
|
ScrollBarHighlight* highlights = NULL;
|
||||||
|
void paintEvent(QPaintEvent *);
|
||||||
|
|
||||||
|
QRect thumbRect;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // SCROLLBAR_H
|
12
scrollbarhighlight.cpp
Normal file
12
scrollbarhighlight.cpp
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
#include "scrollbarhighlight.h"
|
||||||
|
#include "colorscheme.h"
|
||||||
|
|
||||||
|
ScrollBarHighlight::ScrollBarHighlight(float position, int colorIndex, Style style, QString tag)
|
||||||
|
: m_position(position),
|
||||||
|
m_colorIndex(std::max(0, std::min(ColorScheme::getInstance().HighlightColorCount, colorIndex))),
|
||||||
|
m_style(style),
|
||||||
|
m_tag(tag),
|
||||||
|
next(NULL)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
43
scrollbarhighlight.h
Normal file
43
scrollbarhighlight.h
Normal file
|
@ -0,0 +1,43 @@
|
||||||
|
#ifndef SCROLLBARHIGHLIGHT_H
|
||||||
|
#define SCROLLBARHIGHLIGHT_H
|
||||||
|
|
||||||
|
#include "QString"
|
||||||
|
|
||||||
|
class ScrollBarHighlight
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
enum Style {
|
||||||
|
Default,
|
||||||
|
Left,
|
||||||
|
Right,
|
||||||
|
SingleLine
|
||||||
|
};
|
||||||
|
|
||||||
|
ScrollBarHighlight(float position, int colorIndex, Style style = Default, QString tag = "");
|
||||||
|
|
||||||
|
Style style() {
|
||||||
|
return m_style;
|
||||||
|
}
|
||||||
|
|
||||||
|
float position() {
|
||||||
|
return m_position;
|
||||||
|
}
|
||||||
|
|
||||||
|
int colorIndex() {
|
||||||
|
return m_colorIndex;
|
||||||
|
}
|
||||||
|
|
||||||
|
QString getTag() {
|
||||||
|
return m_tag;
|
||||||
|
}
|
||||||
|
|
||||||
|
ScrollBarHighlight* next;
|
||||||
|
|
||||||
|
private:
|
||||||
|
Style m_style;
|
||||||
|
float m_position;
|
||||||
|
int m_colorIndex;
|
||||||
|
QString m_tag;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // SCROLLBARHIGHLIGHT_H
|
|
@ -7,6 +7,7 @@
|
||||||
#include "QLabel"
|
#include "QLabel"
|
||||||
#include "QFormLayout"
|
#include "QFormLayout"
|
||||||
#include "QComboBox"
|
#include "QComboBox"
|
||||||
|
#include "QGroupBox"
|
||||||
|
|
||||||
SettingsDialog::SettingsDialog()
|
SettingsDialog::SettingsDialog()
|
||||||
{
|
{
|
||||||
|
@ -54,22 +55,63 @@ void SettingsDialog::addTabs()
|
||||||
vbox = new QVBoxLayout();
|
vbox = new QVBoxLayout();
|
||||||
|
|
||||||
{
|
{
|
||||||
|
auto group = new QGroupBox("Application");
|
||||||
|
|
||||||
auto form = new QFormLayout();
|
auto form = new QFormLayout();
|
||||||
auto combo = new QComboBox();
|
auto combo = new QComboBox();
|
||||||
auto slider = new QSlider(Qt::Horizontal);
|
auto slider = new QSlider(Qt::Horizontal);
|
||||||
auto font = new QPushButton("select");
|
auto font = new QPushButton("select");
|
||||||
|
|
||||||
form->addRow("Theme:", combo);
|
form->addRow("Theme:", combo);
|
||||||
form->addRow("Theme Hue:", slider);
|
form->addRow("Theme color:", slider);
|
||||||
form->addRow("Font:", font);
|
form->addRow("Font:", font);
|
||||||
|
|
||||||
vbox->addLayout(form);
|
group->setLayout(form);
|
||||||
|
|
||||||
|
vbox->addWidget(group);
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
auto group = new QGroupBox("Messages");
|
||||||
|
|
||||||
|
auto v = new QVBoxLayout();
|
||||||
|
v->addWidget(createCheckbox("Show timestamp", ""));
|
||||||
|
v->addWidget(createCheckbox("Show seconds in timestamp", ""));
|
||||||
|
v->addWidget(createCheckbox("Allow sending duplicate messages (add a space at the end)", ""));
|
||||||
|
v->addWidget(createCheckbox("Seperate messages", ""));
|
||||||
|
v->addWidget(createCheckbox("Show message length", ""));
|
||||||
|
|
||||||
|
group->setLayout(v);
|
||||||
|
|
||||||
|
vbox->addWidget(group);
|
||||||
}
|
}
|
||||||
|
|
||||||
vbox->addStretch(1);
|
vbox->addStretch(1);
|
||||||
|
|
||||||
addTab(vbox, "Appearance", ":/images/AppearanceEditorPart_16x.png");
|
addTab(vbox, "Appearance", ":/images/AppearanceEditorPart_16x.png");
|
||||||
|
|
||||||
|
// Behaviour
|
||||||
|
vbox = new QVBoxLayout();
|
||||||
|
|
||||||
|
vbox->addWidget(createCheckbox("Hide input box if empty", ""));
|
||||||
|
vbox->addWidget(createCheckbox("Mention users with a @ (except in commands)", ""));
|
||||||
|
vbox->addWidget(createCheckbox("Window always on top", ""));
|
||||||
|
vbox->addWidget(createCheckbox("Show last read message indicator", ""));
|
||||||
|
|
||||||
|
{
|
||||||
|
auto v = new QVBoxLayout();
|
||||||
|
v->addWidget(new QLabel("Mouse scroll speed"));
|
||||||
|
|
||||||
|
auto scroll = new QSlider(Qt::Horizontal);
|
||||||
|
|
||||||
|
v->addWidget(scroll);
|
||||||
|
v->addStretch(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
vbox->addStretch(1);
|
||||||
|
|
||||||
|
addTab(vbox, "Behaviour", ":/images/AppearanceEditorPart_16x.png");
|
||||||
|
|
||||||
// Commands
|
// Commands
|
||||||
vbox = new QVBoxLayout();
|
vbox = new QVBoxLayout();
|
||||||
|
|
||||||
|
@ -83,6 +125,11 @@ void SettingsDialog::addTabs()
|
||||||
tabs.addStretch(1);
|
tabs.addStretch(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QCheckBox* SettingsDialog::createCheckbox(QString title, QString settingsId)
|
||||||
|
{
|
||||||
|
return new QCheckBox(title);
|
||||||
|
}
|
||||||
|
|
||||||
void SettingsDialog::addTab(QLayout* layout, QString title, QString imageRes)
|
void SettingsDialog::addTab(QLayout* layout, QString title, QString imageRes)
|
||||||
{
|
{
|
||||||
auto widget = new QWidget();
|
auto widget = new QWidget();
|
||||||
|
|
|
@ -11,6 +11,7 @@
|
||||||
#include "QDialogButtonBox"
|
#include "QDialogButtonBox"
|
||||||
#include "QStackedLayout"
|
#include "QStackedLayout"
|
||||||
#include "settingsdialogtab.h"
|
#include "settingsdialogtab.h"
|
||||||
|
#include "QCheckBox"
|
||||||
|
|
||||||
class SettingsDialog : public QWidget
|
class SettingsDialog : public QWidget
|
||||||
{
|
{
|
||||||
|
@ -33,6 +34,8 @@ private:
|
||||||
void addTabs();
|
void addTabs();
|
||||||
|
|
||||||
SettingsDialogTab* selectedTab = NULL;
|
SettingsDialogTab* selectedTab = NULL;
|
||||||
|
|
||||||
|
QCheckBox* createCheckbox(QString title, QString settingsId);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // SETTINGSDIALOG_H
|
#endif // SETTINGSDIALOG_H
|
||||||
|
|
Loading…
Reference in a new issue