Skip to content
Snippets Groups Projects
StyledDropShadowEffect.cpp 2.12 KiB
Newer Older
#include "StyledDropShadowEffect.h"
#include "Utils.h"
konstantin.kukharenko's avatar
konstantin.kukharenko committed
#include <QWidget>

StyledDropShadowEffect::StyledDropShadowEffect(QObject *a_parent /*= Q_NULLPTR*/)
    :QGraphicsDropShadowEffect(a_parent)
{
konstantin.kukharenko's avatar
konstantin.kukharenko committed
    updateStyleProperties();
konstantin.kukharenko's avatar
konstantin.kukharenko committed
///@details Collecting data from css
void StyledDropShadowEffect::updateStyleProperties()
{
    StyleSheatSearchPar searchPar;
    searchPar.widgetName = "#" + parent()->objectName();
    searchPar.subcontrol = "shadow";
konstantin.kukharenko's avatar
konstantin.kukharenko committed
    setDataShadowProperties(AppStyleSheetHandler::getWidgetStyleSheet(searchPar),defaultShadow);
konstantin.kukharenko's avatar
konstantin.kukharenko committed
    updateStyle(DEFAULT_SHADOW);
konstantin.kukharenko's avatar
konstantin.kukharenko committed
    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)
{
    QString colorStr = AppStyleSheetHandler::getValueFromStylesheet(stylesheet, "color");
    if (colorStr.isEmpty())
konstantin.kukharenko's avatar
konstantin.kukharenko committed
        data.color = QColor(0,0,0,0);
konstantin.kukharenko's avatar
konstantin.kukharenko committed
        data.color = Utils::toColor(colorStr);
    data.blur = Utils::toIntValue(AppStyleSheetHandler::getValueFromStylesheet(stylesheet, "blur"));
konstantin.kukharenko's avatar
konstantin.kukharenko committed
    data.x = Utils::toIntValue(AppStyleSheetHandler::getValueFromStylesheet(stylesheet, "x"));
    data.y = Utils::toIntValue(AppStyleSheetHandler::getValueFromStylesheet(stylesheet, "y"));
}
konstantin.kukharenko's avatar
konstantin.kukharenko committed
///@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);