-rw-r--r-- | libopie2/opiesecurity/multiauthpassword.cpp | 106 | ||||
-rw-r--r-- | libopie2/opiesecurity/multiauthpassword.h | 59 |
2 files changed, 165 insertions, 0 deletions
diff --git a/libopie2/opiesecurity/multiauthpassword.cpp b/libopie2/opiesecurity/multiauthpassword.cpp new file mode 100644 index 0000000..16c8568 --- a/dev/null +++ b/libopie2/opiesecurity/multiauthpassword.cpp @@ -0,0 +1,106 @@ +/** + * \file multiauthpassord.cpp + * \brief Password Dialog dropin. + * \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. + +*/ + + +/* OPIE */ +#include <opie2/multiauthcommon.h> +#include <opie2/multiauthmainwindow.h> +#include <qpe/config.h> +#include <qpe/qlibrary.h> +#include <qpe/qcom.h> + +/* QT */ +#include <qapplication.h> +#include <qvbox.h> +#include <qpushbutton.h> +#include <qlabel.h> +#include <qdir.h> + +#include "multiauthpassword.h" + +namespace Opie { +namespace Security { + + +/** + * If the users requires authentication... #fixme + * + * @todo fix up at_poweron attribute + */ +bool MultiauthPassword::needToAuthenticate(bool at_poweron) +{ + Config cfg("Security"); + cfg.setGroup("Misc"); + if ( !at_poweron && cfg.readBoolEntry("onStart", true) ) + return true; + else if ( at_poweron && cfg.readBoolEntry("onResume", true) ) + return true; + else + return false; +} + + +/** + * \brief Require user authentication to unlock and continue + * + * This method will check if you require authentication + * and then will lock the screen and require a succesfull + * authentication. + * Authenticate may enter the event loop and only returns + * if the user sucesfully authenticated to the system. + * + * @return only if succesfully authenticated + */ +void MultiauthPassword::authenticate(bool at_poweron) +{ + if ( ! needToAuthenticate(at_poweron) ) + return; + + /* Constructs the main window, which displays messages and blocks + * access to the desktop + */ + MultiauthMainWindow win; + + // 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(); +} + +} +} diff --git a/libopie2/opiesecurity/multiauthpassword.h b/libopie2/opiesecurity/multiauthpassword.h new file mode 100644 index 0000000..1d061b4 --- a/dev/null +++ b/libopie2/opiesecurity/multiauthpassword.h @@ -0,0 +1,59 @@ +/** + * \file multiauthpassord.h + * \brief Password Dialog dropin. + * \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 OPIE_SEC_MULTIAUTHPASSWORD_H +#define OPIE_SEC_MULTIAUTHPASSWORD_H + +namespace Opie { +namespace Security { + +/** + * This is the dropin replacement for libqpes Password class. + * If you call authenticate() a widget will cover the whole screen + * and only return if the user is able to authenticate with any of the + * configured Authentication Plugins. + * This uses the \sa Opie::Security::MultiauthMainWindow internally. + * + * @author Clement Séveillac, Holger Freyther + */ +class MultiauthPassword { +public: + static bool needToAuthenticate( bool atpoweron=FALSE ); + static void authenticate(bool atpoweron = FALSE ); +}; + + +} +} +#endif |