KDE/kdebase/workspace/plasma/containments/panel

Riccardo Iaconelli riccardo at kde.org
Fri Feb 1 07:01:36 CET 2008


Grrr... ;-)

I had worked exactly on the same feature in SF... Was just waiting for  
the panel toolbox to show up to commit... Well, you've beaten me. :-)

Ciao,
-Riccardo

Il giorno 31/gen/08, alle ore 22:23, Sebastian Sauer <mail at dipe.org>  
ha scritto:

> SVN commit 769216 by sebsauer:
>
> Added option to be able to change the size (aka height) of the panel.
>
> * we provide the same 4 different sizes like at KDE3; Tiny (22px),  
> Small (32px), Normal (48px, still default) and Large (64px)
> * to call the "Configure Panel" dialog is a bit. Don't right-click  
> on the panel itself since then the "Task manager Settings" are  
> displayed, but click at e.g. the most top ~2pixel of the panel.
> * this is work on progress and just an initial start to have that  
> imho at least for small/wide-screen rather important option back.
>
> CC_MAIL: panel-devel at kde.org
>
>
>
> M  +79 -5     panel.cpp
> M  +13 -0     panel.h
>
>
> --- trunk/KDE/kdebase/workspace/plasma/containments/panel/panel.cpp  
> #769215:769216
> @@ -21,8 +21,14 @@
> #include <QApplication>
> #include <QPainter>
> #include <QDesktopWidget>
> +#include <QGridLayout>
> +#include <QLabel>
> +#include <QComboBox>
> +#include <QAction>
>
> #include <KDebug>
> +#include <KIcon>
> +#include <KDialog>
>
> #include <plasma/corona.h>
> #include <plasma/layouts/layout.h>
> @@ -33,10 +39,13 @@
> Panel::Panel(QObject *parent, const QVariantList &args)
>     : Containment(parent, args),
>       m_cachedBackground(0),
> +      m_dialog(0),
> +      m_configureAction(0),
>       m_drawTop(true),
>       m_drawLeft(true),
>       m_drawRight(true),
> -      m_drawBottom(true)
> +      m_drawBottom(true),
> +      m_size(48)
> {
>     m_background = new Plasma::Svg("widgets/panel-background", this);
>     setZValue(150);
> @@ -45,9 +54,28 @@
>
> Panel::~Panel()
> {
> +    delete m_dialog;
>     delete m_background;
> }
>
> +void Panel::init()
> +{
> +    KConfigGroup cg = config();
> +    m_size = cg.readEntry("size", m_size);
> +
> +    Containment::init();
> +}
> +
> +QList<QAction*> Panel::contextActions()
> +{
> +    if (! m_configureAction) {
> +        m_configureAction = new QAction(i18n("Configure Panel..."),  
> this);
> +        m_configureAction->setIcon(KIcon("configure"));
> +        connect(m_configureAction, SIGNAL(triggered()), this, SLOT 
> (configure()));
> +    }
> +    return QList<QAction*>() << m_configureAction;
> +}
> +
> void Panel::constraintsUpdated(Plasma::Constraints constraints)
> {
>     //kDebug() << "constraints updated with" << constraints <<  
> "!!!!!!!!!!!!!!!!!";
> @@ -79,8 +107,7 @@
>         if (loc == BottomEdge || loc == TopEdge) {
>             setFormFactor(Plasma::Horizontal);
>
> -            //FIXME: don't hardcode 48px
> -            height = 48;
> +            height = m_size;
>             //FIXME: don't hardcode full width
>             width = r.width();
>
> @@ -108,8 +135,7 @@
>         } else if (loc == LeftEdge || loc == RightEdge) {
>             setFormFactor(Plasma::Vertical);
>
> -            //FIXME: don't hardcode 48px
> -            width = 48;
> +            width = m_size;
>             //FIXME: don't hardcode full height
>             height = r.height();
>
> @@ -334,6 +360,54 @@
>     painter->drawPixmap(contentsRect, *m_cachedBackground,  
> contentsRect);
> }
>
> +void Panel::configure()
> +{
> +    if (! m_dialog) {
> +        m_dialog = new KDialog();
> +        m_dialog->setCaption( i18nc("@title:window","Configure  
> Panel") );
> +        m_dialog->setButtons( KDialog::Ok | KDialog::Cancel |  
> KDialog::Apply );
> +        connect(m_dialog, SIGNAL(applyClicked()), this, SLOT 
> (applyConfig()));
> +        connect(m_dialog, SIGNAL(okClicked()), this, SLOT 
> (applyConfig()));
> +
> +        QWidget *p = m_dialog->mainWidget();
> +        QGridLayout *l = new QGridLayout(p);
> +        p->setLayout(l);
> +
> +        QLabel *sizeLabel = new QLabel(i18n("Size:"), p);
> +        l->addWidget(sizeLabel, 0, 0);
> +        m_sizeCombo = new QComboBox(p);
> +        sizeLabel->setBuddy(m_sizeCombo);
> +        l->addWidget(m_sizeCombo, 0, 1);
> +        m_sizeCombo->addItem(i18n("Tiny"), QVariant(24));
> +        m_sizeCombo->addItem(i18n("Small"), QVariant(32));
> +        m_sizeCombo->addItem(i18n("Normal"), QVariant(48));
> +        m_sizeCombo->addItem(i18n("Large"), QVariant(64));
> +        l->setColumnStretch(1,1);
> +
> +        bool found = false;
> +        for (int i = 0; i < m_sizeCombo->count(); ++i) {
> +            if (m_sizeCombo->itemData(i).toInt() == m_size) {
> +                m_sizeCombo->setCurrentIndex(i);
> +                found = true;
> +                break;
> +            }
> +        }
> +        if (! found) {
> +            m_sizeCombo->setCurrentIndex(m_sizeCombo->count() - 1);
> +        }
> +    }
> +    m_dialog->show();
> +}
> +
> +void Panel::applyConfig()
> +{
> +    KConfigGroup cg = config();
> +    m_size = m_sizeCombo->itemData(m_sizeCombo->currentIndex 
> ()).toInt();
> +    cg.writeEntry("size", m_size);
> +
> +    updateConstraints();
> +}
> +
> K_EXPORT_PLASMA_APPLET(panel, Panel)
>
> #include "panel.moc"
> --- trunk/KDE/kdebase/workspace/plasma/containments/panel/panel.h  
> #769215:769216
> @@ -21,6 +21,10 @@
>
> #include <plasma/containment.h>
>
> +class KDialog;
> +class QComboBox;
> +class QAction;
> +
> namespace Plasma
> {
>     class Svg;
> @@ -32,6 +36,8 @@
> public:
>     Panel(QObject *parent, const QVariantList &args);
>     ~Panel();
> +    void init();
> +    QList<QAction*> contextActions();
>
>     void constraintsUpdated(Plasma::Constraints constraints);
>     Qt::Orientations expandingDirections() const;
> @@ -40,13 +46,20 @@
>                         const QStyleOptionGraphicsItem *option,
>                         const QRect &contentsRect);
>     void paintBackground(QPainter *painter, const QRect  
> &contentsRect);
> +private slots:
> +    void configure();
> +    void applyConfig();
> private:
>     Plasma::Svg *m_background;
>     QPixmap* m_cachedBackground;
> +    KDialog* m_dialog;
> +    QComboBox* m_sizeCombo;
> +    QAction* m_configureAction;
>     bool m_drawTop : 1;
>     bool m_drawLeft : 1;
>     bool m_drawRight : 1;
>     bool m_drawBottom : 1;
> +    int m_size;
> };
>
>
> _______________________________________________
> Panel-devel mailing list
> Panel-devel at kde.org
> https://mail.kde.org/mailman/listinfo/panel-devel


More information about the Panel-devel mailing list