diff --git a/src/installerpage.h b/src/installerpage.h
index 84ce12c..87fb931 100644
--- a/src/installerpage.h
+++ b/src/installerpage.h
@@ -7,15 +7,19 @@ class InstallerPage : public QWidget
{
Q_OBJECT
public:
- InstallerPage( QWidget* parent = 0, const QString& title = QString() ) : QWidget(parent), m_Title(title) {}
+ InstallerPage( QWidget* parent = 0, const QString& title = QString() ) : QWidget(parent), m_Active(false),
+ m_Title(title) {}
virtual ~InstallerPage() {}
protected:
virtual void setupUi() = 0;
+
public:
QString getTitle() const { return m_Title; }
void setTitle(const QString& title ) { m_Title = title; }
+ void setActive() { m_Active = true; };
+ void clearActive() { m_Active = false; };
virtual bool validate() { return true; }
virtual void retranslateUi() = 0;
@@ -28,5 +32,6 @@ public slots:
virtual void show() {}
protected:
+ bool m_Active;
QString m_Title;
};
diff --git a/src/pageconfiguration.cpp b/src/pageconfiguration.cpp
index fea6acc..34e00fc 100644
--- a/src/pageconfiguration.cpp
+++ b/src/pageconfiguration.cpp
@@ -22,21 +22,6 @@ void PageConfiguration::setupUi()
//
m_labelHelp = new QLabel;
- // mode
- QHBoxLayout* hbox_builder = new QHBoxLayout;
- m_labelBuilder = new QLabel;
- m_chkboxBuilder = new QCheckBox;
- m_chkboxBuilder->setLayoutDirection( Qt::RightToLeft );
- hbox_builder->addWidget(m_labelBuilder);
- hbox_builder->addWidget(m_chkboxBuilder);
-
- QHBoxLayout* hbox_force = new QHBoxLayout;
- m_labelForce = new QLabel;
- m_chkboxForce = new QCheckBox;
- m_chkboxForce->setLayoutDirection( Qt::RightToLeft );
- hbox_force->addWidget(m_labelForce);
- hbox_force->addWidget(m_chkboxForce);
-
// hostname
QHBoxLayout* hbox_hostname = new QHBoxLayout;
m_labelHostName = new QLabel;
@@ -75,6 +60,29 @@ void PageConfiguration::setupUi()
hbox_fsformat->addWidget(m_labelFormat);
hbox_fsformat->addWidget(m_cmbboxFormat);
+ // composite
+ QHBoxLayout* hbox_composite = new QHBoxLayout;
+ m_labelComposite = new QLabel;
+ m_chkboxComposite = new QCheckBox;
+ m_chkboxComposite->setLayoutDirection( Qt::RightToLeft );
+ m_chkboxComposite->setChecked(true);
+ hbox_composite->addWidget(m_labelComposite);
+ hbox_composite->addWidget(m_chkboxComposite);
+
+ // extended parameters
+ m_chkboxExtParameters = new QCheckBox;
+ m_widgetExtParameters = new QWidget;
+
+ QVBoxLayout* vbox_extparam = new QVBoxLayout;
+
+ // mode
+ QHBoxLayout* hbox_builder = new QHBoxLayout;
+ m_labelBuilder = new QLabel;
+ m_chkboxBuilder = new QCheckBox;
+ m_chkboxBuilder->setLayoutDirection( Qt::RightToLeft );
+ hbox_builder->addWidget(m_labelBuilder);
+ hbox_builder->addWidget(m_chkboxBuilder);
+
// #-mbr-# [w] "on"
QHBoxLayout* hbox_writembr = new QHBoxLayout;
m_labelWriteMbr = new QLabel;
@@ -92,21 +100,6 @@ void PageConfiguration::setupUi()
hbox_useuuid->addWidget(m_labelUseUUID);
hbox_useuuid->addWidget(m_chkboxUseUUID);
- // composite
- QHBoxLayout* hbox_composite = new QHBoxLayout;
- m_labelComposite = new QLabel;
- m_chkboxComposite = new QCheckBox;
- m_chkboxComposite->setLayoutDirection( Qt::RightToLeft );
- m_chkboxComposite->setChecked(true);
- hbox_composite->addWidget(m_labelComposite);
- hbox_composite->addWidget(m_chkboxComposite);
-
- // extended parameters
- m_chkboxExtParameters = new QCheckBox;
- m_widgetExtParameters = new QWidget;
-
- QVBoxLayout* vbox_extparam = new QVBoxLayout;
-
// #-type-# [w] ["hdd", "flash", "usb-hdd"]
QHBoxLayout* hbox_disktype = new QHBoxLayout;
m_labelDiskType = new QLabel;
@@ -136,6 +129,9 @@ void PageConfiguration::setupUi()
hbox_cpushed->addWidget(m_labelIOShed);
hbox_cpushed->addWidget(m_cmbboxIOShed);
+ vbox_extparam->addLayout(hbox_builder);
+ vbox_extparam->addLayout(hbox_writembr);
+ vbox_extparam->addLayout(hbox_useuuid);
vbox_extparam->addLayout(hbox_disktype);
vbox_extparam->addLayout(hbox_videodrv);
vbox_extparam->addLayout(hbox_videores);
@@ -144,34 +140,25 @@ void PageConfiguration::setupUi()
m_widgetExtParameters->setVisible(false);
connect(m_chkboxExtParameters, SIGNAL(toggled(bool)), m_widgetExtParameters, SLOT(setVisible(bool)) );
- // command
- m_labelDescCommand = new QLabel;
- m_labelCommand = new QLabel;
- QFont fontCmd = QApplication::font();
- fontCmd.setFamily("Droid Sans Mono");
- m_labelCommand->setFont( fontCmd );
- m_labelCommand->setWordWrap(true);
-
//
QVBoxLayout* vbox_pageconf = new QVBoxLayout;
vbox_pageconf->addWidget( m_labelHelp );
- vbox_pageconf->addLayout(hbox_builder);
- vbox_pageconf->addLayout(hbox_force);
vbox_pageconf->addLayout(hbox_hostname);
vbox_pageconf->addLayout(hbox_language);
vbox_pageconf->addLayout(hbox_timezone);
vbox_pageconf->addLayout(hbox_erase);
vbox_pageconf->addLayout(hbox_fsformat);
- vbox_pageconf->addLayout(hbox_writembr);
- vbox_pageconf->addLayout(hbox_useuuid);
vbox_pageconf->addLayout(hbox_composite);
+
+ QFrame* hline = new QFrame;
+ hline->setFrameShape(QFrame::HLine);
+ hline->setFrameShadow(QFrame::Sunken);
+
+ vbox_pageconf->addWidget(hline);
vbox_pageconf->addWidget(m_chkboxExtParameters);
vbox_pageconf->addWidget(m_widgetExtParameters);
vbox_pageconf->addStretch();
-
- vbox_pageconf->addWidget(m_labelDescCommand);
- vbox_pageconf->addWidget(m_labelCommand);
//
setLayout( vbox_pageconf );
@@ -183,7 +170,6 @@ void PageConfiguration::setupUi()
void PageConfiguration::mapSignals()
{
connect(m_chkboxBuilder, SIGNAL(toggled(bool)), this, SLOT(generateCommand()));
- connect(m_chkboxForce, SIGNAL(toggled(bool)), this, SLOT(generateCommand()));
connect(m_editHostname, SIGNAL(textChanged(QString)), this, SLOT(generateCommand()));
connect(m_cmbboxLanguage, SIGNAL(currentIndexChanged(int)), this, SLOT(generateCommand()));
connect(m_cmbboxTimezone, SIGNAL(currentIndexChanged(int)), this, SLOT(generateCommand()));
@@ -206,7 +192,6 @@ void PageConfiguration::retranslateUi()
m_labelHelp->setText( tr("Select parameters: ") );
m_labelBuilder->setText( tr("Installation for assembling") );
- m_labelForce->setText( tr("Do not prompt before overwriting") );
m_labelHostName->setText( tr("Hostname: ") );
m_editHostname->setText( "calculate" );
@@ -832,7 +817,7 @@ void PageConfiguration::retranslateUi()
m_cmbboxVideoDrv->addItem("vmware");
- m_labelComposite->setText( tr("Use composite") );
+ m_labelComposite->setText( tr("Use desktop effects") );
m_chkboxExtParameters->setText( tr("Expert settings") );
@@ -845,11 +830,8 @@ void PageConfiguration::retranslateUi()
m_cmbboxIOShed->addItem("noop");
m_cmbboxIOShed->addItem("deadline");
- m_labelDescCommand->setText( tr("Command for install:") );
-
}
-
bool PageConfiguration::validate()
{
if ( !m_editHostname->text().isEmpty() )
@@ -857,7 +839,6 @@ bool PageConfiguration::validate()
InstallerSettings settings;
settings.builder = m_chkboxBuilder->isChecked();
- settings.force = m_chkboxForce->isChecked();
settings.host = m_editHostname->text();
settings.language = m_cmbboxLanguage->itemData( m_cmbboxLanguage->currentIndex() ).toString();
settings.timezone = m_cmbboxTimezone->currentText();
@@ -878,28 +859,32 @@ bool PageConfiguration::validate()
void PageConfiguration::generateCommand()
{
+ if (!m_Active)
+ return;
+
QString cmd = "calculate ";
- cmd += m_chkboxBuilder->isChecked() ? "--build " : "";
- cmd += m_chkboxForce->isChecked() ? "--force " : "";
cmd += QString("--disk=%1 ").arg( *m_Disk );
cmd += QString("--set-hostname=%1 ").arg( m_editHostname->text() );
cmd += QString("--set-lang=%1 ").arg( m_cmbboxLanguage->itemData(m_cmbboxLanguage->currentIndex()).toString() );
cmd += QString("--set-timezone=%1 ").arg( m_cmbboxTimezone->currentText() );
cmd += QString("--set-format=%1 ").arg( m_cmbboxFormat->currentText() );
cmd += m_chkboxErase->isChecked() ? "--set-erase=yes " : "";
- cmd += m_chkboxWriteMbr->isChecked() ? "--set-mbr=yes " : "";
- cmd += m_chkboxUseUUID->isChecked() ? "--set-uuid=yes " : "";
cmd += m_chkboxComposite->isChecked() ? "--set-composite=yes " : "";
if (m_chkboxExtParameters->isChecked())
{
+ cmd += m_chkboxBuilder->isChecked() ? "--build " : "";
+
+ cmd += m_chkboxWriteMbr->isChecked() ? "--set-mbr=yes " : "";
+ cmd += m_chkboxUseUUID->isChecked() ? "--set-uuid=yes " : "";
+
cmd += QString("--set-type=%1 ").arg( m_cmbboxDiskType->currentText() );
cmd += QString("--set-video_drv=%1 ").arg( m_cmbboxVideoDrv->currentText() );
cmd += QString("--set-video_resolution=%1 ").arg( m_editVideoRes->text() );
cmd += QString("--set-scheduler=%1 ").arg( m_cmbboxIOShed->currentText() );
}
- m_labelCommand->setText(cmd);
+ emit updatedCommand(cmd);
}
void PageConfiguration::show()
{
diff --git a/src/pageconfiguration.h b/src/pageconfiguration.h
index 2f7de8e..80bc376 100644
--- a/src/pageconfiguration.h
+++ b/src/pageconfiguration.h
@@ -31,6 +31,7 @@ private slots:
signals:
void selectedSettings(InstallerSettings);
+ void updatedCommand(QString);
private:
const QString* m_Disk;
@@ -40,8 +41,6 @@ private:
QLabel* m_labelBuilder;
QCheckBox* m_chkboxBuilder;
- QLabel* m_labelForce;
- QCheckBox* m_chkboxForce;
QLabel* m_labelHostName;
QLineEdit* m_editHostname;
@@ -75,9 +74,5 @@ private:
QLineEdit* m_editVideoRes;
QLabel* m_labelIOShed;
QComboBox* m_cmbboxIOShed;
-
- QLabel* m_labelDescCommand;
- QLabel* m_labelCommand;
-
};
diff --git a/src/pageinstall.cpp b/src/pageinstall.cpp
index 9dcbb4c..501c607 100644
--- a/src/pageinstall.cpp
+++ b/src/pageinstall.cpp
@@ -64,10 +64,10 @@ void PageInstall::show()
QStringList args;
+ args << "--force";
+
if (m_Settings->builder)
args << "--build";
- if (m_Settings->force)
- args << "--force";
args << QString("--disk=%1").arg(m_Settings->disk);
args << QString("--set-hostname=%1").arg(m_Settings->host);
@@ -82,7 +82,6 @@ void PageInstall::show()
args << QString("--set-type=%1").arg( m_Settings->disktype );
args << QString("--set-video_drv=%1").arg( m_Settings->videodrv );
-
m_clProc->start("calculate", args);
}
}
diff --git a/src/pagemanager.cpp b/src/pagemanager.cpp
index 751eeb7..4cc87ee 100644
--- a/src/pagemanager.cpp
+++ b/src/pagemanager.cpp
@@ -49,6 +49,7 @@ void PageManager::showOnce(InstallerPage* page)
{
Q_ASSERT_X( page != 0, "PageManager::showOnce", "page pointer is 0");
+
if (page)
{
removeStackedPage();
@@ -106,10 +107,12 @@ void PageManager::pageUpdate()
foreach(InstallerPage* page, m_Pages)
{
QString title = page->getTitle();
+ page->clearActive();
if (title == (*m_CurPage)->getTitle())
{
title = "" + title + "";
+ page->setActive();
page->show();
}
title += "
";
diff --git a/src/systeminstaller.cpp b/src/systeminstaller.cpp
index d7b321c..367aefa 100644
--- a/src/systeminstaller.cpp
+++ b/src/systeminstaller.cpp
@@ -8,6 +8,8 @@
#include
#include
#include
+#include
+#include
#include "pagemanager.h"
@@ -54,7 +56,7 @@ void SystemInstaller::setupUi()
hbox_buttons->addWidget( m_butNext );
hbox_buttons->addWidget( m_butFinish );
- // right pannel = widget for pages + buttons
+ // right pannel = widget for pages
m_stackPages = new QStackedWidget;
QVBoxLayout* vbox_1( new QVBoxLayout );
@@ -65,13 +67,13 @@ void SystemInstaller::setupUi()
group_box_page->setLayout( group_box_page_l );
vbox_1->addWidget( group_box_page );
- vbox_1->addLayout( hbox_buttons );
// left pannel
// logo
m_labelImage = new QLabel;
m_labelImage->setAlignment( Qt::AlignHCenter | Qt::AlignVCenter );
m_labelImage->setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Minimum );
+ m_labelImage->setMargin(10);
m_labelPages = new QLabel;
@@ -83,12 +85,29 @@ void SystemInstaller::setupUi()
group_box_list->setLayout( group_box_list_l );
+ // cmd pannel
+ QGroupBox* cmd_grp = new QGroupBox;
+ m_labelInstCmd = new QLabel;
+ QFont fontCmd = QApplication::font();
+ fontCmd.setFamily("Droid Sans Mono");
+ m_labelInstCmd->setFont(fontCmd);
+ m_labelInstCmd->setWordWrap(true);
+
+ QHBoxLayout* cmd_layout = new QHBoxLayout;
+ cmd_layout->addWidget(m_labelInstCmd);
+ cmd_grp->setLayout(cmd_layout);
+
// left + right pannels
QHBoxLayout* hbox_2( new QHBoxLayout );
hbox_2->addWidget( group_box_list, 2 );
hbox_2->addLayout( vbox_1, 9);
- centralWidget->setLayout(hbox_2);
+ QVBoxLayout* vbox_main( new QVBoxLayout );
+ vbox_main->addLayout( hbox_2 );
+ vbox_main->addWidget( cmd_grp );
+ vbox_main->addLayout( hbox_buttons );
+
+ centralWidget->setLayout(vbox_main);
setCentralWidget( centralWidget );
// set windows icon
@@ -104,6 +123,16 @@ void SystemInstaller::setupUi()
QImage logo = QImage(":/img/calculate-logo.png").scaledToWidth( 120, Qt::SmoothTransformation);
m_labelImage->setPixmap( QPixmap::fromImage(logo) );
+ m_actCopy = new QAction( this );
+ //m_actCopy->setShortcut( QKeySequence("Ctrl+C") );
+ connect( m_actCopy, SIGNAL(triggered()), this, SLOT(copyCmd()) );
+
+ m_menuCopy = new QMenu(this);
+ m_menuCopy->addAction(m_actCopy);
+
+ m_labelInstCmd->setContextMenuPolicy(Qt::CustomContextMenu);
+ connect( m_labelInstCmd, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(showCopyMenu(QPoint)) );
+
retranslateUi();
}
@@ -131,6 +160,9 @@ void SystemInstaller::setupInstallerPages()
connect( pageConfiguration, SIGNAL(selectedSettings(InstallerSettings)),
this, SLOT(selectConfiguration(InstallerSettings))
);
+ connect( pageConfiguration, SIGNAL(updatedCommand(QString)),
+ m_labelInstCmd, SLOT(setText(QString))
+ );
m_PageManager->addPage(pageConfiguration);
PageInstall* pageInstall( new PageInstall( &m_InstallSettings ) );
@@ -155,6 +187,8 @@ void SystemInstaller::retranslateUi()
m_butNext->setText( tr("Next") );
m_butFinish->setText( tr("Finish") );
+ m_actCopy->setText( tr("Copy") );
+
if (m_PageManager)
m_PageManager->retranslatePages();
}
@@ -245,3 +279,14 @@ void SystemInstaller::selectConfiguration(InstallerSettings settings)
m_InstallSettings = settings;
}
+void SystemInstaller::showCopyMenu(const QPoint& point)
+{
+ m_menuCopy->popup( m_labelInstCmd->mapToGlobal(point) );
+}
+
+void SystemInstaller::copyCmd()
+{
+ QClipboard* clipboard = QApplication::clipboard();
+ clipboard->setText( m_labelInstCmd->text() );
+}
+
diff --git a/src/systeminstaller.h b/src/systeminstaller.h
index d7802db..4728816 100644
--- a/src/systeminstaller.h
+++ b/src/systeminstaller.h
@@ -9,6 +9,8 @@
class QPushButton;
class QLabel;
class QStackedWidget;
+class QAction;
+class QMenu;
class QTranslator;
@@ -47,6 +49,9 @@ private slots:
void selectVolume(QString volume);
void selectConfiguration(InstallerSettings settings);
+ void showCopyMenu(const QPoint& point);
+ void copyCmd();
+
signals:
void selectedConfiguration(InstallerSettings settings);
@@ -58,6 +63,10 @@ private:
QLabel* m_labelImage;
QLabel* m_labelPages;
QStackedWidget* m_stackPages;
+ QLabel* m_labelInstCmd;
+
+ QAction* m_actCopy;
+ QMenu* m_menuCopy;
//
QTranslator* m_Translator;
diff --git a/src/tools.h b/src/tools.h
index 3895ec9..1265b4f 100644
--- a/src/tools.h
+++ b/src/tools.h
@@ -4,19 +4,21 @@
struct InstallerSettings
{
- bool builder;
- bool force;
QString disk;
QString host;
QString language;
QString timezone;
bool erase;
QString fs;
+ bool composite;
+
+ bool expert;
+ bool builder;
bool mbr;
bool uuid;
QString disktype;
QString videodrv;
- //QString videores;
+ QString videores;
};