author | clem <clem> | 2004-06-15 13:49:36 (UTC) |
---|---|---|
committer | clem <clem> | 2004-06-15 13:49:36 (UTC) |
commit | 5431072f0ea1cbc8ca37914b6349e66079f1acff (patch) (side-by-side diff) | |
tree | da335f89e506cde6ffe59a252b4ccab4e177809b /noncore/securityplugins/pin | |
parent | ba4722d0fed5527a5b799281caf6324f2e7ad5d8 (diff) | |
download | opie-5431072f0ea1cbc8ca37914b6349e66079f1acff.zip opie-5431072f0ea1cbc8ca37914b6349e66079f1acff.tar.gz opie-5431072f0ea1cbc8ca37914b6349e66079f1acff.tar.bz2 |
First revision of securityplugins, called by libopiesecurity2 authentication framework (see http://dudu.dyn.2-h.org/nist/OMAF.php).
-rw-r--r-- | noncore/securityplugins/pin/.cvsignore | 4 | ||||
-rw-r--r-- | noncore/securityplugins/pin/Makefile | 237 | ||||
-rw-r--r-- | noncore/securityplugins/pin/config.in | 4 | ||||
-rw-r--r-- | noncore/securityplugins/pin/pin.control | 12 | ||||
-rw-r--r-- | noncore/securityplugins/pin/pin.cpp | 342 | ||||
-rw-r--r-- | noncore/securityplugins/pin/pin.h | 68 | ||||
-rw-r--r-- | noncore/securityplugins/pin/pinConfigWidget.cpp | 39 | ||||
-rw-r--r-- | noncore/securityplugins/pin/pinConfigWidget.h | 51 | ||||
-rw-r--r-- | noncore/securityplugins/pin/pinDialogBase.cpp | 304 | ||||
-rw-r--r-- | noncore/securityplugins/pin/pinDialogBase.h | 47 | ||||
-rw-r--r-- | noncore/securityplugins/pin/pinDialogBase.ui | 1258 | ||||
-rw-r--r-- | noncore/securityplugins/pin/pinplugin.pro | 21 | ||||
-rw-r--r-- | noncore/securityplugins/pin/pinpluginimpl.cpp | 28 | ||||
-rw-r--r-- | noncore/securityplugins/pin/pinpluginimpl.h | 58 |
14 files changed, 2473 insertions, 0 deletions
diff --git a/noncore/securityplugins/pin/.cvsignore b/noncore/securityplugins/pin/.cvsignore new file mode 100644 index 0000000..2fc28bd --- a/dev/null +++ b/noncore/securityplugins/pin/.cvsignore @@ -0,0 +1,4 @@ +*.moc +Makefile +pinDialogBase.cpp +pinDialogBase.h diff --git a/noncore/securityplugins/pin/Makefile b/noncore/securityplugins/pin/Makefile new file mode 100644 index 0000000..8c6a231 --- a/dev/null +++ b/noncore/securityplugins/pin/Makefile @@ -0,0 +1,237 @@ +############################################################################# +# Makefile for building: libmultiauthpinplugin.so.0.0.2 +# Generated by qmake (1.05a) (Qt 3.1.2) on: Mon Jun 14 11:00:20 2004 +# Project: pinplugin.pro +# Template: lib +# Command: $(QMAKE) -o Makefile pinplugin.pro +############################################################################# + +####### Compiler, tools and options + +CC = $(CCACHE) $(DISTCC) gcc +CXX = $(CCACHE) $(DISTCC) g++ +LEX = flex +YACC = yacc +CFLAGS = -pipe $(CFLAGS_EXTRA) -Wall -W -g -fPIC -DQT_COMPONENT_DEBUG=2 -DQT_DEBUG -DOPIE_NO_BUILTIN_SHUTDOWN -DUSE_FILE_NOTIFICATION -DOPIE_SOUND_FRAGMENT_SHIFT=16 +CXXFLAGS = -pipe $(CFLAGS_EXTRA) -DQWS -fno-exceptions -fno-rtti $(CXXFLAGS_EXTRA) -Wall -W -g -fPIC -DQT_COMPONENT_DEBUG=2 -DQT_DEBUG -DOPIE_NO_BUILTIN_SHUTDOWN -DUSE_FILE_NOTIFICATION -DOPIE_SOUND_FRAGMENT_SHIFT=16 +LEXFLAGS = +YACCFLAGS= -d +INCPATH = -I/opt/opie/mkspecs/qws/linux-generic-g++ -I. -I$(OPIEDIR)/include -I$(QTDIR)/include -I.moc/$(PLATFORM)/ +LINK = g++ +LFLAGS = $(LFLAGS_EXTRA) -Wl,-rpath-link,$(OPIEDIR)/lib -shared -Wl,-soname,libmultiauthpinplugin.so.0 -Wl,-rpath,/opt/opie/plugins/security +LIBS = $(SUBLIBS) -Wl,-rpath,$(QTDIR)/lib -L$(QTDIR)/lib $(LIBS_EXTRA) -lqpe -lopieui2 -L$(OPIEDIR)/lib -lqte +AR = ar cqs +RANLIB = +MOC = $(QTDIR)/bin/moc +UIC = $(QTDIR)/bin/uic +QMAKE = qmake +TAR = tar -cf +GZIP = gzip -9f +COPY = cp -f +COPY_FILE= $(COPY) -p +COPY_DIR = $(COPY) -pR +DEL_FILE = rm -f +SYMLINK = ln -sf +DEL_DIR = rmdir +MOVE = mv -f +PRO = pinplugin.pro +CHK_DIR_EXISTS= +MKDIR = + +####### Output directory + +OBJECTS_DIR = .obj/$(PLATFORM)/ + +####### Files + +HEADERS = pin.h \ + pinpluginimpl.h \ + pinConfigWidget.h +SOURCES = pin.cpp \ + pinpluginimpl.cpp \ + pinConfigWidget.cpp +OBJECTS = .obj/$(PLATFORM)/pin.o \ + .obj/$(PLATFORM)/pinpluginimpl.o \ + .obj/$(PLATFORM)/pinConfigWidget.o \ + .obj/$(PLATFORM)/pinDialogBase.o +FORMS = pinDialogBase.ui +UICDECLS = pinDialogBase.h +UICIMPLS = pinDialogBase.cpp +SRCMOC = .moc/$(PLATFORM)/moc_pin.cpp \ + .moc/$(PLATFORM)/moc_pinDialogBase.cpp \ + .moc/$(PLATFORM)/pin.moc +OBJMOC = .obj/$(PLATFORM)/moc_pin.o \ + .obj/$(PLATFORM)/moc_pinDialogBase.o +DIST = ../../../gen.pro \ + ../../../include.pro \ + pinplugin.pro +QMAKE_TARGET = multiauthpinplugin +DESTDIR = $(OPIEDIR)/plugins/security/ +TARGET = libmultiauthpinplugin.so.0.0.2 +TARGETA = $(OPIEDIR)/plugins/security/libmultiauthpinplugin.a +TARGETD = libmultiauthpinplugin.so.0.0.2 +TARGET0 = libmultiauthpinplugin.so +TARGET1 = libmultiauthpinplugin.so.0 +TARGET2 = libmultiauthpinplugin.so.0.0 + +first: all +####### Implicit rules + +.SUFFIXES: .c .cpp .cc .cxx .C + +.cpp.o: + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $< + +.cc.o: + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $< + +.cxx.o: + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $< + +.C.o: + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $< + +.c.o: + $(CC) -c $(CFLAGS) $(INCPATH) -o $@ $< + +####### Build rules + +all: Makefile $(OPIEDIR)/plugins/security/$(TARGET) + +$(OPIEDIR)/plugins/security/$(TARGET): $(UICDECLS) $(OBJECTS) $(OBJMOC) $(SUBLIBS) + test -d $(OPIEDIR)/plugins/security/ || mkdir -p $(OPIEDIR)/plugins/security/ + -$(DEL_FILE) $(TARGET) $(TARGET0) $(TARGET1) $(TARGET2) + $(LINK) $(LFLAGS) -o $(TARGET) $(OBJECTS) $(OBJMOC) $(LIBS) + -ln -s $(TARGET) $(TARGET0) + -ln -s $(TARGET) $(TARGET1) + -ln -s $(TARGET) $(TARGET2) + -$(DEL_FILE) $(OPIEDIR)/plugins/security/$(TARGET) + -$(DEL_FILE) $(OPIEDIR)/plugins/security/$(TARGET0) + -$(DEL_FILE) $(OPIEDIR)/plugins/security/$(TARGET1) + -$(DEL_FILE) $(OPIEDIR)/plugins/security/$(TARGET2) + -$(MOVE) $(TARGET) $(TARGET0) $(TARGET1) $(TARGET2) $(OPIEDIR)/plugins/security/ + + + +staticlib: $(TARGETA) + +$(TARGETA): $(UICDECLS) $(OBJECTS) $(OBJMOC) + -$(DEL_FILE) $(TARGETA) + $(AR) $(TARGETA) $(OBJECTS) $(OBJMOC) + +mocables: $(SRCMOC) + +$(MOC): + ( cd $(QTDIR)/src/moc ; $(MAKE) ) + +Makefile: pinplugin.pro /opt/opie/mkspecs/qws/linux-generic-g++/qmake.conf ../../../gen.pro \ + ../../../include.pro + $(QMAKE) -o Makefile pinplugin.pro +qmake: + @$(QMAKE) -o Makefile pinplugin.pro + +dist: + @mkdir -p .obj/$(PLATFORM)/multiauthpinplugin && $(COPY_FILE) --parents $(SOURCES) $(HEADERS) $(FORMS) $(DIST) .obj/$(PLATFORM)/multiauthpinplugin/ && ( cd `dirname .obj/$(PLATFORM)/multiauthpinplugin` && $(TAR) multiauthpinplugin.tar multiauthpinplugin && $(GZIP) multiauthpinplugin.tar ) && $(MOVE) `dirname .obj/$(PLATFORM)/multiauthpinplugin`/multiauthpinplugin.tar.gz . && $(DEL_FILE) -r .obj/$(PLATFORM)/multiauthpinplugin + +mocclean: + -$(DEL_FILE) $(OBJMOC) + -$(DEL_FILE) $(SRCMOC) + +uiclean: + -$(DEL_FILE) $(UICIMPLS) $(UICDECLS) + +yaccclean: +lexclean: +clean: mocclean uiclean + -$(DEL_FILE) $(OBJECTS) + -$(DEL_FILE) *~ core *.core + + +####### Sub-libraries + +distclean: clean + -$(DEL_FILE) $(OPIEDIR)/plugins/security/$(TARGET) $(TARGET) + -$(DEL_FILE) $(OPIEDIR)/plugins/security/$(TARGET0) $(OPIEDIR)/plugins/security/$(TARGET1) $(OPIEDIR)/plugins/security/$(TARGET2) $(TARGETA) + + +lupdate: + lupdate -noobsolete $(PRO) + +lrelease: + lrelease $(PRO) + +ipk: + tmp=`mktemp -d /tmp/ipkg-opie.XXXXXXXXXX` && ( $(MAKE) INSTALL_ROOT="" install && ipkg-build ; rm -rf ; ) + +opie-lupdate: + opie-lupdate $(PRO) + +opie-lrelease: + opie-lrelease $(PRO) + +messages: + xgettext -C -n -ktr -kQT_TRANSLATE_NOOP pin.h pinpluginimpl.h pinConfigWidget.h pin.cpp pinpluginimpl.cpp pinConfigWidget.cpp -o '$(OPIEDIR)/messages-$(QMAKE_TARGET)-tr.po' && xgettext -C -n -a pin.h pinpluginimpl.h pinConfigWidget.h pin.cpp pinpluginimpl.cpp pinConfigWidget.cpp -o '$(OPIEDIR)/messages-$(QMAKE_TARGET)-allstrings.po' + +FORCE: + +####### Compile + +.obj/$(PLATFORM)/pin.o: pin.cpp pin.h \ + pinDialogBase.h \ + pinConfigWidget.h \ + .moc/$(PLATFORM)/pin.moc + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o .obj/$(PLATFORM)/pin.o pin.cpp + +.obj/$(PLATFORM)/pinpluginimpl.o: pinpluginimpl.cpp pinpluginimpl.h \ + pin.h \ + pinConfigWidget.h + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o .obj/$(PLATFORM)/pinpluginimpl.o pinpluginimpl.cpp + +.obj/$(PLATFORM)/pinConfigWidget.o: pinConfigWidget.cpp pinConfigWidget.h + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o .obj/$(PLATFORM)/pinConfigWidget.o pinConfigWidget.cpp + +pinDialogBase.h: pinDialogBase.ui + $(UIC) pinDialogBase.ui -o pinDialogBase.h + +pinDialogBase.cpp: pinDialogBase.h pinDialogBase.ui + $(UIC) pinDialogBase.ui -i pinDialogBase.h -o pinDialogBase.cpp + +.obj/$(PLATFORM)/pinDialogBase.o: pinDialogBase.cpp pinDialogBase.h + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o .obj/$(PLATFORM)/pinDialogBase.o pinDialogBase.cpp + +.obj/$(PLATFORM)/moc_pin.o: .moc/$(PLATFORM)/moc_pin.cpp pin.h pinConfigWidget.h + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o .obj/$(PLATFORM)/moc_pin.o .moc/$(PLATFORM)/moc_pin.cpp + +.obj/$(PLATFORM)/moc_pinDialogBase.o: .moc/$(PLATFORM)/moc_pinDialogBase.cpp pinDialogBase.h + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o .obj/$(PLATFORM)/moc_pinDialogBase.o .moc/$(PLATFORM)/moc_pinDialogBase.cpp + +.moc/x86-linux/moc_pin.cpp: $(MOC) pin.h + $(MOC) pin.h -o .moc/x86-linux/moc_pin.cpp + +.moc/x86-linux/pin.moc: $(MOC) pin.cpp + $(MOC) pin.cpp -o .moc/x86-linux/pin.moc + +.moc/x86-linux/moc_pinDialogBase.cpp: $(MOC) pinDialogBase.h + $(MOC) pinDialogBase.h -o .moc/x86-linux/moc_pinDialogBase.cpp + +####### Install + +install_target: + @$(CHK_DIR_EXISTS) "$(INSTALL_ROOT)$(OPIEDIR)/lib/" || $(MKDIR) "$(INSTALL_ROOT)$(OPIEDIR)/lib/" + -$(COPY) "$(OPIEDIR)/plugins/security/$(TARGET)" "$(INSTALL_ROOT)$(OPIEDIR)/lib/$(TARGET)" + -$(SYMLINK) "$(TARGET)" "$(INSTALL_ROOT)$(OPIEDIR)/lib/$(TARGET0)" + -$(SYMLINK) "$(TARGET)" "$(INSTALL_ROOT)$(OPIEDIR)/lib/$(TARGET1)" + -$(SYMLINK) "$(TARGET)" "$(INSTALL_ROOT)$(OPIEDIR)/lib/$(TARGET2)" + +uninstall_target: + -$(DEL_FILE) "$(INSTALL_ROOT)$(OPIEDIR)/lib/$(TARGET)" + -$(DEL_FILE) "$(INSTALL_ROOT)$(OPIEDIR)/lib/$(TARGET0)" + -$(DEL_FILE) "$(INSTALL_ROOT)$(OPIEDIR)/lib/$(TARGET1)" + -$(DEL_FILE) "$(INSTALL_ROOT)$(OPIEDIR)/lib/$(TARGET2)" + -$(DEL_DIR) "$(INSTALL_ROOT)$(OPIEDIR)/lib/" + + +install: all install_target + +uninstall: uninstall_target + diff --git a/noncore/securityplugins/pin/config.in b/noncore/securityplugins/pin/config.in new file mode 100644 index 0000000..d255038 --- a/dev/null +++ b/noncore/securityplugins/pin/config.in @@ -0,0 +1,4 @@ + config MULTIAUTH_PIN + boolean "opie-multiauth-pin (PIN authentication plugin for opie-multiauth)" + default "y" + depends SECURITY diff --git a/noncore/securityplugins/pin/pin.control b/noncore/securityplugins/pin/pin.control new file mode 100644 index 0000000..158e20d --- a/dev/null +++ b/noncore/securityplugins/pin/pin.control @@ -0,0 +1,12 @@ +Package: opie-multiauth-pinplugin +Files: plugins/security/libmultiauthpinplugin.so* pics/security/pinplugin.png +Priority: optional +Section: opie/settings +Maintainer: Clement Seveillac <clement@nist.gov> +Architecture: arm +Version: 0.0.2.6 +Depends: opie-security +Description: PIN plugin for opie-security authentication. + It implements the same kind of widgets as opie-security package, + but this implementation can be used along with other authentication + methods in the Opie Multi-Authentication Framework. diff --git a/noncore/securityplugins/pin/pin.cpp b/noncore/securityplugins/pin/pin.cpp new file mode 100644 index 0000000..37dc5be --- a/dev/null +++ b/noncore/securityplugins/pin/pin.cpp @@ -0,0 +1,342 @@ +/** + * \note Taken from opie-security and libqpe password.cpp, and modified for Opie multiauth by Clement Seveillac + */ +/********************************************************************** + ** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. + ** + ** 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. + ** + **********************************************************************/ + +#include "pin.h" +#include "pinDialogBase.h" +#include "pinConfigWidget.h" +/* OPIE */ +#include <opie2/odebug.h> +#include <opie2/oapplication.h> +/* QT */ +#include <qpe/config.h> +#include <qlabel.h> +#include <qlineedit.h> +#include <qtextview.h> +#include <qstring.h> +#include <qdialog.h> +/* UNIX */ +#include <unistd.h> +#include <stdlib.h> +#include <time.h> + +extern "C" char *crypt(const char *key, const char *salt); + +/// set to TRUE when we press the 'Skip' button +bool isSkip = FALSE; + +/// PIN input graphical widget. +/** + * Inherits the PinDialogBase class defined originally in pinDialogBase.ui interface file. + * \sa PinDlg and PinDialog (the class generated from the .ui file) + * It comes from the original PIN locking code in Opie : + * \sa http://dudu.dyn.2-h.org/opiedoxydoc/library_2password_8cpp-source.html + */ +class PinDialog : public PinDialogBase +{ + Q_OBJECT + + public: + PinDialog( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 ); + ~PinDialog(); + + void clear(); + void setPrompt( const QString& ); + +signals: + /// emitted when we press the Enter button + void passwordEntered( const QString& ); + /// emitted when we press the Skip button + void skip(); + + protected: + bool eventFilter( QObject*, QEvent* ); + + private: + void input( QString ); + friend class PinPlugin; + QString text; +}; + + +/// Constructs a PinDialog widget, and initializes things +PinDialog::PinDialog( QWidget* parent, const char* name, WFlags fl ) + : PinDialogBase( parent, name, fl ) +{ + QRect desk = oApp->desktop()->geometry(); + + if ( desk.width() < 220 ) { + QFont f( font() ); + f.setPointSize( 18 ); + setFont( f ); + f.setPointSize( 12 ); + prompt->setFont( f ); + } + + button_0->installEventFilter( this ); + button_1->installEventFilter( this ); + button_2->installEventFilter( this ); + button_3->installEventFilter( this ); + button_4->installEventFilter( this ); + button_5->installEventFilter( this ); + button_6->installEventFilter( this ); + button_7->installEventFilter( this ); + button_8->installEventFilter( this ); + button_9->installEventFilter( this ); + button_Skip->installEventFilter( this ); + button_OK->installEventFilter( this ); + setFocus(); +} + +/// nothing to do +PinDialog::~PinDialog() +{ + // no need to delete child widgets, Qt does it all for us +} + +/// Record the pressed numbers, and the Skip and Enter commands +bool PinDialog::eventFilter( QObject*o, QEvent*e ) +{ + if ( e->type() == QEvent::MouseButtonRelease ) { + if ( o == button_OK ) { + emit passwordEntered( text ); + } + else if ( o == button_Skip ) { + isSkip = TRUE; + emit skip(); + } + else { + QLabel *l = (QLabel*)o; + input(l->text()); + } + } + return FALSE; +} + +void PinDialog::input( QString c ) +{ + text += c; + display->setText( text ); +} + +void PinDialog::setPrompt( const QString& s ) +{ + prompt->setText( s ); +} + +void PinDialog::clear() +{ + text = ""; + input(""); +} + +/// PIN dialog +/** + * Dialog containing the PinDialog widget (which asks for a PIN) and interfacing with its I/O. + * \sa PinDialog + */ +class PinDlg : public QDialog +{ + public: + PinDlg( QWidget *parent, const char * name, bool modal, bool fullscreen = FALSE ) + : QDialog( parent, name, modal, fullscreen ? WStyle_NoBorder | WStyle_Customize | WStyle_StaysOnTop : 0 ), + modl(modal) + { + pinD = new PinDialog( this ); + + if ( fullscreen ) { + QRect desk = oApp->desktop()->geometry(); + setGeometry( 0, 0, desk.width(), desk.height() ); + } + + connect( pinD, SIGNAL(passwordEntered(const QString&)), + this, SLOT(accept()) ); + connect( pinD, SIGNAL(skip()), this, SLOT(accept()) ); + } + + void resizeEvent( QResizeEvent * ) + { + pinD->resize( size() ); + } + + void reset() + { + pinD->clear(); + } + + /// Slot receiving the Skip or Enter commands, and closing the QDialog + void accept() + { + if ( !modl ) + oApp->exit_loop(); + QDialog::accept(); + } + + PinDialog *pinD; + bool modl; +}; + +/// generate a fairly random salt and return the PIN hashed by crypt() +QString PinPlugin::encrypt(const QString& pin) +{ + // the salt must begin by "$1$" if we want crypt() to use MD5 + char salt[] = "$1$........"; + const char *const seedchars = "./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; + // initialize the random generator + srandom(time(0)); + int i; + for(i = 0; i < 8; i++) + { + // initialize the salt with random() + salt[i+3] = seedchars[random() % 64]; + } + return QString::fromLatin1(crypt(pin.latin1(),salt)); +} + +/// verify a PIN against its crypt() hash +/** + * \return true if the \a pin matches its \a hash + */ +bool PinPlugin::verify(const QString& pin, const QString& hash) +{ + // the hash, which contains the salt (8 chars after "$1$"), can be given as the salt + return hash.compare( QString::fromLatin1(crypt( pin.latin1(), hash.latin1() )) ) == 0 ? true : false; +} + +/// Displays a PinDialog and returns the typed in PIN +/** + * The returned value is QString::null if the user cancels the operation, + * or the empty string if the user enters no password (but confirms the + * dialog). + */ +QString PinPlugin::getPIN( const QString& prompt ) +{ + PinDlg pd(0,0,TRUE); + pd.pinD->setPrompt( prompt ); + + pd.showMaximized(); + int r = pd.exec(); + + if ( r == QDialog::Accepted ) { + if (pd.pinD->text.isEmpty()) + return ""; + else + return pd.pinD->text; + } + else + return QString::null; +} + +/// Displays the PIN dialog and returns a hash of the typed in PIN +/** + * \return the hashed ( =one-way encrypted) PIN typed in by the user + * \param prompt the prompt to display in the PinDialog + */ +QString PinPlugin::getCryptedPIN( const QString& prompt ) +{ + return encrypt(getPIN(prompt)); +} + +/// Displays the PIN dialog, asks 2 times for a new PIN, saves it if entered two times +/** + * writes nothing if we enter nothing the first time + */ +void PinPlugin::changePIN() +{ + QString new1, new2; + do { + new1 = getPIN(QObject::tr("Enter new PIN")); + if ( new1.isNull() ) + return; + new2 = getPIN(QObject::tr("Re-enter new PIN")); + } while (new1 != new2); + + odebug << "writing new PIN hash in Security.conf" << oendl; + Config cfg("Security"); + cfg.setGroup("PinPlugin"); + cfg.writeEntry("hashedPIN", encrypt(new1)); +} + +/// Removes the PIN hashed value in the config file +void PinPlugin::clearPIN() +{ + Config cfg("Security"); + cfg.setGroup("PinPlugin"); + cfg.removeEntry("hashedPIN"); +} + +/// Prompt, fullscreen, for the user's PIN and compare it to the stored one. +/** + * \return the result code, as a MultiauthPluginObject::authResult object + */ +int PinPlugin::authenticate() +{ + // reset skip (if we ran Pin two times in a row, skipping the first time, it must be put to 0 again) + isSkip = FALSE; + // fetch value in config + Config cfg("Security"); + cfg.setGroup("PinPlugin"); + QString hashedPin = cfg.readEntry("hashedPIN"); + if (!hashedPin.isEmpty()) + { + // prompt for the PIN in a fullscreen modal dialog + PinDlg pd(0,0,TRUE,TRUE); + pd.reset(); + pd.exec(); + + // analyse the result + if (isSkip == TRUE) + return MultiauthPluginObject::Skip; + else if (verify(pd.pinD->text, hashedPin)) + return MultiauthPluginObject::Success; + else + return MultiauthPluginObject::Failure; + } + owarn << "No PIN has been defined! We consider it as a successful authentication though." << oendl; + return MultiauthPluginObject::Success; +} + +/// Simply returns the plugin name (PIN plugin) +QString PinPlugin::pluginName() const { + return "PIN Plugin"; +} + +QString PinPlugin::pixmapNameWidget() const { + return "security/pinplugin"; +} + +QString PinPlugin::pixmapNameConfig() const { + return "security/pinplugin"; +} + +/// returns a PinConfigWidget +MultiauthConfigWidget * PinPlugin::configWidget(QWidget * parent) { + PinConfigWidget * pinw = new PinConfigWidget(parent, "PIN configuration widget"); + + connect(pinw->changePIN, SIGNAL( clicked() ), this, SLOT( changePIN() )); + connect(pinw->clearPIN, SIGNAL( clicked() ), this, SLOT( clearPIN() )); + + return pinw; +} + +#include "pin.moc" + diff --git a/noncore/securityplugins/pin/pin.h b/noncore/securityplugins/pin/pin.h new file mode 100644 index 0000000..6cd328a --- a/dev/null +++ b/noncore/securityplugins/pin/pin.h @@ -0,0 +1,68 @@ +/** + * \file pin.h + * \brief Standard Opie multiauth plugin definition + * \author Clément Séveillac (clement . seveillac (at) via . ecp . fr) + */ +/* + =. This file is part of the Opie Project + .=l. Copyright (C) 2004 Opie Developer Team <opie-devel@handhelds.org> + .>+-= + _;:, .> :=|. This library is free software; you can +.> <`_, > . <= redistribute it and/or modify it under +:`=1 )Y*s>-.-- : the terms of the GNU Library General Public +.="- .-=="i, .._ License as published by the Free Software + - . .-<_> .<> Foundation; either version 2 of the License, + ._= =} : or (at your option) any later version. + .%`+i> _;_. + .i_,=:_. -<s. This library is distributed in the hope that + + . -:. = it will be useful, but WITHOUT ANY WARRANTY; + : .. .:, . . . without even the implied warranty of + =_ + =;=|` MERCHANTABILITY or FITNESS FOR A + _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU +..}^=.= = ; Library General Public License for more +++= -. .` .: details. + : = ...= . :.=- + -. .:....=;==+<; You should have received a copy of the GNU + -_. . . )=. = Library General Public License along with + -- :-=` this library; see the file COPYING.LIB. + If not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. + +*/ + +#ifndef PIN_H +#define PIN_H + +#include <qobject.h> +#include <qstring.h> +#include <opie2/multiauthplugininterface.h> +#include "pinConfigWidget.h" + +/// Multi-authentication plugin, implementing a PIN verification. +/** + * The plugin itself, implementing the main authenticate() function. + */ +class PinPlugin : public QObject, public MultiauthPluginObject { + + Q_OBJECT + +public: + int authenticate(); + MultiauthConfigWidget * configWidget(QWidget * parent); + QString pixmapNameConfig() const; + QString pixmapNameWidget() const; + QString pluginName() const; + +private slots: + QString getPIN( const QString& prompt ); + QString getCryptedPIN( const QString& prompt ); + void changePIN(); + void clearPIN(); + +private: + QString encrypt(const QString& pin); + bool verify(const QString& pin, const QString& hash); +}; + +#endif // PIN_H diff --git a/noncore/securityplugins/pin/pinConfigWidget.cpp b/noncore/securityplugins/pin/pinConfigWidget.cpp new file mode 100644 index 0000000..53e1a20 --- a/dev/null +++ b/noncore/securityplugins/pin/pinConfigWidget.cpp @@ -0,0 +1,39 @@ +#include <qwidget.h> +#include <qlayout.h> +#include <qlabel.h> +#include <qgroupbox.h> + +#include "pinConfigWidget.h" + +PinConfigWidget::PinConfigWidget(QWidget* parent = 0, const char* name = "PIN configuration widget") + : MultiauthConfigWidget(parent, name) +{ + QVBoxLayout * baseLayout = new QVBoxLayout( this); + baseLayout->setSpacing(11); + baseLayout->setMargin(11); + baseLayout->setAlignment( Qt::AlignTop ); + + QGroupBox * configBox = new QGroupBox(0, Qt::Vertical, tr("Configure your PIN here"), this); + baseLayout->addWidget(configBox); + QVBoxLayout *boxLayout = new QVBoxLayout( configBox->layout() ); + + QLabel * description = new QLabel("<p>" + tr("PIN protection provides a minimal level of protection from casual access to this device.") + "</p>", configBox); + boxLayout->addWidget(description); + + QHBoxLayout * buttonLayout = new QHBoxLayout(); + buttonLayout->setSpacing(6); + changePIN = new QPushButton( tr("Change PIN"), configBox, "changePIN" ); + clearPIN = new QPushButton( tr("Clear PIN"), configBox, "clearPIN" ); + buttonLayout->addWidget(changePIN); + buttonLayout->addWidget(clearPIN); + boxLayout->addLayout(buttonLayout); + +} + +/// nothing to do +PinConfigWidget::~PinConfigWidget() +{} + +/// does nothing since the config file update is already done in changePIN or clearPIN +void PinConfigWidget::writeConfig() +{} diff --git a/noncore/securityplugins/pin/pinConfigWidget.h b/noncore/securityplugins/pin/pinConfigWidget.h new file mode 100644 index 0000000..3242ad0 --- a/dev/null +++ b/noncore/securityplugins/pin/pinConfigWidget.h @@ -0,0 +1,51 @@ +/** + * \file pinConfigWidget.h + * \brief PIN plugin configuration widget + * \author Clément Séveillac (clement . seveillac (at) via . ecp . fr) + */ +/* + =. This file is part of the Opie Project + .=l. Copyright (C) 2004 Opie Developer Team <opie-devel@handhelds.org> + .>+-= + _;:, .> :=|. This library is free software; you can +.> <`_, > . <= redistribute it and/or modify it under +:`=1 )Y*s>-.-- : the terms of the GNU Library General Public +.="- .-=="i, .._ License as published by the Free Software + - . .-<_> .<> Foundation; either version 2 of the License, + ._= =} : or (at your option) any later version. + .%`+i> _;_. + .i_,=:_. -<s. This library is distributed in the hope that + + . -:. = it will be useful, but WITHOUT ANY WARRANTY; + : .. .:, . . . without even the implied warranty of + =_ + =;=|` MERCHANTABILITY or FITNESS FOR A + _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU +..}^=.= = ; Library General Public License for more +++= -. .` .: details. + : = ...= . :.=- + -. .:....=;==+<; You should have received a copy of the GNU + -_. . . )=. = Library General Public License along with + -- :-=` this library; see the file COPYING.LIB. + If not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. + +*/ + +#ifndef PINCONFIGWIDGET_H +#define PINCONFIGWIDGET_H +#include <qpushbutton.h> + +#include <opie2/multiauthconfigwidget.h> + +class PinConfigWidget : public MultiauthConfigWidget { +public: + PinConfigWidget(QWidget* parent, const char* name); + virtual ~PinConfigWidget(); + virtual void writeConfig(); +///\todo to protect? + QPushButton *changePIN; + QPushButton *clearPIN; + +}; + +#endif // PINCONFIGWIDGET_H diff --git a/noncore/securityplugins/pin/pinDialogBase.cpp b/noncore/securityplugins/pin/pinDialogBase.cpp new file mode 100644 index 0000000..244a75e --- a/dev/null +++ b/noncore/securityplugins/pin/pinDialogBase.cpp @@ -0,0 +1,304 @@ +/**************************************************************************** +** Form implementation generated from reading ui file 'pinDialogBase.ui' +** +** Created: Mon Jun 14 11:01:08 2004 +** by: The User Interface Compiler (uic) +** +** WARNING! All changes made in this file will be lost! +****************************************************************************/ +#include "pinDialogBase.h" + +#include <qlabel.h> +#include <qlineedit.h> +#include <qlayout.h> +#include <qvariant.h> +#include <qtooltip.h> +#include <qwhatsthis.h> + +/* + * Constructs a PinDialogBase which is a child of 'parent', with the + * name 'name' and widget flags set to 'f' + */ +PinDialogBase::PinDialogBase( QWidget* parent, const char* name, WFlags fl ) + : QWidget( parent, name, fl ) +{ + if ( !name ) + setName( "PinDialogBase" ); + resize( 231, 293 ); + QFont f( font() ); + f.setPointSize( 24 ); + setFont( f ); + setCaption( tr( "PinDialogBase" ) ); + + button_4 = new QLabel( this, "button_4" ); + button_4->setGeometry( QRect( 11, 138, 68, 44 ) ); + button_4->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)5, (QSizePolicy::SizeType)5, button_4->sizePolicy().hasHeightForWidth() ) ); + button_4->setFrameShape( QLabel::Box ); + button_4->setFrameShadow( QLabel::Raised ); + button_4->setText( tr( "4" ) ); + button_4->setAlignment( int( QLabel::AlignCenter ) ); + + button_7 = new QLabel( this, "button_7" ); + button_7->setGeometry( QRect( 11, 188, 68, 44 ) ); + button_7->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)5, (QSizePolicy::SizeType)5, button_7->sizePolicy().hasHeightForWidth() ) ); + button_7->setFrameShape( QLabel::Box ); + button_7->setFrameShadow( QLabel::Raised ); + button_7->setText( tr( "7" ) ); + button_7->setAlignment( int( QLabel::AlignCenter ) ); + + prompt = new QLabel( this, "prompt" ); + prompt->setGeometry( QRect( 11, 11, 217, 25 ) ); + QFont prompt_font( prompt->font() ); + prompt_font.setPointSize( 18 ); + prompt->setFont( prompt_font ); + prompt->setText( tr( "Enter your PIN" ) ); + + display = new QLineEdit( this, "display" ); + display->setEnabled( FALSE ); + display->setGeometry( QRect( 11, 42, 217, 40 ) ); + QPalette pal; + QColorGroup cg; + cg.setColor( QColorGroup::Foreground, black ); + cg.setColor( QColorGroup::Button, QColor( 228, 228, 228) ); + cg.setColor( QColorGroup::Light, white ); + cg.setColor( QColorGroup::Midlight, QColor( 242, 242, 242) ); + cg.setColor( QColorGroup::Dark, QColor( 78, 78, 78) ); + cg.setColor( QColorGroup::Mid, QColor( 183, 183, 183) ); + cg.setColor( QColorGroup::Text, black ); + cg.setColor( QColorGroup::BrightText, white ); + cg.setColor( QColorGroup::ButtonText, black ); + cg.setColor( QColorGroup::Base, white ); + cg.setColor( QColorGroup::Background, QColor( 220, 220, 220) ); + cg.setColor( QColorGroup::Shadow, black ); + cg.setColor( QColorGroup::Highlight, QColor( 10, 95, 137) ); + cg.setColor( QColorGroup::HighlightedText, white ); + pal.setActive( cg ); + cg.setColor( QColorGroup::Foreground, black ); + cg.setColor( QColorGroup::Button, QColor( 228, 228, 228) ); + cg.setColor( QColorGroup::Light, white ); + cg.setColor( QColorGroup::Midlight, QColor( 242, 242, 242) ); + cg.setColor( QColorGroup::Dark, QColor( 78, 78, 78) ); + cg.setColor( QColorGroup::Mid, QColor( 183, 183, 183) ); + cg.setColor( QColorGroup::Text, black ); + cg.setColor( QColorGroup::BrightText, white ); + cg.setColor( QColorGroup::ButtonText, black ); + cg.setColor( QColorGroup::Base, white ); + cg.setColor( QColorGroup::Background, QColor( 220, 220, 220) ); + cg.setColor( QColorGroup::Shadow, black ); + cg.setColor( QColorGroup::Highlight, QColor( 10, 95, 137) ); + cg.setColor( QColorGroup::HighlightedText, white ); + pal.setInactive( cg ); + cg.setColor( QColorGroup::Foreground, QColor( 128, 128, 128) ); + cg.setColor( QColorGroup::Button, QColor( 228, 228, 228) ); + cg.setColor( QColorGroup::Light, white ); + cg.setColor( QColorGroup::Midlight, white ); + cg.setColor( QColorGroup::Dark, QColor( 114, 114, 114) ); + cg.setColor( QColorGroup::Mid, QColor( 152, 152, 152) ); + cg.setColor( QColorGroup::Text, black ); + cg.setColor( QColorGroup::BrightText, white ); + cg.setColor( QColorGroup::ButtonText, black ); + cg.setColor( QColorGroup::Base, white ); + cg.setColor( QColorGroup::Background, QColor( 220, 220, 220) ); + cg.setColor( QColorGroup::Shadow, black ); + cg.setColor( QColorGroup::Highlight, QColor( 0, 0, 128) ); + cg.setColor( QColorGroup::HighlightedText, white ); + pal.setDisabled( cg ); + display->setPalette( pal ); + display->setEchoMode( QLineEdit::Password ); + + button_1 = new QLabel( this, "button_1" ); + button_1->setGeometry( QRect( 11, 88, 68, 44 ) ); + button_1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)5, (QSizePolicy::SizeType)5, button_1->sizePolicy().hasHeightForWidth() ) ); + button_1->setFrameShape( QLabel::Box ); + button_1->setFrameShadow( QLabel::Raised ); + button_1->setText( tr( "1" ) ); + button_1->setAlignment( int( QLabel::AlignCenter ) ); + + button_2 = new QLabel( this, "button_2" ); + button_2->setGeometry( QRect( 85, 88, 69, 44 ) ); + button_2->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)5, (QSizePolicy::SizeType)5, button_2->sizePolicy().hasHeightForWidth() ) ); + button_2->setFrameShape( QLabel::Box ); + button_2->setFrameShadow( QLabel::Raised ); + button_2->setText( tr( "2" ) ); + button_2->setAlignment( int( QLabel::AlignCenter ) ); + + button_5 = new QLabel( this, "button_5" ); + button_5->setGeometry( QRect( 85, 138, 69, 44 ) ); + button_5->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)5, (QSizePolicy::SizeType)5, button_5->sizePolicy().hasHeightForWidth() ) ); + button_5->setFrameShape( QLabel::Box ); + button_5->setFrameShadow( QLabel::Raised ); + button_5->setText( tr( "5" ) ); + button_5->setAlignment( int( QLabel::AlignCenter ) ); + + button_6 = new QLabel( this, "button_6" ); + button_6->setGeometry( QRect( 160, 138, 68, 44 ) ); + button_6->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)5, (QSizePolicy::SizeType)5, button_6->sizePolicy().hasHeightForWidth() ) ); + button_6->setFrameShape( QLabel::Box ); + button_6->setFrameShadow( QLabel::Raised ); + button_6->setText( tr( "6" ) ); + button_6->setAlignment( int( QLabel::AlignCenter ) ); + + button_3 = new QLabel( this, "button_3" ); + button_3->setGeometry( QRect( 160, 88, 68, 44 ) ); + button_3->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)5, (QSizePolicy::SizeType)5, button_3->sizePolicy().hasHeightForWidth() ) ); + button_3->setFrameShape( QLabel::Box ); + button_3->setFrameShadow( QLabel::Raised ); + button_3->setText( tr( "3" ) ); + button_3->setAlignment( int( QLabel::AlignCenter ) ); + + button_0 = new QLabel( this, "button_0" ); + button_0->setGeometry( QRect( 11, 238, 68, 44 ) ); + button_0->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)5, (QSizePolicy::SizeType)5, button_0->sizePolicy().hasHeightForWidth() ) ); + button_0->setFrameShape( QLabel::Box ); + button_0->setFrameShadow( QLabel::Raised ); + button_0->setText( tr( "0" ) ); + button_0->setAlignment( int( QLabel::AlignCenter ) ); + + button_8 = new QLabel( this, "button_8" ); + button_8->setGeometry( QRect( 85, 188, 69, 44 ) ); + button_8->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)5, (QSizePolicy::SizeType)5, button_8->sizePolicy().hasHeightForWidth() ) ); + button_8->setFrameShape( QLabel::Box ); + button_8->setFrameShadow( QLabel::Raised ); + button_8->setText( tr( "8" ) ); + button_8->setAlignment( int( QLabel::AlignCenter ) ); + + button_9 = new QLabel( this, "button_9" ); + button_9->setGeometry( QRect( 160, 188, 68, 44 ) ); + button_9->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)5, (QSizePolicy::SizeType)5, button_9->sizePolicy().hasHeightForWidth() ) ); + button_9->setFrameShape( QLabel::Box ); + button_9->setFrameShadow( QLabel::Raised ); + button_9->setText( tr( "9" ) ); + button_9->setAlignment( int( QLabel::AlignCenter ) ); + + button_OK = new QLabel( this, "button_OK" ); + button_OK->setGeometry( QRect( 160, 238, 68, 44 ) ); + button_OK->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)5, (QSizePolicy::SizeType)5, button_OK->sizePolicy().hasHeightForWidth() ) ); + cg.setColor( QColorGroup::Foreground, black ); + cg.setColor( QColorGroup::Button, QColor( 192, 192, 192) ); + cg.setColor( QColorGroup::Light, white ); + cg.setColor( QColorGroup::Midlight, QColor( 223, 223, 223) ); + cg.setColor( QColorGroup::Dark, QColor( 96, 96, 96) ); + cg.setColor( QColorGroup::Mid, QColor( 128, 128, 128) ); + cg.setColor( QColorGroup::Text, black ); + cg.setColor( QColorGroup::BrightText, white ); + cg.setColor( QColorGroup::ButtonText, black ); + cg.setColor( QColorGroup::Base, white ); + cg.setColor( QColorGroup::Background, QColor( 0, 170, 0) ); + cg.setColor( QColorGroup::Shadow, black ); + cg.setColor( QColorGroup::Highlight, black ); + cg.setColor( QColorGroup::HighlightedText, white ); + pal.setActive( cg ); + cg.setColor( QColorGroup::Foreground, black ); + cg.setColor( QColorGroup::Button, QColor( 192, 192, 192) ); + cg.setColor( QColorGroup::Light, white ); + cg.setColor( QColorGroup::Midlight, QColor( 220, 220, 220) ); + cg.setColor( QColorGroup::Dark, QColor( 96, 96, 96) ); + cg.setColor( QColorGroup::Mid, QColor( 128, 128, 128) ); + cg.setColor( QColorGroup::Text, black ); + cg.setColor( QColorGroup::BrightText, white ); + cg.setColor( QColorGroup::ButtonText, black ); + cg.setColor( QColorGroup::Base, white ); + cg.setColor( QColorGroup::Background, QColor( 0, 170, 0) ); + cg.setColor( QColorGroup::Shadow, black ); + cg.setColor( QColorGroup::Highlight, black ); + cg.setColor( QColorGroup::HighlightedText, white ); + pal.setInactive( cg ); + cg.setColor( QColorGroup::Foreground, QColor( 128, 128, 128) ); + cg.setColor( QColorGroup::Button, QColor( 192, 192, 192) ); + cg.setColor( QColorGroup::Light, white ); + cg.setColor( QColorGroup::Midlight, QColor( 220, 220, 220) ); + cg.setColor( QColorGroup::Dark, QColor( 96, 96, 96) ); + cg.setColor( QColorGroup::Mid, QColor( 128, 128, 128) ); + cg.setColor( QColorGroup::Text, black ); + cg.setColor( QColorGroup::BrightText, white ); + cg.setColor( QColorGroup::ButtonText, QColor( 128, 128, 128) ); + cg.setColor( QColorGroup::Base, white ); + cg.setColor( QColorGroup::Background, QColor( 0, 170, 0) ); + cg.setColor( QColorGroup::Shadow, black ); + cg.setColor( QColorGroup::Highlight, black ); + cg.setColor( QColorGroup::HighlightedText, white ); + pal.setDisabled( cg ); + button_OK->setPalette( pal ); + button_OK->setFrameShape( QLabel::Box ); + button_OK->setFrameShadow( QLabel::Raised ); + button_OK->setText( tr( "Enter" ) ); + button_OK->setAlignment( int( QLabel::AlignCenter ) ); + + button_Skip = new QLabel( this, "button_Skip" ); + button_Skip->setGeometry( QRect( 85, 238, 69, 44 ) ); + button_Skip->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)5, (QSizePolicy::SizeType)5, button_Skip->sizePolicy().hasHeightForWidth() ) ); + cg.setColor( QColorGroup::Foreground, black ); + cg.setColor( QColorGroup::Button, QColor( 192, 192, 192) ); + cg.setColor( QColorGroup::Light, white ); + cg.setColor( QColorGroup::Midlight, QColor( 223, 223, 223) ); + cg.setColor( QColorGroup::Dark, QColor( 96, 96, 96) ); + cg.setColor( QColorGroup::Mid, QColor( 128, 128, 128) ); + cg.setColor( QColorGroup::Text, black ); + cg.setColor( QColorGroup::BrightText, white ); + cg.setColor( QColorGroup::ButtonText, black ); + cg.setColor( QColorGroup::Base, white ); + cg.setColor( QColorGroup::Background, QColor( 255, 255, 127) ); + cg.setColor( QColorGroup::Shadow, black ); + cg.setColor( QColorGroup::Highlight, black ); + cg.setColor( QColorGroup::HighlightedText, white ); + pal.setActive( cg ); + cg.setColor( QColorGroup::Foreground, black ); + cg.setColor( QColorGroup::Button, QColor( 192, 192, 192) ); + cg.setColor( QColorGroup::Light, white ); + cg.setColor( QColorGroup::Midlight, QColor( 220, 220, 220) ); + cg.setColor( QColorGroup::Dark, QColor( 96, 96, 96) ); + cg.setColor( QColorGroup::Mid, QColor( 128, 128, 128) ); + cg.setColor( QColorGroup::Text, black ); + cg.setColor( QColorGroup::BrightText, white ); + cg.setColor( QColorGroup::ButtonText, black ); + cg.setColor( QColorGroup::Base, white ); + cg.setColor( QColorGroup::Background, QColor( 255, 255, 127) ); + cg.setColor( QColorGroup::Shadow, black ); + cg.setColor( QColorGroup::Highlight, black ); + cg.setColor( QColorGroup::HighlightedText, white ); + pal.setInactive( cg ); + cg.setColor( QColorGroup::Foreground, QColor( 128, 128, 128) ); + cg.setColor( QColorGroup::Button, QColor( 192, 192, 192) ); + cg.setColor( QColorGroup::Light, white ); + cg.setColor( QColorGroup::Midlight, QColor( 220, 220, 220) ); + cg.setColor( QColorGroup::Dark, QColor( 96, 96, 96) ); + cg.setColor( QColorGroup::Mid, QColor( 128, 128, 128) ); + cg.setColor( QColorGroup::Text, black ); + cg.setColor( QColorGroup::BrightText, white ); + cg.setColor( QColorGroup::ButtonText, QColor( 128, 128, 128) ); + cg.setColor( QColorGroup::Base, white ); + cg.setColor( QColorGroup::Background, QColor( 255, 255, 127) ); + cg.setColor( QColorGroup::Shadow, black ); + cg.setColor( QColorGroup::Highlight, black ); + cg.setColor( QColorGroup::HighlightedText, white ); + pal.setDisabled( cg ); + button_Skip->setPalette( pal ); + button_Skip->setFrameShape( QLabel::Box ); + button_Skip->setFrameShadow( QLabel::Raised ); + button_Skip->setText( tr( "Skip" ) ); + button_Skip->setAlignment( int( QLabel::AlignCenter ) ); +} + +/* + * Destroys the object and frees any allocated resources + */ +PinDialogBase::~PinDialogBase() +{ + // no need to delete child widgets, Qt does it all for us +} + +/* + * Main event handler. Reimplemented to handle application + * font changes + */ +bool PinDialogBase::event( QEvent* ev ) +{ + bool ret = QWidget::event( ev ); + if ( ev->type() == QEvent::ApplicationFontChange ) { + QFont prompt_font( prompt->font() ); + prompt_font.setPointSize( 18 ); + prompt->setFont( prompt_font ); + } + return ret; +} + diff --git a/noncore/securityplugins/pin/pinDialogBase.h b/noncore/securityplugins/pin/pinDialogBase.h new file mode 100644 index 0000000..3ed2b63 --- a/dev/null +++ b/noncore/securityplugins/pin/pinDialogBase.h @@ -0,0 +1,47 @@ +/**************************************************************************** +** Form interface generated from reading ui file 'pinDialogBase.ui' +** +** Created: Mon Jun 14 11:00:59 2004 +** by: The User Interface Compiler (uic) +** +** WARNING! All changes made in this file will be lost! +****************************************************************************/ +#ifndef PINDIALOGBASE_H +#define PINDIALOGBASE_H + +#include <qvariant.h> +#include <qwidget.h> +class QVBoxLayout; +class QHBoxLayout; +class QGridLayout; +class QLabel; +class QLineEdit; + +class PinDialogBase : public QWidget +{ + Q_OBJECT + +public: + PinDialogBase( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 ); + ~PinDialogBase(); + + QLabel* button_4; + QLabel* button_7; + QLabel* prompt; + QLineEdit* display; + QLabel* button_1; + QLabel* button_2; + QLabel* button_5; + QLabel* button_6; + QLabel* button_3; + QLabel* button_0; + QLabel* button_8; + QLabel* button_9; + QLabel* button_OK; + QLabel* button_Skip; + +protected: + bool event( QEvent* ); +}; + +#endif // PINDIALOGBASE_H diff --git a/noncore/securityplugins/pin/pinDialogBase.ui b/noncore/securityplugins/pin/pinDialogBase.ui new file mode 100644 index 0000000..79e7a55 --- a/dev/null +++ b/noncore/securityplugins/pin/pinDialogBase.ui @@ -0,0 +1,1258 @@ +<!DOCTYPE UI><UI> +<class>PinDialogBase</class> +<widget> + <class>QWidget</class> + <property stdset="1"> + <name>name</name> + <cstring>PinDialogBase</cstring> + </property> + <property stdset="1"> + <name>geometry</name> + <rect> + <x>0</x> + <y>0</y> + <width>231</width> + <height>293</height> + </rect> + </property> + <property stdset="1"> + <name>font</name> + <font> + <pointsize>24</pointsize> + </font> + </property> + <property stdset="1"> + <name>caption</name> + <string>PinDialogBase</string> + </property> + <widget> + <class>QLabel</class> + <property stdset="1"> + <name>name</name> + <cstring>button_4</cstring> + </property> + <property stdset="1"> + <name>geometry</name> + <rect> + <x>11</x> + <y>138</y> + <width>68</width> + <height>44</height> + </rect> + </property> + <property stdset="1"> + <name>sizePolicy</name> + <sizepolicy> + <hsizetype>5</hsizetype> + <vsizetype>5</vsizetype> + </sizepolicy> + </property> + <property stdset="1"> + <name>frameShape</name> + <enum>Box</enum> + </property> + <property stdset="1"> + <name>frameShadow</name> + <enum>Raised</enum> + </property> + <property stdset="1"> + <name>text</name> + <string>4</string> + </property> + <property stdset="1"> + <name>alignment</name> + <set>AlignCenter</set> + </property> + <property> + <name>hAlign</name> + </property> + </widget> + <widget> + <class>QLabel</class> + <property stdset="1"> + <name>name</name> + <cstring>button_7</cstring> + </property> + <property stdset="1"> + <name>geometry</name> + <rect> + <x>11</x> + <y>188</y> + <width>68</width> + <height>44</height> + </rect> + </property> + <property stdset="1"> + <name>sizePolicy</name> + <sizepolicy> + <hsizetype>5</hsizetype> + <vsizetype>5</vsizetype> + </sizepolicy> + </property> + <property stdset="1"> + <name>frameShape</name> + <enum>Box</enum> + </property> + <property stdset="1"> + <name>frameShadow</name> + <enum>Raised</enum> + </property> + <property stdset="1"> + <name>text</name> + <string>7</string> + </property> + <property stdset="1"> + <name>alignment</name> + <set>AlignCenter</set> + </property> + <property> + <name>hAlign</name> + </property> + </widget> + <widget> + <class>QLabel</class> + <property stdset="1"> + <name>name</name> + <cstring>prompt</cstring> + </property> + <property stdset="1"> + <name>geometry</name> + <rect> + <x>11</x> + <y>11</y> + <width>217</width> + <height>25</height> + </rect> + </property> + <property stdset="1"> + <name>font</name> + <font> + <pointsize>18</pointsize> + </font> + </property> + <property stdset="1"> + <name>text</name> + <string>Enter your PIN</string> + </property> + </widget> + <widget> + <class>QLineEdit</class> + <property stdset="1"> + <name>name</name> + <cstring>display</cstring> + </property> + <property stdset="1"> + <name>enabled</name> + <bool>false</bool> + </property> + <property stdset="1"> + <name>geometry</name> + <rect> + <x>11</x> + <y>42</y> + <width>217</width> + <height>40</height> + </rect> + </property> + <property stdset="1"> + <name>palette</name> + <palette> + <active> + <color> + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + <color> + <red>228</red> + <green>228</green> + <blue>228</blue> + </color> + <color> + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + <color> + <red>242</red> + <green>242</green> + <blue>242</blue> + </color> + <color> + <red>78</red> + <green>78</green> + <blue>78</blue> + </color> + <color> + <red>183</red> + <green>183</green> + <blue>183</blue> + </color> + <color> + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + <color> + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + <color> + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + <color> + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + <color> + <red>220</red> + <green>220</green> + <blue>220</blue> + </color> + <color> + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + <color> + <red>10</red> + <green>95</green> + <blue>137</blue> + </color> + <color> + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + </active> + <disabled> + <color> + <red>128</red> + <green>128</green> + <blue>128</blue> + </color> + <color> + <red>228</red> + <green>228</green> + <blue>228</blue> + </color> + <color> + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + <color> + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + <color> + <red>114</red> + <green>114</green> + <blue>114</blue> + </color> + <color> + <red>152</red> + <green>152</green> + <blue>152</blue> + </color> + <color> + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + <color> + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + <color> + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + <color> + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + <color> + <red>220</red> + <green>220</green> + <blue>220</blue> + </color> + <color> + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + <color> + <red>0</red> + <green>0</green> + <blue>128</blue> + </color> + <color> + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + </disabled> + <inactive> + <color> + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + <color> + <red>228</red> + <green>228</green> + <blue>228</blue> + </color> + <color> + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + <color> + <red>242</red> + <green>242</green> + <blue>242</blue> + </color> + <color> + <red>78</red> + <green>78</green> + <blue>78</blue> + </color> + <color> + <red>183</red> + <green>183</green> + <blue>183</blue> + </color> + <color> + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + <color> + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + <color> + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + <color> + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + <color> + <red>220</red> + <green>220</green> + <blue>220</blue> + </color> + <color> + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + <color> + <red>10</red> + <green>95</green> + <blue>137</blue> + </color> + <color> + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + </inactive> + </palette> + </property> + <property stdset="1"> + <name>echoMode</name> + <enum>Password</enum> + </property> + </widget> + <widget> + <class>QLabel</class> + <property stdset="1"> + <name>name</name> + <cstring>button_1</cstring> + </property> + <property stdset="1"> + <name>geometry</name> + <rect> + <x>11</x> + <y>88</y> + <width>68</width> + <height>44</height> + </rect> + </property> + <property stdset="1"> + <name>sizePolicy</name> + <sizepolicy> + <hsizetype>5</hsizetype> + <vsizetype>5</vsizetype> + </sizepolicy> + </property> + <property stdset="1"> + <name>frameShape</name> + <enum>Box</enum> + </property> + <property stdset="1"> + <name>frameShadow</name> + <enum>Raised</enum> + </property> + <property stdset="1"> + <name>text</name> + <string>1</string> + </property> + <property stdset="1"> + <name>alignment</name> + <set>AlignCenter</set> + </property> + <property> + <name>hAlign</name> + </property> + </widget> + <widget> + <class>QLabel</class> + <property stdset="1"> + <name>name</name> + <cstring>button_2</cstring> + </property> + <property stdset="1"> + <name>geometry</name> + <rect> + <x>85</x> + <y>88</y> + <width>69</width> + <height>44</height> + </rect> + </property> + <property stdset="1"> + <name>sizePolicy</name> + <sizepolicy> + <hsizetype>5</hsizetype> + <vsizetype>5</vsizetype> + </sizepolicy> + </property> + <property stdset="1"> + <name>frameShape</name> + <enum>Box</enum> + </property> + <property stdset="1"> + <name>frameShadow</name> + <enum>Raised</enum> + </property> + <property stdset="1"> + <name>text</name> + <string>2</string> + </property> + <property stdset="1"> + <name>alignment</name> + <set>AlignCenter</set> + </property> + <property> + <name>hAlign</name> + </property> + </widget> + <widget> + <class>QLabel</class> + <property stdset="1"> + <name>name</name> + <cstring>button_5</cstring> + </property> + <property stdset="1"> + <name>geometry</name> + <rect> + <x>85</x> + <y>138</y> + <width>69</width> + <height>44</height> + </rect> + </property> + <property stdset="1"> + <name>sizePolicy</name> + <sizepolicy> + <hsizetype>5</hsizetype> + <vsizetype>5</vsizetype> + </sizepolicy> + </property> + <property stdset="1"> + <name>frameShape</name> + <enum>Box</enum> + </property> + <property stdset="1"> + <name>frameShadow</name> + <enum>Raised</enum> + </property> + <property stdset="1"> + <name>text</name> + <string>5</string> + </property> + <property stdset="1"> + <name>alignment</name> + <set>AlignCenter</set> + </property> + <property> + <name>hAlign</name> + </property> + </widget> + <widget> + <class>QLabel</class> + <property stdset="1"> + <name>name</name> + <cstring>button_6</cstring> + </property> + <property stdset="1"> + <name>geometry</name> + <rect> + <x>160</x> + <y>138</y> + <width>68</width> + <height>44</height> + </rect> + </property> + <property stdset="1"> + <name>sizePolicy</name> + <sizepolicy> + <hsizetype>5</hsizetype> + <vsizetype>5</vsizetype> + </sizepolicy> + </property> + <property stdset="1"> + <name>frameShape</name> + <enum>Box</enum> + </property> + <property stdset="1"> + <name>frameShadow</name> + <enum>Raised</enum> + </property> + <property stdset="1"> + <name>text</name> + <string>6</string> + </property> + <property stdset="1"> + <name>alignment</name> + <set>AlignCenter</set> + </property> + <property> + <name>hAlign</name> + </property> + </widget> + <widget> + <class>QLabel</class> + <property stdset="1"> + <name>name</name> + <cstring>button_3</cstring> + </property> + <property stdset="1"> + <name>geometry</name> + <rect> + <x>160</x> + <y>88</y> + <width>68</width> + <height>44</height> + </rect> + </property> + <property stdset="1"> + <name>sizePolicy</name> + <sizepolicy> + <hsizetype>5</hsizetype> + <vsizetype>5</vsizetype> + </sizepolicy> + </property> + <property stdset="1"> + <name>frameShape</name> + <enum>Box</enum> + </property> + <property stdset="1"> + <name>frameShadow</name> + <enum>Raised</enum> + </property> + <property stdset="1"> + <name>text</name> + <string>3</string> + </property> + <property stdset="1"> + <name>alignment</name> + <set>AlignCenter</set> + </property> + <property> + <name>hAlign</name> + </property> + </widget> + <widget> + <class>QLabel</class> + <property stdset="1"> + <name>name</name> + <cstring>button_0</cstring> + </property> + <property stdset="1"> + <name>geometry</name> + <rect> + <x>11</x> + <y>238</y> + <width>68</width> + <height>44</height> + </rect> + </property> + <property stdset="1"> + <name>sizePolicy</name> + <sizepolicy> + <hsizetype>5</hsizetype> + <vsizetype>5</vsizetype> + </sizepolicy> + </property> + <property stdset="1"> + <name>frameShape</name> + <enum>Box</enum> + </property> + <property stdset="1"> + <name>frameShadow</name> + <enum>Raised</enum> + </property> + <property stdset="1"> + <name>text</name> + <string>0</string> + </property> + <property stdset="1"> + <name>alignment</name> + <set>AlignCenter</set> + </property> + <property> + <name>hAlign</name> + </property> + <property> + <name>layoutMargin</name> + </property> + <property> + <name>layoutSpacing</name> + </property> + </widget> + <widget> + <class>QLabel</class> + <property stdset="1"> + <name>name</name> + <cstring>button_8</cstring> + </property> + <property stdset="1"> + <name>geometry</name> + <rect> + <x>85</x> + <y>188</y> + <width>69</width> + <height>44</height> + </rect> + </property> + <property stdset="1"> + <name>sizePolicy</name> + <sizepolicy> + <hsizetype>5</hsizetype> + <vsizetype>5</vsizetype> + </sizepolicy> + </property> + <property stdset="1"> + <name>frameShape</name> + <enum>Box</enum> + </property> + <property stdset="1"> + <name>frameShadow</name> + <enum>Raised</enum> + </property> + <property stdset="1"> + <name>text</name> + <string>8</string> + </property> + <property stdset="1"> + <name>alignment</name> + <set>AlignCenter</set> + </property> + <property> + <name>hAlign</name> + </property> + </widget> + <widget> + <class>QLabel</class> + <property stdset="1"> + <name>name</name> + <cstring>button_9</cstring> + </property> + <property stdset="1"> + <name>geometry</name> + <rect> + <x>160</x> + <y>188</y> + <width>68</width> + <height>44</height> + </rect> + </property> + <property stdset="1"> + <name>sizePolicy</name> + <sizepolicy> + <hsizetype>5</hsizetype> + <vsizetype>5</vsizetype> + </sizepolicy> + </property> + <property stdset="1"> + <name>frameShape</name> + <enum>Box</enum> + </property> + <property stdset="1"> + <name>frameShadow</name> + <enum>Raised</enum> + </property> + <property stdset="1"> + <name>text</name> + <string>9</string> + </property> + <property stdset="1"> + <name>alignment</name> + <set>AlignCenter</set> + </property> + <property> + <name>hAlign</name> + </property> + <property> + <name>layoutMargin</name> + </property> + <property> + <name>layoutSpacing</name> + </property> + </widget> + <widget> + <class>QLabel</class> + <property stdset="1"> + <name>name</name> + <cstring>button_OK</cstring> + </property> + <property stdset="1"> + <name>geometry</name> + <rect> + <x>160</x> + <y>238</y> + <width>68</width> + <height>44</height> + </rect> + </property> + <property stdset="1"> + <name>sizePolicy</name> + <sizepolicy> + <hsizetype>5</hsizetype> + <vsizetype>5</vsizetype> + </sizepolicy> + </property> + <property stdset="1"> + <name>palette</name> + <palette> + <active> + <color> + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + <color> + <red>192</red> + <green>192</green> + <blue>192</blue> + </color> + <color> + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + <color> + <red>223</red> + <green>223</green> + <blue>223</blue> + </color> + <color> + <red>96</red> + <green>96</green> + <blue>96</blue> + </color> + <color> + <red>128</red> + <green>128</green> + <blue>128</blue> + </color> + <color> + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + <color> + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + <color> + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + <color> + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + <color> + <red>0</red> + <green>170</green> + <blue>0</blue> + </color> + <color> + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + <color> + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + <color> + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + </active> + <disabled> + <color> + <red>128</red> + <green>128</green> + <blue>128</blue> + </color> + <color> + <red>192</red> + <green>192</green> + <blue>192</blue> + </color> + <color> + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + <color> + <red>220</red> + <green>220</green> + <blue>220</blue> + </color> + <color> + <red>96</red> + <green>96</green> + <blue>96</blue> + </color> + <color> + <red>128</red> + <green>128</green> + <blue>128</blue> + </color> + <color> + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + <color> + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + <color> + <red>128</red> + <green>128</green> + <blue>128</blue> + </color> + <color> + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + <color> + <red>0</red> + <green>170</green> + <blue>0</blue> + </color> + <color> + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + <color> + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + <color> + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + </disabled> + <inactive> + <color> + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + <color> + <red>192</red> + <green>192</green> + <blue>192</blue> + </color> + <color> + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + <color> + <red>220</red> + <green>220</green> + <blue>220</blue> + </color> + <color> + <red>96</red> + <green>96</green> + <blue>96</blue> + </color> + <color> + <red>128</red> + <green>128</green> + <blue>128</blue> + </color> + <color> + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + <color> + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + <color> + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + <color> + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + <color> + <red>0</red> + <green>170</green> + <blue>0</blue> + </color> + <color> + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + <color> + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + <color> + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + </inactive> + </palette> + </property> + <property stdset="1"> + <name>frameShape</name> + <enum>Box</enum> + </property> + <property stdset="1"> + <name>frameShadow</name> + <enum>Raised</enum> + </property> + <property stdset="1"> + <name>text</name> + <string>Enter</string> + </property> + <property stdset="1"> + <name>alignment</name> + <set>AlignCenter</set> + </property> + <property> + <name>hAlign</name> + </property> + </widget> + <widget> + <class>QLabel</class> + <property stdset="1"> + <name>name</name> + <cstring>button_Skip</cstring> + </property> + <property stdset="1"> + <name>geometry</name> + <rect> + <x>85</x> + <y>238</y> + <width>69</width> + <height>44</height> + </rect> + </property> + <property stdset="1"> + <name>sizePolicy</name> + <sizepolicy> + <hsizetype>5</hsizetype> + <vsizetype>5</vsizetype> + </sizepolicy> + </property> + <property stdset="1"> + <name>palette</name> + <palette> + <active> + <color> + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + <color> + <red>192</red> + <green>192</green> + <blue>192</blue> + </color> + <color> + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + <color> + <red>223</red> + <green>223</green> + <blue>223</blue> + </color> + <color> + <red>96</red> + <green>96</green> + <blue>96</blue> + </color> + <color> + <red>128</red> + <green>128</green> + <blue>128</blue> + </color> + <color> + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + <color> + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + <color> + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + <color> + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + <color> + <red>255</red> + <green>255</green> + <blue>127</blue> + </color> + <color> + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + <color> + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + <color> + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + </active> + <disabled> + <color> + <red>128</red> + <green>128</green> + <blue>128</blue> + </color> + <color> + <red>192</red> + <green>192</green> + <blue>192</blue> + </color> + <color> + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + <color> + <red>220</red> + <green>220</green> + <blue>220</blue> + </color> + <color> + <red>96</red> + <green>96</green> + <blue>96</blue> + </color> + <color> + <red>128</red> + <green>128</green> + <blue>128</blue> + </color> + <color> + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + <color> + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + <color> + <red>128</red> + <green>128</green> + <blue>128</blue> + </color> + <color> + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + <color> + <red>255</red> + <green>255</green> + <blue>127</blue> + </color> + <color> + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + <color> + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + <color> + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + </disabled> + <inactive> + <color> + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + <color> + <red>192</red> + <green>192</green> + <blue>192</blue> + </color> + <color> + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + <color> + <red>220</red> + <green>220</green> + <blue>220</blue> + </color> + <color> + <red>96</red> + <green>96</green> + <blue>96</blue> + </color> + <color> + <red>128</red> + <green>128</green> + <blue>128</blue> + </color> + <color> + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + <color> + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + <color> + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + <color> + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + <color> + <red>255</red> + <green>255</green> + <blue>127</blue> + </color> + <color> + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + <color> + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + <color> + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + </inactive> + </palette> + </property> + <property stdset="1"> + <name>frameShape</name> + <enum>Box</enum> + </property> + <property stdset="1"> + <name>frameShadow</name> + <enum>Raised</enum> + </property> + <property stdset="1"> + <name>text</name> + <string>Skip</string> + </property> + <property stdset="1"> + <name>alignment</name> + <set>AlignCenter</set> + </property> + <property> + <name>hAlign</name> + </property> + </widget> +</widget> +</UI> diff --git a/noncore/securityplugins/pin/pinplugin.pro b/noncore/securityplugins/pin/pinplugin.pro new file mode 100644 index 0000000..d066805 --- a/dev/null +++ b/noncore/securityplugins/pin/pinplugin.pro @@ -0,0 +1,21 @@ +VERSION = 0.0.2 +TEMPLATE = lib +CONFIG += qt warn_on + +HEADERS = pin.h pinpluginimpl.h pinConfigWidget.h + +INTERFACES = pinDialogBase.ui + +SOURCES = pin.cpp pinpluginimpl.cpp pinConfigWidget.cpp + + +INCLUDEPATH += $(OPIEDIR)/include +DEPENDPATH += + +LIBS += -lqpe -lopieui2 + +DESTDIR = $(OPIEDIR)/plugins/security +TARGET = multiauthpinplugin + +include ( $(OPIEDIR)/include.pro ) + diff --git a/noncore/securityplugins/pin/pinpluginimpl.cpp b/noncore/securityplugins/pin/pinpluginimpl.cpp new file mode 100644 index 0000000..1c32f81 --- a/dev/null +++ b/noncore/securityplugins/pin/pinpluginimpl.cpp @@ -0,0 +1,28 @@ +#include "pinpluginimpl.h" + +PinPluginImpl::PinPluginImpl() { + pinPlugin = new PinPlugin(); +} + +PinPluginImpl::~PinPluginImpl() { + delete pinPlugin; +} + +MultiauthPluginObject* PinPluginImpl::plugin() { + return pinPlugin; +} + +Q_EXPORT_INTERFACE() { + Q_CREATE_INSTANCE( PinPluginImpl ) +} + +QRESULT PinPluginImpl::queryInterface( const QUuid & uuid, QUnknownInterface **iface ) { + *iface = 0; + if ( ( uuid == IID_QUnknown ) || ( uuid == IID_MultiauthPluginInterface ) ) { + *iface = this, (*iface)->addRef(); + } else { + return QE_NOINTERFACE; + } + return QS_OK; + +} diff --git a/noncore/securityplugins/pin/pinpluginimpl.h b/noncore/securityplugins/pin/pinpluginimpl.h new file mode 100644 index 0000000..e604b64 --- a/dev/null +++ b/noncore/securityplugins/pin/pinpluginimpl.h @@ -0,0 +1,58 @@ +/** + * \file pinpluginimpl.h + * \brief Standard Opie multiauth plugin definition + * \author Clément Séveillac (clement . seveillac (at) via . ecp . fr) + */ +/* + =. This file is part of the Opie Project + .=l. Copyright (C) 2004 Opie Developer Team <opie-devel@handhelds.org> + .>+-= + _;:, .> :=|. This library is free software; you can +.> <`_, > . <= redistribute it and/or modify it under +:`=1 )Y*s>-.-- : the terms of the GNU Library General Public +.="- .-=="i, .._ License as published by the Free Software + - . .-<_> .<> Foundation; either version 2 of the License, + ._= =} : or (at your option) any later version. + .%`+i> _;_. + .i_,=:_. -<s. This library is distributed in the hope that + + . -:. = it will be useful, but WITHOUT ANY WARRANTY; + : .. .:, . . . without even the implied warranty of + =_ + =;=|` MERCHANTABILITY or FITNESS FOR A + _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU +..}^=.= = ; Library General Public License for more +++= -. .` .: details. + : = ...= . :.=- + -. .:....=;==+<; You should have received a copy of the GNU + -_. . . )=. = Library General Public License along with + -- :-=` this library; see the file COPYING.LIB. + If not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. + +*/ + +#ifndef PIN_PLUGIN_IMPL_H +#define PIN_PLUGIN_IMPL_H + +#include "pin.h" + +/// Standard multiauth plugin class +class PinPluginImpl : public MultiauthPluginInterface{ + + public: + PinPluginImpl(); + virtual ~PinPluginImpl(); + + QRESULT queryInterface( const QUuid &, QUnknownInterface** ); + // defines standard addRef() and release() functions + Q_REFCOUNT; + + virtual MultiauthPluginObject *plugin(); + + private: + /// the plugin itself + PinPlugin *pinPlugin; + ulong ref; +}; + +#endif |