[Digikam-devel] extragear/graphics/digikam

Gilles Caulier caulier.gilles at free.fr
Sun Aug 27 18:25:19 BST 2006


SVN commit 577841 by cgilles:

digikam from trunk : tags create/edit dialogs :

- Use the active parent window to display dialog (bugfix).
- Use an internal 'd' private class.
- Use KLineEdit instead QLineEdit.

CCMAIL: digikam-devel at kde.org

 M  +117 -81   digikam/tagcreatedlg.cpp  
 M  +19 -17    digikam/tagcreatedlg.h  
 M  +2 -2      digikam/tagfilterview.cpp  
 M  +2 -2      digikam/tagfolderview.cpp  
 M  +1 -1      digikam/tagspopupmenu.cpp  
 M  +2 -3      libs/imageproperties/imagedescedittab.cpp  


--- trunk/extragear/graphics/digikam/digikam/tagcreatedlg.cpp #577840:577841
@@ -1,10 +1,12 @@
 /* ============================================================
- * Author: Renchi Raju <renchi at pooh.tam.uiuc.edu>
- * Date  : 2004-07-01
- * Description :
+ * Authors: Renchi Raju <renchi at pooh.tam.uiuc.edu>
+ *          Caulier Gilles <caulier dot gilles at kdemail dot net>
+ * Date   : 2004-07-01
+ * Description : dialog to edit and create digiKam Tags
+ * 
+ * Copyright 2004-2005 by Renchi Raju
+ * Copyright 2006 by Gilles Caulier
  *
- * Copyright 2004 by Renchi Raju
-
  * This program is free software; you can redistribute it
  * and/or modify it under the terms of the GNU General
  * Public License as published by the Free Software Foundation;
@@ -24,10 +26,10 @@
 #include <qlabel.h>
 #include <qframe.h>
 #include <qlayout.h>
-#include <qlineedit.h>
 
 // KDE includes.
 
+#include <klineedit.h>
 #include <klocale.h>
 #include <kicondialog.h>
 #include <kapplication.h>
@@ -42,15 +44,33 @@
 namespace Digikam
 {
 
-TagCreateDlg::TagCreateDlg(TAlbum* parent)
-    : KDialogBase( Plain, i18n("Create New Tag"), Help|Ok|Cancel, Ok,
-                   0, 0, true, true )
+class TagCreateDlgPriv
 {
+public:
+
+    TagCreateDlgPriv()
+    {
+        titleEdit  = 0;
+        iconButton = 0;
+    }
+
+    KLineEdit   *titleEdit;
+
+    QString      icon;
+
+    QPushButton *iconButton;
+};
+
+TagCreateDlg::TagCreateDlg(QWidget *parent, TAlbum* album)
+            : KDialogBase( Plain, i18n("Create New Tag"), Help|Ok|Cancel, Ok,
+                           parent, 0, true, true )
+{
+    d = new TagCreateDlgPriv;
     setHelp("tagscreation.anchor", "digikam");
     QVBoxLayout *topLayout = new QVBoxLayout(plainPage(), 0, spacingHint());
 
     QLabel *topLabel = new QLabel(plainPage());
-    topLabel->setText( i18n("<qt><b>Create New Tag in <i>%1</i></b></qt>").arg(parent->prettyURL()) );
+    topLabel->setText( i18n("<qt><b>Create New Tag in <i>%1</i></b></qt>").arg(album->prettyURL()));
     topLabel->setAlignment(Qt::AlignAuto | Qt::AlignVCenter | Qt::SingleLine);
     topLayout->addWidget(topLabel);
 
@@ -69,64 +89,63 @@
     titleLabel->setText(i18n("&Title:"));
     gl->addWidget(titleLabel, 0, 0);
 
-    m_titleEdit = new QLineEdit(plainPage());
-    titleLabel->setBuddy(m_titleEdit);
-    gl->addWidget(m_titleEdit, 0, 1);
+    d->titleEdit = new KLineEdit(plainPage());
+    titleLabel->setBuddy(d->titleEdit);
+    gl->addWidget(d->titleEdit, 0, 1);
 
-    setFocusProxy(m_titleEdit);
+    setFocusProxy(d->titleEdit);
 
     QLabel *iconTextLabel = new QLabel(plainPage());
     iconTextLabel->setText(i18n("&Icon:"));
     gl->addWidget(iconTextLabel, 1, 0);
 
-    m_iconButton = new QPushButton(plainPage());
-    m_iconButton->setFixedSize(40, 40);
-    iconTextLabel->setBuddy(m_iconButton);
-    gl->addWidget(m_iconButton, 1, 1);
+    d->iconButton = new QPushButton(plainPage());
+    d->iconButton->setFixedSize(40, 40);
+    iconTextLabel->setBuddy(d->iconButton);
+    gl->addWidget(d->iconButton, 1, 1);
 
     QSpacerItem* spacer = new QSpacerItem(0, 0, QSizePolicy::Minimum,
                                           QSizePolicy::Expanding);
     gl->addItem(spacer, 2, 1);
 
-    connect(m_iconButton, SIGNAL(clicked()),
-            SLOT(slotIconChange()));
-    connect(m_titleEdit, SIGNAL(textChanged(const QString&)),
-            SLOT(slotTitleChanged(const QString&)));
+    connect(d->iconButton, SIGNAL(clicked()),
+            this, SLOT(slotIconChange()));
+
+    connect(d->titleEdit, SIGNAL(textChanged(const QString&)),
+            this, SLOT(slotTitleChanged(const QString&)));
     
     // by default assign the icon of the parent (if not root)
     // to this new tag
-    if (!parent->isRoot())
+    if (!album->isRoot())
     {
-        m_icon = parent->icon();
-        m_iconButton->setIconSet(SyncJob::getTagThumbnail(m_icon, 20));
+        d->icon = album->icon();
+        d->iconButton->setIconSet(SyncJob::getTagThumbnail(d->icon, 20));
     }
 
-    enableButtonOK(!m_titleEdit->text().isEmpty());
+    enableButtonOK(!d->titleEdit->text().isEmpty());
     adjustSize();
 }
 
 TagCreateDlg::~TagCreateDlg()
 {
-
+    delete d;
 }
 
 QString TagCreateDlg::title() const
 {
-    return m_titleEdit->text();
+    return d->titleEdit->text();
 }
 
-
 QString TagCreateDlg::icon() const
 {
-    return m_icon;
+    return d->icon;
 }
 
 void TagCreateDlg::slotIconChange()
 {
 #if KDE_IS_VERSION(3,3,0)
     KIconDialog dlg(this);
-    dlg.setup(KIcon::NoGroup, KIcon::Application, false, 20, false,
-              true, true);
+    dlg.setup(KIcon::NoGroup, KIcon::Application, false, 20, false, true, true);
     QString icon = dlg.openDialog();
 #else
     QString icon = KIconDialog::getIcon(KIcon::NoGroup, KIcon::Application, false, 20);
@@ -134,43 +153,59 @@
         return;
 #endif
 
-    if (icon.isEmpty() || m_icon == icon)
+    if (icon.isEmpty() || d->icon == icon)
         return;
 
-    m_icon = icon;
-    m_iconButton->setIconSet(SyncJob::getTagThumbnail(m_icon, 20));
+    d->icon = icon;
+    d->iconButton->setIconSet(SyncJob::getTagThumbnail(d->icon, 20));
 }
 
-
 void TagCreateDlg::slotTitleChanged(const QString& newtitle)
 {
     enableButtonOK(!newtitle.isEmpty());
 }
 
-bool TagCreateDlg::tagCreate(TAlbum* parent, QString& title,
-                             QString& icon)
+bool TagCreateDlg::tagCreate(QWidget *parent, TAlbum* album, QString& title, QString& icon)
 {
-    TagCreateDlg dlg(parent);
+    TagCreateDlg dlg(parent, album);
 
-    bool ok = dlg.exec() == QDialog::Accepted;
+    bool valRet = dlg.exec();
+    if (valRet == QDialog::Accepted)
+    {
+        title = dlg.title();
+        icon  = dlg.icon();
+    }
 
-    title    = dlg.title();
-    icon     = dlg.icon();
-
-    return ok;
+    return valRet;
 }
 
 // -------------------------------------------------------------------------------------
 
-TagEditDlg::TagEditDlg(TAlbum* album)
-    : KDialogBase( Plain, i18n("Edit Tag"), Ok|Cancel, Ok,
-                   0, 0, true, true )
+class TagEditDlgPriv
 {
+public:
+
+    TagEditDlgPriv()
+    {
+        titleEdit  = 0;
+        iconButton = 0;
+    }
+
+    KLineEdit   *titleEdit;
+
+    QString      icon;
+
+    QPushButton *iconButton;
+};
+
+TagEditDlg::TagEditDlg(QWidget *parent, TAlbum* album)
+          : KDialogBase(Plain, i18n("Edit Tag"), Ok|Cancel, Ok, parent, 0, true, true )
+{
+    d = new TagEditDlgPriv;
     QVBoxLayout *topLayout = new QVBoxLayout(plainPage(), 0, spacingHint());
 
     QLabel *topLabel = new QLabel(plainPage());
-    topLabel->setText( i18n("<qt><b><i>%1</i> Properties</b></qt>")
-                       .arg(album->prettyURL()) );
+    topLabel->setText( i18n("<qt><b><i>%1</i> Properties</b></qt>").arg(album->prettyURL()) );
     topLabel->setAlignment(Qt::AlignAuto | Qt::AlignVCenter | Qt::SingleLine);
     topLayout->addWidget(topLabel);
 
@@ -189,59 +224,59 @@
     titleLabel->setText(i18n("&Title:"));
     gl->addWidget(titleLabel, 0, 0);
 
-    m_titleEdit = new QLineEdit(plainPage());
-    m_titleEdit->setText(album->title());
-    titleLabel->setBuddy(m_titleEdit);
-    gl->addWidget(m_titleEdit, 0, 1);
+    d->titleEdit = new KLineEdit(plainPage());
+    d->titleEdit->setText(album->title());
+    titleLabel->setBuddy(d->titleEdit);
+    gl->addWidget(d->titleEdit, 0, 1);
 
-    setFocusProxy(m_titleEdit);
+    setFocusProxy(d->titleEdit);
 
     QLabel *iconTextLabel = new QLabel(plainPage());
     iconTextLabel->setText(i18n("&Icon:"));
     gl->addWidget(iconTextLabel, 1, 0);
 
-    m_iconButton = new QPushButton(plainPage());
-    m_iconButton->setFixedSize(40, 40);
-    iconTextLabel->setBuddy(m_iconButton);
-    gl->addWidget(m_iconButton, 1, 1);
+    d->iconButton = new QPushButton(plainPage());
+    d->iconButton->setFixedSize(40, 40);
+    iconTextLabel->setBuddy(d->iconButton);
+    gl->addWidget(d->iconButton, 1, 1);
 
     QSpacerItem* spacer = new QSpacerItem(0, 0, QSizePolicy::Minimum,
                                           QSizePolicy::Expanding);
     gl->addItem(spacer, 2, 1);
 
-    connect(m_iconButton, SIGNAL(clicked()),
-            SLOT(slotIconChange()));
-    connect(m_titleEdit, SIGNAL(textChanged(const QString&)),
-            SLOT(slotTitleChanged(const QString&)));
+    connect(d->iconButton, SIGNAL(clicked()),
+            this, SLOT(slotIconChange()));
 
-    m_icon = album->icon();
-    m_iconButton->setIconSet(SyncJob::getTagThumbnail(m_icon, 20));
+    connect(d->titleEdit, SIGNAL(textChanged(const QString&)),
+            this, SLOT(slotTitleChanged(const QString&)));
 
-    enableButtonOK(!m_titleEdit->text().isEmpty());
+    d->icon = album->icon();
+    d->iconButton->setIconSet(SyncJob::getTagThumbnail(d->icon, 20));
+
+    enableButtonOK(!d->titleEdit->text().isEmpty());
     adjustSize();
 }
 
 TagEditDlg::~TagEditDlg()
 {
-
+    delete d;
 }
 
 QString TagEditDlg::title() const
 {
-    return m_titleEdit->text();
+    return d->titleEdit->text();
 }
 
 QString TagEditDlg::icon() const
 {
-    return m_icon;
+    return d->icon;
 }
 
 void TagEditDlg::slotIconChange()
 {
 #if KDE_IS_VERSION(3,3,0)
     KIconDialog dlg(this);
-    dlg.setup(KIcon::NoGroup, KIcon::Application, false, 20, false,
-              true, true);
+    dlg.setup(KIcon::NoGroup, KIcon::Application, false, 20, false, true, true);
     QString icon = dlg.openDialog();
 #else
     QString icon = KIconDialog::getIcon(KIcon::NoGroup, KIcon::Application, false, 20);
@@ -249,11 +284,11 @@
         return;
 #endif
     
-    if (icon.isEmpty() || icon == m_icon)
+    if (icon.isEmpty() || icon == d->icon)
         return;
 
-    m_icon = icon;
-    m_iconButton->setIconSet(SyncJob::getTagThumbnail(m_icon, 20));
+    d->icon = icon;
+    d->iconButton->setIconSet(SyncJob::getTagThumbnail(d->icon, 20));
 }
 
 void TagEditDlg::slotTitleChanged(const QString& newtitle)
@@ -261,17 +296,18 @@
     enableButtonOK(!newtitle.isEmpty());
 }
 
-bool TagEditDlg::tagEdit(TAlbum* album, QString& title,
-                         QString& icon)
+bool TagEditDlg::tagEdit(QWidget *parent, TAlbum* album, QString& title, QString& icon)
 {
-    TagEditDlg dlg(album);
+    TagEditDlg dlg(parent, album);
 
-    bool ok = (dlg.exec() == QDialog::Accepted);
+    bool valRet = dlg.exec();
+    if (valRet == QDialog::Accepted)
+    {
+        title = dlg.title();
+        icon  = dlg.icon();
+    }
 
-    title    = dlg.title();
-    icon     = dlg.icon();
-
-    return ok;
+    return valRet;
 }
 
 }  // namespace Digikam
--- trunk/extragear/graphics/digikam/digikam/tagcreatedlg.h #577840:577841
@@ -1,10 +1,12 @@
 /* ============================================================
- * Author: Renchi Raju <renchi at pooh.tam.uiuc.edu>
- * Date  : 2004-07-01
- * Description : 
+ * Authors: Renchi Raju <renchi at pooh.tam.uiuc.edu>
+ *          Caulier Gilles <caulier dot gilles at kdemail dot net>
+ * Date   : 2004-07-01
+ * Description : dialog to edit and create digiKam Tags
  * 
- * Copyright 2004 by Renchi Raju
-
+ * Copyright 2004-2005 by Renchi Raju
+ * Copyright 2006 by Gilles Caulier
+ *
  * This program is free software; you can redistribute it
  * and/or modify it under the terms of the GNU General
  * Public License as published by the Free Software Foundation;
@@ -32,24 +34,27 @@
 class QComboBox;
 class QLineEdit;
 class QPushButton;
+class QWidget;
 
 namespace Digikam
 {
 
+class TagCreateDlgPriv;
+class TagEditDlgPriv;
+
 class TagCreateDlg : public KDialogBase
 {
     Q_OBJECT
 
 public:
 
-    TagCreateDlg(TAlbum* parent);
+    TagCreateDlg(QWidget *parent, TAlbum* album);
     ~TagCreateDlg();
 
     QString title() const;
     QString icon() const;
 
-    static bool tagCreate(TAlbum* parent, QString& title,
-                          QString& icon);
+    static bool tagCreate(QWidget *parent, TAlbum* album, QString& title, QString& icon);
 
 private slots:
 
@@ -58,25 +63,24 @@
     
 private:
 
-    QLineEdit*    m_titleEdit;
-    QString       m_icon;
-    QPushButton*  m_iconButton;
+    TagCreateDlgPriv *d;
 };
 
+// -------------------------------------------------------------------------------------
+
 class TagEditDlg : public KDialogBase
 {
     Q_OBJECT
 
 public:
 
-    TagEditDlg(TAlbum* album);
+    TagEditDlg(QWidget *parent, TAlbum* album);
     ~TagEditDlg();
 
     QString title() const;
     QString icon() const;
 
-    static bool tagEdit(TAlbum* album, QString& title,
-                        QString& icon);
+    static bool tagEdit(QWidget *parent, TAlbum* album, QString& title, QString& icon);
 
 private slots:
 
@@ -85,9 +89,7 @@
     
 private:
 
-    QLineEdit*    m_titleEdit;
-    QString       m_icon;
-    QPushButton*  m_iconButton;
+    TagEditDlgPriv *d;
 };
 
 }  // namespace Digikam
--- trunk/extragear/graphics/digikam/digikam/tagfilterview.cpp #577840:577841
@@ -542,7 +542,7 @@
 
     QString title;
     QString icon;
-    if (!TagCreateDlg::tagCreate(parent, title, icon))
+    if (!TagCreateDlg::tagCreate(kapp->activeWindow(), parent, title, icon))
         return;
 
     QString errMsg;
@@ -575,7 +575,7 @@
         return;
 
     QString title, icon;
-    if (!TagEditDlg::tagEdit(tag, title, icon))
+    if (!TagEditDlg::tagEdit(kapp->activeWindow(), tag, title, icon))
     {
         return;
     }
--- trunk/extragear/graphics/digikam/digikam/tagfolderview.cpp #577840:577841
@@ -450,7 +450,7 @@
 
     if (title.isNull())
     {
-        if(!TagCreateDlg::tagCreate(parent, title, icon))
+        if(!TagCreateDlg::tagCreate(kapp->activeWindow(), parent, title, icon))
             return;
     }
 
@@ -483,7 +483,7 @@
         return;
 
     QString title, icon;
-    if(!TagEditDlg::tagEdit(tag, title, icon))
+    if(!TagEditDlg::tagEdit(kapp->activeWindow(), tag, title, icon))
     {
         return;
     }
--- trunk/extragear/graphics/digikam/digikam/tagspopupmenu.cpp #577840:577841
@@ -316,7 +316,7 @@
         }
 
         QString title, icon;
-        if (!TagCreateDlg::tagCreate(parent, title, icon))
+        if (!TagCreateDlg::tagCreate(kapp->activeWindow(), parent, title, icon))
             return;
 
         QString errMsg;
--- trunk/extragear/graphics/digikam/libs/imageproperties/imagedescedittab.cpp #577840:577841
@@ -598,7 +598,7 @@
     QString title, icon;
     AlbumManager *albumMan_ = AlbumManager::instance();
 
-    if (!TagCreateDlg::tagCreate(parAlbum, title, icon))
+    if (!TagCreateDlg::tagCreate(kapp->activeWindow(), parAlbum, title, icon))
         return;
 
     QString errMsg;
@@ -658,10 +658,9 @@
     QString title;
     QString icon;
 
-    if (!TagEditDlg::tagEdit(album, title, icon))
+    if (!TagEditDlg::tagEdit(kapp->activeWindow(), album, title, icon))
         return;
 
-
     AlbumManager *albumMan = AlbumManager::instance();
     if (album->title() != title)
     {



More information about the Digikam-devel mailing list