20#ifndef ORES_QT_ADD_ITEM_DIALOG_HPP
21#define ORES_QT_ADD_ITEM_DIALOG_HPP
33#include <boost/uuid/uuid.hpp>
34#include "ores.connections/domain/folder.hpp"
35#include "ores.connections/domain/server_environment.hpp"
36#include "ores.connections/domain/tag.hpp"
37#include "ores.logging/make_logger.hpp"
38#include "ores.qt/ConnectionTypes.hpp"
41class TagSelectorWidget;
44namespace ores::connections::service {
45class connection_manager;
68 inline static std::string_view logger_name =
"ores.qt.add_item_dialog";
70 [[nodiscard]]
static auto& lg() {
72 static auto instance = make_logger(logger_name);
79 QWidget* parent =
nullptr);
83 ItemType itemType()
const {
return itemType_; }
85 void setCreateMode(
bool createMode);
86 bool isCreateMode()
const {
return isCreateMode_; }
91 void setInitialParent(
const std::optional<boost::uuids::uuid>& parentId);
96 void setInitialFolder(
const std::optional<boost::uuids::uuid>& folderId);
97 std::optional<std::string> getPassword()
const;
100 void setTags(
const std::vector<connections::domain::tag>& tags);
101 std::vector<boost::uuids::uuid> getSelectedTagIds()
const;
106 QString itemName()
const;
109 void statusMessage(
const QString& message);
110 void errorMessage(
const QString& message);
111 void folderSaved(
const boost::uuids::uuid&
id,
const QString& name);
112 void connectionSaved(
const boost::uuids::uuid&
id,
const QString& name);
115 void onSaveClicked();
116 void onTestClicked();
117 void onTypeChanged(
int index);
118 void onPasswordChanged();
119 void togglePasswordVisibility();
120 void updateSaveButtonState();
125 void populateFolderCombo();
126 void updateFieldVisibility();
127 bool validateInput();
129 void saveConnection();
135 QAction* saveAction_;
136 QAction* testAction_;
139 QComboBox* typeCombo_;
142 QLineEdit* nameEdit_;
143 QComboBox* folderCombo_;
144 QTextEdit* descriptionEdit_;
147 QLineEdit* hostEdit_;
148 QSpinBox* portSpinBox_;
149 QLineEdit* usernameEdit_;
150 QLineEdit* passwordEdit_;
151 QCheckBox* showPasswordCheckbox_;
157 QLabel* usernameLabel_;
158 QLabel* passwordLabel_;
160 QWidget* passwordWidget_;
163 ItemType itemType_{ItemType::Connection};
164 bool isCreateMode_{
true};
165 bool passwordChanged_{
false};
168 boost::uuids::uuid folderId_;
169 boost::uuids::uuid environmentId_;
Implements logging infrastructure for ORE Studio.
Definition boost_severity.hpp:28
Qt-based graphical user interface for ORE Studio.
Definition AboutDialog.hpp:35
ItemType
Item type selector for the combined add dialog.
Definition AddItemDialog.hpp:53
std::function< QString(const QString &host, int port, const QString &username, const QString &password)> TestConnectionCallback
Callback type for testing connections.
Definition ConnectionTypes.hpp:36
Represents a folder for organizing server connections hierarchically.
Definition folder.hpp:35
Represents a server connection/environment configuration.
Definition server_environment.hpp:39
High-level service for managing server connections.
Definition connection_manager.hpp:48
Utilities for reading environment variables.
Definition environment.hpp:31
Combined modeless dialog for creating and editing folders and connections.
Definition AddItemDialog.hpp:64
Widget for selecting and displaying tags as pill badges.
Definition TagSelectorWidget.hpp:43