#ifndef ORBITHUB_PROFILES_WINDOW_H #define ORBITHUB_PROFILES_WINDOW_H #include "profile_repository.h" #include #include #include #include #include #include #include #include class QListWidget; class QListWidgetItem; class QLineEdit; class QPushButton; class SessionWindow; class ProfilesWindow : public QMainWindow { Q_OBJECT public: explicit ProfilesWindow(QWidget* parent = nullptr); ~ProfilesWindow() override; private: QLineEdit* m_searchBox; QListWidget* m_profilesList; QPushButton* m_newButton; QPushButton* m_editButton; QPushButton* m_deleteButton; std::vector> m_sessionWindows; std::unique_ptr m_repository; std::unordered_map m_profileCache; void setupUi(); void loadProfiles(const QString& query = QString()); std::optional selectedProfile() const; void createProfile(); void editSelectedProfile(); void deleteSelectedProfile(); void openSessionForItem(QListWidgetItem* item); }; #endif