X-Git-Url: http://git.maemo.org/git/?a=blobdiff_plain;f=libffqw-1.0%2Fsources%2Fffcolorcombobox.cpp;fp=libffqw-1.0%2Fsources%2Fffcolorcombobox.cpp;h=d40d2c83eb18f0afc6942b14c5bca808a78e2d16;hb=1273d1fbb03faf468b080ca8f2f78717e6949815;hp=0000000000000000000000000000000000000000;hpb=0cf856837e9dc2e271c8e16390758bf02107f678;p=ffqwlibrary diff --git a/libffqw-1.0/sources/ffcolorcombobox.cpp b/libffqw-1.0/sources/ffcolorcombobox.cpp new file mode 100644 index 0000000..d40d2c8 --- /dev/null +++ b/libffqw-1.0/sources/ffcolorcombobox.cpp @@ -0,0 +1,258 @@ +/* + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + 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 ffcolorcombobox.cpp + * @brief Implementation of the FFColorComboBox class + * + * @author ComArch S.A. + * @date 2009.08.13 + * @version 1.0 + */ + +#include "ffcolorcombobox.h" + +/** + * Constructs a FFColorComboBox with a parent. + */ +FFColorComboBox::FFColorComboBox(QWidget* parent) : + FFAbstractComboBox(new FFColorButton, parent) +{ + +} + +/** + * A virtual destructor. + */ +FFColorComboBox::~FFColorComboBox() +{ + ; +} + +/** + * Adds item to combobox + * @param spec is a color for item + */ +void FFColorComboBox::addItem(QColor spec) +{ + addItem(QVariant(spec)); +} +/** + * Adds item to combobox + * @param spec is a pen with color for item + */ +void FFColorComboBox::addItem(QPen spec) +{ + addItem(spec.color()); +} +/** + * Adds items to combobox + * @param items is a list of colors for items + */ +void FFColorComboBox::addItems(QList items) +{ + for(int i = 0; i < items.size(); ++i) + { + // First step: you must prepare new button (button must be inherited from FFAbstractButton) + FFColorButton* temp = new FFColorButton; + temp->setColor(items.at(i)); + + // Second step: You must call this function with previously prepared button + insertItem(temp, false); + } + emit reset(); +} +/** + * Adds items to combobox + * @param items is a list of QPen-s with colors for items + */ +void FFColorComboBox::addItems(QList items) +{ + for(int i = 0; i < items.size(); ++i) + { + // First step: you must prepare new button (button must be inherited from FFAbstractButton) + FFColorButton* temp = new FFColorButton; + temp->setColor(items.at(i).color()); + + // Second step: You must call this function with previously prepared button + insertItem(temp, false); + } + emit reset(); +} + +/** + * Sets actual color. If a color is not in colorcombobox nothing happens. + *@param color is a color to set + */ +void FFColorComboBox::setCurrentColor(QColor color) +{ + for(int i = 0; i < items_.size(); ++i) + { + if(dynamic_cast(items_[i])->color() == color) + { + setCurrentItem(i); + return; + } + } +} + +/** + * Sets chosen value of FFColoroComboBox on activator + * @param item is a pointer to chosen item. + */ + +void FFColorComboBox::setActivatorSpecs(FFAbstractButton* item) +{ + if(FFColorButton* but = dynamic_cast(item)) + { + dynamic_cast(activator_)->setColor(but->color()); + } +} +/** + * Returns QVariant element containing value of chosen item + */ +QVariant FFColorComboBox::activatorSpecs() +{ + return QVariant(dynamic_cast(activator_)->pen()); +} + +/** + * Adds new item to FFColorComboBox + */ +void FFColorComboBox::addItem(QVariant spec) +{ + // First step: you must prepare new button (button must be inherited from FFAbstractButton) + FFColorButton* temp = new FFColorButton; + temp->setColor(spec.value()); + + // Second step: You must call this function with previously prepared button + insertItem(temp); +} + +/** + * Constructs FFColorButton with given parent + */ +FFColorButton::FFColorButton(QWidget* parent) : + FFAbstractButton(parent) +{ + setMargins(15,15,15,15); +} +/** + * A virtual destructor + */ +FFColorButton::~FFColorButton() +{ + ; +} +/** + * Sets a color painted on the button + */ +void FFColorButton::setColor(QColor color) +{ + QBrush brush; + brush = pen_.brush(); + brush.setStyle(Qt::SolidPattern); + brush.setColor(color); + pen_.setBrush(brush); + pen_.setColor(color); +} +/** + * Returns color painted on the button + */ +QColor FFColorButton::color() +{ + return pen_.color(); +} +/** + * Serves paint event, draws rounded rectangle. Overrides parent's method + * @param event Contains all informations about event. + */ +void FFColorButton::paintEvent(QPaintEvent* event) +{ + FFAbstractButton::paintEvent(event); + + QPainter painter; + painter.begin(this); + + painter.setPen(pen_); + painter.setBrush(pen_.brush()); + + painter.setRenderHint(QPainter::Antialiasing,true); + painter.drawRoundedRect(leftMargin() + indent(), + topMargin(), + width() - leftMargin() - rightMargin() - 2 * indent(), + height() - topMargin() - bottomMargin(),10,10); + + painter.end(); + +}