summaryrefslogtreecommitdiff
path: root/core
authorclem <clem>2004-10-08 22:50:28 (UTC)
committer clem <clem>2004-10-08 22:50:28 (UTC)
commit2f29d0ec4bb2355f193d744c890add203bd6f2b2 (patch) (side-by-side diff)
treea703b00b673b9be036415393b53d9c95a5bb87cd /core
parentdec031cc21181d70e0c806bcf6c228044f7df90b (diff)
downloadopie-2f29d0ec4bb2355f193d744c890add203bd6f2b2.zip
opie-2f29d0ec4bb2355f193d744c890add203bd6f2b2.tar.gz
opie-2f29d0ec4bb2355f193d744c890add203bd6f2b2.tar.bz2
Big commit thanks to a little feature request :-) We now have an O-menu applet
to lock the PDA immediately, and the internal way to ask for an authentication (on resume, on start up, on demand or for a simple test) is much cleaner: it's through MultiauthPassword(int lockMode) (instead of the old bool at_poweron)
Diffstat (limited to 'core') (more/less context) (ignore whitespace changes)
-rw-r--r--core/applets/lockapplet/.cvsignore4
-rw-r--r--core/applets/lockapplet/config.in4
-rw-r--r--core/applets/lockapplet/lock.cpp84
-rw-r--r--core/applets/lockapplet/lock.h36
-rw-r--r--core/applets/lockapplet/lockapplet.pro12
-rw-r--r--core/applets/lockapplet/opie-lockapplet.control11
-rw-r--r--core/launcher/serverapp.cpp3
-rw-r--r--core/settings/security/demo/main.cpp2
-rw-r--r--core/settings/security/multiauthconfig.cpp20
9 files changed, 157 insertions, 19 deletions
diff --git a/core/applets/lockapplet/.cvsignore b/core/applets/lockapplet/.cvsignore
new file mode 100644
index 0000000..5e2908c
--- a/dev/null
+++ b/core/applets/lockapplet/.cvsignore
@@ -0,0 +1,4 @@
+Makefile*
+.moc
+.obj
+
diff --git a/core/applets/lockapplet/config.in b/core/applets/lockapplet/config.in
new file mode 100644
index 0000000..ddc3522
--- a/dev/null
+++ b/core/applets/lockapplet/config.in
@@ -0,0 +1,4 @@
+ config LOCKAPPLET
+ boolean "opie-lockapplet (button in the Opie menu to lock the PDA)"
+ default "y"
+ depends ( LIBQPE || LIBQPE-X11 ) && SECURITY
diff --git a/core/applets/lockapplet/lock.cpp b/core/applets/lockapplet/lock.cpp
new file mode 100644
index 0000000..89f27bb
--- a/dev/null
+++ b/core/applets/lockapplet/lock.cpp
@@ -0,0 +1,84 @@
+#include "lock.h"
+
+/* OPIE */
+#include <opie2/multiauthpassword.h>
+
+#include <qpe/applnk.h>
+#include <qpe/resource.h>
+
+/* QT */
+#include <qiconset.h>
+#include <qpopupmenu.h>
+#include <qmessagebox.h>
+
+
+LockMenuApplet::LockMenuApplet()
+ :QObject( 0, "LockMenuApplet" )
+{
+}
+
+LockMenuApplet::~LockMenuApplet ( )
+{}
+
+int LockMenuApplet::position() const
+{
+ return 3;
+}
+
+QString LockMenuApplet::name() const
+{
+ return tr( "Lock shortcut" );
+}
+
+QString LockMenuApplet::text() const
+{
+ return tr( "Lock" );
+}
+
+
+QIconSet LockMenuApplet::icon() const
+{
+ QPixmap pix;
+ QImage img = Resource::loadImage( "security/lock" );
+ if ( !img.isNull() )
+ pix.convertFromImage( img.smoothScale( AppLnk::smallIconSize(), AppLnk::smallIconSize() ) );
+ return pix;
+}
+
+QPopupMenu* LockMenuApplet::popup(QWidget*) const
+{
+ /* no subdir */
+ return 0;
+}
+
+void LockMenuApplet::activated()
+{
+ /*
+ QMessageBox::information(0,tr("No white rabbit found"),
+ tr("<qt>No white rabbit was seen near Opie."
+ "Only the beautiful OpieZilla is available"
+ "for your pleassure</qt>"));
+ */
+ Opie::Security::MultiauthPassword::authenticate(Opie::Security::LockNow);
+}
+
+
+QRESULT LockMenuApplet::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( LockMenuApplet )
+}
diff --git a/core/applets/lockapplet/lock.h b/core/applets/lockapplet/lock.h
new file mode 100644
index 0000000..ff94bce
--- a/dev/null
+++ b/core/applets/lockapplet/lock.h
@@ -0,0 +1,36 @@
+/**
+ * \file lock.h
+ * \brief defines a lock button that goes in the 'O' Opie menu
+ * It's based on the examples/menuapplet code of 2004/10/06.
+ */
+#ifndef CORE_SETTINGS_SECURITY_LOCKAPPLET_LOCK_H
+#define CORE_SETTINGS_SECURITY_LOCKAPPLET_LOCK_H
+
+#include <qpe/menuappletinterface.h>
+#include <qobject.h>
+
+class LockMenuApplet: public QObject, public MenuAppletInterface
+{
+
+ Q_OBJECT
+
+public:
+ LockMenuApplet ( );
+ virtual ~LockMenuApplet ( );
+
+ 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 ( );
+};
+
+#endif
diff --git a/core/applets/lockapplet/lockapplet.pro b/core/applets/lockapplet/lockapplet.pro
new file mode 100644
index 0000000..e0ee780
--- a/dev/null
+++ b/core/applets/lockapplet/lockapplet.pro
@@ -0,0 +1,12 @@
+TEMPLATE = lib
+CONFIG += qt plugn warn_on
+HEADERS = lock.h
+SOURCES = lock.cpp
+TARGET = lockapplet
+DESTDIR = $(OPIEDIR)/plugins/applets
+INCLUDEPATH += $(OPIEDIR)/include
+DEPENDPATH += $(OPIEDIR)/include
+LIBS += -lqpe
+VERSION = 1.0.0
+
+include ( $(OPIEDIR)/include.pro )
diff --git a/core/applets/lockapplet/opie-lockapplet.control b/core/applets/lockapplet/opie-lockapplet.control
new file mode 100644
index 0000000..e175a3e
--- a/dev/null
+++ b/core/applets/lockapplet/opie-lockapplet.control
@@ -0,0 +1,11 @@
+Package: opie-lockapplet
+Files: plugins/applets/liblockapplet.so*
+Priority: optional
+Section: opie/applets
+Maintainer: Opie Team <opie@handhelds.org>
+Architecture: arm
+Depends: task-opie-minimal, opie-security
+Description: Lock Opie now
+ Button to lock Opie (as configured in the Security
+ settings) on demand.
+Version: $QPE_VERSION$EXTRAVERSION
diff --git a/core/launcher/serverapp.cpp b/core/launcher/serverapp.cpp
index dc1f2c7..e541d10 100644
--- a/core/launcher/serverapp.cpp
+++ b/core/launcher/serverapp.cpp
@@ -510,7 +510,8 @@ void ServerApplication::login(bool at_poweron)
{
if ( !loggedin ) {
Global::terminateBuiltin("calibrate"); // No tr
- Opie::Security::MultiauthPassword::authenticate(at_poweron);
+ int lockMode = at_poweron ? Opie::Security::IfPowerOn : Opie::Security::IfResume;
+ Opie::Security::MultiauthPassword::authenticate(lockMode);
loggedin=1;
#ifndef QT_NO_COP
QCopEnvelope e( "QPE/Desktop", "unlocked()" );
diff --git a/core/settings/security/demo/main.cpp b/core/settings/security/demo/main.cpp
index 1c49f57..82f940d 100644
--- a/core/settings/security/demo/main.cpp
+++ b/core/settings/security/demo/main.cpp
@@ -8,5 +8,5 @@ int main( int argc, char ** argv )
Opie::Core::OApplication app(argc, argv, "Multi-authentication demo");
// Run the authentication process until it succeeds
- Opie::Security::MultiauthPassword::authenticate();
+ Opie::Security::MultiauthPassword::authenticate(Opie::Security::LockNow);
}
diff --git a/core/settings/security/multiauthconfig.cpp b/core/settings/security/multiauthconfig.cpp
index 192b8ca..9d5c032 100644
--- a/core/settings/security/multiauthconfig.cpp
+++ b/core/settings/security/multiauthconfig.cpp
@@ -1,5 +1,5 @@
#include <opie2/odebug.h>
-#include <opie2/multiauthmainwindow.h>
+#include <opie2/multiauthpassword.h>
#include <qgroupbox.h>
#include <qvgroupbox.h>
@@ -121,22 +121,8 @@ void MultiauthGeneralConfig::tryAuth()
owarn << "writing config as user accepted" << oendl;
m_parentConfig->writeConfigs();
owarn << "testing authentication" << oendl;
-
- /* launch the authentication in debug, aka "allowBypass == true", mode
- */
-
- Opie::Security::MultiauthMainWindow win(true);
- // resize the QDialog object so it fills all the screen
- QRect desk = qApp->desktop()->geometry();
- win.setGeometry( 0, 0, desk.width(), desk.height() );
-
- // the authentication has already succeeded (without win interactions)
- if ( win.isAlreadyDone() )
- return;
-
- win.exec();
-
- }
+ // launch the authentication in testing mode
+ Opie::Security::MultiauthPassword::authenticate(Opie::Security::TestNow);
}