File: PixmapButton.h

package info (click to toggle)
fotowall 0.9-8
  • links: PTS
  • area: main
  • in suites: wheezy
  • size: 4,280 kB
  • sloc: cpp: 23,275; makefile: 51; sh: 25
file content (69 lines) | stat: -rw-r--r-- 2,526 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
/***************************************************************************
 *                                                                         *
 *   This file is part of the Fotowall project,                            *
 *       http://www.enricoros.com/opensource/fotowall                      *
 *                                                                         *
 *   Copyright (C) 2009 by Enrico Ros <enrico.ros@gmail.com>               *
 *                                                                         *
 *   This program is free software; you can redistribute it and/or modify  *
 *   it under the terms of the GNU General Public License as published by  *
 *   the Free Software Foundation; either version 2 of the License, or     *
 *   (at your option) any later version.                                   *
 *                                                                         *
 ***************************************************************************/

#ifndef __PixmapButton_h__
#define __PixmapButton_h__

#include <QAbstractButton>
#include <QPixmap>
#include <QFont>

class PixmapButton : public QAbstractButton
{
    Q_OBJECT
    Q_PROPERTY(QSize fixedSize READ fixedSize WRITE setFixedSize)
    Q_PROPERTY(QPixmap hoverPixmap READ hoverPixmap WRITE setHoverPixmap)
    Q_PROPERTY(QPixmap pixmap READ pixmap WRITE setPixmap)
    Q_PROPERTY(bool fadeInactive READ fadeInactive WRITE setFadeInactive)
    public:
        PixmapButton(QWidget * parent = 0);

        // change pixmap
        void setPixmap(const QPixmap & pixmap);
        QPixmap pixmap() const;

        // hover text (accelerator like)
        void setHoverText(const QString & text);
        QString hoverText() const;

        // change mouse-over pixmap
        void setHoverPixmap(const QPixmap & pixmap);
        QPixmap hoverPixmap() const;

        // fade out if non-hovered/focused
        void setFadeInactive(bool);
        bool fadeInactive() const;

        // enforce the fixed size notion
        void setFixedSize(const QSize & size);
        void setFixedSize(int w, int h);
        QSize fixedSize() const;

    protected:
        // ::QAbstractButton
        void enterEvent(QEvent *);
        void leaveEvent(QEvent *);
        void paintEvent(QPaintEvent *);

    private:
        QSize m_fixedSize;
        QPixmap m_fixedPixmap;
        QFont m_hoverFont;
        QString m_hoverText;
        QPixmap m_hoverPixmap;
        bool m_fadeInactive;
        bool m_hovering;
};

#endif