1/***************************************************************************
2 imageslistview.cpp - description
3 -------------------
4 begin : Weg Feb 26 2003
5 copyright : (C) 2003 by Jan Schäfer
6 email : janschaefer@users.sourceforge.net
7 ***************************************************************************/
8
9/***************************************************************************
10 * *
11 * This program is free software; you can redistribute it and/or modify *
12 * it under the terms of the GNU General Public License as published by *
13 * the Free Software Foundation; either version 2 of the License, or *
14 * (at your option) any later version. *
15 * *
16 ***************************************************************************/
17
18// QT
19#include <QLinkedList>
20
21
22// KDE
23#include <klocale.h>
24#include <kdebug.h>
25
26// locale
27#include "imageslistview.h"
28
29ImagesListViewItem::ImagesListViewItem(ImagesListView* parent, ImageTag* tag)
30 : QTreeWidgetItem(parent)
31{
32 _imageTag = tag;
33 update();
34}
35
36
37void ImagesListViewItem::update() {
38 QString src="";
39 QString usemap="";
40 if (_imageTag->contains("src"))
41 src= _imageTag->value("src");
42 if (_imageTag->contains("usemap"))
43 usemap=_imageTag->value("usemap");
44
45 setText(0,src);
46 setText(1,usemap);
47}
48
49ImageTag* ImagesListViewItem::imageTag() {
50 return _imageTag;
51}
52
53
54ImagesListView::ImagesListView(QWidget *parent)
55 : QTreeWidget(parent)
56{
57 setColumnCount(2);
58 setContextMenuPolicy(Qt::CustomContextMenu);
59 setHeaderLabels(QStringList()
60 << i18n("Images")
61 << i18n("Usemap"));
62 setRootIsDecorated(false);
63
64 //listView->setSelectionMode(QAbstractItemView::ExtendedSelection);
65 //listView->setSortingEnabled(false);
66 //addColumn(i18n("Preview"));
67// setFullWidth(true);
68
69
70 connect( this, SIGNAL( itemSelectionChanged()),
71 this, SLOT( slotSelectionChanged()));
72}
73
74
75ImagesListView::~ImagesListView()
76{
77}
78
79void ImagesListView::addImage(ImageTag* tag)
80{
81 new ImagesListViewItem(this, tag);
82}
83
84void ImagesListView::addImages(const QList<ImageTag*> & images)
85{
86 QListIterator<ImageTag*> it(images);
87 while (it.hasNext()) {
88 addImage(it.next());
89 }
90}
91
92void ImagesListView::clear() {
93 QTreeWidget::clear();
94}
95
96void ImagesListView::removeImage(ImageTag* tag) {
97 ImagesListViewItem *item = findListViewItem(tag);
98 if (item) {
99 int i = invisibleRootItem()->indexOfChild(item);
100 takeTopLevelItem(i);
101 if (currentItem()) {
102 currentItem()->setSelected(true);
103 }
104 }
105 else {
106 kDebug() << "ImageListView::removeImage: ListViewItem was not found !";
107 }
108}
109
110void ImagesListView::updateImage(ImageTag* tag) {
111 ImagesListViewItem *item = findListViewItem(tag);
112 if (item)
113 item->update();
114 else {
115 kDebug() << "ImageListView::updateImage: ListViewItem was not found !";
116 }
117}
118
119ImagesListViewItem* ImagesListView::findListViewItem(ImageTag* tag) {
120 for (int i = 0; i < topLevelItemCount(); i++) {
121 QTreeWidgetItem* item = topLevelItem(i);
122 ImagesListViewItem *imageItem = static_cast<ImagesListViewItem*>(item);
123 if (imageItem->imageTag() == tag) {
124 kDebug() << "ImageListView::findListViewItem: found it ";
125
126 return imageItem;
127 }
128 }
129
130 kDebug() << "ImageListView::findListViewItem: found nothing ";
131 return 0L;
132
133}
134
135void ImagesListView::slotSelectionChanged() {
136 if (selectedItems().isEmpty())
137 return;
138
139 QTreeWidgetItem* item = selectedItems().first();
140 QString src = item->text(0);
141
142 emit imageSelected(KUrl(_baseUrl,src));
143}
144
145ImageTag* ImagesListView::selectedImage() {
146 if (selectedItems().isEmpty()) {
147 kDebug() << "ImagesListView::selectedImage: No Image is selected !";
148 return 0L;
149 }
150
151 ImagesListViewItem* item = static_cast<ImagesListViewItem*>(selectedItems().first());
152
153 return item->imageTag();
154
155
156}
157
158void ImagesListView::selectImage(ImageTag* tag) {
159 ImagesListViewItem* item = findListViewItem(tag);
160 if (item) {
161 item->setSelected(true);
162 }
163}
164
165#include "imageslistview.moc"
166
167