summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--library/fileselector.h2
-rw-r--r--library/qpedecoration_qws.cpp3
2 files changed, 2 insertions, 3 deletions
diff --git a/library/fileselector.h b/library/fileselector.h
index ef57626..f1c9eb1 100644
--- a/library/fileselector.h
+++ b/library/fileselector.h
@@ -1,113 +1,113 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. 2** Copyright (C) 2000-2002 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of the Qtopia Environment. 4** This file is part of the Qtopia Environment.
5** 5**
6** This file may be distributed and/or modified under the terms of the 6** This file may be distributed and/or modified under the terms of the
7** GNU General Public License version 2 as published by the Free Software 7** GNU General Public License version 2 as published by the Free Software
8** Foundation and appearing in the file LICENSE.GPL included in the 8** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file. 9** packaging of this file.
10** 10**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
15** 15**
16** Contact info@trolltech.com if any conditions of this licensing are 16** Contact info@trolltech.com if any conditions of this licensing are
17** not clear to you. 17** not clear to you.
18** 18**
19**********************************************************************/ 19**********************************************************************/
20#ifndef FILESELECTOR_H 20#ifndef FILESELECTOR_H
21#define FILESELECTOR_H 21#define FILESELECTOR_H
22 22
23#include <qhbox.h> 23#include <qhbox.h>
24#include <qvbox.h> 24#include <qvbox.h>
25#include <qtoolbutton.h> 25#include <qtoolbutton.h>
26#include <qlistview.h> 26#include <qlistview.h>
27 27
28#include "filemanager.h" 28#include "filemanager.h"
29#include "applnk.h" 29#include "applnk.h"
30 30
31class QPopupMenu; 31class QPopupMenu;
32class QPushButton; 32class QPushButton;
33class FileSelectorView; 33class FileSelectorView;
34 34
35class FileSelectorItem : public QListViewItem 35class FileSelectorItem : public QListViewItem
36{ 36{
37public: 37public:
38 FileSelectorItem( QListView *parent, const DocLnk& f ); 38 FileSelectorItem( QListView *parent, const DocLnk& f );
39 ~FileSelectorItem(); 39 ~FileSelectorItem();
40 40
41 DocLnk file() const { return fl; } 41 DocLnk file() const { return fl; }
42 42
43private: 43private:
44 DocLnk fl; 44 DocLnk fl;
45}; 45};
46 46
47class FileSelectorPrivate; 47class FileSelectorPrivate;
48class FileSelector : public QVBox 48class FileSelector : public QVBox
49{ 49{
50 Q_OBJECT 50 Q_OBJECT
51 51
52public: 52public:
53 FileSelector( const QString &mimefilter, QWidget *parent, const char *name=0, bool newVisible = TRUE, bool closeVisible = TRUE ); 53 FileSelector( const QString &mimefilter, QWidget *parent, const char *name=0, bool newVisible = TRUE, bool closeVisible = TRUE );
54 ~FileSelector(); 54 ~FileSelector();
55 void setNewVisible( bool b ); 55 void setNewVisible( bool b );
56 void setCloseVisible( bool b ); 56 void setCloseVisible( bool b );
57 void reread(); 57 void reread();
58 int fileCount(); 58 int fileCount();
59 DocLnk selectedDocument() const 59 DocLnk selectedDocument() const
60 { 60 {
61 const DocLnk* rp = ((FileSelector*)this)->selected(); 61 const DocLnk* rp = ((FileSelector*)this)->selected();
62 if (!rp) { 62 if (!rp) {
63 DocLnk r; 63 DocLnk r;
64 return r; 64 return r;
65 } 65 }
66 DocLnk r(*rp); 66 DocLnk r(*rp);
67 delete rp; 67 delete rp;
68 return r; 68 return r;
69 } 69 }
70 70
71 QValueList<DocLnk> fileList() const 71 QValueList<DocLnk> fileList() const
72 { 72 {
73 ((FileSelector*)this)->fileCount(); // ensure all loaded when this is extended 73 ((FileSelector*)this)->fileCount(); // ensure all loaded when this is extended
74 74
75 QValueList<DocLnk> list; 75 QValueList<DocLnk> list;
76 FileSelectorItem *item = (FileSelectorItem *)((QListView*)view)->firstChild(); 76 FileSelectorItem *item = (FileSelectorItem *)((QListView*)view)->firstChild();
77 while (item) { 77 while (item) {
78 list.append(item->file()); 78 list.append(item->file());
79 item = (FileSelectorItem *)item->nextSibling(); 79 item = (FileSelectorItem *)item->nextSibling();
80 } 80 }
81 81
82 return list; 82 return list;
83 } 83 }
84 84
85signals: 85signals:
86 void fileSelected( const DocLnk & ); 86 void fileSelected( const DocLnk & );
87 void newSelected( const DocLnk & ); 87 void newSelected( const DocLnk & );
88 void closeMe(); 88 void closeMe();
89 89
90private slots: 90private slots:
91 void createNew(); 91 void createNew();
92 void fileClicked( int, QListViewItem *, const QPoint &, int ); 92 void fileClicked( int, QListViewItem *, const QPoint &, int );
93 // pressed to get 'right down' 93 // pressed to get 'right down'
94 void filePressed( int, QListViewItem *, const QPoint &, int ); 94 void filePressed( int, QListViewItem *, const QPoint &, int );
95 void fileClicked( QListViewItem *); 95 void fileClicked( QListViewItem *);
96 void typeSelected( const QString &type ); 96 void typeSelected( const QString &type );
97 void catSelected( int ); 97 void catSelected( int );
98 void cardMessage( const QCString &, const QByteArray &); 98 void cardMessage( const QCString &, const QByteArray &);
99 99
100private: 100private:
101 void updateView(); 101 void updateView();
102 void updateWhatsThis(); 102 void updateWhatsThis();
103 103
104private: 104private:
105 // RESOLVE please -zecke@handhelds.org 105 // RESOLVE please -zecke@handhelds.org
106 const DocLnk *selected(); // use selectedDocument() that's no luckily no compiler is putting the access into the symbol name 106 const DocLnk *selected(); // use selectedDocument() luckily no compiler is putting the access into the symbol name
107 FileSelectorView *view; 107 FileSelectorView *view;
108 QString filter; 108 QString filter;
109 QToolButton *buttonNew, *buttonClose; 109 QToolButton *buttonNew, *buttonClose;
110 FileSelectorPrivate *d; 110 FileSelectorPrivate *d;
111}; 111};
112 112
113#endif 113#endif
diff --git a/library/qpedecoration_qws.cpp b/library/qpedecoration_qws.cpp
index c2eb751..708dd23 100644
--- a/library/qpedecoration_qws.cpp
+++ b/library/qpedecoration_qws.cpp
@@ -1,495 +1,494 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. 2** Copyright (C) 2000-2002 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of the Qtopia Environment. 4** This file is part of the Qtopia Environment.
5** 5**
6** This file may be distributed and/or modified under the terms of the 6** This file may be distributed and/or modified under the terms of the
7** GNU General Public License version 2 as published by the Free Software 7** GNU General Public License version 2 as published by the Free Software
8** Foundation and appearing in the file LICENSE.GPL included in the 8** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file. 9** packaging of this file.
10** 10**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
15** 15**
16** Contact info@trolltech.com if any conditions of this licensing are 16** Contact info@trolltech.com if any conditions of this licensing are
17** not clear to you. 17** not clear to you.
18** 18**
19**********************************************************************/ 19**********************************************************************/
20#ifdef QWS 20#ifdef QWS
21#define QTOPIA_INTERNAL_LANGLIST 21#define QTOPIA_INTERNAL_LANGLIST
22#include <qapplication.h> 22#include <qapplication.h>
23#include <qstyle.h> 23#include <qstyle.h>
24#include <qwidget.h> 24#include <qwidget.h>
25#include <qpainter.h> 25#include <qpainter.h>
26#include <qtimer.h> 26#include <qtimer.h>
27#include <qwhatsthis.h> 27#include <qwhatsthis.h>
28#include "qcopenvelope_qws.h" 28#include "qcopenvelope_qws.h"
29#include "qpedecoration_qws.h" 29#include "qpedecoration_qws.h"
30#include <qdialog.h> 30#include <qdialog.h>
31#include <qdrawutil.h> 31#include <qdrawutil.h>
32#include <qgfx_qws.h> 32#include <qgfx_qws.h>
33#include "qpeapplication.h" 33#include "qpeapplication.h"
34#include "resource.h" 34#include "resource.h"
35#include "global.h" 35#include "global.h"
36#include "qlibrary.h" 36#include "qlibrary.h"
37#include "windowdecorationinterface.h" 37#include "windowdecorationinterface.h"
38#include <qfile.h> 38#include <qfile.h>
39#include <qsignal.h> 39#include <qsignal.h>
40 40
41#include <stdlib.h> 41#include <stdlib.h>
42 42
43extern QRect qt_maxWindowRect; 43extern QRect qt_maxWindowRect;
44 44
45#define WHATSTHIS_MODE 45#define WHATSTHIS_MODE
46 46
47#ifndef QT_NO_QWS_QPE_WM_STYLE 47#ifndef QT_NO_QWS_QPE_WM_STYLE
48 48
49#ifndef QT_NO_IMAGEIO_XPM 49#ifndef QT_NO_IMAGEIO_XPM
50 50
51/* XPM */ 51/* XPM */
52static const char * const qpe_close_xpm[] = { 52static const char * const qpe_close_xpm[] = {
53"16 16 3 1", 53"16 16 3 1",
54" c None", 54" c None",
55". c #FFFFFF", 55". c #FFFFFF",
56"+ c #000000", 56"+ c #000000",
57" ", 57" ",
58" ", 58" ",
59" ..... ", 59" ..... ",
60" ..+++++.. ", 60" ..+++++.. ",
61" .+++++++++. ", 61" .+++++++++. ",
62" .+..+++..+. ", 62" .+..+++..+. ",
63" .++...+...++. ", 63" .++...+...++. ",
64" .+++.....+++. ", 64" .+++.....+++. ",
65" .++++...++++. ", 65" .++++...++++. ",
66" .+++.....+++. ", 66" .+++.....+++. ",
67" .++...+...++. ", 67" .++...+...++. ",
68" .+..+++..+. ", 68" .+..+++..+. ",
69" .+++++++++. ", 69" .+++++++++. ",
70" ..+++++.. ", 70" ..+++++.. ",
71" ..... ", 71" ..... ",
72" "}; 72" "};
73 73
74/* XPM */ 74/* XPM */
75static const char * const qpe_accept_xpm[] = { 75static const char * const qpe_accept_xpm[] = {
76"16 16 3 1", 76"16 16 3 1",
77" c None", 77" c None",
78". c #FFFFFF", 78". c #FFFFFF",
79"+ c #000000", 79"+ c #000000",
80" ", 80" ",
81" ", 81" ",
82" ..... ", 82" ..... ",
83" ..+++++.. ", 83" ..+++++.. ",
84" .+++++++++. ", 84" .+++++++++. ",
85" .+++++++++. ", 85" .+++++++++. ",
86" .+++++++..++. ", 86" .+++++++..++. ",
87" .++.+++...++. ", 87" .++.+++...++. ",
88" .+...+...+++. ", 88" .+...+...+++. ",
89" .+......++++. ", 89" .+......++++. ",
90" .++....+++++. ", 90" .++....+++++. ",
91" .++..+++++. ", 91" .++..+++++. ",
92" .+++++++++. ", 92" .+++++++++. ",
93" ..+++++.. ", 93" ..+++++.. ",
94" ..... ", 94" ..... ",
95" "}; 95" "};
96 96
97#endif // QT_NO_IMAGEIO_XPM 97#endif // QT_NO_IMAGEIO_XPM
98 98
99class HackWidget : public QWidget 99class HackWidget : public QWidget
100{ 100{
101public: 101public:
102 bool needsOk() { 102 bool needsOk() {
103 return (getWState() & WState_Reserved1 ) || 103 return (getWState() & WState_Reserved1 ) ||
104 (inherits( "QDialog" ) && !inherits( "QMessageBox" ) ); 104 (inherits( "QDialog" ) && !inherits( "QMessageBox" ) );
105 } 105 }
106}; 106};
107 107
108static QImage scaleButton( const QImage &img, int height ) 108static QImage scaleButton( const QImage &img, int height )
109{ 109{
110 qWarning("Height %d %d", height, img.height() ); 110 if ( img.height() != 0 && img.height() != height ) {
111 if ( img.height()!=0 && img.height() != height ) {
112 return img.smoothScale( img.width()*height/img.height(), height ); 111 return img.smoothScale( img.width()*height/img.height(), height );
113 } else { 112 } else {
114 return img; 113 return img;
115 } 114 }
116} 115}
117 116
118class TLWidget : public QWidget 117class TLWidget : public QWidget
119{ 118{
120public: 119public:
121 QWSManager *manager() 120 QWSManager *manager()
122 { 121 {
123 return topData()->qwsManager; 122 return topData()->qwsManager;
124 } 123 }
125 124
126 QTLWExtra *topExtra() 125 QTLWExtra *topExtra()
127 { 126 {
128 return topData(); 127 return topData();
129 } 128 }
130 129
131 void setWState( uint s ) { QWidget::setWState( s ); } 130 void setWState( uint s ) { QWidget::setWState( s ); }
132 void clearWState( uint s ) { QWidget::clearWState( s ); } 131 void clearWState( uint s ) { QWidget::clearWState( s ); }
133}; 132};
134 133
135 134
136QPEManager::QPEManager( QPEDecoration *d, QObject *parent ) 135QPEManager::QPEManager( QPEDecoration *d, QObject *parent )
137 : QObject( parent ), decoration( d ), helpState(0), inWhatsThis(FALSE) 136 : QObject( parent ), decoration( d ), helpState(0), inWhatsThis(FALSE)
138{ 137{
139 wtTimer = new QTimer( this ); 138 wtTimer = new QTimer( this );
140 connect( wtTimer, SIGNAL(timeout()), this, SLOT(whatsThisTimeout()) ); 139 connect( wtTimer, SIGNAL(timeout()), this, SLOT(whatsThisTimeout()) );
141} 140}
142 141
143 142
144void QPEManager::updateActive() 143void QPEManager::updateActive()
145{ 144{
146 QWidget *newActive = qApp->activeWindow(); 145 QWidget *newActive = qApp->activeWindow();
147 if ( newActive && (QWidget*)active == newActive ) 146 if ( newActive && (QWidget*)active == newActive )
148 return; 147 return;
149 148
150 if ( active && (!newActive || ((TLWidget *)newActive)->manager()) ) { 149 if ( active && (!newActive || ((TLWidget *)newActive)->manager()) ) {
151 ((TLWidget *)(QWidget*)active)->manager()->removeEventFilter( this ); 150 ((TLWidget *)(QWidget*)active)->manager()->removeEventFilter( this );
152 } 151 }
153 152
154 if ( newActive && ((TLWidget *)newActive)->manager() ) { 153 if ( newActive && ((TLWidget *)newActive)->manager() ) {
155 active = newActive; 154 active = newActive;
156 ((TLWidget *)(QWidget*)active)->manager()->installEventFilter( this ); 155 ((TLWidget *)(QWidget*)active)->manager()->installEventFilter( this );
157 } else if ( !newActive ) { 156 } else if ( !newActive ) {
158 active = 0; 157 active = 0;
159 } 158 }
160} 159}
161 160
162int QPEManager::pointInQpeRegion( QWidget *w, const QPoint &p ) 161int QPEManager::pointInQpeRegion( QWidget *w, const QPoint &p )
163{ 162{
164 QRect rect(w->geometry()); 163 QRect rect(w->geometry());
165 164
166 if ( decoration->region( w, rect, 165 if ( decoration->region( w, rect,
167 (QWSDecoration::Region)QPEDecoration::Help ).contains(p) ) 166 (QWSDecoration::Region)QPEDecoration::Help ).contains(p) )
168 return QPEDecoration::Help; 167 return QPEDecoration::Help;
169 168
170 for (int i = QWSDecoration::LastRegion; i >= QWSDecoration::Title; i--) { 169 for (int i = QWSDecoration::LastRegion; i >= QWSDecoration::Title; i--) {
171 if (decoration->region(w, rect, (QWSDecoration::Region)i).contains(p)) 170 if (decoration->region(w, rect, (QWSDecoration::Region)i).contains(p))
172 return (QWSDecoration::Region)i; 171 return (QWSDecoration::Region)i;
173 } 172 }
174 173
175 return QWSDecoration::None; 174 return QWSDecoration::None;
176} 175}
177 176
178bool QPEManager::eventFilter( QObject *o, QEvent *e ) 177bool QPEManager::eventFilter( QObject *o, QEvent *e )
179{ 178{
180 QWSManager *mgr = (QWSManager *)o; 179 QWSManager *mgr = (QWSManager *)o;
181 QWidget *w = mgr->widget(); 180 QWidget *w = mgr->widget();
182 switch ( e->type() ) { 181 switch ( e->type() ) {
183 case QEvent::MouseButtonPress: 182 case QEvent::MouseButtonPress:
184 { 183 {
185 pressTime = QTime::currentTime(); 184 pressTime = QTime::currentTime();
186 QPoint p = ((QMouseEvent*)e)->globalPos(); 185 QPoint p = ((QMouseEvent*)e)->globalPos();
187 int inRegion = pointInQpeRegion( w, p ); 186 int inRegion = pointInQpeRegion( w, p );
188#ifdef WHATSTHIS_MODE 187#ifdef WHATSTHIS_MODE
189 if ( !w->geometry().contains(p) && QWhatsThis::inWhatsThisMode() ) { 188 if ( !w->geometry().contains(p) && QWhatsThis::inWhatsThisMode() ) {
190 QString text; 189 QString text;
191 switch ( inRegion ) { 190 switch ( inRegion ) {
192 case QWSDecoration::Close: 191 case QWSDecoration::Close:
193 if ( ((HackWidget*)w)->needsOk() ) 192 if ( ((HackWidget*)w)->needsOk() )
194 text = tr("Click to close this window, discarding changes."); 193 text = tr("Click to close this window, discarding changes.");
195 else 194 else
196 text = tr("Click to close this window."); 195 text = tr("Click to close this window.");
197 break; 196 break;
198 case QWSDecoration::Minimize: 197 case QWSDecoration::Minimize:
199 text = tr("Click to close this window and apply changes."); 198 text = tr("Click to close this window and apply changes.");
200 break; 199 break;
201 case QWSDecoration::Maximize: 200 case QWSDecoration::Maximize:
202 if ( w->isMaximized() ) 201 if ( w->isMaximized() )
203 text = tr("Click to make this window moveable."); 202 text = tr("Click to make this window moveable.");
204 else 203 else
205 text = tr("Click to make this window use all available screen area."); 204 text = tr("Click to make this window use all available screen area.");
206 break; 205 break;
207 default: 206 default:
208 break; 207 break;
209 } 208 }
210 QWhatsThis::leaveWhatsThisMode( text ); 209 QWhatsThis::leaveWhatsThisMode( text );
211 whatsThisTimeout(); 210 whatsThisTimeout();
212 helpState = 0; 211 helpState = 0;
213 return true; 212 return true;
214 } 213 }
215#endif 214#endif
216 if ( inRegion == QPEDecoration::Help ) { 215 if ( inRegion == QPEDecoration::Help ) {
217#ifdef WHATSTHIS_MODE 216#ifdef WHATSTHIS_MODE
218 wtTimer->start( 400, TRUE ); 217 wtTimer->start( 400, TRUE );
219#endif 218#endif
220 helpState = QWSButton::Clicked|QWSButton::MouseOver; 219 helpState = QWSButton::Clicked|QWSButton::MouseOver;
221 drawButton( w, QPEDecoration::Help, helpState ); 220 drawButton( w, QPEDecoration::Help, helpState );
222 return true; 221 return true;
223 } 222 }
224 } 223 }
225 break; 224 break;
226 case QEvent::MouseButtonRelease: 225 case QEvent::MouseButtonRelease:
227 if ( helpState & QWSButton::Clicked ) { 226 if ( helpState & QWSButton::Clicked ) {
228 wtTimer->stop(); 227 wtTimer->stop();
229 helpState = 0; 228 helpState = 0;
230 drawButton( w, QPEDecoration::Help, helpState ); 229 drawButton( w, QPEDecoration::Help, helpState );
231 QPoint p = ((QMouseEvent*)e)->globalPos(); 230 QPoint p = ((QMouseEvent*)e)->globalPos();
232 if ( pointInQpeRegion( w, p ) == QPEDecoration::Help ) { 231 if ( pointInQpeRegion( w, p ) == QPEDecoration::Help ) {
233 decoration->help( w ); 232 decoration->help( w );
234 } 233 }
235 return true; 234 return true;
236 } 235 }
237 break; 236 break;
238 case QEvent::MouseMove: 237 case QEvent::MouseMove:
239 if ( helpState & QWSButton::Clicked ) { 238 if ( helpState & QWSButton::Clicked ) {
240 int oldState = helpState; 239 int oldState = helpState;
241 QPoint p = ((QMouseEvent*)e)->globalPos(); 240 QPoint p = ((QMouseEvent*)e)->globalPos();
242 if ( pointInQpeRegion( w, p ) == QPEDecoration::Help ) { 241 if ( pointInQpeRegion( w, p ) == QPEDecoration::Help ) {
243 helpState = QWSButton::Clicked|QWSButton::MouseOver; 242 helpState = QWSButton::Clicked|QWSButton::MouseOver;
244 } else { 243 } else {
245 helpState = 0; 244 helpState = 0;
246 } 245 }
247 if ( helpState != oldState ) 246 if ( helpState != oldState )
248 drawButton( w, QPEDecoration::Help, helpState ); 247 drawButton( w, QPEDecoration::Help, helpState );
249 } 248 }
250 break; 249 break;
251 default: 250 default:
252 break; 251 break;
253 } 252 }
254 return QObject::eventFilter( o, e ); 253 return QObject::eventFilter( o, e );
255} 254}
256 255
257void QPEManager::drawButton( QWidget *w, QPEDecoration::QPERegion r, int state ) 256void QPEManager::drawButton( QWidget *w, QPEDecoration::QPERegion r, int state )
258{ 257{
259 QPainter painter(w); 258 QPainter painter(w);
260 QRegion rgn = ((TLWidget *)w)->topExtra()->decor_allocated_region; 259 QRegion rgn = ((TLWidget *)w)->topExtra()->decor_allocated_region;
261 painter.internalGfx()->setWidgetDeviceRegion( rgn ); 260 painter.internalGfx()->setWidgetDeviceRegion( rgn );
262 painter.setClipRegion(decoration->region(w, w->rect(),QWSDecoration::All)); 261 painter.setClipRegion(decoration->region(w, w->rect(),QWSDecoration::All));
263 decoration->paintButton( &painter, w, (QWSDecoration::Region)r, state ); 262 decoration->paintButton( &painter, w, (QWSDecoration::Region)r, state );
264} 263}
265 264
266void QPEManager::drawTitle( QWidget *w ) 265void QPEManager::drawTitle( QWidget *w )
267{ 266{
268 QPainter painter(w); 267 QPainter painter(w);
269 QRegion rgn = ((TLWidget *)w)->topExtra()->decor_allocated_region; 268 QRegion rgn = ((TLWidget *)w)->topExtra()->decor_allocated_region;
270 painter.internalGfx()->setWidgetDeviceRegion( rgn ); 269 painter.internalGfx()->setWidgetDeviceRegion( rgn );
271 painter.setClipRegion(decoration->region(w, w->rect(),QWSDecoration::All)); 270 painter.setClipRegion(decoration->region(w, w->rect(),QWSDecoration::All));
272 decoration->paint( &painter, w ); 271 decoration->paint( &painter, w );
273 decoration->paintButton(&painter, w, QWSDecoration::Menu, 0); 272 decoration->paintButton(&painter, w, QWSDecoration::Menu, 0);
274 decoration->paintButton(&painter, w, QWSDecoration::Close, 0); 273 decoration->paintButton(&painter, w, QWSDecoration::Close, 0);
275 decoration->paintButton(&painter, w, QWSDecoration::Minimize, 0); 274 decoration->paintButton(&painter, w, QWSDecoration::Minimize, 0);
276 decoration->paintButton(&painter, w, QWSDecoration::Maximize, 0); 275 decoration->paintButton(&painter, w, QWSDecoration::Maximize, 0);
277} 276}
278 277
279void QPEManager::whatsThisTimeout() 278void QPEManager::whatsThisTimeout()
280{ 279{
281 if ( !QWhatsThis::inWhatsThisMode() ) { 280 if ( !QWhatsThis::inWhatsThisMode() ) {
282 if ( inWhatsThis ) { 281 if ( inWhatsThis ) {
283 if ( whatsThis ) { 282 if ( whatsThis ) {
284 QWidget *w = whatsThis; 283 QWidget *w = whatsThis;
285 whatsThis = 0; 284 whatsThis = 0;
286 drawTitle( w ); 285 drawTitle( w );
287 } 286 }
288 wtTimer->stop(); 287 wtTimer->stop();
289 } else { 288 } else {
290 QWhatsThis::enterWhatsThisMode(); 289 QWhatsThis::enterWhatsThisMode();
291 helpState = 0; 290 helpState = 0;
292 updateActive(); 291 updateActive();
293 if ( active ) { 292 if ( active ) {
294 whatsThis = active; 293 whatsThis = active;
295 drawTitle( active ); 294 drawTitle( active );
296 // check periodically to see if we've left whats this mode 295 // check periodically to see if we've left whats this mode
297 wtTimer->start( 250 ); 296 wtTimer->start( 250 );
298 } 297 }
299 } 298 }
300 inWhatsThis = !inWhatsThis; 299 inWhatsThis = !inWhatsThis;
301 } 300 }
302} 301}
303 302
304//=========================================================================== 303//===========================================================================
305 304
306static QImage *okImage( int th ) 305static QImage *okImage( int th )
307{ 306{
308 static QImage *i = 0; 307 static QImage *i = 0;
309 if ( !i || i->height() != th ) { 308 if ( !i || i->height() != th ) {
310 delete i; 309 delete i;
311 i = new QImage(scaleButton(Resource::loadImage("OKButton"),th)); 310 i = new QImage(scaleButton(Resource::loadImage("OKButton"),th));
312 } 311 }
313 return i; 312 return i;
314} 313}
315 314
316static QImage *closeImage( int th ) 315static QImage *closeImage( int th )
317{ 316{
318 static QImage *i = 0; 317 static QImage *i = 0;
319 if ( !i || i->height() != th ) { 318 if ( !i || i->height() != th ) {
320 delete i; 319 delete i;
321 i = new QImage(scaleButton(Resource::loadImage("CloseButton"),th)); 320 i = new QImage(scaleButton(Resource::loadImage("CloseButton"),th));
322 } 321 }
323 return i; 322 return i;
324} 323}
325 324
326static QImage *helpImage( int th ) 325static QImage *helpImage( int th )
327{ 326{
328 static QImage *i = 0; 327 static QImage *i = 0;
329 if ( !i || i->height() != th ) { 328 if ( !i || i->height() != th ) {
330 delete i; 329 delete i;
331 i = new QImage(scaleButton(Resource::loadImage("HelpButton"),th)); 330 i = new QImage(scaleButton(Resource::loadImage("HelpButton"),th));
332 } 331 }
333 return i; 332 return i;
334} 333}
335 334
336static QImage *maximizeImage( int th ) 335static QImage *maximizeImage( int th )
337{ 336{
338 static QImage *i = 0; 337 static QImage *i = 0;
339 if ( !i || i->height() != th ) { 338 if ( !i || i->height() != th ) {
340 delete i; 339 delete i;
341 i = new QImage(scaleButton(Resource::loadImage("MaximizeButton"),th)); 340 i = new QImage(scaleButton(Resource::loadImage("MaximizeButton"),th));
342 } 341 }
343 return i; 342 return i;
344} 343}
345 344
346int WindowDecorationInterface::metric( Metric m, const WindowData *wd ) const 345int WindowDecorationInterface::metric( Metric m, const WindowData *wd ) const
347{ 346{
348 switch ( m ) { 347 switch ( m ) {
349 case TitleHeight: 348 case TitleHeight:
350 if ( QApplication::desktop()->height() > 320 ) 349 if ( QApplication::desktop()->height() > 320 )
351 return 19; 350 return 19;
352 else 351 else
353 return 15; 352 return 15;
354 case LeftBorder: 353 case LeftBorder:
355 case RightBorder: 354 case RightBorder:
356 case TopBorder: 355 case TopBorder:
357 case BottomBorder: 356 case BottomBorder:
358 return 4; 357 return 4;
359 case OKWidth: 358 case OKWidth:
360 return okImage(metric(TitleHeight,wd))->width(); 359 return okImage(metric(TitleHeight,wd))->width();
361 case CloseWidth: 360 case CloseWidth:
362 return closeImage(metric(TitleHeight,wd))->width(); 361 return closeImage(metric(TitleHeight,wd))->width();
363 case HelpWidth: 362 case HelpWidth:
364 return helpImage(metric(TitleHeight,wd))->width(); 363 return helpImage(metric(TitleHeight,wd))->width();
365 case MaximizeWidth: 364 case MaximizeWidth:
366 return maximizeImage(metric(TitleHeight,wd))->width(); 365 return maximizeImage(metric(TitleHeight,wd))->width();
367 case CornerGrabSize: 366 case CornerGrabSize:
368 return 16; 367 return 16;
369 } 368 }
370 369
371 return 0; 370 return 0;
372} 371}
373 372
374void WindowDecorationInterface::drawArea( Area a, QPainter *p, const WindowData *wd ) const 373void WindowDecorationInterface::drawArea( Area a, QPainter *p, const WindowData *wd ) const
375{ 374{
376 int th = metric( TitleHeight, wd ); 375 int th = metric( TitleHeight, wd );
377 QRect r = wd->rect; 376 QRect r = wd->rect;
378 377
379 switch ( a ) { 378 switch ( a ) {
380 case Border: 379 case Border:
381 { 380 {
382 const QColorGroup &cg = wd->palette.active(); 381 const QColorGroup &cg = wd->palette.active();
383 qDrawWinPanel(p, r.x()-metric(LeftBorder,wd), 382 qDrawWinPanel(p, r.x()-metric(LeftBorder,wd),
384 r.y()-th-metric(TopBorder,wd), 383 r.y()-th-metric(TopBorder,wd),
385 r.width()+metric(LeftBorder,wd)+metric(RightBorder,wd), 384 r.width()+metric(LeftBorder,wd)+metric(RightBorder,wd),
386 r.height()+th+metric(TopBorder,wd)+metric(BottomBorder,wd), 385 r.height()+th+metric(TopBorder,wd)+metric(BottomBorder,wd),
387 cg, FALSE, &cg.brush(QColorGroup::Background)); 386 cg, FALSE, &cg.brush(QColorGroup::Background));
388 } 387 }
389 break; 388 break;
390 case Title: 389 case Title:
391 { 390 {
392 const QColorGroup &cg = wd->palette.active(); 391 const QColorGroup &cg = wd->palette.active();
393 QBrush titleBrush; 392 QBrush titleBrush;
394 QPen titleLines; 393 QPen titleLines;
395 394
396 if ( wd->flags & WindowData::Active ) { 395 if ( wd->flags & WindowData::Active ) {
397 titleBrush = cg.brush(QColorGroup::Highlight); 396 titleBrush = cg.brush(QColorGroup::Highlight);
398 titleLines = titleBrush.color().dark(); 397 titleLines = titleBrush.color().dark();
399 } else { 398 } else {
400 titleBrush = cg.brush(QColorGroup::Background); 399 titleBrush = cg.brush(QColorGroup::Background);
401 titleLines = titleBrush.color(); 400 titleLines = titleBrush.color();
402 } 401 }
403 402
404 p->fillRect( r.x(), r.y()-th, r.width(), th, titleBrush); 403 p->fillRect( r.x(), r.y()-th, r.width(), th, titleBrush);
405 404
406 p->setPen( titleLines ); 405 p->setPen( titleLines );
407 for ( int i = r.y()-th; i < r.y(); i += 2 ) 406 for ( int i = r.y()-th; i < r.y(); i += 2 )
408 p->drawLine( r.left(), i, r.right(), i ); 407 p->drawLine( r.left(), i, r.right(), i );
409 } 408 }
410 break; 409 break;
411 case TitleText: 410 case TitleText:
412 p->drawText( r.x()+3+metric(HelpWidth,wd), r.top()-th, 411 p->drawText( r.x()+3+metric(HelpWidth,wd), r.top()-th,
413 r.width()-metric(OKWidth,wd)-metric(CloseWidth,wd), 412 r.width()-metric(OKWidth,wd)-metric(CloseWidth,wd),
414 th, QPainter::AlignVCenter, wd->caption); 413 th, QPainter::AlignVCenter, wd->caption);
415 break; 414 break;
416 } 415 }
417} 416}
418 417
419void WindowDecorationInterface::drawButton( Button b, QPainter *p, const WindowData *wd, int x, int y, int, int, QWSButton::State state ) const 418void WindowDecorationInterface::drawButton( Button b, QPainter *p, const WindowData *wd, int x, int y, int, int, QWSButton::State state ) const
420{ 419{
421 QImage *img = 0; 420 QImage *img = 0;
422 switch ( b ) { 421 switch ( b ) {
423 case OK: 422 case OK:
424 img = okImage(metric(TitleHeight,wd)); 423 img = okImage(metric(TitleHeight,wd));
425 break; 424 break;
426 case Close: 425 case Close:
427 img = closeImage(metric(TitleHeight,wd)); 426 img = closeImage(metric(TitleHeight,wd));
428 break; 427 break;
429 case Help: 428 case Help:
430 img = helpImage(metric(TitleHeight,wd)); 429 img = helpImage(metric(TitleHeight,wd));
431 break; 430 break;
432 case Maximize: 431 case Maximize:
433 img = maximizeImage(metric(TitleHeight,wd)); 432 img = maximizeImage(metric(TitleHeight,wd));
434 break; 433 break;
435 } 434 }
436 435
437 if ( img ) { 436 if ( img ) {
438 if ((state & QWSButton::MouseOver) && (state & QWSButton::Clicked)) 437 if ((state & QWSButton::MouseOver) && (state & QWSButton::Clicked))
439 p->drawImage(x+2, y+2, *img); 438 p->drawImage(x+2, y+2, *img);
440 else 439 else
441 p->drawImage(x+1, y+1, *img); 440 p->drawImage(x+1, y+1, *img);
442 } 441 }
443} 442}
444 443
445QRegion WindowDecorationInterface::mask( const WindowData *wd ) const 444QRegion WindowDecorationInterface::mask( const WindowData *wd ) const
446{ 445{
447 int th = metric(TitleHeight,wd); 446 int th = metric(TitleHeight,wd);
448 QRect rect( wd->rect ); 447 QRect rect( wd->rect );
449 QRect r(rect.left() - metric(LeftBorder,wd), 448 QRect r(rect.left() - metric(LeftBorder,wd),
450 rect.top() - th - metric(TopBorder,wd), 449 rect.top() - th - metric(TopBorder,wd),
451 rect.width() + metric(LeftBorder,wd) + metric(RightBorder,wd), 450 rect.width() + metric(LeftBorder,wd) + metric(RightBorder,wd),
452 rect.height() + th + metric(TopBorder,wd) + metric(BottomBorder,wd)); 451 rect.height() + th + metric(TopBorder,wd) + metric(BottomBorder,wd));
453 return QRegion(r) - rect; 452 return QRegion(r) - rect;
454} 453}
455 454
456class DefaultWindowDecoration : public WindowDecorationInterface 455class DefaultWindowDecoration : public WindowDecorationInterface
457{ 456{
458public: 457public:
459 DefaultWindowDecoration() : ref(0) {} 458 DefaultWindowDecoration() : ref(0) {}
460 QString name() const { 459 QString name() const {
461 return "Default"; 460 return "Default";
462 } 461 }
463 QPixmap icon() const { 462 QPixmap icon() const {
464 return QPixmap(); 463 return QPixmap();
465 } 464 }
466 QRESULT queryInterface( const QUuid &uuid, QUnknownInterface **iface ) { 465 QRESULT queryInterface( const QUuid &uuid, QUnknownInterface **iface ) {
467 *iface = 0; 466 *iface = 0;
468 if ( uuid == IID_QUnknown ) 467 if ( uuid == IID_QUnknown )
469 *iface = this; 468 *iface = this;
470 else if ( uuid == IID_WindowDecoration ) 469 else if ( uuid == IID_WindowDecoration )
471 *iface = this; 470 *iface = this;
472 471
473 if ( *iface ) 472 if ( *iface )
474 (*iface)->addRef(); 473 (*iface)->addRef();
475 return QS_OK; 474 return QS_OK;
476 } 475 }
477 Q_REFCOUNT 476 Q_REFCOUNT
478 477
479private: 478private:
480 ulong ref; 479 ulong ref;
481}; 480};
482 481
483static WindowDecorationInterface *wdiface = 0; 482static WindowDecorationInterface *wdiface = 0;
484static QLibrary *wdlib = 0; 483static QLibrary *wdlib = 0;
485 484
486//=========================================================================== 485//===========================================================================
487 486
488QPEDecoration::QPEDecoration() 487QPEDecoration::QPEDecoration()
489 : QWSDefaultDecoration() 488 : QWSDefaultDecoration()
490{ 489{
491 if ( wdlib ) { 490 if ( wdlib ) {
492 wdiface->release(); 491 wdiface->release();
493 wdlib->unload(); 492 wdlib->unload();
494 delete wdlib; 493 delete wdlib;
495 wdlib = 0; 494 wdlib = 0;