-rw-r--r-- | libopie/ofontselector.cpp | 63 |
1 files changed, 40 insertions, 23 deletions
diff --git a/libopie/ofontselector.cpp b/libopie/ofontselector.cpp index f6fd541..d32aeb4 100644 --- a/libopie/ofontselector.cpp +++ b/libopie/ofontselector.cpp @@ -107,38 +107,47 @@ OFontSelector::OFontSelector ( QWidget *parent, const char *name, WFlags fl ) : loadFonts ( m_font_family_list ); } OFontSelector::~OFontSelector ( ) { } -bool OFontSelector::setSelectedFont ( const QString &family, const QString &styleStr, int size, const QString & /*charset*/ ) +bool OFontSelector::setSelectedFont ( const QString &familyStr, const QString &styleStr, int sizeVal, const QString & /*charset*/ ) { - if ( size <= 0 ) - size = 10; - QString familyStr = family. isEmpty ( ) ? QString ( "Helvetica" ) : family; - QString sizeStr = QString::number ( size ); - - m_font_family_list-> setCurrentItem ( m_font_family_list-> findItem ( familyStr )); - if ( m_font_family_list-> currentItem ( ) < 0 ) - m_font_family_list-> setCurrentItem ( 0 ); - - fontFamilyClicked ( m_font_family_list-> currentItem ( )); - - m_font_style_list-> setCurrentItem ( findItemCB ( m_font_style_list, styleStr )); - fontStyleClicked ( m_font_style_list-> currentItem ( )); - - m_font_size_list-> setCurrentItem ( findItemCB ( m_font_size_list, sizeStr )); - fontSizeClicked ( m_font_size_list-> currentItem ( )); - - return (( m_font_family_list-> currentItem ( ) >= 0 ) && - ( m_font_style_list-> currentItem ( ) >= 0 ) && - ( m_font_size_list-> currentItem ( ) >= 0 )); + QString sizeStr = QString::number ( sizeVal ); + + QListBoxItem *family = m_font_family_list-> findItem ( familyStr ); + if ( !family ) + family = m_font_family_list-> findItem ( "Helvetica" ); + if ( !family ) + family = m_font_family_list-> firstItem ( ); + m_font_family_list-> setCurrentItem ( family ); + fontFamilyClicked ( m_font_family_list-> index ( family )); + + int style = findItemCB ( m_font_style_list, styleStr ); + if ( style < 0 ) + style = findItemCB ( m_font_style_list, "Regular" ); + if ( style < 0 && m_font_style_list-> count ( ) > 0 ) + style = 0; + m_font_style_list-> setCurrentItem ( style ); + fontStyleClicked ( style ); + + int size = findItemCB ( m_font_size_list, sizeStr ); + if ( size < 0 ) + size = findItemCB ( m_font_size_list, "10" ); + if ( size < 0 && m_font_size_list-> count ( ) > 0 ) + size = 0; + m_font_size_list-> setCurrentItem ( size ); + fontSizeClicked ( size ); + + return (( family ) && + ( style >= 0 ) && + ( size >= 0 )); } bool OFontSelector::selectedFont ( QString &family, QString &style, int &size ) { QString dummy; return selectedFont ( family, style, size, dummy ); } @@ -254,24 +263,32 @@ void OFontSelector::fontStyleClicked ( int /*index*/ ) void OFontSelector::fontSizeClicked ( int /*index*/ ) { changeFont ( ); } void OFontSelector::changeFont ( ) { + emit fontSelected ( selectedFont ( )); +} + + +QFont OFontSelector::selectedFont ( ) +{ int ffa = m_font_family_list-> currentItem ( ); int fst = m_font_style_list-> currentItem ( ); int fsi = m_font_size_list-> currentItem ( ); FontListItem *fli = (FontListItem *) m_font_family_list-> item ( ffa ); if ( fli ) { - emit fontSelected ( m_fdb. font ( fli-> family ( ), \ + return m_fdb. font ( fli-> family ( ), \ fst >= 0 ? fli-> styles ( ) [fst] : QString::null, \ fsi >= 0 ? fli-> sizes ( ) [fsi] : 10, \ - m_fdb. charSets ( fli-> family ( )) [0] )); + m_fdb. charSets ( fli-> family ( )) [0] ); } + else + return QFont ( ); }
\ No newline at end of file |