File indexing completed on 2024-05-12 04:33:18

0001 /*
0002     SPDX-FileCopyrightText: 2009-2010 Michael G. Hansen <mike at mghansen dot de>
0003     SPDX-FileCopyrightText: 2011-2018 Gilles Caulier <caulier dot gilles at gmail dot com>
0004 
0005     SPDX-License-Identifier: GPL-2.0-or-later
0006 */
0007 
0008 #include "kipiimagecollectionselector.h"
0009 
0010 // Qt includes
0011 
0012 #include <QListWidget>
0013 #include <QVBoxLayout>
0014 #include <QLabel>
0015 #include <QDebug>
0016 
0017 // Libkipi includes
0018 
0019 #include "imagecollection.h"
0020 
0021 // Local includes:
0022 
0023 #include "kipiinterface.h"
0024 
0025 namespace KXMLKipiCmd
0026 {
0027 
0028 KipiImageCollectionSelector::KipiImageCollectionSelector(KipiInterface* const interface, QWidget* const parent)
0029     : ImageCollectionSelector(parent),
0030       m_interface(interface),
0031       m_listWidget(nullptr)
0032 {
0033     QVBoxLayout* const layout = new QVBoxLayout(this);
0034     layout->addWidget(new QLabel(QString::fromLatin1("Please select albums:")));
0035     m_listWidget              = new QListWidget(this);
0036     m_listWidget->setSelectionMode(QAbstractItemView::MultiSelection);
0037     layout->addWidget(m_listWidget);
0038 
0039     setLayout(layout);
0040 
0041     connect(m_listWidget, &QListWidget::itemSelectionChanged,
0042             this, &KipiImageCollectionSelector::slotItemSelectionChanged);
0043 
0044     // add all albums to the list widget:
0045     m_allAlbums = m_interface->allAlbums();
0046 
0047     for (QList<ImageCollection>::const_iterator it = m_allAlbums.constBegin();
0048          it!=m_allAlbums.constEnd(); ++it)
0049     {
0050         m_listWidget->addItem(it->name());
0051 
0052         // is the album selected?
0053         const QUrl itemPath = it->url();
0054         m_listWidget->item(m_listWidget->count()-1)->setSelected(m_interface->m_selectedAlbums.contains(itemPath));
0055     }
0056 
0057     //TODO: select albums specified on the command line
0058 }
0059 
0060 QList<ImageCollection> KipiImageCollectionSelector::selectedImageCollections() const
0061 {
0062     // return the selected albums:
0063     QList<ImageCollection> result;
0064     const QList<QListWidgetItem*> selectedItems = m_listWidget->selectedItems();
0065 
0066     for (QList<QListWidgetItem*>::const_iterator it = selectedItems.constBegin();
0067          it!=selectedItems.constEnd(); ++it)
0068     {
0069         const int row = m_listWidget->row(*it);
0070         result.append(m_allAlbums.at(row));
0071     }
0072 
0073     //  result.append(m_interface->currentAlbum());
0074     qDebug() << QString::fromLatin1("selectedImageCollections: %1 items selected").arg(result.size());
0075     return result;
0076 }
0077 
0078 void KipiImageCollectionSelector::slotItemSelectionChanged()
0079 {
0080     Q_EMIT selectionChanged();
0081 }
0082 
0083 } // namespace KXMLKipiCmd
0084 
0085 #include "moc_kipiimagecollectionselector.cpp"