author | sandman <sandman> | 2002-07-27 23:33:26 (UTC) |
---|---|---|
committer | sandman <sandman> | 2002-07-27 23:33:26 (UTC) |
commit | 4baf36396739502c5471950e29f18954cca4517b (patch) (side-by-side diff) | |
tree | 46b25659b442666b4b5153fa8210d86e6708b47b | |
parent | 9cc89b6a54ee267953b0422c4607097d075ecab9 (diff) | |
download | opie-4baf36396739502c5471950e29f18954cca4517b.zip opie-4baf36396739502c5471950e29f18954cca4517b.tar.gz opie-4baf36396739502c5471950e29f18954cca4517b.tar.bz2 |
Update for OPIE to use opie-login
-rw-r--r-- | Makefile | 1 | ||||
-rw-r--r-- | core/launcher/main.cpp | 12 | ||||
-rw-r--r-- | core/opie-login/opie-login.control | 9 | ||||
-rwxr-xr-x | root/etc/init.d/opie | 7 |
4 files changed, 16 insertions, 13 deletions
@@ -1,116 +1,117 @@ indefault: dynamic all: default docs LIBS=library libopie INPUTCOMPONENTS= inputmethods/keyboard inputmethods/pickboard \ inputmethods/handwriting inputmethods/unikeyboard \ inputmethods/jumpx inputmethods/kjumpx \ inputmethods/dvorak APPLETS= core/applets/batteryapplet core/applets/batteryapplet-ipaq \ core/applets/irdaapplet core/applets/volumeapplet \ core/applets/clockapplet core/applets/netmonapplet \ core/applets/screenshotapplet core/applets/clipboardapplet \ core/applets/cardmon core/applets/obex \ core/applets/vmemo noncore/net/netsetup/dialup \ noncore/net/netsetup/lan MAIL= noncore/mail/libmail noncore/mail/bend PLAYER = core/multimedia/opieplayer/libmpeg3 \ core/multimedia/opieplayer/libmad \ core/multimedia/opieplayer/wavplugin \ core/multimedia/opieplayer/modplug COMPONENTS=$(LOCALCOMPONENTS) $(INPUTCOMPONENTS) $(APPLETS) $(MAIL) $(PLAYER) PIMAPPS = core/pim/addressbook core/pim/datebook \ core/pim/today core/pim/todo COREAPPS = core/apps/filebrowser core/apps/helpbrowser \ core/apps/textedit core/apps/embeddedkonsole \ core/launcher \ + core/opie-login \ core/apps/oipkg core/apps/qcop COREMULTIMEDIA = core/multimedia/opieplayer CORESETTINGS = core/settings/light-and-power core/settings/security \ core/settings/systemtime core/settings/citytime \ NONCORESETTINGS =noncore/settings/language noncore/settings/rotation \ noncore/settings/appearance noncore/settings/sound \ noncore/settings/mediummount \ noncore/settings/tabmanager noncore/settings/appskey \ noncore/settings/netsystemtime \ noncore/settings/wlansetup \ NONCORETOOLS = noncore/tools/calculator noncore/tools/clock \ noncore/tools/remote noncore/tools/opie-sh noncore/apps/advancedfm NONCORESTYLES = noncore/styles/liquid noncore/styles/theme noncore/styles/metal GAMES = noncore/games/minesweep noncore/games/solitaire \ noncore/games/tetrix noncore/games/wordgame \ noncore/games/parashoot noncore/games/snake \ noncore/games/mindbreaker \ noncore/games/go noncore/games/qasteroids \ noncore/games/fifteen noncore/games/tictac \ noncore/games/kcheckers noncore/games/kpacman \ noncore/games/kbill NONAPPS = noncore/apps/opie-sheet noncore/apps/tableviewer \ noncore/apps/opie-reader noncore/apps/checkbook \ noncore/apps/sysinfo \ NONNET = noncore/net/netsetup noncore/net/opieftp \ noncore/mail NONMULT = noncore/multimedia/showimg noncore/graphics/drawpad \ noncore/graphics/qpdf noncore/apps/confedit NONCOMM = noncore/comm/keypebble APPS=$(LOCALAPPS) $(PIMAPPS) $(COREAPPS) \ $(COREMULTIMEDIA) $(CORESETTINGS) \ $(NONCORESETTINGS) $(NONCORETOOLS) $(NONCORESTYLES) \ $(NONAPPS) $(NONNET) $(NONMULT) \ $(NONCOMM) $(GAMES) NONTMAKEAPPS := ipaq/opiealarm DOCS = docs/src/opie-policy single: mpegplayer/libmpeg3 dynamic: $(APPS) $(NONTMAKEAPPS) docs: $(DOCS) $(COMPONENTS): $(LIBS) $(NONTMAKEAPPS) $(APPS): $(LIBS) $(COMPONENTS) $(LIBS) $(COMPONENTS) $(NONTMAKEAPPS) $(APPS) $(DOCS) single: $(MAKE) -C $@ -f Makefile showcomponents: @echo $(LIBS) $(APPS) $(COMPONENTS) single clean: $(MAKE) -C single -f Makefile $@ for dir in $(NONTMAKEAPPS) $(APPS) $(LIBS) $(COMPONENTS) $(DOCS); do $(MAKE) -C $$dir -f Makefile $@ || exit 1; done lupdate: for dir in $(APPS) $(LIBS) $(COMPONENTS); do $(MAKE) -C $$dir -f Makefile $@ || exit 1; done lrelease: for dir in $(APPS) $(LIBS) $(COMPONENTS); do $(MAKE) -C $$dir -f Makefile $@ || exit 1; done .PHONY: default dynamic $(NONTMAKEAPPS) $(LIBS) $(APPS) $(COMPONENTS) $(DOCS) single showcomponents clean diff --git a/core/launcher/main.cpp b/core/launcher/main.cpp index b3c331b..a19da14 100644 --- a/core/launcher/main.cpp +++ b/core/launcher/main.cpp @@ -1,366 +1,354 @@ /********************************************************************** ** Copyright (C) 2000 Trolltech AS. All rights reserved. ** ** This file is part of Qtopia Environment. ** ** 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. ** ** See http://www.trolltech.com/gpl/ for GPL licensing information. ** ** Contact info@trolltech.com if any conditions of this licensing are ** not clear to you. ** **********************************************************************/ #include "desktop.h" #include "taskbar.h" #include "stabmon.h" #include <qpe/qpeapplication.h> #include <qpe/network.h> #include <qpe/config.h> #if defined( QT_QWS_CUSTOM ) || defined( QT_QWS_IPAQ ) #include <qpe/custom.h> #endif #include <opie/odevice.h> #include <qfile.h> #include <qwindowsystem_qws.h> #include <qpe/qcopenvelope_qws.h> #include <qpe/alarmserver.h> #include <stdlib.h> #include <stdio.h> #include <signal.h> #include <unistd.h> #if defined(QT_QWS_CASSIOPEIA) || defined(QT_QWS_IPAQ) || defined(QT_QWS_EBX) #include "../calibrate/calibrate.h" #endif -#ifdef QT_QWS_LOGIN -#include "../login/qdmdialogimpl.h" -#endif - #ifdef QT_QWS_CASSIOPEIA static void ignoreMessage( QtMsgType, const char * ) { } #include <sys/mount.h> #include <sys/types.h> #include <sys/stat.h> #include <sys/time.h> #include <fcntl.h> #include <qdatetime.h> void initCassiopeia() { // MIPSEL-specific init - make sure /proc exists for shm /* if ( mount("/dev/ram0", "/", "ext2", MS_REMOUNT | MS_MGC_VAL, 0 ) ) { perror("Remounting - / read/write"); } */ if ( mount("none", "/tmp", "ramfs", 0, 0 ) ) { perror("mounting ramfs /tmp"); } else { fprintf( stderr, "mounted /tmp\n" ); } if ( mount("none", "/home", "ramfs", 0, 0 ) ) { perror("mounting ramfs /home"); } else { fprintf( stderr, "mounted /home\n" ); } if ( mount("none","/proc","proc",0,0) ) { perror("Mounting - /proc"); } else { fprintf( stderr, "mounted /proc\n" ); } if ( mount("none","/mnt","shm",0,0) ) { perror("Mounting - shm"); } setenv( "QTDIR", "/", 1 ); setenv( "OPIEDIR", "/", 1 ); setenv( "HOME", "/home", 1 ); mkdir( "/home/Documents", 0755 ); // set a reasonable starting date QDateTime dt( QDate( 2001, 3, 15 ) ); QDateTime now = QDateTime::currentDateTime(); int change = now.secsTo( dt ); time_t t = ::time(0); t += change; stime(&t); qInstallMsgHandler(ignoreMessage); } #endif #ifdef QPE_OWNAPM #include <sys/ioctl.h> #include <sys/types.h> #include <fcntl.h> #include <unistd.h> #include <errno.h> #include <linux/ioctl.h> #include <qpe/global.h> static void disableAPM() { int fd, cur_val, ret; char *device = "/dev/apm_bios"; fd = open (device, O_WRONLY); if (fd == -1) { perror(device); return; } cur_val = ioctl(fd, APM_IOCGEVTSRC, 0); if (cur_val == -1) { perror("ioctl"); exit(errno); } ret = ioctl(fd, APM_IOCSEVTSRC, cur_val & ~APM_EVT_POWER_BUTTON); if (ret == -1) { perror("ioctl"); return; } close(fd); } static void initAPM() { // So that we have to do it ourself, but better. disableAPM(); } #endif #ifdef QT_DEMO_SINGLE_FLOPPY #include <sys/mount.h> void initFloppy() { mount("none","/proc","proc",0,0); setenv( "QTDIR", "/", 0 ); setenv( "HOME", "/root", 0 ); setenv( "QWS_SIZE", "240x320", 0 ); } #endif void initEnvironment() { Config config("locale"); config.setGroup( "Location" ); QString tz = config.readEntry( "Timezone", getenv("TZ") ); // if not timezone set, pick New York if (tz.isNull()) tz = "America/New_York"; setenv( "TZ", tz, 1 ); config.writeEntry( "Timezone", tz); config.setGroup( "Language" ); QString lang = config.readEntry( "Language", getenv("LANG") ); if ( !lang.isNull() ) setenv( "LANG", lang, 1 ); } static void initBacklight() { QCopEnvelope e("QPE/System", "setBacklight(int)" ); e << -3; // Forced on } class ModelKeyFilter : public QObject, public QWSServer::KeyboardFilter { public: ModelKeyFilter ( ) : QObject ( 0, "MODEL_KEY_FILTER" ) { bool doinst = false; m_model = ODevice::inst ( )-> model ( ); m_power_timer = 0; switch ( m_model ) { case OMODEL_iPAQ_H31xx: case OMODEL_iPAQ_H36xx: case OMODEL_iPAQ_H37xx: case OMODEL_iPAQ_H38xx: doinst = true; break; default : break; } if ( doinst ) QWSServer::setKeyboardFilter ( this ); } virtual bool filter ( int /*unicode*/, int keycode, int modifiers, bool isPress, bool autoRepeat ) { bool kill = false; // Rotate cursor keys 180° switch ( m_model ) { case OMODEL_iPAQ_H31xx: case OMODEL_iPAQ_H38xx: { int newkeycode = keycode; switch ( keycode ) { case Key_Left : newkeycode = Key_Right; break; case Key_Right: newkeycode = Key_Left; break; case Key_Up : newkeycode = Key_Down; break; case Key_Down : newkeycode = Key_Up; break; } if ( newkeycode != keycode ) { QWSServer::sendKeyEvent ( -1, newkeycode, modifiers, isPress, autoRepeat ); kill = true; } break; } default: break; } // map Power Button short/long press to F34/F35 switch ( m_model ) { case OMODEL_iPAQ_H31xx: case OMODEL_iPAQ_H36xx: case OMODEL_iPAQ_H37xx: case OMODEL_iPAQ_H38xx: { if ( keycode == Key_SysReq ) { if ( isPress ) { m_power_timer = startTimer ( 500 ); } else if ( m_power_timer ) { killTimer ( m_power_timer ); m_power_timer = 0; QWSServer::sendKeyEvent ( -1, Key_F34, 0, true, false ); QWSServer::sendKeyEvent ( -1, Key_F34, 0, false, false ); } kill = true; } break; } default: break; } return kill; } virtual void timerEvent ( QTimerEvent * ) { killTimer ( m_power_timer ); m_power_timer = 0; QWSServer::sendKeyEvent ( -1, Key_F35, 0, true, false ); QWSServer::sendKeyEvent ( -1, Key_F35, 0, false, false ); } private: OModel m_model; int m_power_timer; }; int initApplication( int argc, char ** argv ) { #ifdef QT_QWS_CASSIOPEIA initCassiopeia(); #endif #ifdef QPE_OWNAPM initAPM(); #endif #ifdef QT_DEMO_SINGLE_FLOPPY initFloppy(); #endif initEnvironment(); #if !defined(QT_QWS_CASSIOPEIA) && !defined(QT_QWS_IPAQ) && !defined(QT_QWS_EBX) setenv( "QWS_SIZE", "240x320", 0 ); #endif //Don't flicker at startup: QWSServer::setDesktopBackground( QImage() ); DesktopApplication a( argc, argv, QApplication::GuiServer ); (void) new ModelKeyFilter ( ); initBacklight(); AlarmServer::initialize(); -#if defined(QT_QWS_LOGIN) - for( int i=0; i<a.argc(); i++ ) - if( strcmp( a.argv()[i], "-login" ) == 0 ) { - QDMDialogImpl::login( ); - return 0; - } -#endif - Desktop *d = new Desktop(); QObject::connect( &a, SIGNAL(datebook()), d, SLOT(raiseDatebook()) ); QObject::connect( &a, SIGNAL(contacts()), d, SLOT(raiseContacts()) ); QObject::connect( &a, SIGNAL(launch()), d, SLOT(raiseLauncher()) ); QObject::connect( &a, SIGNAL(email()), d, SLOT(raiseEmail()) ); QObject::connect( &a, SIGNAL(power()), d, SLOT(togglePower()) ); QObject::connect( &a, SIGNAL(backlight()), d, SLOT(toggleLight()) ); QObject::connect( &a, SIGNAL(symbol()), d, SLOT(toggleSymbolInput()) ); QObject::connect( &a, SIGNAL(numLockStateToggle()), d, SLOT(toggleNumLockState()) ); QObject::connect( &a, SIGNAL(capsLockStateToggle()), d, SLOT(toggleCapsLockState()) ); QObject::connect( &a, SIGNAL(prepareForRestart()), d, SLOT(terminateServers()) ); (void)new SysFileMonitor(d); Network::createServer(d); #if defined(QT_QWS_CASSIOPEIA) || defined(QT_QWS_IPAQ) || defined(QT_QWS_EBX) if ( !QFile::exists( "/etc/pointercal" ) ) { // Make sure calibration widget starts on top. Calibrate *cal = new Calibrate; cal->exec(); delete cal; } #endif d->show(); int rv = a.exec(); delete d; return rv; } int main( int argc, char ** argv ) { #ifndef SINGLE_APP signal( SIGCHLD, SIG_IGN ); #endif int retVal = initApplication( argc, argv ); #ifndef SINGLE_APP // Kill them. Kill them all. setpgid( getpid(), getppid() ); killpg( getpid(), SIGTERM ); sleep( 1 ); killpg( getpid(), SIGKILL ); #endif return retVal; } diff --git a/core/opie-login/opie-login.control b/core/opie-login/opie-login.control new file mode 100644 index 0000000..d87fc6c --- a/dev/null +++ b/core/opie-login/opie-login.control @@ -0,0 +1,9 @@ +Files: bin/opie-login +Priority: optional +Section: opie/system +Maintainer: Project Opie <opie@handhelds.org> +Architecture: arm +Version: $QPE_VERSION-$SUB_VERSION +Depends: opie-base ($QPE_VERSION), libopie +Description: Multiuser login for OPIE + A xdm/kdm equivalent for OPIE. diff --git a/root/etc/init.d/opie b/root/etc/init.d/opie index b5a185e..eed69c2 100755 --- a/root/etc/init.d/opie +++ b/root/etc/init.d/opie @@ -1,58 +1,63 @@ #!/bin/sh # module_id() { cat /proc/hal/model } export LOGNAME=root export HOME=/$LOGNAME #export QWS_DISPLAY=Transformed:Rot270:0 export QTDIR=/opt/QtPalmtop export OPIEDIR=/opt/QtPalmtop export QPEDIR=/opt/QtPalmtop export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$OPIEDIR/lib export PATH=$PATH:$OPIEDIR/bin #this sets the iPaqs powerbutton to mapable echo 1 > /proc/sys/ts/suspend_button_mode if [ ! -x $OPIEDIR/bin/qpe ] ; then exit 0 ; fi $OPIEDIR/bin/opie-reorgfiles . /etc/profile killproc() { pid=`/bin/ps -e | /bin/sed -n -e '/\<'$1'\>/ s/^ *\([0-9][0-9]*\).*/\1/p'` [ "$pid" != "" ] && kill $pid } case $1 in 'start') echo "Starting Opie..." cd $HOME rm -f /etc/rc2.d/S99x # Can't have both running! case `module_id` in "3100" ) export QWS_DISPLAY=Transformed:Rot90:0 ;; "3600" ) export QWS_DISPLAY=Transformed:Rot270:0 ;; "3700" ) export QWS_DISPLAY=Transformed:Rot270:0 ;; "3800" ) export QWS_DISPLAY=Transformed:Rot90:0 ;; *) echo "Unknown processor type -`module_id`-!" ;; esac - $OPIEDIR/bin/qpe 2>/dev/null >/dev/null & + if [ -x $OPIEDIR/bin/opie-login ]; then + $OPIEDIR/bin/opie-login 2>/dev/null >/dev/null & + else + $OPIEDIR/bin/qpe 2>/dev/null >/dev/null & + fi ;; 'stop') echo "Killing Opie..." killproc qpe + killproc opie-login ;; *) echo "usage: $0 { start | stop }" ;; esac |