author | zecke <zecke> | 2004-02-05 16:44:20 (UTC) |
---|---|---|
committer | zecke <zecke> | 2004-02-05 16:44:20 (UTC) |
commit | 4c4ed7176231558d01aeca2eb705fc6810ec7766 (patch) (side-by-side diff) | |
tree | d923fd4ca70d6db917a0e154a5a642a444cab87e | |
parent | ef8ece225a663f0ff1262989085fc214500beebe (diff) | |
download | opie-4c4ed7176231558d01aeca2eb705fc6810ec7766.zip opie-4c4ed7176231558d01aeca2eb705fc6810ec7766.tar.gz opie-4c4ed7176231558d01aeca2eb705fc6810ec7766.tar.bz2 |
Stuff can be broken if you really want it... or because only root can open /dev/console...
Anyway have a mutable QPopupMenu in the class and remove unsigned long ref
as we don't need it
-rw-r--r-- | core/applets/vtapplet/vt.cpp | 18 | ||||
-rw-r--r-- | core/applets/vtapplet/vt.h | 4 |
2 files changed, 10 insertions, 12 deletions
diff --git a/core/applets/vtapplet/vt.cpp b/core/applets/vtapplet/vt.cpp index cdd3c97..881eb41 100644 --- a/core/applets/vtapplet/vt.cpp +++ b/core/applets/vtapplet/vt.cpp @@ -1,163 +1,163 @@ /********************************************************************** ** Copyright (C) 2003 Michael 'Mickey' Lauer. All rights reserved. ** ** Contact me @ mickeyl@handhelds.org ** ** This file may be distributed and/or modified under the terms of the ** GNU General Public License version 2 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file. ** ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ** **********************************************************************/ #include <qpe/resource.h> #include <qpe/qcopenvelope_qws.h> #include <qapplication.h> #include <qiconset.h> #include <qpopupmenu.h> #include <fcntl.h> #include <unistd.h> #include <sys/types.h> #include <sys/stat.h> #include <sys/ioctl.h> #include <linux/vt.h> #include "vt.h" VTApplet::VTApplet ( ) - : QObject ( 0, "VTApplet" ), ref ( 0 ) + : QObject ( 0, "VTApplet" ) { } VTApplet::~VTApplet ( ) { } int VTApplet::position ( ) const { return 2; } QString VTApplet::name ( ) const { return tr( "VT shortcut" ); } QString VTApplet::text ( ) const { return tr( "Terminal" ); } /* QString VTApplet::tr( const char* s ) const { return qApp->translate( "VTApplet", s, 0 ); } QString VTApplet::tr( const char* s, const char* p ) const { return qApp->translate( "VTApplet", s, p ); } */ QIconSet VTApplet::icon ( ) const { QPixmap pix; QImage img = Resource::loadImage ( "terminal" ); if ( !img. isNull ( )) pix. convertFromImage ( img. smoothScale ( 14, 14 )); return pix; } QPopupMenu *VTApplet::popup ( QWidget* parent ) const { qDebug( "VTApplet::popup" ); struct vt_stat vtstat; int fd = ::open( "/dev/tty0", O_RDWR ); if ( fd == -1 ) return 0; if ( ioctl( fd, VT_GETSTATE, &vtstat ) == -1 ) return 0; - submenu = new QPopupMenu( parent ); - submenu->setCheckable( true ); + m_subMenu = new QPopupMenu( parent ); + m_subMenu->setCheckable( true ); for ( int i = 1; i < 10; ++i ) { - int id = submenu->insertItem( QString::number( i ), 500+i ); - submenu->setItemChecked( id, id-500 == vtstat.v_active ); + int id = m_subMenu->insertItem( QString::number( i ), 500+i ); + m_subMenu->setItemChecked( id, id-500 == vtstat.v_active ); } ::close( fd ); - connect( submenu, SIGNAL( activated(int) ), this, SLOT( changeVT(int) ) ); - connect( submenu, SIGNAL( aboutToShow() ), this, SLOT( updateMenu() ) ); + connect( m_subMenu, SIGNAL( activated(int) ), this, SLOT( changeVT(int) ) ); + connect( m_subMenu, SIGNAL( aboutToShow() ), this, SLOT( updateMenu() ) ); - return submenu; + return m_subMenu; } void VTApplet::changeVT( int index ) { //qDebug( "VTApplet::changeVT( %d )", index-500 ); int fd = ::open("/dev/tty0", O_RDWR); if ( fd == -1 ) return; ioctl( fd, VT_ACTIVATE, index-500 ); } void VTApplet::updateMenu() { //qDebug( "VTApplet::updateMenu()" ); int fd = ::open( "/dev/console", O_RDONLY ); if ( fd == -1 ) return; for ( int i = 1; i < 10; ++i ) { int result = ioctl( fd, VT_DISALLOCATE, i ); /* if ( result == -1 ) qDebug( "VT %d disallocated == free", i ); else qDebug( "VT %d _not_ disallocated == busy", i ); */ - submenu->setItemEnabled( 500+i, result == -1 ); + m_subMenu->setItemEnabled( 500+i, result == -1 ); } ::close( fd ); } void VTApplet::activated() { qDebug( "VTApplet::activated()" ); } QRESULT VTApplet::queryInterface ( const QUuid &uuid, QUnknownInterface **iface ) { *iface = 0; if ( uuid == IID_QUnknown ) *iface = this; else if ( uuid == IID_MenuApplet ) *iface = this; else return QS_FALSE; if ( *iface ) (*iface)-> addRef ( ); return QS_OK; } Q_EXPORT_INTERFACE( ) { Q_CREATE_INSTANCE( VTApplet ) } diff --git a/core/applets/vtapplet/vt.h b/core/applets/vtapplet/vt.h index 6bdb9e0..4c92ddd 100644 --- a/core/applets/vtapplet/vt.h +++ b/core/applets/vtapplet/vt.h @@ -15,40 +15,38 @@ #ifndef __OPIE_VTAPPLET_H__ #define __OPIE_VTAPPLET_H__ #include <qpe/menuappletinterface.h> #include <qobject.h> class VTApplet : public QObject, public MenuAppletInterface { Q_OBJECT public: VTApplet ( ); virtual ~VTApplet ( ); QRESULT queryInterface( const QUuid&, QUnknownInterface** ); Q_REFCOUNT virtual int position() const; virtual QString name ( ) const; virtual QIconSet icon ( ) const; virtual QString text ( ) const; //virtual QString tr( const char* ) const; //virtual QString tr( const char*, const char* ) const; virtual QPopupMenu *popup ( QWidget *parent ) const; virtual void activated (); public slots: virtual void changeVT( int index ); virtual void updateMenu(); - private: - ulong ref; + mutable QPopupMenu* m_subMenu; }; -static QPopupMenu* submenu; #endif |