Skip to content

Commit

Permalink
Change QSettings to KConfig
Browse files Browse the repository at this point in the history
Removed all QSettings and changed to KConfig:
CMakeLists
bewaveddolphin
icmanager
mainwindow
recentfilescontroller
simplewaveform
thememanager

Created the config files:
wpanda.kcfg
WPandaSettings.kcfgc

Created auxiliary functions in globalproperties
  • Loading branch information
Carlos Alves committed Feb 15, 2021
1 parent 3faad1f commit d6d7f8e
Show file tree
Hide file tree
Showing 14 changed files with 188 additions and 104 deletions.
8 changes: 6 additions & 2 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -49,14 +49,18 @@ find_package(Qt5 ${QT_MIN_VERSION} CONFIG REQUIRED
Widgets
)

set(
find_package(KF5Config)

set(
WPANDA_LIBS
Qt5::Charts
Qt5::Core
Qt5::Gui
Qt5::Multimedia
Qt5::PrintSupport
Qt5::Widgets
KF5::ConfigCore
KF5::ConfigGui
)

find_package (ECM ${KF5_MIN_VERSION} NO_MODULE)
Expand All @@ -65,7 +69,7 @@ set (CMAKE_MODULE_PATH ${ECM_MODULE_PATH})
include(cmake/Git.cmake)
include(cmake/Format.cmake)

include_directories(${CMAKE_SOURCE_DIR} ${CMAKE_BINARY_DIR} )
include_directories(${CMAKE_SOURCE_DIR} ${CMAKE_BINARY_DIR} ${CMAKE_BINARY_DIR}/app )
include_directories(./app/element)
include_directories(./app/nodes)
include_directories(./app)
Expand Down
6 changes: 5 additions & 1 deletion app/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,10 @@ set(
nodes/qneport.cpp
)

add_library(wpandacommon ${WPANDA_FILES} )
kconfig_add_kcfg_files(WPANDA_KCFG settings/WPandaSettings.kcfgc)

add_library(wpandacommon ${WPANDA_KCFG} ${WPANDA_FILES} )

target_link_libraries( wpandacommon PUBLIC ${WPANDA_LIBS} )
target_compile_definitions(
wpandacommon
Expand All @@ -57,6 +60,7 @@ qt5_add_resources(
WPANDA_RESOURCES
resources/dolphin/dolphin.qrc
resources/resources.qrc
resources/translations.qrc
resources/basic/basic.qrc
resources/input/input.qrc
resources/output/output.qrc
Expand Down
22 changes: 12 additions & 10 deletions app/bewaveddolphin.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -14,14 +14,14 @@
#include <QPainter>
#include <QPrinter>
#include <QSaveFile>
#include <QSettings>
#include <QTableView>

#include "clockDialog.h"
#include "common.h"
#include "editor.h"
#include "elementfactory.h"
#include "elementmapping.h"
#include "globalproperties.h"
#include "graphicelement.h"
#include "graphicsview.h"
#include "graphicsviewzoom.h"
Expand All @@ -33,6 +33,8 @@
#include "simulationcontroller.h"

#include "ui_bewaveddolphin.h"
#include "WPandaSettings.h"
#include "mainwindow.h"

SignalModel::SignalModel(int rows, int inputs, int columns, QObject *parent)
: QStandardItemModel(rows, columns, parent)
Expand Down Expand Up @@ -76,10 +78,11 @@ BewavedDolphin::BewavedDolphin(Editor *editor, QWidget *parent)
resize(800, 500);
setWindowTitle("Bewaved Dolphin Simulator");
setWindowFlags(Qt::Window);
QSettings settings(QSettings::IniFormat, QSettings::UserScope, QApplication::organizationName(), QApplication::applicationName());
settings.beginGroup("BewavedDolphin");
restoreGeometry(settings.value("geometry").toByteArray());
settings.endGroup();

if (auto mainwindow = qobject_cast<MainWindow *>(this->parent())) {
restoreGeometry(GlobalProperties::settingToByteArray(mainwindow->settings()->bdGeometry()));
}

m_gv = new GraphicsView(this);
m_ui->verticalLayout->addWidget(m_gv);
m_scene = new QGraphicsScene(this);
Expand All @@ -101,10 +104,10 @@ BewavedDolphin::BewavedDolphin(Editor *editor, QWidget *parent)

BewavedDolphin::~BewavedDolphin()
{
QSettings settings(QSettings::IniFormat, QSettings::UserScope, QApplication::organizationName(), QApplication::applicationName());
settings.beginGroup("BewavedDolphin");
settings.setValue("geometry", saveGeometry());
settings.endGroup();
if (auto mainwindow = qobject_cast<MainWindow *>(this->parent())) {
mainwindow->settings()->setBdGeometry(GlobalProperties::settingToIntList(saveGeometry()));
}

delete m_ui;
}

Expand Down Expand Up @@ -332,7 +335,6 @@ QVector<char> BewavedDolphin::loadSignals(QStringList &input_labels, QStringList

bool BewavedDolphin::createWaveform(const QString& filename)
{
QSettings settings(QSettings::IniFormat, QSettings::UserScope, QApplication::organizationName(), QApplication::applicationName());
COMMENT("Getting digital circuit simulator.", 0);
m_sc = m_editor->getSimulationController();
COMMENT("Creating class to pause main window simulator while creating waveform.", 0);
Expand Down
17 changes: 17 additions & 0 deletions app/globalproperties.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -35,3 +35,20 @@ QString GlobalProperties::currentFile = QString();
double GlobalProperties::version = loadVersion();

bool GlobalProperties::soundEnabled = true;

QByteArray GlobalProperties::settingToByteArray(const QList<int> &savedSettings)
{
QByteArray toByteArray;
for (auto savedSetting : savedSettings) {
toByteArray.append(savedSetting);
}
return toByteArray;
}
QList<int> GlobalProperties::settingToIntList(const QByteArray &toSaveSettings)
{
QList<int> toIntList;
for (auto toSaveSetting : toSaveSettings) {
toIntList.append(toSaveSetting);
}
return toIntList;
}
2 changes: 2 additions & 0 deletions app/globalproperties.h
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@ class GlobalProperties
static bool soundEnabled;

static double toDouble(const QString &txtVersion, bool *ok);
static QByteArray settingToByteArray(const QList<int> &savedSettings);
static QList<int> settingToIntList(const QByteArray &toSaveSettings);
};

#endif // GLOBALPROPERTIES_H
3 changes: 0 additions & 3 deletions app/icmanager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
#include <QApplication>
#include <QFileInfo>
#include <QMessageBox>
#include <QSettings>

#include "common.h"
#include "filehelper.h"
Expand All @@ -33,8 +32,6 @@ ICManager::ICManager(MainWindow *mainWindow, QObject *parent)
ICManager::~ICManager()
{
clear();
QSettings settings(QSettings::IniFormat, QSettings::UserScope, QApplication::organizationName(), QApplication::applicationName());
settings.setValue("recentICs", "");

// fprintf(stderr, "Removing IC manager");
if (globalICManager == this) {
Expand Down
84 changes: 39 additions & 45 deletions app/mainwindow.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@
#include <QProcess>
#include <QRectF>
#include <QSaveFile>
#include <QSettings>
#include <QShortcut>
#include <QSpacerItem>
#include <QTranslator>
Expand All @@ -38,6 +37,7 @@
#include "simulationcontroller.h"

#include "ui_mainwindow.h"
#include "WPandaSettings.h"

MainWindow::MainWindow(QWidget *parent, const QString &filename)
: QMainWindow(parent)
Expand All @@ -50,22 +50,23 @@ MainWindow::MainWindow(QWidget *parent, const QString &filename)
, dolphinFilename("none")
, bd(nullptr)
, translator(nullptr)
, m_settings(new WPandaSettings)
{
COMMENT("WIRED PANDA Version = " << APP_VERSION << " OR " << GlobalProperties::version, 0);
ui->setupUi(this);
ThemeManager::globalMngr = new ThemeManager(this);
buildFullScreenDialog();
ui->graphicsView->setScene(editor->getScene());

m_settings->load();

// Change the default value on wpanda.kcfg after KDE translate
/* Translation */

QSettings settings(QSettings::IniFormat, QSettings::UserScope, QApplication::organizationName(), QApplication::applicationName());
if (settings.value("language").isValid()) {
loadTranslation(settings.value("language").toString());
}
loadTranslation(m_settings->language());

if (settings.contains("autosaveFile")) {
if (autosaveFilename != "") {
// If autosaveFile was found within the config. file, then WiredPanda probably didn't save its last project correctly, perhaps due to a crash.
autosaveFilename = settings.value("autosaveFile").toString();
if ((QFile(autosaveFilename).exists()) && (autosaveFilename != filename)) {
int ret = recoverAutoSaveFile(autosaveFilename);
if (ret == QMessageBox::Yes) {
Expand All @@ -81,17 +82,14 @@ MainWindow::MainWindow(QWidget *parent, const QString &filename)
}
}

settings.beginGroup("MainWindow");
restoreGeometry(settings.value("geometry").toByteArray());
restoreState(settings.value("windowState").toByteArray());
settings.beginGroup("splitter");
ui->splitter->restoreGeometry(settings.value("geometry").toByteArray());
ui->splitter->restoreState(settings.value("state").toByteArray());
restoreGeometry(GlobalProperties::settingToByteArray(m_settings->windowGeometry()));
restoreState(GlobalProperties::settingToByteArray(m_settings->windowState()));

ui->splitter->restoreGeometry(GlobalProperties::settingToByteArray(m_settings->splitterGeometry()));
ui->splitter->restoreState(GlobalProperties::settingToByteArray(m_settings->splitterState()));

ui->actionExport_to_Arduino->setEnabled(false);

settings.endGroup();
settings.endGroup();
QList<QKeySequence> zoom_in_shortcuts;
zoom_in_shortcuts << QKeySequence("Ctrl++") << QKeySequence("Ctrl+=");
ui->actionZoom_in->setShortcuts(zoom_in_shortcuts);
Expand All @@ -108,11 +106,8 @@ MainWindow::MainWindow(QWidget *parent, const QString &filename)
connect(ThemeManager::globalMngr, &ThemeManager::themeChanged, editor, &Editor::updateTheme);
ThemeManager::globalMngr->initialize();
/* ui->graphicsView->setBackgroundBrush(QBrush(QColor(Qt::gray))); */
if (settings.value("fastMode").isValid()) {
setFastMode(settings.value("fastMode").toBool());
} else {
setFastMode(false);
}
setFastMode(m_settings->fastMode());

editor->setElementEditor(ui->widgetElementEditor);
ui->searchScrollArea->hide();

Expand Down Expand Up @@ -144,8 +139,8 @@ MainWindow::MainWindow(QWidget *parent, const QString &filename)
connect(editor, &Editor::scroll, this, &MainWindow::scrollView);
connect(editor, &Editor::circuitHasChanged, this, &MainWindow::autoSave);

rfController = new RecentFilesController("recentFileList", this, true);
ricController = new RecentFilesController("recentICs", this, false);
rfController = new RecentFilesController(this, true);
ricController = new RecentFilesController(this, false);
connect(this, &MainWindow::addRecentFile, rfController, &RecentFilesController::addRecentFile);
connect(this, &MainWindow::addRecentIcFile, ricController, &RecentFilesController::addRecentFile);

Expand All @@ -164,6 +159,10 @@ MainWindow::MainWindow(QWidget *parent, const QString &filename)
populateLeftMenu();
}

WPandaSettings *MainWindow::settings() {
return m_settings;
}

void MainWindow::setFastMode(bool fastModeEnabled)
{
ui->graphicsView->setRenderHint(QPainter::Antialiasing, !fastModeEnabled);
Expand All @@ -185,6 +184,9 @@ void MainWindow::createUndoView()

MainWindow::~MainWindow()
{
m_settings->save();
m_settings->deleteLater();

if (undoView) {
delete undoView;
}
Expand Down Expand Up @@ -228,8 +230,7 @@ bool MainWindow::save(QString fname)
editor->getUndoStack()->setClean();
if (autosaveFile.isOpen()) {
autosaveFile.remove();
QSettings settings(QSettings::IniFormat, QSettings::UserScope, QApplication::organizationName(), QApplication::applicationName());
settings.remove("autosaveFile");
m_settings->setAutoSaveFile(QStringLiteral(""));
}
return true;
}
Expand Down Expand Up @@ -391,8 +392,7 @@ bool MainWindow::closeFile()
} else { // Close without saving. Deleting autosave if it was opened.
if (loadedAutosave) {
autosaveFile.remove();
QSettings settings(QSettings::IniFormat, QSettings::UserScope, QApplication::organizationName(), QApplication::applicationName());
settings.remove("autosaveFile");
m_settings->setAutoSaveFile(QStringLiteral(""));
}
}
}
Expand All @@ -402,15 +402,13 @@ bool MainWindow::closeFile()
void MainWindow::closeEvent(QCloseEvent *e)
{
Q_UNUSED(e);
QSettings settings(QSettings::IniFormat, QSettings::UserScope, QApplication::organizationName(), QApplication::applicationName());
settings.beginGroup("MainWindow");
settings.setValue("geometry", saveGeometry());
settings.setValue("windowState", saveState());
settings.beginGroup("splitter");
settings.setValue("geometry", ui->splitter->saveGeometry());
settings.setValue("state", ui->splitter->saveState());
settings.endGroup();
settings.endGroup();

m_settings->setWindowGeometry(GlobalProperties::settingToIntList(saveGeometry()));
m_settings->setWindowState(GlobalProperties::settingToIntList(saveState()));
m_settings->setSplitterGeometry(GlobalProperties::settingToIntList(ui->splitter->saveGeometry()));
m_settings->setSplitterState(GlobalProperties::settingToIntList(ui->splitter->saveState()));
m_settings->save();

if (closeFile()) {
close();
} else {
Expand Down Expand Up @@ -804,18 +802,16 @@ void MainWindow::loadTranslation(const QString& language)

void MainWindow::on_actionEnglish_triggered()
{
QSettings settings(QSettings::IniFormat, QSettings::UserScope, QApplication::organizationName(), QApplication::applicationName());
QString language = "://wpanda_en.qm";
settings.setValue("language", language);
m_settings->setLanguage(language);

loadTranslation(language);
}

void MainWindow::on_actionPortuguese_triggered()
{
QSettings settings(QSettings::IniFormat, QSettings::UserScope, QApplication::organizationName(), QApplication::applicationName());
QString language = "://wpanda_pt.qm";
settings.setValue("language", language);
m_settings->setLanguage(language);

loadTranslation(language);
}
Expand Down Expand Up @@ -873,8 +869,7 @@ void MainWindow::populateLeftMenu()
void MainWindow::on_actionFast_Mode_triggered(bool checked)
{
setFastMode(checked);
QSettings settings(QSettings::IniFormat, QSettings::UserScope, QApplication::organizationName(), QApplication::applicationName());
settings.setValue("fastMode", checked);
m_settings->setFastMode(checked);
}

void MainWindow::on_actionWaveform_triggered()
Expand Down Expand Up @@ -958,13 +953,12 @@ void MainWindow::on_actionFullscreen_triggered() const

void MainWindow::autoSave()
{
QSettings settings(QSettings::IniFormat, QSettings::UserScope, QApplication::organizationName(), QApplication::applicationName());
COMMENT("Starting autosave.", 0);
if (editor->getUndoStack()->isClean()) {
COMMENT("Undo stack is clean.", 0);
if (autosaveFile.exists()) {
autosaveFile.remove();
settings.remove("autosaveFile");
m_settings->setAutoSaveFile(QStringLiteral(""));
}
} else {
if (autosaveFile.exists()) {
Expand All @@ -988,14 +982,14 @@ void MainWindow::autoSave()
QDataStream ds(&autosaveFile);
QString autosaveFilename = autosaveFile.fileName();
// qDebug( ) << "File saved to " << autosaveFilename;
settings.setValue("autosaveFile", autosaveFilename);
m_settings->setAutoSaveFile(autosaveFilename);
try {
editor->save(ds, dolphinFilename);
} catch (std::runtime_error &e) {
std::cerr << tr("Error autosaving project: ").toStdString() << e.what() << std::endl;
autosaveFile.close();
autosaveFile.remove();
settings.remove("autosaveFile");
m_settings->setAutoSaveFile(QStringLiteral(""));
}
autosaveFile.close();
}
Expand Down
Loading

0 comments on commit d6d7f8e

Please sign in to comment.