[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: branches/work/posix-acl-support/kdelibs/kio/kfile
From: Till Adam <adam () kde ! org>
Date: 2005-07-13 21:24:58
Message-ID: 1121289898.704288.16528.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 434382 by tilladam:
Add gui for adding and editing items.
M +119 -2 kacleditwidget.cpp
M +29 -1 kacleditwidget_p.h
--- branches/work/posix-acl-support/kdelibs/kio/kfile/kacleditwidget.cpp \
#434381:434382 @@ -25,11 +25,18 @@
#include <qvbox.h>
#include <qhbox.h>
#include <qpushbutton.h>
+#include <qvbuttongroup.h>
+#include <qradiobutton.h>
+#include <qcombobox.h>
+#include <qlabel.h>
+#include <qcheckbox.h>
+#include <qlayout.h>
#include <klocale.h>
#include <kfileitem.h>
#include <kdebug.h>
#include <kdialog.h>
+#include <kdialogbase.h>
#ifdef HAVE_ACL_LIBACL_H
# include <acl/libacl.h>
@@ -288,6 +295,104 @@
}
+
+EditACLEntryDialog::EditACLEntryDialog( KACLListView *listView, KACLListViewItem \
*item, + int allowedTypes, bool allowDefaults \
) + : KDialogBase( listView, "edit_entry_dialog", true,
+ i18n( "Edit ACL entry" ), KDialogBase::Ok|KDialogBase::Cancel,
+ KDialogBase::Ok, false ),
+ m_listView( listView ), m_item( item ), m_allowDefault( allowDefaults )
+{
+ QWidget *page = new QWidget( this );
+ setMainWidget( page );
+ QGridLayout *mainLayout = new QGridLayout( page, 1, 1, 0, spacingHint(), \
"mainLayout"); + m_buttonGroup = new QVButtonGroup( i18n("Entry type"), page, \
"bg" ); + mainLayout->addMultiCellWidget( m_buttonGroup, 0, 0, 0, 1 );
+
+ if ( allowedTypes & KACLListView::User ) {
+ QRadioButton *ownerType = new QRadioButton( i18n("Owner"), m_buttonGroup, \
"ownerType" ); + m_buttonGroup->insert( ownerType, KACLListView::User );
+ }
+ if ( allowedTypes & KACLListView::Group ) {
+ QRadioButton *owningGroupType = new QRadioButton( i18n("Owning Group"), \
m_buttonGroup, "owningGroupType" ); + m_buttonGroup->insert( owningGroupType, \
KACLListView::Group ); + }
+ if ( allowedTypes & KACLListView::Others ) {
+ QRadioButton *othersType = new QRadioButton( i18n("Others"), m_buttonGroup, \
"othersType" ); + m_buttonGroup->insert( othersType, KACLListView::Others );
+ }
+ if ( allowedTypes & KACLListView::Mask ) {
+ QRadioButton *maskType = new QRadioButton( i18n("Mask"), m_buttonGroup, \
"maskType" ); + m_buttonGroup->insert( maskType, KACLListView::Mask );
+ }
+ if ( allowedTypes & KACLListView::NamedUser ) {
+ QRadioButton *namedUserType = new QRadioButton( i18n("Named User"), \
m_buttonGroup, "namesUserType" ); + m_buttonGroup->insert( namedUserType, \
KACLListView::NamedUser ); + }
+ if ( allowedTypes & KACLListView::NamedGroup ) {
+ QRadioButton *namedGroupType = new QRadioButton( i18n("Named Group"), \
m_buttonGroup, "namedGroupType" ); + m_buttonGroup->insert( namedGroupType, \
KACLListView::NamedGroup ); + }
+ connect( m_buttonGroup, SIGNAL( clicked( int ) ),
+ this, SLOT( slotSelectionChanged( int ) ) );
+
+ m_userOrGroup = new QComboBox( FALSE, page, "userOrGroup" );
+ mainLayout->addWidget( m_userOrGroup, 1, 1 );
+
+ m_userOrGroupLabel = new QLabel( i18n( "User " ), page, "label" );
+ m_userOrGroupLabel->setBuddy( m_userOrGroup );
+ mainLayout->addWidget( m_userOrGroupLabel, 1, 0 );
+
+ if ( m_item ) {
+ m_buttonGroup->setButton( m_item->type );
+ slotSelectionChanged( m_item->type );
+ }
+ if ( allowDefaults ) {
+ QCheckBox *defaultCB = new QCheckBox( i18n("Default for new files in this \
directory"), page, "defaultCB" ); + mainLayout->addMultiCellWidget( defaultCB, \
2, 2, 0, 1 ); + }
+ incInitialSize( QSize( 150, 0 ) );
+}
+
+void EditACLEntryDialog::slotOk()
+{
+ KACLListView::EntryType type = static_cast<KACLListView::EntryType>( \
m_buttonGroup->selectedId() ); + if ( !m_item ) {
+ m_item = new KACLListViewItem( m_listView, type, 0, "jongel" );
+ } else {
+ m_item->type = type;
+ }
+ KDialogBase::slotOk();
+}
+
+void EditACLEntryDialog::slotSelectionChanged( int id )
+{
+ switch ( id ) {
+ case KACLListView::User:
+ case KACLListView::Group:
+ case KACLListView::Others:
+ case KACLListView::Mask:
+ m_userOrGroupLabel->setEnabled( false );
+ m_userOrGroup->setEnabled( false );
+ break;
+ case KACLListView::NamedUser:
+ m_userOrGroupLabel->setText( i18n( "User " ) );
+ m_userOrGroupLabel->setEnabled( true );
+ m_userOrGroup->setEnabled( true );
+ m_userOrGroup->show();
+ break;
+ case KACLListView::NamedGroup:
+ m_userOrGroupLabel->setText( i18n( "Group " ) );
+ m_userOrGroupLabel->setEnabled( true );
+ m_userOrGroup->setEnabled( true );
+ m_userOrGroup->show();
+ break;
+ default:
+ break;
+ }
+}
+
+
KACLListView::KACLListView( const KACL &anACL, QWidget* parent, const char* name )
: KListView( parent, name ),
m_HasMask( false )
@@ -505,12 +610,24 @@
void KACLListView::slotAddEntry()
{
- kdDebug() << k_funcinfo << endl;
+ int allowedTypes = NamedUser | NamedGroup;
+ if ( !m_HasMask )
+ allowedTypes |= Mask;
+ EditACLEntryDialog dlg( this, 0, allowedTypes );
+ dlg.exec();
}
void KACLListView::slotEditEntry()
{
- kdDebug() << k_funcinfo << endl;
+ QListViewItem * current = currentItem();
+ if ( !current ) return;
+ KACLListViewItem *item = static_cast<KACLListViewItem*>( current );
+ int allowedTypes = NamedUser | NamedGroup;
+ if ( !m_HasMask || item->type == Mask )
+ allowedTypes |= Mask;
+
+ EditACLEntryDialog dlg( this, item, allowedTypes );
+ dlg.exec();
}
void KACLListView::slotRemoveEntry()
--- branches/work/posix-acl-support/kdelibs/kio/kfile/kacleditwidget_p.h \
#434381:434382 @@ -27,10 +27,13 @@
#include <klistview.h>
#include <kacl.h>
#include <kfileitem.h>
+#include <kdialogbase.h>
#include <qpixmap.h>
class KACLListViewItem;
class QPushButton;
+class QVButtonGroup;
+class KACLListView;
/**
@author Sean Harmer
@@ -50,7 +53,13 @@
AA_MASK,
AA_COUNT
};
- enum EntryType { User, Group, Others, Mask, NamedUser, NamedGroup };
+ enum EntryType { User = 1,
+ Group = 2,
+ Others = 4,
+ Mask = 8,
+ NamedUser = 16,
+ NamedGroup = 32,
+ AllTypes = 63 };
KACLListView( const KACL &anACL, QWidget* parent = 0, const char* name = 0 );
~KACLListView();
@@ -90,7 +99,26 @@
bool m_HasMask;
};
+class EditACLEntryDialog : public KDialogBase
+{
+ Q_OBJECT
+public:
+ EditACLEntryDialog( KACLListView *listView, KACLListViewItem *item = 0,
+ int allowedTypes = KACLListView::AllTypes,
+ bool allowDefault = false );
+public slots:
+ void slotOk();
+ void slotSelectionChanged( int id );
+private:
+ KACLListView *m_listView;
+ KACLListViewItem *m_item;
+ QVButtonGroup *m_buttonGroup;
+ QComboBox *m_userOrGroup;
+ QLabel *m_userOrGroupLabel;
+ bool m_allowDefault;
+};
+
class KACLListViewItem : public KListViewItem
{
public:
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic