/* * This file is part of the Nepomuk KDE project. * Copyright (C) 2006-2007 Sebastian Trueg * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * 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 KRATINGWIDGET_H #define KRATINGWIDGET_H #include #include /** * \class KRatingWidget kratingwidget.h KDE/KRatingWidget * * \brief Displays a rating value as a row of pixmaps. * * The KRatingWidget displays a range of stars or other arbitrary * pixmaps and allows the user to select a certain number by mouse. * * \sa KRatingPainter * * \author Sebastian Trueg */ class KDEUI_EXPORT KRatingWidget : public QFrame { Q_OBJECT Q_PROPERTY(int rating READ rating WRITE setRating) Q_PROPERTY(int maxRating READ maxRating WRITE setMaxRating) Q_PROPERTY(Qt::Alignment alignment READ alignment WRITE setAlignment) Q_PROPERTY(bool halfStepsEnabled READ halfStepsEnabled WRITE setHalfStepsEnabled) Q_PROPERTY(int spacing READ spacing WRITE setSpacing) Q_PROPERTY(QIcon icon READ icon WRITE setIcon) public: /** * Creates a new rating widget. */ KRatingWidget(QWidget *parent = nullptr); /** * Destructor */ ~KRatingWidget(); /** * \return The current rating. */ unsigned int rating() const; /** * \return the maximum possible rating. */ int maxRating() const; /** * The alignment of the stars. * * \sa setAlignment */ Qt::Alignment alignment() const; /** * The layout direction. If RTL the stars * representing the rating value will be drawn from the * right. * * \sa setLayoutDirection */ Qt::LayoutDirection layoutDirection() const; /** * The spacing between the rating stars. * * \sa setSpacing */ int spacing() const; QSize sizeHint() const; /** * If half steps are enabled one star equals to 2 rating * points and uneven rating values result in half-stars being * drawn. * * \sa setHalfStepsEnabled */ bool halfStepsEnabled() const; /** * The icon used to get pixmap from and draw a star. * * \sa setIcon */ QIcon icon() const; Q_SIGNALS: /** * This signal is emitted when the rating is changed. */ void ratingChanged(unsigned int rating); void ratingChanged(int rating); public Q_SLOTS: /** * Set the current rating. Calling this method will trigger the * ratingChanged signal if @p rating is different from the previous rating. */ void setRating(int rating); /** * Set the maximum allowed rating value. The default is 10 which means * that a rating from 1 to 10 is selectable. If \a max is uneven steps * are automatically only allowed full. */ void setMaxRating(int max); /** * If half steps are enabled (the default) then * one rating step corresponds to half a star. */ void setHalfStepsEnabled( bool enabled ); /** * Set the spacing between the pixmaps. The default is 0. */ void setSpacing(int); /** * The alignment of the stars in the drawing rect. * All alignment flags are supported. */ void setAlignment(Qt::Alignment align); /** * LTR or RTL */ void setLayoutDirection(Qt::LayoutDirection direction); /** * Set a custom icon. Defaults to "rating". */ void setIcon(const QIcon &icon); /** * Set the recommended size of the pixmaps. This is * only used for the sizeHint. The actual size is always * dependent on the size of the widget itself. */ void setPixmapSize(int size); protected: void mousePressEvent(QMouseEvent *e); void mouseMoveEvent(QMouseEvent *e); void leaveEvent(QEvent *e); void paintEvent(QPaintEvent *e); private: class Private; Private* const d; }; #endif