summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--core/apps/.cvsignore1
-rw-r--r--core/apps/embeddedkonsole/MyPty.cpp1
-rw-r--r--core/apps/helpbrowser/helpbrowser.cpp48
-rw-r--r--core/apps/helpbrowser/helpbrowser.h4
-rw-r--r--core/apps/helpbrowser/helpbrowser.pro4
-rw-r--r--core/apps/helpbrowser/magictextbrowser.cpp99
-rw-r--r--core/apps/helpbrowser/magictextbrowser.h42
-rw-r--r--core/apps/helpbrowser/main.cpp9
-rw-r--r--core/apps/textedit/textedit.cpp8
-rw-r--r--core/opie-login/main.cpp28
-rw-r--r--core/opie-login/opie-login.conffiles1
-rw-r--r--core/opiealarm/Makefile4
-rw-r--r--core/opiealarm/config.in2
-rw-r--r--core/opiealarm/opiealarm.c5
-rw-r--r--core/settings/launcher/tabdialog.cpp6
-rw-r--r--core/settings/security/security.cpp72
-rw-r--r--core/settings/security/security.h6
-rw-r--r--core/settings/security/securitybase.ui253
18 files changed, 521 insertions, 72 deletions
diff --git a/core/apps/.cvsignore b/core/apps/.cvsignore
index faa68ae..6d678c6 100644
--- a/core/apps/.cvsignore
+++ b/core/apps/.cvsignore
@@ -1,2 +1 @@
-binconfig.in
config.in
diff --git a/core/apps/embeddedkonsole/MyPty.cpp b/core/apps/embeddedkonsole/MyPty.cpp
index 9adc248..7e820ad 100644
--- a/core/apps/embeddedkonsole/MyPty.cpp
+++ b/core/apps/embeddedkonsole/MyPty.cpp
@@ -164,4 +164,5 @@ int MyPty::run(const char* cmd, QStrList &, const char*, int)
ttmode.c_cc[VERASE] = 8;
tcsetattr( STDIN_FILENO, TCSANOW, &ttmode );
+ if(strlen(getenv("TERM"))<=0)
setenv("TERM","vt100",1);
setenv("COLORTERM","0",1);
diff --git a/core/apps/helpbrowser/helpbrowser.cpp b/core/apps/helpbrowser/helpbrowser.cpp
index 48da7c6..531dbff 100644
--- a/core/apps/helpbrowser/helpbrowser.cpp
+++ b/core/apps/helpbrowser/helpbrowser.cpp
@@ -1,6 +1,6 @@
-#/**********************************************************************
-** Copyright (C) 2000 Trolltech AS. All rights reserved.
+/**********************************************************************
+** Copyright (C) 2000-2002 Trolltech AS. All rights reserved.
**
-** This file is part of Qtopia Environment.
+** This file is part of the Qtopia Environment.
**
** This file may be distributed and/or modified under the terms of the
@@ -19,8 +19,12 @@
**********************************************************************/
+#define QTOPIA_INTERNAL_LANGLIST
+
#include "helpbrowser.h"
#include <qpe/qpeapplication.h>
#include <qpe/resource.h>
+#include <qpe/mimetype.h>
+#include <qpe/applnk.h>
#include <qpe/global.h>
@@ -31,4 +35,5 @@
#include <qpe/qpemenubar.h>
#include <qpe/qpetoolbar.h>
+#include <qpe/qcopenvelope_qws.h>
#include <qtoolbutton.h>
#include <qiconset.h>
@@ -49,6 +54,7 @@
#include <qaction.h>
-#include <ctype.h>
+#include <cctype>
+#include "magictextbrowser.h"
HelpBrowser::HelpBrowser( QWidget* parent, const char *name, WFlags f )
@@ -59,9 +65,12 @@ HelpBrowser::HelpBrowser( QWidget* parent, const char *name, WFlags f )
}
+
+
void HelpBrowser::init( const QString& _home )
{
- setIcon( Resource::loadPixmap( "help_icon" ) );
+ setIcon( Resource::loadPixmap( "HelpBrowser" ) );
+ setBackgroundMode( PaletteButton );
- browser = new QTextBrowser( this );
+ browser = new MagicTextBrowser( this );
browser->setFrameStyle( QFrame::Panel | QFrame::Sunken );
connect( browser, SIGNAL( textChanged() ),
@@ -81,10 +90,10 @@ void HelpBrowser::init( const QString& _home )
// addToolBar( toolbar, "Toolbar");
- //QPopupMenu* go = new QPopupMenu( this );
+ QPopupMenu* go = new QPopupMenu( this );
backAction = new QAction( tr( "Backward" ), Resource::loadIconSet( "back" ), QString::null, 0, this, 0 );
connect( backAction, SIGNAL( activated() ), browser, SLOT( backward() ) );
connect( browser, SIGNAL( backwardAvailable( bool ) ),
backAction, SLOT( setEnabled( bool ) ) );
- //backAction->addTo( go );
+ backAction->addTo( go );
backAction->addTo( toolbar );
backAction->setEnabled( FALSE );
@@ -94,12 +103,11 @@ void HelpBrowser::init( const QString& _home )
connect( browser, SIGNAL( forwardAvailable( bool ) ),
forwardAction, SLOT( setEnabled( bool ) ) );
- //forwardAction->addTo( go );
+ forwardAction->addTo( go );
forwardAction->addTo( toolbar );
forwardAction->setEnabled( FALSE );
- QAction *a = new QAction( tr( "Home" ), Resource::loadPixmap(
-"home" ), QString::null, 0, this, 0 );
+ QAction *a = new QAction( tr( "Home" ), Resource::loadIconSet( "home" ), QString::null, 0, this, 0 );
connect( a, SIGNAL( activated() ), browser, SLOT( home() ) );
- //a->addTo( go );
+ a->addTo( go );
a->addTo( toolbar );
@@ -113,9 +121,16 @@ void HelpBrowser::init( const QString& _home )
readBookmarks();
- //menu->insertItem( tr("Go"), go );
+ menu->insertItem( tr("Go"), go );
menu->insertItem( tr( "Bookmarks" ), bookm );
resize( 240, 300 );
browser->setFocus();
+ browser->setFrameStyle( QFrame::NoFrame );
+
+#if !defined(QT_NO_COP)
+ QCopChannel *addressChannel = new QCopChannel("QPE/HelpBrowser" , this );
+ connect (addressChannel, SIGNAL( received(const QCString &, const QByteArray &)),
+ this, SLOT ( appMessage(const QCString &, const QByteArray &) ) );
+#endif
connect( qApp, SIGNAL(appMessage(const QCString&, const QByteArray&)),
@@ -125,4 +140,5 @@ void HelpBrowser::init( const QString& _home )
void HelpBrowser::appMessage(const QCString& msg, const QByteArray& data)
{
+ qDebug("reached appMessage");
if ( msg == "showFile(QString)" ) {
QDataStream ds(data,IO_ReadOnly);
@@ -130,4 +146,10 @@ void HelpBrowser::appMessage(const QCString& msg, const QByteArray& data)
ds >> fn;
setDocument( fn );
+
+ QPEApplication::setKeepRunning();
+
+ showMaximized();
+ setActiveWindow();
+ raise();
}
}
diff --git a/core/apps/helpbrowser/helpbrowser.h b/core/apps/helpbrowser/helpbrowser.h
index 2f7153a..5f7e6b6 100644
--- a/core/apps/helpbrowser/helpbrowser.h
+++ b/core/apps/helpbrowser/helpbrowser.h
@@ -1,6 +1,6 @@
/**********************************************************************
-** Copyright (C) 2000 Trolltech AS. All rights reserved.
+** Copyright (C) 2000-2002 Trolltech AS. All rights reserved.
**
-** This file is part of Qtopia Environment.
+** This file is part of the Qtopia Environment.
**
** This file may be distributed and/or modified under the terms of the
diff --git a/core/apps/helpbrowser/helpbrowser.pro b/core/apps/helpbrowser/helpbrowser.pro
index 6bb43bd..3525b7e 100644
--- a/core/apps/helpbrowser/helpbrowser.pro
+++ b/core/apps/helpbrowser/helpbrowser.pro
@@ -2,6 +2,6 @@ TEMPLATE = app
CONFIG = qt warn_on release
DESTDIR = $(OPIEDIR)/bin
-HEADERS = helpbrowser.h
-SOURCES = helpbrowser.cpp \
+HEADERS = helpbrowser.h magictextbrowser.h
+SOURCES = helpbrowser.cpp magictextbrowser.cpp \
main.cpp
INCLUDEPATH += $(OPIEDIR)/include
diff --git a/core/apps/helpbrowser/magictextbrowser.cpp b/core/apps/helpbrowser/magictextbrowser.cpp
new file mode 100644
index 0000000..8ce0325
--- a/dev/null
+++ b/core/apps/helpbrowser/magictextbrowser.cpp
@@ -0,0 +1,99 @@
+#include <qfile.h>
+#include <qstring.h>
+#include <qdragobject.h>
+#include <qregexp.h>
+
+/* need to get Global::helpPath() */
+#define QTOPIA_INTERNAL_LANGLIST
+
+#include <qtopia/global.h>
+#include <qtopia/mimetype.h>
+#include <qtopia/applnk.h>
+
+#include "magictextbrowser.h"
+
+
+
+MagicTextBrowser::MagicTextBrowser(QWidget* parent) :
+ QTextBrowser(parent){
+}
+
+void MagicTextBrowser::setSource( const QString& source ) {
+ QTextBrowser::setSource(source);
+ if ( magicQpe(source,"applications") || magicQpe(source,"games") || magicQpe(source,"settings") || magicQpe(source, "1Pim") ) // No tr
+ return;
+ if ( magicOpe(source, "applets") || magicOpe(source, "input") )
+ return;
+ // Just those are magic (for now). Could do CGI here,
+ // or in Qtopia's mime source factory.
+}
+
+bool MagicTextBrowser::magicQpe(const QString& source, const QString& name) {
+ if ( name+".html" == source || "help/"+name+".html" == source) {
+ QString fn = mimeSourceFactory()->makeAbsolute( source, context() );
+ const QMimeSource* m = mimeSourceFactory()->data( fn, context() );
+ if ( m ) {
+ QString txt;
+ if ( QTextDrag::decode(m,txt) ) {
+ QRegExp re("<qtopia-"+name+">.*</qtopia-"+name+">");
+ int start,len;
+ if ( (start=re.match(txt,0,&len))>=0 ) {
+ QString generated = generateQpe(name);
+ txt.replace(start,len,generated);
+ setText(txt);
+ return true;
+ }
+ }
+ }
+ }
+ return false;
+}
+bool MagicTextBrowser::magicOpe( const QString& source, const QString& name ) {
+ if ( name+".html" != source && "help/"+name+".html" != source) return false;
+
+ QString fn = mimeSourceFactory()->makeAbsolute( source, context() );
+ const QMimeSource* m = mimeSourceFactory()->data(fn, context() );
+ if (!m) return false;
+
+ QString txt;
+ if ( !QTextDrag::decode(m, txt ) ) return false;
+
+ QRegExp re("<opie-"+name+">.*</opie-"+name+">");
+ int start,len;
+ if ( (start=re.match(txt,0,&len))>=0 ) {
+ QString generated = generateOpe(name);
+ txt.replace(start,len,generated);
+ setText(txt);
+ return true;
+ }
+ return false;
+}
+QString MagicTextBrowser::generateOpe(const QString& name)const {
+ if ( name == QString::fromLatin1("applets") ) {
+ return QString::fromLatin1("<h3>No Applets found</h3>");
+ }else if ( name == QString::fromLatin1("input") ) {
+ return QString::fromLatin1("<h3>No input methods available</h3>");
+ }else
+ return QString::null;
+}
+
+QString MagicTextBrowser::generateQpe(const QString& name) const {
+ QString dir = MimeType::appsFolderName()+"/"+name[0].upper()+name.mid(1);
+ AppLnkSet lnkset(dir);
+ AppLnk* lnk;
+ QString r;
+ for (QListIterator<AppLnk> it(lnkset.children()); (lnk=it.current()); ++it) {
+ QString name = lnk->name();
+ QString icon = lnk->icon();
+ QString helpFile = lnk->exec()+".html";
+ QStringList helpPath = Global::helpPath();
+ bool helpExists = FALSE;
+ for (QStringList::ConstIterator it=helpPath.begin(); it!=helpPath.end() && !helpExists; ++it)
+ helpExists = QFile::exists( *it + "/" + helpFile );
+
+ if ( helpExists ) {
+ r += "<h3><a href="+helpFile+"><img src="+icon+">"+name+"</a></h3>\n";
+ }
+ }
+ return r;
+}
diff --git a/core/apps/helpbrowser/magictextbrowser.h b/core/apps/helpbrowser/magictextbrowser.h
new file mode 100644
index 0000000..ff91e68
--- a/dev/null
+++ b/core/apps/helpbrowser/magictextbrowser.h
@@ -0,0 +1,42 @@
+/**********************************************************************
+** Copyright (C) 2000-2002 Trolltech AS. All rights reserved.
+** Copyright (C) 2003 zecke
+**
+** This file is part of the 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.
+**
+**********************************************************************/
+#ifndef HELP_BROWSER_MAGIC_TEXT_BROWSER_H
+#define HELP_BROWSER_MAGIC_TEXT_BROWSER_H
+
+#include <qtextbrowser.h>
+
+class MagicTextBrowser : public QTextBrowser {
+public:
+ MagicTextBrowser(QWidget* parent);
+
+ void setSource( const QString& source );
+
+ /** honor QPE Attributes */
+ bool magicQpe(const QString& source, const QString& name);
+ /** honor OPIE Attributes */
+ bool magicOpe(const QString& source, const QString& name );
+private:
+
+ QString generateQpe(const QString& name) const;
+ QString generateOpe(const QString& name) const;
+};
+
+#endif
diff --git a/core/apps/helpbrowser/main.cpp b/core/apps/helpbrowser/main.cpp
index 1cb10b7..b1bea56 100644
--- a/core/apps/helpbrowser/main.cpp
+++ b/core/apps/helpbrowser/main.cpp
@@ -1,6 +1,6 @@
/**********************************************************************
-** Copyright (C) 2000 Trolltech AS. All rights reserved.
+** Copyright (C) 2000-2002 Trolltech AS. All rights reserved.
**
-** This file is part of Qtopia Environment.
+** This file is part of the Qtopia Environment.
**
** This file may be distributed and/or modified under the terms of the
@@ -21,5 +21,5 @@
#include "helpbrowser.h"
-#include <qpe/qpeapplication.h>
+#include <qtopia/qpeapplication.h>
int main( int argc, char ** argv )
@@ -28,6 +28,5 @@ int main( int argc, char ** argv )
HelpBrowser mw;
- mw.setCaption( HelpBrowser::tr("HelpBrowser") );
- a.showMainDocumentWidget( &mw );
+ a.showMainWidget( &mw );
return a.exec();
diff --git a/core/apps/textedit/textedit.cpp b/core/apps/textedit/textedit.cpp
index 6f96574..1c95a97 100644
--- a/core/apps/textedit/textedit.cpp
+++ b/core/apps/textedit/textedit.cpp
@@ -570,5 +570,4 @@ void TextEdit::fileOpen() {
Config cfg("TextEdit");
cfg. setGroup ( "View" );
- QString dir = cfg.readEntry("LastOpenDirectory", QPEApplication::documentDir());
QMap<QString, QStringList> map;
map.insert(tr("All"), QStringList() );
@@ -579,9 +578,8 @@ void TextEdit::fileOpen() {
map.insert(tr("All"), text );
QString str = OFileDialog::getOpenFileName( 2,
- dir ,
+ QString::null ,
QString::null, map);
if( !str.isEmpty() && QFile(str).exists() && !QFileInfo(str).isDir() )
{
- cfg.writeEntry("LastOpenDirectory", QFileInfo(str).dirPath(false));
openFile( str );
}
@@ -977,5 +975,5 @@ void TextEdit::updateCaption( const QString &name ) {
// if(s.left(1) == "/")
// s = s.right(s.length()-1);
- setCaption( s + " - " + tr("Text Editor") );
+ setCaption( tr("%1 - Text Editor").arg( s ) );
}
}
@@ -1023,5 +1021,5 @@ void TextEdit::editDelete() {
tr("Do you really want<BR>to <B>delete</B> "
"the current file\nfrom the disk?<BR>This is "
- "<B>irreversable!!</B>"),
+ "<B>irreversable!</B>"),
tr("Yes"),tr("No"),0,0,1) ) {
case 0:
diff --git a/core/opie-login/main.cpp b/core/opie-login/main.cpp
index d95a59b..7dcb5f6 100644
--- a/core/opie-login/main.cpp
+++ b/core/opie-login/main.cpp
@@ -55,4 +55,5 @@
#include <qtimer.h>
#include <qfile.h>
+#include <qtextstream.h>
#include "loginapplication.h"
@@ -75,4 +76,5 @@ static struct option long_options [] = {
int main ( int argc, char **argv )
{
+ int userExited = 0;
pid_t ppid = ::getpid ( );
@@ -138,9 +140,15 @@ int main ( int argc, char **argv )
}
int killedbysig = 0;
+ userExited=0;
+ if (WIFEXITED(status)!=0 ) {
+ if (WEXITSTATUS(status)==137) {
+ userExited=1;
+ }
+ }
if ( WIFSIGNALED( status )) {
switch ( WTERMSIG( status )) {
- case SIGINT :
case SIGTERM:
+ case SIGINT :
case SIGKILL:
break;
@@ -163,5 +171,5 @@ int main ( int argc, char **argv )
const char *sig = ::strsignal ( killedbysig );
QLabel *l = new QLabel ( 0, "sig", Qt::WStyle_Customize | Qt::WStyle_NoBorder | Qt::WStyle_Tool );
- l-> setText ( LoginWindowImpl::tr( "OPIE was terminated\nby an uncaught signal\n(%1)\n" ). arg ( sig ));
+ l-> setText ( LoginWindowImpl::tr( "Opie was terminated\nby an uncaught signal\n(%1)\n" ). arg ( sig ));
l-> setAlignment ( Qt::AlignCenter );
l-> move ( 0, 0 );
@@ -176,5 +184,6 @@ int main ( int argc, char **argv )
else {
if ( !autolog ) {
- Config cfg ( "opie-login" );
+ QString confFile=QPEApplication::qpeDir() + "/etc/opie-login.conf";
+ Config cfg ( confFile, Config::File );
cfg. setGroup ( "General" );
QString user = cfg. readEntry ( "AutoLogin" );
@@ -184,7 +193,13 @@ int main ( int argc, char **argv )
}
- if ( autolog ) {
+ if ( autolog && !userExited ) {
+
+ QWSServer::setDesktopBackground( QImage() );
+ ODevice::inst ( )-> setDisplayStatus ( true );
+ ODevice::inst ( )-> setSoftSuspend ( false );
+ LoginApplication *app = new LoginApplication ( argc, argv, ppid );
LoginApplication::setLoginAs ( autolog );
+
if ( LoginApplication::changeIdentity ( ))
::exit ( LoginApplication::login ( ));
@@ -192,8 +207,9 @@ int main ( int argc, char **argv )
::exit ( 0 );
}
- else
+ else {
::exit ( login_main ( argc, argv, ppid ));
}
}
+ }
return 0;
}
@@ -356,5 +372,5 @@ int login_main ( int argc, char **argv, pid_t ppid )
// if login succeeds, it never comes back
- QMessageBox::critical ( 0, LoginWindowImpl::tr( "Failure" ), LoginWindowImpl::tr( "Could not start OPIE." ));
+ QMessageBox::critical ( 0, LoginWindowImpl::tr( "Failure" ), LoginWindowImpl::tr( "Could not start Opie." ));
rc = 1;
}
diff --git a/core/opie-login/opie-login.conffiles b/core/opie-login/opie-login.conffiles
new file mode 100644
index 0000000..90645ee
--- a/dev/null
+++ b/core/opie-login/opie-login.conffiles
@@ -0,0 +1 @@
+/opt/QtPalmtop/etc/opie-login.conf
diff --git a/core/opiealarm/Makefile b/core/opiealarm/Makefile
index 0c8467e..255083d 100644
--- a/core/opiealarm/Makefile
+++ b/core/opiealarm/Makefile
@@ -21,6 +21,2 @@ clean:
-rm -f *~ core
-install:
- cp $(DESTDIR)/opiealarm $(INSTALL_ROOT)/opt/QtPalmtop/bin
- chown root $(INSTALL_ROOT)/opt/QtPalmtop/bin/opiealarm
- chmod u+s $(INSTALL_ROOT)/opt/QtPalmtop/bin/opiealarm 2>/dev/null || echo -e "\nopiealarm must be owned by root to work correctly.\n"
diff --git a/core/opiealarm/config.in b/core/opiealarm/config.in
index 2be9bd4..f86d01c 100644
--- a/core/opiealarm/config.in
+++ b/core/opiealarm/config.in
@@ -1,4 +1,4 @@
config OPIEALARM
- boolean "opie-opiealarm (Alarm daemon, sets RTC with wakeup time on suspend)"
+ boolean "Opiealarm (Alarm daemon, sets RTC with wakeup time on suspend)"
depends ! TARGET_X86
default "y"
diff --git a/core/opiealarm/opiealarm.c b/core/opiealarm/opiealarm.c
index 998cabd..90a743f 100644
--- a/core/opiealarm/opiealarm.c
+++ b/core/opiealarm/opiealarm.c
@@ -94,4 +94,5 @@ int fork_with_pidfile ( void )
return 0;
}
+ // sleep( 60 );
// child process needs to react to SIGUSR2. This is sent when
@@ -207,5 +208,5 @@ int main ( int argc, char **argv )
int suspend ( int fix_rtc )
{
- FILE *fp;
+ FILE *fp = NULL;
char buf [64];
time_t alrt, syst, rtct;
@@ -259,5 +260,5 @@ int suspend ( int fix_rtc )
fclose ( fp );
- fp = 0;
+ fp = NULL;
alrt = atoi ( buf ); // get the alarm time
diff --git a/core/settings/launcher/tabdialog.cpp b/core/settings/launcher/tabdialog.cpp
index 5f68010..de99a09 100644
--- a/core/settings/launcher/tabdialog.cpp
+++ b/core/settings/launcher/tabdialog.cpp
@@ -92,7 +92,7 @@ public:
- new SampleItem ( this, tr( "Sample 1" ), Resource::loadPixmap ( "datebook/DateBook" ));
- new SampleItem ( this, tr( "Sample 2" ), Resource::loadPixmap ( "Calibrate" ));
- new SampleItem ( this, tr( "Sample 3" ), Resource::loadPixmap ( "UnknownDocument" ));
+ new SampleItem ( this, QObject::tr( "Sample 1" ), Resource::loadPixmap ( "datebook/DateBook" ));
+ new SampleItem ( this, QObject::tr( "Sample 2" ), Resource::loadPixmap ( "Calibrate" ));
+ new SampleItem ( this, QObject::tr( "Sample 3" ), Resource::loadPixmap ( "UnknownDocument" ));
setBackgroundType ( TabConfig::Ruled, QString::null );
diff --git a/core/settings/security/security.cpp b/core/settings/security/security.cpp
index 4701506..75a181b 100644
--- a/core/settings/security/security.cpp
+++ b/core/settings/security/security.cpp
@@ -20,4 +20,5 @@
#include "security.h"
+#include <qpe/qpeapplication.h>
#include <qpe/config.h>
#include <qpe/password.h>
@@ -28,4 +29,7 @@
#include <qcombobox.h>
#include <qmessagebox.h>
+#include <qfile.h>
+#include <qlistview.h>
+#include <qtextstream.h>
Security::Security( QWidget* parent, const char* name, WFlags fl )
@@ -57,6 +61,23 @@ Security::Security( QWidget* parent, const char* name, WFlags fl )
*/
+ QString configFile = QPEApplication::qpeDir() + "/etc/opie-login.conf";
+ Config loginCfg(configFile,Config::File);
+
+ loginCfg.setGroup("General");
+ autoLoginName=loginCfg.readEntry("AutoLogin","");
+
+ if (autoLoginName.stripWhiteSpace().isEmpty()) {
+ autoLogin=false;
+ } else {
+ autoLogin=true;
+ }
+
+
+ connect(autologinToggle, SIGNAL(toggled(bool)), this, SLOT(toggleAutoLogin(bool)));
+ connect(userlist, SIGNAL(activated(int)), this, SLOT(changeLoginName(int)));
connect(changepasscode,SIGNAL(clicked()), this, SLOT(changePassCode()));
connect(clearpasscode,SIGNAL(clicked()), this, SLOT(clearPassCode()));
+
+ loadUsers();
updateGUI();
@@ -78,4 +99,8 @@ void Security::updateGUI()
passcode_poweron->setEnabled( !empty );
clearpasscode->setEnabled( !empty );
+
+ autologinToggle->setChecked(autoLogin);
+ userlist->setEnabled(autoLogin);
+
}
@@ -161,4 +186,34 @@ void Security::parseNet(const QString& sn,int& auth_peer,int& auth_peer_bits)
}
+void Security::loadUsers ( void )
+{
+ QFile passwd("/etc/passwd");
+ if ( passwd.open(IO_ReadOnly) ) {
+ QTextStream t( &passwd );
+ QString s;
+ QStringList account;
+ while ( !t.eof() ) {
+ account = QStringList::split(':',t.readLine());
+
+ // Hide disabled accounts
+ if (*account.at(1)!="*") {
+
+ userlist->insertItem(*account.at(0));
+ // Highlight this item if it is set to autologinToggle
+ if ( *account.at(0) == autoLoginName)
+ userlist->setCurrentItem(userlist->count()-1);
+ }
+ }
+ passwd.close();
+ }
+
+}
+void Security::toggleAutoLogin(bool val)
+{
+ autoLogin=val;
+ userlist->setEnabled(val);
+ if (!autoLogin)
+ autoLoginName=userlist->currentText();
+}
void Security::setSyncNet(const QString& sn)
{
@@ -190,5 +245,22 @@ void Security::applySecurity()
// ### write ssh/telnet sys config files
*/
+
+ QString configFile = QPEApplication::qpeDir() + "/etc/opie-login.conf";
+ Config loginCfg(configFile,Config::File);
+ loginCfg.setGroup("General");
+
+ if (autoLogin) {
+ loginCfg.writeEntry("AutoLogin",autoLoginName);
+ } else {
+ loginCfg.removeEntry("AutoLogin");
+ }
+
+ }
}
+
+void Security::changeLoginName( int idx )
+{
+ autoLoginName = userlist->text(idx);;
+ updateGUI();
}
diff --git a/core/settings/security/security.h b/core/settings/security/security.h
index efc83a2..2f18f91 100644
--- a/core/settings/security/security.h
+++ b/core/settings/security/security.h
@@ -44,6 +44,10 @@ private slots:
void clearPassCode();
void setSyncNet(const QString&);
+ void changeLoginName(int);
+ void toggleAutoLogin(bool);
+
private:
+ void loadUsers(void);
bool telnetAvailable() const;
bool sshAvailable() const;
@@ -56,4 +60,6 @@ private:
QString passcode;
bool valid;
+ bool autoLogin;
+ QString autoLoginName;
QPEDialogListener *dl;
diff --git a/core/settings/security/securitybase.ui b/core/settings/security/securitybase.ui
index c2a8953..da25f39 100644
--- a/core/settings/security/securitybase.ui
+++ b/core/settings/security/securitybase.ui
@@ -12,6 +12,6 @@
<x>0</x>
<y>0</y>
- <width>277</width>
- <height>328</height>
+ <width>329</width>
+ <height>483</height>
</rect>
</property>
@@ -26,14 +26,61 @@
<name>layoutSpacing</name>
</property>
- <grid>
+ <vbox>
<property stdset="1">
<name>margin</name>
- <number>3</number>
+ <number>0</number>
</property>
<property stdset="1">
<name>spacing</name>
- <number>3</number>
+ <number>0</number>
+ </property>
+ <widget>
+ <class>QTabWidget</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>TabWidget2</cstring>
+ </property>
+ <property>
+ <name>layoutMargin</name>
</property>
- <widget row="0" column="0" >
+ <widget>
+ <class>QWidget</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>tab</cstring>
+ </property>
+ <attribute>
+ <name>title</name>
+ <string>Passcode</string>
+ </attribute>
+ <vbox>
+ <property stdset="1">
+ <name>margin</name>
+ <number>6</number>
+ </property>
+ <property stdset="1">
+ <name>spacing</name>
+ <number>6</number>
+ </property>
+ <widget>
+ <class>QGroupBox</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>GroupBox4</cstring>
+ </property>
+ <property stdset="1">
+ <name>title</name>
+ <string>Passcode</string>
+ </property>
+ <vbox>
+ <property stdset="1">
+ <name>margin</name>
+ <number>11</number>
+ </property>
+ <property stdset="1">
+ <name>spacing</name>
+ <number>6</number>
+ </property>
+ <widget>
<class>QLayoutWidget</class>
<property stdset="1">
@@ -77,5 +124,5 @@
</hbox>
</widget>
- <widget row="1" column="0" >
+ <widget>
<class>QCheckBox</class>
<property stdset="1">
@@ -88,10 +135,139 @@
</property>
</widget>
- <widget row="3" column="0" >
- <class>QTabWidget</class>
+ <widget>
+ <class>QLabel</class>
<property stdset="1">
<name>name</name>
- <cstring>TabWidget2</cstring>
+ <cstring>TextLabel1</cstring>
+ </property>
+ <property stdset="1">
+ <name>sizePolicy</name>
+ <sizepolicy>
+ <hsizetype>5</hsizetype>
+ <vsizetype>7</vsizetype>
+ </sizepolicy>
+ </property>
+ <property stdset="1">
+ <name>text</name>
+ <string>&lt;P&gt;Pass code protection provides a minimal level of protection from casual access to this device.</string>
+ </property>
+ <property stdset="1">
+ <name>textFormat</name>
+ <enum>RichText</enum>
+ </property>
+ <property stdset="1">
+ <name>alignment</name>
+ <set>AlignTop|AlignLeft</set>
+ </property>
+ <property>
+ <name>vAlign</name>
+ </property>
+ </widget>
+ </vbox>
+ </widget>
+ <spacer>
+ <property>
+ <name>name</name>
+ <cstring>Spacer3</cstring>
+ </property>
+ <property stdset="1">
+ <name>orientation</name>
+ <enum>Vertical</enum>
+ </property>
+ <property stdset="1">
+ <name>sizeType</name>
+ <enum>Expanding</enum>
+ </property>
+ <property>
+ <name>sizeHint</name>
+ <size>
+ <width>20</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </vbox>
+ </widget>
+ <widget>
+ <class>QWidget</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>tab</cstring>
+ </property>
+ <attribute>
+ <name>title</name>
+ <string>Login</string>
+ </attribute>
+ <vbox>
+ <property stdset="1">
+ <name>margin</name>
+ <number>6</number>
+ </property>
+ <property stdset="1">
+ <name>spacing</name>
+ <number>6</number>
+ </property>
+ <widget>
+ <class>QGroupBox</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>GroupBox3</cstring>
+ </property>
+ <property stdset="1">
+ <name>title</name>
+ <string>Login</string>
+ </property>
+ <vbox>
+ <property stdset="1">
+ <name>margin</name>
+ <number>11</number>
+ </property>
+ <property stdset="1">
+ <name>spacing</name>
+ <number>6</number>
+ </property>
+ <widget>
+ <class>QCheckBox</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>autologinToggle</cstring>
+ </property>
+ <property stdset="1">
+ <name>text</name>
+ <string>Login Automatically</string>
+ </property>
+ </widget>
+ <widget>
+ <class>QComboBox</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>userlist</cstring>
+ </property>
+ </widget>
+ </vbox>
+ </widget>
+ <spacer>
+ <property>
+ <name>name</name>
+ <cstring>Spacer2</cstring>
</property>
+ <property stdset="1">
+ <name>orientation</name>
+ <enum>Vertical</enum>
+ </property>
+ <property stdset="1">
+ <name>sizeType</name>
+ <enum>Expanding</enum>
+ </property>
+ <property>
+ <name>sizeHint</name>
+ <size>
+ <width>20</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </vbox>
+ </widget>
<widget>
<class>QWidget</class>
@@ -107,4 +283,23 @@
<property stdset="1">
<name>margin</name>
+ <number>6</number>
+ </property>
+ <property stdset="1">
+ <name>spacing</name>
+ <number>6</number>
+ </property>
+ <widget>
+ <class>QGroupBox</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>GroupBox2</cstring>
+ </property>
+ <property stdset="1">
+ <name>title</name>
+ <string>Sync</string>
+ </property>
+ <vbox>
+ <property stdset="1">
+ <name>margin</name>
<number>11</number>
</property>
@@ -123,4 +318,8 @@
<string>Accept sync from network:</string>
</property>
+ <property stdset="1">
+ <name>textFormat</name>
+ <enum>RichText</enum>
+ </property>
</widget>
<widget>
@@ -185,31 +384,29 @@
</vbox>
</widget>
- </widget>
- <widget row="2" column="0" >
- <class>QLabel</class>
- <property stdset="1">
+ <spacer>
+ <property>
<name>name</name>
- <cstring>TextLabel1</cstring>
+ <cstring>Spacer1</cstring>
</property>
<property stdset="1">
- <name>sizePolicy</name>
- <sizepolicy>
- <hsizetype>5</hsizetype>
- <vsizetype>7</vsizetype>
- </sizepolicy>
+ <name>orientation</name>
+ <enum>Vertical</enum>
</property>
<property stdset="1">
- <name>text</name>
- <string>&lt;P&gt;Pass code protection provides a minimal level of protection from casual access to this device.</string>
- </property>
- <property stdset="1">
- <name>alignment</name>
- <set>AlignTop|AlignLeft</set>
+ <name>sizeType</name>
+ <enum>Expanding</enum>
</property>
<property>
- <name>vAlign</name>
+ <name>sizeHint</name>
+ <size>
+ <width>20</width>
+ <height>20</height>
+ </size>
</property>
+ </spacer>
+ </vbox>
</widget>
- </grid>
+ </widget>
+ </vbox>
</widget>
</UI>