[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    KDE/kdepim/libkleo/ui
From:       Marc Mutz <mutz () kde ! org>
Date:       2008-04-25 12:21:16
Message-ID: 1209126076.661897.10262.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 800994 by mutz:

Massage New functionality into actually working

 M  +49 -9     directoryserviceswidget.cpp  
 M  +2 -0      directoryserviceswidget.h  
 M  +19 -4     directoryserviceswidget.ui  


--- trunk/KDE/kdepim/libkleo/ui/directoryserviceswidget.cpp #800993:800994
@@ -42,6 +42,8 @@
 #include <QSpinBox>
 #include <QComboBox>
 #include <QHeaderView>
+#include <QMenu>
+#include <QAction>
 
 #include <boost/bind.hpp>
 
@@ -59,6 +61,7 @@
     static KUrl defaultX509Service() {
         KUrl url;
         url.setProtocol( "ldap" );
+        url.setHost( i18nc("default server name, keep it a valid domain name, ie. no \
spaces", "server") );  return url;
     }
     static KUrl defaultOpenPGPService() {
@@ -393,27 +396,33 @@
         int row = selectedRow();
         if ( row < 0 )
             row = currentRow();
-        QModelIndex index;
-        if ( row < 0 ) {
+        if ( row < 0 )
             if ( protocols & OpenPGPProtocol )
-                index = model.addOpenPGPService( defaultOpenPGPService() );
+                slotNewOpenPGPClicked();
             else if ( protocols & X509Protocol )
-                index = model.addX509Service( defaultX509Service() );
+                slotNewX509Clicked();
             else
                 assert( !"This should not happen.");
-        } else {
-            index = model.duplicateRow( row );
-        }
+        else
+            edit( model.duplicateRow( row ) );
+    }
+    void edit( const QModelIndex & index ) {
         if ( index.isValid() ) {
             ui.treeView->clearSelection();
             ui.treeView->edit( index );
         }
     }
+    void slotNewX509Clicked() {
+        edit( model.addX509Service( defaultX509Service() ) );
+    }
+    void slotNewOpenPGPClicked() {
+        edit( model.addOpenPGPService( defaultOpenPGPService() ) );
+    }
     void slotDeleteClicked() {
         model.deleteRow( selectedRow() );
     }
     void slotSelectionChanged() {
-        ui.deletePB->setEnabled( selectedRow() >= 0 );
+        ui.deleteTB->setEnabled( selectedRow() >= 0 );
     }
     void slotShowUserAndPasswordToggled( bool on ) {
         QHeaderView * const hv = ui.treeView->header();
@@ -433,16 +442,46 @@
 
     void showHideColumns();
 
+    void enableDisableActions() {
+        ui.newX509Action.setEnabled( protocols & X509Protocol );
+        ui.newOpenPGPAction.setEnabled( protocols & OpenPGPProtocol );
+        if ( protocols == AllProtocols ) {
+            ui.newTB->setMenu( &ui.newMenu );
+            ui.newTB->setPopupMode( QToolButton::MenuButtonPopup );
+        } else {
+            ui.newTB->setMenu( 0 );
+            ui.newTB->setPopupMode( QToolButton::DelayedPopup );
+        }
+    }
+
 private:
     Protocols protocols;
     Model model;
     Delegate delegate;
     struct UI : Ui_DirectoryServicesWidget {
+        QAction newX509Action;
+        QAction newOpenPGPAction;
+        QMenu newMenu;
 
         explicit UI( DirectoryServicesWidget * q )
-            : Ui_DirectoryServicesWidget()
+            : Ui_DirectoryServicesWidget(),
+              newX509Action( i18nc("New X.509 Directory Server", "X.509"), q ),
+              newOpenPGPAction( i18nc("New OpenPGP Directory Server", "OpenPGP"), q \
), +              newMenu( q )
         {
+            newX509Action.setObjectName( "newX509Action" );
+            newOpenPGPAction.setObjectName( "newOpenPGPAction" );
+            newMenu.setObjectName( "newMenu" );
+
             setupUi( q );
+
+            connect( &newX509Action, SIGNAL(triggered()), q, \
SLOT(slotNewX509Clicked()) ); +            connect( &newOpenPGPAction, \
SIGNAL(triggered()), q, SLOT(slotNewOpenPGPClicked()) ); +
+            newMenu.addAction( &newX509Action );
+            newMenu.addAction( &newOpenPGPAction );
+            
+            newTB->setMenu( &newMenu );
         }
 
     } ui;
@@ -473,6 +512,7 @@
         return;
     d->protocols = protocols;
     d->showHideColumns();
+    d->enableDisableActions();
 }
 
 DirectoryServicesWidget::Protocols DirectoryServicesWidget::allowedProtocols() const \
                {
--- trunk/KDE/kdepim/libkleo/ui/directoryserviceswidget.h #800993:800994
@@ -87,6 +87,8 @@
   class Private;
   Private * const d;
   Q_PRIVATE_SLOT( d, void slotNewClicked() )
+  Q_PRIVATE_SLOT( d, void slotNewX509Clicked() )
+  Q_PRIVATE_SLOT( d, void slotNewOpenPGPClicked() );
   Q_PRIVATE_SLOT( d, void slotDeleteClicked() )
   Q_PRIVATE_SLOT( d, void slotSelectionChanged() )
   Q_PRIVATE_SLOT( d, void slotShowUserAndPasswordToggled(bool) )
--- trunk/KDE/kdepim/libkleo/ui/directoryserviceswidget.ui #800993:800994
@@ -50,7 +50,13 @@
         <number>0</number>
        </property>
        <item>
-        <widget class="QPushButton" name="newPB" >
+        <widget class="QToolButton" name="newTB" >
+         <property name="sizePolicy" >
+          <sizepolicy vsizetype="Fixed" hsizetype="Preferred" >
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
          <property name="toolTip" >
           <string>Click to add a service</string>
          </property>
@@ -60,10 +66,16 @@
          <property name="text" >
           <string>New</string>
          </property>
+         <property name="popupMode" >
+          <enum>QToolButton::MenuButtonPopup</enum>
+         </property>
+         <property name="toolButtonStyle" >
+          <enum>Qt::ToolButtonTextBesideIcon</enum>
+         </property>
         </widget>
        </item>
        <item>
-        <widget class="QPushButton" name="deletePB" >
+        <widget class="QToolButton" name="deleteTB" >
          <property name="enabled" >
           <bool>false</bool>
          </property>
@@ -76,6 +88,9 @@
          <property name="text" >
           <string>Delete</string>
          </property>
+         <property name="toolButtonStyle" >
+          <enum>Qt::ToolButtonTextBesideIcon</enum>
+         </property>
         </widget>
        </item>
        <item>
@@ -112,7 +127,7 @@
  <resources/>
  <connections>
   <connection>
-   <sender>newPB</sender>
+   <sender>newTB</sender>
    <signal>clicked()</signal>
    <receiver>DirectoryServicesWidget</receiver>
    <slot>slotNewClicked()</slot>
@@ -128,7 +143,7 @@
    </hints>
   </connection>
   <connection>
-   <sender>deletePB</sender>
+   <sender>deleteTB</sender>
    <signal>clicked()</signal>
    <receiver>DirectoryServicesWidget</receiver>
    <slot>slotDeleteClicked()</slot>


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic