[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