OpenRGB/qt/ManualDevicesSettingsPage/ManualDevicesSettingsPage.h
2025-06-30 10:46:55 -05:00

61 lines
1.9 KiB
C++

/*-----------------------------------------------------------------*\
| ManualDevicesSettingsPage.h |
| |
| User interface for OpenRGB Manually Added Devices settings page |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*-----------------------------------------------------------------*/
#pragma once
#include "BaseManualDeviceEntry.h"
#include "ManualDevicesTypeManager.h"
#include "nlohmann/json.hpp"
#include <QWidget>
#include <QMenu>
#include <QListWidgetItem>
using json = nlohmann::json;
namespace Ui
{
class ManualDevicesSettingsPage;
}
class ManualDevicesSettingsPage : public QWidget
{
Q_OBJECT
public:
explicit ManualDevicesSettingsPage(QWidget *parent = nullptr);
~ManualDevicesSettingsPage();
public slots:
void reloadList();
void reloadMenu();
private slots:
void onTextEditChanged(); // Slot connected to all text edits in all entries; for validation & marking dirty changes
void onAddDeviceItemSelected(QAction* action);
void changeEvent(QEvent *event);
void on_removeDeviceButton_clicked();
void on_deviceList_itemSelectionChanged();
void on_ActionSaveNoRescan_triggered();
void on_ActionSaveAndRescan_triggered();
private:
Ui::ManualDevicesSettingsPage* ui;
std::vector<BaseManualDeviceEntry*> entries;
QMenu* addDeviceMenu;
bool unsavedChanges;
QListWidgetItem* addEntry(BaseManualDeviceEntry* entry);
void addEntries(const ManualDeviceTypeBlock&);
void clearList();
void saveSettings();
void setUnsavedChanges(bool v);
bool checkValidToSave();
};