┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/tagcloud/tagcloud.h
diff options
context:
space:
mode:
authorSebastian Trueg <[email protected]>2008-03-21 21:05:05 +0000
committerSebastian Trueg <[email protected]>2008-03-21 21:05:05 +0000
commitd3a04321886e8ca39ab91a647a9547ebe4d52154 (patch)
treeff4e8237ba07cc2201316c32c07f09e6e311eb33 /src/tagcloud/tagcloud.h
parent9ceab694e2454d283987d596f5f69e43adc6579e (diff)
This is the first step towards a better looking and more usable metadata GUI.
- A nicer comment widget shows a popup to edit the comment. - A tag cloud replaces the ugly tagwidget from libnepomuk. The plan is to use Dolphin as a testbed to optimize the look and then move at least the tagcloud to libnepomuk to make it available for all apps since this is a common feature. So please test it and provide feedback. The layout is still cluttered. So we also need feedback on that. And of course on the usability. Apart from the GUI Dolphin now uses the mass metadata update job to perform metadata updates on many files in an async KJob without blocking the GUI. This is another candidate for public API at some point. svn path=/trunk/KDE/kdebase/apps/; revision=788565
Diffstat (limited to 'src/tagcloud/tagcloud.h')
-rw-r--r--src/tagcloud/tagcloud.h143
1 files changed, 143 insertions, 0 deletions
diff --git a/src/tagcloud/tagcloud.h b/src/tagcloud/tagcloud.h
new file mode 100644
index 000000000..2c641e7fb
--- /dev/null
+++ b/src/tagcloud/tagcloud.h
@@ -0,0 +1,143 @@
+/*
+ This file is part of the Nepomuk KDE project.
+ Copyright (C) 2007 Sebastian Trueg <[email protected]>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License version 2 as published by the Free Software Foundation.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+ */
+
+#ifndef _NEPOMUK_TAG_CLOUD_H_
+#define _NEPOMUK_TAG_CLOUD_H_
+
+#include <QtGui/QFrame>
+#include <QtCore/QList>
+
+#include <nepomuk/tag.h>
+#include <nepomuk/nepomuk_export.h>
+
+#include <Soprano/Statement>
+
+class QResizeEvent;
+class QPaintEvent;
+class QMouseEvent;
+class QEvent;
+
+namespace Nepomuk {
+ class NEPOMUK_EXPORT TagCloud : public QFrame
+ {
+ Q_OBJECT
+
+ public:
+ TagCloud( QWidget* parent = 0 );
+ ~TagCloud();
+
+ enum Sorting {
+ SortAlpabetically,
+ SortByWeight,
+ SortRandom
+ };
+
+ int heightForWidth( int w ) const;
+ QSize sizeHint() const;
+ QSize minimumSizeHint() const;
+
+ bool zoomEnabled() const;
+
+ public Q_SLOTS:
+ /**
+ * Set the maximum used font size. The default is 0
+ * which means to calculate proper values from the KDE
+ * defaults.
+ */
+ void setMaxFontSize( int size );
+
+ /**
+ * Set the minimum used font size. The default is 0
+ * which means to calculate proper values from the KDE
+ * defaults.
+ */
+ void setMinFontSize( int size );
+
+ /**
+ * Set the maximum number of displayed tags. The default is 0
+ * which means to display all tags.
+ *
+ * NOT IMPLEMENTED YET
+ */
+ void setMaxNumberDisplayedTags( int n );
+
+ /**
+ * Allow selection of tags, i.e. enabling and disabling of tags.
+ */
+ void setSelectionEnabled( bool enabled );
+
+ void setNewTagButtonEnabled( bool enabled );
+ void setContextMenuEnabled( bool enabled );
+ void setAlignment( Qt::Alignment alignment );
+
+ void setZoomEnabled( bool zoom );
+
+ /**
+ * Default: SortAlpabetically
+ */
+ void setSorting( Sorting );
+
+ /**
+ * Will reset tags set via showTags()
+ */
+ void showAllTags();
+
+ /**
+ * Set the tags to be shown in the tag cloud.
+ * If the new tag button is enabled (setEnableNewTagButton())
+ * new tags will automatically be added to the list of shown tags.
+ */
+ void showTags( const QList<Tag>& tags );
+
+ void showResourceTags( const Resource& resource );
+
+ /**
+ * Select or deselect a tag. This does only make sense
+ * if selection is enabled and \p tag is actually
+ * displayed.
+ *
+ * \sa setSelectionEnabled
+ */
+ void setTagSelected( const Tag& tag, bool selected );
+
+ void setCustomNewTagAction( QAction* action );
+
+ Q_SIGNALS:
+ void tagClicked( const Nepomuk::Tag& tag );
+ void tagAdded( const Nepomuk::Tag& tag );
+ void tagToggled( const Nepomuk::Tag& tag, bool enabled );
+
+ protected:
+ void resizeEvent( QResizeEvent* e );
+ void paintEvent( QPaintEvent* e );
+ void mousePressEvent( QMouseEvent* );
+ void mouseMoveEvent( QMouseEvent* );
+ void leaveEvent( QEvent* );
+
+ private Q_SLOTS:
+ void slotStatementAdded( const Soprano::Statement& s );
+ void slotStatementRemoved( const Soprano::Statement& s );
+
+ private:
+ class Private;
+ Private* const d;
+ };
+}
+
+#endif