[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: extragear/base/polkit-kde-1/kcmodules
From: Dario Freddi <drf () kde ! org>
Date: 2009-12-30 15:07:11
Message-ID: 1262185631.137309.24210.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 1067774 by dafre:
Reading pkla files works for implicit authorizations
Signed-off-by: Dario Freddi <drf@kde.org>
M +2 -4 helper/org.kde.polkitkde1.helper.xml
M +9 -9 helper/polkitkde1helper.cpp
M +3 -6 helper/polkitkde1helper.h
M +91 -63 polkitactions/ActionWidget.cpp
M +12 -6 polkitactions/ActionWidget.h
--- trunk/extragear/base/polkit-kde-1/kcmodules/helper/org.kde.polkitkde1.helper.xml \
#1067773:1067774 @@ -8,11 +8,9 @@
<arg direction="in" type="i" name="policiesPriority" />
</method>
<method name="retrievePolicies" >
+ <annotation name="com.trolltech.QtDBus.QtTypeName.Out0" \
value="QVariantList"/> + <arg direction="out" type="av" />
</method>
- <signal name="policiesRetrieved" >
- <annotation name="com.trolltech.QtDBus.QtTypeName.In0" \
value="PKLAEntryList"/>
- <arg direction="out" type="a(ssssssii)" />
- </method>
</interface>
</node>
\ No newline at end of file
--- trunk/extragear/base/polkit-kde-1/kcmodules/helper/polkitkde1helper.cpp \
#1067773:1067774 @@ -82,7 +82,7 @@
// TODO: Move files around if the priority was changed
}
-void PolkitKde1Helper::retrievePolicies()
+QVariantList PolkitKde1Helper::retrievePolicies()
{
qDebug() << "Request to retrieve the action authorizations by " << \
message().service(); PolkitQt1::Authority::Result result;
@@ -98,10 +98,10 @@
} else {
// It's not ok
qDebug() << "UnAuthorized! " << \
PolkitQt1::Authority::instance()->lastError();
- return;
+ return QVariantList();
}
- QList<PKLAEntry> retlist;
+ QVariantList retlist;
// Iterate over the directory and find out everything
QDir baseDir("/var/lib/polkit-1/localauthority/");
@@ -120,16 +120,16 @@
}
}
- emit policiesRetrieved(retlist);
+ return retlist;
}
-QList< PKLAEntry > PolkitKde1Helper::entriesFromFile(int filePriority, \
const QString& filePath) +QVariantList \
PolkitKde1Helper::entriesFromFile(int filePriority, const QString& \
filePath) {
- QList< PKLAEntry > retlist;
+ QList< QVariant > retlist;
QFile file(filePath);
if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) {
qWarning() << "Failed to open " << filePath;
- return QList< PKLAEntry >();
+ return QVariantList();
}
int priority = 0;
@@ -159,7 +159,7 @@
} else if (line.startsWith('[')) {
// Ouch!!
qWarning() << "The file appears malformed!! " << \
filePath;
- return QList< PKLAEntry >();
+ return QVariantList();
}
// Did we parse it all?
@@ -169,7 +169,7 @@
++priority;
qDebug() << "PKLA Parsed:" << entry.title << \
entry.action << entry.identity << entry.resultAny
<< entry.resultInactive << entry.resultActive \
<< entry.fileOrder;
- retlist.append(entry);
+ retlist.append(QVariant::fromValue(entry));
break;
}
}
--- trunk/extragear/base/polkit-kde-1/kcmodules/helper/polkitkde1helper.h \
#1067773:1067774 @@ -25,15 +25,12 @@
PolkitKde1Helper(QObject* parent = 0);
virtual ~PolkitKde1Helper();
- public slots:
+ public Q_SLOTS:
void saveGlobalConfiguration(const QString &adminIdentities, int \
systemPriority, int policiesPriority);
- void retrievePolicies();
+ QVariantList retrievePolicies();
- Q_SIGNALS:
- void policiesRetrieved(const PKLAEntryList &policies);
-
private:
- QList<PKLAEntry> entriesFromFile(int filePriority, const QString \
&fileContents); + QVariantList entriesFromFile(int filePriority, \
const QString &fileContents); };
#endif // POLKITKDE1HELPER_H
--- trunk/extragear/base/polkit-kde-1/kcmodules/polkitactions/ActionWidget.cpp \
#1067773:1067774 @@ -17,99 +17,127 @@
#include <qdbuspendingcall.h>
#include <QtDBus/qdbusmetatype.h>
#include <PolkitQt1/ActionDescription>
+#include <QDebug>
namespace PolkitKde {
ActionWidget::ActionWidget(PolkitQt1::ActionDescription* action, QWidget* \
parent) : QWidget(parent)
, m_ui(new Ui::ActionWidget)
- , m_action(action)
+ , m_action(0)
{
m_ui->setupUi(this);
// Initialize
- switch (action->implicitActive()) {
- case PolkitQt1::ActionDescription::Authorized:
- m_ui->activeComboBox->setCurrentIndex(0);
- break;
- case PolkitQt1::ActionDescription::NotAuthorized:
- m_ui->activeComboBox->setCurrentIndex(1);
- break;
- case PolkitQt1::ActionDescription::AuthenticationRequired:
- m_ui->activeComboBox->setCurrentIndex(4);
- break;
- case PolkitQt1::ActionDescription::AuthenticationRequiredRetained:
- m_ui->activeComboBox->setCurrentIndex(5);
- break;
- case PolkitQt1::ActionDescription::AdministratorAuthenticationRequired:
- m_ui->activeComboBox->setCurrentIndex(2);
- break;
- case PolkitQt1::ActionDescription::AdministratorAuthenticationRequiredRetained:
- m_ui->activeComboBox->setCurrentIndex(3);
- break;
+ reloadPKLAs();
+
+ setAction(action);
+}
+
+ActionWidget::~ActionWidget()
+{
+
+}
+
+void ActionWidget::reloadPKLAs()
+{
+ m_entries.clear();
+ QDBusMessage message = \
QDBusMessage::createMethodCall("org.kde.polkitkde1.helper", + \
"/Helper", + \
"org.kde.polkitkde1.helper", + \
QLatin1String("retrievePolicies")); + QDBusPendingCall reply = \
QDBusConnection::systemBus().asyncCall(message); + \
reply.waitForFinished(); + if (reply.reply().arguments().count() >= 1) {
+ QVariantList vlist;
+ reply.reply().arguments().first().value<QDBusArgument>() >> vlist;
+ foreach (const QVariant &variant, vlist) {
+ PKLAEntry entry;
+ variant.value<QDBusArgument>() >> entry;
+ qDebug() << entry.title;
+ m_entries.append(entry);
+ }
}
- switch (action->implicitInactive()) {
- case PolkitQt1::ActionDescription::Authorized:
- m_ui->inactiveComboBox->setCurrentIndex(0);
- break;
- case PolkitQt1::ActionDescription::NotAuthorized:
- m_ui->inactiveComboBox->setCurrentIndex(1);
- break;
- case PolkitQt1::ActionDescription::AuthenticationRequired:
- m_ui->inactiveComboBox->setCurrentIndex(4);
- break;
- case PolkitQt1::ActionDescription::AuthenticationRequiredRetained:
- m_ui->inactiveComboBox->setCurrentIndex(5);
- break;
- case PolkitQt1::ActionDescription::AdministratorAuthenticationRequired:
- m_ui->inactiveComboBox->setCurrentIndex(2);
- break;
- case PolkitQt1::ActionDescription::AdministratorAuthenticationRequiredRetained:
- m_ui->inactiveComboBox->setCurrentIndex(3);
- break;
+
+ if (m_action) {
+ computeActionPolicies();
}
- switch (action->implicitAny()) {
+}
+
+void ActionWidget::computeActionPolicies()
+{
+ foreach (const PKLAEntry &entry, m_entries) {
+ QStringList realActions = entry.action.split(';');
+ if (realActions.contains(m_action->actionId())) {
+ // Match! Is it, actually, an implicit override?
+ if (entry.title == "PolkitKdeOverrideImplicit") {
+ // It is!
+ setImplicitAuthorization(implFromText(entry.resultActive), \
m_ui->activeComboBox); + \
setImplicitAuthorization(implFromText(entry.resultInactive), \
m_ui->inactiveComboBox); + \
setImplicitAuthorization(implFromText(entry.resultAny), m_ui->anyComboBox); \
+ } else { + // TODO: Add it to the local auths
+ }
+ }
+ }
+}
+
+PolkitQt1::ActionDescription::ImplicitAuthorization \
ActionWidget::implFromText(const QString& text) +{
+ if (text == "yes") {
+ return PolkitQt1::ActionDescription::Authorized;
+ } else if (text == "no") {
+ return PolkitQt1::ActionDescription::NotAuthorized;
+ } else if (text == "auth_admin") {
+ return PolkitQt1::ActionDescription::AdministratorAuthenticationRequired;
+ } else if (text == "auth_admin_keep") {
+ return PolkitQt1::ActionDescription::AdministratorAuthenticationRequiredRetained;
+ } else if (text == "auth_self") {
+ return PolkitQt1::ActionDescription::AuthenticationRequired;
+ } else if (text == "auth_self_keep") {
+ return PolkitQt1::ActionDescription::AuthenticationRequiredRetained;
+ } else {
+ return PolkitQt1::ActionDescription::Unknown;
+ }
+}
+
+void ActionWidget::setImplicitAuthorization(PolkitQt1::ActionDescription::ImplicitAuthorization \
auth, QComboBox* box) +{
+ switch (auth) {
case PolkitQt1::ActionDescription::Authorized:
- m_ui->anyComboBox->setCurrentIndex(0);
+ box->setCurrentIndex(0);
break;
case PolkitQt1::ActionDescription::NotAuthorized:
- m_ui->anyComboBox->setCurrentIndex(1);
+ box->setCurrentIndex(1);
break;
case PolkitQt1::ActionDescription::AuthenticationRequired:
- m_ui->anyComboBox->setCurrentIndex(4);
+ box->setCurrentIndex(4);
break;
case PolkitQt1::ActionDescription::AuthenticationRequiredRetained:
- m_ui->anyComboBox->setCurrentIndex(5);
+ box->setCurrentIndex(5);
break;
case PolkitQt1::ActionDescription::AdministratorAuthenticationRequired:
- m_ui->anyComboBox->setCurrentIndex(2);
+ box->setCurrentIndex(2);
break;
case PolkitQt1::ActionDescription::AdministratorAuthenticationRequiredRetained:
- m_ui->anyComboBox->setCurrentIndex(3);
+ box->setCurrentIndex(3);
break;
}
+}
+
+void ActionWidget::setAction(PolkitQt1::ActionDescription* action)
+{
+ m_action = action;
+ setImplicitAuthorization(action->implicitActive(), \
m_ui->activeComboBox); + \
setImplicitAuthorization(action->implicitInactive(), \
m_ui->inactiveComboBox); + \
setImplicitAuthorization(action->implicitAny(), m_ui->anyComboBox); +
m_ui->descriptionLabel->setText(action->description());
m_ui->vendorLabel->setText(action->vendorName());
m_ui->vendorLabel->setUrl(action->vendorUrl());
m_ui->pixmapLabel->setPixmap(KIcon(action->iconName()).pixmap(64));
- qDBusRegisterMetaType<PKLAEntry>();
- QDBusConnection::systemBus().connect("org.kde.polkitkde1.helper", \
"/Helper", "org.kde.polkitkde1.helper",
- "policiesRetrieved", this, \
SLOT(slotPoliciesRetrieved(PKLAEntryList)));
- QDBusMessage message = \
QDBusMessage::createMethodCall("org.kde.polkitkde1.helper",
- "/Helper",
- \
"org.kde.polkitkde1.helper",
- \
QLatin1String("retrievePolicies"));
- QDBusPendingCall reply = \
QDBusConnection::systemBus().asyncCall(message); + \
computeActionPolicies(); }
-ActionWidget::~ActionWidget()
-{
-
}
-
-void ActionWidget::slotPoliciesRetrieved(const PKLAEntryList& policies)
-{
-}
-
-}
--- trunk/extragear/base/polkit-kde-1/kcmodules/polkitactions/ActionWidget.h \
#1067773:1067774 @@ -13,11 +13,9 @@
#include <QtGui/QWidget>
#include "../PKLAEntry.h"
+#include <PolkitQt1/ActionDescription>
-namespace PolkitQt1 {
-class ActionDescription;
-}
-
+class QComboBox;
namespace Ui {
class ActionWidget;
}
@@ -31,12 +29,20 @@
explicit ActionWidget(PolkitQt1::ActionDescription *action, \
QWidget* parent = 0); virtual ~ActionWidget();
- public slots:
- void slotPoliciesRetrieved(const PKLAEntryList &policies);
+ public Q_SLOTS:
+ void setAction(PolkitQt1::ActionDescription *action);
+ void computeActionPolicies();
+ private Q_SLOTS:
+ void reloadPKLAs();
+
private:
+ PolkitQt1::ActionDescription::ImplicitAuthorization \
implFromText(const QString &text); + void \
setImplicitAuthorization(PolkitQt1::ActionDescription::ImplicitAuthorization \
auth, QComboBox *box); +
Ui::ActionWidget *m_ui;
PolkitQt1::ActionDescription *m_action;
+ PKLAEntryList m_entries;
};
}
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic