-rw-r--r-- | libopie/ofontselector.cpp | 60 |
1 files changed, 55 insertions, 5 deletions
diff --git a/libopie/ofontselector.cpp b/libopie/ofontselector.cpp index b905474..c8471cc 100644 --- a/libopie/ofontselector.cpp +++ b/libopie/ofontselector.cpp | |||
@@ -35,29 +35,30 @@ | |||
35 | 35 | ||
36 | #include <qpe/fontdatabase.h> | 36 | #include <qpe/fontdatabase.h> |
37 | 37 | ||
38 | #include "ofontselector.h" | 38 | #include "ofontselector.h" |
39 | 39 | ||
40 | class OFontSelectorPrivate { | 40 | class OFontSelectorPrivate { |
41 | public: | 41 | public: |
42 | QListBox * m_font_family_list; | 42 | QListBox * m_font_family_list; |
43 | QComboBox * m_font_style_list; | 43 | QComboBox * m_font_style_list; |
44 | QComboBox * m_font_size_list; | 44 | QComboBox * m_font_size_list; |
45 | QMultiLineEdit *m_preview; | 45 | QMultiLineEdit *m_preview; |
46 | 46 | ||
47 | bool m_pointbug; | 47 | bool m_pointbug : 1; |
48 | 48 | ||
49 | FontDatabase m_fdb; | 49 | FontDatabase m_fdb; |
50 | }; | 50 | }; |
51 | 51 | ||
52 | namespace { | ||
52 | 53 | ||
53 | class FontListItem : public QListBoxText { | 54 | class FontListItem : public QListBoxText { |
54 | public: | 55 | public: |
55 | FontListItem ( const QString &t, const QStringList &styles, const QValueList<int> &sizes ) : QListBoxText ( ) | 56 | FontListItem ( const QString &t, const QStringList &styles, const QValueList<int> &sizes ) : QListBoxText ( ) |
56 | { | 57 | { |
57 | m_name = t; | 58 | m_name = t; |
58 | m_styles = styles; | 59 | m_styles = styles; |
59 | m_sizes = sizes; | 60 | m_sizes = sizes; |
60 | 61 | ||
61 | QString str = t; | 62 | QString str = t; |
62 | str [0] = str [0]. upper ( ); | 63 | str [0] = str [0]. upper ( ); |
63 | setText ( str ); | 64 | setText ( str ); |
@@ -85,33 +86,40 @@ private: | |||
85 | }; | 86 | }; |
86 | 87 | ||
87 | 88 | ||
88 | static int findItemCB ( QComboBox *box, const QString &str ) | 89 | static int findItemCB ( QComboBox *box, const QString &str ) |
89 | { | 90 | { |
90 | for ( int i = 0; i < box-> count ( ); i++ ) { | 91 | for ( int i = 0; i < box-> count ( ); i++ ) { |
91 | if ( box-> text ( i ) == str ) | 92 | if ( box-> text ( i ) == str ) |
92 | return i; | 93 | return i; |
93 | } | 94 | } |
94 | return -1; | 95 | return -1; |
95 | } | 96 | } |
96 | 97 | ||
97 | 98 | } | |
99 | /* static same as anon. namespace */ | ||
98 | static int qt_version ( ) | 100 | static int qt_version ( ) |
99 | { | 101 | { |
100 | const char *qver = qVersion ( ); | 102 | const char *qver = qVersion ( ); |
101 | 103 | ||
102 | return ( qver [0] - '0' ) * 100 + ( qver [2] - '0' ) * 10 + ( qver [4] - '0' ); | 104 | return ( qver [0] - '0' ) * 100 + ( qver [2] - '0' ) * 10 + ( qver [4] - '0' ); |
103 | } | 105 | } |
104 | 106 | ||
105 | 107 | /** | |
108 | * Constructs the Selector object | ||
109 | * @param withpreview If a font preview should be given | ||
110 | * @param parent The parent of the Font Selector | ||
111 | * @param name The name of the object | ||
112 | * @param fl WidgetFlags | ||
113 | */ | ||
106 | OFontSelector::OFontSelector ( bool withpreview, QWidget *parent, const char *name, WFlags fl ) : QWidget ( parent, name, fl ) | 114 | OFontSelector::OFontSelector ( bool withpreview, QWidget *parent, const char *name, WFlags fl ) : QWidget ( parent, name, fl ) |
107 | { | 115 | { |
108 | d = new OFontSelectorPrivate ( ); | 116 | d = new OFontSelectorPrivate ( ); |
109 | 117 | ||
110 | QGridLayout *gridLayout = new QGridLayout ( this, 0, 0, 4, 4 ); | 118 | QGridLayout *gridLayout = new QGridLayout ( this, 0, 0, 4, 4 ); |
111 | gridLayout->setRowStretch ( 4, 10 ); | 119 | gridLayout->setRowStretch ( 4, 10 ); |
112 | 120 | ||
113 | d-> m_font_family_list = new QListBox( this, "FontListBox" ); | 121 | d-> m_font_family_list = new QListBox( this, "FontListBox" ); |
114 | gridLayout->addMultiCellWidget( d-> m_font_family_list, 0, 4, 0, 0 ); | 122 | gridLayout->addMultiCellWidget( d-> m_font_family_list, 0, 4, 0, 0 ); |
115 | connect( d-> m_font_family_list, SIGNAL( highlighted( int ) ), this, SLOT( fontFamilyClicked( int ) ) ); | 123 | connect( d-> m_font_family_list, SIGNAL( highlighted( int ) ), this, SLOT( fontFamilyClicked( int ) ) ); |
116 | 124 | ||
117 | QLabel *label = new QLabel( tr( "Style" ), this ); | 125 | QLabel *label = new QLabel( tr( "Style" ), this ); |
@@ -143,30 +151,43 @@ OFontSelector::OFontSelector ( bool withpreview, QWidget *parent, const char *na | |||
143 | } | 151 | } |
144 | else | 152 | else |
145 | d-> m_preview = 0; | 153 | d-> m_preview = 0; |
146 | 154 | ||
147 | loadFonts ( d-> m_font_family_list ); | 155 | loadFonts ( d-> m_font_family_list ); |
148 | } | 156 | } |
149 | 157 | ||
150 | OFontSelector::~OFontSelector ( ) | 158 | OFontSelector::~OFontSelector ( ) |
151 | { | 159 | { |
152 | delete d; | 160 | delete d; |
153 | } | 161 | } |
154 | 162 | ||
163 | /** | ||
164 | * This methods tries to set the font | ||
165 | * @param f The wishes font | ||
166 | * @return success or failure | ||
167 | */ | ||
155 | bool OFontSelector::setSelectedFont ( const QFont &f ) | 168 | bool OFontSelector::setSelectedFont ( const QFont &f ) |
156 | { | 169 | { |
157 | return setSelectedFont ( f. family ( ), d-> m_fdb. styleString ( f ), f. pointSize ( ), QFont::encodingName ( f. charSet ( ))); | 170 | return setSelectedFont ( f. family ( ), d-> m_fdb. styleString ( f ), f. pointSize ( ), QFont::encodingName ( f. charSet ( ))); |
158 | } | 171 | } |
159 | 172 | ||
160 | bool OFontSelector::setSelectedFont ( const QString &familyStr, const QString &styleStr, int sizeVal, const QString & /*charset*/ ) | 173 | |
174 | /** | ||
175 | * This is an overloaded method @see setSelectedFont | ||
176 | * @param familyStr The family of the font | ||
177 | * @param styleStr The style of the font | ||
178 | * @param sizeVal The size of font | ||
179 | * @param charset The charset to be used. Will be deprecated by QT3 | ||
180 | */ | ||
181 | bool OFontSelector::setSelectedFont ( const QString &familyStr, const QString &styleStr, int sizeVal, const QString & charset ) | ||
161 | { | 182 | { |
162 | QString sizeStr = QString::number ( sizeVal ); | 183 | QString sizeStr = QString::number ( sizeVal ); |
163 | 184 | ||
164 | QListBoxItem *family = d-> m_font_family_list-> findItem ( familyStr ); | 185 | QListBoxItem *family = d-> m_font_family_list-> findItem ( familyStr ); |
165 | if ( !family ) | 186 | if ( !family ) |
166 | family = d-> m_font_family_list-> findItem ( "Helvetica" ); | 187 | family = d-> m_font_family_list-> findItem ( "Helvetica" ); |
167 | if ( !family ) | 188 | if ( !family ) |
168 | family = d-> m_font_family_list-> firstItem ( ); | 189 | family = d-> m_font_family_list-> firstItem ( ); |
169 | d-> m_font_family_list-> setCurrentItem ( family ); | 190 | d-> m_font_family_list-> setCurrentItem ( family ); |
170 | fontFamilyClicked ( d-> m_font_family_list-> index ( family )); | 191 | fontFamilyClicked ( d-> m_font_family_list-> index ( family )); |
171 | 192 | ||
172 | int style = findItemCB ( d-> m_font_style_list, styleStr ); | 193 | int style = findItemCB ( d-> m_font_style_list, styleStr ); |
@@ -179,61 +200,88 @@ bool OFontSelector::setSelectedFont ( const QString &familyStr, const QString &s | |||
179 | 200 | ||
180 | int size = findItemCB ( d-> m_font_size_list, sizeStr ); | 201 | int size = findItemCB ( d-> m_font_size_list, sizeStr ); |
181 | if ( size < 0 ) | 202 | if ( size < 0 ) |
182 | size = findItemCB ( d-> m_font_size_list, "10" ); | 203 | size = findItemCB ( d-> m_font_size_list, "10" ); |
183 | if ( size < 0 && d-> m_font_size_list-> count ( ) > 0 ) | 204 | if ( size < 0 && d-> m_font_size_list-> count ( ) > 0 ) |
184 | size = 0; | 205 | size = 0; |
185 | d-> m_font_size_list-> setCurrentItem ( size ); | 206 | d-> m_font_size_list-> setCurrentItem ( size ); |
186 | fontSizeClicked ( size ); | 207 | fontSizeClicked ( size ); |
187 | 208 | ||
188 | return (( family ) && ( style >= 0 ) && ( size >= 0 )); | 209 | return (( family ) && ( style >= 0 ) && ( size >= 0 )); |
189 | } | 210 | } |
190 | 211 | ||
212 | /** | ||
213 | * This method returns the name, style and size of the currently selected | ||
214 | * font or false if no font is selected | ||
215 | * @param family The font family will be written there | ||
216 | * @param style The style will be written there | ||
217 | * @param size The size will be written there | ||
218 | * @return success or failure | ||
219 | */ | ||
191 | bool OFontSelector::selectedFont ( QString &family, QString &style, int &size ) | 220 | bool OFontSelector::selectedFont ( QString &family, QString &style, int &size ) |
192 | { | 221 | { |
193 | QString dummy; | 222 | QString dummy; |
194 | return selectedFont ( family, style, size, dummy ); | 223 | return selectedFont ( family, style, size, dummy ); |
195 | } | 224 | } |
196 | 225 | ||
197 | 226 | ||
227 | /** | ||
228 | * This method does return the font family or QString::null if there is | ||
229 | * no font item selected | ||
230 | * @return the font family | ||
231 | */ | ||
198 | QString OFontSelector::fontFamily ( ) const | 232 | QString OFontSelector::fontFamily ( ) const |
199 | { | 233 | { |
200 | FontListItem *fli = (FontListItem *) d-> m_font_family_list-> item ( d-> m_font_family_list-> currentItem ( )); | 234 | FontListItem *fli = (FontListItem *) d-> m_font_family_list-> item ( d-> m_font_family_list-> currentItem ( )); |
201 | 235 | ||
202 | return fli ? fli-> family ( ) : QString::null; | 236 | return fli ? fli-> family ( ) : QString::null; |
203 | } | 237 | } |
204 | 238 | ||
239 | /** | ||
240 | * This method will return the style of the font or QString::null | ||
241 | * @return the style of the font | ||
242 | */ | ||
205 | QString OFontSelector::fontStyle ( ) const | 243 | QString OFontSelector::fontStyle ( ) const |
206 | { | 244 | { |
207 | FontListItem *fli = (FontListItem *) d-> m_font_family_list-> item ( d-> m_font_family_list-> currentItem ( )); | 245 | FontListItem *fli = (FontListItem *) d-> m_font_family_list-> item ( d-> m_font_family_list-> currentItem ( )); |
208 | int fst = d-> m_font_style_list-> currentItem ( ); | 246 | int fst = d-> m_font_style_list-> currentItem ( ); |
209 | 247 | ||
210 | return ( fli && fst >= 0 ) ? fli-> styles ( ) [fst] : QString::null; | 248 | return ( fli && fst >= 0 ) ? fli-> styles ( ) [fst] : QString::null; |
211 | } | 249 | } |
212 | 250 | ||
251 | /** | ||
252 | * This method will return the font size or 10 if no font size is available | ||
253 | */ | ||
213 | int OFontSelector::fontSize ( ) const | 254 | int OFontSelector::fontSize ( ) const |
214 | { | 255 | { |
215 | FontListItem *fli = (FontListItem *) d-> m_font_family_list-> item ( d-> m_font_family_list-> currentItem ( )); | 256 | FontListItem *fli = (FontListItem *) d-> m_font_family_list-> item ( d-> m_font_family_list-> currentItem ( )); |
216 | int fsi = d-> m_font_size_list-> currentItem ( ); | 257 | int fsi = d-> m_font_size_list-> currentItem ( ); |
217 | 258 | ||
218 | return ( fli && fsi >= 0 ) ? fli-> sizes ( ) [fsi] : 10; | 259 | return ( fli && fsi >= 0 ) ? fli-> sizes ( ) [fsi] : 10; |
219 | } | 260 | } |
220 | 261 | ||
262 | /** | ||
263 | * returns the charset of the font or QString::null | ||
264 | */ | ||
221 | QString OFontSelector::fontCharSet ( ) const | 265 | QString OFontSelector::fontCharSet ( ) const |
222 | { | 266 | { |
223 | FontListItem *fli = (FontListItem *) d-> m_font_family_list-> item ( d-> m_font_family_list-> currentItem ( )); | 267 | FontListItem *fli = (FontListItem *) d-> m_font_family_list-> item ( d-> m_font_family_list-> currentItem ( )); |
224 | 268 | ||
225 | return fli ? d-> m_fdb. charSets ( fli-> family ( )) [0] : QString::null; | 269 | return fli ? d-> m_fdb. charSets ( fli-> family ( )) [0] : QString::null; |
226 | } | 270 | } |
227 | 271 | ||
272 | /** | ||
273 | * Overloaded member function see above | ||
274 | * @see selectedFont | ||
275 | */ | ||
228 | bool OFontSelector::selectedFont ( QString &family, QString &style, int &size, QString &charset ) | 276 | bool OFontSelector::selectedFont ( QString &family, QString &style, int &size, QString &charset ) |
229 | { | 277 | { |
230 | int ffa = d-> m_font_family_list-> currentItem ( ); | 278 | int ffa = d-> m_font_family_list-> currentItem ( ); |
231 | int fst = d-> m_font_style_list-> currentItem ( ); | 279 | int fst = d-> m_font_style_list-> currentItem ( ); |
232 | int fsi = d-> m_font_size_list-> currentItem ( ); | 280 | int fsi = d-> m_font_size_list-> currentItem ( ); |
233 | 281 | ||
234 | FontListItem *fli = (FontListItem *) d-> m_font_family_list-> item ( ffa ); | 282 | FontListItem *fli = (FontListItem *) d-> m_font_family_list-> item ( ffa ); |
235 | 283 | ||
236 | if ( fli ) { | 284 | if ( fli ) { |
237 | family = fli-> family ( ); | 285 | family = fli-> family ( ); |
238 | style = fst >= 0 ? fli-> styles ( ) [fst] : QString::null; | 286 | style = fst >= 0 ? fli-> styles ( ) [fst] : QString::null; |
239 | size = fsi >= 0 ? fli-> sizes ( ) [fsi] : 10; | 287 | size = fsi >= 0 ? fli-> sizes ( ) [fsi] : 10; |
@@ -318,25 +366,27 @@ void OFontSelector::fontSizeClicked ( int /*index*/ ) | |||
318 | } | 366 | } |
319 | 367 | ||
320 | void OFontSelector::changeFont ( ) | 368 | void OFontSelector::changeFont ( ) |
321 | { | 369 | { |
322 | QFont f = selectedFont ( ); | 370 | QFont f = selectedFont ( ); |
323 | 371 | ||
324 | if ( d-> m_preview ) | 372 | if ( d-> m_preview ) |
325 | d-> m_preview-> setFont ( f ); | 373 | d-> m_preview-> setFont ( f ); |
326 | 374 | ||
327 | emit fontSelected ( f ); | 375 | emit fontSelected ( f ); |
328 | } | 376 | } |
329 | 377 | ||
330 | 378 | /** | |
379 | * Return the selected font | ||
380 | */ | ||
331 | QFont OFontSelector::selectedFont ( ) | 381 | QFont OFontSelector::selectedFont ( ) |
332 | { | 382 | { |
333 | int ffa = d-> m_font_family_list-> currentItem ( ); | 383 | int ffa = d-> m_font_family_list-> currentItem ( ); |
334 | int fst = d-> m_font_style_list-> currentItem ( ); | 384 | int fst = d-> m_font_style_list-> currentItem ( ); |
335 | int fsi = d-> m_font_size_list-> currentItem ( ); | 385 | int fsi = d-> m_font_size_list-> currentItem ( ); |
336 | 386 | ||
337 | FontListItem *fli = (FontListItem *) d-> m_font_family_list-> item ( ffa ); | 387 | FontListItem *fli = (FontListItem *) d-> m_font_family_list-> item ( ffa ); |
338 | 388 | ||
339 | if ( fli ) { | 389 | if ( fli ) { |
340 | return d-> m_fdb. font ( fli-> family ( ), \ | 390 | return d-> m_fdb. font ( fli-> family ( ), \ |
341 | fst >= 0 ? fli-> styles ( ) [fst] : QString::null, \ | 391 | fst >= 0 ? fli-> styles ( ) [fst] : QString::null, \ |
342 | fsi >= 0 ? fli-> sizes ( ) [fsi] : 10, \ | 392 | fsi >= 0 ? fli-> sizes ( ) [fsi] : 10, \ |