JustAnotherDnDGame 0.1.0
Jeu de rôle tactique au d20, vue de dessus, en C++/Qt
Loading...
Searching...
No Matches
LinkPanel.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: 2026 Valentin Eloy
2// SPDX-License-Identifier: GPL-3.0-or-later
3
4#pragma once
5
6#include <QWidget>
7#include <memory>
8#include <optional>
9#include <utility>
10#include <vector>
11
14
19
20class QModelIndex;
21class QPushButton;
22class QStandardItemModel;
23class QTableView;
24
25namespace core {
26class LevelDraft;
27}
28
29namespace Ui {
30class LinkPanel;
31}
32
33namespace hmi {
34
35class Localization;
36
46class LinkPanel : public QWidget {
47 Q_OBJECT
48
49public:
50 explicit LinkPanel(QWidget* parent = nullptr);
51
53 ~LinkPanel() override;
54
56 void refresh(const core::LevelDraft& draft);
57
59 void retranslateUi(const Localization& loc);
60
61signals:
64 void linkSelected(std::optional<std::pair<core::GridPosition, core::GridPosition>> link);
66 void deleteRequested(core::GridPosition targetPosition);
67
68private:
69 void rebuildRows();
70 void onSelectionChanged();
71 void onDeleteClicked();
72
75 std::unique_ptr<Ui::LinkPanel> _ui;
76 QTableView* _table;
77 QStandardItemModel* _model;
78 QPushButton* _deleteButton;
79 std::vector<LinkRow> _rows;
80 const Localization* _loc = nullptr;
81};
82
83} // namespace hmi
Position entière dans la grille d'un niveau (colonne, ligne).
Géométrie et modèle d'affichage des liens de mécanismes (LOT-37), purs et testables.
Niveau mutable en cours d'édition, distinct de Level (immuable, LOT-07).
Definition LevelDraft.h:43
const Localization * _loc
Definition LinkPanel.h:80
void onSelectionChanged()
Definition LinkPanel.cpp:94
QPushButton * _deleteButton
Definition LinkPanel.h:78
void deleteRequested(core::GridPosition targetPosition)
Émis par le bouton « Supprimer » pour la ligne sélectionnée (position de la cible).
std::vector< LinkRow > _rows
Ligne de tableau (index) -> (type, déclencheur, cible).
Definition LinkPanel.h:79
~LinkPanel() override
Hors-ligne : std::unique_ptr<Ui::LinkPanel> porte un type incomplet.
std::unique_ptr< Ui::LinkPanel > _ui
Mise en page issue de LinkPanel.ui (LOT-68) : le C++ ne branche plus que le fonctionnel,...
Definition LinkPanel.h:75
void linkSelected(std::optional< std::pair< core::GridPosition, core::GridPosition > > link)
Émis quand la sélection change : la paire (déclencheur, cible), ou std::nullopt si aucune ligne n'est...
void refresh(const core::LevelDraft &draft)
Reconstruit la liste depuis draft (après toute mutation du brouillon).
Definition LinkPanel.cpp:56
LinkPanel(QWidget *parent=nullptr)
Definition LinkPanel.cpp:33
void rebuildRows()
Definition LinkPanel.cpp:61
void retranslateUi(const Localization &loc)
Applique la langue active (en-têtes de colonnes, libellés de type, bouton).
Definition LinkPanel.cpp:83
QStandardItemModel * _model
Definition LinkPanel.h:77
QTableView * _table
Definition LinkPanel.h:76
void onDeleteClicked()
Definition LinkPanel.cpp:112
Catalogue de traduction (i18n) : associe des clés stables à des chaînes selon la langue active,...
Definition Localization.h:29
Definition AssetThumbnailView.h:26
Espace de noms du moteur et de la logique de jeu.
Definition Bootstrap.h:9
Definition AudioEngine.cpp:15
Position d'une case dans la grille d'un niveau, en coordonnées entières.
Definition GridPosition.h:20