plasma: parent the internal devicenotifier widget to the scroll area, reduce the minimum size

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
This commit is contained in:
Ivailo Monev 2023-09-08 23:05:10 +03:00
parent 63d9a63011
commit 0466b3421e

View file

@ -53,7 +53,7 @@ class DeviceNotifierWidget : public QGraphicsWidget
{ {
Q_OBJECT Q_OBJECT
public: public:
DeviceNotifierWidget(DeviceNotifier* devicenotifier); DeviceNotifierWidget(DeviceNotifier* devicenotifier, QGraphicsWidget *parent);
~DeviceNotifierWidget(); ~DeviceNotifierWidget();
bool onlyremovable; bool onlyremovable;
@ -76,8 +76,8 @@ private:
QList<Solid::Device> m_soliddevices; QList<Solid::Device> m_soliddevices;
}; };
DeviceNotifierWidget::DeviceNotifierWidget(DeviceNotifier* devicenotifier) DeviceNotifierWidget::DeviceNotifierWidget(DeviceNotifier* devicenotifier, QGraphicsWidget *parent)
: QGraphicsWidget(devicenotifier), : QGraphicsWidget(parent),
onlyremovable(true), onlyremovable(true),
m_devicenotifier(devicenotifier), m_devicenotifier(devicenotifier),
m_layout(nullptr), m_layout(nullptr),
@ -159,6 +159,7 @@ void DeviceNotifierWidget::slotUpdateLayout()
const Solid::StorageAccess *solidstorageaccess = soliddevice.as<Solid::StorageAccess>(); const Solid::StorageAccess *solidstorageaccess = soliddevice.as<Solid::StorageAccess>();
const Solid::OpticalDrive *solidopticaldrive = soliddevice.as<Solid::OpticalDrive>(); const Solid::OpticalDrive *solidopticaldrive = soliddevice.as<Solid::OpticalDrive>();
Plasma::Frame* frame = new Plasma::Frame(this); Plasma::Frame* frame = new Plasma::Frame(this);
frame->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum);
frame->setProperty("_k_udi", soliddevice.udi()); frame->setProperty("_k_udi", soliddevice.udi());
QGraphicsGridLayout* framelayout = new QGraphicsGridLayout(frame); QGraphicsGridLayout* framelayout = new QGraphicsGridLayout(frame);
@ -167,7 +168,7 @@ void DeviceNotifierWidget::slotUpdateLayout()
iconwidget->setIcon(KIcon(soliddevice.icon(), KIconLoader::global(), soliddevice.emblems())); iconwidget->setIcon(KIcon(soliddevice.icon(), KIconLoader::global(), soliddevice.emblems()));
iconwidget->setText(soliddevice.description()); iconwidget->setText(soliddevice.description());
iconwidget->setToolTip(i18n("Click to access this device from other applications.")); iconwidget->setToolTip(i18n("Click to access this device from other applications."));
iconwidget->setSizePolicy(QSizePolicy(QSizePolicy::Preferred, QSizePolicy::Minimum)); iconwidget->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Minimum);
iconwidget->setProperty("_k_udi", soliddevice.udi()); iconwidget->setProperty("_k_udi", soliddevice.udi());
connect( connect(
iconwidget, SIGNAL(activated()), iconwidget, SIGNAL(activated()),
@ -182,7 +183,7 @@ void DeviceNotifierWidget::slotUpdateLayout()
removewidget->setToolTip( removewidget->setToolTip(
solidopticaldrive ? i18n("Click to eject this disc.") : i18n("Click to safely remove this device.") solidopticaldrive ? i18n("Click to eject this disc.") : i18n("Click to safely remove this device.")
); );
removewidget->setSizePolicy(QSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum)); removewidget->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum);
if (solidopticaldrive) { if (solidopticaldrive) {
removewidget->setVisible(true); removewidget->setVisible(true);
} else { } else {
@ -198,7 +199,7 @@ void DeviceNotifierWidget::slotUpdateLayout()
Plasma::Meter* meter = new Plasma::Meter(frame); Plasma::Meter* meter = new Plasma::Meter(frame);
meter->setMeterType(Plasma::Meter::BarMeterHorizontal); meter->setMeterType(Plasma::Meter::BarMeterHorizontal);
meter->setSizePolicy(QSizePolicy(QSizePolicy::Preferred, QSizePolicy::Minimum)); meter->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Minimum);
framelayout->addItem(meter, 1, 0, 1, 2); framelayout->addItem(meter, 1, 0, 1, 2);
frame->setProperty("_k_meter", QVariant::fromValue(meter)); frame->setProperty("_k_meter", QVariant::fromValue(meter));
@ -216,7 +217,7 @@ void DeviceNotifierWidget::slotUpdateLayout()
// the minimum space for 2 items, more or less // the minimum space for 2 items, more or less
QSizeF minimumsize = m_frames.first()->minimumSize(); QSizeF minimumsize = m_frames.first()->minimumSize();
minimumsize.setWidth(minimumsize.width() * 1.5); minimumsize.setWidth(minimumsize.width() * 1.2);
minimumsize.setHeight(minimumsize.height() * 2); minimumsize.setHeight(minimumsize.height() * 2);
m_devicenotifier->setMinimumSize(minimumsize); m_devicenotifier->setMinimumSize(minimumsize);
@ -324,9 +325,9 @@ DeviceNotifier::DeviceNotifier(QObject *parent, const QVariantList &args)
setPreferredSize(290, 340); setPreferredSize(290, 340);
m_plasmascrollwidget = new Plasma::ScrollWidget(this); m_plasmascrollwidget = new Plasma::ScrollWidget(this);
m_plasmascrollwidget->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); m_plasmascrollwidget->setHorizontalScrollBarPolicy(Qt::ScrollBarAsNeeded);
m_plasmascrollwidget->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded); m_plasmascrollwidget->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded);
m_devicenotifierwidget = new DeviceNotifierWidget(this); m_devicenotifierwidget = new DeviceNotifierWidget(this, m_plasmascrollwidget);
m_plasmascrollwidget->setWidget(m_devicenotifierwidget); m_plasmascrollwidget->setWidget(m_devicenotifierwidget);
} }