summaryrefslogtreecommitdiff
authorsandman <sandman>2002-09-25 23:12:14 (UTC)
committer sandman <sandman>2002-09-25 23:12:14 (UTC)
commit489bc02ad26767dc45b81bf122a09ef55ac20249 (patch) (unidiff)
treeb7c26f8af38e9b0146179a1618a8fdf2504490fe
parent0c6ce9f1600bf1efb7736f87fd14dd8215db851f (diff)
downloadopie-489bc02ad26767dc45b81bf122a09ef55ac20249.zip
opie-489bc02ad26767dc45b81bf122a09ef55ac20249.tar.gz
opie-489bc02ad26767dc45b81bf122a09ef55ac20249.tar.bz2
some fixes to make ofontselector more robust, if you specify invalid font
families/styles/sizes
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--libopie/ofontselector.cpp65
-rw-r--r--libopie/ofontselector.h2
2 files changed, 43 insertions, 24 deletions
diff --git a/libopie/ofontselector.cpp b/libopie/ofontselector.cpp
index f6fd541..d32aeb4 100644
--- a/libopie/ofontselector.cpp
+++ b/libopie/ofontselector.cpp
@@ -83,86 +83,95 @@ static int findItemCB ( QComboBox *box, const QString &str )
83 83
84OFontSelector::OFontSelector ( QWidget *parent, const char *name, WFlags fl ) : QWidget ( parent, name, fl ) 84OFontSelector::OFontSelector ( QWidget *parent, const char *name, WFlags fl ) : QWidget ( parent, name, fl )
85{ 85{
86 QGridLayout *gridLayout = new QGridLayout ( this, 0, 0, 4, 4 ); 86 QGridLayout *gridLayout = new QGridLayout ( this, 0, 0, 4, 4 );
87 gridLayout->setRowStretch ( 4, 10 ); 87 gridLayout->setRowStretch ( 4, 10 );
88 88
89 m_font_family_list = new QListBox( this, "FontListBox" ); 89 m_font_family_list = new QListBox( this, "FontListBox" );
90 gridLayout->addMultiCellWidget( m_font_family_list, 0, 4, 0, 0 ); 90 gridLayout->addMultiCellWidget( m_font_family_list, 0, 4, 0, 0 );
91 connect( m_font_family_list, SIGNAL( highlighted( int ) ), this, SLOT( fontFamilyClicked( int ) ) ); 91 connect( m_font_family_list, SIGNAL( highlighted( int ) ), this, SLOT( fontFamilyClicked( int ) ) );
92 92
93 QLabel *label = new QLabel( tr( "Style" ), this ); 93 QLabel *label = new QLabel( tr( "Style" ), this );
94 gridLayout->addWidget( label, 0, 1 ); 94 gridLayout->addWidget( label, 0, 1 );
95 95
96 m_font_style_list = new QComboBox( this, "StyleListBox" ); 96 m_font_style_list = new QComboBox( this, "StyleListBox" );
97 connect( m_font_style_list, SIGNAL( activated( int ) ), this, SLOT( fontStyleClicked( int ) ) ); 97 connect( m_font_style_list, SIGNAL( activated( int ) ), this, SLOT( fontStyleClicked( int ) ) );
98 gridLayout->addWidget( m_font_style_list, 1, 1 ); 98 gridLayout->addWidget( m_font_style_list, 1, 1 );
99 99
100 label = new QLabel( tr( "Size" ), this ); 100 label = new QLabel( tr( "Size" ), this );
101 gridLayout->addWidget( label, 2, 1 ); 101 gridLayout->addWidget( label, 2, 1 );
102 102
103 m_font_size_list = new QComboBox( this, "SizeListBox" ); 103 m_font_size_list = new QComboBox( this, "SizeListBox" );
104 connect( m_font_size_list, SIGNAL( activated( int ) ), 104 connect( m_font_size_list, SIGNAL( activated( int ) ),
105 this, SLOT( fontSizeClicked( int ) ) ); 105 this, SLOT( fontSizeClicked( int ) ) );
106 gridLayout->addWidget( m_font_size_list, 3, 1 ); 106 gridLayout->addWidget( m_font_size_list, 3, 1 );
107 107
108 loadFonts ( m_font_family_list ); 108 loadFonts ( m_font_family_list );
109} 109}
110 110
111OFontSelector::~OFontSelector ( ) 111OFontSelector::~OFontSelector ( )
112{ 112{
113} 113}
114 114
115bool OFontSelector::setSelectedFont ( const QString &family, const QString &styleStr, int size, const QString & /*charset*/ ) 115bool OFontSelector::setSelectedFont ( const QString &familyStr, const QString &styleStr, int sizeVal, const QString & /*charset*/ )
116{ 116{
117 if ( size <= 0 ) 117 QString sizeStr = QString::number ( sizeVal );
118 size = 10; 118
119 QString familyStr = family. isEmpty ( ) ? QString ( "Helvetica" ) : family; 119 QListBoxItem *family = m_font_family_list-> findItem ( familyStr );
120 QString sizeStr = QString::number ( size ); 120 if ( !family )
121 121 family = m_font_family_list-> findItem ( "Helvetica" );
122 m_font_family_list-> setCurrentItem ( m_font_family_list-> findItem ( familyStr )); 122 if ( !family )
123 if ( m_font_family_list-> currentItem ( ) < 0 ) 123 family = m_font_family_list-> firstItem ( );
124 m_font_family_list-> setCurrentItem ( 0 ); 124 m_font_family_list-> setCurrentItem ( family );
125 125 fontFamilyClicked ( m_font_family_list-> index ( family ));
126 fontFamilyClicked ( m_font_family_list-> currentItem ( )); 126
127 127 int style = findItemCB ( m_font_style_list, styleStr );
128 m_font_style_list-> setCurrentItem ( findItemCB ( m_font_style_list, styleStr )); 128 if ( style < 0 )
129 fontStyleClicked ( m_font_style_list-> currentItem ( )); 129 style = findItemCB ( m_font_style_list, "Regular" );
130 130 if ( style < 0 && m_font_style_list-> count ( ) > 0 )
131 m_font_size_list-> setCurrentItem ( findItemCB ( m_font_size_list, sizeStr )); 131 style = 0;
132 fontSizeClicked ( m_font_size_list-> currentItem ( )); 132 m_font_style_list-> setCurrentItem ( style );
133 fontStyleClicked ( style );
134
135 int size = findItemCB ( m_font_size_list, sizeStr );
136 if ( size < 0 )
137 size = findItemCB ( m_font_size_list, "10" );
138 if ( size < 0 && m_font_size_list-> count ( ) > 0 )
139 size = 0;
140 m_font_size_list-> setCurrentItem ( size );
141 fontSizeClicked ( size );
133 142
134 return (( m_font_family_list-> currentItem ( ) >= 0 ) && 143 return (( family ) &&
135 ( m_font_style_list-> currentItem ( ) >= 0 ) && 144 ( style >= 0 ) &&
136 ( m_font_size_list-> currentItem ( ) >= 0 )); 145 ( size >= 0 ));
137} 146}
138 147
139bool OFontSelector::selectedFont ( QString &family, QString &style, int &size ) 148bool OFontSelector::selectedFont ( QString &family, QString &style, int &size )
140{ 149{
141 QString dummy; 150 QString dummy;
142 return selectedFont ( family, style, size, dummy ); 151 return selectedFont ( family, style, size, dummy );
143} 152}
144 153
145 154
146QString OFontSelector::fontFamily ( ) const 155QString OFontSelector::fontFamily ( ) const
147{ 156{
148 FontListItem *fli = (FontListItem *) m_font_family_list-> item ( m_font_family_list-> currentItem ( )); 157 FontListItem *fli = (FontListItem *) m_font_family_list-> item ( m_font_family_list-> currentItem ( ));
149 158
150 return fli ? fli-> family ( ) : QString::null; 159 return fli ? fli-> family ( ) : QString::null;
151} 160}
152 161
153QString OFontSelector::fontStyle ( ) const 162QString OFontSelector::fontStyle ( ) const
154{ 163{
155 FontListItem *fli = (FontListItem *) m_font_family_list-> item ( m_font_family_list-> currentItem ( )); 164 FontListItem *fli = (FontListItem *) m_font_family_list-> item ( m_font_family_list-> currentItem ( ));
156 int fst = m_font_style_list-> currentItem ( ); 165 int fst = m_font_style_list-> currentItem ( );
157 166
158 return ( fli && fst >= 0 ) ? fli-> styles ( ) [fst] : QString::null; 167 return ( fli && fst >= 0 ) ? fli-> styles ( ) [fst] : QString::null;
159} 168}
160 169
161int OFontSelector::fontSize ( ) const 170int OFontSelector::fontSize ( ) const
162{ 171{
163 FontListItem *fli = (FontListItem *) m_font_family_list-> item ( m_font_family_list-> currentItem ( )); 172 FontListItem *fli = (FontListItem *) m_font_family_list-> item ( m_font_family_list-> currentItem ( ));
164 int fsi = m_font_size_list-> currentItem ( ); 173 int fsi = m_font_size_list-> currentItem ( );
165 174
166 return ( fli && fsi >= 0 ) ? fli-> sizes ( ) [fsi] : 10; 175 return ( fli && fsi >= 0 ) ? fli-> sizes ( ) [fsi] : 10;
167} 176}
168 177
@@ -230,48 +239,56 @@ void OFontSelector::fontFamilyClicked ( int index )
230 239
231 m_font_size_list-> clear ( ); 240 m_font_size_list-> clear ( );
232 QValueList<int> sl = fli-> sizes ( ); 241 QValueList<int> sl = fli-> sizes ( );
233 242
234 for ( QValueList<int>::Iterator it = sl. begin ( ); it != sl. end ( ); ++it ) 243 for ( QValueList<int>::Iterator it = sl. begin ( ); it != sl. end ( ); ++it )
235 m_font_size_list-> insertItem ( QString::number ( *it )); 244 m_font_size_list-> insertItem ( QString::number ( *it ));
236 245
237 i = findItemCB ( m_font_size_list, oldsize ); 246 i = findItemCB ( m_font_size_list, oldsize );
238 if ( i < 0 ) 247 if ( i < 0 )
239 i = findItemCB ( m_font_size_list, "10" ); 248 i = findItemCB ( m_font_size_list, "10" );
240 if (( i < 0 ) && ( m_font_size_list-> count ( ) > 0 )) 249 if (( i < 0 ) && ( m_font_size_list-> count ( ) > 0 ))
241 i = 0; 250 i = 0;
242 251
243 if ( i >= 0 ) { 252 if ( i >= 0 ) {
244 m_font_size_list-> setCurrentItem ( i ); 253 m_font_size_list-> setCurrentItem ( i );
245 fontSizeClicked ( i ); 254 fontSizeClicked ( i );
246 } 255 }
247 changeFont ( ); 256 changeFont ( );
248} 257}
249 258
250void OFontSelector::fontStyleClicked ( int /*index*/ ) 259void OFontSelector::fontStyleClicked ( int /*index*/ )
251{ 260{
252 changeFont ( ); 261 changeFont ( );
253} 262}
254 263
255void OFontSelector::fontSizeClicked ( int /*index*/ ) 264void OFontSelector::fontSizeClicked ( int /*index*/ )
256{ 265{
257 changeFont ( ); 266 changeFont ( );
258} 267}
259 268
260void OFontSelector::changeFont ( ) 269void OFontSelector::changeFont ( )
261{ 270{
271 emit fontSelected ( selectedFont ( ));
272}
273
274
275QFont OFontSelector::selectedFont ( )
276{
262 int ffa = m_font_family_list-> currentItem ( ); 277 int ffa = m_font_family_list-> currentItem ( );
263 int fst = m_font_style_list-> currentItem ( ); 278 int fst = m_font_style_list-> currentItem ( );
264 int fsi = m_font_size_list-> currentItem ( ); 279 int fsi = m_font_size_list-> currentItem ( );
265 280
266 FontListItem *fli = (FontListItem *) m_font_family_list-> item ( ffa ); 281 FontListItem *fli = (FontListItem *) m_font_family_list-> item ( ffa );
267 282
268 if ( fli ) { 283 if ( fli ) {
269 emit fontSelected ( m_fdb. font ( fli-> family ( ), \ 284 return m_fdb. font ( fli-> family ( ), \
270 fst >= 0 ? fli-> styles ( ) [fst] : QString::null, \ 285 fst >= 0 ? fli-> styles ( ) [fst] : QString::null, \
271 fsi >= 0 ? fli-> sizes ( ) [fsi] : 10, \ 286 fsi >= 0 ? fli-> sizes ( ) [fsi] : 10, \
272 m_fdb. charSets ( fli-> family ( )) [0] )); 287 m_fdb. charSets ( fli-> family ( )) [0] );
273 } 288 }
289 else
290 return QFont ( );
274} 291}
275 292
276 293
277 \ No newline at end of file 294 \ No newline at end of file
diff --git a/libopie/ofontselector.h b/libopie/ofontselector.h
index 9227e48..2011e43 100644
--- a/libopie/ofontselector.h
+++ b/libopie/ofontselector.h
@@ -18,62 +18,64 @@
18++=   -.     .`     .: details. 18++=   -.     .`     .: details.
19 :     =  ...= . :.=- 19 :     =  ...= . :.=-
20 -.   .:....=;==+<; You should have received a copy of the GNU 20 -.   .:....=;==+<; You should have received a copy of the GNU
21  -_. . .   )=.  = Library General Public License along with 21  -_. . .   )=.  = Library General Public License along with
22    --        :-=` this library; see the file COPYING.LIB. 22    --        :-=` this library; see the file COPYING.LIB.
23 If not, write to the Free Software Foundation, 23 If not, write to the Free Software Foundation,
24 Inc., 59 Temple Place - Suite 330, 24 Inc., 59 Temple Place - Suite 330,
25 Boston, MA 02111-1307, USA. 25 Boston, MA 02111-1307, USA.
26 26
27*/ 27*/
28 28
29#ifndef __OPIE_FONTSELECTOR_H__ 29#ifndef __OPIE_FONTSELECTOR_H__
30#define __OPIE_FONTSELECTOR_H__ 30#define __OPIE_FONTSELECTOR_H__
31 31
32#include <qwidget.h> 32#include <qwidget.h>
33#include <qpe/fontdatabase.h> 33#include <qpe/fontdatabase.h>
34 34
35class QComboBox; 35class QComboBox;
36class QListBox; 36class QListBox;
37class QFont; 37class QFont;
38 38
39class OFontSelector : public QWidget 39class OFontSelector : public QWidget
40{ 40{
41 Q_OBJECT 41 Q_OBJECT
42 42
43public: 43public:
44 OFontSelector ( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 ); 44 OFontSelector ( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 );
45 virtual ~OFontSelector ( ); 45 virtual ~OFontSelector ( );
46 46
47 bool selectedFont ( QString &family, QString &style, int &size ); 47 bool selectedFont ( QString &family, QString &style, int &size );
48 bool selectedFont ( QString &family, QString &style, int &size, QString &charset ); 48 bool selectedFont ( QString &family, QString &style, int &size, QString &charset );
49 49
50 QFont selectedFont ( );
51
50 bool setSelectedFont ( const QString &family, const QString &style, int size, const QString &charset = 0 ); 52 bool setSelectedFont ( const QString &family, const QString &style, int size, const QString &charset = 0 );
51 53
52 QString fontFamily ( ) const; 54 QString fontFamily ( ) const;
53 QString fontStyle ( ) const; 55 QString fontStyle ( ) const;
54 int fontSize ( ) const; 56 int fontSize ( ) const;
55 QString fontCharSet ( ) const; 57 QString fontCharSet ( ) const;
56 58
57signals: 59signals:
58 void fontSelected ( const QFont & ); 60 void fontSelected ( const QFont & );
59 61
60protected slots: 62protected slots:
61 virtual void fontFamilyClicked ( int ); 63 virtual void fontFamilyClicked ( int );
62 virtual void fontStyleClicked ( int ); 64 virtual void fontStyleClicked ( int );
63 virtual void fontSizeClicked ( int ); 65 virtual void fontSizeClicked ( int );
64 66
65private: 67private:
66 void loadFonts ( QListBox * ); 68 void loadFonts ( QListBox * );
67 69
68 void changeFont ( ); 70 void changeFont ( );
69 71
70private: 72private:
71 QListBox * m_font_family_list; 73 QListBox * m_font_family_list;
72 QComboBox * m_font_style_list; 74 QComboBox * m_font_style_list;
73 QComboBox * m_font_size_list; 75 QComboBox * m_font_size_list;
74 76
75 FontDatabase m_fdb; 77 FontDatabase m_fdb;
76}; 78};
77 79
78#endif 80#endif
79 81