Cockatrice 2026-10-19-Development-3.1.2-beta.2
A virtual tabletop for multiplayer card games
Loading...
Searching...
No Matches
settings_view.h
Go to the documentation of this file.
1
6#ifndef SETTINGS_VIEW_H
7#define SETTINGS_VIEW_H
8
9#include <QList>
10#include <QString>
11#include <QStringList>
12#include <QWidget>
13#include <qtmetamacros.h>
14
15class QModelIndex;
16class QObject;
17class QEvent;
18
19class QStackedWidget;
20class QTreeWidget;
21class QTreeWidgetItem;
22class QListView;
23class QLineEdit;
27
34class SettingsView : public QWidget
35{
36 Q_OBJECT
37public:
56
57 explicit SettingsView(QWidget *parent = nullptr);
58 void setTab(int index);
60
61private slots:
62 void onTabClicked(int index);
63 void onSearchTextChanged(const QString &text);
64 void onSearchResultClicked(const QModelIndex &index);
65
66private:
67 // UI elements
68 QLineEdit *searchEdit;
69 QTreeWidget *navTree;
72 QStackedWidget *pagesWidget;
73 QListView *searchResultsView;
74 QWidget *pagesContainer;
75
76 // Data
82 QWidget *isolatedSection = nullptr;
83 bool pressWasOnCurrentItem = false;
84
85 void setupUi();
86 void setupNavTree();
87 void buildSearchIndex();
88 void switchToTabMode();
89 void switchToSearchMode();
90 void navigateToSearchResult(const QModelIndex &index);
91 void navigateToSection(int pageIndex, QWidget *sectionWidget);
92 void setActiveTab(int index);
93 void switchPageContent(int index);
94 void applySectionFilter(int pageIndex, QWidget *sectionWidget);
95 void selectSectionRow(int pageIndex, QWidget *sectionWidget);
96 QTreeWidgetItem *findSectionItem(int pageIndex, QWidget *sectionWidget) const;
97 static void flashWidget(QWidget *widget);
98 static void scrollToAndFlash(QWidget *target);
99 static QStringList translatedPageNames();
100 static QStringList translatedGroupNames();
101
102 void retranslateUi();
103 void retranslateNavNames();
104
105protected:
106 bool eventFilter(QObject *watched, QEvent *event) override;
107};
108
109#endif // SETTINGS_VIEW_H
Definition abstract_settings_page.h:25
Definition remote_connection_controller.h:20
Custom paint delegate for settings search result items.
Definition settings_search_delegate.h:25
List model providing filtered, ranked search results.
Definition settings_search_model.h:45
static void flashWidget(QWidget *widget)
Definition settings_view.cpp:398
void setupUi()
Definition settings_view.cpp:131
QListView * searchResultsView
Search results list view.
Definition settings_view.h:73
void onSearchResultClicked(const QModelIndex &index)
Definition settings_view.cpp:477
bool searchActive
Whether search mode is active.
Definition settings_view.h:81
QList< QTreeWidgetItem * > pageItems
Page rows, indexed by SettingsPage.
Definition settings_view.h:71
QLineEdit * searchEdit
Search bar for filtering settings.
Definition settings_view.h:68
QTreeWidgetItem * findSectionItem(int pageIndex, QWidget *sectionWidget) const
Finds the nav row for a section widget.
Definition settings_view.cpp:568
void buildSearchIndex()
Definition settings_view.cpp:335
void setActiveTab(int index)
Definition settings_view.cpp:368
QWidget * pagesContainer
Container stacking pages and search results.
Definition settings_view.h:74
void applySectionFilter(int pageIndex, QWidget *sectionWidget)
Shows only the given section of a page, hiding its siblings.
Definition settings_view.cpp:591
bool eventFilter(QObject *watched, QEvent *event) override
Definition settings_view.cpp:651
void onTabClicked(int index)
Definition settings_view.cpp:356
QTreeWidget * navTree
Grouped navigation tree for the pages.
Definition settings_view.h:69
SettingsView(QWidget *parent=nullptr)
Definition settings_view.cpp:121
void setupNavTree()
Definition settings_view.cpp:245
bool pressWasOnCurrentItem
True when the mouse press started on the already-current item.
Definition settings_view.h:83
void switchPageContent(int index)
Definition settings_view.cpp:381
void navigateToSearchResult(const QModelIndex &index)
Definition settings_view.cpp:482
void selectSectionRow(int pageIndex, QWidget *sectionWidget)
Selects the nav row for a section, expanding its page row.
Definition settings_view.cpp:544
void retranslateUi()
Definition settings_view.cpp:705
static void scrollToAndFlash(QWidget *target)
Definition settings_view.cpp:623
QWidget * isolatedSection
Isolated section group box, or nullptr for full pages.
Definition settings_view.h:82
AbstractSettingsPage * page(SettingsPage which) const
Definition settings_view.cpp:646
void retranslateNavNames()
Definition settings_view.cpp:730
QList< AbstractSettingsPage * > pages
All settings page instances.
Definition settings_view.h:77
static QStringList translatedGroupNames()
Definition settings_view.cpp:757
void onSearchTextChanged(const QString &text)
Definition settings_view.cpp:438
QStackedWidget * pagesWidget
Stacked widget containing settings pages.
Definition settings_view.h:72
SettingsSearchModel * searchModel
Model for search results.
Definition settings_view.h:78
void switchToTabMode()
Definition settings_view.cpp:465
QList< QTreeWidgetItem * > groupItems
Group header rows, indexed by group.
Definition settings_view.h:70
static QStringList translatedPageNames()
Definition settings_view.cpp:717
void switchToSearchMode()
Definition settings_view.cpp:454
void setTab(int index)
Definition settings_view.cpp:639
SettingsSearchDelegate * searchDelegate
Delegate for search result rendering.
Definition settings_view.h:79
int currentTabIndex
Currently active tab index.
Definition settings_view.h:80
SettingsPage
Page order in the navigation, matching the order pages are added in setupUi().
Definition settings_view.h:45
@ NumPages
Definition settings_view.h:54
@ SoundPage
Definition settings_view.h:52
@ DeckEditorPage
Definition settings_view.h:49
@ UserInterfacePage
Definition settings_view.h:48
@ MessagesPage
Definition settings_view.h:51
@ ShortcutsPage
Definition settings_view.h:53
@ GeneralPage
Definition settings_view.h:46
@ StoragePage
Definition settings_view.h:50
@ AppearancePage
Definition settings_view.h:47
void navigateToSection(int pageIndex, QWidget *sectionWidget)
Definition settings_view.cpp:511