SVN commit 778856 by cgilles:
libkipi from trunk (KDE4) : image collection selector widget is not supported as well by the library. implementation is delegate to kipi host application to be more adapted to the host model/view used to support image collection. For digiKam, this is want mean than the new image collection selector support fully the album/tag treeview ! http://digikam3rdparty.free.fr/Screenshots/newkipiimagecollectionselectorwidgetKDE4.png BUG: 117073 CCMAIL: [hidden email] CCMAIL: [hidden email] M +4 -4 CMakeLists.txt M +6 -322 imagecollectionselector.cpp M +5 -39 imagecollectionselector.h M +1 -1 interface.cpp M +5 -1 interface.h --- trunk/extragear/libs/libkipi/libkipi/CMakeLists.txt #778855:778856 @@ -4,8 +4,8 @@ SET(kipi_LIB_SRCS pluginloader.cpp interface.cpp imagecollection.cpp imagecollectionshared.cpp imageinfoshared.cpp plugin.cpp - imageinfo.cpp batchprogressdialog.cpp uploadwidget.cpp - imagedialog.cpp imagecollectionselector.cpp) + imageinfo.cpp batchprogressdialog.cpp uploadwidget.cpp imagedialog.cpp + imagecollectionselector.cpp) KDE4_ADD_LIBRARY(kipi SHARED ${kipi_LIB_SRCS}) @@ -15,7 +15,7 @@ ${KDE4_KFILE_LIBS} ${QT_QTGUI_LIBRARY} ${QT_QT3SUPPORT_LIBRARY} - ${KDE4_KDE3SUPPORT_LIBS} + ${KDE4_KDE3SUPPORT_LIBS} ) SET_TARGET_PROPERTIES(kipi PROPERTIES VERSION ${KIPI_LIB_SO_VERSION_STRING} SOVERSION ${KIPI_LIB_SO_CUR_VERSION}) @@ -24,6 +24,6 @@ INSTALL(FILES interface.h plugin.h pluginloader.h imageinfo.h imagecollection.h imageinfoshared.h imagecollectionshared.h imagedialog.h uploadwidget.h - batchprogressdialog.h imagecollectionselector.h + batchprogressdialog.h imagecollectionselector.h ${CMAKE_CURRENT_BINARY_DIR}/version.h libkipi_export.h DESTINATION ${INCLUDE_INSTALL_DIR}/libkipi) --- trunk/extragear/libs/libkipi/libkipi/imagecollectionselector.cpp #778855:778856 @@ -3,13 +3,10 @@ * This file is a part of kipi-plugins project * http://www.kipi-plugins.org * - * Date : 2004-07-01 + * Date : 2008-02-22 * Description : image collection selector * - * Copyright (C) 2004-2007 by Gilles Caulier <caulier dot gilles at gmail dot com> - * Copyright (C) 2004-2005 by Renchi Raju <renchi.raju at kdemail.net> - * Copyright (C) 2004-2005 by Jesper K. Pedersen <blackie at kde.org> - * Copyright (C) 2004-2005 by Aurelien Gateau <aurelien dot gateau at free.fr> + * Copyright (C) 2008 by Gilles Caulier <caulier dot gilles at gmail dot com> * * This program is free software; you can redistribute it * and/or modify it under the terms of the GNU General @@ -23,339 +20,26 @@ * * ============================================================ */ -// Qt includes. - -#include <QPushButton> -#include <QList> -#include <QLabel> -#include <Q3VGroupBox> -#include <QTimer> -#include <QHBoxLayout> -#include <Q3Header> -#include <QLayout> - -// KDE includes. - -#include <kdialog.h> -#include <k3listview.h> -#include <k3buttonbox.h> -#include <klocale.h> -#include <kglobal.h> -#include <kio/previewjob.h> - // Local includes. -#include "interface.h" #include "imagecollectionselector.h" #include "imagecollectionselector.moc" namespace KIPI { -class ImageCollectionItem : public Q3CheckListItem -{ -public: - - ImageCollectionItem(ImageCollectionSelector* selector, - Q3ListView* parent, ImageCollection collection) - : Q3CheckListItem( parent, collection.name(), Q3CheckListItem::CheckBox), - _imageCollection(collection), _selector(selector) - {} - - ImageCollection imageCollection() const { return _imageCollection; } - -protected: - - virtual void stateChange(bool val) - { - Q3CheckListItem::stateChange(val); - _selector->emitSelectionChanged(); - } - -private: - - ImageCollection _imageCollection; - ImageCollectionSelector* _selector; -}; - -struct ImageCollectionSelector::Private -{ - Interface* _interface; - K3ListView* _list; - QLabel* _thumbLabel; - QLabel* _textLabel; - Q3ListViewItem* _itemToSelect; -}; - -ImageCollectionSelector::ImageCollectionSelector(QWidget* parent, Interface* interface, const char* name) +ImageCollectionSelector::ImageCollectionSelector(QWidget* parent) : QWidget(parent) { - setObjectName(name); - d = new Private; - d->_interface=interface; - d->_itemToSelect = 0; - - d->_list=new K3ListView(this); - d->_list->setResizeMode( Q3ListView::LastColumn ); - d->_list->addColumn(""); - d->_list->header()->hide(); - - connect(d->_list, SIGNAL(selectionChanged(Q3ListViewItem*)), - SLOT(slotSelectionChanged(Q3ListViewItem*))); - - QHBoxLayout* mainLayout=new QHBoxLayout(this); - mainLayout->setSpacing(KDialog::spacingHint()); - mainLayout->addWidget(d->_list); - - QVBoxLayout* rightLayout = new QVBoxLayout(); - mainLayout->addLayout(rightLayout); - - K3ButtonBox* box = new K3ButtonBox(this, Qt::Vertical); - rightLayout->addWidget(box); - QPushButton* selectAll=box->addButton(i18n("Select All")); - QPushButton* invertSelection=box->addButton(i18n("Invert Selection")); - QPushButton* selectNone=box->addButton(i18n("Select None")); - box->layout(); - - connect(selectAll, SIGNAL(clicked()), - this, SLOT(slotSelectAll()) ); - - connect(invertSelection, SIGNAL(clicked()), - this, SLOT(slotInvertSelection()) ); - - connect(selectNone, SIGNAL(clicked()), - this, SLOT(slotSelectNone()) ); - - rightLayout->addItem(new QSpacerItem(10, 20, QSizePolicy::Fixed, QSizePolicy::Expanding)); - - Q3VGroupBox* rightBox = new Q3VGroupBox(this); - rightBox->setInsideMargin(KDialog::marginHint()); - rightBox->setInsideSpacing(KDialog::spacingHint()); - rightLayout->addWidget(rightBox); - - if (interface->hasFeature(AlbumsUseFirstImagePreview)) - { - d->_thumbLabel = new QLabel(rightBox); - d->_thumbLabel->setFixedSize(QSize(128,128)); - d->_thumbLabel->setAlignment(Qt::AlignHCenter | Qt::AlignVCenter); - } - else - { - d->_thumbLabel = 0; - } - d->_textLabel = new QLabel(rightBox); - - fillList(); - QTimer::singleShot(0, this, SLOT(slotInitialShow())); } ImageCollectionSelector::~ImageCollectionSelector() { - delete d; } -void ImageCollectionSelector::fillList() +QList<ImageCollection> ImageCollectionSelector::selectedImageCollections() const { - QList<ImageCollection> collections = d->_interface->allAlbums(); - d->_list->clear(); - ImageCollection current = d->_interface->currentAlbum(); - bool currentWasInList = false; - - /* note: the extensive use of blocksignals is to prevent bombarding - the plugin with too many selection changed signals. do not remove - them */ - - blockSignals(true); - for( QList<ImageCollection>::Iterator it = collections.begin() ; - it != collections.end() ; ++it ) - { - ImageCollectionItem* item = new ImageCollectionItem( this, d->_list, *it); - if (!currentWasInList && *it == current) - { - item->setOn(true); - currentWasInList = true; - if (!d->_itemToSelect) - d->_itemToSelect = item; - } - } - - if (!currentWasInList) - { - slotSelectAll(); - d->_itemToSelect = d->_list->firstChild(); - } - blockSignals(false); + return QList<ImageCollection>(); } - -void ImageCollectionSelector::emitSelectionChanged() -{ - emit selectionChanged(); -} - -QList<ImageCollection> ImageCollectionSelector::selectedImageCollections() const -{ - QList<ImageCollection> list; - - Q3ListViewItemIterator it( d->_list ); - - for (; it.current(); ++it) - { - ImageCollectionItem *item = static_cast<ImageCollectionItem*>( it.current() ); - - if (item->isOn()) - { - list << item->imageCollection(); - } - } - - return list; -} - -void ImageCollectionSelector::slotSelectAll() -{ - Q3ListViewItemIterator it( d->_list ); - - /* note: the extensive use of blocksignals is to prevent bombarding - the plugin with too many selection changed signals. do not remove - them */ - blockSignals(true); - for (; it.current(); ++it) - { - ImageCollectionItem *item = static_cast<ImageCollectionItem*>( it.current() ); - item->setOn(true); - } - blockSignals(false); - - emit selectionChanged(); -} - -void ImageCollectionSelector::slotInvertSelection() -{ - Q3ListViewItemIterator it( d->_list ); - - /* note: the extensive use of blocksignals is to prevent bombarding - the plugin with too many selection changed signals. do not remove - them */ - blockSignals(true); - for (; it.current(); ++it) - { - ImageCollectionItem *item = static_cast<ImageCollectionItem*>( it.current() ); - item->setOn(!item->isOn()); - } - blockSignals(false); - - emit selectionChanged(); -} - -void ImageCollectionSelector::slotSelectNone() -{ - Q3ListViewItemIterator it( d->_list ); - - /* note: the extensive use of blocksignals is to prevent bombarding - the plugin with too many selection changed signals. do not remove - them */ - blockSignals(true); - for (; it.current(); ++it) - { - ImageCollectionItem *item = static_cast<ImageCollectionItem*>( it.current() ); - item->setOn(false); - } - blockSignals(false); - - emit selectionChanged(); -} - -void ImageCollectionSelector::slotSelectionChanged(Q3ListViewItem* listItem) -{ - if (d->_thumbLabel) - d->_thumbLabel->clear(); - d->_textLabel->clear(); - - if (!listItem) - return; - - ImageCollectionItem* imcollItem = static_cast<ImageCollectionItem*>(listItem); - - if (d->_thumbLabel) - { - KUrl::List images(imcollItem->imageCollection().images()); - if (!images.isEmpty()) - { - KIO::PreviewJob* thumbJob = KIO::filePreview(images.first(), 128); - connect( thumbJob, SIGNAL(gotPreview(const K3FileItem*, const QPixmap&)), - SLOT(slotGotPreview(const K3FileItem* , const QPixmap&))); - } - } - - // Layout the ImageCollection information nicely - - QString cellBeg("<tr><td><nobr><font size=-1><i>"); - QString cellMid("</i></font></nobr></td><td><font size=-1>"); - QString cellEnd("</font></td></tr>"); - - QString text("<table cellspacing=0 cellpadding=0>"); - - // number of images - text += cellBeg + i18n("Images:") + - cellMid + QString::number(imcollItem->imageCollection().images().count()) + - cellEnd; - - // Optional features ------------------------------------------------------- - - // Album Comments - if (d->_interface->hasFeature(AlbumsHaveComments)) - { - // Limit the comments string to 20 char... - QString comments = imcollItem->imageCollection().comment(); - if (!comments.isEmpty()) - { - comments.truncate(20); - comments.append("..."); - } - - text += cellBeg + i18n("Caption:") + - cellMid + comments + - cellEnd; - } - - // Album Category - if (d->_interface->hasFeature(AlbumsHaveCategory)) - { - text += cellBeg + i18n("Category:") + - cellMid + imcollItem->imageCollection().category() + - cellEnd; - } - - // Album Creation Date - if (d->_interface->hasFeature(AlbumsHaveCreationDate)) - { - QDate date(imcollItem->imageCollection().date()); - text += cellBeg + i18n("Date:") + - cellMid + KGlobal::locale()->formatDate(date) + - cellEnd; - } - - text += "</table>"; - - d->_textLabel->setText(text); - - emit selectionChanged(); -} - -void ImageCollectionSelector::slotGotPreview(const K3FileItem*, const QPixmap& pix) -{ - d->_thumbLabel->setPixmap(pix); -} - -void ImageCollectionSelector::slotInitialShow() -{ - if (d->_itemToSelect) - { - d->_list->setSelected(d->_itemToSelect, true); - d->_list->ensureItemVisible(d->_itemToSelect); - d->_itemToSelect = 0; - } - emit selectionChanged(); -} - + } // namespace KIPI --- trunk/extragear/libs/libkipi/libkipi/imagecollectionselector.h #778855:778856 @@ -3,13 +3,10 @@ * This file is a part of kipi-plugins project * http://www.kipi-plugins.org * - * Date : 2004-07-01 + * Date : 2008-02-22 * Description : image collection selector * - * Copyright (C) 2004-2007 by Gilles Caulier <caulier dot gilles at gmail dot com> - * Copyright (C) 2004-2005 by Renchi Raju <renchi.raju at kdemail.net> - * Copyright (C) 2004-2005 by Jesper K. Pedersen <blackie at kde.org> - * Copyright (C) 2004-2005 by Aurelien Gateau <aurelien dot gateau at free.fr> + * Copyright (C) 2008 by Gilles Caulier <caulier dot gilles at gmail dot com> * * This program is free software; you can redistribute it * and/or modify it under the terms of the GNU General @@ -30,57 +27,26 @@ #include <QtGui/QWidget> #include <QtCore/QList> -#include <QtGui/QPixmap> // KIPI includes. #include "imagecollection.h" #include "libkipi_export.h" -class Q3ListViewItem; -class K3FileItem; - namespace KIPI { -class Interface; - class LIBKIPI_EXPORT ImageCollectionSelector : public QWidget { Q_OBJECT - class Private; - public: - ImageCollectionSelector(QWidget* parent, Interface*, const char* name=0); - ~ImageCollectionSelector(); + ImageCollectionSelector(QWidget *parent=0); + virtual ~ImageCollectionSelector(); - QList<ImageCollection> selectedImageCollections() const; - -Q_SIGNALS: - - void selectionChanged(); - -private Q_SLOTS: - - void slotSelectAll(); - void slotInvertSelection(); - void slotSelectNone(); - void slotSelectionChanged(Q3ListViewItem* listItem); - void slotGotPreview(const K3FileItem*, const QPixmap&); - void slotInitialShow(); - -private: - - void fillList(); - void emitSelectionChanged(); - friend class ImageCollectionItem; - -private: - - Private* d; + virtual QList<ImageCollection> selectedImageCollections() const; }; } // namespace KIPI --- trunk/extragear/libs/libkipi/libkipi/interface.cpp #778855:778856 @@ -6,7 +6,7 @@ * Date : 2004-02-01 * Description : main kipi host application interface . * - * Copyright (C) 2004-2007 by Gilles Caulier <caulier dot gilles at gmail dot com> + * Copyright (C) 2004-2008 by Gilles Caulier <caulier dot gilles at gmail dot com> * Copyright (C) 2004-2005 by Renchi Raju <renchi.raju at kdemail.net> * Copyright (C) 2004-2005 by Jesper K. Pedersen <blackie at kde.org> * Copyright (C) 2004-2005 by Aurelien Gateau <aurelien dot gateau at free.fr> --- trunk/extragear/libs/libkipi/libkipi/interface.h #778855:778856 @@ -6,7 +6,7 @@ * Date : 2004-02-01 * Description : main kipi host application interface . * - * Copyright (C) 2004-2007 by Gilles Caulier <caulier dot gilles at gmail dot com> + * Copyright (C) 2004-2008 by Gilles Caulier <caulier dot gilles at gmail dot com> * Copyright (C) 2004-2005 by Renchi Raju <renchi.raju at kdemail.net> * Copyright (C) 2004-2005 by Jesper K. Pedersen <blackie at kde.org> * Copyright (C) 2004-2005 by Aurelien Gateau <aurelien dot gateau at free.fr> @@ -31,6 +31,7 @@ // Qt includes. #include <QPixmap> +#include <QtGui/QWidget> #include <QtCore/QString> #include <QtCore/QObject> #include <QtCore/QList> @@ -43,6 +44,7 @@ // Local includes. #include "imagecollection.h" +#include "imagecollectionselector.h" #include "imageinfo.h" #include "libkipi_export.h" @@ -92,6 +94,8 @@ virtual void thumbnail( const KUrl& url, int size ); virtual void thumbnails( const KUrl::List& list, int size ); + virtual ImageCollectionSelector* selector(QWidget *parent)=0; + bool hasFeature( KIPI::Features feature ); static QString version(); _______________________________________________ Digikam-devel mailing list [hidden email] https://mail.kde.org/mailman/listinfo/digikam-devel |
Free forum by Nabble | Edit this page |