summaryrefslogtreecommitdiff
authorsandman <sandman>2002-10-01 16:58:13 (UTC)
committer sandman <sandman>2002-10-01 16:58:13 (UTC)
commit1d9e6c252f74bfc8fcf6c80d8ce2a80cbd566d26 (patch) (unidiff)
treee26b890b3b6679e3067f8c1b8a688d0651fbfa22
parent541bd9eaebd630a39a9f1df320bf6e46d499c10a (diff)
downloadopie-1d9e6c252f74bfc8fcf6c80d8ce2a80cbd566d26.zip
opie-1d9e6c252f74bfc8fcf6c80d8ce2a80cbd566d26.tar.gz
opie-1d9e6c252f74bfc8fcf6c80d8ce2a80cbd566d26.tar.bz2
Added runtime detection of Qt version, because all qt/e's <= 2.3.3 return
font sizes *10
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--libopie/ofontselector.cpp202
-rw-r--r--libopie/ofontselector.h11
2 files changed, 118 insertions, 95 deletions
diff --git a/libopie/ofontselector.cpp b/libopie/ofontselector.cpp
index 39440af..e1090b5 100644
--- a/libopie/ofontselector.cpp
+++ b/libopie/ofontselector.cpp
@@ -34,4 +34,17 @@
34 34
35#include <qpe/fontdatabase.h>
36
35#include "ofontselector.h" 37#include "ofontselector.h"
36 38
39class OFontSelectorPrivate {
40public:
41 QListBox * m_font_family_list;
42 QComboBox * m_font_style_list;
43 QComboBox * m_font_size_list;
44
45 bool m_pointbug;
46
47 FontDatabase m_fdb;
48};
49
37 50
@@ -82,2 +95,9 @@ static int findItemCB ( QComboBox *box, const QString &str )
82 95
96static int qt_version ( )
97{
98 const char *qver = qVersion ( );
99
100 return ( qver [0] - '0' ) * 100 + ( qver [2] - '0' ) * 10 + ( qver [4] - '0' );
101}
102
83 103
@@ -85,25 +105,29 @@ OFontSelector::OFontSelector ( QWidget *parent, const char *name, WFlags fl ) :
85{ 105{
86 QGridLayout *gridLayout = new QGridLayout ( this, 0, 0, 4, 4 ); 106 d = new OFontSelectorPrivate ( );
87 gridLayout->setRowStretch ( 4, 10 ); 107
108 QGridLayout *gridLayout = new QGridLayout ( this, 0, 0, 4, 4 );
109 gridLayout->setRowStretch ( 4, 10 );
88 110
89 m_font_family_list = new QListBox( this, "FontListBox" ); 111 d-> m_font_family_list = new QListBox( this, "FontListBox" );
90 gridLayout->addMultiCellWidget( m_font_family_list, 0, 4, 0, 0 ); 112 gridLayout->addMultiCellWidget( d-> m_font_family_list, 0, 4, 0, 0 );
91 connect( m_font_family_list, SIGNAL( highlighted( int ) ), this, SLOT( fontFamilyClicked( int ) ) ); 113 connect( d-> m_font_family_list, SIGNAL( highlighted( int ) ), this, SLOT( fontFamilyClicked( int ) ) );
92 114
93 QLabel *label = new QLabel( tr( "Style" ), this ); 115 QLabel *label = new QLabel( tr( "Style" ), this );
94 gridLayout->addWidget( label, 0, 1 ); 116 gridLayout->addWidget( label, 0, 1 );
95 117
96 m_font_style_list = new QComboBox( this, "StyleListBox" ); 118 d-> m_font_style_list = new QComboBox( this, "StyleListBox" );
97 connect( m_font_style_list, SIGNAL( activated( int ) ), this, SLOT( fontStyleClicked( int ) ) ); 119 connect( d-> m_font_style_list, SIGNAL( activated( int ) ), this, SLOT( fontStyleClicked( int ) ) );
98 gridLayout->addWidget( m_font_style_list, 1, 1 ); 120 gridLayout->addWidget( d-> m_font_style_list, 1, 1 );
99 121
100 label = new QLabel( tr( "Size" ), this ); 122 label = new QLabel( tr( "Size" ), this );
101 gridLayout->addWidget( label, 2, 1 ); 123 gridLayout->addWidget( label, 2, 1 );
102 124
103 m_font_size_list = new QComboBox( this, "SizeListBox" ); 125 d-> m_font_size_list = new QComboBox( this, "SizeListBox" );
104 connect( m_font_size_list, SIGNAL( activated( int ) ), 126 connect( d-> m_font_size_list, SIGNAL( activated( int ) ),
105 this, SLOT( fontSizeClicked( int ) ) ); 127 this, SLOT( fontSizeClicked( int ) ) );
106 gridLayout->addWidget( m_font_size_list, 3, 1 ); 128 gridLayout->addWidget( d-> m_font_size_list, 3, 1 );
107 129
108 loadFonts ( m_font_family_list ); 130 d-> m_pointbug = ( qt_version ( ) <= 233 );
131
132 loadFonts ( d-> m_font_family_list );
109} 133}
@@ -112,2 +136,3 @@ OFontSelector::~OFontSelector ( )
112{ 136{
137 delete d;
113} 138}
@@ -116,3 +141,3 @@ bool OFontSelector::setSelectedFont ( const QFont &f )
116{ 141{
117 return setSelectedFont ( f. family ( ), m_fdb. styleString ( f ), f. pointSize ( ), QFont::encodingName ( f. charSet ( ))); 142 return setSelectedFont ( f. family ( ), d-> m_fdb. styleString ( f ), f. pointSize ( ), QFont::encodingName ( f. charSet ( )));
118} 143}
@@ -123,29 +148,27 @@ bool OFontSelector::setSelectedFont ( const QString &familyStr, const QString &s
123 148
124 QListBoxItem *family = m_font_family_list-> findItem ( familyStr ); 149 QListBoxItem *family = d-> m_font_family_list-> findItem ( familyStr );
125 if ( !family ) 150 if ( !family )
126 family = m_font_family_list-> findItem ( "Helvetica" ); 151 family = d-> m_font_family_list-> findItem ( "Helvetica" );
127 if ( !family ) 152 if ( !family )
128 family = m_font_family_list-> firstItem ( ); 153 family = d-> m_font_family_list-> firstItem ( );
129 m_font_family_list-> setCurrentItem ( family ); 154 d-> m_font_family_list-> setCurrentItem ( family );
130 fontFamilyClicked ( m_font_family_list-> index ( family )); 155 fontFamilyClicked ( d-> m_font_family_list-> index ( family ));
131 156
132 int style = findItemCB ( m_font_style_list, styleStr ); 157 int style = findItemCB ( d-> m_font_style_list, styleStr );
133 if ( style < 0 ) 158 if ( style < 0 )
134 style = findItemCB ( m_font_style_list, "Regular" ); 159 style = findItemCB ( d-> m_font_style_list, "Regular" );
135 if ( style < 0 && m_font_style_list-> count ( ) > 0 ) 160 if ( style < 0 && d-> m_font_style_list-> count ( ) > 0 )
136 style = 0; 161 style = 0;
137 m_font_style_list-> setCurrentItem ( style ); 162 d-> m_font_style_list-> setCurrentItem ( style );
138 fontStyleClicked ( style ); 163 fontStyleClicked ( style );
139 164
140 int size = findItemCB ( m_font_size_list, sizeStr ); 165 int size = findItemCB ( d-> m_font_size_list, sizeStr );
141 if ( size < 0 ) 166 if ( size < 0 )
142 size = findItemCB ( m_font_size_list, "10" ); 167 size = findItemCB ( d-> m_font_size_list, "10" );
143 if ( size < 0 && m_font_size_list-> count ( ) > 0 ) 168 if ( size < 0 && d-> m_font_size_list-> count ( ) > 0 )
144 size = 0; 169 size = 0;
145 m_font_size_list-> setCurrentItem ( size ); 170 d-> m_font_size_list-> setCurrentItem ( size );
146 fontSizeClicked ( size ); 171 fontSizeClicked ( size );
147 172
148 return (( family ) && 173 return (( family ) && ( style >= 0 ) && ( size >= 0 ));
149 ( style >= 0 ) &&
150 ( size >= 0 ));
151} 174}
@@ -161,3 +184,3 @@ QString OFontSelector::fontFamily ( ) const
161{ 184{
162 FontListItem *fli = (FontListItem *) m_font_family_list-> item ( m_font_family_list-> currentItem ( )); 185 FontListItem *fli = (FontListItem *) d-> m_font_family_list-> item ( d-> m_font_family_list-> currentItem ( ));
163 186
@@ -168,4 +191,4 @@ QString OFontSelector::fontStyle ( ) const
168{ 191{
169 FontListItem *fli = (FontListItem *) m_font_family_list-> item ( m_font_family_list-> currentItem ( )); 192 FontListItem *fli = (FontListItem *) d-> m_font_family_list-> item ( d-> m_font_family_list-> currentItem ( ));
170 int fst = m_font_style_list-> currentItem ( ); 193 int fst = d-> m_font_style_list-> currentItem ( );
171 194
@@ -176,4 +199,4 @@ int OFontSelector::fontSize ( ) const
176{ 199{
177 FontListItem *fli = (FontListItem *) m_font_family_list-> item ( m_font_family_list-> currentItem ( )); 200 FontListItem *fli = (FontListItem *) d-> m_font_family_list-> item ( d-> m_font_family_list-> currentItem ( ));
178 int fsi = m_font_size_list-> currentItem ( ); 201 int fsi = d-> m_font_size_list-> currentItem ( );
179 202
@@ -184,5 +207,5 @@ QString OFontSelector::fontCharSet ( ) const
184{ 207{
185 FontListItem *fli = (FontListItem *) m_font_family_list-> item ( m_font_family_list-> currentItem ( )); 208 FontListItem *fli = (FontListItem *) d-> m_font_family_list-> item ( d-> m_font_family_list-> currentItem ( ));
186 209
187 return fli ? m_fdb. charSets ( fli-> family ( )) [0] : QString::null; 210 return fli ? d-> m_fdb. charSets ( fli-> family ( )) [0] : QString::null;
188} 211}
@@ -191,13 +214,13 @@ bool OFontSelector::selectedFont ( QString &family, QString &style, int &size, Q
191{ 214{
192 int ffa = m_font_family_list-> currentItem ( ); 215 int ffa = d-> m_font_family_list-> currentItem ( );
193 int fst = m_font_style_list-> currentItem ( ); 216 int fst = d-> m_font_style_list-> currentItem ( );
194 int fsi = m_font_size_list-> currentItem ( ); 217 int fsi = d-> m_font_size_list-> currentItem ( );
195 218
196 FontListItem *fli = (FontListItem *) m_font_family_list-> item ( ffa ); 219 FontListItem *fli = (FontListItem *) d-> m_font_family_list-> item ( ffa );
197 220
198 if ( fli ) { 221 if ( fli ) {
199 family = fli-> family ( ); 222 family = fli-> family ( );
200 style = fst >= 0 ? fli-> styles ( ) [fst] : QString::null; 223 style = fst >= 0 ? fli-> styles ( ) [fst] : QString::null;
201 size = fsi >= 0 ? fli-> sizes ( ) [fsi] : 10; 224 size = fsi >= 0 ? fli-> sizes ( ) [fsi] : 10;
202 charset = m_fdb. charSets ( fli-> family ( )) [0]; 225 charset = d-> m_fdb. charSets ( fli-> family ( )) [0];
203 226
@@ -210,3 +233,3 @@ bool OFontSelector::selectedFont ( QString &family, QString &style, int &size, Q
210 233
211 234
212 235
@@ -214,6 +237,14 @@ void OFontSelector::loadFonts ( QListBox *list )
214{ 237{
215 QStringList f = m_fdb. families ( ); 238 QStringList f = d-> m_fdb. families ( );
216 239
217 for ( QStringList::ConstIterator it = f. begin ( ); it != f. end ( ); ++it ) 240 for ( QStringList::ConstIterator it = f. begin ( ); it != f. end ( ); ++it ) {
218 list-> insertItem ( new FontListItem ( *it, m_fdb. styles ( *it ), m_fdb. pointSizes ( *it ))); 241 QValueList <int> ps = d-> m_fdb. pointSizes ( *it );
242
243 if ( d-> m_pointbug ) {
244 for ( QValueList <int>::Iterator it = ps. begin ( ); it != ps. end ( ); it++ )
245 *it /= 10;
246 }
247
248 list-> insertItem ( new FontListItem ( *it, d-> m_fdb. styles ( *it ), ps ));
249 }
219} 250}
@@ -222,10 +253,10 @@ void OFontSelector::fontFamilyClicked ( int index )
222{ 253{
223 QString oldstyle = m_font_style_list-> currentText ( ); 254 QString oldstyle = d-> m_font_style_list-> currentText ( );
224 QString oldsize = m_font_size_list-> currentText ( ); 255 QString oldsize = d-> m_font_size_list-> currentText ( );
225 256
226 FontListItem *fli = (FontListItem *) m_font_family_list-> item ( index ); 257 FontListItem *fli = (FontListItem *) d-> m_font_family_list-> item ( index );
227 258
228 m_font_style_list-> clear ( ); 259 d-> m_font_style_list-> clear ( );
229 m_font_style_list-> insertStringList ( fli-> styles ( )); 260 d-> m_font_style_list-> insertStringList ( fli-> styles ( ));
230 m_font_style_list-> setEnabled ( !fli-> styles ( ). isEmpty ( )); 261 d-> m_font_style_list-> setEnabled ( !fli-> styles ( ). isEmpty ( ));
231 262
@@ -233,6 +264,6 @@ void OFontSelector::fontFamilyClicked ( int index )
233 264
234 i = findItemCB ( m_font_style_list, oldstyle ); 265 i = findItemCB ( d-> m_font_style_list, oldstyle );
235 if ( i < 0 ) 266 if ( i < 0 )
236 i = findItemCB ( m_font_style_list, "Regular" ); 267 i = findItemCB ( d-> m_font_style_list, "Regular" );
237 if (( i < 0 ) && ( m_font_style_list-> count ( ) > 0 )) 268 if (( i < 0 ) && ( d-> m_font_style_list-> count ( ) > 0 ))
238 i = 0; 269 i = 0;
@@ -240,3 +271,3 @@ void OFontSelector::fontFamilyClicked ( int index )
240 if ( i >= 0 ) { 271 if ( i >= 0 ) {
241 m_font_style_list-> setCurrentItem ( i ); 272 d-> m_font_style_list-> setCurrentItem ( i );
242 fontStyleClicked ( i ); 273 fontStyleClicked ( i );
@@ -244,3 +275,3 @@ void OFontSelector::fontFamilyClicked ( int index )
244 275
245 m_font_size_list-> clear ( ); 276 d-> m_font_size_list-> clear ( );
246 QValueList<int> sl = fli-> sizes ( ); 277 QValueList<int> sl = fli-> sizes ( );
@@ -248,8 +279,8 @@ void OFontSelector::fontFamilyClicked ( int index )
248 for ( QValueList<int>::Iterator it = sl. begin ( ); it != sl. end ( ); ++it ) 279 for ( QValueList<int>::Iterator it = sl. begin ( ); it != sl. end ( ); ++it )
249 m_font_size_list-> insertItem ( QString::number ( *it )); 280 d-> m_font_size_list-> insertItem ( QString::number ( *it ));
250 281
251 i = findItemCB ( m_font_size_list, oldsize ); 282 i = findItemCB ( d-> m_font_size_list, oldsize );
252 if ( i < 0 ) 283 if ( i < 0 )
253 i = findItemCB ( m_font_size_list, "10" ); 284 i = findItemCB ( d-> m_font_size_list, "10" );
254 if (( i < 0 ) && ( m_font_size_list-> count ( ) > 0 )) 285 if (( i < 0 ) && ( d-> m_font_size_list-> count ( ) > 0 ))
255 i = 0; 286 i = 0;
@@ -257,3 +288,3 @@ void OFontSelector::fontFamilyClicked ( int index )
257 if ( i >= 0 ) { 288 if ( i >= 0 ) {
258 m_font_size_list-> setCurrentItem ( i ); 289 d-> m_font_size_list-> setCurrentItem ( i );
259 fontSizeClicked ( i ); 290 fontSizeClicked ( i );
@@ -281,13 +312,13 @@ QFont OFontSelector::selectedFont ( )
281{ 312{
282 int ffa = m_font_family_list-> currentItem ( ); 313 int ffa = d-> m_font_family_list-> currentItem ( );
283 int fst = m_font_style_list-> currentItem ( ); 314 int fst = d-> m_font_style_list-> currentItem ( );
284 int fsi = m_font_size_list-> currentItem ( ); 315 int fsi = d-> m_font_size_list-> currentItem ( );
285 316
286 FontListItem *fli = (FontListItem *) m_font_family_list-> item ( ffa ); 317 FontListItem *fli = (FontListItem *) d-> m_font_family_list-> item ( ffa );
287 318
288 if ( fli ) { 319 if ( fli ) {
289 return m_fdb. font ( fli-> family ( ), \ 320 return d-> m_fdb. font ( fli-> family ( ), \
290 fst >= 0 ? fli-> styles ( ) [fst] : QString::null, \ 321 fst >= 0 ? fli-> styles ( ) [fst] : QString::null, \
291 fsi >= 0 ? fli-> sizes ( ) [fsi] : 10, \ 322 fsi >= 0 ? fli-> sizes ( ) [fsi] : 10, \
292 m_fdb. charSets ( fli-> family ( )) [0] ); 323 d-> m_fdb. charSets ( fli-> family ( )) [0] );
293 } 324 }
@@ -296,4 +327 @@ QFont OFontSelector::selectedFont ( )
296} }
297
298
299 \ No newline at end of file
diff --git a/libopie/ofontselector.h b/libopie/ofontselector.h
index b3aa862..a9c8a72 100644
--- a/libopie/ofontselector.h
+++ b/libopie/ofontselector.h
@@ -32,7 +32,6 @@
32#include <qwidget.h> 32#include <qwidget.h>
33#include <qpe/fontdatabase.h>
34 33
35class QComboBox;
36class QListBox; 34class QListBox;
37class QFont; 35class OFontSelectorPrivate;
36
38 37
@@ -73,7 +72,3 @@ private:
73private: 72private:
74 QListBox * m_font_family_list; 73 OFontSelectorPrivate *d;
75 QComboBox * m_font_style_list;
76 QComboBox * m_font_size_list;
77
78 FontDatabase m_fdb;
79}; 74};