-rw-r--r-- | core/settings/security/multiauthconfig.cpp | 50 | ||||
-rw-r--r-- | core/settings/security/multiauthconfig.h | 1 |
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 @@ -2,8 +2,9 @@ #include <opie2/odebug.h> #include <qgroupbox.h> +#include <qvgroupbox.h> #include <qpe/resource.h> #include <qlayout.h> #include <qlabel.h> #include <qhbox.h> @@ -147,12 +148,26 @@ MultiauthConfig::MultiauthConfig(QWidget* par, const char* w, WFlags f) /* Initializes the global configuration window */ 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); pluginListLayout->setMargin(11); @@ -177,8 +192,9 @@ MultiauthConfig::MultiauthConfig(QWidget* par, const char* w, WFlags f) // general Opie multi-authentication configuration tab 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") ); @@ -188,8 +204,11 @@ 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 */ loadPlugins(); @@ -222,8 +241,28 @@ MultiauthConfig::MultiauthConfig(QWidget* par, const char* w, WFlags f) m_mainTW->setCurrentTab(m_pluginListWidget); // 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(); } @@ -270,8 +309,11 @@ void MultiauthConfig::moveSelectedDown() 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 ) ); m_generalConfig->nbSuccessMin->setValue( pcfg->readNumEntry( "nbSuccessMin", 1 ) ); @@ -281,8 +323,9 @@ void MultiauthConfig::readConfig() pcfg->setGroup( "Plugins" ); m_excludePlugins = pcfg->readListEntry( "ExcludePlugins", ',' ); m_allPlugins = pcfg->readListEntry( "AllPlugins", ',' ); + } /* Login and Sync stuff */ pcfg->setGroup("Sync"); int auth_peer = pcfg->readNumEntry("auth_peer",0xc0a88100);//new default 192.168.129.0/24 @@ -350,8 +393,11 @@ void MultiauthConfig::readConfig() void MultiauthConfig::writeConfig() { Config* pcfg = new Config("Security"); + + if (m_pluginsInstalled) + { pcfg->setGroup( "Plugins" ); QStringList exclude; QStringList include; QStringList allPlugins; @@ -382,8 +428,9 @@ void MultiauthConfig::writeConfig() pcfg->writeEntry( "nbSuccessMin", m_generalConfig->nbSuccessMin->text() ); 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 */ pcfg->setGroup("Sync"); @@ -399,9 +446,12 @@ void MultiauthConfig::writeConfig() //write back all other net ranges in *cleartext* 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 #error "Use 0,1,2 and use Launcher" 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 @@ -120,8 +120,9 @@ private: SyncBase *m_syncWidget; int m_nbSuccessReq; bool m_plugins_changed; + bool m_pluginsInstalled; void readConfig(); void loadPlugins(); |