author | sandman <sandman> | 2002-09-25 23:12:14 (UTC) |
---|---|---|
committer | sandman <sandman> | 2002-09-25 23:12:14 (UTC) |
commit | 489bc02ad26767dc45b81bf122a09ef55ac20249 (patch) (unidiff) | |
tree | b7c26f8af38e9b0146179a1618a8fdf2504490fe | |
parent | 0c6ce9f1600bf1efb7736f87fd14dd8215db851f (diff) | |
download | opie-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
-rw-r--r-- | libopie/ofontselector.cpp | 65 | ||||
-rw-r--r-- | libopie/ofontselector.h | 2 |
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 | |||
@@ -99,54 +99,63 @@ OFontSelector::OFontSelector ( QWidget *parent, const char *name, WFlags fl ) : | |||
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 | ||
111 | OFontSelector::~OFontSelector ( ) | 111 | OFontSelector::~OFontSelector ( ) |
112 | { | 112 | { |
113 | } | 113 | } |
114 | 114 | ||
115 | bool OFontSelector::setSelectedFont ( const QString &family, const QString &styleStr, int size, const QString & /*charset*/ ) | 115 | bool 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 | ||
139 | bool OFontSelector::selectedFont ( QString &family, QString &style, int &size ) | 148 | bool 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 | ||
146 | QString OFontSelector::fontFamily ( ) const | 155 | QString 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 | ||
@@ -246,32 +255,40 @@ void OFontSelector::fontFamilyClicked ( int index ) | |||
246 | } | 255 | } |
247 | changeFont ( ); | 256 | changeFont ( ); |
248 | } | 257 | } |
249 | 258 | ||
250 | void OFontSelector::fontStyleClicked ( int /*index*/ ) | 259 | void OFontSelector::fontStyleClicked ( int /*index*/ ) |
251 | { | 260 | { |
252 | changeFont ( ); | 261 | changeFont ( ); |
253 | } | 262 | } |
254 | 263 | ||
255 | void OFontSelector::fontSizeClicked ( int /*index*/ ) | 264 | void OFontSelector::fontSizeClicked ( int /*index*/ ) |
256 | { | 265 | { |
257 | changeFont ( ); | 266 | changeFont ( ); |
258 | } | 267 | } |
259 | 268 | ||
260 | void OFontSelector::changeFont ( ) | 269 | void OFontSelector::changeFont ( ) |
261 | { | 270 | { |
271 | emit fontSelected ( selectedFont ( )); | ||
272 | } | ||
273 | |||
274 | |||
275 | QFont 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 | |||
@@ -34,32 +34,34 @@ | |||
34 | 34 | ||
35 | class QComboBox; | 35 | class QComboBox; |
36 | class QListBox; | 36 | class QListBox; |
37 | class QFont; | 37 | class QFont; |
38 | 38 | ||
39 | class OFontSelector : public QWidget | 39 | class OFontSelector : public QWidget |
40 | { | 40 | { |
41 | Q_OBJECT | 41 | Q_OBJECT |
42 | 42 | ||
43 | public: | 43 | public: |
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 | ||
57 | signals: | 59 | signals: |
58 | void fontSelected ( const QFont & ); | 60 | void fontSelected ( const QFont & ); |
59 | 61 | ||
60 | protected slots: | 62 | protected 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 | ||
65 | private: | 67 | private: |