summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--core/settings/security/multiauthconfig.cpp50
-rw-r--r--core/settings/security/multiauthconfig.h1
2 files changed, 51 insertions, 0 deletions
diff --git a/core/settings/security/multiauthconfig.cpp b/core/settings/security/multiauthconfig.cpp
index ff11e49..3c73d7b 100644
--- a/core/settings/security/multiauthconfig.cpp
+++ b/core/settings/security/multiauthconfig.cpp
@@ -3,6 +3,7 @@
#include <opie2/odebug.h>
#include <qgroupbox.h>
+#include <qvgroupbox.h>
#include <qpe/resource.h>
#include <qlayout.h>
#include <qlabel.h>
@@ -148,10 +149,24 @@ MultiauthConfig::MultiauthConfig(QWidget* par, const char* w, WFlags f)
*/
test_and_start();
+ /* Checks (and memorizes) if any authentication plugins are
+ * installed on the system
+ */
+ QString path = QPEApplication::qpeDir() + "/plugins/security";
+ QDir dir( path, "lib*.so" );
+ QStringList list = dir.entryList();
+
+ m_pluginsInstalled = ! list.isEmpty();
+ if (m_pluginsInstalled == false)
+ owarn << "no authentication plugins installed! Talking about it in the last tab..." << oendl;
+
setCaption( tr( "Security configuration" ) );
QVBoxLayout *layout = new QVBoxLayout( this );
m_mainTW = new Opie::Ui::OTabWidget( this );
layout->addWidget(m_mainTW);
+
+ if (m_pluginsInstalled)
+ {
m_pluginListWidget = new QWidget(m_mainTW, "plugin list widget");
QVBoxLayout * pluginListLayout = new QVBoxLayout(m_pluginListWidget);
pluginListLayout->setSpacing(6);
@@ -178,6 +193,7 @@ MultiauthConfig::MultiauthConfig(QWidget* par, const char* w, WFlags f)
m_generalConfig = new MultiauthGeneralConfig(m_mainTW);
m_mainTW->addTab(m_generalConfig, "SettingsIcon", tr( "Authentication") );
+ }
// login settings page
m_loginWidget = new LoginBase(m_mainTW, "login config widget");
m_mainTW->addTab(m_loginWidget, "security/users", tr( "Login") );
@@ -189,6 +205,9 @@ MultiauthConfig::MultiauthConfig(QWidget* par, const char* w, WFlags f)
// read the "Security" Config file and update our UI
readConfig();
+
+ if (m_pluginsInstalled)
+ {
/* loads plugins configuration widgets in mainTW tabs and in pluginListView
*/
@@ -223,6 +242,26 @@ MultiauthConfig::MultiauthConfig(QWidget* par, const char* w, WFlags f)
// put the number of plugins as the max number of req. auth.
m_generalConfig->nbSuccessMin->setMaxValue( pluginList.count() );
+ }
+ else
+ {
+ /* we don't have any installed plugin there. Let's tell
+ * that to the user in a third tab, using the m_pluginListWidget widget
+ */
+ m_pluginListWidget = new QWidget(m_mainTW, "plugin list widget (no plugins warning)");
+ QVBoxLayout * pluginListLayout = new QVBoxLayout(m_pluginListWidget);
+ pluginListLayout->setSpacing(11);
+ pluginListLayout->setMargin(11);
+ pluginListLayout->setAlignment( Qt::AlignTop );
+ QVGroupBox *warningBox = new QVGroupBox(tr("Important notice"), m_pluginListWidget, "noPlugins warning box");
+ pluginListLayout->addWidget(warningBox);
+ QLabel * warningText = new QLabel( "<p>" + tr("To be able to protect your PDA with one or more authentication plugins (for example, a simple PIN authentication), you must install at least one <em>opie-multiauth-*</em> package! Once you have done that, you will be able to configure your PDA protection here.") + "</p>", warningBox );
+
+ m_mainTW->addTab(m_pluginListWidget, "security/Security", tr( "Locking") );
+
+ // set the first tab as default.
+ m_mainTW->setCurrentTab(m_loginWidget);
+ }
showMaximized();
}
@@ -271,6 +310,9 @@ void MultiauthConfig::readConfig()
{
// pointer, so we release this Config when we want
Config* pcfg = new Config("Security");
+
+ if (m_pluginsInstalled)
+ {
pcfg->setGroup( "Misc" );
m_generalConfig->onStart->setChecked( pcfg->readBoolEntry( "onStart", false ) );
m_generalConfig->onResume->setChecked( pcfg->readBoolEntry( "onResume", false ) );
@@ -282,6 +324,7 @@ void MultiauthConfig::readConfig()
pcfg->setGroup( "Plugins" );
m_excludePlugins = pcfg->readListEntry( "ExcludePlugins", ',' );
m_allPlugins = pcfg->readListEntry( "AllPlugins", ',' );
+ }
/* Login and Sync stuff */
pcfg->setGroup("Sync");
@@ -351,6 +394,9 @@ void MultiauthConfig::readConfig()
void MultiauthConfig::writeConfig()
{
Config* pcfg = new Config("Security");
+
+ if (m_pluginsInstalled)
+ {
pcfg->setGroup( "Plugins" );
QStringList exclude;
QStringList include;
@@ -383,6 +429,7 @@ void MultiauthConfig::writeConfig()
pcfg->writeEntry( "noProtectConfig", m_generalConfig->noProtectConfig->isChecked() );
pcfg->writeEntry( "explanScreens", m_generalConfig->explanScreens->isChecked() );
pcfg->writeEntry( "allowBypass", m_generalConfig->allowBypass->isChecked() );
+ }
/* Login and Sync stuff */
@@ -400,7 +447,10 @@ void MultiauthConfig::writeConfig()
for (int i=0; i<10; i++) {
QString target;
target.sprintf("net%d", i);
+ if ( i < m_syncWidget->syncnet->count() )
pcfg->writeEntry(target,m_syncWidget->syncnet->text(i));
+ else // no more entry in the syncnet list -> we clear the line
+ pcfg->writeEntry(target, "");
}
#ifdef ODP
diff --git a/core/settings/security/multiauthconfig.h b/core/settings/security/multiauthconfig.h
index 649815d..5287083 100644
--- a/core/settings/security/multiauthconfig.h
+++ b/core/settings/security/multiauthconfig.h
@@ -121,6 +121,7 @@ private:
int m_nbSuccessReq;
bool m_plugins_changed;
+ bool m_pluginsInstalled;
void readConfig();
void loadPlugins();