Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
50 changes: 50 additions & 0 deletions src/appearance.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
#include "find-themes.h"
#include "macros.h"
#include "settings.h"
#include "pair.h"
#include "./ui_appearance.h"

Appearance::Appearance(QWidget *parent) : QWidget(parent), ui(new Ui::pageAppearance)
Expand All @@ -23,20 +24,69 @@ void Appearance::activate()

/* Corner Radius */
ui->cornerRadius->setValue(getInt("/labwc_config/theme/cornerRadius"));
ui->cornerRadius->setToolTip(tr("Radius of server side decoration top corners"));

/* Drop Shadows */
ui->dropShadows->setChecked(getBool("/labwc_config/theme/dropShadows"));
ui->dropShadows->setToolTip(tr("Render drop-shadows behind windows"));

/* Drop Shadows On Tiled */
ui->dropShadowsOnTiled->setChecked(getBool("/labwc_config/theme/dropShadowsOnTiled"));
ui->dropShadowsOnTiled->setToolTip(tr("Render drop-shadows behind tiled windows"));

// Disable it when Drop Shadows is unchecked
ui->dropShadowsOnTiled->setEnabled(ui->dropShadows->isChecked());
connect(ui->dropShadows, &QCheckBox::toggled, ui->dropShadowsOnTiled, &QWidget::setEnabled);

/* Icon Theme */
QStringList themes = findIconThemes(LAB_ICON_THEME_TYPE_ICON);
ui->iconTheme->addItems(themes);
ui->iconTheme->setCurrentIndex(themes.indexOf(getStr("/labwc_config/theme/icon")));

/* Decoration */
ui->decoration->clear(); // remove 2 empty values created for some reason
ui->decoration->setToolTip(tr("Specify decorations for xdg-shell windows"));

QVector<QSharedPointer<Pair>> decorations;
decorations.append(QSharedPointer<Pair>(new Pair("server", tr("Server"))));
decorations.append(QSharedPointer<Pair>(new Pair("client", tr("Client"))));

QString current_decoration = getStr("/labwc_config/core/decoration");
int decoration_index = -1;
foreach (auto decoration, decorations) {
ui->decoration->addItem(decoration.get()->description(), QVariant(decoration.get()->value()));
++decoration_index;
if (current_decoration == decoration.get()->value()) {
ui->decoration->setCurrentIndex(decoration_index);
}
}

/* Maximized Decoration */
ui->maximizedDecoration->clear(); // remove 2 empty values created for some reason
ui->maximizedDecoration->setToolTip(tr("Specify if server side decorations are shown for maximized windows."));

QVector<QSharedPointer<Pair>> maximized_decorations;
maximized_decorations.append(QSharedPointer<Pair>(new Pair("titlebar", tr("Titlebar"))));
maximized_decorations.append(QSharedPointer<Pair>(new Pair("none", tr("None"))));

QString current_maximized_decoration = getStr("/labwc_config/theme/maximizedDecoration");
int maximized_decoration_index = -1;
foreach (auto maximized_decoration, maximized_decorations) {
ui->maximizedDecoration->addItem(maximized_decoration.get()->description(), QVariant(maximized_decoration.get()->value()));
++maximized_decoration_index;
if (current_maximized_decoration == maximized_decoration.get()->value()) {
ui->maximizedDecoration->setCurrentIndex(maximized_decoration_index);
}
}
}

void Appearance::onApply()
{
setInt("/labwc_config/theme/cornerRadius", ui->cornerRadius->value());
setStr("/labwc_config/theme/name", TEXT(ui->openboxTheme));
setBool("/labwc_config/theme/dropShadows", ui->dropShadows->isChecked());
setBool("/labwc_config/theme/dropShadowsOnTiled", ui->dropShadowsOnTiled->isChecked());
setStr("/labwc_config/theme/icon", TEXT(ui->iconTheme));
setStr("/labwc_config/core/decoration", DATA(ui->decoration));
setStr("/labwc_config/theme/maximizedDecoration", DATA(ui->maximizedDecoration));
}
271 changes: 204 additions & 67 deletions src/appearance.ui
Original file line number Diff line number Diff line change
Expand Up @@ -6,76 +6,213 @@
<rect>
<x>0</x>
<y>0</y>
<width>232</width>
<height>153</height>
<width>581</width>
<height>596</height>
</rect>
</property>
<layout class="QFormLayout" name="layPage1">
<property name="leftMargin">
<number>6</number>
<widget class="QWidget" name="">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>659</width>
<height>287</height>
</rect>
</property>
<property name="topMargin">
<number>6</number>
</property>
<property name="rightMargin">
<number>6</number>
</property>
<property name="bottomMargin">
<number>6</number>
</property>
<item row="0" column="0">
<widget class="QLabel" name="label">
<property name="text">
<string>Labwc Theme</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QComboBox" name="openboxTheme"/>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_2">
<property name="text">
<string>Corner Radius</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QSpinBox" name="cornerRadius">
<property name="maximum">
<number>16</number>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_3">
<property name="text">
<string>Drop Shadows</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QCheckBox" name="dropShadows">
<property name="minimumSize">
<size>
<width>0</width>
<height>33</height>
</size>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label_1">
<property name="text">
<string>Icon Theme</string>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QComboBox" name="iconTheme"/>
</item>
</layout>
<layout class="QGridLayout" name="gridLayout">
<!-- Row 0 -->
<item row="0" column="0">
<widget class="QLabel" name="label">
<property name="text">
<string>Labwc Theme</string>
</property>
</widget>
</item>
<item row="0" column="3">
<widget class="QComboBox" name="openboxTheme"/>
</item>
<item row="0" column="5">
<spacer name="horizontalSpacer_8">
<property name="orientation">
<enum>Qt::Orientation::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>118</width>
<height>20</height>
</size>
</property>
</spacer>
</item>

<!-- Row 1 -->
<item row="1" column="0">
<widget class="QLabel" name="label_1">
<property name="text">
<string>Icon Theme</string>
</property>
</widget>
</item>
<item row="1" column="3">
<widget class="QComboBox" name="iconTheme"/>
</item>
<item row="1" column="4" colspan="2">
<spacer name="horizontalSpacer_9">
<property name="orientation">
<enum>Qt::Orientation::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>118</width>
<height>20</height>
</size>
</property>
</spacer>
</item>

<!-- Row 2 -->
<item row="2" column="0" colspan="2">
<widget class="QCheckBox" name="dropShadows">
<property name="text">
<string>Enable shadows</string>
</property>
</widget>
</item>
<item row="2" column="2" colspan="3">
<widget class="QCheckBox" name="dropShadowsOnTiled">
<property name="text">
<string>Enable on tiled windows</string>
</property>
</widget>
</item>
<item row="2" column="5">
<spacer name="horizontalSpacer_11">
<property name="orientation">
<enum>Qt::Orientation::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>118</width>
<height>20</height>
</size>
</property>
</spacer>
</item>

<!-- Row 3 -->
<item row="3" column="0">
<widget class="QLabel" name="label_2">
<property name="text">
<string>Corner Radius</string>
</property>
</widget>
</item>
<item row="3" column="1" colspan="2">
<widget class="QSpinBox" name="cornerRadius"/>
</item>
<item row="3" column="3" colspan="3">
<spacer name="horizontalSpacer_6">
<property name="orientation">
<enum>Qt::Orientation::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>418</width>
<height>20</height>
</size>
</property>
</spacer>
</item>

<!-- Row 4 -->
<item row="4" column="0">
<widget class="QLabel" name="label_5">
<property name="text">
<string>Decoration</string>
</property>
</widget>
</item>
<item row="4" column="3">
<widget class="QComboBox" name="decoration">
<item>
<property name="text">
<string>Server</string>
</property>
</item>
<item>
<property name="text">
<string>Client</string>
</property>
</item>
</widget>
</item>
<item row="4" column="4" colspan="2">
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Orientation::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>188</width>
<height>20</height>
</size>
</property>
</spacer>
</item>

<!-- Row 5 -->
<item row="5" column="0" colspan="3">
<widget class="QLabel" name="label_3">
<property name="text">
<string>Maximized Decoration</string>
</property>
</widget>
</item>
<item row="5" column="3">
<widget class="QComboBox" name="maximizedDecoration">
<item>
<property name="text">
<string>Titlebar</string>
</property>
</item>
<item>
<property name="text">
<string>None</string>
</property>
</item>
</widget>
</item>
<item row="5" column="4" colspan="2">
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Orientation::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>198</width>
<height>20</height>
</size>
</property>
</spacer>
</item>

<!-- Row 6 -->
<item row="6" column="3">
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Orientation::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>13</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</widget>
<resources/>
<connections/>
</ui>
</ui>
8 changes: 8 additions & 0 deletions src/settings.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,16 @@ void initSettings(std::vector<std::shared_ptr<Setting>> *settings)
LAB_FILE_TYPE_RCXML, LAB_VALUE_TYPE_INT, 8));
settings->push_back(std::make_shared<Setting>("/labwc_config/theme/dropShadows",
LAB_FILE_TYPE_RCXML, LAB_VALUE_TYPE_BOOL, 0));
settings->push_back(std::make_shared<Setting>("/labwc_config/theme/dropShadowsOnTiled",
LAB_FILE_TYPE_RCXML, LAB_VALUE_TYPE_BOOL, 0));
settings->push_back(std::make_shared<Setting>("/labwc_config/theme/icon", LAB_FILE_TYPE_RCXML,
LAB_VALUE_TYPE_STRING, ""));
settings->push_back(std::make_shared<Setting>("/labwc_config/theme/maximizedDecoration",
LAB_FILE_TYPE_RCXML, LAB_VALUE_TYPE_STRING,
"titlebar"));
settings->push_back(std::make_shared<Setting>("/labwc_config/core/decoration",
LAB_FILE_TYPE_RCXML, LAB_VALUE_TYPE_STRING,
"Server"));

// Behaviour
settings->push_back(std::make_shared<Setting>("/labwc_config/placement/policy",
Expand Down