From fea271330d2374bdc258cfb7bb276b7cb79ecc9e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andrius=20=C5=A0tikonas?= Date: Sat, 24 Sep 2016 21:09:16 +0100 Subject: [PATCH] Use cached values for resizing volume groups. --- src/gui/createvolumegroupdialog.cpp | 4 ++-- src/gui/mainwindow.cpp | 7 +++---- src/gui/resizevolumegroupdialog.cpp | 17 ++++++++++++++--- src/gui/resizevolumegroupdialog.h | 6 +++--- src/gui/volumegroupdialog.cpp | 13 ------------- 5 files changed, 22 insertions(+), 25 deletions(-) diff --git a/src/gui/createvolumegroupdialog.cpp b/src/gui/createvolumegroupdialog.cpp index 9f0c1f2..a202c26 100644 --- a/src/gui/createvolumegroupdialog.cpp +++ b/src/gui/createvolumegroupdialog.cpp @@ -72,11 +72,11 @@ void CreateVolumeGroupDialog::accept() QDialog::accept(); } -void CreateVolumeGroupDialog::onVGNameChanged(const QString& vgname) +void CreateVolumeGroupDialog::onVGNameChanged(const QString& vgName) { for (const auto &d : m_Devices) { if (dynamic_cast(d)) { - if (d->name() == vgname) { + if (d->name() == vgName) { m_IsValidName = false; break; } diff --git a/src/gui/mainwindow.cpp b/src/gui/mainwindow.cpp index 4f4017a..d02ba43 100644 --- a/src/gui/mainwindow.cpp +++ b/src/gui/mainwindow.cpp @@ -1116,15 +1116,14 @@ void MainWindow::onCreateNewVolumeGroup() void MainWindow::onResizeVolumeGroup() { if (pmWidget().selectedDevice()->type() == Device::LVM_Device) { - LvmDevice* tmpDev = dynamic_cast(pmWidget().selectedDevice()); + LvmDevice* d = dynamic_cast(pmWidget().selectedDevice()); - QString* vgName = new QString(tmpDev->name()); // This line only purpose is to make volumeGroupDialog happy QList pvList; // *NOTE*: pvList will be modified and validated by the dialog - QPointer dlg = new ResizeVolumeGroupDialog(this, *vgName, pvList, *tmpDev, operationStack().physicalVolumes()); + QPointer dlg = new ResizeVolumeGroupDialog(this, d, pvList, operationStack().physicalVolumes()); if (dlg->exec() == QDialog::Accepted) - operationStack().push(new ResizeVolumeGroupOperation(*tmpDev, pvList)); + operationStack().push(new ResizeVolumeGroupOperation(*d, pvList)); delete dlg; } diff --git a/src/gui/resizevolumegroupdialog.cpp b/src/gui/resizevolumegroupdialog.cpp index 93d1955..f4ceea0 100644 --- a/src/gui/resizevolumegroupdialog.cpp +++ b/src/gui/resizevolumegroupdialog.cpp @@ -34,8 +34,8 @@ @param parent pointer to the parent widget @param d the Device to show properties for */ -ResizeVolumeGroupDialog::ResizeVolumeGroupDialog(QWidget* parent, QString& vgName, QList& partList, VolumeManagerDevice& d, FS::lvm2_pv::PhysicalVolumes physicalVolumes) - : VolumeGroupDialog(parent, vgName, partList) +ResizeVolumeGroupDialog::ResizeVolumeGroupDialog(QWidget* parent, VolumeManagerDevice* d, QList& partList, FS::lvm2_pv::PhysicalVolumes physicalVolumes) + : VolumeGroupDialog(parent, d->name(), partList) , m_Device(d) , m_PhysicalVolumes(physicalVolumes) { @@ -52,12 +52,23 @@ void ResizeVolumeGroupDialog::setupDialog() { if (dialogWidget().volumeType().currentText() == QStringLiteral("LVM")) { for (const auto &p : m_PhysicalVolumes) { - if (p.first == device().name()) + if (p.first == device()->name()) dialogWidget().listPV().addPartition(*p.second, true); else if (p.first == QString() && !LvmDevice::s_DirtyPVs.contains(p.second)) // TODO: Remove LVM PVs in current VG dialogWidget().listPV().addPartition(*p.second, false); } } + + //update used size and LV infos + qint32 totalLV = 0; + LvmDevice *lvmDevice = dynamic_cast(device()); + if (lvmDevice != nullptr) { + m_TotalUsedSize = lvmDevice->allocatedPE() * lvmDevice->peSize(); + totalLV = lvmDevice->partitionTable()->children().count(); + } + + dialogWidget().totalUsedSize().setText(Capacity::formatByteSize(m_TotalUsedSize)); + dialogWidget().totalLV().setText(QString::number(totalLV)); } void ResizeVolumeGroupDialog::setupConstraints() diff --git a/src/gui/resizevolumegroupdialog.h b/src/gui/resizevolumegroupdialog.h index a4be608..4f5f49b 100644 --- a/src/gui/resizevolumegroupdialog.h +++ b/src/gui/resizevolumegroupdialog.h @@ -31,19 +31,19 @@ class ResizeVolumeGroupDialog : public VolumeGroupDialog Q_DISABLE_COPY(ResizeVolumeGroupDialog) public: - ResizeVolumeGroupDialog(QWidget* parent, QString& vgName, QList& partList, VolumeManagerDevice& d, FS::lvm2_pv::PhysicalVolumes physicalVolumes); + ResizeVolumeGroupDialog(QWidget* parent, VolumeManagerDevice *d, QList& partList, FS::lvm2_pv::PhysicalVolumes physicalVolumes); protected: void accept() override; void setupDialog() override; void setupConstraints() override; - VolumeManagerDevice& device() const { + VolumeManagerDevice* device() const { return m_Device; } private: - VolumeManagerDevice& m_Device; + VolumeManagerDevice* m_Device; const FS::lvm2_pv::PhysicalVolumes m_PhysicalVolumes; // List of all devices found on the system }; diff --git a/src/gui/volumegroupdialog.cpp b/src/gui/volumegroupdialog.cpp index d4a3cf9..200adbe 100644 --- a/src/gui/volumegroupdialog.cpp +++ b/src/gui/volumegroupdialog.cpp @@ -79,19 +79,6 @@ void VolumeGroupDialog::setupDialog() dialogWidget().volumeType().addItem(QStringLiteral("RAID")); dialogWidget().volumeType().setCurrentIndex(0); - //update used size and LV infos - qint32 totalLV = 0; - QString vgname = dialogWidget().vgName().text(); - if (!vgname.isEmpty()) { - m_TotalUsedSize = LvmDevice::getAllocatedPE(vgname) * LvmDevice::getPeSize(vgname); - QStringList lvlist = LvmDevice::getLVs(vgname); - if (!lvlist.isEmpty() ) { - totalLV = lvlist.count(); - } - } - dialogWidget().totalUsedSize().setText(Capacity::formatByteSize(m_TotalUsedSize)); - dialogWidget().totalLV().setText(QString::number(totalLV)); - setMinimumSize(dialogWidget().size()); resize(dialogWidget().size()); }