From 7b1ca5fe72951cb1dac24c0a2377a5e46ad8c774 Mon Sep 17 00:00:00 2001 From: Caio Carvalho Date: Thu, 16 Aug 2018 01:20:07 +0200 Subject: [PATCH] Setting RAID configuration file path through GUI. --- src/config/advancedpagewidget.cpp | 33 +++++++++++++++ src/config/advancedpagewidget.h | 6 +++ src/config/configureoptionsdialog.cpp | 4 ++ src/config/configurepageadvanced.ui | 60 +++++++++++++++++++++++---- 4 files changed, 96 insertions(+), 7 deletions(-) diff --git a/src/config/advancedpagewidget.cpp b/src/config/advancedpagewidget.cpp index 57ccbf8..14d43bd 100644 --- a/src/config/advancedpagewidget.cpp +++ b/src/config/advancedpagewidget.cpp @@ -1,6 +1,7 @@ /************************************************************************* * Copyright (C) 2010 by Volker Lanz * * Copyright (C) 2016 by Andrius Štikonas * + * Copyright (C) 2018 by Caio Carvalho * * * * This program is free software; you can redistribute it and/or * * modify it under the terms of the GNU General Public License as * @@ -22,16 +23,23 @@ #include #include +#include #include #include +#include AdvancedPageWidget::AdvancedPageWidget(QWidget* parent) : QWidget(parent) { setupUi(this); setupDialog(); + + raidConfigFilePath->clear(); + raidConfigFilePath->insert(SoftwareRAID::raidConfigurationFilePath()); + + connect(selectRaidFileButton, &QPushButton::clicked, this, &AdvancedPageWidget::searchForRaidConfigFile); } QString AdvancedPageWidget::backend() const @@ -60,3 +68,28 @@ void AdvancedPageWidget::setupDialog() setBackend(Config::backend()); } + +QString AdvancedPageWidget::raidConfigurationFile() const +{ + return raidConfigFilePath->text(); +} + +void AdvancedPageWidget::searchForRaidConfigFile() +{ + QPointer dialog = new QFileDialog(this, QStringLiteral("Select Software RAID configuration file"), + QStringLiteral("/")); + + dialog->setFileMode(QFileDialog::FileMode::ExistingFile); + dialog->setNameFilter(QStringLiteral("Configuration files (*.conf)")); + + auto updateConfig = [this](const QString& file){ + if (!file.isEmpty()) { + raidConfigFilePath->clear(); + raidConfigFilePath->insert(file); + } + }; + + connect(dialog, &QFileDialog::fileSelected, updateConfig); + + dialog->exec(); +} diff --git a/src/config/advancedpagewidget.h b/src/config/advancedpagewidget.h index 621efa0..9acbb78 100644 --- a/src/config/advancedpagewidget.h +++ b/src/config/advancedpagewidget.h @@ -1,6 +1,7 @@ /************************************************************************* * Copyright (C) 2010 by Volker Lanz * * Copyright (C) 2016 by Andrius Štikonas * + * Copyright (C) 2018 by Caio Carvalho * * * * This program is free software; you can redistribute it and/or * * modify it under the terms of the GNU General Public License as * @@ -45,6 +46,11 @@ public: QString backend() const; void setBackend(const QString& name); + QString raidConfigurationFile() const; + +protected Q_SLOTS: + void searchForRaidConfigFile(); + private: void setupDialog(); }; diff --git a/src/config/configureoptionsdialog.cpp b/src/config/configureoptionsdialog.cpp index ddc4f6b..2c339db 100644 --- a/src/config/configureoptionsdialog.cpp +++ b/src/config/configureoptionsdialog.cpp @@ -41,6 +41,7 @@ #include #include +#include ConfigureOptionsDialog::ConfigureOptionsDialog(QWidget* parent, const OperationStack& ostack, const QString& name) : KConfigDialog(parent, name, Config::self()), @@ -100,6 +101,9 @@ void ConfigureOptionsDialog::updateSettings() changed = true; } + if (advancedPageWidget().raidConfigurationFile() != SoftwareRAID::raidConfigurationFilePath()) + SoftwareRAID::setRaidConfigurationFilePath(advancedPageWidget().raidConfigurationFile()); + if (changed) emit KConfigDialog::settingsChanged(i18n("General Settings")); } diff --git a/src/config/configurepageadvanced.ui b/src/config/configurepageadvanced.ui index 96b5e5a..4cc6d8a 100644 --- a/src/config/configurepageadvanced.ui +++ b/src/config/configurepageadvanced.ui @@ -6,12 +6,18 @@ 0 0 - 449 + 511 420 - - + + + 16777215 + 420 + + + + @@ -26,7 +32,7 @@ - Active backend: + Acti&ve backend: m_ComboBackend @@ -39,7 +45,47 @@ - + + + + Software RAID configuration + + + + + + Configuration file: + + + raidConfigFilePath + + + + + + + + + true + + + true + + + + + + + Select File + + + + + + + + + @@ -50,11 +96,11 @@ Units - + - Preferred unit: + Preferred &unit: m_ComboBackend