[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