mirror of
https://github.com/qelectrotech/qelectrotech-source-mirror.git
synced 2026-10-07 04:04:14 +02:00
Merge pull request #1314 from ispyisail/feature/live-remember
Remember live mode's start warning and "Always" across restarts
This commit is contained in:
@@ -48,6 +48,7 @@
|
||||
#include <QPixmap>
|
||||
#include <QPlainTextEdit>
|
||||
#include <QVBoxLayout>
|
||||
#include <QCheckBox>
|
||||
#include <QDialog>
|
||||
#include <QDir>
|
||||
#include <QFileInfo>
|
||||
@@ -81,7 +82,8 @@ LiveServer &LiveServer::instance()
|
||||
return server;
|
||||
}
|
||||
|
||||
LiveServer::LiveServer()
|
||||
LiveServer::LiveServer() :
|
||||
m_ask_first(QetSettings::liveAskFirst())
|
||||
{
|
||||
connect(qApp, &QCoreApplication::aboutToQuit, this, &LiveServer::stop);
|
||||
}
|
||||
@@ -112,6 +114,10 @@ void LiveServer::askAndStart(QWidget *parent)
|
||||
return;
|
||||
}
|
||||
m_asked = true;
|
||||
if (QetSettings::liveSkipStartWarning()) {
|
||||
start();
|
||||
return;
|
||||
}
|
||||
|
||||
QMessageBox box(QMessageBox::Warning, tr("Mode direct"),
|
||||
tr("Le mode direct est activé : un assistant IA connecté "
|
||||
@@ -125,11 +131,17 @@ void LiveServer::askAndStart(QWidget *parent)
|
||||
box.addButton(tr("&Pas pour cette session"), QMessageBox::RejectRole);
|
||||
QPushButton *off = box.addButton(tr("&Désactiver"), QMessageBox::DestructiveRole);
|
||||
box.setDefaultButton(go);
|
||||
auto *remember = new QCheckBox(tr("Ne plus demander au démarrage"), &box);
|
||||
remember->setToolTip(tr("Le mode direct s'ouvrira à chaque démarrage. Pour être "
|
||||
"de nouveau averti, désactivez-le puis réactivez-le dans "
|
||||
"Configurer QElectroTech > Général > Projets."));
|
||||
box.setCheckBox(remember);
|
||||
box.exec();
|
||||
|
||||
if (box.clickedButton() == off) {
|
||||
QetSettings::setLiveAssistantEnabled(false);
|
||||
} else if (box.clickedButton() == go) {
|
||||
if (remember->isChecked()) QetSettings::setLiveSkipStartWarning(true);
|
||||
start();
|
||||
}
|
||||
}
|
||||
@@ -249,7 +261,7 @@ void LiveServer::handle(const QJsonObject &request)
|
||||
const QString name = request.value(QStringLiteral("name")).toString();
|
||||
const QString source = request.value(QStringLiteral("source")).toString();
|
||||
//A script the assistant just wrote: the user sees it first,
|
||||
//unless they said "always" this session. A stored script
|
||||
//unless they chose "always" (remembered). A stored script
|
||||
//is one the user already has, so it runs as a click would.
|
||||
if (m_ask_first && !confirm(name, source))
|
||||
answer = failure(QStringLiteral("refused by the user"));
|
||||
@@ -405,6 +417,7 @@ void LiveServer::setAskFirst(bool ask)
|
||||
{
|
||||
if (ask == m_ask_first) return;
|
||||
m_ask_first = ask;
|
||||
QetSettings::setLiveAskFirst(ask);
|
||||
emit askFirstChanged(ask);
|
||||
}
|
||||
|
||||
@@ -909,7 +922,7 @@ bool LiveServer::confirm(const QString &name, const QString &source)
|
||||
auto *buttons = new QDialogButtonBox(&dialog);
|
||||
QPushButton *run = buttons->addButton(tr("&Exécuter"), QDialogButtonBox::AcceptRole);
|
||||
buttons->addButton(tr("&Refuser"), QDialogButtonBox::RejectRole);
|
||||
QPushButton *always = buttons->addButton(tr("&Toujours pour cette session"),
|
||||
QPushButton *always = buttons->addButton(tr("&Toujours"),
|
||||
QDialogButtonBox::AcceptRole);
|
||||
layout->addWidget(buttons);
|
||||
QPushButton *clicked = nullptr;
|
||||
|
||||
@@ -35,7 +35,8 @@ class QWidget;
|
||||
|
||||
Three things must all be true before anything can connect: scripting is
|
||||
allowed, the "mode direct" setting is on (off by default), and the user
|
||||
accepted the warning shown at this start. With the setting off this
|
||||
accepted the warning shown at this start (or once ticked "don't ask
|
||||
again", which lasts until the setting is switched off). With the setting off this
|
||||
class opens nothing and QElectroTech behaves as if it did not exist.
|
||||
|
||||
The channel is a QLocalServer only the user's own account can open,
|
||||
@@ -106,7 +107,7 @@ class LiveServer : public QObject
|
||||
State m_state = Off;
|
||||
bool m_asked = false;
|
||||
bool m_busy = false;
|
||||
bool m_ask_first = true; ///< per session, never saved: every start asks again
|
||||
bool m_ask_first = true; ///< saved: QetSettings::liveAskFirst()
|
||||
};
|
||||
|
||||
#endif // LIVESERVER_H
|
||||
|
||||
Reference in New Issue
Block a user