author | zecke <zecke> | 2002-09-17 17:05:19 (UTC) |
---|---|---|
committer | zecke <zecke> | 2002-09-17 17:05:19 (UTC) |
commit | e1614b49cf61ee37350828ce5b5178a9da752f39 (patch) (unidiff) | |
tree | 836d16a45aaeb47cba40405ff8956a1661315637 | |
parent | 01b2fc89a105bf5b56bc1aa467343d14589dadd2 (diff) | |
download | opie-e1614b49cf61ee37350828ce5b5178a9da752f39.zip opie-e1614b49cf61ee37350828ce5b5178a9da752f39.tar.gz opie-e1614b49cf61ee37350828ce5b5178a9da752f39.tar.bz2 |
update
-rw-r--r-- | library/fileselector.h | 2 | ||||
-rw-r--r-- | library/qpedecoration_qws.cpp | 3 |
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 | ||
31 | class QPopupMenu; | 31 | class QPopupMenu; |
32 | class QPushButton; | 32 | class QPushButton; |
33 | class FileSelectorView; | 33 | class FileSelectorView; |
34 | 34 | ||
35 | class FileSelectorItem : public QListViewItem | 35 | class FileSelectorItem : public QListViewItem |
36 | { | 36 | { |
37 | public: | 37 | public: |
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 | ||
43 | private: | 43 | private: |
44 | DocLnk fl; | 44 | DocLnk fl; |
45 | }; | 45 | }; |
46 | 46 | ||
47 | class FileSelectorPrivate; | 47 | class FileSelectorPrivate; |
48 | class FileSelector : public QVBox | 48 | class FileSelector : public QVBox |
49 | { | 49 | { |
50 | Q_OBJECT | 50 | Q_OBJECT |
51 | 51 | ||
52 | public: | 52 | public: |
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 | ||
85 | signals: | 85 | signals: |
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 | ||
90 | private slots: | 90 | private 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 | ||
100 | private: | 100 | private: |
101 | void updateView(); | 101 | void updateView(); |
102 | void updateWhatsThis(); | 102 | void updateWhatsThis(); |
103 | 103 | ||
104 | private: | 104 | private: |
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 | ||
43 | extern QRect qt_maxWindowRect; | 43 | extern 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 */ |
52 | static const char * const qpe_close_xpm[] = { | 52 | static 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 */ |
75 | static const char * const qpe_accept_xpm[] = { | 75 | static 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 | ||
99 | class HackWidget : public QWidget | 99 | class HackWidget : public QWidget |
100 | { | 100 | { |
101 | public: | 101 | public: |
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 | ||
108 | static QImage scaleButton( const QImage &img, int height ) | 108 | static 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 | ||
118 | class TLWidget : public QWidget | 117 | class TLWidget : public QWidget |
119 | { | 118 | { |
120 | public: | 119 | public: |
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 | ||
136 | QPEManager::QPEManager( QPEDecoration *d, QObject *parent ) | 135 | QPEManager::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 | ||
144 | void QPEManager::updateActive() | 143 | void 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 | ||
162 | int QPEManager::pointInQpeRegion( QWidget *w, const QPoint &p ) | 161 | int 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 | ||
178 | bool QPEManager::eventFilter( QObject *o, QEvent *e ) | 177 | bool 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 | ||
257 | void QPEManager::drawButton( QWidget *w, QPEDecoration::QPERegion r, int state ) | 256 | void 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 | ||
266 | void QPEManager::drawTitle( QWidget *w ) | 265 | void 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 | ||
279 | void QPEManager::whatsThisTimeout() | 278 | void 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 | ||
306 | static QImage *okImage( int th ) | 305 | static 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 | ||
316 | static QImage *closeImage( int th ) | 315 | static 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 | ||
326 | static QImage *helpImage( int th ) | 325 | static 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 | ||
336 | static QImage *maximizeImage( int th ) | 335 | static 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 | ||
346 | int WindowDecorationInterface::metric( Metric m, const WindowData *wd ) const | 345 | int 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 | ||
374 | void WindowDecorationInterface::drawArea( Area a, QPainter *p, const WindowData *wd ) const | 373 | void 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 | ||
419 | void WindowDecorationInterface::drawButton( Button b, QPainter *p, const WindowData *wd, int x, int y, int, int, QWSButton::State state ) const | 418 | void 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 | ||
445 | QRegion WindowDecorationInterface::mask( const WindowData *wd ) const | 444 | QRegion 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 | ||
456 | class DefaultWindowDecoration : public WindowDecorationInterface | 455 | class DefaultWindowDecoration : public WindowDecorationInterface |
457 | { | 456 | { |
458 | public: | 457 | public: |
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 | ||
479 | private: | 478 | private: |
480 | ulong ref; | 479 | ulong ref; |
481 | }; | 480 | }; |
482 | 481 | ||
483 | static WindowDecorationInterface *wdiface = 0; | 482 | static WindowDecorationInterface *wdiface = 0; |
484 | static QLibrary *wdlib = 0; | 483 | static QLibrary *wdlib = 0; |
485 | 484 | ||
486 | //=========================================================================== | 485 | //=========================================================================== |
487 | 486 | ||
488 | QPEDecoration::QPEDecoration() | 487 | QPEDecoration::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; |