[Digikam-devel] [Bug 140234] thumbnail click default action

Gilles Caulier caulier.gilles at kdemail.net
Fri Jan 19 09:56:29 GMT 2007


------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.
         
http://bugs.kde.org/show_bug.cgi?id=140234         
caulier.gilles kdemail net changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|                            |FIXED



------- Additional Comments From caulier.gilles kdemail net  2007-01-19 10:56 -------
SVN commit 625157 by cgilles:

digiKam from trunk : New option in Album Setup dialog page to choose the right action to do when user right click on Album Icon View if current item is a picture :

- Show the embeded image preview (default).
- Load the image in editor.

BUG: 140234



 M  +7 -3      digikam/albumiconview.cpp  
 M  +23 -6     digikam/albumsettings.cpp  
 M  +10 -1     digikam/albumsettings.h  
 M  +13 -2     digikam/albumwidgetstack.cpp  
 M  +5 -1      digikam/albumwidgetstack.h  
 M  +2 -0      digikam/imagepreviewview.cpp  
 M  +1 -0      digikam/imagepreviewview.h  
 M  +8 -11     digikam/imagepreviewwidget.cpp  
 M  +4 -5      digikam/imagepreviewwidget.h  
 M  +30 -15    utilities/setup/setupgeneral.cpp  
 M  +4 -4      utilities/setup/setupgeneral.h  


--- trunk/extragear/graphics/digikam/digikam/albumiconview.cpp #625156:625157
 @ -449,7 +449,10  @
 {
     if (!item) return;
 
-    slotDisplayItem(static_cast<AlbumIconItem *>(item));
+    if (d->albumSettings->getItemRightClickAction() == AlbumSettings::ShowPreview)
+        signalPreviewItem(static_cast<AlbumIconItem *>(item));
+    else 
+        slotDisplayItem(static_cast<AlbumIconItem *>(item));
 }
 
 void AlbumIconView::slotRightButtonClicked(const QPoint& pos)
 @ -599,7 +602,7  @
         
     // Merge in the KIPI plugins actions ----------------------------
 
-    KIPI::PluginLoader* kipiPluginLoader = KIPI::PluginLoader::instance();
+    KIPI::PluginLoader* kipiPluginLoader      = KIPI::PluginLoader::instance();
     KIPI::PluginLoader::PluginList pluginList = kipiPluginLoader->pluginList();
     
     for (KIPI::PluginLoader::PluginList::const_iterator it = pluginList.begin();
 @ -845,7 +848,8  @
     if (!dialog.confirmDeleteList(urlList,
                                   DeleteDialogMode::Files,
                                   deletePermanently ?
-                                  DeleteDialogMode::NoChoiceDeletePermanently : DeleteDialogMode::NoChoiceTrash))
+                                  DeleteDialogMode::NoChoiceDeletePermanently :
+                                  DeleteDialogMode::NoChoiceTrash))
         return;
 
     bool useTrash = !dialog.shouldDelete();
--- trunk/extragear/graphics/digikam/digikam/albumsettings.cpp #625156:625157
 @ -5,7 +5,7  @
  * Description : albums settings interface
  *
  * Copyright 2003-2004 by Renchi Raju and Gilles Caulier
- * Copyright 2005-2006 by Gilles Caulier
+ * Copyright 2005-2007 by Gilles Caulier
  *
  * This program is free software; you can redistribute it
  * and/or modify it under the terms of the GNU General
 @ -33,8 +33,8  @
 // Local includes.
 
 #include "thumbnailsize.h"
+#include "rawfiles.h"
 #include "albumsettings.h"
-#include "rawfiles.h"
 
 namespace Digikam
 {
 @ -106,8 +106,9  @
 
     KConfig     *config;
 
-    AlbumSettings::AlbumSortOrder albumSortOrder;
-    AlbumSettings::ImageSortOrder imageSortOrder;
+    AlbumSettings::AlbumSortOrder       albumSortOrder;
+    AlbumSettings::ImageSortOrder       imageSortOrder;
+    AlbumSettings::ItemRightClickAction itemRightClickAction;
 };
 
 
 @ -145,8 +146,9  @
     d->albumCollectionNames.append(i18n("Miscellaneous"));
     d->albumCollectionNames.sort();
 
-    d->albumSortOrder  = AlbumSettings::ByFolder;
-    d->imageSortOrder  = AlbumSettings::ByIName;
+    d->albumSortOrder       = AlbumSettings::ByFolder;
+    d->imageSortOrder       = AlbumSettings::ByIName;
+    d->itemRightClickAction = AlbumSettings::ShowPreview;
 
     d->imageFilefilter = "*.png *.jpg *.jpeg *.jpe *.tif *.tiff *.gif *.bmp *.xpm *.ppm *.pnm *.xcf *.pcx";
     d->movieFilefilter = "*.mpeg *.mpg *.mpo *.mpe *.avi *.mov *.wmf *.asf";
 @ -224,6 +226,10  @
     d->imageSortOrder = AlbumSettings::ImageSortOrder(config->readNumEntry("Image Sort Order",
                                                       (int)AlbumSettings::ByIName));
 
+    d->itemRightClickAction = AlbumSettings::ItemRightClickAction(config->readNumEntry(
+                                                                  "Item Right Click Action",
+                                                                  (int)AlbumSettings::ShowPreview));
+
     d->imageFilefilter = config->readEntry("File Filter", d->imageFilefilter);
     d->movieFilefilter = config->readEntry("Movie File Filter", d->movieFilefilter);
     d->audioFilefilter = config->readEntry("Audio File Filter", d->audioFilefilter);
 @ -305,6 +311,7  @
     config->writeEntry("Album Collections", d->albumCollectionNames);
     config->writeEntry("Album Sort Order", (int)d->albumSortOrder);
     config->writeEntry("Image Sort Order", (int)d->imageSortOrder);
+    config->writeEntry("Item Right Click Action", (int)d->itemRightClickAction);
     config->writeEntry("File Filter", d->imageFilefilter);
     config->writeEntry("Movie File Filter", d->movieFilefilter);
     config->writeEntry("Audio File Filter", d->audioFilefilter);
 @ -451,6 +458,16  @
     return d->imageSortOrder;
 }
 
+void AlbumSettings::setItemRightClickAction(const ItemRightClickAction action)
+{
+    d->itemRightClickAction = action;
+}
+
+AlbumSettings::ItemRightClickAction AlbumSettings::getItemRightClickAction() const
+{
+    return d->itemRightClickAction;
+}
+
 void AlbumSettings::setImageFileFilter(const QString& filter)
 {
     d->imageFilefilter = filter;
--- trunk/extragear/graphics/digikam/digikam/albumsettings.h #625156:625157
 @ -5,7 +5,7  @
  * Description : albums settings interface
  *
  * Copyright 2003-2004 by Renchi Raju and Gilles Caulier
- * Copyright 2005-2006 by Gilles Caulier
+ * Copyright 2005-2007 by Gilles Caulier
  *
  * This program is free software; you can redistribute it
  * and/or modify it under the terms of the GNU General
 @ -53,6 +53,12  @
         ByIRating
     };
 
+    enum ItemRightClickAction
+    {
+        ShowPreview = 0,
+        StartEditor
+    };
+
     AlbumSettings();
     ~AlbumSettings();
 
 @ -82,6 +88,9  @
     void setImageSortOrder(const ImageSortOrder order);
     ImageSortOrder getImageSortOrder() const;
 
+    void setItemRightClickAction(const ItemRightClickAction action);
+    ItemRightClickAction getItemRightClickAction() const;
+
     void setImageFileFilter(const QString& filter);
     QString getImageFileFilter() const;
 
--- trunk/extragear/graphics/digikam/digikam/albumwidgetstack.cpp #625156:625157
 @ -4,7 +4,7  @
  * Description : A widget stack to embedded album content view
  *               or the current image preview.
  *
- * Copyright 2006 by Gilles Caulier
+ * Copyright 2006-2007 by Gilles Caulier
  *
  * This program is free software; you can redistribute it
  * and/or modify it under the terms of the GNU General
 @ -89,6 +89,9  @
 
     connect(d->imagePreviewView, SIGNAL( editImageSignal() ),
             this, SIGNAL( editImageSignal() ) );
+
+    connect(d->imagePreviewView, SIGNAL( previewLoadedSignal() ),
+            this, SLOT( slotPreviewLoaded() ) );
 }
 
 AlbumWidgetStack::~AlbumWidgetStack()
 @ -140,8 +143,11  @
             if (previewMode() == MediaPlayerMode)
                 setPreviewItem();
 
-            setPreviewMode(AlbumWidgetStack::PreviewImageMode);
             imagePreviewWidget()->setImagePath(url.path());
+
+            // NOTE: No need to toggle imediatly in PreviewImageMode here, 
+            // because we will recieve a signal for that when the image preview will be loaded.
+            // This will prevent a flicker effect with the old image preview loaded in stack.
         }
     }
 }
 @ -163,4 +169,9  @
     raiseWidget(mode);
 }
 
+void AlbumWidgetStack::slotPreviewLoaded()
+{
+    setPreviewMode(AlbumWidgetStack::PreviewImageMode);
+}
+
 }  // namespace Digikam
--- trunk/extragear/graphics/digikam/digikam/albumwidgetstack.h #625156:625157
 @ -4,7 +4,7  @
  * Description : A widget stack to embedded album content view
  *               or the current image preview.
  *
- * Copyright 2006 by Gilles Caulier
+ * Copyright 2006-2007 by Gilles Caulier
  *
  * This program is free software; you can redistribute it
  * and/or modify it under the terms of the GNU General
 @ -74,6 +74,10  @
 
     void slotEscapePreview();
 
+private slots:
+
+    void slotPreviewLoaded();
+
 private:
 
     AlbumWidgetStackPriv* d;
--- trunk/extragear/graphics/digikam/digikam/imagepreviewview.cpp #625156:625157
 @ -126,12 +126,14  @
 {
     d->backButton->setEnabled(true);
     d->editButton->setEnabled(true);
+    emit previewLoadedSignal();
 }
 
 void ImagePreviewView::slotPreviewFailed()
 {
     d->backButton->setEnabled(true);
     d->editButton->setEnabled(false);
+    emit previewLoadedSignal();
 }
 
 }  // NameSpace Digikam
--- trunk/extragear/graphics/digikam/digikam/imagepreviewview.h #625156:625157
 @ -50,6 +50,7  @
 
     void backToAlbumSignal();
     void editImageSignal();   
+    void previewLoadedSignal();   
 
 public slots:
 
--- trunk/extragear/graphics/digikam/digikam/imagepreviewwidget.cpp #625156:625157
 @ -1,9 +1,9  @
 /* ============================================================
- * Author: Gilles Caulier <caulier dot gilles at kdemail dot net>
- * Date  : 2006-06-13
+ * Authors: Gilles Caulier <caulier dot gilles at kdemail dot net>
+ * Date   : 2006-06-13
  * Description : a widget to display an image preview
  *
- * Copyright 2006 Gilles Caulier
+ * Copyright 2006-2007 Gilles Caulier
  *
  * This program is free software; you can redistribute it
  * and/or modify it under the terms of the GNU General
 @ -52,16 +52,16  @
 
     ImagePreviewWidgetPriv()
     {
-        previewThread      = 0;
+        previewThread = 0;
     }
 
-    QString                       path;
+    QString            path;
 
-    QPixmap                       pixmap;
+    QPixmap            pixmap;
 
-    QImage                        preview;
+    QImage             preview;
 
-    PreviewLoadThread            *previewThread;
+    PreviewLoadThread *previewThread;
 };
 
 ImagePreviewWidget::ImagePreviewWidget(QWidget *parent)
 @ -84,14 +84,11  @
 ImagePreviewWidget::~ImagePreviewWidget()
 {
     delete d->previewThread;
-
     delete d;
 }
 
 void ImagePreviewWidget::setImagePath( const QString& path )
 {
-    if (path == d->path) return;
-
     setCursor( KCursor::waitCursor() );
     d->path = path;
 
--- trunk/extragear/graphics/digikam/digikam/imagepreviewwidget.h #625156:625157
 @ -1,9 +1,9  @
 /* ============================================================
- * Author: Gilles Caulier <caulier dot gilles at kdemail dot net>
- * Date  : 2006-06-13
+ * Authors: Gilles Caulier <caulier dot gilles at kdemail dot net>
+ * Date   : 2006-06-13
  * Description : a widget to display an image preview
  *
- * Copyright 2006 Gilles Caulier
+ * Copyright 2006-2007 Gilles Caulier
  *
  * This program is free software; you can redistribute it
  * and/or modify it under the terms of the GNU General
 @ -59,7 +59,7  @
     void previewStarted();
     void previewComplete();
     void previewFailed();
-
+    
 public slots:
 
     void slotThemeChanged();
 @ -81,7 +81,6  @
 private:
 
     ImagePreviewWidgetPriv* d;
-
 };
 
 }  // NameSpace Digikam
--- trunk/extragear/graphics/digikam/utilities/setup/setupgeneral.cpp #625156:625157
 @ -1,11 +1,11  @
 /* ============================================================
- * Author: Renchi Raju <renchi pooh tam uiuc edu>
- *         Gilles Caulier <caulier dot gilles at kdemail dot net>
- * Date  : 2003-02-01
+ * Authors: Renchi Raju <renchi pooh tam uiuc edu>
+ *          Gilles Caulier <caulier dot gilles at kdemail dot net>
+ * Date   : 2003-02-01
  * Description : general configuration setup tab
  *
  * Copyright 2003-2004 by Renchi Raju
- * Copyright 2005-2006 by Gilles Caulier
+ * Copyright 2005-2007 by Gilles Caulier
  *
  * This program is free software; you can redistribute it
  * and/or modify it under the terms of the GNU General
 @ -50,6 +50,7  @
 
 #include "albumsettings.h"
 #include "setupgeneral.h"
+#include "setupgeneral.moc"
 
 namespace Digikam
 {
 @ -60,15 +61,16  @
 
     SetupGeneralPriv()
     {
-        albumPathEdit         = 0;
-        iconShowNameBox       = 0;
-        iconShowSizeBox       = 0;
-        iconShowDateBox       = 0;
-        iconShowModDateBox    = 0;
-        iconShowResolutionBox = 0;
-        iconShowCommentsBox   = 0;
-        iconShowTagsBox       = 0;
-        iconShowRatingBox     = 0;
+        albumPathEdit            = 0;
+        iconShowNameBox          = 0;
+        iconShowSizeBox          = 0;
+        iconShowDateBox          = 0;
+        iconShowModDateBox       = 0;
+        iconShowResolutionBox    = 0;
+        iconShowCommentsBox      = 0;
+        iconShowTagsBox          = 0;
+        iconShowRatingBox        = 0;
+        rightClickActionComboBox = 0;
     }
 
     QCheckBox     *iconShowNameBox;
 @ -80,6 +82,8  @
     QCheckBox     *iconShowTagsBox;
     QCheckBox     *iconShowRatingBox;
 
+    QComboBox     *rightClickActionComboBox;
+
     KURLRequester *albumPathEdit;
 
     KDialogBase   *mainDialog;
 @ -152,7 +156,7  @
     d->iconShowTagsBox = new QCheckBox(iconTextGroup);
     d->iconShowTagsBox->setText(i18n("Show digiKam &tags"));
     QWhatsThis::add( d->iconShowTagsBox, i18n("<p>Set this option to show digiKam tags "
-                                                  "below image thumbnail."));
+                                              "below image thumbnail."));
     tagSettingsLayout->addWidget(d->iconShowTagsBox, 5, 0);
 
     d->iconShowRatingBox = new QCheckBox(iconTextGroup);
 @ -167,6 +171,13  @
                                                     "below image thumbnail."));
     tagSettingsLayout->addWidget(d->iconShowResolutionBox, 7, 0);
 
+    QLabel *rightClickLabel     = new QLabel(i18n("Right Click Action:"), iconTextGroup);
+    d->rightClickActionComboBox = new QComboBox(false, iconTextGroup);
+    d->rightClickActionComboBox->insertItem(i18n("Show embedded preview"), AlbumSettings::ShowPreview);
+    d->rightClickActionComboBox->insertItem(i18n("Start image editor"), AlbumSettings::StartEditor);
+    tagSettingsLayout->addMultiCellWidget(rightClickLabel, 8 ,8, 0, 0);
+    tagSettingsLayout->addMultiCellWidget(d->rightClickActionComboBox, 8, 8, 1, 3);
+
     layout->addWidget(iconTextGroup);
 
     // --------------------------------------------------------
 @ -198,6 +209,9  @
     settings->setIconShowComments(d->iconShowCommentsBox->isChecked());
     settings->setIconShowRating(d->iconShowRatingBox->isChecked());
 
+    settings->setItemRightClickAction((AlbumSettings::ItemRightClickAction)
+                                      d->rightClickActionComboBox->currentItem());
+
     settings->saveSettings();
 }
 
 @ -217,6 +231,8  @
     d->iconShowResolutionBox->setChecked(settings->getIconShowResolution());
     d->iconShowCommentsBox->setChecked(settings->getIconShowComments());
     d->iconShowRatingBox->setChecked(settings->getIconShowRating());
+
+    d->rightClickActionComboBox->setCurrentItem((int)settings->getItemRightClickAction());
 }
 
 void SetupGeneral::slotChangeAlbumPath(const QString &result)
 @ -256,4 +272,3  @
 
 }  // namespace Digikam
 
-#include "setupgeneral.moc"
--- trunk/extragear/graphics/digikam/utilities/setup/setupgeneral.h #625156:625157
 @ -1,11 +1,11  @
 /* ============================================================
- * Author: Renchi Raju <renchi pooh tam uiuc edu>
- *         Gilles Caulier <caulier dot gilles at kdemail dot net>
- * Date  : 2003-02-01
+ * Authors: Renchi Raju <renchi pooh tam uiuc edu>
+ *          Gilles Caulier <caulier dot gilles at kdemail dot net>
+ * Date   : 2003-02-01
  * Description : general configuration setup tab
  *
  * Copyright 2003-2004 by Renchi Raju
- * Copyright 2005-2006 by Gilles Caulier
+ * Copyright 2005-2007 by Gilles Caulier
  *
  * This program is free software; you can redistribute it
  * and/or modify it under the terms of the GNU General



More information about the Digikam-devel mailing list