Files
orbithub/src/profiles_window.h

50 lines
1.1 KiB
C++

#ifndef ORBITHUB_PROFILES_WINDOW_H
#define ORBITHUB_PROFILES_WINDOW_H
#include "profile_repository.h"
#include <QMainWindow>
#include <QString>
#include <QtGlobal>
#include <memory>
#include <optional>
#include <QPointer>
#include <unordered_map>
#include <vector>
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<QPointer<SessionWindow>> m_sessionWindows;
std::unique_ptr<ProfileRepository> m_repository;
std::unordered_map<qint64, Profile> m_profileCache;
void setupUi();
void loadProfiles(const QString& query = QString());
std::optional<Profile> selectedProfile() const;
void createProfile();
void editSelectedProfile();
void deleteSelectedProfile();
void openSessionForItem(QListWidgetItem* item);
};
#endif