File indexing completed on 2024-04-28 05:46:32
0001 /* 0002 SPDX-FileCopyrightText: 2009-2010 Volker Lanz <vl@fidra.de> 0003 SPDX-FileCopyrightText: 2014-2020 Andrius Štikonas <andrius@stikonas.eu> 0004 0005 SPDX-License-Identifier: GPL-3.0-or-later 0006 */ 0007 0008 #include "gui/listdevices.h" 0009 0010 #include <core/device.h> 0011 0012 #include <util/globallog.h> 0013 #include <util/capacity.h> 0014 0015 class ListDeviceWidgetItem : public QListWidgetItem 0016 { 0017 public: 0018 ListDeviceWidgetItem(const Device& d) : 0019 QListWidgetItem(QIcon::fromTheme(d.iconName()), d.prettyName()), deviceNode(d.deviceNode()) { 0020 setToolTip(d.prettyName()); 0021 setSizeHint(QSize(0, 32)); 0022 } 0023 0024 const QString deviceNode; 0025 }; 0026 0027 /** Creates a new ListDevices instance. 0028 @param parent the parent widget 0029 */ 0030 ListDevices::ListDevices(QWidget* parent) : 0031 QWidget(parent), 0032 Ui::ListDevicesBase(), 0033 m_ActionCollection(nullptr) 0034 { 0035 setupUi(this); 0036 } 0037 0038 void ListDevices::updateDevices(const OperationStack::Devices& devices) 0039 { 0040 listDevices().clear(); 0041 0042 for (const auto &d : devices) 0043 listDevices().addItem(new ListDeviceWidgetItem(*d)); 0044 } 0045 0046 void ListDevices::on_m_ListDevices_itemSelectionChanged() 0047 { 0048 if (listDevices().selectedItems().size() == 1) { 0049 ListDeviceWidgetItem* item = dynamic_cast<ListDeviceWidgetItem*>(listDevices().selectedItems()[0]); 0050 0051 if (item != nullptr) 0052 Q_EMIT selectionChanged(item->deviceNode); 0053 } 0054 } 0055 0056 void ListDevices::on_m_ListDevices_itemDoubleClicked(QListWidgetItem* list_item) 0057 { 0058 ListDeviceWidgetItem* item = dynamic_cast<ListDeviceWidgetItem*>(list_item); 0059 0060 if (item != nullptr) 0061 Q_EMIT deviceDoubleClicked(item->deviceNode); 0062 } 0063 0064 bool ListDevices::setSelectedDevice(const QString& device_node) 0065 { 0066 QList<QListWidgetItem*> items = listDevices().findItems(device_node, Qt::MatchContains); 0067 0068 if (items.size() > 0) { 0069 listDevices().setCurrentItem(items[0]); 0070 return true; 0071 } 0072 0073 return false; 0074 } 0075 0076 #include "moc_listdevices.cpp"