File indexing completed on 2024-04-28 08:10:26

0001 /***************************************************************************
0002                           imageslistview.cpp  -  description
0003                              -------------------
0004     begin                : Weg Feb 26 2003
0005     copyright            : (C) 2003 by Jan Schäfer
0006     email                : janschaefer@users.sourceforge.net
0007  ***************************************************************************/
0008 
0009 /***************************************************************************
0010  *                                                                         *
0011  *   This program is free software; you can redistribute it and/or modify  *
0012  *   it under the terms of the GNU General Public License as published by  *
0013  *   the Free Software Foundation; either version 2 of the License, or     *
0014  *   (at your option) any later version.                                   *
0015  *                                                                         *
0016  ***************************************************************************/
0017 
0018 // local
0019 #include "imageslistview.h"
0020 
0021 // KDE Frameworks
0022 #include <KLocalizedString>
0023 #include "kimagemapeditor_debug.h"
0024 
0025 ImagesListViewItem::ImagesListViewItem(ImagesListView* parent, ImageTag* tag)
0026   : QTreeWidgetItem(parent)
0027 {
0028     _imageTag = tag;
0029     update();
0030 }
0031 
0032 
0033 void ImagesListViewItem::update() {
0034     QString src="";
0035     QString usemap="";
0036     if (_imageTag->contains("src"))
0037       src= _imageTag->value("src");
0038     if (_imageTag->contains("usemap"))
0039       usemap=_imageTag->value("usemap");
0040 
0041     setText(0,src);
0042     setText(1,usemap);
0043 }
0044 
0045 ImageTag* ImagesListViewItem::imageTag() {
0046   return _imageTag;
0047 }
0048 
0049 
0050 ImagesListView::ImagesListView(QWidget *parent)
0051   : QTreeWidget(parent)
0052 {
0053   setColumnCount(2);
0054   setContextMenuPolicy(Qt::CustomContextMenu);
0055   setHeaderLabels(QStringList() 
0056     << i18n("Images")
0057     << i18n("Usemap"));
0058   setRootIsDecorated(false);
0059 
0060   //listView->setSelectionMode(QAbstractItemView::ExtendedSelection);
0061   //listView->setSortingEnabled(false);
0062   //addColumn(i18n("Preview"));
0063 //  setFullWidth(true);
0064 
0065 
0066   connect( this, SIGNAL(itemSelectionChanged()),
0067            this, SLOT(slotSelectionChanged()));
0068 }
0069 
0070 
0071 ImagesListView::~ImagesListView()
0072 {
0073 }
0074 
0075 void ImagesListView::addImage(ImageTag* tag)
0076 {
0077   new ImagesListViewItem(this, tag);
0078 }
0079 
0080 void ImagesListView::addImages(const QList<ImageTag*> & images)
0081 {
0082     QListIterator<ImageTag*> it(images);
0083     while (it.hasNext()) {
0084         addImage(it.next());
0085     }
0086 }
0087 
0088 void ImagesListView::clear() {
0089   QTreeWidget::clear();
0090 }
0091 
0092 void ImagesListView::removeImage(ImageTag* tag) {
0093   ImagesListViewItem *item = findListViewItem(tag);
0094   if (item) {
0095      int i = invisibleRootItem()->indexOfChild(item);
0096      takeTopLevelItem(i);
0097      if (currentItem()) {
0098         currentItem()->setSelected(true);
0099      }     
0100   }
0101   else {
0102     qCDebug(KIMAGEMAPEDITOR_LOG) << "ImageListView::removeImage: ListViewItem was not found !";
0103   }
0104 }
0105 
0106 void ImagesListView::updateImage(ImageTag* tag) {
0107   ImagesListViewItem *item = findListViewItem(tag);
0108   if (item)
0109     item->update();
0110   else {
0111     qCDebug(KIMAGEMAPEDITOR_LOG) << "ImageListView::updateImage: ListViewItem was not found !";
0112   }
0113 }
0114 
0115 ImagesListViewItem* ImagesListView::findListViewItem(ImageTag* tag) {
0116   for (int i = 0; i < topLevelItemCount(); i++) {
0117     QTreeWidgetItem* item = topLevelItem(i);
0118     ImagesListViewItem *imageItem = static_cast<ImagesListViewItem*>(item);
0119     if (imageItem->imageTag() == tag) {
0120        qCDebug(KIMAGEMAPEDITOR_LOG) << "ImageListView::findListViewItem: found it ";
0121 
0122        return imageItem;
0123     }
0124   }
0125 
0126   qCDebug(KIMAGEMAPEDITOR_LOG) << "ImageListView::findListViewItem: found nothing ";
0127   return nullptr;
0128 
0129 }
0130 
0131 void ImagesListView::slotSelectionChanged() {
0132   if (selectedItems().isEmpty())
0133     return;
0134 
0135   QTreeWidgetItem* item = selectedItems().first();
0136   QString src = item->text(0);
0137 
0138   if (_baseUrl.path().isEmpty() | !_baseUrl.path().endsWith('/')) {
0139       emit imageSelected(QUrl(_baseUrl.path() + '/').resolved(QUrl(src)));
0140   }
0141   else {
0142       emit imageSelected(_baseUrl.resolved(QUrl(src)));
0143   }
0144 }
0145 
0146 ImageTag* ImagesListView::selectedImage() {
0147   if (selectedItems().isEmpty()) {
0148      qCDebug(KIMAGEMAPEDITOR_LOG) << "ImagesListView::selectedImage: No Image is selected !";
0149      return nullptr;
0150   }
0151 
0152   ImagesListViewItem* item = static_cast<ImagesListViewItem*>(selectedItems().first());
0153 
0154   return item->imageTag();
0155 
0156 
0157 }
0158 
0159 void ImagesListView::selectImage(ImageTag* tag) {
0160   ImagesListViewItem* item = findListViewItem(tag);
0161   if (item) {
0162      item->setSelected(true);
0163   }
0164 }
0165