mirror of
https://github.com/qelectrotech/qelectrotech-source-mirror.git
synced 2026-10-06 11:14:14 +02:00
Merge pull request #918 from Kellermorph/fix-colour-selection
Linux build and tests / Build and test (Qt 6, Debug) (push) Failing after 1m41s
Linux build and tests / Build and test (Qt 6, Debug) (push) Failing after 1m41s
Persist QColorDialog custom colors across application restarts
This commit is contained in:
@@ -40,6 +40,7 @@
|
|||||||
#include "NameList/nameslist.h"
|
#include "NameList/nameslist.h"
|
||||||
#include "elementdialog.h"
|
#include "elementdialog.h"
|
||||||
#include <QDropEvent>
|
#include <QDropEvent>
|
||||||
|
#include <QPointer>
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Constructeur
|
Constructeur
|
||||||
@@ -122,7 +123,7 @@ DiagramView::DiagramView(Diagram *diagram, QWidget *parent) :
|
|||||||
ConductorProperties initial_properties = edited_conductor->properties();
|
ConductorProperties initial_properties = edited_conductor->properties();
|
||||||
|
|
||||||
// prepare a color dialog showing the initial conductor color
|
// prepare a color dialog showing the initial conductor color
|
||||||
QColorDialog *color_dialog = new QColorDialog(this);
|
QPointer<QColorDialog> color_dialog = new QColorDialog(this);
|
||||||
color_dialog->setWindowTitle(tr("Choisir la nouvelle couleur de ce conducteur"));
|
color_dialog->setWindowTitle(tr("Choisir la nouvelle couleur de ce conducteur"));
|
||||||
#ifdef Q_OS_MACOS
|
#ifdef Q_OS_MACOS
|
||||||
color_dialog -> setWindowFlags(Qt::Sheet);
|
color_dialog -> setWindowFlags(Qt::Sheet);
|
||||||
@@ -150,6 +151,8 @@ DiagramView::DiagramView(Diagram *diagram, QWidget *parent) :
|
|||||||
LastUsedStyle::setConductorColor(new_color);
|
LastUsedStyle::setConductorColor(new_color);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (color_dialog)
|
||||||
|
delete color_dialog;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -20,10 +20,13 @@
|
|||||||
#include "shortcutmanager.h"
|
#include "shortcutmanager.h"
|
||||||
|
|
||||||
#include <limits>
|
#include <limits>
|
||||||
|
#include <QBuffer>
|
||||||
|
#include <QColorDialog>
|
||||||
#include <QGraphicsSceneContextMenuEvent>
|
#include <QGraphicsSceneContextMenuEvent>
|
||||||
#include <QAction>
|
#include <QAction>
|
||||||
#include <QFileInfo>
|
#include <QFileInfo>
|
||||||
#include <QSaveFile>
|
#include <QSaveFile>
|
||||||
|
#include <QSettings>
|
||||||
#include <QTextStream>
|
#include <QTextStream>
|
||||||
#include <QRegularExpression>
|
#include <QRegularExpression>
|
||||||
#include <QActionGroup>
|
#include <QActionGroup>
|
||||||
@@ -845,3 +848,55 @@ bool QET::writeToFile(QDomDocument &xml_doc, QFile *file, QString *error_message
|
|||||||
|
|
||||||
return(true);
|
return(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
@brief QET::saveCustomColors
|
||||||
|
Save the 16 QColorDialog custom colors to QSettings so they persist
|
||||||
|
across application restarts.
|
||||||
|
*/
|
||||||
|
void QET::saveCustomColors()
|
||||||
|
{
|
||||||
|
QByteArray ba;
|
||||||
|
QBuffer buf(&ba);
|
||||||
|
buf.open(QIODevice::WriteOnly);
|
||||||
|
QDataStream s(&buf);
|
||||||
|
s.setVersion(QDataStream::Qt_6_0);
|
||||||
|
for (int i = 0; i < 16; i++)
|
||||||
|
s << QColorDialog::customColor(i);
|
||||||
|
QSettings settings;
|
||||||
|
settings.setValue(QStringLiteral("color/customColors"), ba);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
@brief QET::loadCustomColors
|
||||||
|
Load the 16 QColorDialog custom colors from QSettings into Qt's
|
||||||
|
internal custom color array. A short or corrupt buffer is ignored
|
||||||
|
so that unread slots keep their default rather than turning black.
|
||||||
|
*/
|
||||||
|
void QET::loadCustomColors()
|
||||||
|
{
|
||||||
|
QSettings settings;
|
||||||
|
QByteArray ba = settings.value(QStringLiteral("color/customColors")).toByteArray();
|
||||||
|
|
||||||
|
// Fall back to the legacy ungrouped key used by earlier versions.
|
||||||
|
if (ba.isEmpty())
|
||||||
|
ba = settings.value(QStringLiteral("customColors")).toByteArray();
|
||||||
|
|
||||||
|
if (ba.isEmpty())
|
||||||
|
return;
|
||||||
|
|
||||||
|
QBuffer buf(&ba);
|
||||||
|
buf.open(QIODevice::ReadOnly);
|
||||||
|
QDataStream s(&buf);
|
||||||
|
s.setVersion(QDataStream::Qt_6_0);
|
||||||
|
|
||||||
|
QColor colors[16];
|
||||||
|
for (int i = 0; i < 16; i++)
|
||||||
|
s >> colors[i];
|
||||||
|
|
||||||
|
if (s.status() != QDataStream::Ok)
|
||||||
|
return;
|
||||||
|
|
||||||
|
for (int i = 0; i < 16; i++)
|
||||||
|
QColorDialog::setCustomColor(i, colors[i]);
|
||||||
|
}
|
||||||
|
|||||||
@@ -18,6 +18,7 @@
|
|||||||
#ifndef _QET_H
|
#ifndef _QET_H
|
||||||
#define _QET_H
|
#define _QET_H
|
||||||
|
|
||||||
|
#include <QColor>
|
||||||
#include <QDomElement>
|
#include <QDomElement>
|
||||||
#include <QFile>
|
#include <QFile>
|
||||||
#include <QObject>
|
#include <QObject>
|
||||||
@@ -185,6 +186,8 @@ namespace QET {
|
|||||||
bool writeToFile (QDomDocument &xml_doc, QFile *file, QString *error_message = nullptr);
|
bool writeToFile (QDomDocument &xml_doc, QFile *file, QString *error_message = nullptr);
|
||||||
bool eachStrIsEqual (const QStringList &qsl);
|
bool eachStrIsEqual (const QStringList &qsl);
|
||||||
QActionGroup *depthActionGroup(QObject *parent = nullptr);
|
QActionGroup *depthActionGroup(QObject *parent = nullptr);
|
||||||
|
void saveCustomColors();
|
||||||
|
void loadCustomColors();
|
||||||
}
|
}
|
||||||
|
|
||||||
Q_DECLARE_METATYPE(QET::DepthOption)
|
Q_DECLARE_METATYPE(QET::DepthOption)
|
||||||
|
|||||||
@@ -18,6 +18,7 @@
|
|||||||
#include "qetapp.h"
|
#include "qetapp.h"
|
||||||
|
|
||||||
#include "configdialog.h"
|
#include "configdialog.h"
|
||||||
|
#include "qet.h"
|
||||||
#include "ui/configpage/configpages.h"
|
#include "ui/configpage/configpages.h"
|
||||||
#include "editor/ui/qetelementeditor.h"
|
#include "editor/ui/qetelementeditor.h"
|
||||||
#include "elementscollectioncache.h"
|
#include "elementscollectioncache.h"
|
||||||
@@ -124,6 +125,7 @@ QETApp::QETApp() :
|
|||||||
QET::Icons::initIcons();
|
QET::Icons::initIcons();
|
||||||
initFonts();
|
initFonts();
|
||||||
initStyle();
|
initStyle();
|
||||||
|
QET::loadCustomColors();
|
||||||
initSplashScreen();
|
initSplashScreen();
|
||||||
initSystemTray();
|
initSystemTray();
|
||||||
|
|
||||||
@@ -168,6 +170,7 @@ QETApp::QETApp() :
|
|||||||
*/
|
*/
|
||||||
QETApp::~QETApp()
|
QETApp::~QETApp()
|
||||||
{
|
{
|
||||||
|
QET::saveCustomColors();
|
||||||
m_elements_recent_files->save();
|
m_elements_recent_files->save();
|
||||||
m_projects_recent_files->save();
|
m_projects_recent_files->save();
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user