summaryrefslogtreecommitdiff
authorzecke <zecke>2004-02-05 16:44:20 (UTC)
committer zecke <zecke>2004-02-05 16:44:20 (UTC)
commit4c4ed7176231558d01aeca2eb705fc6810ec7766 (patch) (side-by-side diff)
treed923fd4ca70d6db917a0e154a5a642a444cab87e
parentef8ece225a663f0ff1262989085fc214500beebe (diff)
downloadopie-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
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/applets/vtapplet/vt.cpp18
-rw-r--r--core/applets/vtapplet/vt.h4
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