Changeset 6058 for branches/qt-gui_qt4/src/dockicons/dockiconwidget.cpp
- Timestamp:
- 01/24/08 21:40:25 (10 months ago)
- Files:
-
- 1 modified
Legend:
- Unmodified
- Added
- Removed
-
branches/qt-gui_qt4/src/dockicons/dockiconwidget.cpp
r5837 r6058 23 23 #include "config.h" 24 24 25 #include <QCloseEvent> 25 26 #include <QBitmap> 27 #include <QMenu> 26 28 #include <QPainter> 29 30 #include "helpers/support.h" 27 31 28 32 #include "dockicon.h" … … 30 34 using namespace LicqQtGui; 31 35 32 DockIconWidget::DockIconWidget(QPixmap* pix, DockIcon* parent) 33 : QWidget(parent), 34 vis(NULL) 36 DockIconWidget::DockIconWidget(QMenu* menu) 37 : QWidget(), 38 myMenu(menu), 39 myFace(NULL) 35 40 { 36 setObjectName("DockIconWidget"); 37 Set(pix); 38 } 39 40 void DockIconWidget::Set(QPixmap* pix) 41 { 42 delete vis; 43 vis = new QPixmap(*pix); 44 resize(vis->size()); 45 setMask(vis->mask()); 46 repaint(); 41 resize(64, 64); 42 setAttribute(Qt::WA_NoSystemBackground, true); 43 setAttribute(Qt::WA_AlwaysShowToolTips, true); 44 Support::setWidgetProps(this, "DockIconWidget"); 45 myHandler = Support::dockWindow(winId()); 46 show(); 47 47 } 48 48 49 49 DockIconWidget::~DockIconWidget() 50 50 { 51 delete vis; 51 Support::undockWindow(winId(), myHandler); 52 delete myFace; 53 } 54 55 void DockIconWidget::setFace(QPixmap* newFace, bool updateMask) 56 { 57 if (newFace == NULL || newFace->isNull()) 58 return; 59 60 delete myFace; 61 myFace = new QPixmap(*newFace); 62 resize(myFace->size()); 63 if (updateMask) 64 setMask(myFace->mask()); 65 update(); 66 } 67 68 QPixmap* DockIconWidget::face() 69 { 70 if (myFace == NULL) 71 return NULL; 72 73 return new QPixmap(*myFace); 74 } 75 76 void DockIconWidget::closeEvent(QCloseEvent* event) 77 { 78 event->ignore(); 52 79 } 53 80 54 81 void DockIconWidget::mousePressEvent(QMouseEvent* event) 55 82 { 56 dynamic_cast<DockIcon*>(parent())->mousePressEvent(event); 83 switch (event->button()) 84 { 85 case Qt::LeftButton: 86 emit clicked(); 87 break; 88 89 case Qt::MidButton: 90 emit middleClicked(); 91 break; 92 93 case Qt::RightButton: 94 myMenu->popup(event->globalPos()); 95 break; 96 97 default: 98 break; 99 } 57 100 } 58 101 59 void DockIconWidget:: drawIcon(QPainter& painter)102 void DockIconWidget::paintEvent(QPaintEvent* event) 60 103 { 61 if ( !vis)104 if (myFace == NULL) 62 105 return; 63 painter.drawPixmap(0, 0, *vis); 106 107 event->ignore(); 108 QPainter painter(this); 109 painter.drawPixmap(0, 0, *myFace); 64 110 } 65 66 void DockIconWidget::paintEvent(QPaintEvent* /* event */)67 {68 QPainter painter(this);69 drawIcon(painter);70 painter.end();71 }
