-rw-r--r-- | noncore/settings/appearance2/appearance.cpp | 174 | ||||
-rw-r--r-- | noncore/settings/appearance2/appearance.h | 17 |
2 files changed, 30 insertions, 161 deletions
diff --git a/noncore/settings/appearance2/appearance.cpp b/noncore/settings/appearance2/appearance.cpp index cf3069e..23630c5 100644 --- a/noncore/settings/appearance2/appearance.cpp +++ b/noncore/settings/appearance2/appearance.cpp @@ -47,62 +47,54 @@ #include <qlayout.h> #include <qlineedit.h> #include <qlistbox.h> #include <qmessagebox.h> #include <qmultilineedit.h> #include <qpopupmenu.h> #include <qpushbutton.h> #include <qradiobutton.h> #if QT_VERSION >= 300 #include <qstylefactory.h> #else #include <qwindowsstyle.h> #include <qpe/qpestyle.h> #include <qpe/lightstyle.h> #include <qpe/qlibrary.h> #include <qpe/styleinterface.h> #endif #include <qtabwidget.h> #include <qtoolbutton.h> #include <qvgroupbox.h> #include <qwidget.h> #include "stylelistitem.h" #include "decolistitem.h" -#include "fontlistitem.h" #include "colorlistitem.h" #include "sample.h" +#include <opie/ofontselector.h> -static int findItemCB ( QComboBox *box, const QString &str ) -{ - for ( int i = 0; i < box-> count ( ); i++ ) { - if ( box-> text ( i ) == str ) - return i; - } - return -1; -} class DefaultWindowDecoration : public WindowDecorationInterface { public: DefaultWindowDecoration() : ref(0) {} QString name() const { return "Default"; } QPixmap icon() const { return QPixmap(); } QRESULT queryInterface( const QUuid &uuid, QUnknownInterface **iface ) { *iface = 0; if ( uuid == IID_QUnknown ) *iface = this; else if ( uuid == IID_WindowDecoration ) *iface = this; if ( *iface ) (*iface)->addRef(); return QS_OK; } Q_REFCOUNT @@ -171,57 +163,48 @@ void Appearance::loadDecos ( QListBox *list ) } void Appearance::loadColors ( QListBox *list ) { list-> clear ( ); { Config config ( "qpe" ); config. setGroup ( "Appearance" ); list-> insertItem ( new ColorListItem ( tr( "Current scheme" ), config )); } QString path = QPEApplication::qpeDir ( ) + "/etc/colors/"; QStringList sl = QDir ( path ). entryList ( "*.scheme" ); for ( QStringList::Iterator it = sl. begin ( ); it != sl. end ( ); ++it ) { QString name = (*it). left ((*it). find ( ".scheme" )); Config config ( path + *it, Config::File ); config. setGroup ( "Colors" ); list-> insertItem ( new ColorListItem ( name, config )); } } -void Appearance::loadFonts ( QListBox *list ) -{ - FontDatabase fd; - QStringList f = fd. families ( ); - - for ( QStringList::ConstIterator it = f. begin ( ); it != f. end ( ); ++it ) - list-> insertItem ( new FontListItem ( *it, fd. styles ( *it ), fd. pointSizes ( *it ))); -} - QWidget *Appearance::createStyleTab ( QWidget *parent ) { Config config ( "qpe" ); config. setGroup ( "Appearance" ); QWidget* tab = new QWidget( parent, "StyleTab" ); QVBoxLayout* vertLayout = new QVBoxLayout( tab, 4, 4 ); m_style_list = new QListBox( tab, "m_style_list" ); vertLayout->addWidget( m_style_list ); m_style_settings = new QPushButton ( tr( "Settings..." ), tab ); connect ( m_style_settings, SIGNAL( clicked ( )), this, SLOT( styleSettingsClicked ( ))); vertLayout-> addWidget ( m_style_settings ); loadStyles ( m_style_list ); QString s = config. readEntry ( "Style", "Light" ); m_style_list-> setCurrentItem ( m_style_list-> findItem ( s )); m_original_style = m_style_list-> currentItem ( ); styleClicked ( m_original_style ); connect( m_style_list, SIGNAL( highlighted( int ) ), this, SLOT( styleClicked( int ) ) ); @@ -238,233 +221,197 @@ QWidget *Appearance::createDecoTab ( QWidget *parent ) QVBoxLayout* vertLayout = new QVBoxLayout( tab, 4, 4 ); m_deco_list = new QListBox( tab, "m_deco_list" ); vertLayout->addWidget( m_deco_list ); loadDecos ( m_deco_list ); QString s = config. readEntry ( "Decoration" ); m_deco_list-> setCurrentItem ( m_deco_list-> findItem ( s )); m_original_deco = m_deco_list-> currentItem ( ); if ( m_deco_list-> currentItem ( ) < 0 ) m_deco_list-> setCurrentItem ( 0 ); decoClicked ( m_original_deco ); connect( m_deco_list, SIGNAL( highlighted( int ) ), this, SLOT( decoClicked( int ) ) ); return tab; } QWidget *Appearance::createFontTab ( QWidget *parent ) { Config config ( "qpe" ); config. setGroup ( "Appearance" ); - - QWidget *tab = new QWidget( parent, "FontTab" ); - QGridLayout *gridLayout = new QGridLayout ( tab, 0, 0, 4, 4 ); - gridLayout->setRowStretch ( 4, 10 ); - - m_font_family_list = new QListBox( tab, "FontListBox" ); - gridLayout->addMultiCellWidget( m_font_family_list, 0, 4, 0, 0 ); - connect( m_font_family_list, SIGNAL( highlighted( int ) ), this, SLOT( fontFamilyClicked( int ) ) ); - - QLabel *label = new QLabel( tr( "Style" ), tab ); - gridLayout->addWidget( label, 0, 1 ); - - m_font_style_list = new QComboBox( tab, "StyleListBox" ); - connect( m_font_style_list, SIGNAL( activated( int ) ), this, SLOT( fontStyleClicked( int ) ) ); - gridLayout->addWidget( m_font_style_list, 1, 1 ); - - label = new QLabel( tr( "Size" ), tab ); - gridLayout->addWidget( label, 2, 1 ); - - m_font_size_list = new QComboBox( tab, "SizeListBox" ); - connect( m_font_size_list, SIGNAL( activated( int ) ), - this, SLOT( fontSizeClicked( int ) ) ); - gridLayout->addWidget( m_font_size_list, 3, 1 ); - - loadFonts ( m_font_family_list ); - QString familyStr = config.readEntry( "FontFamily", "Helvetica" ); QString styleStr = config.readEntry( "FontStyle", "Regular" ); - QString sizeStr = config.readEntry( "FontSize", "10" ); + int size = config.readNumEntry( "FontSize", 10 ); - m_font_family_list-> setCurrentItem ( m_font_family_list-> findItem ( familyStr )); - m_original_fontfamily = m_font_family_list-> currentItem ( ); - if ( m_font_family_list-> currentItem ( ) < 0 ) - m_font_family_list-> setCurrentItem ( 0 ); + m_fontselect = new OFontSelector ( parent, "FontTab" ); + m_fontselect-> setSelectedFont ( familyStr, styleStr, size ); - fontFamilyClicked ( m_original_fontfamily ); + connect( m_fontselect, SIGNAL( fontSelected ( const QFont & )), + this, SLOT( fontClicked ( const QFont & ))); - m_font_style_list-> setCurrentItem ( findItemCB ( m_font_style_list, styleStr )); - m_original_fontstyle = m_font_style_list-> currentItem ( ); - fontStyleClicked ( m_original_fontstyle ); - - m_font_size_list-> setCurrentItem ( findItemCB ( m_font_size_list, sizeStr )); - m_original_fontsize = m_font_size_list-> currentItem ( ); - fontSizeClicked ( m_original_fontsize ); - - return tab; + return m_fontselect; } QWidget *Appearance::createColorTab ( QWidget *parent ) { Config config ( "qpe" ); config. setGroup ( "Appearance" ); QWidget *tab = new QWidget( parent, "ColorTab" ); QGridLayout *gridLayout = new QGridLayout( tab, 0, 0, 4, 4 ); gridLayout->setRowStretch ( 3, 10 ); m_color_list = new QListBox ( tab ); gridLayout->addMultiCellWidget ( m_color_list, 0, 3, 0, 0 ); connect( m_color_list, SIGNAL( highlighted( int ) ), this, SLOT( colorClicked( int ) ) ); loadColors ( m_color_list ); m_color_list-> setCurrentItem ( 0 ); QPushButton* tempButton = new QPushButton( tab, "editSchemeButton" ); tempButton->setText( tr( "Edit..." ) ); connect( tempButton, SIGNAL( clicked() ), this, SLOT( editSchemeClicked() ) ); gridLayout->addWidget( tempButton, 0, 1 ); tempButton = new QPushButton( tab, "deleteSchemeButton" ); tempButton->setText( tr( "Delete" ) ); connect( tempButton, SIGNAL( clicked() ), this, SLOT( deleteSchemeClicked() ) ); gridLayout->addWidget( tempButton, 1, 1 ); tempButton = new QPushButton( tab, "saveSchemeButton" ); tempButton->setText( tr( "Save" ) ); connect( tempButton, SIGNAL( clicked() ), this, SLOT( saveSchemeClicked() ) ); gridLayout->addWidget( tempButton, 2, 1 ); return tab; } QWidget *Appearance::createGuiTab ( QWidget *parent ) { Config config ( "qpe" ); config. setGroup ( "Appearance" ); QWidget *tab = new QWidget( parent, "AdvancedTab" ); QVBoxLayout *vertLayout = new QVBoxLayout( tab, 4, 4 ); QGridLayout* gridLayout = new QGridLayout ( vertLayout ); - int style = config. readNumEntry ( "TabStyle", 2 ); + int style = config. readNumEntry ( "TabStyle", 2 ) - 1; + bool tabtop = ( config. readEntry ( "TabPosition", "Top" ) == "Top" ); QLabel* label = new QLabel( tr( "Tab style:" ), tab ); gridLayout-> addWidget ( label, 0, 0 ); QButtonGroup* btngrp = new QButtonGroup( tab, "buttongroup" ); btngrp-> hide ( ); btngrp-> setExclusive ( true ); m_tabstyle_list = new QComboBox ( false, tab, "tabstyle" ); m_tabstyle_list-> insertItem ( tr( "Tabs" )); m_tabstyle_list-> insertItem ( tr( "Tabs w/icons" )); m_tabstyle_list-> insertItem ( tr( "Drop down list" )); m_tabstyle_list-> insertItem ( tr( "Drop down list w/icons" )); - m_tabstyle_list-> setCurrentItem ( style & 0xff ); + m_tabstyle_list-> setCurrentItem ( style ); gridLayout-> addMultiCellWidget ( m_tabstyle_list, 0, 0, 1, 2 ); m_tabstyle_top = new QRadioButton( tr( "Top" ), tab, "tabpostop" ); btngrp-> insert ( m_tabstyle_top ); gridLayout-> addWidget( m_tabstyle_top, 1, 1 ); m_tabstyle_bottom = new QRadioButton( tr( "Bottom" ), tab, "tabposbottom" ); - btngrp-> insert ( m_tabstyle_top ); + btngrp-> insert ( m_tabstyle_bottom ); gridLayout-> addWidget( m_tabstyle_bottom, 1, 2 ); - bool tabtop = ( style & 0xff00 ) == 0; m_tabstyle_top-> setChecked ( tabtop ); m_tabstyle_bottom-> setChecked ( !tabtop ); m_original_tabstyle = style; + m_original_tabpos = tabtop; return tab; } Appearance::Appearance( QWidget* parent, const char* name, WFlags ) : QDialog ( parent, name, true ) { setCaption( tr( "Appearance" ) ); Config config( "qpe" ); config.setGroup( "Appearance" ); QVBoxLayout *top = new QVBoxLayout ( this, 4, 4 ); m_sample = new SampleWindow ( this ); m_sample-> setDecoration ( new DefaultWindowDecoration ( )); OTabWidget* tw = new OTabWidget ( this, "tabwidget", OTabWidget::Global, OTabWidget::Bottom ); QWidget *styletab; tw-> addTab ( styletab = createStyleTab ( tw ), "appearance/styletabicon.png", tr( "Style" )); tw-> addTab ( createFontTab ( tw ), "appearance/fonttabicon.png", tr( "Font" )); tw-> addTab ( createColorTab ( tw ), "appearance/colorstabicon.png", tr( "Colors" ) ); tw-> addTab ( createDecoTab ( tw ), "appearance/styletabicon.png", tr( "Windows" ) ); tw-> addTab ( createGuiTab ( tw ), "appearance/backgroundtabicon.png", tr( "Gui" ) ); top-> addWidget ( tw, 10 ); top-> addWidget ( m_sample, 1 ); tw-> setCurrentTab ( styletab ); } Appearance::~Appearance() { } void Appearance::accept ( ) { Config config("qpe"); config.setGroup( "Appearance" ); - int newstyle = m_style_list-> currentItem ( ); - int newtabstyle = ( m_tabstyle_list-> currentItem ( ) & 0xff ) | \ - ( m_tabstyle_top-> isChecked ( ) ? 0x000 : 0x100 ); - int newfontfamily = m_font_family_list-> currentItem ( ); - int newfontstyle = m_font_style_list-> currentItem ( ); - int newfontsize = m_font_size_list-> currentItem ( ); + int newtabstyle = m_tabstyle_list-> currentItem ( ); + bool newtabpos = m_tabstyle_top-> isChecked ( ); if ( m_style_changed ) { - StyleListItem *item = (StyleListItem *) m_style_list-> item ( newstyle ); + StyleListItem *item = (StyleListItem *) m_style_list-> item ( m_style_list-> currentItem ( )); if ( item ) config.writeEntry( "Style", item-> key ( )); } - if ( newtabstyle != m_original_tabstyle ) { - config. writeEntry ( "TabStyle", newtabstyle ); + + if (( newtabstyle != m_original_tabstyle ) || ( newtabpos != m_original_tabpos )) { + config. writeEntry ( "TabStyle", newtabstyle + 1 ); + config. writeEntry ( "TabPosition", newtabpos ? "Top" : "Bottom" ); } if ( m_font_changed ) { - config.writeEntry( "FontFamily", m_font_family_list-> text ( newfontfamily )); - config.writeEntry( "FontStyle", m_font_style_list-> text ( newfontstyle )); - config.writeEntry( "FontSize", m_font_size_list-> text ( newfontsize )); + config. writeEntry ( "FontFamily", m_fontselect-> fontFamily ( )); + config. writeEntry ( "FontStyle", m_fontselect-> fontStyle ( )); + config. writeEntry ( "FontSize", m_fontselect-> fontSize ( )); } if ( m_color_changed ) { ColorListItem *item = (ColorListItem *) m_color_list-> item ( m_color_list-> currentItem ( )); if ( item ) item-> save ( config ); } config. write ( ); // need to flush the config info first Global::applyStyle ( ); if ( QMessageBox::warning ( this, tr( "Restart" ), tr( "Do you want to restart Opie now?" ), tr( "Yes" ), tr( "No" ), 0, 0, 1 ) == 0 ) { QCopEnvelope e( "QPE/System", "restart()" ); } QDialog::accept ( ); } void Appearance::done ( int r ) { QDialog::done ( r ); @@ -500,123 +447,52 @@ void Appearance::styleSettingsClicked ( ) d-> showMaximized ( ); bool accepted = ( d-> exec ( ) == QDialog::Accepted ); if ( item-> setSettings ( accepted )) m_style_changed = true; } delete d; } } void Appearance::decoClicked ( int index ) { DecoListItem *dli = (DecoListItem *) m_deco_list-> item ( index ); if ( m_sample ) { if ( dli && dli-> interface ( )) m_sample-> setDecoration ( dli-> interface ( )); else m_sample-> setDecoration ( new DefaultWindowDecoration ( )); } m_deco_changed |= ( index != m_original_deco ); } -void Appearance::fontFamilyClicked ( int index ) +void Appearance::fontClicked ( const QFont &f ) { - QString oldstyle = m_font_style_list-> currentText ( ); - QString oldsize = m_font_size_list-> currentText ( ); - - FontListItem *fli = (FontListItem *) m_font_family_list-> item ( index ); - - m_font_style_list-> clear ( ); - m_font_style_list-> insertStringList ( fli-> styles ( )); - m_font_style_list-> setEnabled ( !fli-> styles ( ). isEmpty ( )); - - int i; - - i = findItemCB ( m_font_style_list, oldstyle ); - if ( i < 0 ) - i = findItemCB ( m_font_style_list, "Regular" ); - if (( i < 0 ) && ( m_font_style_list-> count ( ) > 0 )) - i = 0; - - if ( i >= 0 ) { - m_font_style_list-> setCurrentItem ( i ); - fontStyleClicked ( i ); - } - - m_font_size_list-> clear ( ); - QValueList<int> sl = fli-> sizes ( ); - - for ( QValueList<int>::Iterator it = sl. begin ( ); it != sl. end ( ); ++it ) - m_font_size_list-> insertItem ( QString::number ( *it )); - - i = findItemCB ( m_font_size_list, oldsize ); - if ( i < 0 ) - i = findItemCB ( m_font_size_list, "10" ); - if (( i < 0 ) && ( m_font_size_list-> count ( ) > 0 )) - i = 0; - - if ( i >= 0 ) { - m_font_size_list-> setCurrentItem ( i ); - fontSizeClicked ( i ); - } - changeText ( ); - - m_font_changed |= ( index != m_original_fontfamily ); -} - -void Appearance::fontStyleClicked ( int index ) -{ - changeText ( ); - - m_font_changed |= ( index != m_original_fontstyle ); -} - -void Appearance::fontSizeClicked ( int index ) -{ - changeText ( ); - - m_font_changed |= ( index != m_original_fontsize ); -} - -void Appearance::changeText ( ) -{ - 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 ) { - FontDatabase fdb; - - m_sample-> setFont ( fdb. font ( fli-> family ( ), \ - fst >= 0 ? fli-> styles ( ) [fst] : QString::null, \ - fsi >= 0 ? fli-> sizes ( ) [fsi] : 10, \ - fdb. charSets ( fli-> family ( )) [0] )); - } + m_font_changed |= ( f != m_sample-> font ( )); + m_sample-> setFont ( f ); } void Appearance::colorClicked ( int index ) { ColorListItem *item = (ColorListItem *) m_color_list-> item ( index ); if ( item ) m_sample-> setPalette ( item-> palette ( )); m_color_changed |= ( item-> palette ( ) != qApp-> palette ( )); } void Appearance::editSchemeClicked ( ) { ColorListItem *item = (ColorListItem *) m_color_list-> item ( m_color_list-> currentItem ( )); int cnt = 0; QString controlLabel [QColorGroup::NColorRoles]; QString controlColor [QColorGroup::NColorRoles]; for ( QColorGroup::ColorRole role = (QColorGroup::ColorRole) 0; role != QColorGroup::NColorRoles; ((int) role )++ ) { QColor col = item-> color ( role ); diff --git a/noncore/settings/appearance2/appearance.h b/noncore/settings/appearance2/appearance.h index ce0d4b0..4a86e57 100644 --- a/noncore/settings/appearance2/appearance.h +++ b/noncore/settings/appearance2/appearance.h @@ -19,98 +19,91 @@ *********************************************************************** ** ** Enhancements by: Dan Williams, <williamsdr@acm.org> ** **********************************************************************/ #ifndef APPEARANCESETTINGS_H #define APPEARANCESETTINGS_H #include <qpe/fontdatabase.h> #include <qmainwindow.h> #include <qdialog.h> class QCheckBox; class QComboBox; class QLabel; class QLineEdit; class QListBox; class QMultiLineEdit; class QPushButton; class QRadioButton; class QToolButton; class SampleWindow; +class OFontSelector; class Appearance : public QDialog { Q_OBJECT public: Appearance( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 ); ~Appearance(); protected: virtual void accept ( ); virtual void done ( int r ); protected slots: void styleClicked ( int ); void styleSettingsClicked ( ); void decoClicked ( int ); - void fontFamilyClicked ( int ); - void fontStyleClicked ( int ); - void fontSizeClicked ( int ); + void fontClicked ( const QFont & ); void colorClicked ( int ); -// void tabStyleClicked ( int ); void editSchemeClicked(); void saveSchemeClicked(); void deleteSchemeClicked(); private: void loadStyles ( QListBox * ); void loadDecos ( QListBox * ); - void loadFonts ( QListBox * ); void loadColors ( QListBox * ); void changeText(); QWidget *createStyleTab ( QWidget *parent ); QWidget *createDecoTab ( QWidget *parent ); QWidget *createFontTab ( QWidget *parent ); QWidget *createColorTab ( QWidget *parent ); QWidget *createGuiTab ( QWidget *parent ); private: bool m_style_changed; bool m_font_changed; bool m_scheme_changed; bool m_deco_changed; bool m_color_changed; int m_original_style; int m_original_deco; - int m_original_fontfamily; - int m_original_fontstyle; - int m_original_fontsize; int m_original_tabstyle; + bool m_original_tabpos; QListBox * m_style_list; QPushButton * m_style_settings; QListBox * m_deco_list; QListBox * m_color_list; - QListBox * m_font_family_list; - QComboBox * m_font_style_list; - QComboBox * m_font_size_list; + OFontSelector *m_fontselect; SampleWindow *m_sample; QComboBox * m_tabstyle_list; QRadioButton *m_tabstyle_top; QRadioButton *m_tabstyle_bottom; }; -#endif // APPEARANCESETTINGS_H +#endif |