Skip to content

Commit ee52ae6

Browse files
authored
PointSymbolEditorWidget: Track symbol role (GH-2381)
Hide oriented-to-north for area symbol fill patterns. This per-subsymbol setting has no effect: Patterns carry a separate property, regardless of pattern type. (Line patterns do not have subsymbols.)
1 parent dd2d832 commit ee52ae6

File tree

5 files changed

+24
-16
lines changed

5 files changed

+24
-16
lines changed

src/gui/symbols/area_symbol_settings.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/*
22
* Copyright 2012, 2013 Thomas Schöps
3-
* Copyright 2012-2017 Kai Pastor
3+
* Copyright 2012-2020, 2025 Kai Pastor
44
*
55
* This file is part of OpenOrienteering.
66
*
@@ -321,7 +321,7 @@ void AreaSymbolSettings::loadPatterns()
321321
pattern_list->addItem(pattern.name);
322322
if (pattern.type == AreaSymbol::FillPattern::PointPattern)
323323
{
324-
auto editor = new PointSymbolEditorWidget(controller, pattern.point, 16);
324+
auto editor = new PointSymbolEditorWidget(controller, pattern.point, PointSymbolEditorWidget::AreaSymbolElement, 16);
325325
connect(editor, &PointSymbolEditorWidget::symbolEdited, this, &SymbolPropertiesWidget::propertiesModified );
326326
addPropertiesGroup(pattern.name, editor);
327327
}
@@ -451,7 +451,7 @@ void AreaSymbolSettings::addPattern(AreaSymbol::FillPattern::Type type)
451451
{
452452
active_pattern->point = new PointSymbol();
453453
active_pattern->point->setRotatable(true);
454-
auto editor = new PointSymbolEditorWidget(controller, active_pattern->point, 16);
454+
auto editor = new PointSymbolEditorWidget(controller, active_pattern->point, PointSymbolEditorWidget::AreaSymbolElement, 16);
455455
connect(editor, &PointSymbolEditorWidget::symbolEdited, this, &SymbolPropertiesWidget::propertiesModified );
456456
if (pattern_list->currentRow() == int(symbol->patterns.size()) - 1)
457457
{

src/gui/symbols/line_symbol_settings.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/*
22
* Copyright 2012, 2013 Thomas Schöps
3-
* Copyright 2012-2019, 2024 Kai Pastor
3+
* Copyright 2012-2019, 2024, 2025 Kai Pastor
44
*
55
* This file is part of OpenOrienteering.
66
*
@@ -327,7 +327,7 @@ LineSymbolSettings::LineSymbolSettings(LineSymbol* symbol, SymbolSettingDialog*
327327
symbol->ensurePointSymbols(tr("Start symbol"), tr("Mid symbol"), tr("End symbol"), tr("Dash symbol"));
328328
for (auto point_symbol : { symbol->getStartSymbol(), symbol->getMidSymbol(), symbol->getEndSymbol(), symbol->getDashSymbol() })
329329
{
330-
point_symbol_editor = new PointSymbolEditorWidget(controller, point_symbol, 16);
330+
point_symbol_editor = new PointSymbolEditorWidget(controller, point_symbol, PointSymbolEditorWidget::LineSymbolElement, 16);
331331
addPropertiesGroup(point_symbol->getName(), point_symbol_editor);
332332
connect(point_symbol_editor, &PointSymbolEditorWidget::symbolEdited, this, &LineSymbolSettings::pointSymbolEdited);
333333
}
@@ -818,7 +818,7 @@ void LineSymbolSettings::reset(Symbol* symbol)
818818
this->symbol->ensurePointSymbols(tr("Start symbol"), tr("Mid symbol"), tr("End symbol"), tr("Dash symbol"));
819819
for (auto point_symbol : { this->symbol->getStartSymbol(), this->symbol->getMidSymbol(), this->symbol->getEndSymbol(), this->symbol->getDashSymbol() })
820820
{
821-
point_symbol_editor = new PointSymbolEditorWidget(controller, point_symbol, 16);
821+
point_symbol_editor = new PointSymbolEditorWidget(controller, point_symbol, PointSymbolEditorWidget::LineSymbolElement, 16);
822822
connect(point_symbol_editor, &PointSymbolEditorWidget::symbolEdited, this, &LineSymbolSettings::pointSymbolEdited);
823823

824824
int index = indexOfPropertiesGroup(point_symbol->getName()); // existing symbol editor

src/gui/symbols/point_symbol_editor_widget.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,9 @@
2424
#include <algorithm>
2525
#include <limits>
2626
// IWYU pragma: no_include <memory>
27+
// IWYU pragma: no_include <vector>
2728

2829
#include <Qt>
29-
#include <QAbstractButton>
3030
#include <QAbstractItemView>
3131
#include <QCheckBox>
3232
#include <QComboBox>
@@ -78,16 +78,15 @@
7878

7979
namespace OpenOrienteering {
8080

81-
PointSymbolEditorWidget::PointSymbolEditorWidget(MapEditorController* controller, PointSymbol* symbol, qreal offset_y, bool permanent_preview, QWidget* parent)
81+
PointSymbolEditorWidget::PointSymbolEditorWidget(MapEditorController* controller, PointSymbol* symbol, SymbolRole role, qreal offset_y, QWidget* parent)
8282
: QWidget(parent)
8383
, symbol(symbol)
8484
, object_origin_coord(0, offset_y)
8585
, offset_y(offset_y)
86+
, map(controller->getMap())
8687
, controller(controller)
87-
, permanent_preview(permanent_preview)
88+
, permanent_preview(role == PrimarySymbol)
8889
{
89-
map = controller->getMap();
90-
9190
if (permanent_preview)
9291
{
9392
midpoint_object = new PointObject(symbol);
@@ -97,6 +96,7 @@ PointSymbolEditorWidget::PointSymbolEditorWidget(MapEditorController* controller
9796

9897
oriented_to_north = new QCheckBox(tr("Always oriented to north (not rotatable)"));
9998
oriented_to_north->setChecked(!symbol->isRotatable());
99+
oriented_to_north->setVisible(role != AreaSymbolElement);
100100

101101
auto* elements_label = Util::Headline::create(tr("Elements"));
102102
element_list = new QListWidget();

src/gui/symbols/point_symbol_editor_widget.h

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,13 +62,21 @@ class PointSymbolEditorWidget : public QWidget
6262
Q_OBJECT
6363
friend class PointSymbolEditorActivity;
6464
public:
65+
/** Describes the role of the symbol to be edited. */
66+
enum SymbolRole {
67+
PrimarySymbol, ///< A primary point symbol
68+
AreaSymbolElement, ///< A symbol used in an area symbol fill pattern
69+
LineSymbolElement, ///< A symbol used for decorating a line symbol
70+
};
71+
6572
/** Construct a new widget.
6673
* @param controller The controller of the preview map
6774
* @param symbol The point symbol to be edited
75+
* @param role The role of the symbol to be edited
6876
* @param offset_y The vertical offset of the point symbol preview/editor from the origin
69-
* @param permanent_preview A flag indicating whether the preview shall be visible even if the editor is not visible
77+
* @param parent Standard QWidget parentship
7078
*/
71-
PointSymbolEditorWidget(MapEditorController* controller, PointSymbol* symbol, qreal offset_y = 0, bool permanent_preview = false, QWidget* parent = 0);
79+
PointSymbolEditorWidget(MapEditorController* controller, PointSymbol* symbol, SymbolRole role = PrimarySymbol, qreal offset_y = 0, QWidget* parent = nullptr);
7280

7381
~PointSymbolEditorWidget() override;
7482

src/gui/symbols/point_symbol_settings.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/*
22
* Copyright 2012, 2013 Thomas Schöps
3-
* Copyright 2012-2017 Kai Pastor
3+
* Copyright 2012-2018, 2025 Kai Pastor
44
*
55
* This file is part of OpenOrienteering.
66
*
@@ -49,7 +49,7 @@ PointSymbolSettings::PointSymbolSettings(PointSymbol* symbol, SymbolSettingDialo
4949
: SymbolPropertiesWidget(symbol, dialog),
5050
symbol(symbol)
5151
{
52-
symbol_editor = new PointSymbolEditorWidget(dialog->getPreviewController(), symbol, 0, true);
52+
symbol_editor = new PointSymbolEditorWidget(dialog->getPreviewController(), symbol);
5353
connect(symbol_editor, &PointSymbolEditorWidget::symbolEdited, this, &SymbolPropertiesWidget::propertiesModified );
5454

5555
layout = new QVBoxLayout();
@@ -81,7 +81,7 @@ void PointSymbolSettings::reset(Symbol* symbol)
8181
layout->removeWidget(symbol_editor);
8282
delete(symbol_editor);
8383

84-
symbol_editor = new PointSymbolEditorWidget(dialog->getPreviewController(), this->symbol, 0, true);
84+
symbol_editor = new PointSymbolEditorWidget(dialog->getPreviewController(), this->symbol);
8585
connect(symbol_editor, &PointSymbolEditorWidget::symbolEdited, this, &SymbolPropertiesWidget::propertiesModified );
8686
layout->addWidget(symbol_editor);
8787
}

0 commit comments

Comments
 (0)