[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: 2010-02-20 20:40:44
Message-ID: 1266698444.896665.9819.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 1093417 by dafre:
Further work on KCMs
Signed-off-by: Dario Freddi <drf@kde.org>
M +40 -0 PKLAEntry.cpp
M +6 -0 PKLAEntry.h
M +62 -18 polkitactions/ActionWidget.cpp
M +2 -1 polkitactions/ActionWidget.h
M +1 -0 polkitactions/CMakeLists.txt
M +1 -15 polkitactions/actionwidget.ui
M +87 -0 polkitactions/pkitemdelegate.cpp
M +13 -0 polkitactions/pkitemdelegate.h
--- trunk/extragear/base/polkit-kde-1/kcmodules/PKLAEntry.cpp #1093416:1093417
@@ -29,3 +29,43 @@
return argument;
}
+PolkitQt1::ActionDescription::ImplicitAuthorization PKLAEntry::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;
+ }
+}
+
+QString PKLAEntry::textFromImpl(PolkitQt1::ActionDescription::ImplicitAuthorization \
implicit) +{
+ switch (implicit) {
+ case PolkitQt1::ActionDescription::Authorized:
+ return "yes";
+ case PolkitQt1::ActionDescription::NotAuthorized:
+ return "no";
+ case PolkitQt1::ActionDescription::AdministratorAuthenticationRequired:
+ return "auth_admin";
+ case PolkitQt1::ActionDescription::AdministratorAuthenticationRequiredRetained:
+ return "auth_admin_keep";
+ case PolkitQt1::ActionDescription::AuthenticationRequired:
+ return "auth_self";
+ case PolkitQt1::ActionDescription::AuthenticationRequiredRetained:
+ return "auth_self_keep";
+ default:
+ return QString();
+ }
+}
+
+
--- trunk/extragear/base/polkit-kde-1/kcmodules/PKLAEntry.h #1093416:1093417
@@ -10,7 +10,9 @@
#ifndef PKLAENTRY_H
#define PKLAENTRY_H
+
#include <QMetaType>
+#include <PolkitQt1/ActionDescription>
class QDBusArgument;
@@ -25,6 +27,10 @@
int filePriority;
int fileOrder;
+
+ // Static utils for PKLA
+ static PolkitQt1::ActionDescription::ImplicitAuthorization implFromText(const \
QString& text); + static QString \
textFromImpl(PolkitQt1::ActionDescription::ImplicitAuthorization implicit); };
Q_DECLARE_METATYPE(PKLAEntry)
--- trunk/extragear/base/polkit-kde-1/kcmodules/polkitactions/ActionWidget.cpp \
#1093416:1093417 @@ -18,6 +18,9 @@
#include <QtDBus/qdbusmetatype.h>
#include <PolkitQt1/ActionDescription>
#include <QDebug>
+#include "LocalAuthorization.h"
+#include <KDebug>
+#include "pkitemdelegate.h"
namespace PolkitKde {
@@ -32,6 +35,7 @@
reloadPKLAs();
setAction(action);
+ m_ui->localAuthListWidget->setItemDelegate(new PKLAItemDelegate);
}
ActionWidget::~ActionWidget()
@@ -66,41 +70,79 @@
void ActionWidget::computeActionPolicies()
{
+ kDebug();
+ m_ui->localAuthListWidget->clear();
foreach (const PKLAEntry &entry, m_entries) {
QStringList realActions = entry.action.split(';');
+ kDebug() << entry.action << m_action->actionId();
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); + kDebug() << "Found implicit override";
+ setImplicitAuthorization(PKLAEntry::implFromText(entry.resultActive), \
m_ui->activeComboBox); + \
setImplicitAuthorization(PKLAEntry::implFromText(entry.resultInactive), \
m_ui->inactiveComboBox); + \
setImplicitAuthorization(PKLAEntry::implFromText(entry.resultAny), \
m_ui->anyComboBox); } else {
// TODO: Add it to the local auths
+ //LocalAuthorization *auth = new LocalAuthorization(entry);
+ kDebug() << "Found PKLA override";
+ QListWidgetItem *item = new QListWidgetItem(entry.title);
+ item->setData(Qt::UserRole, formatPKLAEntry(entry));
+ m_ui->localAuthListWidget->addItem(item);
}
}
}
}
-PolkitQt1::ActionDescription::ImplicitAuthorization ActionWidget::implFromText(const \
QString& text) +QString ActionWidget::formatPKLAEntry(const PKLAEntry& entry)
{
- 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;
+ QString authorizationText;
+
+ if (PKLAEntry::implFromText(entry.resultActive) != m_action->implicitActive()) {
+ authorizationText.append(i18n("'%1' on active console", \
entry.resultActive)); + authorizationText.append(", ");
}
+ if (PKLAEntry::implFromText(entry.resultInactive) != \
m_action->implicitInactive()) { + authorizationText.append(i18n("'%1' on \
inactive console", entry.resultActive)); + authorizationText.append(", ");
+ }
+ if (PKLAEntry::implFromText(entry.resultAny) != m_action->implicitAny()) {
+ authorizationText.append(i18n("'%1' on any console", entry.resultActive));
+ authorizationText.append(", ");
+ }
+
+ if (authorizationText.endsWith(", ")) {
+ authorizationText.remove(-1, 2);
+ }
+
+ return i18np("%2 has the following policy: %3", "%2 have the following policy: \
%3", + entry.identity.split(';').count(), \
formatIdentities(entry.identity), authorizationText); }
+QString ActionWidget::formatIdentities(const QString& identities)
+{
+ QString rettext;
+ QStringList realIdentities = identities.split(';');
+
+ foreach (const QString &identity, realIdentities) {
+ if (identity.startsWith("unix-user:")) {
+ rettext.append(identity.split("unix-user:").last());
+ rettext.append(", ");
+ }
+ if (identity.startsWith("unix-group:")) {
+ rettext.append(i18n("%1 group", identity.split("unix-group:").last()));
+ rettext.append(", ");
+ }
+ }
+
+ if (rettext.endsWith(", ")) {
+ rettext = rettext.remove(rettext.length() - 2, 2);
+ }
+
+ return rettext;
+}
+
void ActionWidget::setImplicitAuthorization(PolkitQt1::ActionDescription::ImplicitAuthorization \
auth, QComboBox* box) {
switch (auth) {
@@ -122,6 +164,8 @@
case PolkitQt1::ActionDescription::AdministratorAuthenticationRequiredRetained:
box->setCurrentIndex(3);
break;
+ default:
+ break;
}
}
--- trunk/extragear/base/polkit-kde-1/kcmodules/polkitactions/ActionWidget.h \
#1093416:1093417 @@ -37,8 +37,9 @@
void reloadPKLAs();
private:
- PolkitQt1::ActionDescription::ImplicitAuthorization implFromText(const \
QString &text);
void setImplicitAuthorization(PolkitQt1::ActionDescription::ImplicitAuthorization \
auth, QComboBox *box); + QString formatPKLAEntry(const PKLAEntry &entry);
+ QString formatIdentities(const QString &identities);
Ui::ActionWidget *m_ui;
PolkitQt1::ActionDescription *m_action;
--- trunk/extragear/base/polkit-kde-1/kcmodules/polkitactions/CMakeLists.txt \
#1093416:1093417 @@ -4,6 +4,7 @@
PoliciesModel.cpp
PolicyItem.cpp
ActionWidget.cpp
+ LocalAuthorization.cpp
../PKLAEntry.cpp
pkitemdelegate.cpp
)
--- trunk/extragear/base/polkit-kde-1/kcmodules/polkitactions/actionwidget.ui \
#1093416:1093417 @@ -210,21 +210,7 @@
</property>
<layout class="QVBoxLayout" name="verticalLayout_3">
<item>
- <widget class="QScrollArea" name="scrollArea">
- <property name="widgetResizable">
- <bool>true</bool>
- </property>
- <widget class="QWidget" name="scrollAreaWidgetContents">
- <property name="geometry">
- <rect>
- <x>0</x>
- <y>0</y>
- <width>380</width>
- <height>223</height>
- </rect>
- </property>
- </widget>
- </widget>
+ <widget class="QListWidget" name="localAuthListWidget"/>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_2">
--- trunk/extragear/base/polkit-kde-1/kcmodules/polkitactions/pkitemdelegate.cpp \
#1093416:1093417 @@ -139,4 +139,91 @@
qMax(ITEM_ROW_HEIGHT, d_fm.height() + r_fm.height()));
}
+/////////////////////////////
+
+PKLAItemDelegate::PKLAItemDelegate(QObject *parent) : QStyledItemDelegate(parent)
+{}
+
+PKLAItemDelegate::~PKLAItemDelegate()
+{}
+
+void PKLAItemDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option,
+ const QModelIndex &index) const
+{
+ QStyleOptionViewItemV4 opt(option);
+
+ QStyle *style = QApplication::style();
+ style->drawPrimitive(QStyle::PE_PanelItemViewItem, &opt, painter, opt.widget);
+
+ QPixmap pixmap(opt.rect.size());
+ pixmap.fill(Qt::transparent);
+ QPainter p(&pixmap);
+ p.translate(-opt.rect.topLeft());
+
+ QRect clipRect(opt.rect);
+ p.setClipRect(clipRect);
+
+ // here we draw the icon
+ KIcon icon("dialog-password");
+
+ QIcon::Mode iconMode = QIcon::Normal;
+
+ if (opt.state & QStyle::State_MouseOver) {
+ iconMode = QIcon::Active;
+ }
+
+ const int height = (opt.rect.height() > ITEM_ROW_HEIGHT) ? opt.rect.height() : \
ITEM_ROW_HEIGHT; +
+ QRect iconRect(opt.rect.topLeft(), QSize(ICON_SIZE, ICON_SIZE));
+ const QRect iconPlaceRect(opt.rect.topLeft(), QSize(height, height));
+ iconRect.moveCenter(iconPlaceRect.center());
+ icon.paint(&p, iconRect, Qt::AlignCenter, iconMode);
+
+ QColor foregroundColor = (opt.state.testFlag(QStyle::State_Selected)) ?
+ opt.palette.color(QPalette::HighlightedText) : \
opt.palette.color(QPalette::Text); +
+ p.setPen(foregroundColor);
+
+ // here we draw the action description
+ clipRect.setSize(QSize(opt.rect.width() - height - MARGIN, height / 2));
+ clipRect.translate(height + MARGIN, 0);
+ p.setClipRect(clipRect);
+
+ QFont descriptionFont = opt.font;
+ if (index.model()->hasChildren(index)) {
+ descriptionFont.setBold(true);
+ }
+ descriptionFont.setPointSize(descriptionFont.pointSize());
+ p.setFont(descriptionFont);
+
+ p.drawText(clipRect, Qt::AlignLeft | Qt::AlignBottom, \
index.data(Qt::DisplayRole).toString()); +
+ // here we draw the action raw name
+ clipRect.translate(0, qApp->fontMetrics().height());
+ p.setClipRect(clipRect);
+
+ QFont actionNameFont = KGlobalSettings::smallestReadableFont();
+ actionNameFont.setItalic(true);
+ p.setFont(actionNameFont);
+ p.drawText(clipRect, Qt::AlignLeft | Qt::AlignVCenter, \
index.data(Qt::UserRole).toString()); +
+ p.end();
+
+ painter->drawPixmap(opt.rect.topLeft(), pixmap);
}
+
+QSize PKLAItemDelegate::sizeHint(const QStyleOptionViewItem &option, const \
QModelIndex &index) const +{
+ QFont dFont = option.font;
+
+ const QFont rFont = KGlobalSettings::smallestReadableFont();
+
+ QFontMetrics d_fm(dFont); // description font
+ QFontMetrics r_fm(rFont); // raw string font
+
+ return QSize(qMax(d_fm.width(index.data(Qt::DisplayRole).toString()),
+ \
d_fm.width(index.data(PolkitKde::PoliciesModel::PathRole).toString())), + \
qMax(ITEM_ROW_HEIGHT, d_fm.height() + r_fm.height())); +}
+
+}
--- trunk/extragear/base/polkit-kde-1/kcmodules/polkitactions/pkitemdelegate.h \
#1093416:1093417 @@ -38,6 +38,19 @@
};
+class PKLAItemDelegate : public QStyledItemDelegate
+{
+ Q_OBJECT
+
+public:
+ PKLAItemDelegate(QObject *parent = 0);
+ ~PKLAItemDelegate();
+
+ void paint(QPainter *painter, const QStyleOptionViewItem &option, const \
QModelIndex &index) const; + QSize sizeHint(const QStyleOptionViewItem &option, \
const QModelIndex &index) const; +
+};
+
}
#endif
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic