From 275dfde87624b67ac0ca9a7ad48e2b9ac1c7cb79 Mon Sep 17 00:00:00 2001 From: Volker Lanz Date: Thu, 28 Jan 2010 16:43:27 +0000 Subject: [PATCH] revert r1077006: don't show all devices in partition tree. it's just too confusing. but do keep the code to show the first device by default. also add code to make sure the devices list shows the selected devices as indeed selected in the list widget. svn path=/trunk/extragear/sysadmin/partitionmanager/; revision=1081532 --- src/gui/listdevices.cpp | 10 ++++ src/gui/partitionmanagerwidget.cpp | 77 ++++++++++++--------------- src/gui/partitionmanagerwidgetbase.ui | 2 +- 3 files changed, 46 insertions(+), 43 deletions(-) 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