Skip to content

Commit 83743cd

Browse files
committed
behaviour.cpp: translate values in Placement Policy QComboBox
...by providing both text (the translated stuff) and data (the value that we want to go into rc.xml) when calling addItem(). Fixes: #128
1 parent 3673f77 commit 83743cd

File tree

4 files changed

+47
-5
lines changed

4 files changed

+47
-5
lines changed

CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ set(PROJECT_SOURCES
4545
src/settings.cpp src/settings.h
4646
src/xml.cpp src/xml.h
4747
src/find-themes.cpp src/find-themes.h
48+
src/pair.h
4849

4950
src/appearance.cpp src/appearance.h src/appearance.ui
5051
src/behaviour.cpp src/behaviour.h src/behaviour.ui

src/behaviour.cpp

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
#include "behaviour.h"
2+
#include <QVectorIterator>
23
#include "find-themes.h"
34
#include "macros.h"
5+
#include "pair.h"
46
#include "settings.h"
57
#include "./ui_behaviour.h"
68

@@ -17,13 +19,24 @@ Behaviour::~Behaviour()
1719
void Behaviour::activate()
1820
{
1921
/* Placement Policy */
20-
QStringList policies = { "", "Automatic", "Cascade", "Center", "Cursor" };
21-
ui->placementPolicy->addItems(policies);
22-
ui->placementPolicy->setCurrentIndex(
23-
policies.indexOf(getStr("/labwc_config/placement/policy")));
22+
QVector<QSharedPointer<Pair>> policies;
23+
policies.append(QSharedPointer<Pair>(new Pair("automatic", tr("Automatic"))));
24+
policies.append(QSharedPointer<Pair>(new Pair("cascade", tr("Cascade"))));
25+
policies.append(QSharedPointer<Pair>(new Pair("center", tr("Center"))));
26+
policies.append(QSharedPointer<Pair>(new Pair("cursor", tr("Cursor"))));
27+
28+
QString current = getStr("/labwc_config/placement/policy");
29+
int index = -1;
30+
foreach (auto policy, policies) {
31+
ui->placementPolicy->addItem(policy.get()->description(), QVariant(policy.get()->value()));
32+
++index;
33+
if (current == policy.get()->value()) {
34+
ui->placementPolicy->setCurrentIndex(index);
35+
}
36+
}
2437
}
2538

2639
void Behaviour::onApply()
2740
{
28-
setStr("/labwc_config/placement/policy", TEXT(ui->placementPolicy));
41+
setStr("/labwc_config/placement/policy", DATA(ui->placementPolicy));
2942
}

src/macros.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,11 @@
33

44
#define TEXT(widget) widget->currentText().toLatin1().data()
55

6+
/*
7+
* Typically used when a widget like a QComboBox contains translated text
8+
* which obviously would not be very good to feed to rc.xml and we therefore
9+
* need the QVariant userdata instead.
10+
*/
11+
#define DATA(widget) widget->currentData().toString().toLatin1().data()
12+
613
#endif // MACROS_H

src/pair.h

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
#pragma once
2+
#include <QString>
3+
4+
class Pair
5+
{
6+
public:
7+
Pair(QString value, QString description)
8+
{
9+
m_value = value;
10+
m_description = description;
11+
};
12+
~Pair() { };
13+
14+
private:
15+
QString m_value;
16+
QString m_description;
17+
18+
public:
19+
QString value() const { return m_value; }
20+
QString description() const { return m_description; }
21+
};

0 commit comments

Comments
 (0)