author | mickeyl <mickeyl> | 2003-09-16 12:31:09 (UTC) |
---|---|---|
committer | mickeyl <mickeyl> | 2003-09-16 12:31:09 (UTC) |
commit | 81171716bb686e709f27fbbc0931740aa9d9462a (patch) (side-by-side diff) | |
tree | a989e70496240fad7f3a87a72ee3c1a530be26eb /core | |
parent | 7338604c783a51c456fdf8d534f8da62e4383e03 (diff) | |
download | opie-81171716bb686e709f27fbbc0931740aa9d9462a.zip opie-81171716bb686e709f27fbbc0931740aa9d9462a.tar.gz opie-81171716bb686e709f27fbbc0931740aa9d9462a.tar.bz2 |
virtual terminal applet says: "Hello"
-rw-r--r-- | core/applets/vtapplet/.cvsignore | 1 | ||||
-rw-r--r-- | core/applets/vtapplet/config.in | 4 | ||||
-rw-r--r-- | core/applets/vtapplet/vt.cpp | 143 | ||||
-rw-r--r-- | core/applets/vtapplet/vt.h | 53 | ||||
-rw-r--r-- | core/applets/vtapplet/vtapplet.pro | 13 |
5 files changed, 214 insertions, 0 deletions
diff --git a/core/applets/vtapplet/.cvsignore b/core/applets/vtapplet/.cvsignore new file mode 100644 index 0000000..c55c0bc --- a/dev/null +++ b/core/applets/vtapplet/.cvsignore @@ -0,0 +1 @@ +Makefile* diff --git a/core/applets/vtapplet/config.in b/core/applets/vtapplet/config.in new file mode 100644 index 0000000..85692a5 --- a/dev/null +++ b/core/applets/vtapplet/config.in @@ -0,0 +1,4 @@ + config VTAPPLET + boolean "VT (switch to another virtual terminal)" + default "y" + depends ( LIBQPE || LIBQPE-X11 ) && LIBOPIE diff --git a/core/applets/vtapplet/vt.cpp b/core/applets/vtapplet/vt.cpp new file mode 100644 index 0000000..6200447 --- a/dev/null +++ b/core/applets/vtapplet/vt.cpp @@ -0,0 +1,143 @@ +/********************************************************************** +** 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" + +class VTPopupMenu : public QPopupMenu +{ + public: + VTPopupMenu( QWidget * parent=0, const char * name=0 ) : QPopupMenu( parent, name ) {}; + + virtual void activated() { qDebug( "VTPopupMenu::activated()" ); } +}; + +VTApplet::VTApplet ( ) + : QObject ( 0, "VTApplet" ), ref ( 0 ) +{ +} + +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 VTPopupMenu( parent ); + 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 ); + } + ::close( fd ); + + connect( submenu, SIGNAL( activated(int) ), this, SLOT( changeVT(int) ) ); + + return 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::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; + + 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 new file mode 100644 index 0000000..2df9791 --- a/dev/null +++ b/core/applets/vtapplet/vt.h @@ -0,0 +1,53 @@ +/********************************************************************** +** 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. +** +**********************************************************************/ +#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 ); + +private: + ulong ref; +}; + +static QPopupMenu* submenu; + +#endif diff --git a/core/applets/vtapplet/vtapplet.pro b/core/applets/vtapplet/vtapplet.pro new file mode 100644 index 0000000..3899e75 --- a/dev/null +++ b/core/applets/vtapplet/vtapplet.pro @@ -0,0 +1,13 @@ +TEMPLATE = lib +CONFIG += qt warn_on release +HEADERS = vt.h +SOURCES = vt.cpp +TARGET = vtapplet +DESTDIR = $(OPIEDIR)/plugins/applets +INCLUDEPATH += $(OPIEDIR)/include +DEPENDPATH += $(OPIEDIR)/include +LIBS += -lqpe +VERSION = 1.0.0 + +include ( $(OPIEDIR)/include.pro ) +target.path = $$prefix/plugins/applets |