mirror of
https://git.eden-emu.dev/eden-emu/eden
synced 2026-06-29 18:15:52 +02:00
Some genius decided to put the entire MainWindow class into main.h and main.cpp, which is not only horrific practice but also completely destroys clangd beyond repair. Please, just don't do this. (this will probably merge conflict to hell and back) Also, fixes a bunch of issues with Ryujinx save data link: - Paths with spaces would cause mklink to fail - Add support for portable directories - Symlink detection was incorrect sometimes(????) - Some other stuff I'm forgetting Furthermore, when selecting "From Eden" and attempting to save in Ryujinx, Ryujinx would destroy the link for... some reason? So to get around this we just copy the Eden data to Ryujinx then treat it like a "From Ryujinx" op Signed-off-by: crueter <crueter@eden-emu.dev> Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/2929 Reviewed-by: Lizzie <lizzie@eden-emu.dev> Reviewed-by: CamilleLaVey <camillelavey99@gmail.com>
90 lines
2.3 KiB
C++
90 lines
2.3 KiB
C++
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
|
|
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
|
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
|
|
|
#pragma once
|
|
|
|
#include <vector>
|
|
#include <QDialog>
|
|
#include <QList>
|
|
#include "core/frontend/applets/profile_select.h"
|
|
|
|
class ControllerNavigation;
|
|
class MainWindow;
|
|
class QDialogButtonBox;
|
|
class QGraphicsScene;
|
|
class QLabel;
|
|
class QScrollArea;
|
|
class QStandardItem;
|
|
class QStandardItemModel;
|
|
class QTreeView;
|
|
class QVBoxLayout;
|
|
|
|
namespace Core {
|
|
class System;
|
|
}
|
|
|
|
namespace Service::Account {
|
|
class ProfileManager;
|
|
}
|
|
|
|
class QtProfileSelectionDialog final : public QDialog {
|
|
Q_OBJECT
|
|
|
|
public:
|
|
explicit QtProfileSelectionDialog(Core::System& system, QWidget* parent,
|
|
const Core::Frontend::ProfileSelectParameters& parameters);
|
|
~QtProfileSelectionDialog() override;
|
|
|
|
int exec() override;
|
|
void accept() override;
|
|
void reject() override;
|
|
|
|
int GetIndex() const;
|
|
|
|
private:
|
|
void SelectUser(const QModelIndex& index);
|
|
|
|
void SetWindowTitle(const Core::Frontend::ProfileSelectParameters& parameters);
|
|
void SetDialogPurpose(const Core::Frontend::ProfileSelectParameters& parameters);
|
|
|
|
int user_index = 0;
|
|
|
|
QVBoxLayout* layout;
|
|
QTreeView* tree_view;
|
|
QStandardItemModel* item_model;
|
|
QGraphicsScene* scene;
|
|
|
|
std::vector<QList<QStandardItem*>> list_items;
|
|
|
|
QVBoxLayout* outer_layout;
|
|
QLabel* instruction_label;
|
|
QScrollArea* scroll_area;
|
|
QDialogButtonBox* buttons;
|
|
|
|
Service::Account::ProfileManager& profile_manager;
|
|
ControllerNavigation* controller_navigation = nullptr;
|
|
};
|
|
|
|
class QtProfileSelector final : public QObject, public Core::Frontend::ProfileSelectApplet {
|
|
Q_OBJECT
|
|
|
|
public:
|
|
explicit QtProfileSelector(MainWindow& parent);
|
|
~QtProfileSelector() override;
|
|
|
|
void Close() const override;
|
|
void SelectProfile(SelectProfileCallback callback_,
|
|
const Core::Frontend::ProfileSelectParameters& parameters) const override;
|
|
|
|
signals:
|
|
void MainWindowSelectProfile(const Core::Frontend::ProfileSelectParameters& parameters) const;
|
|
void MainWindowRequestExit() const;
|
|
|
|
private:
|
|
void MainWindowFinishedSelection(std::optional<Common::UUID> uuid);
|
|
|
|
mutable SelectProfileCallback callback;
|
|
};
|