You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
calculate-utils-2.2-install.../src/pagemountpoints.cpp

185 lines
4.9 KiB

#include "pagemountpoints.h"
#include <QLabel>
#include <QTreeWidget>
#include <QLayout>
#include <QMessageBox>
#include <QtDebug>
#include "calculateconfig.h"
PageMountPoints::PageMountPoints()
: InstallerPage()
{
setupUi();
}
void PageMountPoints::setupUi()
{
m_labMountPoints = new QLabel;
m_trwMountPoints = new QTreeWidget;
QVBoxLayout* vbox_0 = new QVBoxLayout;
vbox_0->addWidget(m_labMountPoints);
vbox_0->addWidget( m_trwMountPoints);
setLayout(vbox_0);
connect( m_trwMountPoints, SIGNAL(itemDoubleClicked(QTreeWidgetItem*,int)),
this, SLOT(partitionDoubleClicked(QTreeWidgetItem*,int))
);
retranslateUi();
}
void PageMountPoints::retranslateUi()
{
setTitle( tr("Mount points") );
QTreeWidgetItem* trwHeader = m_trwMountPoints->headerItem();
trwHeader->setText(0, tr("Partition") );
trwHeader->setText(1, tr("Label") );
trwHeader->setText(2, tr("Size") );
trwHeader->setText(3, tr("Mount point") );
trwHeader->setText(4, tr("File system") );
trwHeader->setText(5, tr("Format") );
m_labMountPoints->setText( tr("Select mount points:") );
}
void PageMountPoints::show()
{
// get tree from CalculateConfig
getTree();
showTree();
m_trwMountPoints->setColumnWidth(0, 120);
m_trwMountPoints->setColumnWidth(1, 100);
m_trwMountPoints->setColumnWidth(2, 80);
m_trwMountPoints->setColumnWidth(3, 110);
m_trwMountPoints->setColumnWidth(4, 80);
m_trwMountPoints->expandAll();
if ( CalculateConfig::instance()->getValue("gui_partitioning") == "auto" )
{
qDebug() << "Skip Mount points";
QMessageBox::information(
this,
tr("Information"),
tr("You select auto partitioning. Press \"Next\" to continue.")
);
m_trwMountPoints->setEnabled(false);
emit changeNext(true);
}
}
bool PageMountPoints::validate()
{
if ( CalculateConfig::instance()->getValue("gui_partitioning") != "auto" )
{
// check parameters
}
return true;
}
void PageMountPoints::partitionDoubleClicked ( QTreeWidgetItem* item, int index )
{
qDebug() << "selected :" << item->text(0);
}
void PageMountPoints::getTree()
{
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();
QStringList os_disk_part = CalculateConfig::instance()->getValue("os_disk_part").toStringList();
QStringList os_disk_size = CalculateConfig::instance()->getValue("os_disk_size").toStringList();
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)
{
MountPoint mountpoint;
if (
(os_disk_part.at(i) != "extended") &&
(os_disk_dev.at(i).contains(dev, Qt::CaseInsensitive))
)
{
mountpoint.dev = os_disk_dev.at(i);
mountpoint.label = os_disk_name.at(i);
mountpoint.size = os_disk_size.at(i);
mountpoint.fs = os_disk_format.at(i);
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;
}
}
}
}
}
void PageMountPoints::showTree()
{
m_trwMountPoints->clear();
MountPointsTree::ConstIterator it = m_treeMountPoints.constBegin();
while( it != m_treeMountPoints.constEnd() )
{
showBranch( it.key(), it.value() );
++it;
}
}
void PageMountPoints::showBranch(const QString& dev, const MountPointsList& list)
{
QTreeWidgetItem* trwItem_0 = new QTreeWidgetItem;
trwItem_0->setText(0, "/dev/" + dev );
trwItem_0->setText(1, "" );
trwItem_0->setText(2, "" );
trwItem_0->setText(3, "" );
trwItem_0->setText(4, "" );
trwItem_0->setText(5, "" );
// trwItem_0->setText(6, "" );
foreach(const MountPoint& mp, list)
{
QTreeWidgetItem* trwItem_0_0 = new QTreeWidgetItem(trwItem_0);
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
}
m_trwMountPoints->insertTopLevelItem(m_trwMountPoints->topLevelItemCount(), trwItem_0);
}