* major layout fixes (size, stacked widget, ...)
[kdenetwork.git] / kget / ui / nepomukwidget.cpp
blobc0b8ee9a63eaf64e46cc7feb02176dec3f3e5c79
1 /* This file is part of the KDE project
3 Copyright (C) 2008 Lukas Appelhans <l.appelhans@gmx.de>
5 This program is free software; you can redistribute it and/or
6 modify it under the terms of the GNU General Public
7 License as published by the Free Software Foundation; either
8 version 2 of the License, or (at your option) any later version.
9 */
10 #include "nepomukwidget.h"
12 #include "core/nepomukhandler.h"
13 #include "core/transferhandler.h"
14 #include <nepomuk/kratingwidget.h>
15 #include <nepomuk/kmetadatatagcloud.h>
16 #include <KAction>
17 #include <KMenu>
18 #include <KLocale>
19 #include <QVBoxLayout>
21 NepomukWidget::NepomukWidget(TransferHandler *transfer, QWidget *parent)
22 : QWidget(parent),
23 m_transfer(transfer),
24 m_nepHandler(m_transfer->nepomukHandler()),
25 m_currentTag(QString())
27 if (!m_nepHandler)
28 return;
30 QVBoxLayout *layout = new QVBoxLayout(this);
31 KRatingWidget *ratingWidget = new KRatingWidget(this);
32 ratingWidget->setRating(m_nepHandler->rating());
33 layout->addWidget(ratingWidget);
34 Nepomuk::TagCloud *tags = new Nepomuk::TagCloud(this);
35 foreach (QString string, m_nepHandler->tags())
36 tags->addTag(string, 4);
38 layout->addWidget(tags);
39 connect(ratingWidget, SIGNAL(ratingChanged(int rating)), m_nepHandler, SLOT(setRating(int)));
40 connect(tags, SIGNAL(tagClicked(const QString&)), SLOT(showTagContextMenu(const QString&)));
43 NepomukWidget::~NepomukWidget()
47 QWidget * NepomukWidget::createNepomukWidget(TransferHandler *transfer)
49 return new NepomukWidget(transfer, 0);
52 void NepomukWidget::showTagContextMenu(const QString& tag)
54 m_currentTag = tag;
55 KMenu *popup = new KMenu(this);
56 QAction *removeAction = popup->addAction(KIcon("list-remove"), i18n("Remove Tag"));
57 connect(removeAction, SIGNAL(triggered()), SLOT(removeCurrentTag()));
58 popup->popup(QCursor::pos());
61 void NepomukWidget::removeCurrentTag()
63 m_nepHandler->removeTag(m_currentTag);
66 #include "nepomukwidget.moc"