File indexing completed on 2023-12-03 07:57:24
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