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 | |
29 | ImagesListViewItem::ImagesListViewItem(ImagesListView* parent, ImageTag* tag) |
30 | : QTreeWidgetItem(parent) |
31 | { |
32 | _imageTag = tag; |
33 | update(); |
34 | } |
35 | |
36 | |
37 | void 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 | |
49 | ImageTag* ImagesListViewItem::imageTag() { |
50 | return _imageTag; |
51 | } |
52 | |
53 | |
54 | ImagesListView::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 | |
75 | ImagesListView::~ImagesListView() |
76 | { |
77 | } |
78 | |
79 | void ImagesListView::addImage(ImageTag* tag) |
80 | { |
81 | new ImagesListViewItem(this, tag); |
82 | } |
83 | |
84 | void ImagesListView::addImages(const QList<ImageTag*> & images) |
85 | { |
86 | QListIterator<ImageTag*> it(images); |
87 | while (it.hasNext()) { |
88 | addImage(it.next()); |
89 | } |
90 | } |
91 | |
92 | void ImagesListView::clear() { |
93 | QTreeWidget::clear(); |
94 | } |
95 | |
96 | void 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 | |
110 | void 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 | |
119 | ImagesListViewItem* 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 | |
135 | void 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 | |
145 | ImageTag* 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 | |
158 | void 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 |