--- /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 ffdpadbutton.cpp
+ * @brief Implementation of the FFiPadButton class
+ *
+ * @author ComArch S.A.
+ * @date 2009.08.11
+ * @version 1.0
+ */
+
+#include "ffdpadbutton.h"
+
+/**
+ * Constructs a FFDPadButton with size and parent.
+ */
+FFDPadButton::FFDPadButton(QString path, int type, QWidget* parent) :
+ QAbstractButton(parent)
+{
+
+ //initiates button's elements
+ setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred);
+
+ this->type_ = type;
+
+ pressed_ = false;
+ this->path = path;
+
+ this->type_ = type;
+ buttonView = new FFViewCache(this);
+ buttonPressedView = new FFViewCache(this);
+
+ buttonView->init(path + ".svg");
+ buttonPressedView->init(path + "_pressed.svg");
+ updateMask();
+}
+
+/** A virtual destructor */
+FFDPadButton::~FFDPadButton()
+{
+
+}
+
+/**
+ * Sets size of FFDPadButton
+ * Calls updateView of FFViewCache objects to fit pixmap's size
+ * to new FFDPadButton's size.
+ * Calls updateMask() to set new event's mask for FFDPadButton.
+ *
+ * @param size is a new size of FFDPadButton
+ */
+void FFDPadButton::setSize(QSize size)
+{
+
+ buttonView->updateView(size);
+ buttonPressedView->updateView(size);
+ setGeometry(0,0, size.width(),size.height());
+ updateMask();
+ update();
+}
+
+/**
+ * Returns a value that tells if the FFDPadButton is pressed.
+ */
+bool FFDPadButton::isPressed() const
+{
+ return pressed_;
+}
+/**
+ * Sets FFDPadButton's state. Value "true" means that the FFDPadButton is pressed.
+ */
+void FFDPadButton::setPressed(bool pressed_)
+{
+ this->pressed_ = pressed_;
+}
+/**
+ * Returns a value defining type of pressed FFDPadButton.
+ */
+int FFDPadButton::type() const
+{
+ return type_;
+}
+/**
+ * Sets type of FFDPadButton defined in enum BUTTON_TYPE,which is placed
+ * in file ffdipabutton.h.
+ */
+void FFDPadButton::setType(int type_)
+{
+ this->type_ = type_;
+}
+/**
+ * Updates events' mask for FFDPadButton based on pixmap
+ */
+void FFDPadButton::updateMask()
+{
+ if(pressed_)
+ setMask(buttonPressedView->pixmap().mask());
+ else
+ setMask(buttonView->pixmap().mask());
+}
+
+/**
+ * Repaints the view of FFDPadButton. There are 2 views of FFDiButton for both
+ * states pressed and unpressed. Overrides the virtual method from QWidget.
+ * @param event Contains all informations about event.
+ */
+void FFDPadButton::paintEvent(QPaintEvent *event)
+{
+ Q_UNUSED(event)
+ QPainter paint(this);
+ if(pressed_)
+ paint.drawPixmap(0, 0, buttonPressedView->pixmap());
+ else
+ paint.drawPixmap(0, 0, buttonView->pixmap());
+}
+/**
+ * Sets pressed_ value on true and calls updateMask() method.
+ * At the end calls update() method.
+ * Overrides the virtual method from QWidget.
+ * @param event Contains all informations about event.
+ */
+void FFDPadButton::mousePressEvent(QMouseEvent *)
+{
+ pressed_ = true;
+ update();
+}
+/**
+ * Sets pressed_ value on false and calls updateMask() and update() method.
+ * At the end emit buttonClicked() signal.
+ * Overrides the virtual method from QWidget.
+ * @param event Contains all informations about event.
+ */
+void FFDPadButton::mouseReleaseEvent(QMouseEvent *)
+{
+ pressed_ = false;
+ update();
+ emit clicked(this->type_);
+}
+
+/**
+ \fn void FFDPadButton::clicked(int type)
+
+ This signal is emitted when the button was released.
+
+*/