mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-01-10 08:09:26 +01:00
Merge pull request #11609 from AdmiralCurtiss/sd-size-select
Add SD card size option for converting folder -> file.
This commit is contained in:
commit
ca484c7a65
@ -26,6 +26,8 @@
|
|||||||
#include "Common/ScopeGuard.h"
|
#include "Common/ScopeGuard.h"
|
||||||
#include "Common/StringUtil.h"
|
#include "Common/StringUtil.h"
|
||||||
|
|
||||||
|
#include "Core/Config/MainSettings.h"
|
||||||
|
|
||||||
enum : u32
|
enum : u32
|
||||||
{
|
{
|
||||||
SECTOR_SIZE = 512,
|
SECTOR_SIZE = 512,
|
||||||
@ -513,9 +515,13 @@ bool SyncSDFolderToSDImage(const std::function<bool()>& cancelled, bool determin
|
|||||||
if (!CheckIfFATCompatible(root))
|
if (!CheckIfFATCompatible(root))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
u64 size = GetSize(root);
|
u64 size = Config::Get(Config::MAIN_WII_SD_CARD_FILESIZE);
|
||||||
// Allocate a reasonable amount of free space
|
if (size == 0)
|
||||||
size += std::clamp(size / 2, MebibytesToBytes(512), GibibytesToBytes(8));
|
{
|
||||||
|
size = GetSize(root);
|
||||||
|
// Allocate a reasonable amount of free space
|
||||||
|
size += std::clamp(size / 2, MebibytesToBytes(512), GibibytesToBytes(8));
|
||||||
|
}
|
||||||
size = AlignUp(size, MAX_CLUSTER_SIZE);
|
size = AlignUp(size, MAX_CLUSTER_SIZE);
|
||||||
|
|
||||||
std::lock_guard lk(s_fatfs_mutex);
|
std::lock_guard lk(s_fatfs_mutex);
|
||||||
|
@ -10,6 +10,7 @@
|
|||||||
#include "AudioCommon/AudioCommon.h"
|
#include "AudioCommon/AudioCommon.h"
|
||||||
#include "Common/Assert.h"
|
#include "Common/Assert.h"
|
||||||
#include "Common/CommonPaths.h"
|
#include "Common/CommonPaths.h"
|
||||||
|
#include "Common/CommonTypes.h"
|
||||||
#include "Common/Config/Config.h"
|
#include "Common/Config/Config.h"
|
||||||
#include "Common/EnumMap.h"
|
#include "Common/EnumMap.h"
|
||||||
#include "Common/FileUtil.h"
|
#include "Common/FileUtil.h"
|
||||||
@ -175,6 +176,7 @@ const Info<bool>& GetInfoForSimulateKonga(int channel)
|
|||||||
const Info<bool> MAIN_WII_SD_CARD{{System::Main, "Core", "WiiSDCard"}, true};
|
const Info<bool> MAIN_WII_SD_CARD{{System::Main, "Core", "WiiSDCard"}, true};
|
||||||
const Info<bool> MAIN_WII_SD_CARD_ENABLE_FOLDER_SYNC{
|
const Info<bool> MAIN_WII_SD_CARD_ENABLE_FOLDER_SYNC{
|
||||||
{System::Main, "Core", "WiiSDCardEnableFolderSync"}, false};
|
{System::Main, "Core", "WiiSDCardEnableFolderSync"}, false};
|
||||||
|
const Info<u64> MAIN_WII_SD_CARD_FILESIZE{{System::Main, "Core", "WiiSDCardFilesize"}, 0};
|
||||||
const Info<bool> MAIN_WII_KEYBOARD{{System::Main, "Core", "WiiKeyboard"}, false};
|
const Info<bool> MAIN_WII_KEYBOARD{{System::Main, "Core", "WiiKeyboard"}, false};
|
||||||
const Info<bool> MAIN_WIIMOTE_CONTINUOUS_SCANNING{
|
const Info<bool> MAIN_WIIMOTE_CONTINUOUS_SCANNING{
|
||||||
{System::Main, "Core", "WiimoteContinuousScanning"}, false};
|
{System::Main, "Core", "WiimoteContinuousScanning"}, false};
|
||||||
|
@ -9,6 +9,7 @@
|
|||||||
#include <utility>
|
#include <utility>
|
||||||
|
|
||||||
#include "Common/Common.h"
|
#include "Common/Common.h"
|
||||||
|
#include "Common/CommonTypes.h"
|
||||||
#include "Common/Config/Config.h"
|
#include "Common/Config/Config.h"
|
||||||
#include "DiscIO/Enums.h"
|
#include "DiscIO/Enums.h"
|
||||||
|
|
||||||
@ -98,6 +99,7 @@ const Info<bool>& GetInfoForAdapterRumble(int channel);
|
|||||||
const Info<bool>& GetInfoForSimulateKonga(int channel);
|
const Info<bool>& GetInfoForSimulateKonga(int channel);
|
||||||
extern const Info<bool> MAIN_WII_SD_CARD;
|
extern const Info<bool> MAIN_WII_SD_CARD;
|
||||||
extern const Info<bool> MAIN_WII_SD_CARD_ENABLE_FOLDER_SYNC;
|
extern const Info<bool> MAIN_WII_SD_CARD_ENABLE_FOLDER_SYNC;
|
||||||
|
extern const Info<u64> MAIN_WII_SD_CARD_FILESIZE;
|
||||||
extern const Info<bool> MAIN_WII_KEYBOARD;
|
extern const Info<bool> MAIN_WII_KEYBOARD;
|
||||||
extern const Info<bool> MAIN_WIIMOTE_CONTINUOUS_SCANNING;
|
extern const Info<bool> MAIN_WIIMOTE_CONTINUOUS_SCANNING;
|
||||||
extern const Info<bool> MAIN_WIIMOTE_ENABLE_SPEAKER;
|
extern const Info<bool> MAIN_WIIMOTE_ENABLE_SPEAKER;
|
||||||
|
@ -3,7 +3,9 @@
|
|||||||
|
|
||||||
#include "DolphinQt/Settings/WiiPane.h"
|
#include "DolphinQt/Settings/WiiPane.h"
|
||||||
|
|
||||||
|
#include <array>
|
||||||
#include <future>
|
#include <future>
|
||||||
|
#include <utility>
|
||||||
|
|
||||||
#include <QCheckBox>
|
#include <QCheckBox>
|
||||||
#include <QComboBox>
|
#include <QComboBox>
|
||||||
@ -53,6 +55,36 @@ static int TranslateSensorBarPosition(int position)
|
|||||||
return position;
|
return position;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
namespace
|
||||||
|
{
|
||||||
|
struct SDSizeComboEntry
|
||||||
|
{
|
||||||
|
u64 size;
|
||||||
|
const char* name;
|
||||||
|
};
|
||||||
|
static constexpr u64 MebibytesToBytes(u64 mebibytes)
|
||||||
|
{
|
||||||
|
return mebibytes * 1024u * 1024u;
|
||||||
|
}
|
||||||
|
static constexpr u64 GibibytesToBytes(u64 gibibytes)
|
||||||
|
{
|
||||||
|
return MebibytesToBytes(gibibytes * 1024u);
|
||||||
|
}
|
||||||
|
constexpr std::array sd_size_combo_entries{
|
||||||
|
SDSizeComboEntry{0, _trans("Auto")},
|
||||||
|
SDSizeComboEntry{MebibytesToBytes(64), _trans("64 MiB")},
|
||||||
|
SDSizeComboEntry{MebibytesToBytes(128), _trans("128 MiB")},
|
||||||
|
SDSizeComboEntry{MebibytesToBytes(256), _trans("256 MiB")},
|
||||||
|
SDSizeComboEntry{MebibytesToBytes(512), _trans("512 MiB")},
|
||||||
|
SDSizeComboEntry{GibibytesToBytes(1), _trans("1 GiB")},
|
||||||
|
SDSizeComboEntry{GibibytesToBytes(2), _trans("2 GiB")},
|
||||||
|
SDSizeComboEntry{GibibytesToBytes(4), _trans("4 GiB (SDHC)")},
|
||||||
|
SDSizeComboEntry{GibibytesToBytes(8), _trans("8 GiB (SDHC)")},
|
||||||
|
SDSizeComboEntry{GibibytesToBytes(16), _trans("16 GiB (SDHC)")},
|
||||||
|
SDSizeComboEntry{GibibytesToBytes(32), _trans("32 GiB (SDHC)")},
|
||||||
|
};
|
||||||
|
} // namespace
|
||||||
|
|
||||||
WiiPane::WiiPane(QWidget* parent) : QWidget(parent)
|
WiiPane::WiiPane(QWidget* parent) : QWidget(parent)
|
||||||
{
|
{
|
||||||
CreateLayout();
|
CreateLayout();
|
||||||
@ -94,6 +126,8 @@ void WiiPane::ConnectLayout()
|
|||||||
connect(m_sd_card_checkbox, &QCheckBox::toggled, this, &WiiPane::OnSaveConfig);
|
connect(m_sd_card_checkbox, &QCheckBox::toggled, this, &WiiPane::OnSaveConfig);
|
||||||
connect(m_allow_sd_writes_checkbox, &QCheckBox::toggled, this, &WiiPane::OnSaveConfig);
|
connect(m_allow_sd_writes_checkbox, &QCheckBox::toggled, this, &WiiPane::OnSaveConfig);
|
||||||
connect(m_sync_sd_folder_checkbox, &QCheckBox::toggled, this, &WiiPane::OnSaveConfig);
|
connect(m_sync_sd_folder_checkbox, &QCheckBox::toggled, this, &WiiPane::OnSaveConfig);
|
||||||
|
connect(m_sd_card_size_combo, qOverload<int>(&QComboBox::currentIndexChanged), this,
|
||||||
|
&WiiPane::OnSaveConfig);
|
||||||
|
|
||||||
// Whitelisted USB Passthrough Devices
|
// Whitelisted USB Passthrough Devices
|
||||||
connect(m_whitelist_usb_list, &QListWidget::itemClicked, this, &WiiPane::ValidateSelectionState);
|
connect(m_whitelist_usb_list, &QListWidget::itemClicked, this, &WiiPane::ValidateSelectionState);
|
||||||
@ -219,6 +253,13 @@ void WiiPane::CreateSDCard()
|
|||||||
++row;
|
++row;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
m_sd_card_size_combo = new QComboBox();
|
||||||
|
for (size_t i = 0; i < sd_size_combo_entries.size(); ++i)
|
||||||
|
m_sd_card_size_combo->addItem(tr(sd_size_combo_entries[i].name));
|
||||||
|
sd_settings_group_layout->addWidget(new QLabel(tr("SD Card File Size:")), row, 0);
|
||||||
|
sd_settings_group_layout->addWidget(m_sd_card_size_combo, row, 1);
|
||||||
|
++row;
|
||||||
|
|
||||||
m_sd_pack_button = new NonDefaultQPushButton(tr("Convert Folder to File Now"));
|
m_sd_pack_button = new NonDefaultQPushButton(tr("Convert Folder to File Now"));
|
||||||
m_sd_unpack_button = new NonDefaultQPushButton(tr("Convert File to Folder Now"));
|
m_sd_unpack_button = new NonDefaultQPushButton(tr("Convert File to Folder Now"));
|
||||||
connect(m_sd_pack_button, &QPushButton::clicked, [this] {
|
connect(m_sd_pack_button, &QPushButton::clicked, [this] {
|
||||||
@ -360,6 +401,13 @@ void WiiPane::LoadConfig()
|
|||||||
m_allow_sd_writes_checkbox->setChecked(Config::Get(Config::MAIN_ALLOW_SD_WRITES));
|
m_allow_sd_writes_checkbox->setChecked(Config::Get(Config::MAIN_ALLOW_SD_WRITES));
|
||||||
m_sync_sd_folder_checkbox->setChecked(Config::Get(Config::MAIN_WII_SD_CARD_ENABLE_FOLDER_SYNC));
|
m_sync_sd_folder_checkbox->setChecked(Config::Get(Config::MAIN_WII_SD_CARD_ENABLE_FOLDER_SYNC));
|
||||||
|
|
||||||
|
const u64 sd_card_size = Config::Get(Config::MAIN_WII_SD_CARD_FILESIZE);
|
||||||
|
for (size_t i = 0; i < sd_size_combo_entries.size(); ++i)
|
||||||
|
{
|
||||||
|
if (sd_size_combo_entries[i].size == sd_card_size)
|
||||||
|
m_sd_card_size_combo->setCurrentIndex(static_cast<int>(i));
|
||||||
|
}
|
||||||
|
|
||||||
PopulateUSBPassthroughListWidget();
|
PopulateUSBPassthroughListWidget();
|
||||||
|
|
||||||
m_wiimote_ir_sensor_position->setCurrentIndex(
|
m_wiimote_ir_sensor_position->setCurrentIndex(
|
||||||
@ -390,6 +438,14 @@ void WiiPane::OnSaveConfig()
|
|||||||
Config::SetBase(Config::MAIN_ALLOW_SD_WRITES, m_allow_sd_writes_checkbox->isChecked());
|
Config::SetBase(Config::MAIN_ALLOW_SD_WRITES, m_allow_sd_writes_checkbox->isChecked());
|
||||||
Config::SetBase(Config::MAIN_WII_SD_CARD_ENABLE_FOLDER_SYNC,
|
Config::SetBase(Config::MAIN_WII_SD_CARD_ENABLE_FOLDER_SYNC,
|
||||||
m_sync_sd_folder_checkbox->isChecked());
|
m_sync_sd_folder_checkbox->isChecked());
|
||||||
|
|
||||||
|
const int sd_card_size_index = m_sd_card_size_combo->currentIndex();
|
||||||
|
if (sd_card_size_index >= 0 &&
|
||||||
|
static_cast<size_t>(sd_card_size_index) < sd_size_combo_entries.size())
|
||||||
|
{
|
||||||
|
Config::SetBase(Config::MAIN_WII_SD_CARD_FILESIZE,
|
||||||
|
sd_size_combo_entries[sd_card_size_index].size);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void WiiPane::ValidateSelectionState()
|
void WiiPane::ValidateSelectionState()
|
||||||
|
@ -62,6 +62,7 @@ private:
|
|||||||
QCheckBox* m_sd_card_checkbox;
|
QCheckBox* m_sd_card_checkbox;
|
||||||
QCheckBox* m_allow_sd_writes_checkbox;
|
QCheckBox* m_allow_sd_writes_checkbox;
|
||||||
QCheckBox* m_sync_sd_folder_checkbox;
|
QCheckBox* m_sync_sd_folder_checkbox;
|
||||||
|
QComboBox* m_sd_card_size_combo;
|
||||||
QLineEdit* m_sd_raw_edit;
|
QLineEdit* m_sd_raw_edit;
|
||||||
QLineEdit* m_sd_sync_folder_edit;
|
QLineEdit* m_sd_sync_folder_edit;
|
||||||
QPushButton* m_sd_pack_button;
|
QPushButton* m_sd_pack_button;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user