SessionWidget::SessionWidget( QGraphicsItem * parent, Qt::WindowFlags wFlags) : QGraphicsWidget ( parent, wFlags) { this->setFocusPolicy(Qt::ClickFocus); m_signalMapper = new QSignalMapper(this); QGraphicsLinearLayout* mainLayout = new QGraphicsLinearLayout(Qt::Vertical); mainLayout->setSpacing(0); mainLayout->addStretch(); this->setLayout(mainLayout); connect( m_signalMapper, SIGNAL(mapped(int)), this, SLOT(slotSwitchSession(int))); Q_ASSERT(mainLayout->count() == 0); //Cache the icon pixmaps QSize iconSize = QSize(KIconLoader::SizeSmallMedium, KIconLoader::SizeSmallMedium); SessList sessions; KDisplayManager manager; manager.localSessions(sessions); QList<QGraphicsWidget*> entries; foreach(SessEnt session, sessions) { QPixmap pixmap; KUser user (session.user); if (!user.isValid()) continue; if (session.tty) continue; Plasma::IconWidget* entry = createButton(this); pixmap = getUserIcon(user); entry->setIcon(pixmap); QString username = getUsername(false, user); entry->setText(username); connect(entry, SIGNAL(clicked()), m_signalMapper, SLOT(map())); m_signalMapper->setMapping(entry, session.vt); if (session.self) entry->setEnabled(false); entries << entry; }
Plasma::IconWidget* Context::Applet::addAction( QGraphicsItem *parent, QAction *action, const int size ) { if( !action ) return 0; Plasma::IconWidget *tool = new Plasma::IconWidget( parent ); tool->setAction( action ); tool->setText( QString() ); tool->setToolTip( action->text() ); tool->setDrawBackground( false ); tool->setOrientation( Qt::Horizontal ); const QSizeF iconSize = tool->sizeFromIconSize( size ); tool->setMinimumSize( iconSize ); tool->setMaximumSize( iconSize ); tool->resize( iconSize ); tool->setZValue( zValue() + 1 ); return tool; }
foreach( QAction* action, actions ) { Plasma::IconWidget *icon = addAction( this, action, 24 ); icon->setText( QString() ); m_actionsLayout->addItem( icon ); }