Skip to content
Snippets Groups Projects
Commit 64b98528 authored by konstantin.kukharenko's avatar konstantin.kukharenko
Browse files

Merge branch 'features-3091' into 'develop'

Features 3091

See merge request !8
parents edaa08d6 cb278b1f
No related branches found
No related tags found
3 merge requests!17Develop old,!11Feature 3131,!8Features 3091
...@@ -6,7 +6,17 @@ ...@@ -6,7 +6,17 @@
CustomComboBox::CustomComboBox(QWidget *parent): CustomComboBox::CustomComboBox(QWidget *parent):
QComboBox (parent) QComboBox (parent)
{ {
m_styledshadow = new StyledDropShadowEffect(this);
}
/** @brief Reimplemented QComboBox::setObjectName method. Updates stylesheets.
* @param text Text
*/
void CustomComboBox::setObjectName(const QString &name)
{
QComboBox::setObjectName(name);
m_styledshadow->updateStyleProperties();
setGraphicsEffect(m_styledshadow);
} }
/** @brief Reimplemented QComboBox::enterEvent is sent to the widget when the mouse cursor enters the widget. /** @brief Reimplemented QComboBox::enterEvent is sent to the widget when the mouse cursor enters the widget.
...@@ -15,6 +25,8 @@ CustomComboBox::CustomComboBox(QWidget *parent): ...@@ -15,6 +25,8 @@ CustomComboBox::CustomComboBox(QWidget *parent):
void CustomComboBox:: enterEvent(QEvent *event) void CustomComboBox:: enterEvent(QEvent *event)
{ {
Q_UNUSED(event); Q_UNUSED(event);
m_styledshadow->updateStyle(HOVER_SHADOW);
setGraphicsEffect(m_styledshadow);
setProperty("hoverState",1); setProperty("hoverState",1);
style()->unpolish(this); style()->unpolish(this);
...@@ -29,6 +41,9 @@ void CustomComboBox::leaveEvent(QEvent *event) ...@@ -29,6 +41,9 @@ void CustomComboBox::leaveEvent(QEvent *event)
{ {
Q_UNUSED(event); Q_UNUSED(event);
m_styledshadow->updateStyle(DEFAULT_SHADOW);
setGraphicsEffect(m_styledshadow);
setProperty("hoverState",0); setProperty("hoverState",0);
style()->unpolish(this); style()->unpolish(this);
style()->polish(this); style()->polish(this);
......
...@@ -3,6 +3,7 @@ ...@@ -3,6 +3,7 @@
#include <QComboBox> #include <QComboBox>
#include "StyledDropShadowEffect.h"
/** @brief QComboBox with changing downArrow when hover on control. /** @brief QComboBox with changing downArrow when hover on control.
...@@ -20,9 +21,12 @@ class CustomComboBox : public QComboBox ...@@ -20,9 +21,12 @@ class CustomComboBox : public QComboBox
Q_OBJECT Q_OBJECT
public: public:
CustomComboBox(QWidget *parent = Q_NULLPTR); CustomComboBox(QWidget *parent = Q_NULLPTR);
void setObjectName(const QString &name);
protected: protected:
void enterEvent(QEvent *event); void enterEvent(QEvent *event);
void leaveEvent(QEvent *event); void leaveEvent(QEvent *event);
private:
StyledDropShadowEffect *m_styledshadow;
}; };
#endif // CUSTOMCOMBOBOX_H #endif // CUSTOMCOMBOBOX_H
#include "StyledDropShadowEffect.h" #include "StyledDropShadowEffect.h"
#include "AppStyleSheetHandler.h" #include "AppStyleSheetHandler.h"
#include "Utils.h" #include "Utils.h"
#include <QWidget>
/** @brief constructor. Update style
* @param a_parent object parent
*/
StyledDropShadowEffect::StyledDropShadowEffect(QObject *a_parent /*= Q_NULLPTR*/) StyledDropShadowEffect::StyledDropShadowEffect(QObject *a_parent /*= Q_NULLPTR*/)
:QGraphicsDropShadowEffect(a_parent) :QGraphicsDropShadowEffect(a_parent)
{ {
this->updateStyle(); updateStyleProperties();
} }
/** @brief get stylesheet from app and update shadow style ///@details Collecting data from css
*/ void StyledDropShadowEffect::updateStyleProperties()
void StyledDropShadowEffect::updateStyle()
{ {
StyleSheatSearchPar searchPar; StyleSheatSearchPar searchPar;
searchPar.widgetName = "#" + parent()->objectName(); searchPar.widgetName = "#" + parent()->objectName();
searchPar.subcontrol = "shadow"; searchPar.subcontrol = "shadow";
setDataShadowProperties(AppStyleSheetHandler::getWidgetStyleSheet(searchPar),defaultShadow);
QString stylesheet = AppStyleSheetHandler::getWidgetStyleSheet(searchPar); updateStyle(DEFAULT_SHADOW);
searchPar.pseudoClass = "hover";
setDataShadowProperties(AppStyleSheetHandler::getWidgetStyleSheet(searchPar),hoverShadow);
}
///@details Setting and setting the default shadow
void StyledDropShadowEffect::updateStyle(StyleShedow a_style)
{
switch (a_style)
{
case DEFAULT_SHADOW:setShadowProperties(defaultShadow);break;
case HOVER_SHADOW:setShadowProperties(hoverShadow);break;
default:break;
}
}
///@details Saving data to a shadow structure
/// @param a_property String with settings from css.
/// @param data Data structure with shadow settings.
void StyledDropShadowEffect::setDataShadowProperties(const QString &stylesheet, ShadowProperties &data)
{
//Color: //Color:
QString colorStr = AppStyleSheetHandler::getValueFromStylesheet(stylesheet, "color"); QString colorStr = AppStyleSheetHandler::getValueFromStylesheet(stylesheet, "color");
if (colorStr.isEmpty()) if (colorStr.isEmpty())
this->setColor(QColor(0,0,0,0)); data.color = QColor(0,0,0,0);
else else
this->setColor(Utils::toColor(colorStr)); data.color = Utils::toColor(colorStr);
data.blur = Utils::toIntValue(AppStyleSheetHandler::getValueFromStylesheet(stylesheet, "blur"));
int blur = Utils::toIntValue(AppStyleSheetHandler::getValueFromStylesheet(stylesheet, "blur"));
this->setBlurRadius(blur);
//Offset: //Offset:
int x = Utils::toIntValue(AppStyleSheetHandler::getValueFromStylesheet(stylesheet, "x")); data.x = Utils::toIntValue(AppStyleSheetHandler::getValueFromStylesheet(stylesheet, "x"));
int y = Utils::toIntValue(AppStyleSheetHandler::getValueFromStylesheet(stylesheet, "y")); data.y = Utils::toIntValue(AppStyleSheetHandler::getValueFromStylesheet(stylesheet, "y"));
}
this->setOffset(x, y); ///@details Set shadow options
/// @param data Data structure with shadow settings.
void StyledDropShadowEffect::setShadowProperties(ShadowProperties &data)
{
this->setColor(data.color);
this->setBlurRadius(data.blur);
this->setOffset(data.x, data.y);
} }
...@@ -16,12 +16,38 @@ ...@@ -16,12 +16,38 @@
*>} *>}
* @todo Is searching style in comments also! * @todo Is searching style in comments also!
*/ */
///@details Structure with shadow settings
struct ShadowProperties
{
int x;
int y;
int blur;
QColor color;
};
enum StyleShedow{DEFAULT_SHADOW,HOVER_SHADOW};
class StyledDropShadowEffect : public QGraphicsDropShadowEffect class StyledDropShadowEffect : public QGraphicsDropShadowEffect
{ {
public: public:
StyledDropShadowEffect(QObject *a_parent = Q_NULLPTR); StyledDropShadowEffect(QObject *a_parent = Q_NULLPTR);
///@details Setting the shadow
void updateStyle(); void updateStyle(StyleShedow a_style);
///@details Collecting data from css
void updateStyleProperties();
private:
///@details Saving data to a shadow structure
/// @param a_property String with settings from css.
/// @param data Data structure with shadow settings.
void setDataShadowProperties(const QString &a_property, ShadowProperties &data);
///@details Set shadow options
/// @param data Data structure with shadow settings.
void setShadowProperties(ShadowProperties &data);
///@details Default Shadow Data
ShadowProperties defaultShadow;
///@details Hover Shadow Data
ShadowProperties hoverShadow;
}; };
#endif // STYLEDDROPSHADOWEFFECT_H #endif // STYLEDDROPSHADOWEFFECT_H
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment