summaryrefslogtreecommitdiff
path: root/core
authormickeyl <mickeyl>2003-09-16 12:31:09 (UTC)
committer mickeyl <mickeyl>2003-09-16 12:31:09 (UTC)
commit81171716bb686e709f27fbbc0931740aa9d9462a (patch) (side-by-side diff)
treea989e70496240fad7f3a87a72ee3c1a530be26eb /core
parent7338604c783a51c456fdf8d534f8da62e4383e03 (diff)
downloadopie-81171716bb686e709f27fbbc0931740aa9d9462a.zip
opie-81171716bb686e709f27fbbc0931740aa9d9462a.tar.gz
opie-81171716bb686e709f27fbbc0931740aa9d9462a.tar.bz2
virtual terminal applet says: "Hello"
Diffstat (limited to 'core') (more/less context) (ignore whitespace changes)
-rw-r--r--core/applets/vtapplet/.cvsignore1
-rw-r--r--core/applets/vtapplet/config.in4
-rw-r--r--core/applets/vtapplet/vt.cpp143
-rw-r--r--core/applets/vtapplet/vt.h53
-rw-r--r--core/applets/vtapplet/vtapplet.pro13
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