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 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89
|
/***************************************************************************
* *
* 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 __GroupBoxWidget_h__
#define __GroupBoxWidget_h__
#include <QWidget>
#include <QFont>
class QTimer;
class GroupBoxWidget : public QWidget
{
Q_OBJECT
Q_PROPERTY(QString title READ title WRITE setTitle)
Q_PROPERTY(int titleSize READ titleSize WRITE setTitleSize)
Q_PROPERTY(int fixedWidth READ minimumWidth WRITE setFixedWidth)
Q_PROPERTY(bool checkable READ isCheckable WRITE setCheckable)
Q_PROPERTY(bool checked READ isChecked WRITE setChecked)
Q_PROPERTY(int borderFlags READ borderFlags WRITE setBorderFlags)
public:
GroupBoxWidget(QWidget * parent = 0);
QString title() const;
void setTitle(const QString & title);
int titleSize() const;
void setTitleSize(int titleSize);
bool isCheckable() const;
void setCheckable(bool checkable);
bool isChecked() const;
void setChecked(bool checked);
int borderFlags() const;
void setBorderFlags(int flags);
// an elegant alternative to show and hide
void collapse();
void expand();
Q_SIGNALS:
void toggled(bool on);
protected:
void enterEvent(QEvent *);
void leaveEvent(QEvent *);
void mousePressEvent(QMouseEvent *);
void paintEvent(QPaintEvent * event);
private:
// for internal animation only
Q_PROPERTY(qreal cAnim READ checkValue WRITE setCheckValue)
Q_PROPERTY(qreal hAnim READ hoverValue WRITE setHoverValue)
qreal checkValue() const;
void setCheckValue(qreal value);
qreal hoverValue() const;
void setHoverValue(qreal value);
int calcMinWidth() const;
void updateDesign();
QTimer * m_redesignTimer;
QString m_titleText;
QFont m_titleFont;
bool m_collapsed;
bool m_checkable;
bool m_checked;
int m_borderFlags;
qreal m_checkValue;
qreal m_hoverValue;
private Q_SLOTS:
void slotAnimateDesign();
void slotFinalizeDesign();
};
#endif
|