SVN commit 662103 by cgilles:
digikam from trunk : Light Table : full support of Drag & Drop CCMAIL: [hidden email] M +18 -18 project/digikam.kdevelop M +42 -1 utilities/lighttable/lighttablepreview.cpp M +5 -1 utilities/lighttable/lighttablepreview.h M +6 -0 utilities/lighttable/lighttableview.cpp M +3 -1 utilities/lighttable/lighttableview.h M +30 -0 utilities/lighttable/lighttablewindow.cpp M +2 -0 utilities/lighttable/lighttablewindow.h --- trunk/extragear/graphics/digikam/project/digikam.kdevelop #662102:662103 @@ -12,7 +12,7 @@ </keywords> <projectdirectory>./</projectdirectory> <absoluteprojectpath>false</absoluteprojectpath> - <description></description> + <description/> <ignoreparts/> <projectname>digikam</projectname> <defaultencoding/> @@ -74,11 +74,11 @@ <kdevdebugger> <general> <dbgshell>libtool</dbgshell> - <programargs></programargs> - <gdbpath></gdbpath> - <configGdbScript></configGdbScript> - <runShellScript></runShellScript> - <runGdbScript></runGdbScript> + <programargs/> + <gdbpath/> + <configGdbScript/> + <runShellScript/> + <runGdbScript/> <breakonloadinglibs>true</breakonloadinglibs> <separatetty>false</separatetty> <floatingtoolbar>false</floatingtoolbar> @@ -107,14 +107,14 @@ <runmultiplejobs>false</runmultiplejobs> <numberofjobs>1</numberofjobs> <dontact>false</dontact> - <makebin></makebin> + <makebin/> <prio>0</prio> </make> <run> <directoryradio>build</directoryradio> <customdirectory>/</customdirectory> - <mainprogram>digikam/digikam/digikam</mainprogram> - <programargs></programargs> + <mainprogram>/home/gilles/Documents/devel/SVN/trunk/graphics/digikam/digikam/digikam</mainprogram> + <programargs/> <terminal>false</terminal> <autocompile>false</autocompile> <envvars/> @@ -133,17 +133,17 @@ <configargs>--enable-debug=full</configargs> <builddir>../..</builddir> <topsourcedir>../..</topsourcedir> - <cppflags></cppflags> - <ldflags></ldflags> + <cppflags/> + <ldflags/> <ccompiler>kdevgccoptions</ccompiler> <cxxcompiler>kdevgppoptions</cxxcompiler> <f77compiler>kdevpgf77options</f77compiler> - <ccompilerbinary></ccompilerbinary> - <cxxcompilerbinary></cxxcompilerbinary> - <f77compilerbinary></f77compilerbinary> - <cflags></cflags> - <cxxflags></cxxflags> - <f77flags></f77flags> + <ccompilerbinary/> + <cxxcompilerbinary/> + <f77compilerbinary/> + <cflags/> + <cxxflags/> + <f77flags/> </default> </configurations> </kdevautoproject> @@ -192,7 +192,7 @@ <includePaths>.;</includePaths> </codecompletion> <creategettersetter> - <prefixGet></prefixGet> + <prefixGet/> <prefixSet>set</prefixSet> <prefixVariable>m_,_</prefixVariable> <parameterName>theValue</parameterName> --- trunk/extragear/graphics/digikam/utilities/lighttable/lighttablepreview.cpp #662102:662103 @@ -57,8 +57,8 @@ #include "albumdb.h" #include "albummanager.h" #include "albumsettings.h" +#include "dragobjects.h" #include "fastscale.h" -#include "imageinfo.h" #include "dmetadata.h" #include "dpopupmenu.h" #include "metadatahub.h" @@ -119,6 +119,9 @@ { d = new LightTablePreviewPriv; + viewport()->setAcceptDrops(true); + setAcceptDrops(true); + slotThemeChanged(); setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); @@ -622,4 +625,42 @@ bitBlt(pix, 0, 0, &img, 0, 0); } +void LightTablePreview::contentsDragMoveEvent(QDragMoveEvent *e) +{ + KURL::List urls; + KURL::List kioURLs; + QValueList<int> albumIDs; + QValueList<int> imageIDs; + + if (!ItemDrag::decode(e, urls, kioURLs, albumIDs, imageIDs)) + { + e->ignore(); + return; + } + e->accept(); +} + +void LightTablePreview::contentsDropEvent(QDropEvent *e) +{ + KURL::List urls; + KURL::List kioURLs; + QValueList<int> albumIDs; + QValueList<int> imageIDs; + ImageInfoList list; + + if (ItemDrag::decode(e, urls, kioURLs, albumIDs, imageIDs)) + { + for (QValueList<int>::const_iterator it = imageIDs.begin(); + it != imageIDs.end(); ++it) + { + list.append(new ImageInfo(*it)); + emit signalDroppedItems(list); + } + } + else + { + e->ignore(); + } +} + } // NameSpace Digikam --- trunk/extragear/graphics/digikam/utilities/lighttable/lighttablepreview.h #662102:662103 @@ -31,6 +31,7 @@ // Local includes +#include "imageinfo.h" #include "previewwidget.h" #include "digikam_export.h" @@ -40,7 +41,6 @@ { class LoadingDescription; -class ImageInfo; class LightTablePreviewPriv; class DIGIKAM_EXPORT LightTablePreview : public PreviewWidget @@ -65,6 +65,7 @@ signals: + void signalDroppedItems(const ImageInfoList&); void signalDeleteItem(ImageInfo*); void signalEditItem(ImageInfo*); void signalPreviewLoaded(); @@ -97,6 +98,9 @@ void updateZoomAndSize(bool alwaysFitToWindow); inline void paintPreview(QPixmap *pix, int sx, int sy, int sw, int sh); + void contentsDragMoveEvent(QDragMoveEvent*); + void contentsDropEvent(QDropEvent*); + private: LightTablePreviewPriv* d; --- trunk/extragear/graphics/digikam/utilities/lighttable/lighttableview.cpp #662102:662103 @@ -97,6 +97,12 @@ connect(d->leftPreview, SIGNAL(signalEditItem(ImageInfo*)), this, SIGNAL(signalEditItem(ImageInfo*))); + + connect(d->rightPreview, SIGNAL(signalDroppedItems(const ImageInfoList&)), + this, SIGNAL(signalRightDroppedItems(const ImageInfoList&))); + + connect(d->leftPreview, SIGNAL(signalDroppedItems(const ImageInfoList&)), + this, SIGNAL(signalLeftDroppedItems(const ImageInfoList&))); connect(d->rightPreview, SIGNAL(signalSlideShow()), this, SIGNAL(signalSlideShow())); --- trunk/extragear/graphics/digikam/utilities/lighttable/lighttableview.h #662102:662103 @@ -32,12 +32,12 @@ // Local includes. +#include "imageinfo.h" #include "digikam_export.h" namespace Digikam { -class ImageInfo; class LightTableViewPriv; class DIGIKAM_EXPORT LightTableView : public QFrame @@ -77,6 +77,8 @@ void signalLeftZoomFactorChanged(double); void signalRightZoomFactorChanged(double); + void signalLeftDroppedItems(const ImageInfoList&); + void signalRightDroppedItems(const ImageInfoList&); void signalSlideShow(); void signalDeleteItem(ImageInfo*); void signalEditItem(ImageInfo*); --- trunk/extragear/graphics/digikam/utilities/lighttable/lighttablewindow.cpp #662102:662103 @@ -330,6 +330,12 @@ connect(d->previewView, SIGNAL(signalSlideShow()), this, SLOT(slotToggleSlideShow())); + connect(d->previewView, SIGNAL(signalLeftDroppedItems(const ImageInfoList&)), + this, SLOT(slotLeftDroppedItems(const ImageInfoList&))); + + connect(d->previewView, SIGNAL(signalRightDroppedItems(const ImageInfoList&)), + this, SLOT(slotRightDroppedItems(const ImageInfoList&))); + ImageAttributesWatch *watch = ImageAttributesWatch::instance(); connect(watch, SIGNAL(signalFileMetadataChanged(const KURL &)), @@ -488,6 +494,30 @@ } } +void LightTableWindow::slotLeftDroppedItems(const ImageInfoList& list) +{ + ImageInfo *info = *(list.begin()); + loadImageInfos(list, info); + + // We will check if first item from list is already stored in thumbbar + // Note than thumbbar store all ImageInfo reference in memory for preview object. + LightTableBarItem *item = d->barView->findItemByInfo(info); + if (item) + slotSetItemOnLeftPanel(item->info()); +} + +void LightTableWindow::slotRightDroppedItems(const ImageInfoList& list) +{ + ImageInfo *info = *(list.begin()); + loadImageInfos(list, info); + + // We will check if first item from list is already stored in thumbbar + // Note than thumbbar store all ImageInfo reference in memory for preview object. + LightTableBarItem *item = d->barView->findItemByInfo(info); + if (item) + slotSetItemOnRightPanel(item->info()); +} + void LightTableWindow::slotSetItemOnLeftPanel(ImageInfo* info) { d->previewView->setLeftImageInfo(info); --- trunk/extragear/graphics/digikam/utilities/lighttable/lighttablewindow.h #662102:662103 @@ -104,6 +104,8 @@ void slotFileMetadataChanged(const KURL&); void slotLeftZoomFactorChanged(double); void slotRightZoomFactorChanged(double); + void slotLeftDroppedItems(const ImageInfoList&); + void slotRightDroppedItems(const ImageInfoList&); private: _______________________________________________ Digikam-devel mailing list [hidden email] https://mail.kde.org/mailman/listinfo/digikam-devel |
Free forum by Nabble | Edit this page |