plasma: perfect size for lockout applet

small for desktop applet but suitable for any theme and any form factor
(desktop-like, panel, etc.)

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
This commit is contained in:
Ivailo Monev 2023-09-13 18:23:37 +03:00
parent d09ad5f07e
commit 0305b44785
2 changed files with 14 additions and 35 deletions

View file

@ -232,7 +232,7 @@ LockoutApplet::LockoutApplet(QObject *parent, const QVariantList &args)
KGlobal::locale()->insertCatalog("plasma_applet_lockout");
setAspectRatioMode(Plasma::AspectRatioMode::IgnoreAspectRatio);
setHasConfigurationInterface(true);
setPreferredSize(40, 110);
setPreferredSize(110, 40);
setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
}
@ -442,59 +442,36 @@ void LockoutApplet::createConfigurationInterface(KConfigDialog *parent)
void LockoutApplet::updateSizes()
{
int visiblebuttons = 0;
QSizeF basesize;
QSizeF preferredsize;
if (m_showlock) {
basesize = m_lockwidget->preferredSize();
visiblebuttons++;
preferredsize = m_lockwidget->preferredSize();
}
if (m_showswitch) {
if (basesize.isNull()) {
basesize = m_switchwidget->preferredSize();
}
visiblebuttons++;
preferredsize += m_switchwidget->preferredSize();
}
if (m_showshutdown) {
if (basesize.isNull()) {
basesize = m_shutdownwidget->preferredSize();
}
visiblebuttons++;
preferredsize += m_shutdownwidget->preferredSize();
}
if (m_showtoram) {
if (basesize.isNull()) {
basesize = m_toramwidget->preferredSize();
}
visiblebuttons++;
preferredsize += m_toramwidget->preferredSize();
}
if (m_showtodisk) {
if (basesize.isNull()) {
basesize = m_todiskwidget->preferredSize();
}
visiblebuttons++;
preferredsize += m_todiskwidget->preferredSize();
}
if (m_showhybrid) {
if (basesize.isNull()) {
basesize = m_hybridwidget->preferredSize();
}
visiblebuttons++;
preferredsize += m_hybridwidget->preferredSize();
}
if (basesize.isNull()) {
basesize = s_basesize;
if (preferredsize.isNull()) {
preferredsize = s_basesize;
}
Q_ASSERT(visiblebuttons > 0);
// for non-panel expand to the widget size depending on the orientation
const bool hasspacing = (m_layout->spacing() != 0);
setPreferredSize(preferredsize);
switch (m_layout->orientation()) {
case Qt::Horizontal: {
basesize.setWidth(basesize.width() * visiblebuttons);
setPreferredSize(hasspacing ? basesize.expandedTo(size()) : basesize);
setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Expanding);
break;
}
case Qt::Vertical: {
basesize.setHeight(basesize.height() * visiblebuttons);
setPreferredSize(hasspacing ? basesize.expandedTo(size()) : basesize);
setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred);
break;
}
@ -504,6 +481,8 @@ void LockoutApplet::updateSizes()
void LockoutApplet::constraintsEvent(Plasma::Constraints constraints)
{
// perfect size finder
// qDebug() << Q_FUNC_INFO << size();
if (constraints & Plasma::SizeConstraint || constraints & Plasma::FormFactorConstraint) {
switch (formFactor()) {
case Plasma::FormFactor::Horizontal: {

View file

@ -214,4 +214,4 @@ X-KDE-PluginInfo-Depends=
X-KDE-PluginInfo-License=GPL
X-KDE-PluginInfo-EnabledByDefault=true
X-Plasma-DefaultSize=40,110
X-Plasma-DefaultSize=110,40