refactor: move display types to UserMetaType.h (#8116)

This commit is contained in:
Charles Kerr
2026-01-12 20:07:55 -06:00
committed by GitHub
parent 4a05c06ce0
commit 6f32b8d5dd
9 changed files with 148 additions and 151 deletions

View File

@@ -20,7 +20,6 @@ target_sources(${TR_NAME}-qt-lib
ColumnResizer.h
ComInteropHelper.cc
ComInteropHelper.h
CustomVariantType.h
DBusInteropHelper.cc
DBusInteropHelper.h
DetailsDialog.cc
@@ -109,6 +108,7 @@ target_sources(${TR_NAME}-qt-lib
TrQtInit.cc
TrQtInit.h
Typedefs.h
UserMetaType.h
Utils.cc
Utils.h
VariantHelpers.cc

View File

@@ -1,26 +0,0 @@
// This file Copyright © Mnemosyne LLC.
// It may be used under GPLv2 (SPDX: GPL-2.0-only), GPLv3 (SPDX: GPL-3.0-only),
// or any future license endorsed by Mnemosyne LLC.
// License text can be found in the licenses/ folder.
#pragma once
#include <libtransmission/transmission.h>
#include <QVariant>
class CustomVariantType
{
public:
enum
{
TrackerStatsList = QMetaType::User,
PeerList,
FileList,
ShowModeType,
SortModeType,
EncryptionModeType,
};
};
Q_DECLARE_METATYPE(tr_encryption_mode)

View File

@@ -5,20 +5,11 @@
#pragma once
#include <libtransmission-app/display-modes.h>
#include "UserMetaType.h"
#include "Torrent.h"
// The Torrent properties that can affect ShowMode filtering.
// When one of these changes, it's time to refilter.
extern Torrent::fields_t const ShowModeFields;
using ShowMode = transmission::app::ShowMode;
Q_DECLARE_METATYPE(ShowMode)
inline auto constexpr DefaultShowMode = transmission::app::DefaultShowMode;
inline auto constexpr ShowModeCount = transmission::app::ShowModeCount;
bool should_show_torrent(Torrent const& torrent, ShowMode);
using SortMode = transmission::app::SortMode;
Q_DECLARE_METATYPE(SortMode)
inline auto constexpr DefaultSortMode = transmission::app::DefaultSortMode;

View File

@@ -18,9 +18,9 @@
#include <libtransmission/serializer.h>
#include <libtransmission/variant.h>
#include "CustomVariantType.h"
#include "Filters.h"
#include "Prefs.h"
#include "UserMetaType.h"
namespace api_compat = libtransmission::api_compat;
namespace ser = libtransmission::serializer;
@@ -43,13 +43,13 @@ template<typename T>
case QMetaType::Int:
return qvarFromOptional(ser::to_value<int64_t>(var));
case CustomVariantType::EncryptionModeType:
case UserMetaType::EncryptionModeType:
return qvarFromOptional(ser::to_value<tr_encryption_mode>(var));
case CustomVariantType::SortModeType:
case UserMetaType::SortModeType:
return qvarFromOptional(ser::to_value<SortMode>(var));
case CustomVariantType::ShowModeType:
case UserMetaType::ShowModeType:
return qvarFromOptional(ser::to_value<ShowMode>(var));
case QMetaType::QString:
@@ -80,13 +80,13 @@ template<typename T>
case QMetaType::Int:
return ser::to_variant(var.value<int>());
case CustomVariantType::EncryptionModeType:
case UserMetaType::EncryptionModeType:
return ser::to_variant(var.value<tr_encryption_mode>());
case CustomVariantType::SortModeType:
case UserMetaType::SortModeType:
return ser::to_variant(var.value<SortMode>());
case CustomVariantType::ShowModeType:
case UserMetaType::ShowModeType:
return ser::to_variant(var.value<ShowMode>());
case QMetaType::QString:
@@ -125,106 +125,6 @@ void ensureSoundCommandIsAList(tr_variant::Map& map)
}
} // namespace
std::array<Prefs::PrefItem, Prefs::PREFS_COUNT> const Prefs::Items{
/* gui settings */
PrefItem{ OPTIONS_PROMPT, TR_KEY_show_options_window, QMetaType::Bool },
{ OPEN_DIALOG_FOLDER, TR_KEY_open_dialog_dir, QMetaType::QString },
{ INHIBIT_HIBERNATION, TR_KEY_inhibit_desktop_hibernation, QMetaType::Bool },
{ DIR_WATCH, TR_KEY_watch_dir, QMetaType::QString },
{ DIR_WATCH_ENABLED, TR_KEY_watch_dir_enabled, QMetaType::Bool },
{ SHOW_TRAY_ICON, TR_KEY_show_notification_area_icon, QMetaType::Bool },
{ START_MINIMIZED, TR_KEY_start_minimized, QMetaType::Bool },
{ SHOW_NOTIFICATION_ON_ADD, TR_KEY_torrent_added_notification_enabled, QMetaType::Bool },
{ SHOW_NOTIFICATION_ON_COMPLETE, TR_KEY_torrent_complete_notification_enabled, QMetaType::Bool },
{ ASKQUIT, TR_KEY_prompt_before_exit, QMetaType::Bool },
{ SORT_MODE, TR_KEY_sort_mode, CustomVariantType::SortModeType },
{ SORT_REVERSED, TR_KEY_sort_reversed, QMetaType::Bool },
{ COMPACT_VIEW, TR_KEY_compact_view, QMetaType::Bool },
{ FILTERBAR, TR_KEY_show_filterbar, QMetaType::Bool },
{ STATUSBAR, TR_KEY_show_statusbar, QMetaType::Bool },
{ STATUSBAR_STATS, TR_KEY_statusbar_stats, QMetaType::QString },
{ SHOW_TRACKER_SCRAPES, TR_KEY_show_tracker_scrapes, QMetaType::Bool },
{ SHOW_BACKUP_TRACKERS, TR_KEY_show_backup_trackers, QMetaType::Bool },
{ TOOLBAR, TR_KEY_show_toolbar, QMetaType::Bool },
{ BLOCKLIST_DATE, TR_KEY_blocklist_date, QMetaType::QDateTime },
{ BLOCKLIST_UPDATES_ENABLED, TR_KEY_blocklist_updates_enabled, QMetaType::Bool },
{ MAIN_WINDOW_LAYOUT_ORDER, TR_KEY_main_window_layout_order, QMetaType::QString },
{ MAIN_WINDOW_HEIGHT, TR_KEY_main_window_height, QMetaType::Int },
{ MAIN_WINDOW_WIDTH, TR_KEY_main_window_width, QMetaType::Int },
{ MAIN_WINDOW_X, TR_KEY_main_window_x, QMetaType::Int },
{ MAIN_WINDOW_Y, TR_KEY_main_window_y, QMetaType::Int },
{ FILTER_MODE, TR_KEY_filter_mode, CustomVariantType::ShowModeType },
{ FILTER_TRACKERS, TR_KEY_filter_trackers, QMetaType::QString },
{ FILTER_TEXT, TR_KEY_filter_text, QMetaType::QString },
{ SESSION_IS_REMOTE, TR_KEY_remote_session_enabled, QMetaType::Bool },
{ SESSION_REMOTE_HOST, TR_KEY_remote_session_host, QMetaType::QString },
{ SESSION_REMOTE_HTTPS, TR_KEY_remote_session_https, QMetaType::Bool },
{ SESSION_REMOTE_PASSWORD, TR_KEY_remote_session_password, QMetaType::QString },
{ SESSION_REMOTE_PORT, TR_KEY_remote_session_port, QMetaType::Int },
{ SESSION_REMOTE_AUTH, TR_KEY_remote_session_requires_authentication, QMetaType::Bool },
{ SESSION_REMOTE_USERNAME, TR_KEY_remote_session_username, QMetaType::QString },
{ SESSION_REMOTE_URL_BASE_PATH, TR_KEY_remote_session_url_base_path, QMetaType::QString },
{ COMPLETE_SOUND_COMMAND, TR_KEY_torrent_complete_sound_command, QMetaType::QStringList },
{ COMPLETE_SOUND_ENABLED, TR_KEY_torrent_complete_sound_enabled, QMetaType::Bool },
{ READ_CLIPBOARD, TR_KEY_read_clipboard, QMetaType::Bool },
/* libtransmission settings */
{ ALT_SPEED_LIMIT_UP, TR_KEY_alt_speed_up, QMetaType::Int },
{ ALT_SPEED_LIMIT_DOWN, TR_KEY_alt_speed_down, QMetaType::Int },
{ ALT_SPEED_LIMIT_ENABLED, TR_KEY_alt_speed_enabled, QMetaType::Bool },
{ ALT_SPEED_LIMIT_TIME_BEGIN, TR_KEY_alt_speed_time_begin, QMetaType::Int },
{ ALT_SPEED_LIMIT_TIME_END, TR_KEY_alt_speed_time_end, QMetaType::Int },
{ ALT_SPEED_LIMIT_TIME_ENABLED, TR_KEY_alt_speed_time_enabled, QMetaType::Bool },
{ ALT_SPEED_LIMIT_TIME_DAY, TR_KEY_alt_speed_time_day, QMetaType::Int },
{ BLOCKLIST_ENABLED, TR_KEY_blocklist_enabled, QMetaType::Bool },
{ BLOCKLIST_URL, TR_KEY_blocklist_url, QMetaType::QString },
{ DEFAULT_TRACKERS, TR_KEY_default_trackers, QMetaType::QString },
{ DSPEED, TR_KEY_speed_limit_down, QMetaType::Int },
{ DSPEED_ENABLED, TR_KEY_speed_limit_down_enabled, QMetaType::Bool },
{ DOWNLOAD_DIR, TR_KEY_download_dir, QMetaType::QString },
{ DOWNLOAD_QUEUE_ENABLED, TR_KEY_download_queue_enabled, QMetaType::Bool },
{ DOWNLOAD_QUEUE_SIZE, TR_KEY_download_queue_size, QMetaType::Int },
{ ENCRYPTION, TR_KEY_encryption, CustomVariantType::EncryptionModeType },
{ IDLE_LIMIT, TR_KEY_idle_seeding_limit, QMetaType::Int },
{ IDLE_LIMIT_ENABLED, TR_KEY_idle_seeding_limit_enabled, QMetaType::Bool },
{ INCOMPLETE_DIR, TR_KEY_incomplete_dir, QMetaType::QString },
{ INCOMPLETE_DIR_ENABLED, TR_KEY_incomplete_dir_enabled, QMetaType::Bool },
{ MSGLEVEL, TR_KEY_message_level, QMetaType::Int },
{ PEER_LIMIT_GLOBAL, TR_KEY_peer_limit_global, QMetaType::Int },
{ PEER_LIMIT_TORRENT, TR_KEY_peer_limit_per_torrent, QMetaType::Int },
{ PEER_PORT, TR_KEY_peer_port, QMetaType::Int },
{ PEER_PORT_RANDOM_ON_START, TR_KEY_peer_port_random_on_start, QMetaType::Bool },
{ PEER_PORT_RANDOM_LOW, TR_KEY_peer_port_random_low, QMetaType::Int },
{ PEER_PORT_RANDOM_HIGH, TR_KEY_peer_port_random_high, QMetaType::Int },
{ QUEUE_STALLED_MINUTES, TR_KEY_queue_stalled_minutes, QMetaType::Int },
{ SCRIPT_TORRENT_DONE_ENABLED, TR_KEY_script_torrent_done_enabled, QMetaType::Bool },
{ SCRIPT_TORRENT_DONE_FILENAME, TR_KEY_script_torrent_done_filename, QMetaType::QString },
{ SCRIPT_TORRENT_DONE_SEEDING_ENABLED, TR_KEY_script_torrent_done_seeding_enabled, QMetaType::Bool },
{ SCRIPT_TORRENT_DONE_SEEDING_FILENAME, TR_KEY_script_torrent_done_seeding_filename, QMetaType::QString },
{ SOCKET_DIFFSERV, TR_KEY_peer_socket_diffserv, QMetaType::QString },
{ START, TR_KEY_start_added_torrents, QMetaType::Bool },
{ TRASH_ORIGINAL, TR_KEY_trash_original_torrent_files, QMetaType::Bool },
{ PEX_ENABLED, TR_KEY_pex_enabled, QMetaType::Bool },
{ DHT_ENABLED, TR_KEY_dht_enabled, QMetaType::Bool },
{ UTP_ENABLED, TR_KEY_utp_enabled, QMetaType::Bool },
{ LPD_ENABLED, TR_KEY_lpd_enabled, QMetaType::Bool },
{ PORT_FORWARDING, TR_KEY_port_forwarding_enabled, QMetaType::Bool },
{ PREALLOCATION, TR_KEY_preallocation, QMetaType::Int },
{ RATIO, TR_KEY_ratio_limit, QMetaType::Double },
{ RATIO_ENABLED, TR_KEY_ratio_limit_enabled, QMetaType::Bool },
{ RENAME_PARTIAL_FILES, TR_KEY_rename_partial_files, QMetaType::Bool },
{ RPC_AUTH_REQUIRED, TR_KEY_rpc_authentication_required, QMetaType::Bool },
{ RPC_ENABLED, TR_KEY_rpc_enabled, QMetaType::Bool },
{ RPC_PASSWORD, TR_KEY_rpc_password, QMetaType::QString },
{ RPC_PORT, TR_KEY_rpc_port, QMetaType::Int },
{ RPC_USERNAME, TR_KEY_rpc_username, QMetaType::QString },
{ RPC_WHITELIST_ENABLED, TR_KEY_rpc_whitelist_enabled, QMetaType::Bool },
{ RPC_WHITELIST, TR_KEY_rpc_whitelist, QMetaType::QString },
{ USPEED_ENABLED, TR_KEY_speed_limit_up_enabled, QMetaType::Bool },
{ USPEED, TR_KEY_speed_limit_up, QMetaType::Int },
{ UPLOAD_SLOTS_PER_TORRENT, TR_KEY_upload_slots_per_torrent, QMetaType::Int },
};
namespace
{
[[nodiscard]] constexpr auto prefIsSavable(int pref)

View File

@@ -16,6 +16,8 @@
#include <libtransmission-app/display-modes.h>
#include "UserMetaType.h"
class Prefs : public QObject
{
Q_OBJECT
@@ -191,7 +193,105 @@ private:
int type;
};
static std::array<PrefItem, PREFS_COUNT> const Items;
static inline auto constexpr Items = std::array<PrefItem, PREFS_COUNT>{ {
// gui settings
{ OPTIONS_PROMPT, TR_KEY_show_options_window, QMetaType::Bool },
{ OPEN_DIALOG_FOLDER, TR_KEY_open_dialog_dir, QMetaType::QString },
{ INHIBIT_HIBERNATION, TR_KEY_inhibit_desktop_hibernation, QMetaType::Bool },
{ DIR_WATCH, TR_KEY_watch_dir, QMetaType::QString },
{ DIR_WATCH_ENABLED, TR_KEY_watch_dir_enabled, QMetaType::Bool },
{ SHOW_TRAY_ICON, TR_KEY_show_notification_area_icon, QMetaType::Bool },
{ START_MINIMIZED, TR_KEY_start_minimized, QMetaType::Bool },
{ SHOW_NOTIFICATION_ON_ADD, TR_KEY_torrent_added_notification_enabled, QMetaType::Bool },
{ SHOW_NOTIFICATION_ON_COMPLETE, TR_KEY_torrent_complete_notification_enabled, QMetaType::Bool },
{ ASKQUIT, TR_KEY_prompt_before_exit, QMetaType::Bool },
{ SORT_MODE, TR_KEY_sort_mode, UserMetaType::SortModeType },
{ SORT_REVERSED, TR_KEY_sort_reversed, QMetaType::Bool },
{ COMPACT_VIEW, TR_KEY_compact_view, QMetaType::Bool },
{ FILTERBAR, TR_KEY_show_filterbar, QMetaType::Bool },
{ STATUSBAR, TR_KEY_show_statusbar, QMetaType::Bool },
{ STATUSBAR_STATS, TR_KEY_statusbar_stats, QMetaType::QString },
{ SHOW_TRACKER_SCRAPES, TR_KEY_show_tracker_scrapes, QMetaType::Bool },
{ SHOW_BACKUP_TRACKERS, TR_KEY_show_backup_trackers, QMetaType::Bool },
{ TOOLBAR, TR_KEY_show_toolbar, QMetaType::Bool },
{ BLOCKLIST_DATE, TR_KEY_blocklist_date, QMetaType::QDateTime },
{ BLOCKLIST_UPDATES_ENABLED, TR_KEY_blocklist_updates_enabled, QMetaType::Bool },
{ MAIN_WINDOW_LAYOUT_ORDER, TR_KEY_main_window_layout_order, QMetaType::QString },
{ MAIN_WINDOW_HEIGHT, TR_KEY_main_window_height, QMetaType::Int },
{ MAIN_WINDOW_WIDTH, TR_KEY_main_window_width, QMetaType::Int },
{ MAIN_WINDOW_X, TR_KEY_main_window_x, QMetaType::Int },
{ MAIN_WINDOW_Y, TR_KEY_main_window_y, QMetaType::Int },
{ FILTER_MODE, TR_KEY_filter_mode, UserMetaType::ShowModeType },
{ FILTER_TRACKERS, TR_KEY_filter_trackers, QMetaType::QString },
{ FILTER_TEXT, TR_KEY_filter_text, QMetaType::QString },
{ SESSION_IS_REMOTE, TR_KEY_remote_session_enabled, QMetaType::Bool },
{ SESSION_REMOTE_HOST, TR_KEY_remote_session_host, QMetaType::QString },
{ SESSION_REMOTE_HTTPS, TR_KEY_remote_session_https, QMetaType::Bool },
{ SESSION_REMOTE_PASSWORD, TR_KEY_remote_session_password, QMetaType::QString },
{ SESSION_REMOTE_PORT, TR_KEY_remote_session_port, QMetaType::Int },
{ SESSION_REMOTE_AUTH, TR_KEY_remote_session_requires_authentication, QMetaType::Bool },
{ SESSION_REMOTE_USERNAME, TR_KEY_remote_session_username, QMetaType::QString },
{ SESSION_REMOTE_URL_BASE_PATH, TR_KEY_remote_session_url_base_path, QMetaType::QString },
{ COMPLETE_SOUND_COMMAND, TR_KEY_torrent_complete_sound_command, QMetaType::QStringList },
{ COMPLETE_SOUND_ENABLED, TR_KEY_torrent_complete_sound_enabled, QMetaType::Bool },
{ READ_CLIPBOARD, TR_KEY_read_clipboard, QMetaType::Bool },
/* libtransmission settings */
{ ALT_SPEED_LIMIT_UP, TR_KEY_alt_speed_up, QMetaType::Int },
{ ALT_SPEED_LIMIT_DOWN, TR_KEY_alt_speed_down, QMetaType::Int },
{ ALT_SPEED_LIMIT_ENABLED, TR_KEY_alt_speed_enabled, QMetaType::Bool },
{ ALT_SPEED_LIMIT_TIME_BEGIN, TR_KEY_alt_speed_time_begin, QMetaType::Int },
{ ALT_SPEED_LIMIT_TIME_END, TR_KEY_alt_speed_time_end, QMetaType::Int },
{ ALT_SPEED_LIMIT_TIME_ENABLED, TR_KEY_alt_speed_time_enabled, QMetaType::Bool },
{ ALT_SPEED_LIMIT_TIME_DAY, TR_KEY_alt_speed_time_day, QMetaType::Int },
{ BLOCKLIST_ENABLED, TR_KEY_blocklist_enabled, QMetaType::Bool },
{ BLOCKLIST_URL, TR_KEY_blocklist_url, QMetaType::QString },
{ DEFAULT_TRACKERS, TR_KEY_default_trackers, QMetaType::QString },
{ DSPEED, TR_KEY_speed_limit_down, QMetaType::Int },
{ DSPEED_ENABLED, TR_KEY_speed_limit_down_enabled, QMetaType::Bool },
{ DOWNLOAD_DIR, TR_KEY_download_dir, QMetaType::QString },
{ DOWNLOAD_QUEUE_ENABLED, TR_KEY_download_queue_enabled, QMetaType::Bool },
{ DOWNLOAD_QUEUE_SIZE, TR_KEY_download_queue_size, QMetaType::Int },
{ ENCRYPTION, TR_KEY_encryption, UserMetaType::EncryptionModeType },
{ IDLE_LIMIT, TR_KEY_idle_seeding_limit, QMetaType::Int },
{ IDLE_LIMIT_ENABLED, TR_KEY_idle_seeding_limit_enabled, QMetaType::Bool },
{ INCOMPLETE_DIR, TR_KEY_incomplete_dir, QMetaType::QString },
{ INCOMPLETE_DIR_ENABLED, TR_KEY_incomplete_dir_enabled, QMetaType::Bool },
{ MSGLEVEL, TR_KEY_message_level, QMetaType::Int },
{ PEER_LIMIT_GLOBAL, TR_KEY_peer_limit_global, QMetaType::Int },
{ PEER_LIMIT_TORRENT, TR_KEY_peer_limit_per_torrent, QMetaType::Int },
{ PEER_PORT, TR_KEY_peer_port, QMetaType::Int },
{ PEER_PORT_RANDOM_ON_START, TR_KEY_peer_port_random_on_start, QMetaType::Bool },
{ PEER_PORT_RANDOM_LOW, TR_KEY_peer_port_random_low, QMetaType::Int },
{ PEER_PORT_RANDOM_HIGH, TR_KEY_peer_port_random_high, QMetaType::Int },
{ QUEUE_STALLED_MINUTES, TR_KEY_queue_stalled_minutes, QMetaType::Int },
{ SCRIPT_TORRENT_DONE_ENABLED, TR_KEY_script_torrent_done_enabled, QMetaType::Bool },
{ SCRIPT_TORRENT_DONE_FILENAME, TR_KEY_script_torrent_done_filename, QMetaType::QString },
{ SCRIPT_TORRENT_DONE_SEEDING_ENABLED, TR_KEY_script_torrent_done_seeding_enabled, QMetaType::Bool },
{ SCRIPT_TORRENT_DONE_SEEDING_FILENAME, TR_KEY_script_torrent_done_seeding_filename, QMetaType::QString },
{ SOCKET_DIFFSERV, TR_KEY_peer_socket_diffserv, QMetaType::QString },
{ START, TR_KEY_start_added_torrents, QMetaType::Bool },
{ TRASH_ORIGINAL, TR_KEY_trash_original_torrent_files, QMetaType::Bool },
{ PEX_ENABLED, TR_KEY_pex_enabled, QMetaType::Bool },
{ DHT_ENABLED, TR_KEY_dht_enabled, QMetaType::Bool },
{ UTP_ENABLED, TR_KEY_utp_enabled, QMetaType::Bool },
{ LPD_ENABLED, TR_KEY_lpd_enabled, QMetaType::Bool },
{ PORT_FORWARDING, TR_KEY_port_forwarding_enabled, QMetaType::Bool },
{ PREALLOCATION, TR_KEY_preallocation, QMetaType::Int },
{ RATIO, TR_KEY_ratio_limit, QMetaType::Double },
{ RATIO_ENABLED, TR_KEY_ratio_limit_enabled, QMetaType::Bool },
{ RENAME_PARTIAL_FILES, TR_KEY_rename_partial_files, QMetaType::Bool },
{ RPC_AUTH_REQUIRED, TR_KEY_rpc_authentication_required, QMetaType::Bool },
{ RPC_ENABLED, TR_KEY_rpc_enabled, QMetaType::Bool },
{ RPC_PASSWORD, TR_KEY_rpc_password, QMetaType::QString },
{ RPC_PORT, TR_KEY_rpc_port, QMetaType::Int },
{ RPC_USERNAME, TR_KEY_rpc_username, QMetaType::QString },
{ RPC_WHITELIST_ENABLED, TR_KEY_rpc_whitelist_enabled, QMetaType::Bool },
{ RPC_WHITELIST, TR_KEY_rpc_whitelist, QMetaType::QString },
{ USPEED_ENABLED, TR_KEY_speed_limit_up_enabled, QMetaType::Bool },
{ USPEED, TR_KEY_speed_limit_up, QMetaType::Int },
{ UPLOAD_SLOTS_PER_TORRENT, TR_KEY_upload_slots_per_torrent, QMetaType::Int },
} };
[[nodiscard]] static tr_variant::Map defaults();

View File

@@ -27,11 +27,11 @@
#include <libtransmission/transmission.h>
#include "ColumnResizer.h"
#include "CustomVariantType.h"
#include "Formatter.h"
#include "FreeSpaceLabel.h"
#include "Prefs.h"
#include "Session.h"
#include "UserMetaType.h"
#include "Utils.h"
using namespace libtransmission;

View File

@@ -35,12 +35,12 @@
#include "Session.h"
#include "AddData.h"
#include "CustomVariantType.h"
#include "Filters.h"
#include "Prefs.h"
#include "RpcQueue.h"
#include "SessionDialog.h"
#include "Torrent.h"
#include "UserMetaType.h"
#include "VariantHelpers.h"
using namespace std::literals;
@@ -82,7 +82,7 @@ void Session::sessionSet(tr_quark const key, QVariant const& value)
dictAdd(&args, key, value.toString());
break;
case CustomVariantType::EncryptionModeType:
case UserMetaType::EncryptionModeType:
*tr_variantDictAdd(&args, key) = to_variant(value.value<tr_encryption_mode>());
break;
@@ -923,7 +923,7 @@ void Session::updateInfo(tr_variant* args_dict)
break;
case CustomVariantType::EncryptionModeType:
case UserMetaType::EncryptionModeType:
if (auto const val = to_value<tr_encryption_mode>(*b))
{
prefs_.set(i, *val);

34
qt/UserMetaType.h Normal file
View File

@@ -0,0 +1,34 @@
// This file Copyright © Mnemosyne LLC.
// It may be used under GPLv2 (SPDX: GPL-2.0-only), GPLv3 (SPDX: GPL-3.0-only),
// or any future license endorsed by Mnemosyne LLC.
// License text can be found in the licenses/ folder.
#pragma once
#include <libtransmission/transmission.h>
#include <libtransmission-app/display-modes.h>
#include <QMetaType>
class UserMetaType
{
public:
enum
{
ShowModeType = QMetaType::User,
SortModeType,
EncryptionModeType,
};
};
Q_DECLARE_METATYPE(tr_encryption_mode)
using ShowMode = transmission::app::ShowMode;
Q_DECLARE_METATYPE(ShowMode)
inline auto constexpr DefaultShowMode = transmission::app::DefaultShowMode;
inline auto constexpr ShowModeCount = transmission::app::ShowModeCount;
using SortMode = transmission::app::SortMode;
Q_DECLARE_METATYPE(SortMode)
inline auto constexpr DefaultSortMode = transmission::app::DefaultSortMode;

View File

@@ -18,8 +18,6 @@
#include <libtransmission/utils.h>
#include <libtransmission/variant.h>
#include "CustomVariantType.h"
#include "Filters.h"
#include "Prefs.h"
#include "TrQtInit.h"