-rw-r--r-- | core/applets/rotateapplet/rotate.cpp | 25 | ||||
-rw-r--r-- | noncore/settings/appearance2/appearance.cpp | 27 |
2 files changed, 33 insertions, 19 deletions
diff --git a/core/applets/rotateapplet/rotate.cpp b/core/applets/rotateapplet/rotate.cpp index 04270f1..62567ed 100644 --- a/core/applets/rotateapplet/rotate.cpp +++ b/core/applets/rotateapplet/rotate.cpp @@ -1,167 +1,174 @@ /* =. This file is part of the OPIE Project .=l. Copyright (c) 2003 Maximilian Reiss <harlekin@handhelds.org> .>+-= _;:, .> :=|. This library is free software; you can .> <, > . <= redistribute it and/or modify it under :=1 )Y*s>-.-- : the terms of the GNU Library General Public .="- .-=="i, .._ License as published by the Free Software - . .-<_> .<> Foundation; either version 2 of the License, ._= =} : or (at your option) any later version. .%+i> _;_. .i_,=:_. -<s. This library is distributed in the hope that + . -:. = it will be useful, but WITHOUT ANY WARRANTY; : .. .:, . . . without even the implied warranty of =_ + =;=| MERCHANTABILITY or FITNESS FOR A _.=:. : :=>: PARTICULAR PURPOSE. See the GNU ..}^=.= = ; Library General Public License for more ++= -. . .: details. : = ...= . :.=- -. .:....=;==+<; You should have received a copy of the GNU -_. . . )=. = Library General Public License along with -- :-= this library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include <qpe/resource.h> #include <qpe/qcopenvelope_qws.h> #include <qpe/qpeapplication.h> #include <qpe/config.h> #include <qiconset.h> #include <qpopupmenu.h> +#include <opie/odevice.h> + #include "rotate.h" +using namespace Opie; + RotateApplet::RotateApplet ( ) : QObject ( 0, "RotateApplet" ), ref ( 0 ), m_flipped( false ) { #if defined(Q_WS_QWS) #if !defined(QT_NO_COP) QCopChannel *rotateChannel = new QCopChannel( "QPE/Rotation" , this ); connect ( rotateChannel, SIGNAL( received( const QCString &, const QByteArray &) ), this, SLOT ( channelReceived( const QCString &, const QByteArray &) ) ); #endif #endif } RotateApplet::~RotateApplet ( ) { } /** * Qcop receive method. */ void RotateApplet::channelReceived( const QCString &msg, const QByteArray & data ) { QDataStream stream( data, IO_ReadOnly ); if ( msg == "flip()" ) { activated ( ); } } int RotateApplet::position ( ) const { return 3; } QString RotateApplet::name ( ) const { return tr( "Rotate shortcut" ); } QString RotateApplet::text ( ) const { return tr( "Rotate" ); } /*QString RotateApplet::tr( const char* s ) const { return qApp->translate( "RotateApplet", s, 0 ); } QString RotateApplet::tr( const char* s, const char* p ) const { return qApp->translate( "RotateApplet", s, p ); } */ QIconSet RotateApplet::icon ( ) const { QPixmap pix; QImage img = Resource::loadImage ( "Rotation" ); if ( !img. isNull ( )) pix. convertFromImage ( img. smoothScale ( 14, 14 )); return pix; } QPopupMenu *RotateApplet::popup ( QWidget * ) const { return 0; } void RotateApplet::activated ( ) { int defaultRotation = QPEApplication::defaultRotation(); - - int newRotation; + int newRotation = defaultRotation; Config cfg( "qpe" ); cfg.setGroup( "Appearance" ); - // 0 -> 90° clockwise, 1 -> 90° counterclockwise - int rotDirection = cfg.readNumEntry( "rotatedir", 0 ); + int rotDirection = cfg.readNumEntry( "rotatedir" ); + ODirection rot = CW; + + if (rotDirection == -1) { + rot = ODevice::inst ( )-> direction ( ); + } else { + rot = (ODirection)rotDirection; + } // hide inputs methods before rotation QCopEnvelope en( "QPE/TaskBar", "hideInputMethod()" ); if ( m_flipped ) { // if flipped, flip back to the original state, // regardless of rotation direction newRotation = defaultRotation; } else { - if ( rotDirection == 1 ) { + if ( rot == CCW ) { newRotation = ( defaultRotation + 90 ) % 360; - } else if ( rotDirection == 0 ) { + } else if ( rot == CW ) { newRotation = ( defaultRotation + 270 ) % 360; - } else { + } else if ( rot == Flip ) { newRotation = ( defaultRotation + 180 ) % 360; } } QCopEnvelope env( "QPE/System", "setCurrentRotation(int)" ); env << newRotation; m_flipped = !m_flipped; } QRESULT RotateApplet::queryInterface ( const QUuid &uuid, QUnknownInterface **iface ) { *iface = 0; if ( uuid == IID_QUnknown ) *iface = this; else if ( uuid == IID_MenuApplet ) *iface = this; if ( *iface ) (*iface)-> addRef ( ); return QS_OK; } Q_EXPORT_INTERFACE( ) { Q_CREATE_INSTANCE( RotateApplet ) } - - diff --git a/noncore/settings/appearance2/appearance.cpp b/noncore/settings/appearance2/appearance.cpp index 83532de..c376ec7 100644 --- a/noncore/settings/appearance2/appearance.cpp +++ b/noncore/settings/appearance2/appearance.cpp @@ -336,299 +336,306 @@ QWidget *Appearance::createAdvancedTab ( QWidget *parent, Config &cfg ) connect ( tb, SIGNAL( clicked ( )), this, SLOT( upExcept ( ))); QWhatsThis::add( tb, tr( "Click here to move the currently selected application up in the list." ) ); tb = new QToolButton ( tab ); tb-> setIconSet ( Resource::loadIconSet ( "down" )); tb-> setFocusPolicy ( QWidget::StrongFocus ); lay-> addWidget ( tb, 5, 1 ); connect ( tb, SIGNAL( clicked ( )), this, SLOT( downExcept ( ))); QWhatsThis::add( tb, tr( "Click here to move the currently selected application down in the list." ) ); lay-> setRowStretch ( 6, 10 ); lay-> setColStretch ( 0, 10 ); QStringList sl = cfg. readListEntry ( "NoStyle", ';' ); QListViewItem *lvit = 0; for ( QStringList::Iterator it = sl. begin ( ); it != sl. end ( ); ++it ) { int fl = ( *it ). left ( 1 ). toInt ( 0, 32 ); lvit = new ExceptListItem ( m_except, lvit, ( *it ). mid ( 1 ), fl & 0x01, fl & 0x02, fl & 0x04 ); } vertLayout-> addSpacing ( 3 ); QFrame *f = new QFrame ( tab ); f-> setFrameStyle ( QFrame::HLine | QFrame::Sunken ); vertLayout-> addWidget ( f ); vertLayout-> addSpacing ( 3 ); QGridLayout* gridLayout = new QGridLayout ( vertLayout, 0, 0, 3, 0 ); int style = cfg. readNumEntry ( "TabStyle", 2 ) - 1; bool tabtop = ( cfg. readEntry ( "TabPosition", "Top" ) == "Top" ); QLabel* label = new QLabel( tr( "Tab style:" ), tab ); gridLayout-> addWidget ( label, 0, 0 ); QWhatsThis::add( label, tr( "Click here to select a desired style for tabbed dialogs (such as this application). The styles available are:\n\n1. Tabs - normal tabs with text labels only\n2. Tabs w/icons - tabs with icons for each tab, text label only appears on current tab\n3. Drop down list - a vertical listing of tabs\n4. Drop down list w/icons - a vertical listing of tabs with icons" ) ); 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 ); gridLayout-> addMultiCellWidget ( m_tabstyle_list, 0, 0, 1, 2 ); QWhatsThis::add( m_tabstyle_list, tr( "Click here to select a desired style for tabbed dialogs (such as this application). The styles available are:\n\n1. Tabs - normal tabs with text labels only\n2. Tabs w/icons - tabs with icons for each tab, text label only appears on current tab\n3. Drop down list - a vertical listing of tabs\n4. Drop down list w/icons - a vertical listing of tabs with icons" ) ); m_tabstyle_top = new QRadioButton( tr( "Top" ), tab, "tabpostop" ); btngrp-> insert ( m_tabstyle_top ); gridLayout-> addWidget( m_tabstyle_top, 1, 1 ); QWhatsThis::add( m_tabstyle_top, tr( "Click here so that tabs appear at the top of the window." ) ); m_tabstyle_bottom = new QRadioButton( tr( "Bottom" ), tab, "tabposbottom" ); btngrp-> insert ( m_tabstyle_bottom ); gridLayout-> addWidget( m_tabstyle_bottom, 1, 2 ); QWhatsThis::add( m_tabstyle_bottom, tr( "Click here so that tabs appear at the bottom of the window." ) ); m_tabstyle_top-> setChecked ( tabtop ); m_tabstyle_bottom-> setChecked ( !tabtop ); m_original_tabstyle = style; m_original_tabpos = tabtop; vertLayout-> addSpacing ( 3 ); QHBoxLayout *rotLay = new QHBoxLayout ( vertLayout, 3 ); QLabel* rotlabel = new QLabel( tr( "Rotation direction:" ), tab ); m_rotdir_cw = new QRadioButton( tab, "rotdir_cw" ); QPixmap cw1 = Resource::loadIconSet("redo"). pixmap( ); m_rotdir_ccw = new QRadioButton( tab, "rotdir_ccw" ); QImage ccwImage = cw1. convertToImage( ). mirror( 1, 0 ); QPixmap ccw1; m_rotdir_flip = new QRadioButton( tab, "rotdir_flip" ); QPixmap flip1 = Resource::loadIconSet("pass"). pixmap( ); QButtonGroup* rotbtngrp = new QButtonGroup( tab, "rotbuttongroup" ); rotbtngrp-> hide ( ); rotbtngrp-> setExclusive ( true ); rotbtngrp-> insert ( m_rotdir_cw ); rotbtngrp-> insert ( m_rotdir_ccw ); rotbtngrp-> insert ( m_rotdir_flip ); ccw1. convertFromImage( ccwImage ); m_rotdir_cw-> setPixmap( cw1 ); m_rotdir_ccw-> setPixmap( ccw1 ); m_rotdir_flip-> setPixmap( flip1 ); rotLay-> addWidget ( rotlabel, 0 ); rotLay-> addWidget ( m_rotdir_cw, 0 ); rotLay-> addWidget ( m_rotdir_ccw, 0 ); rotLay-> addWidget ( m_rotdir_flip, 0 ); - int rot = cfg. readNumEntry ( "rotatedir", 0 ); - m_rotdir_cw-> setChecked ( rot == 0 ); - m_rotdir_ccw-> setChecked ( rot == 1 ); - m_rotdir_flip-> setChecked ( rot == 2 ); + int rotDirection = cfg.readNumEntry( "rotatedir" ); + ODirection rot = CW; + + if (rotDirection == -1) { + rot = ODevice::inst ( )-> direction ( ); + } else { + rot = (ODirection)rotDirection; + } + + m_rotdir_cw-> setChecked ( rot == CW ); + m_rotdir_ccw-> setChecked ( rot == CCW ); + m_rotdir_flip-> setChecked ( rot == Flip ); return tab; } Appearance::Appearance( QWidget* parent, const char* name, WFlags ) : QDialog ( parent, name, true, WStyle_ContextHelp ) { setCaption( tr( "Appearance Settings" ) ); Config config( "qpe" ); config.setGroup( "Appearance" ); QVBoxLayout *top = new QVBoxLayout ( this, 3, 3 ); m_sample = new SampleWindow ( this ); m_sample-> setDecoration ( new DefaultWindowDecoration ( )); QWhatsThis::add( m_sample, tr( "This is a preview window. Look here to see your new appearance as options are changed." ) ); OTabWidget* tw = new OTabWidget ( this, "tabwidget", OTabWidget::Global, OTabWidget::Bottom ); QWidget *styletab; m_color_list = 0; tw-> addTab ( styletab = createStyleTab ( tw, config ), "appearance", tr( "Style" )); tw-> addTab ( createFontTab ( tw, config ), "font", tr( "Font" )); tw-> addTab ( createColorTab ( tw, config ), "appearance/color", tr( "Colors" ) ); tw-> addTab ( createDecoTab ( tw, config ), "appearance/deco", tr( "Windows" ) ); tw-> addTab ( m_advtab = createAdvancedTab ( tw, config ), "SettingsIcon", tr( "Advanced" ) ); top-> addWidget ( tw, 10 ); top-> addWidget ( m_sample, 1 ); tw-> setCurrentTab ( styletab ); connect ( tw, SIGNAL( currentChanged ( QWidget * )), this, SLOT( tabChanged ( QWidget * ))); m_style_changed = m_font_changed = m_color_changed = m_deco_changed = false; } Appearance::~Appearance() { } void Appearance::tabChanged ( QWidget *w ) { if ( w == m_advtab ) { m_sample-> hide ( ); updateGeometry ( ); // shouldn't be necessary ... } else m_sample-> show ( ); } void Appearance::accept ( ) { bool newtabpos = m_tabstyle_top-> isChecked ( ); int newtabstyle = m_tabstyle_list-> currentItem ( ); Config config ( "qpe" ); config. setGroup ( "Appearance" ); if ( m_style_changed ) { StyleListItem *item = (StyleListItem *) m_style_list-> item ( m_style_list-> currentItem ( )); if ( item ) config.writeEntry( "Style", item-> key ( )); } if ( m_deco_changed ) { DecoListItem *item = (DecoListItem *) m_deco_list-> item ( m_deco_list-> currentItem ( )); if ( item ) config.writeEntry( "Decoration", item-> key ( )); } 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_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 ); } - bool is_rotdir_ccw = m_rotdir_ccw-> isChecked ( ); - int rotval; + ODirection rot; if (m_rotdir_ccw-> isChecked ( )) { - rotval = 1; + rot = CCW; } else if (m_rotdir_cw-> isChecked ( )) { - rotval = 0; + rot = CW; } else { - rotval = 2; + rot = Flip; } - config. writeEntry ( "rotatedir", rotval ); + config. writeEntry ( "rotatedir", (int)rot ); m_except-> setFocus ( ); // if the focus was on the embedded line-edit, we have to move it away first, so the contents are updated QStringList sl; QString exceptstr; for ( ExceptListItem *it = (ExceptListItem *) m_except-> firstChild ( ); it; it = (ExceptListItem *) it-> nextSibling ( )) { int fl = 0; fl |= ( it-> noStyle ( ) ? 0x01 : 0 ); fl |= ( it-> noFont ( ) ? 0x02 : 0 ); fl |= ( it-> noDeco ( ) ? 0x04 : 0 ); exceptstr = QString::number ( fl, 32 ); exceptstr.append( it-> pattern ( )); sl << exceptstr; } config. writeEntry ( "NoStyle", sl, ';' ); config. writeEntry ( "ForceStyle", m_force-> isChecked ( )); config. write ( ); // need to flush the config info first Global::applyStyle ( ); if ( QMessageBox::warning ( this, tr( "Restart" ), tr( "Do you want to restart %1 now?" ). arg ( ODevice::inst ( )-> system ( ) == System_Zaurus ? "Qtopia" : "Opie" ), tr( "Yes" ), tr( "No" ), 0, 0, 1 ) == 0 ) { QCopEnvelope e( "QPE/System", "restart()" ); } QDialog::accept ( ); } void Appearance::done ( int r ) { QDialog::done ( r ); close ( ); } void Appearance::styleClicked ( int index ) { StyleListItem *sli = (StyleListItem *) m_style_list-> item ( index ); m_style_settings-> setEnabled ( sli ? sli-> hasSettings ( ) : false ); if ( m_sample && sli && sli-> style ( )) { int ci = m_color_list ? m_color_list-> currentItem ( ) : -1; m_sample-> setStyle2 ( sli-> style ( ), ci < 0 ? palette ( ) : ((ColorListItem *) m_color_list-> item ( ci ))-> palette ( )); } m_style_changed |= ( index != m_original_style ); } void Appearance::styleSettingsClicked ( ) { StyleListItem *item = (StyleListItem *) m_style_list-> item ( m_style_list-> currentItem ( )); if ( item && item-> hasSettings ( )) { QDialog *d = new QDialog ( this, "SETTINGS-DLG", true ); QVBoxLayout *vbox = new QVBoxLayout ( d, 3, 0 ); QWidget *w = item-> settings ( d ); if ( w ) { vbox-> addWidget ( w ); d-> setCaption ( w-> caption ( )); 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_sample-> repaint ( ); } m_deco_changed |= ( index != m_original_deco ); } void Appearance::fontClicked ( const QFont &f ) { m_font_changed |= ( f != m_sample-> font ( )); m_sample-> setFont ( f ); } void Appearance::colorClicked ( int index ) { ColorListItem *item = (ColorListItem *) m_color_list-> item ( index ); |