diff --git a/src/gui/listdevices.cpp b/src/gui/listdevices.cpp index 2bae0f2..282d1e6 100644 --- a/src/gui/listdevices.cpp +++ b/src/gui/listdevices.cpp @@ -59,6 +59,16 @@ void ListDevices::updateDevices() if (idx > -1 && idx < listDevices().count()) listDevices().setCurrentRow(idx); + + if (pmWidget().selectedDevice()) + { + for (idx = 0; idx < pmWidget().previewDevices().size(); idx++) + if (pmWidget().previewDevices()[idx] == pmWidget().selectedDevice()) + { + listDevices().setCurrentRow(idx); + break; + } + } } void ListDevices::on_m_ListDevices_itemSelectionChanged() diff --git a/src/gui/partitionmanagerwidget.cpp b/src/gui/partitionmanagerwidget.cpp index 9d8a1b8..17c009c 100644 --- a/src/gui/partitionmanagerwidget.cpp +++ b/src/gui/partitionmanagerwidget.cpp @@ -86,14 +86,11 @@ class PartitionTreeWidgetItem : public QTreeWidgetItem Q_DISABLE_COPY(PartitionTreeWidgetItem) public: - PartitionTreeWidgetItem(const Partition* p) : QTreeWidgetItem(), m_Partition(p), m_Device(NULL) {} - PartitionTreeWidgetItem(Device* d) : QTreeWidgetItem(), m_Partition(NULL), m_Device(d) {} + PartitionTreeWidgetItem(const Partition* p) : QTreeWidgetItem(), m_Partition(p) {} const Partition* partition() const { return m_Partition; } - Device* device() { return m_Device; } private: const Partition* m_Partition; - Device* m_Device; }; /** Creates a new PartitionManagerWidget instance. @@ -318,8 +315,11 @@ void PartitionManagerWidget::scanDevices() libParted().scanDevices(operationStack()); if (!operationStack().previewDevices().isEmpty()) + { setSelectedDevice(operationStack().previewDevices()[0]); + } + updatePartitions(); Log() << i18nc("@info/plain", "Rescan finished."); @@ -404,49 +404,43 @@ static QTreeWidgetItem* createTreeWidgetItem(const Partition& p) void PartitionManagerWidget::updatePartitions() { + if (selectedDevice() == NULL) + return; + treePartitions().clear(); partTableWidget().clear(); - foreach(Device* d, operationStack().previewDevices()) + partTableWidget().setPartitionTable(selectedDevice()->partitionTable()); + + QTreeWidgetItem* deviceItem = new QTreeWidgetItem(); + deviceItem->setText(0, selectedDevice()->name()); + deviceItem->setIcon(0, DesktopIcon(selectedDevice()->iconName())); + deviceItem->setSizeHint(0, QSize(0, 32)); + + treePartitions().addTopLevelItem(deviceItem); + + if (selectedDevice()->partitionTable() != NULL) { - QTreeWidgetItem* deviceItem = new PartitionTreeWidgetItem(d); - deviceItem->setText(0, d->name()); - deviceItem->setIcon(0, DesktopIcon(d->iconName())); - deviceItem->setSizeHint(0, QSize(0, 32)); - deviceItem->setFlags(Qt::ItemIsEnabled); - - treePartitions().addTopLevelItem(deviceItem); - - if (selectedDevice() == d) + foreach(const Partition* p, selectedDevice()->partitionTable()->children()) { - deviceItem->setExpanded(true); - QFont font; - font.setBold(true); - deviceItem->setFont(0, font); - } + QTreeWidgetItem* item = createTreeWidgetItem(*p); - if (d->partitionTable() != NULL) - { - foreach(const Partition* p, d->partitionTable()->children()) + foreach(const Partition* child, p->children()) { - QTreeWidgetItem* item = createTreeWidgetItem(*p); - - foreach(const Partition* child, p->children()) - { - QTreeWidgetItem* childItem = createTreeWidgetItem(*child); - item->addChild(childItem); - } - - deviceItem->addChild(item); - item->setExpanded(true); + QTreeWidgetItem* childItem = createTreeWidgetItem(*child); + item->addChild(childItem); } - } - treePartitions().setFirstItemColumnSpanned(deviceItem, true); + deviceItem->addChild(item); + item->setExpanded(true); + } } - if (selectedDevice()) - partTableWidget().setPartitionTable(selectedDevice()->partitionTable()); + treePartitions().setFirstItemColumnSpanned(deviceItem, true); + deviceItem->setExpanded(true); + deviceItem->setFlags(Qt::ItemIsEnabled); + + partTableWidget().update(); } void PartitionManagerWidget::on_m_TreePartitions_currentItemChanged(QTreeWidgetItem* current, QTreeWidgetItem*) @@ -460,14 +454,13 @@ void PartitionManagerWidget::on_m_TreePartitions_currentItemChanged(QTreeWidgetI partTableWidget().setActiveWidget(NULL); } -void PartitionManagerWidget::on_m_TreePartitions_itemDoubleClicked(QTreeWidgetItem* qtwi, int) +void PartitionManagerWidget::on_m_TreePartitions_itemDoubleClicked(QTreeWidgetItem* item, int) { - PartitionTreeWidgetItem* item = dynamic_cast(qtwi); + // if the activated item is the device item, don't do anything + if (item == treePartitions().topLevelItem(0)) + return; - if (item && item->device()) - setSelectedDevice(item->device()); - else - actionCollection()->action("propertiesPartition")->trigger(); + actionCollection()->action("propertiesPartition")->trigger(); } void PartitionManagerWidget::on_m_PartTableWidget_itemSelectionChanged(PartWidget* item) diff --git a/src/gui/partitionmanagerwidgetbase.ui b/src/gui/partitionmanagerwidgetbase.ui index 58777e6..40117b5 100644 --- a/src/gui/partitionmanagerwidgetbase.ui +++ b/src/gui/partitionmanagerwidgetbase.ui @@ -60,7 +60,7 @@ true - true + false