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();
|
||||
squawk->moveToThread(coreThread);
|
||||
|
||||
QObject::connect(&sc, &SignalCatcher::interrupt, &app, &QApplication::closeAllWindows);
|
||||
|
||||
QObject::connect(coreThread, &QThread::started, squawk, &Core::Squawk::start);
|
||||
QObject::connect(&app, &QApplication::aboutToQuit, squawk, &Core::Squawk::stop);
|
||||
QObject::connect(&app, &QApplication::aboutToQuit, &w, &QMainWindow::close);
|
||||
QObject::connect(squawk, &Core::Squawk::quit, coreThread, &QThread::quit);
|
||||
QObject::connect(coreThread, &QThread::finished, squawk, &Core::Squawk::deleteLater);
|
||||
QObject::connect(&app, &QApplication::lastWindowClosed, squawk, &Core::Squawk::stop);
|
||||
QObject::connect(&app, &QApplication::lastWindowClosed, &w, &Squawk::writeSettings);
|
||||
//QObject::connect(&app, &QApplication::aboutToQuit, &w, &QMainWindow::close);
|
||||
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::modifyAccountRequest, squawk, &Core::Squawk::modifyAccountRequest);
|
||||
@ -169,12 +173,11 @@ int main(int argc, char *argv[])
|
||||
QObject::connect(squawk, &Core::Squawk::ready, &w, &Squawk::readSettings);
|
||||
|
||||
coreThread->start();
|
||||
|
||||
int result = app.exec();
|
||||
|
||||
w.writeSettings();
|
||||
coreThread->wait(500); //TODO hate doing that but settings for some reason don't get saved to the disk
|
||||
|
||||
if (coreThread->isRunning()) {
|
||||
coreThread->wait();
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
@ -50,7 +50,7 @@ void SignalCatcher::handleSigInt()
|
||||
char tmp;
|
||||
ssize_t s = ::read(sigintFd[1], &tmp, sizeof(tmp));
|
||||
|
||||
app->quit();
|
||||
emit interrupt();
|
||||
|
||||
snInt->setEnabled(true);
|
||||
}
|
||||
|
@ -33,6 +33,9 @@ public:
|
||||
|
||||
static void intSignalHandler(int unused);
|
||||
|
||||
signals:
|
||||
void interrupt();
|
||||
|
||||
public slots:
|
||||
void handleSigInt();
|
||||
|
||||
|
@ -883,6 +883,10 @@ void Squawk::writeSettings()
|
||||
}
|
||||
settings.endGroup();
|
||||
settings.endGroup();
|
||||
|
||||
settings.sync();
|
||||
|
||||
qDebug() << "Saved settings";
|
||||
}
|
||||
|
||||
void Squawk::onItemCollepsed(const QModelIndex& index)
|
||||
|
@ -54,8 +54,6 @@ public:
|
||||
explicit Squawk(QWidget *parent = nullptr);
|
||||
~Squawk() override;
|
||||
|
||||
void writeSettings();
|
||||
|
||||
signals:
|
||||
void newAccountRequest(const QMap<QString, QVariant>&);
|
||||
void modifyAccountRequest(const QString&, const QMap<QString, QVariant>&);
|
||||
@ -84,6 +82,7 @@ signals:
|
||||
void localPathInvalid(const QString& path);
|
||||
|
||||
public slots:
|
||||
void writeSettings();
|
||||
void readSettings();
|
||||
void newAccount(const QMap<QString, QVariant>& account);
|
||||
void changeAccount(const QString& account, const QMap<QString, QVariant>& data);
|
||||
|
@ -2,6 +2,10 @@
|
||||
#include "ui_pageappearance.h"
|
||||
|
||||
#include <QDebug>
|
||||
#include <QStandardPaths>
|
||||
#include <QDir>
|
||||
|
||||
static const QStringList filters = {"*.colors"};
|
||||
|
||||
PageAppearance::PageAppearance(QWidget* parent):
|
||||
QWidget(parent),
|
||||
@ -28,6 +32,17 @@ PageAppearance::PageAppearance(QWidget* parent):
|
||||
}
|
||||
|
||||
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()
|
||||
|
@ -21,6 +21,16 @@
|
||||
<item row="0" column="1">
|
||||
<widget class="QComboBox" name="themeInput"/>
|
||||
</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>
|
||||
</widget>
|
||||
<resources/>
|
||||
|
Loading…
Reference in New Issue
Block a user