diff --git a/apps/opencs/model/settings/setting.cpp b/apps/opencs/model/settings/setting.cpp index 9e1b497b1..c29b0e2dd 100644 --- a/apps/opencs/model/settings/setting.cpp +++ b/apps/opencs/model/settings/setting.cpp @@ -205,6 +205,16 @@ QString CSMSettings::Setting::section() const return property (Property_Section).at(0); } +void CSMSettings::Setting::setStyleSheet (const QString &value) +{ + setProperty (Property_StyleSheet, value); +} + +QString CSMSettings::Setting::styleSheet() const +{ + return property (Property_StyleSheet).at(0); +} + void CSMSettings::Setting::setPrefix (const QString &value) { setProperty (Property_Prefix, value); diff --git a/apps/opencs/model/settings/setting.hpp b/apps/opencs/model/settings/setting.hpp index ed897e591..b8c72c4bc 100644 --- a/apps/opencs/model/settings/setting.hpp +++ b/apps/opencs/model/settings/setting.hpp @@ -83,6 +83,9 @@ namespace CSMSettings void setSection (const QString &value); QString section() const; + void setStyleSheet (const QString &value); + QString styleSheet() const; + void setPrefix (const QString &value); QString prefix() const; diff --git a/apps/opencs/model/settings/support.hpp b/apps/opencs/model/settings/support.hpp index 40db648dc..8c82b17a6 100644 --- a/apps/opencs/model/settings/support.hpp +++ b/apps/opencs/model/settings/support.hpp @@ -36,12 +36,13 @@ namespace CSMSettings Property_TicksAbove = 20, Property_TicksBelow = 21, Property_Section = 22, + Property_StyleSheet = 23, //Stringlists should always be the last items - Property_DefaultValues = 23, - Property_DeclaredValues = 24, - Property_DefinedValues = 25, - Property_Proxies = 26 + Property_DefaultValues = 24, + Property_DeclaredValues = 25, + Property_DefinedValues = 26, + Property_Proxies = 27 }; ///Basic setting widget types. @@ -107,7 +108,7 @@ namespace CSMSettings "is_multi_line", "widget_width", "view_row", "view_column", "delimiter", "is_serializable","column_span", "row_span", "minimum", "maximum", "special_value_text", "prefix", "suffix", "single_step", "wrapping", - "tick_interval", "ticks_above", "ticks_below", "section", + "tick_interval", "ticks_above", "ticks_below", "section", "stylesheet", "defaults", "declarations", "definitions", "proxies" }; @@ -137,6 +138,7 @@ namespace CSMSettings "false", //ticks above "true", //ticks below "", //Section + "", //StyleSheet "", //default values "", //declared values "", //defined values diff --git a/apps/opencs/model/settings/usersettings.cpp b/apps/opencs/model/settings/usersettings.cpp index 919e3dd98..35c19a176 100644 --- a/apps/opencs/model/settings/usersettings.cpp +++ b/apps/opencs/model/settings/usersettings.cpp @@ -66,6 +66,7 @@ void UserSettings::buildSettingModelDefaults() fog->setSpecialValueText("Enable Fog"); fog->setWidgetWidth(15); fog->setColumnSpan (2); + fog->setStyleSheet ("QGroupBox { border: 0px; }"); fog->setViewLocation(1, 1); Setting *shadows = createSetting (Type_CheckBox, page, "shadows"); @@ -75,6 +76,7 @@ void UserSettings::buildSettingModelDefaults() shadows->setSpecialValueText("Enable Shadows"); shadows->setWidgetWidth(15); //shadows->setColumnSpan (2); + shadows->setStyleSheet ("QGroupBox { border: 0px; }"); shadows->setViewLocation(2, 1); Setting *shadows_pssm = createSetting (Type_CheckBox, page, "shadows_pssm"); @@ -84,6 +86,7 @@ void UserSettings::buildSettingModelDefaults() shadows_pssm->setSpecialValueText("Enable PSSM Shadows"); shadows_pssm->setWidgetWidth(15); //shadows_pssm->setColumnSpan (2); + shadows_pssm->setStyleSheet ("QGroupBox { border: 0px; }"); shadows_pssm->setViewLocation(3, 1); // FIXME: add option to put label elsewhere (i.e. no frame text) @@ -93,7 +96,7 @@ void UserSettings::buildSettingModelDefaults() numLights->setColumnSpan (2); numLights->setMinimum (0); numLights->setMaximum (100); // FIXME: not sure what the max value should be - numLights->setWidgetWidth (15); + numLights->setWidgetWidth (10); numLights->setSpecialValueText ("Nothing!"); // text to display when value is 0 numLights->setViewLocation(4, 1); @@ -104,6 +107,7 @@ void UserSettings::buildSettingModelDefaults() simpleWater->setSpecialValueText("Enable Simple Water"); simpleWater->setWidgetWidth(15); simpleWater->setColumnSpan (2); + simpleWater->setStyleSheet ("QGroupBox { border: 0px; }"); simpleWater->setViewLocation(2, 4); Setting *waterEnabled = createSetting (Type_DoubleSpinBox, page, "waterEnabled"); @@ -112,7 +116,7 @@ void UserSettings::buildSettingModelDefaults() //waterEnabled->setColumnSpan (2); waterEnabled->setMinimum (0); waterEnabled->setMaximum (100.00); // FIXME: not sure what the max value should be - waterEnabled->setWidgetWidth (15); + waterEnabled->setWidgetWidth (10); waterEnabled->setViewLocation(3, 4); Setting *waterLevel = createSetting (Type_DoubleSpinBox, page, "waterLevel"); @@ -121,7 +125,7 @@ void UserSettings::buildSettingModelDefaults() //waterLevel->setColumnSpan (2); waterLevel->setMinimum (0); waterLevel->setMaximum (100.00); // FIXME: not sure what the max value should be - waterLevel->setWidgetWidth (15); + waterLevel->setWidgetWidth (10); waterLevel->setViewLocation(4, 4); Setting *waterTimer = createSetting (Type_DoubleSpinBox, page, "waterTimer"); @@ -130,9 +134,17 @@ void UserSettings::buildSettingModelDefaults() //waterTimer->setColumnSpan (2); waterTimer->setMinimum (0); waterTimer->setMaximum (100.00); // FIXME: not sure what the max value should be - waterTimer->setWidgetWidth (15); + waterTimer->setWidgetWidth (10); waterTimer->setViewLocation(5, 4); + Setting *text = createSetting (Type_Undefined, page, "text"); + text->setSpecialValueText("This is a test"); // hack to place text labels + text->setEditorSetting(false); + text->setSerializable (false); + //text->setColumnSpan (1); + text->setWidgetWidth (15); + text->setViewLocation(5, 1); + #if 0 sh::Factory::getInstance().setGlobalSetting ("shadows_pssm", "false"); diff --git a/apps/opencs/view/settings/frame.cpp b/apps/opencs/view/settings/frame.cpp index 019024776..39aafe652 100644 --- a/apps/opencs/view/settings/frame.cpp +++ b/apps/opencs/view/settings/frame.cpp @@ -14,7 +14,11 @@ CSVSettings::Frame::Frame (bool isVisible, const QString &title, mVisibleBoxStyle = styleSheet(); if (!isVisible) + { + // must be Page, not a View setStyleSheet (sInvisibleBoxStyle); + mLayout->setContentsMargins(10, 15, 10, 15); + } setLayout (mLayout); } diff --git a/apps/opencs/view/settings/page.cpp b/apps/opencs/view/settings/page.cpp index afd4bff5e..ed4cdd6bc 100644 --- a/apps/opencs/view/settings/page.cpp +++ b/apps/opencs/view/settings/page.cpp @@ -1,4 +1,7 @@ #include "page.hpp" + +#include + #include "view.hpp" #include "booleanview.hpp" #include "textview.hpp" @@ -38,7 +41,18 @@ void CSVSettings::Page::setupViews void CSVSettings::Page::addView (CSMSettings::Setting *setting) { if (setting->viewType() == ViewType_Undefined) - return; + { + if(setting->specialValueText() != "") + { + // hack to put a label + addWidget(new QLabel(setting->specialValueText()), + setting->viewRow(), setting->viewColumn(), + setting->rowSpan(), setting->columnSpan()); + return; + } + else + return; + } View *view = mViewFactories[setting->viewType()]->createView(setting, this); diff --git a/apps/opencs/view/settings/rangeview.cpp b/apps/opencs/view/settings/rangeview.cpp index 8ae6caca0..606ad4939 100644 --- a/apps/opencs/view/settings/rangeview.cpp +++ b/apps/opencs/view/settings/rangeview.cpp @@ -127,6 +127,7 @@ void CSVSettings::RangeView::buildSpinBox (CSMSettings::Setting *setting) mRangeWidget->setProperty ("prefix", setting->prefix()); mRangeWidget->setProperty ("suffix", setting->suffix()); mRangeWidget->setProperty ("wrapping", setting->wrapping()); + dynamic_cast (mRangeWidget)->setAlignment(Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter); } diff --git a/apps/opencs/view/settings/view.cpp b/apps/opencs/view/settings/view.cpp index 69109e2b3..f95bb5c03 100644 --- a/apps/opencs/view/settings/view.cpp +++ b/apps/opencs/view/settings/view.cpp @@ -22,6 +22,9 @@ CSVSettings::View::View(CSMSettings::Setting *setting, setObjectName (setting->name()); buildView(); buildModel (setting); + // apply stylesheet to view's frame if exists + if(setting->styleSheet() != "") + Frame::setStyleSheet (setting->styleSheet()); } void CSVSettings::View::buildModel (const CSMSettings::Setting *setting)