• Skip to content
  • Skip to link menu
  • KDE API Reference
  • kdelibs-4.14.38 API Reference
  • KDE Home
  • Contact Us
 

KNewStuff

  • knewstuff
  • knewstuff3
  • ui
itemsgridviewdelegate.cpp
Go to the documentation of this file.
1/*
2 Copyright (C) 2008 Jeremy Whiting <jpwhiting@kde.org>
3 Copyright (C) 2010 Reza Fatahilah Shah <rshah0385@kireihana.com>
4 Copyright (C) 2010 Frederik Gladhorn <gladhorn@kde.org>
5
6 This library is free software; you can redistribute it and/or
7 modify it under the terms of the GNU Lesser General Public
8 License as published by the Free Software Foundation; either
9 version 2.1 of the License, or (at your option) any later version.
10
11 This library is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 Lesser General Public License for more details.
15
16 You should have received a copy of the GNU Lesser General Public
17 License along with this library. If not, see <http://www.gnu.org/licenses/>.
18*/
19
20#include "itemsgridviewdelegate.h"
21
22#include <QtGui/QPainter>
23#include <QtGui/QSortFilterProxyModel>
24#include <QtGui/QApplication>
25#include <QLabel>
26#include <QToolButton>
27#include <QMenu>
28#include <QHBoxLayout>
29#include <QAbstractItemView>
30
31#include <kdebug.h>
32#include <klocale.h>
33#include <kmenu.h>
34#include <kratingwidget.h>
35#include <ksqueezedtextlabel.h>
36
37#include "itemsmodel.h"
38
39namespace KNS3
40{
41 enum { DelegateTitleLabel, DelegateAuthorLabel, DelegateDownloadCounterLabel,
42 DelegateGridRatingWidget };
43
44ItemsGridViewDelegate::ItemsGridViewDelegate(QAbstractItemView *itemView, Engine* engine, QObject * parent)
45 : ItemsViewBaseDelegate(itemView, engine, parent)
46 ,m_elementYPos(0)
47{
48 createOperationBar();
49}
50
51ItemsGridViewDelegate::~ItemsGridViewDelegate()
52{
53}
54
55QList<QWidget*> ItemsGridViewDelegate::createItemWidgets() const
56{
57 QList<QWidget*> m_widgetList;
58 KSqueezedTextLabel * titleLabel = new KSqueezedTextLabel();
59 titleLabel->setOpenExternalLinks(true);
60 titleLabel->setTextElideMode(Qt::ElideRight);
61 // not so nice - work around constness to install the event filter
62 ItemsGridViewDelegate* delegate = const_cast<ItemsGridViewDelegate*>(this);
63 titleLabel->installEventFilter(delegate);
64 m_widgetList << titleLabel;
65
66 KSqueezedTextLabel * authorLabel = new KSqueezedTextLabel();
67 authorLabel->setTextElideMode(Qt::ElideRight);
68 m_widgetList << authorLabel;
69
70 KSqueezedTextLabel * downloadCounterLabel = new KSqueezedTextLabel();
71 downloadCounterLabel->setTextElideMode(Qt::ElideRight);
72 m_widgetList << downloadCounterLabel;
73
74 KRatingWidget* rating = new KRatingWidget();
75 rating->setMaxRating(10);
76 rating->setHalfStepsEnabled(true);
77 m_widgetList << rating;
78
79 return m_widgetList;
80}
81
82void ItemsGridViewDelegate::updateItemWidgets(const QList<QWidget*> widgets,
83 const QStyleOptionViewItem &option,
84 const QPersistentModelIndex &index) const
85{
86 const ItemsModel * model = qobject_cast<const ItemsModel*>(index.model());
87 if (!model) {
88 kDebug() << "WARNING - INVALID MODEL!";
89 return;
90 }
91
92 EntryInternal entry = index.data(Qt::UserRole).value<KNS3::EntryInternal>();
93 int elementXPos = ItemMargin;
94 int elementYPos = PreviewHeight + ItemMargin + FrameThickness*2;
95
96 //setup rating widget
97 KRatingWidget * rating = qobject_cast<KRatingWidget*>(widgets.at(DelegateGridRatingWidget));
98 if (rating) {
99 if (entry.rating() > 0) {
100 rating->setToolTip(i18n("Rating: %1%", entry.rating()));
101 // assume all entries come with rating 0..100 but most are in the range 20 - 80, so 20 is 0 stars, 80 is 5 stars
102 rating->setRating((entry.rating()-20)*10/60);
103 //make the rating widget smaller than the one at list view
104 int newWidth = 68;
105 QSize size(newWidth, 15);
106 rating->resize(size);
107 //put rating widget under image rectangle
108 rating->move((ItemGridWidth-newWidth)/2, elementYPos);
109 elementYPos += rating->height();
110 } else {
111 //is it better to stay visible?
112 rating->setVisible(false);
113 }
114 }
115 elementYPos += ItemMargin;
116
117 //setup title label
118 QLabel * titleLabel = qobject_cast<QLabel*>(widgets.at(DelegateTitleLabel));
119 if (titleLabel != NULL) {
120 titleLabel->setWordWrap(true);
121 titleLabel->setAlignment(Qt::AlignHCenter);
122 //titleLabel->setFrameStyle(QFrame::Panel);
123 titleLabel->resize(QSize(option.rect.width() - (ItemMargin * 2), option.fontMetrics.height() * 2));
124 titleLabel->move((ItemGridWidth-titleLabel->width())/2, elementYPos);
125
126 QString title;
127 KUrl link = qvariant_cast<KUrl>(entry.homepage());
128 if (!link.isEmpty()) {
129 title += "<b><a href=\"" + link.url() + "\">" + entry.name() + "</a></b>\n";
130 } else {
131 title += "<b>" + entry.name() + "</b>";
132 }
133 titleLabel->setText(title);
134 elementYPos += titleLabel->height();
135 }
136 //setup author label
137 QLabel * authorLabel = qobject_cast<QLabel*>(widgets.at(DelegateAuthorLabel));
138 if (authorLabel != NULL) {
139 authorLabel->setWordWrap(true);
140 authorLabel->setAlignment(Qt::AlignHCenter);
141 authorLabel->resize(QSize(option.rect.width() - (ItemMargin * 2), option.fontMetrics.height()));
142 authorLabel->move((ItemGridWidth-authorLabel->width())/2,elementYPos);
143
144 QString text;
145 QString authorName = entry.author().name();
146 QString email = entry.author().email();
147 QString authorPage = entry.author().homepage();
148
149 if (!authorName.isEmpty()) {
150 if (!authorPage.isEmpty()) {
151 text += "<p>" + i18nc("Show the author of this item in a list", "By <i>%1</i>", " <a href=\"" + authorPage + "\">" + authorName + "</a>") + "</p>\n";
152 } else if (!email.isEmpty()) {
153 text += "<p>" + i18nc("Show the author of this item in a list", "By <i>%1</i>", authorName) + " <a href=\"mailto:" + email + "\">" + email + "</a></p>\n";
154 } else {
155 text += "<p>" + i18nc("Show the author of this item in a list", "By <i>%1</i>", authorName) + "</p>\n";
156 }
157 }
158 authorLabel->setText(text);
159 elementYPos += authorLabel->height();
160 }
161 elementYPos += ItemMargin;
162
163 //setup download label
164 QLabel * downloadLabel = qobject_cast<QLabel*>(widgets.at(DelegateDownloadCounterLabel));
165 if (downloadLabel != NULL) {
166 downloadLabel->setWordWrap(true);
167 downloadLabel->setAlignment(Qt::AlignHCenter);
168 downloadLabel->resize(QSize(option.rect.width() - (ItemMargin * 2), option.fontMetrics.height()));
169 downloadLabel->move((ItemGridWidth-downloadLabel->width())/2,elementYPos);
170
171 unsigned int fans = entry.numberFans();
172 unsigned int downloads = entry.downloadCount();
173
174 QString text;
175 QString fanString;
176 QString downloadString;
177 if (fans > 0) {
178 fanString = i18ncp("fan as in supporter", "1 fan", "%1 fans", fans);
179 }
180 if (downloads > 0) {
181 downloadString = i18np("1 download", "%1 downloads", downloads);
182 }
183 if (downloads > 0 || fans > 0) {
184 text += "<p>" + downloadString;
185 if (downloads > 0 && fans > 0) {
186 text += ", ";
187 }
188 text += fanString + QLatin1String("</p>");
189 }
190 downloadLabel->setText(text);
191 elementYPos += downloadLabel->height();
192 }
193 elementYPos += ItemMargin;
194 m_elementYPos = elementYPos;
195}
196
197void ItemsGridViewDelegate::paint(QPainter * painter, const QStyleOptionViewItem & option, const QModelIndex & index) const
198{
199 if (option.state & QStyle::State_MouseOver) {
200 QModelIndex focIndex = focusedIndex();
201 if (m_oldIndex != focIndex || !m_operationBar->isVisible()) {
202 ItemsGridViewDelegate* delegate = const_cast<ItemsGridViewDelegate*>(this);
203
204 delegate->displayOperationBar(option.rect,index);
205 delegate->m_oldIndex = focIndex;
206 }
207 } else {
208 QModelIndex focindex = focusedIndex();
209 if(!focindex.isValid()){
210 //kDebug() << "INVALID hide selection";
211 m_operationBar->hide();
212 }
213 }
214
215 QStyle *style = QApplication::style();
216 style->drawPrimitive(QStyle::PE_PanelItemViewItem, &option, painter, 0);
217
218 painter->save();
219
220 if (option.state & QStyle::State_Selected) {
221 painter->setPen(QPen(option.palette.highlightedText().color()));
222 } else {
223 painter->setPen(QPen(option.palette.text().color()));
224 }
225
226 const ItemsModel * realmodel = qobject_cast<const ItemsModel*>(index.model());
227
228 if (realmodel->hasPreviewImages()) {
229 int height = option.rect.height();
230 int width = option.rect.width();
231
232 KNS3::EntryInternal entry = index.data(Qt::UserRole).value<KNS3::EntryInternal>();
233 if (entry.previewUrl(EntryInternal::PreviewSmall1).isEmpty()) {
234 ;
235 } else {
236 QPoint centralPoint(option.rect.left() + width/2,option.rect.top() + ItemMargin + FrameThickness + PreviewHeight/2);
237 QImage image = entry.previewImage(EntryInternal::PreviewSmall1);
238 if (!image.isNull()) {
239 QPoint previewPoint(centralPoint.x() - image.width()/2, centralPoint.y() - image.height()/2);
240 painter->drawImage(previewPoint, image);
241
242 QPixmap frameImageScaled = m_frameImage.scaled(image.width() + FrameThickness*2, image.height() + FrameThickness*2);
243 QPoint framePoint(centralPoint.x() - frameImageScaled.width()/2, centralPoint.y() - frameImageScaled.height()/2);
244 painter->drawPixmap(framePoint, frameImageScaled);
245 } else {
246 QPoint thumbnailPoint(option.rect.left() + ((width - PreviewWidth - FrameThickness*2) / 2), option.rect.top() + ItemMargin);
247 QRect rect(thumbnailPoint, QSize(PreviewWidth + FrameThickness*2, PreviewHeight + FrameThickness*2));
248 painter->drawText(rect, Qt::AlignCenter | Qt::TextWordWrap, i18n("Loading Preview"));
249 }
250 }
251 }
252
253 painter->restore();
254}
255
256QSize ItemsGridViewDelegate::sizeHint(const QStyleOptionViewItem & option, const QModelIndex & index) const
257{
258 Q_UNUSED(option);
259 Q_UNUSED(index);
260
261 QSize size;
262
263 size.setWidth(ItemGridWidth);
264 size.setHeight(qMax(option.fontMetrics.height() * 13, ItemGridHeight)); // up to 6 lines of text, and two margins
265 return size;
266}
267
268void ItemsGridViewDelegate::createOperationBar()
269{
270 m_operationBar = new QWidget(this->itemView()->viewport());
271
272 m_detailsButton = new QToolButton();
273 m_detailsButton->setToolButtonStyle(Qt::ToolButtonFollowStyle);
274 m_detailsButton->setPopupMode(QToolButton::InstantPopup);
275 m_detailsButton->setToolTip(i18n("Details"));
276 m_detailsButton->setIcon(KIcon("documentinfo"));
277 setBlockedEventTypes(m_detailsButton, QList<QEvent::Type>() << QEvent::MouseButtonPress
278 << QEvent::MouseButtonRelease << QEvent::MouseButtonDblClick);
279 connect(m_detailsButton, SIGNAL(clicked()), this, SLOT(slotDetailsClicked()));
280
281 m_installButton = new QToolButton();
282 m_installButton->setToolButtonStyle(Qt::ToolButtonFollowStyle);
283 m_installButton->setPopupMode(QToolButton::InstantPopup);
284
285 setBlockedEventTypes(m_installButton, QList<QEvent::Type>() << QEvent::MouseButtonPress
286 << QEvent::MouseButtonRelease << QEvent::MouseButtonDblClick);
287 connect(m_installButton, SIGNAL(clicked()), this, SLOT(slotInstallClicked()));
288 connect(m_installButton, SIGNAL(triggered(QAction*)), this, SLOT(slotInstallActionTriggered(QAction*)));
289
290
291 if (m_installButton->menu()) {
292 QMenu* buttonMenu = m_installButton->menu();
293 buttonMenu->clear();
294 m_installButton->setMenu(0);
295 buttonMenu->deleteLater();
296 }
297
298 QHBoxLayout* layout = new QHBoxLayout(m_operationBar);
299
300 layout->setSpacing(1);
301 layout->addWidget(m_installButton);
302 layout->addWidget(m_detailsButton);
303
304 m_operationBar->adjustSize();
305 m_operationBar->hide();
306}
307
308void ItemsGridViewDelegate::displayOperationBar(const QRect &rect,const QModelIndex & index)
309{
310 KNS3::EntryInternal entry = index.data(Qt::UserRole).value<KNS3::EntryInternal>();
311 if (m_installButton != 0) {
312 if (m_installButton->menu() != 0) {
313 QMenu* buttonMenu = m_installButton->menu();
314 buttonMenu->clear();
315 m_installButton->setMenu(0);
316 buttonMenu->deleteLater();
317 }
318
319 bool installable = false;
320 bool enabled = true;
321 QString text;
322 KIcon icon;
323
324 switch (entry.status()) {
325 case Entry::Installed:
326 text = i18n("Uninstall");
327 icon = m_iconDelete;
328 break;
329 case Entry::Updateable:
330 text = i18n("Update");
331 icon = m_iconUpdate;
332 installable = true;
333 break;
334 case Entry::Installing:
335 text = i18n("Installing");
336 enabled = false;
337 icon = m_iconUpdate;
338 break;
339 case Entry::Updating:
340 text = i18n("Updating");
341 enabled = false;
342 icon = m_iconUpdate;
343 break;
344 case Entry::Downloadable:
345 text = i18n("Install");
346 icon = m_iconInstall;
347 installable = true;
348 break;
349 case Entry::Deleted:
350 text = i18n("Install Again");
351 icon = m_iconInstall;
352 installable = true;
353 break;
354 default:
355 text = i18n("Install");
356 }
357 m_installButton->setToolTip(text);
358 m_installButton->setIcon(icon);
359 m_installButton->setEnabled(enabled);
360 if (installable && entry.downloadLinkCount() > 1) {
361 KMenu * installMenu = new KMenu(m_installButton);
362 foreach (EntryInternal::DownloadLinkInformation info, entry.downloadLinkInformationList()) {
363 QString text = info.name;
364 if (!info.distributionType.trimmed().isEmpty()) {
365 text + " (" + info.distributionType.trimmed() + ")";
366 }
367 QAction* installAction = installMenu->addAction(m_iconInstall, text);
368 installAction->setData(QPoint(index.row(), info.id));
369 }
370 m_installButton->setMenu(installMenu);
371 }
372
373 m_operationBar->move(rect.left()+(ItemGridWidth-m_operationBar->width())/2,rect.top() + m_elementYPos);
374 m_operationBar->show();
375 }
376}
377}
378
379#include "itemsgridviewdelegate.moc"
KIcon
KMenu
KNS3::Author::homepage
QString homepage() const
Retrieve the author's homepage.
Definition: knewstuff3/core/author.cpp:60
KNS3::Author::name
QString name() const
Retrieve the author's name.
Definition: knewstuff3/core/author.cpp:30
KNS3::Author::email
QString email() const
Retrieve the author's email address.
Definition: knewstuff3/core/author.cpp:40
KNS3::Engine
KNewStuff engine.
Definition: knewstuff3/core/engine.h:53
KNS3::EntryInternal
KNewStuff data entry container.
Definition: entryinternal.h:55
KNS3::EntryInternal::homepage
KUrl homepage() const
Definition: entryinternal.cpp:164
KNS3::EntryInternal::downloadLinkCount
int downloadLinkCount() const
Definition: entryinternal.cpp:397
KNS3::EntryInternal::name
QString name() const
Retrieve the name of the data object.
Definition: entryinternal.cpp:124
KNS3::EntryInternal::downloadCount
int downloadCount() const
Retrieve the download count for the object, which has been determined by its hosting sites and thus m...
Definition: entryinternal.cpp:294
KNS3::EntryInternal::previewUrl
QString previewUrl(PreviewType type=PreviewSmall1) const
Retrieve the file name of an image containing a preview of the object.
Definition: entryinternal.cpp:264
KNS3::EntryInternal::author
Author author() const
Retrieve the author of the object.
Definition: entryinternal.cpp:174
KNS3::EntryInternal::PreviewSmall1
@ PreviewSmall1
Definition: entryinternal.h:71
KNS3::EntryInternal::status
Entry::Status status() const
Retrieves the entry's status.
Definition: entryinternal.cpp:367
KNS3::EntryInternal::rating
int rating() const
Retrieve the rating for the object, which has been determined by its users and thus might change over...
Definition: entryinternal.cpp:284
KNS3::EntryInternal::numberFans
int numberFans() const
Definition: entryinternal.cpp:304
KNS3::EntryInternal::previewImage
QImage previewImage(PreviewType type=PreviewSmall1) const
This will not be loaded automatically, instead use Engine to load the actual images.
Definition: entryinternal.cpp:274
KNS3::EntryInternal::downloadLinkInformationList
QList< DownloadLinkInformation > downloadLinkInformationList() const
Definition: entryinternal.cpp:402
KNS3::Entry::Installed
@ Installed
Definition: knewstuff3/entry.h:61
KNS3::Entry::Installing
@ Installing
Definition: knewstuff3/entry.h:64
KNS3::Entry::Deleted
@ Deleted
Definition: knewstuff3/entry.h:63
KNS3::Entry::Updateable
@ Updateable
Definition: knewstuff3/entry.h:62
KNS3::Entry::Downloadable
@ Downloadable
Definition: knewstuff3/entry.h:60
KNS3::Entry::Updating
@ Updating
Definition: knewstuff3/entry.h:65
KNS3::ItemsGridViewDelegate
Definition: itemsgridviewdelegate.h:33
KNS3::ItemsGridViewDelegate::sizeHint
virtual QSize sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const
Definition: itemsgridviewdelegate.cpp:256
KNS3::ItemsGridViewDelegate::createItemWidgets
virtual QList< QWidget * > createItemWidgets() const
Definition: itemsgridviewdelegate.cpp:55
KNS3::ItemsGridViewDelegate::ItemsGridViewDelegate
ItemsGridViewDelegate(QAbstractItemView *itemView, Engine *engine, QObject *parent=0)
Definition: itemsgridviewdelegate.cpp:44
KNS3::ItemsGridViewDelegate::paint
virtual void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const
Definition: itemsgridviewdelegate.cpp:197
KNS3::ItemsGridViewDelegate::updateItemWidgets
virtual void updateItemWidgets(const QList< QWidget * > widgets, const QStyleOptionViewItem &option, const QPersistentModelIndex &index) const
Definition: itemsgridviewdelegate.cpp:82
KNS3::ItemsGridViewDelegate::~ItemsGridViewDelegate
~ItemsGridViewDelegate()
Definition: itemsgridviewdelegate.cpp:51
KNS3::ItemsModel
Definition: knewstuff3/ui/itemsmodel.h:34
KNS3::ItemsModel::hasPreviewImages
bool hasPreviewImages() const
Definition: knewstuff3/ui/itemsmodel.cpp:142
KNS3::ItemsViewBaseDelegate
Definition: itemsviewbasedelegate.h:41
KNS3::ItemsViewBaseDelegate::m_frameImage
QPixmap m_frameImage
Definition: itemsviewbasedelegate.h:78
KNS3::ItemsViewBaseDelegate::m_iconInstall
KIcon m_iconInstall
Definition: itemsviewbasedelegate.h:75
KNS3::ItemsViewBaseDelegate::m_iconDelete
KIcon m_iconDelete
Definition: itemsviewbasedelegate.h:77
KNS3::ItemsViewBaseDelegate::slotInstallClicked
void slotInstallClicked()
Definition: itemsviewbasedelegate.cpp:69
KNS3::ItemsViewBaseDelegate::slotDetailsClicked
void slotDetailsClicked(const QModelIndex &index)
Definition: itemsviewbasedelegate.cpp:104
KNS3::ItemsViewBaseDelegate::slotInstallActionTriggered
void slotInstallActionTriggered(QAction *action)
Definition: itemsviewbasedelegate.cpp:87
KNS3::ItemsViewBaseDelegate::m_iconUpdate
KIcon m_iconUpdate
Definition: itemsviewbasedelegate.h:76
KRatingWidget
KRatingWidget::setMaxRating
void setMaxRating(int max)
KRatingWidget::setRating
void setRating(int rating)
KRatingWidget::setHalfStepsEnabled
void setHalfStepsEnabled(bool enabled)
KSqueezedTextLabel
KSqueezedTextLabel::setTextElideMode
void setTextElideMode(Qt::TextElideMode mode)
KUrl
KWidgetItemDelegate::itemView
QAbstractItemView * itemView() const
KWidgetItemDelegate::setBlockedEventTypes
void setBlockedEventTypes(QWidget *widget, QList< QEvent::Type > types) const
KWidgetItemDelegate::focusedIndex
QPersistentModelIndex focusedIndex() const
QAction
QLabel
QList
QMenu
QObject
QToolButton
QWidget
kDebug
#define kDebug
itemsgridviewdelegate.h
kdebug.h
klocale.h
i18n
QString i18n(const char *text)
i18np
QString i18np(const char *sing, const char *plur, const A1 &a1)
i18nc
QString i18nc(const char *ctxt, const char *text)
i18ncp
QString i18ncp(const char *ctxt, const char *sing, const char *plur, const A1 &a1)
kmenu.h
itemsmodel.h
kratingwidget.h
ksqueezedtextlabel.h
link
CopyJob * link(const KUrl &src, const KUrl &destDir, JobFlags flags=DefaultFlags)
KNS3
Definition: atticaprovider.cpp:36
KNS3::PreviewHeight
static const int PreviewHeight
Definition: entryinternal.h:37
KNS3::PreviewWidth
static const int PreviewWidth
Definition: entryinternal.h:36
KNS3::ItemGridWidth
static const int ItemGridWidth
Definition: itemsgridviewdelegate.h:28
KNS3::DelegateTitleLabel
@ DelegateTitleLabel
Definition: itemsgridviewdelegate.cpp:41
KNS3::DelegateGridRatingWidget
@ DelegateGridRatingWidget
Definition: itemsgridviewdelegate.cpp:42
KNS3::DelegateDownloadCounterLabel
@ DelegateDownloadCounterLabel
Definition: itemsgridviewdelegate.cpp:41
KNS3::DelegateAuthorLabel
@ DelegateAuthorLabel
Definition: itemsgridviewdelegate.cpp:41
KNS3::FrameThickness
static const int FrameThickness
Definition: itemsgridviewdelegate.h:30
KNS3::ItemMargin
static const int ItemMargin
Definition: itemsgridviewdelegate.h:31
KNS3::ItemGridHeight
static const int ItemGridHeight
Definition: itemsgridviewdelegate.h:27
This file is part of the KDE documentation.
Documentation copyright © 1996-2023 The KDE developers.
Generated on Mon Feb 20 2023 00:00:00 by doxygen 1.9.6 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

KNewStuff

Skip menu "KNewStuff"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members
  • Related Pages

kdelibs-4.14.38 API Reference

Skip menu "kdelibs-4.14.38 API Reference"
  • DNSSD
  • Interfaces
  •   KHexEdit
  •   KMediaPlayer
  •   KSpeech
  •   KTextEditor
  • kconf_update
  • KDE3Support
  •   KUnitTest
  • KDECore
  • KDED
  • KDEsu
  • KDEUI
  • KDEWebKit
  • KDocTools
  • KFile
  • KHTML
  • KImgIO
  • KInit
  • kio
  • KIOSlave
  • KJS
  •   KJS-API
  •   WTF
  • kjsembed
  • KNewStuff
  • KParts
  • KPty
  • Kross
  • KUnitConversion
  • KUtils
  • Nepomuk
  • Plasma
  • Solid
  • Sonnet
  • ThreadWeaver
Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal