--- /dev/null
+/*
+ GNU GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+ The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works. By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users. We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors. You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+ To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights. Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received. You must make sure that they, too, receive
+or can get the source code. And you must show them these terms so they
+know their rights.
+
+ Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+ For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software. For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+ Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so. This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software. The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable. Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products. If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+ Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary. To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+http://www.gnu.org/licenses/gpl-3.0.txt
+*/
+/**
+ * @file ffscrollingbutton.h
+ * @brief Contains a necessary class declaration.
+ *
+ * @author ComArch S.A.
+ * @date 2009.08.03
+ * @version 1.0
+ */
+
+#ifndef FFSCROLLINGBUTTON_H
+#define FFSCROLLINGBUTTON_H
+
+#ifndef MAEMO
+#include <QtDesigner/QDesignerExportWidget>
+#endif
+
+#include "ffabstractbutton.h"
+#include "ffviewcache.h"
+#include "ffscrollinglabel.h"
+
+/**
+ * @author ComArch S.A.
+ * @date 2009.08.03
+ * @version 1.0
+ *
+ * @brief A class responsible for button with 2 labels
+ */
+const int DEFAULT_TOPBOTTOM_MARGIN = 2; ///< Default top and bottom margin
+const float DEFAULT_RATIO = 0.3; ///< Default title/description height ratio
+
+#ifdef MAEMO
+
+class FFScrollingButton : public FFAbstractButton
+{
+ Q_OBJECT
+
+#else
+
+class QDESIGNER_WIDGET_EXPORT FFScrollingButton : public FFAbstractButton
+{
+ Q_OBJECT
+
+ Q_PROPERTY(QString title READ title WRITE setTitle)
+ Q_PROPERTY(QString description READ description WRITE setDescription)
+
+ Q_PROPERTY(qreal ratio READ ratio WRITE setRatio)
+
+ Q_PROPERTY(QColor titleColor READ titleColor WRITE setTitleColor)
+ Q_PROPERTY(QColor descriptionColor READ descriptionColor WRITE setDescriptionColor)
+
+ Q_PROPERTY(int titleIndent READ titleIndent WRITE setTitleIndent)
+ Q_PROPERTY(int descriptionIndent READ descriptionIndent WRITE setDescriptionIndent)
+
+ Q_PROPERTY(QFont titleFont READ titleFont WRITE setTitleFont)
+ Q_PROPERTY(QFont descriptionFont READ descriptionFont WRITE setDescriptionFont)
+
+ Q_PROPERTY(bool titleDisabled READ isDisabledTitle WRITE disableTitle)
+ Q_PROPERTY(bool descriptionDisabled READ isDisabledDescription WRITE disableDescription)
+
+ Q_PROPERTY(FFScrollingLabel::Alignment titleAlignment READ titleAlignment WRITE setTitleAlignment)
+ Q_PROPERTY(FFScrollingLabel::Alignment descriptionAlignment READ descriptionAlignment WRITE setDescriptionAlignment)
+
+#endif
+
+public:
+ FFScrollingButton(QWidget* parent = 0);
+ FFScrollingButton(QString title, QString description, QWidget* parent =
+ 0);
+ virtual ~FFScrollingButton();
+
+ QString title() const;
+ FFScrollingLabel::Alignment titleAlignment() const;
+ QColor titleColor() const;
+ int titleIndent() const;
+ QFont titleFont() const;
+
+ QString description() const;
+ FFScrollingLabel::Alignment descriptionAlignment() const;
+ QColor descriptionColor() const;
+ int descriptionIndent() const;
+ QFont descriptionFont() const;
+
+ float ratio() const;
+
+ void setTitle(const QString& title);
+ void setTitleAlignment(FFScrollingLabel::Alignment alignment);
+ void setTitleColor(QColor color);
+ void setTitleIndent(int indent);
+ void setTitleFont(QFont font);
+ void setDescription(const QString& text);
+ void setDescriptionAlignment(FFScrollingLabel::Alignment alignment);
+ void setDescriptionColor(QColor color);
+ void setDescriptionIndent(int indent);
+ void setDescriptionFont(QFont font);
+
+ void setRatio(float ratio);
+
+ void disableTitle(bool state);
+ void disableDescription(bool state);
+
+ bool isDisabledTitle();
+ bool isDisabledDescription();
+ void setIconAlignment(Qt::Alignment iconAlignment);
+
+protected:
+
+ int titleIndent_; ///< indnet of title
+ int descriptionIndent_; ///< indent of description
+
+ bool titleSwitch_; ///< is true when title is visible
+ bool descriptionSwitch_;///< is true when description is visible
+
+ float ratio_; ///< title/description height ratio
+ float tRatio; ///< title height ratio
+ float dRatio; ///< description height ratio
+
+ virtual void paintEvent(QPaintEvent* event);
+ virtual void resizeEvent(QResizeEvent* event);
+ virtual void mousePressEvent(QMouseEvent* event);
+ virtual void mouseReleaseEvent(QMouseEvent* event);
+
+ virtual void paintIcon(QPainter* painter);
+
+ FFScrollingLabel* titleWidget() const;
+ FFScrollingLabel* descriptionWidget() const;
+
+ void scaleIndent(QSize oldSize, QSize newSize);
+
+ void calculateRatio();
+
+ virtual void updateView();
+
+private:
+ FFScrollingLabel* description_; ///< is using to displaying description of button
+ FFScrollingLabel* title_; ///< is using to displaying title of button
+
+ float titleIndentTemp; ///< temporary title's indent
+ float descriptionIndentTemp; ///< temporary description's indent
+
+ void init();
+};
+
+#endif // FFSCROLLINGBUTTON_H