forked from blue/squawk
may be a bit better quit handling
This commit is contained in:
parent
c708c33a92
commit
802e2f11a1
@ -105,11 +105,15 @@ int main(int argc, char *argv[])
|
|||||||
QThread* coreThread = new QThread();
|
QThread* coreThread = new QThread();
|
||||||
squawk->moveToThread(coreThread);
|
squawk->moveToThread(coreThread);
|
||||||
|
|
||||||
|
QObject::connect(&sc, &SignalCatcher::interrupt, &app, &QApplication::closeAllWindows);
|
||||||
|
|
||||||
QObject::connect(coreThread, &QThread::started, squawk, &Core::Squawk::start);
|
QObject::connect(coreThread, &QThread::started, squawk, &Core::Squawk::start);
|
||||||
QObject::connect(&app, &QApplication::aboutToQuit, squawk, &Core::Squawk::stop);
|
QObject::connect(&app, &QApplication::lastWindowClosed, squawk, &Core::Squawk::stop);
|
||||||
QObject::connect(&app, &QApplication::aboutToQuit, &w, &QMainWindow::close);
|
QObject::connect(&app, &QApplication::lastWindowClosed, &w, &Squawk::writeSettings);
|
||||||
QObject::connect(squawk, &Core::Squawk::quit, coreThread, &QThread::quit);
|
//QObject::connect(&app, &QApplication::aboutToQuit, &w, &QMainWindow::close);
|
||||||
QObject::connect(coreThread, &QThread::finished, squawk, &Core::Squawk::deleteLater);
|
QObject::connect(squawk, &Core::Squawk::quit, squawk, &Core::Squawk::deleteLater);
|
||||||
|
QObject::connect(squawk, &Core::Squawk::quit, coreThread, &QThread::quit, Qt::QueuedConnection);
|
||||||
|
QObject::connect(coreThread, &QThread::finished, &app, &QApplication::quit, Qt::QueuedConnection);
|
||||||
|
|
||||||
QObject::connect(&w, &Squawk::newAccountRequest, squawk, &Core::Squawk::newAccountRequest);
|
QObject::connect(&w, &Squawk::newAccountRequest, squawk, &Core::Squawk::newAccountRequest);
|
||||||
QObject::connect(&w, &Squawk::modifyAccountRequest, squawk, &Core::Squawk::modifyAccountRequest);
|
QObject::connect(&w, &Squawk::modifyAccountRequest, squawk, &Core::Squawk::modifyAccountRequest);
|
||||||
@ -169,12 +173,11 @@ int main(int argc, char *argv[])
|
|||||||
QObject::connect(squawk, &Core::Squawk::ready, &w, &Squawk::readSettings);
|
QObject::connect(squawk, &Core::Squawk::ready, &w, &Squawk::readSettings);
|
||||||
|
|
||||||
coreThread->start();
|
coreThread->start();
|
||||||
|
|
||||||
int result = app.exec();
|
int result = app.exec();
|
||||||
|
|
||||||
w.writeSettings();
|
if (coreThread->isRunning()) {
|
||||||
coreThread->wait(500); //TODO hate doing that but settings for some reason don't get saved to the disk
|
coreThread->wait();
|
||||||
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
@ -50,7 +50,7 @@ void SignalCatcher::handleSigInt()
|
|||||||
char tmp;
|
char tmp;
|
||||||
ssize_t s = ::read(sigintFd[1], &tmp, sizeof(tmp));
|
ssize_t s = ::read(sigintFd[1], &tmp, sizeof(tmp));
|
||||||
|
|
||||||
app->quit();
|
emit interrupt();
|
||||||
|
|
||||||
snInt->setEnabled(true);
|
snInt->setEnabled(true);
|
||||||
}
|
}
|
||||||
|
@ -33,6 +33,9 @@ public:
|
|||||||
|
|
||||||
static void intSignalHandler(int unused);
|
static void intSignalHandler(int unused);
|
||||||
|
|
||||||
|
signals:
|
||||||
|
void interrupt();
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void handleSigInt();
|
void handleSigInt();
|
||||||
|
|
||||||
|
@ -883,6 +883,10 @@ void Squawk::writeSettings()
|
|||||||
}
|
}
|
||||||
settings.endGroup();
|
settings.endGroup();
|
||||||
settings.endGroup();
|
settings.endGroup();
|
||||||
|
|
||||||
|
settings.sync();
|
||||||
|
|
||||||
|
qDebug() << "Saved settings";
|
||||||
}
|
}
|
||||||
|
|
||||||
void Squawk::onItemCollepsed(const QModelIndex& index)
|
void Squawk::onItemCollepsed(const QModelIndex& index)
|
||||||
|
@ -54,8 +54,6 @@ public:
|
|||||||
explicit Squawk(QWidget *parent = nullptr);
|
explicit Squawk(QWidget *parent = nullptr);
|
||||||
~Squawk() override;
|
~Squawk() override;
|
||||||
|
|
||||||
void writeSettings();
|
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void newAccountRequest(const QMap<QString, QVariant>&);
|
void newAccountRequest(const QMap<QString, QVariant>&);
|
||||||
void modifyAccountRequest(const QString&, const QMap<QString, QVariant>&);
|
void modifyAccountRequest(const QString&, const QMap<QString, QVariant>&);
|
||||||
@ -84,6 +82,7 @@ signals:
|
|||||||
void localPathInvalid(const QString& path);
|
void localPathInvalid(const QString& path);
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
|
void writeSettings();
|
||||||
void readSettings();
|
void readSettings();
|
||||||
void newAccount(const QMap<QString, QVariant>& account);
|
void newAccount(const QMap<QString, QVariant>& account);
|
||||||
void changeAccount(const QString& account, const QMap<QString, QVariant>& data);
|
void changeAccount(const QString& account, const QMap<QString, QVariant>& data);
|
||||||
|
@ -2,6 +2,10 @@
|
|||||||
#include "ui_pageappearance.h"
|
#include "ui_pageappearance.h"
|
||||||
|
|
||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
|
#include <QStandardPaths>
|
||||||
|
#include <QDir>
|
||||||
|
|
||||||
|
static const QStringList filters = {"*.colors"};
|
||||||
|
|
||||||
PageAppearance::PageAppearance(QWidget* parent):
|
PageAppearance::PageAppearance(QWidget* parent):
|
||||||
QWidget(parent),
|
QWidget(parent),
|
||||||
@ -28,6 +32,17 @@ PageAppearance::PageAppearance(QWidget* parent):
|
|||||||
}
|
}
|
||||||
|
|
||||||
connect(m_ui->themeInput, qOverload<int>(&QComboBox::currentIndexChanged), this, &PageAppearance::onThemeChanged);
|
connect(m_ui->themeInput, qOverload<int>(&QComboBox::currentIndexChanged), this, &PageAppearance::onThemeChanged);
|
||||||
|
|
||||||
|
m_ui->colorInput->addItem(tr("System"));
|
||||||
|
const QStringList dirs = QStandardPaths::locateAll(QStandardPaths::GenericDataLocation, "color-schemes", QStandardPaths::LocateDirectory);
|
||||||
|
QStringList schemeFiles;
|
||||||
|
for (const QString &dir : dirs) {
|
||||||
|
const QStringList fileNames = QDir(dir).entryList(filters);
|
||||||
|
for (const QString &file : fileNames) {
|
||||||
|
m_ui->colorInput->addItem(dir + QDir::separator() + file);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
PageAppearance::~PageAppearance()
|
PageAppearance::~PageAppearance()
|
||||||
|
@ -21,6 +21,16 @@
|
|||||||
<item row="0" column="1">
|
<item row="0" column="1">
|
||||||
<widget class="QComboBox" name="themeInput"/>
|
<widget class="QComboBox" name="themeInput"/>
|
||||||
</item>
|
</item>
|
||||||
|
<item row="1" column="1">
|
||||||
|
<widget class="QComboBox" name="colorInput"/>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="0">
|
||||||
|
<widget class="QLabel" name="colorLabel">
|
||||||
|
<property name="text">
|
||||||
|
<string>Color scheme</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
<resources/>
|
<resources/>
|
||||||
|
Loading…
Reference in New Issue
Block a user