[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: playground/base/blazer
From: Ian Reinhart Geiser <geiseri () kde ! org>
Date: 2009-02-10 20:40:26
Message-ID: 1234298426.508047.28372.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 924455 by geiseri:
Made the tast button really a button, this way styleshets and groupboxes will work.
M +32 -33 taskitembutton.cpp
M +3 -5 taskitembutton.h
M +8 -8 taskmanagerwidget.cpp
--- trunk/playground/base/blazer/taskitembutton.cpp #924454:924455
@@ -37,9 +37,11 @@
#include <kdebug.h>
TaskItemButton::TaskItemButton( TaskManager::TaskPtr ptr, QWidget *parent )
- : KPushButton( parent ), m_ptr(ptr), m_suggestedMaxWidth(32)
+ : KPushButton( parent ), m_ptr(ptr)
{
setStyleSheet("text-align:left;");
+ setSizePolicy(QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ));
+
connect( ptr.data(), SIGNAL(changed(::TaskManager::TaskChanges)), this, SLOT(updateTask()));
connect( ptr.data(), SIGNAL(activated()), this, SLOT(updateTask()));
connect( ptr.data(), SIGNAL(deactivated()), this, SLOT(updateTask()));
@@ -56,16 +58,6 @@
setDown(act);
}
-void TaskItemButton::enterEvent ( QEvent * event )
-{
-// setFrameShadow( QFrame::Raised );
-}
-
-void TaskItemButton::leaveEvent ( QEvent * event )
-{
-// setFrameShadow( QFrame::Sunken );
-}
-
void TaskItemButton::mousePressEvent ( QMouseEvent * event )
{
if( event->button() == Qt::RightButton )
@@ -82,36 +74,30 @@
else
{
m_ptr->activateRaiseOrIconify();
+ setActive( m_ptr->isActive() );
}
}
}
QSize TaskItemButton::sizeHint() const
{
- return KPushButton::sizeHint();
+ int maxWidth = KGlobalSettings::desktopGeometry( this ).width() * 3 / 4;
+ QFontMetrics fm(fontMetrics());
+ int textWidth = fm.width( m_ptr->name() );
+ if (textWidth > maxWidth)
+ {
+ textWidth = maxWidth;
+ }
+ return QSize(textWidth, KPushButton::sizeHint().height());
}
-void TaskItemButton::paintEvent( QPaintEvent *event )
+QSize TaskItemButton::minimumSizeHint() const
{
- KPushButton::paintEvent( event );
-/*
- QStylePainter p(this);
- QStyleOptionButton option;
- option.initFrom(this);
- option.text = text();
- option.icon = icon();
- option.iconSize = iconSize();
-
- p.save();
- p.drawControl(QStyle::CE_PushButtonBevel, option);
- p.drawPrimitive (QStyle::PE_FrameFocusRect, option);
- p.restore();
- p.drawPixmap( 2,2, option.icon.pixmap(height() - 4) );
- p.drawText( height() + 2, 2, option.text );
-*/
+ QSize sz = KPushButton::minimumSizeHint();
+ sz.setWidth(-1);
+ return sz;
}
-
void TaskItemButton::updateTask()
{
kDebug() << "Update text" << m_ptr->name();
@@ -119,7 +105,7 @@
QFontMetrics fm( font() );
QPixmap icn = m_ptr->bestIcon(KIconLoader::SizeSmall, gotStaticIcon);
setIcon( icn );
- setText( fm.elidedText( m_ptr->name(), Qt::ElideMiddle, m_suggestedMaxWidth - icn.width() ) );
+ setText( squeezeTextToButton(m_ptr->name(), icn.width() ) );
setActive( m_ptr->isActive() );
@@ -131,12 +117,25 @@
{
kDebug() << m_ptr->name() << "iconified";
}
+
update();
}
-void TaskItemButton::suggestNewMaxWidth( int newWidth )
+void TaskItemButton::resizeEvent( QResizeEvent *event )
{
- m_suggestedMaxWidth = newWidth;
updateTask();
}
+QString TaskItemButton::squeezeTextToButton( const QString &text, int iconSz )
+{
+ int padding = 8;
+ QFontMetrics fm(fontMetrics());
+ int buttonWidth = width() - ( iconSz + padding);
+ QString squeezedText = text;
+ int textWidth = fm.width(text);
+ if ( textWidth > buttonWidth)
+ {
+ squeezedText = fm.elidedText(text, Qt::ElideMiddle, buttonWidth );
+ }
+ return squeezedText;
+}
--- trunk/playground/base/blazer/taskitembutton.h #924454:924455
@@ -36,19 +36,17 @@
void setActive( bool act );
QSize sizeHint() const;
- void suggestNewMaxWidth( int newWidth );
+ QSize minimumSizeHint() const;
public slots:
void updateTask();
protected:
- virtual void enterEvent ( QEvent * event );
- virtual void leaveEvent ( QEvent * event );
virtual void mousePressEvent ( QMouseEvent * event );
- virtual void paintEvent( QPaintEvent *event );
+ virtual void resizeEvent( QResizeEvent *event );
private:
+ QString squeezeTextToButton( const QString &text, int iconSz );
TaskManager::TaskPtr m_ptr;
- int m_suggestedMaxWidth;
};
#endif // TASKITEMBUTTON_H
--- trunk/playground/base/blazer/taskmanagerwidget.cpp #924454:924455
@@ -118,12 +118,12 @@
{
qDebug() << "TaskManagerWidget::adjustTaskSizes" << maximumSize() << sizeHint() << size();
- int maxSize = maximumWidth();
- if( m_tasks.count() )
- maxSize = maximumWidth() / m_tasks.count();
-
- foreach( TaskItemButton *cell, m_tasks )
- {
- cell->suggestNewMaxWidth( maxSize );
- }
+// int maxSize = maximumWidth();
+// if( m_tasks.count() )
+// maxSize = maximumWidth() / m_tasks.count();
+//
+// foreach( TaskItemButton *cell, m_tasks )
+// {
+// cell->suggestNewMaxWidth( maxSize );
+// }
}
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic