From ec7ef2000f0df0a8c00ac7b8ebcb9a48f228346b Mon Sep 17 00:00:00 2001 From: Ivan Loskutov Date: Thu, 19 Aug 2010 22:32:05 +0400 Subject: [PATCH] Added mount point editing. Added generating parameters for cl-install. --- CMakeLists.txt | 2 + src/calculateconfig.cpp | 65 +++++++++++++++++ src/calculateconfig.h | 15 +++- src/commons.h | 15 ++++ src/mountpointdialog.cpp | 145 ++++++++++++++++++++++++++++++++++++++ src/mountpointdialog.h | 42 +++++++++++ src/pageconfiguration.cpp | 54 +++++++++----- src/pageconfiguration.h | 11 +-- src/pagemountpoints.cpp | 134 +++++++++++++++++++++++++++++------ src/pagemountpoints.h | 21 ++---- src/pagepartitioning.cpp | 45 ++++++++++-- src/pagepartitioning.h | 4 +- src/pageusers.cpp | 2 +- src/systeminstaller.cpp | 23 +++++- src/systeminstaller.h | 1 + 15 files changed, 505 insertions(+), 74 deletions(-) create mode 100644 src/mountpointdialog.cpp create mode 100644 src/mountpointdialog.h diff --git a/CMakeLists.txt b/CMakeLists.txt index b107778..f006794 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -33,6 +33,7 @@ set( SOURCES src/pagefinish.cpp src/tools.cpp src/userinfodialog.cpp + src/mountpointdialog.cpp ) set( HEADERS @@ -50,6 +51,7 @@ set( HEADERS src/pageinstall.h src/pagefinish.h src/userinfodialog.h + src/mountpointdialog.h # src/commons.h ) diff --git a/src/calculateconfig.cpp b/src/calculateconfig.cpp index 437f101..41acd62 100644 --- a/src/calculateconfig.cpp +++ b/src/calculateconfig.cpp @@ -142,3 +142,68 @@ void CalculateConfig::parseVarList(const QDomNode& node) m_Config[name] = QVariant( resList ); } } + +void CalculateConfig::setValue ( const QString& key, const QVariant& value ) +{ + if ( m_Config.contains(key) ) + m_Config.remove(key); + + m_Config[key] = value; +} + +void CalculateConfig::showInstallParameters() +{ + QStringList params; + + // disks + if ( m_Config["--disk"].toStringList().count() > 0 ) + { + foreach(const QString& disk, m_Config["--disk"].toStringList()) + params << QString("--disk ") + disk; + } + + if ( !m_Config["--swap"].toString().isEmpty() ) + params << QString("--swap ") + m_Config["--swap"].toString(); + + // mbr + if ( !m_Config["gui_os_device_dev"].toString().isEmpty() ) + params << QString("--mbr ") + m_Config["gui_os_device_dev"].toString(); + + // config + if ( !m_Config["os_install_net_hostname"].toString().isEmpty() ) + params << "--set " << "os_install_net_hostname = " << m_Config["os_install_net_hostname"].toString(); + + if ( !m_Config["os_install_net_domain"].toString().isEmpty() ) + params << "--set " << "os_install_net_domain = " << m_Config["os_install_net_domain"].toString(); + + if ( !m_Config["os_install_clock_timezone"].toString().isEmpty() ) + params << "--set " << "os_install_clock_timezone = " << m_Config["os_install_clock_timezone"].toString(); + + if ( !m_Config["os_install_x11_video_drv"].toString().isEmpty() ) + params << "--set " << "os_install_x11_video_drv = " << m_Config["os_install_x11_video_drv"].toString(); + + if ( !m_Config["os_install_x11_composite"].toString().isEmpty() ) + params << "--set " << "os_install_x11_composite = " << m_Config["os_install_x11_composite"].toString(); + + if ( m_Config["gui_expert_mode"].toString() == "on" ) + { + if ( !m_Config["os_install_makeopts"].toString().isEmpty() ) + params << "--set " << "os_install_makeopts = " << m_Config["os_install_makeopts"].toString(); + + if ( !m_Config["os_install_proxy"].toString().isEmpty() ) + params << "--set " << "os_install_proxy = " << m_Config["os_install_proxy"].toString(); + + if ( !m_Config["os_install_ntp"].toString().isEmpty() ) + params << "--set " << "os_install_ntp = " << m_Config["os_install_ntp"].toString(); + + if ( !m_Config["os_install_clock_type"].toString().isEmpty() ) + params << "--set " << "os_install_clock_type = " << m_Config["os_install_clock_type"].toString(); + } + + // lang + if ( !m_Config["gui_install_language"].toString().isEmpty() ) + params << "--lang " << m_Config["gui_install_language"].toString(); + + + emit sendParameters(params); +} diff --git a/src/calculateconfig.h b/src/calculateconfig.h index dae5d7c..3bff932 100644 --- a/src/calculateconfig.h +++ b/src/calculateconfig.h @@ -1,21 +1,30 @@ #pragma once +#include + #include #include +#include #include class QDomNode; -class CalculateConfig +class CalculateConfig: public QObject { + Q_OBJECT public: static CalculateConfig* instance(); - bool getDefaultConfig(); + bool getDefaultConfig(); QVariant getValue(const QString& key) const { return m_Config[key]; } - void setValue(const QString& key, const QVariant& value) { m_Config[key] = value; } + void setValue(const QString& key, const QVariant& value); + + void showInstallParameters(); + +signals: + void sendParameters(QStringList); private: CalculateConfig(); diff --git a/src/commons.h b/src/commons.h index 5760f7b..95c6e0d 100644 --- a/src/commons.h +++ b/src/commons.h @@ -7,3 +7,18 @@ struct UserInfo QString name; QString psw; }; + +struct MountPoint { + // constant info + QString dev; + QString label; + QString size; + QString fs; + // from gui to installer + QString mountpoint; + // bool bind; + QString fs_new; + bool format; + + MountPoint() : /*bind(false),*/ format(false) {}; +}; diff --git a/src/mountpointdialog.cpp b/src/mountpointdialog.cpp new file mode 100644 index 0000000..fe10d43 --- /dev/null +++ b/src/mountpointdialog.cpp @@ -0,0 +1,145 @@ +#include "mountpointdialog.h" + +#include +#include +#include +#include +#include +#include + +#include + +#include + +MountPointDialog::MountPointDialog ( QWidget* parent, MountPoint* mountPoint ) +: QDialog(parent), m_MountPoint(mountPoint) +{ + setupUi(); + + if (mountPoint != 0) + { + m_edDevice->setText( mountPoint->dev ); + m_edMountPoint->setText( mountPoint->mountpoint ); + + //if ( !mountPoint->mountpoint.isEmpty() ) + //{ + m_chkboxFormat->setChecked(mountPoint->format); + QString fs = mountPoint->fs; + if ( !mountPoint->fs_new.isEmpty() ) + fs = mountPoint->fs_new; + // + int fsIndx = m_cmbboxFS->findText( fs ); + qDebug() << "FS: " << fs << " fsIndex: " << fsIndx; + if ( fsIndx >= 0) + m_cmbboxFS->setCurrentIndex( fsIndx ); + //} + if (m_edMountPoint->text() == "swap") + m_edMountPoint->setEnabled(false); + + connect( m_butOk, SIGNAL(clicked(bool)), this, SLOT(preAccept()) ); + } + connect( m_butCancel, SIGNAL(clicked(bool)), this, SLOT(reject()) ); + connect( m_cmbboxFS, SIGNAL(currentIndexChanged(QString)), this, SLOT(changeFS(QString))); +} + +MountPointDialog::~MountPointDialog() +{ +} + +void MountPointDialog::setupUi() +{ + m_labDevice = new QLabel( tr("Device: ") ); + m_edDevice = new QLineEdit; + m_edDevice->setReadOnly(true); + + m_labMountPoint = new QLabel( tr("Mount point: ") ); + m_edMountPoint = new QLineEdit; + + QGridLayout* gbox_0 = new QGridLayout; + gbox_0->setContentsMargins(0, 0, 0, 0); + gbox_0->addWidget(m_labDevice, 0, 0); + gbox_0->addWidget(m_edDevice, 0, 1); + gbox_0->addWidget(m_labMountPoint, 1, 0); + gbox_0->addWidget(m_edMountPoint, 1, 1); + + m_chkboxFormat = new QCheckBox( tr("Format partition") ); + + m_widgetFS = new QWidget; + + m_labFS = new QLabel( tr("File system: ") ); + m_cmbboxFS = new QComboBox; + m_cmbboxFS->addItem( "ext2" ); + m_cmbboxFS->addItem( "ext3" ); + m_cmbboxFS->addItem( "ext4" ); + m_cmbboxFS->addItem( "jfs" ); + m_cmbboxFS->addItem( "reiserfs" ); + m_cmbboxFS->addItem( "xfs" ); + m_cmbboxFS->addItem( "swap" ); + + QHBoxLayout* hbox_format = new QHBoxLayout; + hbox_format->addWidget(m_labFS); + hbox_format->addWidget(m_cmbboxFS); + + m_widgetFS->setLayout(hbox_format); + m_widgetFS->setVisible(false); + connect(m_chkboxFormat, SIGNAL(toggled(bool)), m_widgetFS, SLOT(setVisible(bool)) ); + + m_butOk = new QPushButton( tr("OK") ); + m_butCancel = new QPushButton( tr("Cancel") ); + + QHBoxLayout* hbox_2 = new QHBoxLayout; + hbox_2->addStretch(); + hbox_2->addWidget(m_butOk); + hbox_2->addWidget(m_butCancel); + + QVBoxLayout* vbox_0 = new QVBoxLayout; + vbox_0->addLayout(gbox_0); + vbox_0->addWidget(m_chkboxFormat); + vbox_0->addWidget(m_widgetFS); + vbox_0->addStretch(); + vbox_0->addLayout(hbox_2); + + setLayout( vbox_0 ); +} + +void MountPointDialog::preAccept() +{ + if ( m_edMountPoint->text().isEmpty() ) + { + qDebug() << "Reset mount point"; + // reset mount point + m_MountPoint->mountpoint = ""; + m_MountPoint->format = false; + m_MountPoint->fs_new = ""; + } + else + { + qDebug() << "Store mount point"; + + m_MountPoint->mountpoint = m_edMountPoint->text(); + + m_MountPoint->format = m_chkboxFormat->isChecked(); + if (m_MountPoint->format) + m_MountPoint->fs_new = m_cmbboxFS->currentText(); + } + + accept(); +} + +void MountPointDialog::changeFS( QString fs ) +{ + static QString oldMountPoint = ""; + if (fs == "swap") + { + oldMountPoint = m_edMountPoint->text(); + m_edMountPoint->setText("swap"); + m_edMountPoint->setEnabled(false); + } else { + m_edMountPoint->setEnabled(true); + if ( m_edMountPoint->text() == "swap" ) + { + m_edMountPoint->setText(oldMountPoint); + oldMountPoint.clear(); + } + } +} diff --git a/src/mountpointdialog.h b/src/mountpointdialog.h new file mode 100644 index 0000000..362aa37 --- /dev/null +++ b/src/mountpointdialog.h @@ -0,0 +1,42 @@ +#pragma once + +#include + +#include "commons.h" + +class QLabel; +class QLineEdit; +class QComboBox; +class QCheckBox; +class QWidget; + +class MountPointDialog: public QDialog +{ + Q_OBJECT + + public: + MountPointDialog(QWidget* parent, MountPoint* mountPoint = 0 ); + ~MountPointDialog(); + + private slots: + void preAccept(); + void changeFS(QString fs); + + private: + void setupUi(); + + private: + QLabel* m_labDevice; + QLineEdit* m_edDevice; + QLabel* m_labMountPoint; + QLineEdit* m_edMountPoint; + QCheckBox* m_chkboxFormat; + QWidget* m_widgetFS; + QLabel* m_labFS; + QComboBox* m_cmbboxFS; + + QPushButton* m_butOk; + QPushButton* m_butCancel; + + MountPoint* m_MountPoint; +}; \ No newline at end of file diff --git a/src/pageconfiguration.cpp b/src/pageconfiguration.cpp index 58ea56c..2d0bb9f 100644 --- a/src/pageconfiguration.cpp +++ b/src/pageconfiguration.cpp @@ -7,6 +7,7 @@ #include #include #include +#include #include @@ -141,26 +142,43 @@ void PageConfiguration::setupUi() vbox_pageconf->addWidget(m_widgetExtParameters); vbox_pageconf->addStretch(); - // - setLayout( vbox_pageconf ); + + QScrollArea* scrArea = new QScrollArea; + scrArea->setWidgetResizable(true); + + QWidget* scrWidg = new QWidget; + QVBoxLayout* scrWidgLayout = new QVBoxLayout(scrWidg); + + scrWidgLayout->addLayout(vbox_pageconf); + + scrWidg->setLayout(scrWidgLayout); + + scrArea->setWidget(scrWidg); + scrArea->setFrameShadow(QFrame::Plain); + scrArea->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn); + + QVBoxLayout* vbox_scroll = new QVBoxLayout; + vbox_scroll->addWidget(scrArea); + + setLayout( vbox_scroll ); retranslateUi(); } void PageConfiguration::mapSignals() { - connect(m_editHostName, SIGNAL(textChanged(QString)), this, SLOT(storeData())); - connect(m_editDomainName, SIGNAL(textChanged(QString)), this, SLOT(storeData())); - connect(m_cmbboxLanguage, SIGNAL(currentIndexChanged(int)), this, SLOT(storeData())); - connect(m_cmbboxTimezone, SIGNAL(currentIndexChanged(int)), this, SLOT(storeData())); - connect(m_cmbboxMbrDevice, SIGNAL(currentIndexChanged(int)), this, SLOT(storeData())); - connect(m_cmbboxVideoDrv, SIGNAL(currentIndexChanged(int)), this, SLOT(storeData())); - connect(m_chkboxComposite, SIGNAL(toggled(bool)), this, SLOT(storeData())); - connect(m_editMakeOpts, SIGNAL(textChanged(QString)), this, SLOT(storeData())); - connect(m_editProxy, SIGNAL(textChanged(QString)), this, SLOT(storeData())); - connect(m_editNtp, SIGNAL(textChanged(QString)), this, SLOT(storeData())); - connect(m_cmbboxClockType, SIGNAL(currentIndexChanged(int)), this, SLOT(storeData())); - connect(m_chkboxExtParameters, SIGNAL(toggled(bool)), this, SLOT(storeData())); + connect(m_editHostName, SIGNAL(textChanged(QString)), this, SLOT( updateData())); + connect(m_editDomainName, SIGNAL(textChanged(QString)), this, SLOT( updateData())); + connect(m_cmbboxLanguage, SIGNAL(currentIndexChanged(int)), this, SLOT( updateData())); + connect(m_cmbboxTimezone, SIGNAL(currentIndexChanged(int)), this, SLOT( updateData())); + connect(m_cmbboxMbrDevice, SIGNAL(currentIndexChanged(int)), this, SLOT( updateData())); + connect(m_cmbboxVideoDrv, SIGNAL(currentIndexChanged(int)), this, SLOT( updateData())); + connect(m_chkboxComposite, SIGNAL(toggled(bool)), this, SLOT( updateData())); + connect(m_editMakeOpts, SIGNAL(textChanged(QString)), this, SLOT( updateData())); + connect(m_editProxy, SIGNAL(textChanged(QString)), this, SLOT( updateData())); + connect(m_editNtp, SIGNAL(textChanged(QString)), this, SLOT( updateData())); + connect(m_cmbboxClockType, SIGNAL(currentIndexChanged(int)), this, SLOT( updateData())); + connect(m_chkboxExtParameters, SIGNAL(toggled(bool)), this, SLOT( updateData())); } void PageConfiguration::unmapSignals() @@ -195,7 +213,7 @@ void PageConfiguration::retranslateUi() m_cmbboxLanguage->addItem( tr("Polish"), QVariant("pl_PL") ); m_cmbboxLanguage->addItem( tr("Brazilian Portugal"), QVariant("pt_BR") ); m_cmbboxLanguage->addItem( tr("Russian"), QVariant("ru_RU") ); - m_cmbboxLanguage->addItem( tr("English"), QVariant("uk_UA") ); + m_cmbboxLanguage->addItem( tr("Ukraine"), QVariant("uk_UA") ); m_labelTimezone->setText( tr("Timezone:") ); setupTimezones(); @@ -296,7 +314,7 @@ void PageConfiguration::show() mapSignals(); } -void PageConfiguration::storeData() +void PageConfiguration::updateData() { CalculateConfig* clConf = CalculateConfig::instance(); @@ -308,10 +326,14 @@ void PageConfiguration::storeData() clConf->setValue("gui_os_device_dev", m_cmbboxMbrDevice->currentText() ); clConf->setValue("os_install_x11_video_drv", m_cmbboxVideoDrv->currentText() ); clConf->setValue("os_install_x11_composite", m_chkboxComposite->isChecked() ? "on" : "off" ); + + clConf->setValue("gui_expert_mode", m_chkboxExtParameters->isChecked() ? "on" : "off" ); clConf->setValue("os_install_makeopts", m_editMakeOpts->text() ); clConf->setValue("os_install_proxy", m_editProxy->text() ); clConf->setValue("os_install_ntp", m_editNtp->text() ); clConf->setValue("os_install_clock_type", m_cmbboxClockType->currentText() ); + + clConf->showInstallParameters(); } void PageConfiguration::setupTimezones() diff --git a/src/pageconfiguration.h b/src/pageconfiguration.h index 54b681a..4fcbbeb 100644 --- a/src/pageconfiguration.h +++ b/src/pageconfiguration.h @@ -30,18 +30,11 @@ public slots: void show(); private slots: - void storeData(); - -signals: - //void selectedSettings(InstallerSettings); - //void updatedCommand(QString); + void updateData(); private: QLabel* m_labelSelectParams; -/* ??? - QLabel* m_labelBuilder; - QCheckBox* m_chkboxBuilder; -*/ + QLabel* m_labelHostName; QLineEdit* m_editHostName; diff --git a/src/pagemountpoints.cpp b/src/pagemountpoints.cpp index ad6835a..7cf6352 100644 --- a/src/pagemountpoints.cpp +++ b/src/pagemountpoints.cpp @@ -8,6 +8,7 @@ #include #include "calculateconfig.h" +#include "mountpointdialog.h" PageMountPoints::PageMountPoints() : InstallerPage() @@ -61,11 +62,10 @@ void PageMountPoints::show() m_trwMountPoints->setColumnWidth(3, 110); m_trwMountPoints->setColumnWidth(4, 80); - m_trwMountPoints->expandAll(); - + m_trwMountPoints->setEnabled(true); + CalculateConfig::instance()->showInstallParameters(); if ( CalculateConfig::instance()->getValue("gui_partitioning") == "auto" ) { - qDebug() << "Skip Mount points"; QMessageBox::information( this, tr("Information"), @@ -88,12 +88,54 @@ bool PageMountPoints::validate() void PageMountPoints::partitionDoubleClicked ( QTreeWidgetItem* item, int index ) { - qDebug() << "selected :" << item->text(0); -} + // skip disks + if (item->childCount() != 0) + return; + + if (item->parent() == 0) + return; + + QString dev = item->parent()->text(0); + dev.remove("/dev/"); + QString part = item->text(0); + + qDebug() << "selected :" << dev << " " << part; + + // find data + MountPointsList mpList = m_treeMountPoints[dev]; + + int mpIndex = -1; + foreach(const MountPoint& mpItem, mpList) + { + ++mpIndex; + if (mpItem.dev == part) + break; + } + + qDebug() << "index: " << mpIndex; + + if (mpIndex >= 0) + { + MountPoint mp( mpList.at(mpIndex) ); + + QScopedPointer mpDlg( new MountPointDialog(this, &mp) ); + + if ( mpDlg->exec() == QDialog::Accepted ) + { + // replace information + mpList.replace(mpIndex, mp); + m_treeMountPoints.remove(dev); + m_treeMountPoints[dev] = mpList; + showTree(); + } + } +} void PageMountPoints::getTree() { + m_treeMountPoints.clear(); + QStringList os_disk_dev = CalculateConfig::instance()->getValue("os_disk_dev").toStringList(); QStringList os_disk_format = CalculateConfig::instance()->getValue("os_disk_format").toStringList(); QStringList os_disk_name = CalculateConfig::instance()->getValue("os_disk_name").toStringList(); @@ -102,15 +144,6 @@ void PageMountPoints::getTree() QStringList os_dev_dev = CalculateConfig::instance()->getValue("os_device_dev").toStringList(); - // TODO -// if ( !( os_disk_dev.size() == os_disk_format.size() == os_disk_name.size() == os_disk_part.size() == -// os_disk_size.size() ) -// ) -// { -// qDebug() << "Error data from cl-install"; -// return; -// } - foreach(const QString& dev, os_dev_dev) { for (int i(0); i < os_disk_dev.size(); ++i) @@ -130,13 +163,11 @@ void PageMountPoints::getTree() if ( m_treeMountPoints.contains(dev) ) { m_treeMountPoints[dev] << mountpoint; - //qDebug() << "Append m_treeMountPoints[" << dev << "] = " << mountpoint.dev; } else { MountPointsList lst = MountPointsList() << mountpoint; m_treeMountPoints[dev] = lst; - //qDebug() << "Create m_treeMountPoints[" << dev << "] = " << mountpoint.dev; } } } @@ -154,6 +185,10 @@ void PageMountPoints::showTree() showBranch( it.key(), it.value() ); ++it; } + + m_trwMountPoints->expandAll(); + + generateCmdDisk(); } void PageMountPoints::showBranch(const QString& dev, const MountPointsList& list) @@ -165,7 +200,6 @@ void PageMountPoints::showBranch(const QString& dev, const MountPointsList& list trwItem_0->setText(3, "" ); trwItem_0->setText(4, "" ); trwItem_0->setText(5, "" ); -// trwItem_0->setText(6, "" ); foreach(const MountPoint& mp, list) { @@ -173,12 +207,70 @@ void PageMountPoints::showBranch(const QString& dev, const MountPointsList& list trwItem_0_0->setText(0, mp.dev ); // Partition trwItem_0_0->setText(1, mp.label ); // Label trwItem_0_0->setText(2, mp.size ); // Size - bool modified = !mp.mountpoint.isEmpty(); trwItem_0_0->setText(3, mp.mountpoint ); // Mount point -// trwItem_0_0->setText(4, modified ? (mp.bind ? tr("YES") : tr("no")) : "" ); // Bind - trwItem_0_0->setText(4, modified ? mp.fs_new : mp.fs ); // File system - trwItem_0_0->setText(5, modified ? (mp.format ? tr("YES") : tr("no")) : "" ); // Format + trwItem_0_0->setText(4, mp.fs_new.isEmpty() ? mp.fs : mp.fs_new ); // File system + trwItem_0_0->setText(5, mp.fs_new.isEmpty() ? "" : (mp.format ? tr("YES") : tr("no")) ); // Format } m_trwMountPoints->insertTopLevelItem(m_trwMountPoints->topLevelItemCount(), trwItem_0); } + +void PageMountPoints::generateCmdDisk() +{ + if ( CalculateConfig::instance()->getValue("gui_partitioning") != "auto" ) + { + QStringList diskCfg = parseMountPoint(); + qDebug() << "--disk " << diskCfg.join(" "); + CalculateConfig::instance()->setValue( "--disk", diskCfg ); + + QString swapCfg = parseSwap(); + qDebug() << "--swap " << swapCfg; + CalculateConfig::instance()->setValue( "--swap", swapCfg ); + } + CalculateConfig::instance()->showInstallParameters(); +} + +QStringList PageMountPoints::parseMountPoint() +{ + QStringList result; + + MountPointsTree::ConstIterator it = m_treeMountPoints.constBegin(); + + while( it != m_treeMountPoints.constEnd() ) + { + foreach(const MountPoint& mp, it.value()) + { + if ( !mp.mountpoint.isEmpty() && (mp.fs_new != "swap") ) + { + QString resultStr = mp.dev + ":" + mp.mountpoint; + if (mp.format && !mp.fs_new.isEmpty()) + resultStr += ":" + mp.fs_new; + resultStr += " "; + + result << resultStr; + } + } + ++it; + } + + return result; +} + +QString PageMountPoints::parseSwap() +{ + QString result; + + MountPointsTree::ConstIterator it = m_treeMountPoints.constBegin(); + + while( it != m_treeMountPoints.constEnd() ) + { + foreach(const MountPoint& mp, it.value()) + { + if ( mp.fs_new == "swap" ) + return mp.dev; + } + ++it; + } + + return QString(); +} diff --git a/src/pagemountpoints.h b/src/pagemountpoints.h index 04bf8d7..982f25f 100644 --- a/src/pagemountpoints.h +++ b/src/pagemountpoints.h @@ -4,24 +4,11 @@ #include +#include "commons.h" + class QLabel; class QTreeWidget; -struct MountPoint { - // constant info - QString dev; - QString label; - QString size; - QString fs; - // from gui to installer - QString mountpoint; -// bool bind; - QString fs_new; - bool format; - - MountPoint() : /*bind(false),*/ format(false) {}; -}; - typedef QList MountPointsList; typedef QMap MountPointsTree; @@ -50,6 +37,10 @@ private: void showTree(); void showBranch(const QString& dev, const MountPointsList& list); + void generateCmdDisk(); + QStringList parseMountPoint(); + QString parseSwap(); + private: QLabel* m_labMountPoints; QTreeWidget* m_trwMountPoints; diff --git a/src/pagepartitioning.cpp b/src/pagepartitioning.cpp index 59874dd..c0abc19 100644 --- a/src/pagepartitioning.cpp +++ b/src/pagepartitioning.cpp @@ -21,6 +21,8 @@ PagePartitioning::PagePartitioning() : m_butExistPartitions->setChecked(true); connect( m_butManualPartitioning, SIGNAL(clicked()), this, SLOT(partitioningCurrentDisk()) ); + + mapSignals(); } void PagePartitioning::setupUi() @@ -75,26 +77,41 @@ void PagePartitioning::retranslateUi() bool PagePartitioning::validate() { - // store selected options to CalculateConfig - QString partitioningVal = m_butAllDisk->isChecked() ? QString("auto") : QString("manual"); - CalculateConfig::instance()->setValue("gui_partitioning", partitioningVal); - qDebug() << "Var \"gui_partitioning\" = " << partitioningVal; - + unmapSignals(); return true; } +void PagePartitioning::mapSignals() +{ + connect( m_cmbxDisks, SIGNAL(currentIndexChanged(QString)), this, SLOT(updateData()) ); + connect( m_butAllDisk, SIGNAL(toggled(bool)), this, SLOT(updateData()) ); +} + +void PagePartitioning::unmapSignals() +{ + disconnect(m_cmbxDisks); + disconnect(m_butAllDisk); +} + void PagePartitioning::show() { + unmapSignals(); + m_cmbxDisks->clear(); QStringList disks = CalculateConfig::instance()->getValue("os_device_dev").toStringList(); - m_cmbxDisks->addItems(disks); + foreach(const QString& disk, disks) + m_cmbxDisks->addItem("/dev/" + disk); if ( m_cmbxDisks->count() == 0 ) { QMessageBox::critical(this, tr("Error"), tr("Disks not found")); emit changeNext(false); } + + updateData(); + + mapSignals(); } void PagePartitioning::partitioningCurrentDisk() @@ -103,3 +120,19 @@ void PagePartitioning::partitioningCurrentDisk() emit manualyPartitioning( m_cmbxDisks->itemData( m_cmbxDisks->currentIndex()).toString() ); } +void PagePartitioning::updateData() +{ + // store selected options to CalculateConfig + QString partitioningVal = m_butAllDisk->isChecked() ? QString("auto") : QString("manual"); + CalculateConfig::instance()->setValue("gui_partitioning", partitioningVal); + + if (m_butAllDisk->isChecked()) + CalculateConfig::instance()->setValue("--disk", QStringList() << m_cmbxDisks->currentText() ); + else + CalculateConfig::instance()->setValue("--disk", QStringList() ); + + + CalculateConfig::instance()->showInstallParameters(); +} + + diff --git a/src/pagepartitioning.h b/src/pagepartitioning.h index 725d96c..185464c 100644 --- a/src/pagepartitioning.h +++ b/src/pagepartitioning.h @@ -21,12 +21,14 @@ public: private: void setupUi(); + void mapSignals(); + void unmapSignals(); public slots: void show(); private slots: -// void updatePartitions(int num); + void updateData(); void partitioningCurrentDisk(); signals: diff --git a/src/pageusers.cpp b/src/pageusers.cpp index 3c253ff..979ae09 100644 --- a/src/pageusers.cpp +++ b/src/pageusers.cpp @@ -1,6 +1,6 @@ #include "pageusers.h" -#include +#include #include #include #include diff --git a/src/systeminstaller.cpp b/src/systeminstaller.cpp index c888ced..ba60154 100644 --- a/src/systeminstaller.cpp +++ b/src/systeminstaller.cpp @@ -149,6 +149,8 @@ void SystemInstaller::setupUi() m_labelInstCmd->setContextMenuPolicy(Qt::CustomContextMenu); connect( m_labelInstCmd, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(showCopyMenu(QPoint)) ); + connect( CalculateConfig::instance(), SIGNAL(sendParameters(QStringList)), this, SLOT(showCmd(QStringList)) ); + retranslateUi(); } @@ -175,10 +177,10 @@ void SystemInstaller::setupInstallerPages() PageConfiguration* pageConfiguration( new PageConfiguration ); m_PageManager->addPage(pageConfiguration); - +/* PageUsers* pageUsers( new PageUsers ); m_PageManager->addPage( pageUsers ); - +*/ PageInstall* pageInstall( new PageInstall ); m_PageManager->addPage(pageInstall); @@ -294,3 +296,20 @@ void SystemInstaller::copyCmd() clipboard->setText( m_labelInstCmd->text() ); } +void SystemInstaller::showCmd( QStringList params ) +{ + if (params.count() > 0) + { + QString cmd("cl-install"); + + foreach(const QString& param, params) + cmd += " " + param; + + m_labelInstCmd->setText(cmd); + } + else + { + m_labelInstCmd->clear(); + } +} + diff --git a/src/systeminstaller.h b/src/systeminstaller.h index fcd44b9..b3806d0 100644 --- a/src/systeminstaller.h +++ b/src/systeminstaller.h @@ -46,6 +46,7 @@ private slots: void doPartitioning(QString); void completePartitioning(); + void showCmd(QStringList params); // void selectVolume(QString volume); // void selectConfiguration(InstallerSettings settings);