mirror of
https://github.com/kunkundi/crossdesk.git
synced 2026-03-22 07:37:29 +08:00
624 lines
22 KiB
C++
624 lines
22 KiB
C++
#include "layout.h"
|
|
#include "localization.h"
|
|
#include "rd_log.h"
|
|
#include "render.h"
|
|
#include "tinyfiledialogs.h"
|
|
|
|
namespace crossdesk {
|
|
|
|
int Render::SettingWindow() {
|
|
ImGuiIO& io = ImGui::GetIO();
|
|
if (show_settings_window_) {
|
|
if (settings_window_pos_reset_) {
|
|
const ImGuiViewport* viewport = ImGui::GetMainViewport();
|
|
if (ConfigCenter::LANGUAGE::CHINESE == localization_language_) {
|
|
#if (((defined(_WIN32) || defined(__linux__)) && !defined(__aarch64__) && \
|
|
!defined(__arm__) && USE_CUDA) || \
|
|
defined(__APPLE__))
|
|
ImGui::SetNextWindowPos(
|
|
ImVec2(io.DisplaySize.x * 0.343f, io.DisplaySize.y * 0.05f));
|
|
ImGui::SetNextWindowSize(
|
|
ImVec2(io.DisplaySize.x * 0.315f, io.DisplaySize.y * 0.9f));
|
|
#else
|
|
ImGui::SetNextWindowPos(
|
|
ImVec2(io.DisplaySize.x * 0.343f, io.DisplaySize.y * 0.08f));
|
|
ImGui::SetNextWindowSize(
|
|
ImVec2(io.DisplaySize.x * 0.315f, io.DisplaySize.y * 0.85f));
|
|
#endif
|
|
} else {
|
|
#if (((defined(_WIN32) || defined(__linux__)) && !defined(__aarch64__) && \
|
|
!defined(__arm__) && USE_CUDA) || \
|
|
defined(__APPLE__))
|
|
ImGui::SetNextWindowPos(
|
|
ImVec2(io.DisplaySize.x * 0.297f, io.DisplaySize.y * 0.05f));
|
|
ImGui::SetNextWindowSize(
|
|
ImVec2(io.DisplaySize.x * 0.407f, io.DisplaySize.y * 0.9f));
|
|
#else
|
|
ImGui::SetNextWindowPos(
|
|
ImVec2(io.DisplaySize.x * 0.297f, io.DisplaySize.y * 0.08f));
|
|
ImGui::SetNextWindowSize(
|
|
ImVec2(io.DisplaySize.x * 0.407f, io.DisplaySize.y * 0.85f));
|
|
#endif
|
|
}
|
|
|
|
settings_window_pos_reset_ = false;
|
|
}
|
|
|
|
// Settings
|
|
{
|
|
static int settings_items_padding = title_bar_button_width_ * 0.75f;
|
|
int settings_items_offset = 0;
|
|
|
|
ImGui::PushStyleColor(ImGuiCol_WindowBg, ImVec4(1.0f, 1.0f, 1.0f, 1.0f));
|
|
ImGui::PushStyleVar(ImGuiStyleVar_WindowRounding, window_rounding_);
|
|
ImGui::PushStyleVar(ImGuiStyleVar_FrameRounding, window_rounding_ * 0.5f);
|
|
|
|
ImGui::Begin(localization::settings[localization_language_index_].c_str(),
|
|
nullptr,
|
|
ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoCollapse |
|
|
ImGuiWindowFlags_NoSavedSettings);
|
|
ImGui::SetWindowFontScale(0.5f);
|
|
ImGui::PushStyleVar(ImGuiStyleVar_FrameBorderSize, 1.0f);
|
|
{
|
|
const auto& supported_languages = localization::GetSupportedLanguages();
|
|
language_button_value_ =
|
|
localization::detail::ClampLanguageIndex(language_button_value_);
|
|
|
|
settings_items_offset += settings_items_padding;
|
|
ImGui::SetCursorPosY(settings_items_offset);
|
|
ImGui::AlignTextToFramePadding();
|
|
ImGui::Text(
|
|
"%s", localization::language[localization_language_index_].c_str());
|
|
ImGui::SameLine();
|
|
if (ConfigCenter::LANGUAGE::CHINESE == localization_language_) {
|
|
ImGui::SetCursorPosX(title_bar_button_width_ * 3.0f);
|
|
} else {
|
|
ImGui::SetCursorPosX(title_bar_button_width_ * 4.5f);
|
|
}
|
|
|
|
ImGui::SetNextItemWidth(title_bar_button_width_ * 1.8f);
|
|
if (ImGui::BeginCombo(
|
|
"##language",
|
|
localization::GetSupportedLanguages()
|
|
[localization::detail::ClampLanguageIndex(
|
|
language_button_value_)]
|
|
.display_name
|
|
.c_str())) {
|
|
ImGui::SetWindowFontScale(0.5f);
|
|
for (int i = 0; i < static_cast<int>(supported_languages.size());
|
|
++i) {
|
|
bool selected = (i == language_button_value_);
|
|
if (ImGui::Selectable(
|
|
supported_languages[i].display_name.c_str(), selected))
|
|
language_button_value_ = i;
|
|
if (selected) {
|
|
ImGui::SetItemDefaultFocus();
|
|
}
|
|
}
|
|
|
|
ImGui::EndCombo();
|
|
}
|
|
}
|
|
|
|
ImGui::Separator();
|
|
|
|
if (stream_window_inited_) {
|
|
ImGui::BeginDisabled();
|
|
}
|
|
|
|
{
|
|
const char* video_quality_items[] = {
|
|
localization::video_quality_low[localization_language_index_]
|
|
.c_str(),
|
|
localization::video_quality_medium[localization_language_index_]
|
|
.c_str(),
|
|
localization::video_quality_high[localization_language_index_]
|
|
.c_str()};
|
|
|
|
settings_items_offset += settings_items_padding;
|
|
ImGui::SetCursorPosY(settings_items_offset);
|
|
ImGui::AlignTextToFramePadding();
|
|
ImGui::Text(
|
|
"%s",
|
|
localization::video_quality[localization_language_index_].c_str());
|
|
ImGui::SameLine();
|
|
if (ConfigCenter::LANGUAGE::CHINESE == localization_language_) {
|
|
ImGui::SetCursorPosX(title_bar_button_width_ * 3.0f);
|
|
} else {
|
|
ImGui::SetCursorPosX(title_bar_button_width_ * 4.5f);
|
|
}
|
|
|
|
ImGui::SetNextItemWidth(title_bar_button_width_ * 1.8f);
|
|
if (ImGui::BeginCombo(
|
|
"##video_quality",
|
|
video_quality_items[video_quality_button_value_])) {
|
|
ImGui::SetWindowFontScale(0.5f);
|
|
for (int i = 0; i < IM_ARRAYSIZE(video_quality_items); i++) {
|
|
bool selected = (i == video_quality_button_value_);
|
|
if (ImGui::Selectable(video_quality_items[i], selected))
|
|
video_quality_button_value_ = i;
|
|
}
|
|
|
|
ImGui::EndCombo();
|
|
}
|
|
}
|
|
|
|
ImGui::Separator();
|
|
|
|
{
|
|
const char* video_frame_rate_items[] = {"30 fps", "60 fps"};
|
|
|
|
settings_items_offset += settings_items_padding;
|
|
ImGui::SetCursorPosY(settings_items_offset);
|
|
ImGui::AlignTextToFramePadding();
|
|
ImGui::Text("%s",
|
|
localization::video_frame_rate[localization_language_index_]
|
|
.c_str());
|
|
ImGui::SameLine();
|
|
if (ConfigCenter::LANGUAGE::CHINESE == localization_language_) {
|
|
ImGui::SetCursorPosX(title_bar_button_width_ * 3.0f);
|
|
} else {
|
|
ImGui::SetCursorPosX(title_bar_button_width_ * 4.5f);
|
|
}
|
|
|
|
ImGui::SetNextItemWidth(title_bar_button_width_ * 1.8f);
|
|
if (ImGui::BeginCombo(
|
|
"##video_frame_rate",
|
|
video_frame_rate_items[video_frame_rate_button_value_])) {
|
|
ImGui::SetWindowFontScale(0.5f);
|
|
for (int i = 0; i < IM_ARRAYSIZE(video_frame_rate_items); i++) {
|
|
bool selected = (i == video_frame_rate_button_value_);
|
|
if (ImGui::Selectable(video_frame_rate_items[i], selected))
|
|
video_frame_rate_button_value_ = i;
|
|
}
|
|
|
|
ImGui::EndCombo();
|
|
}
|
|
}
|
|
|
|
ImGui::Separator();
|
|
|
|
{
|
|
const char* video_encode_format_items[] = {
|
|
localization::h264[localization_language_index_].c_str(),
|
|
localization::av1[localization_language_index_].c_str()};
|
|
|
|
settings_items_offset += settings_items_padding;
|
|
ImGui::SetCursorPosY(settings_items_offset);
|
|
ImGui::AlignTextToFramePadding();
|
|
ImGui::Text(
|
|
"%s",
|
|
localization::video_encode_format[localization_language_index_]
|
|
.c_str());
|
|
ImGui::SameLine();
|
|
if (ConfigCenter::LANGUAGE::CHINESE == localization_language_) {
|
|
ImGui::SetCursorPosX(title_bar_button_width_ * 3.0f);
|
|
} else {
|
|
ImGui::SetCursorPosX(title_bar_button_width_ * 4.5f);
|
|
}
|
|
|
|
ImGui::SetNextItemWidth(title_bar_button_width_ * 1.8f);
|
|
if (ImGui::BeginCombo(
|
|
"##video_encode_format",
|
|
video_encode_format_items[video_encode_format_button_value_])) {
|
|
ImGui::SetWindowFontScale(0.5f);
|
|
for (int i = 0; i < IM_ARRAYSIZE(video_encode_format_items); i++) {
|
|
bool selected = (i == video_encode_format_button_value_);
|
|
if (ImGui::Selectable(video_encode_format_items[i], selected))
|
|
video_encode_format_button_value_ = i;
|
|
}
|
|
|
|
ImGui::EndCombo();
|
|
}
|
|
}
|
|
|
|
#if (((defined(_WIN32) || defined(__linux__)) && !defined(__aarch64__) && \
|
|
!defined(__arm__) && USE_CUDA) || \
|
|
defined(__APPLE__))
|
|
ImGui::Separator();
|
|
|
|
{
|
|
settings_items_offset += settings_items_padding;
|
|
ImGui::SetCursorPosY(settings_items_offset);
|
|
ImGui::AlignTextToFramePadding();
|
|
ImGui::Text("%s", localization::enable_hardware_video_codec
|
|
[localization_language_index_]
|
|
.c_str());
|
|
ImGui::SameLine();
|
|
if (ConfigCenter::LANGUAGE::CHINESE == localization_language_) {
|
|
ImGui::SetCursorPosX(title_bar_button_width_ * 4.275f);
|
|
} else {
|
|
ImGui::SetCursorPosX(title_bar_button_width_ * 5.755f);
|
|
}
|
|
|
|
ImGui::Checkbox("##enable_hardware_video_codec",
|
|
&enable_hardware_video_codec_);
|
|
}
|
|
#endif
|
|
|
|
ImGui::Separator();
|
|
|
|
{
|
|
settings_items_offset += settings_items_padding;
|
|
ImGui::SetCursorPosY(settings_items_offset);
|
|
ImGui::AlignTextToFramePadding();
|
|
ImGui::Text(
|
|
"%s",
|
|
localization::enable_turn[localization_language_index_].c_str());
|
|
ImGui::SameLine();
|
|
if (ConfigCenter::LANGUAGE::CHINESE == localization_language_) {
|
|
ImGui::SetCursorPosX(title_bar_button_width_ * 4.275f);
|
|
} else {
|
|
ImGui::SetCursorPosX(title_bar_button_width_ * 5.755f);
|
|
}
|
|
|
|
ImGui::Checkbox("##enable_turn", &enable_turn_);
|
|
}
|
|
|
|
ImGui::Separator();
|
|
|
|
{
|
|
settings_items_offset += settings_items_padding;
|
|
ImGui::SetCursorPosY(settings_items_offset);
|
|
ImGui::AlignTextToFramePadding();
|
|
ImGui::Text(
|
|
"%s",
|
|
localization::enable_srtp[localization_language_index_].c_str());
|
|
ImGui::SameLine();
|
|
if (ConfigCenter::LANGUAGE::CHINESE == localization_language_) {
|
|
ImGui::SetCursorPosX(title_bar_button_width_ * 4.275f);
|
|
} else {
|
|
ImGui::SetCursorPosX(title_bar_button_width_ * 5.755f);
|
|
}
|
|
|
|
ImGui::Checkbox("##enable_srtp", &enable_srtp_);
|
|
}
|
|
|
|
ImGui::Separator();
|
|
|
|
{
|
|
settings_items_offset += settings_items_padding;
|
|
ImGui::SetCursorPosY(settings_items_offset + 1);
|
|
ImGui::AlignTextToFramePadding();
|
|
if (ImGui::Button(localization::self_hosted_server_config
|
|
[localization_language_index_]
|
|
.c_str())) {
|
|
show_self_hosted_server_config_window_ = true;
|
|
}
|
|
ImGui::SameLine();
|
|
if (ConfigCenter::LANGUAGE::CHINESE == localization_language_) {
|
|
ImGui::SetCursorPosX(title_bar_button_width_ * 4.275f);
|
|
} else {
|
|
ImGui::SetCursorPosX(title_bar_button_width_ * 5.755f);
|
|
}
|
|
|
|
ImGui::Checkbox("##enable_self_hosted", &enable_self_hosted_);
|
|
}
|
|
|
|
ImGui::Separator();
|
|
|
|
{
|
|
settings_items_offset += settings_items_padding;
|
|
ImGui::SetCursorPosY(settings_items_offset);
|
|
ImGui::AlignTextToFramePadding();
|
|
ImGui::Text("%s",
|
|
localization::enable_autostart[localization_language_index_]
|
|
.c_str());
|
|
ImGui::SameLine();
|
|
if (ConfigCenter::LANGUAGE::CHINESE == localization_language_) {
|
|
ImGui::SetCursorPosX(title_bar_button_width_ * 4.275f);
|
|
} else {
|
|
ImGui::SetCursorPosX(title_bar_button_width_ * 5.755f);
|
|
}
|
|
|
|
ImGui::Checkbox("##enable_autostart_", &enable_autostart_);
|
|
}
|
|
|
|
ImGui::Separator();
|
|
|
|
{
|
|
settings_items_offset += settings_items_padding;
|
|
ImGui::SetCursorPosY(settings_items_offset);
|
|
ImGui::AlignTextToFramePadding();
|
|
ImGui::Text(
|
|
"%s",
|
|
localization::enable_daemon[localization_language_index_].c_str());
|
|
ImGui::SameLine();
|
|
if (ConfigCenter::LANGUAGE::CHINESE == localization_language_) {
|
|
ImGui::SetCursorPosX(title_bar_button_width_ * 4.275f);
|
|
} else {
|
|
ImGui::SetCursorPosX(title_bar_button_width_ * 5.755f);
|
|
}
|
|
|
|
ImGui::Checkbox("##enable_daemon_", &enable_daemon_);
|
|
if (ImGui::IsItemHovered()) {
|
|
ImGui::BeginTooltip();
|
|
ImGui::SetWindowFontScale(0.5f);
|
|
ImGui::Text("%s", localization::takes_effect_after_restart
|
|
[localization_language_index_]
|
|
.c_str());
|
|
ImGui::SetWindowFontScale(1.0f);
|
|
ImGui::EndTooltip();
|
|
}
|
|
}
|
|
|
|
ImGui::Separator();
|
|
|
|
{
|
|
#ifndef _WIN32
|
|
ImGui::BeginDisabled();
|
|
ImGui::PushStyleColor(ImGuiCol_Text, ImVec4(0.5f, 0.5f, 0.5f, 1.0f));
|
|
#endif
|
|
settings_items_offset += settings_items_padding;
|
|
ImGui::SetCursorPosY(settings_items_offset);
|
|
ImGui::AlignTextToFramePadding();
|
|
ImGui::Text("%s",
|
|
localization::minimize_to_tray[localization_language_index_]
|
|
.c_str());
|
|
ImGui::SameLine();
|
|
if (ConfigCenter::LANGUAGE::CHINESE == localization_language_) {
|
|
ImGui::SetCursorPosX(title_bar_button_width_ * 4.275f);
|
|
} else {
|
|
ImGui::SetCursorPosX(title_bar_button_width_ * 5.755f);
|
|
}
|
|
|
|
ImGui::Checkbox("##enable_minimize_to_tray_",
|
|
&enable_minimize_to_tray_);
|
|
#ifndef _WIN32
|
|
ImGui::PopStyleColor();
|
|
ImGui::EndDisabled();
|
|
#endif
|
|
}
|
|
|
|
ImGui::Separator();
|
|
|
|
{
|
|
settings_items_offset += settings_items_padding;
|
|
ImGui::SetCursorPosY(settings_items_offset);
|
|
ImGui::AlignTextToFramePadding();
|
|
ImGui::Text(
|
|
"%s",
|
|
localization::file_transfer_save_path[localization_language_index_]
|
|
.c_str());
|
|
ImGui::SameLine();
|
|
if (ConfigCenter::LANGUAGE::CHINESE == localization_language_) {
|
|
ImGui::SetCursorPosX(title_bar_button_width_ * 2.82f);
|
|
} else {
|
|
ImGui::SetCursorPosX(title_bar_button_width_ * 4.3f);
|
|
}
|
|
|
|
std::string display_path =
|
|
strlen(file_transfer_save_path_buf_) > 0
|
|
? file_transfer_save_path_buf_
|
|
: localization::default_desktop[localization_language_index_];
|
|
ImGui::PushStyleColor(ImGuiCol_Button, ImVec4(1.0f, 1.0f, 1.0f, 1.0f));
|
|
ImGui::PushStyleColor(ImGuiCol_ButtonHovered,
|
|
ImVec4(0.95f, 0.95f, 0.95f, 1.0f));
|
|
ImGui::PushStyleColor(ImGuiCol_ButtonActive,
|
|
ImVec4(0.9f, 0.9f, 0.9f, 1.0f));
|
|
ImGui::PushFont(main_windows_system_chinese_font_);
|
|
if (ImGui::Button(display_path.c_str(),
|
|
ImVec2(title_bar_button_width_ * 2.0f, 0))) {
|
|
const char* folder =
|
|
tinyfd_selectFolderDialog(localization::file_transfer_save_path
|
|
[localization_language_index_]
|
|
.c_str(),
|
|
strlen(file_transfer_save_path_buf_) > 0
|
|
? file_transfer_save_path_buf_
|
|
: nullptr);
|
|
if (folder) {
|
|
strncpy(file_transfer_save_path_buf_, folder,
|
|
sizeof(file_transfer_save_path_buf_) - 1);
|
|
file_transfer_save_path_buf_[sizeof(file_transfer_save_path_buf_) -
|
|
1] = '\0';
|
|
}
|
|
}
|
|
if (ImGui::IsItemHovered() &&
|
|
strlen(file_transfer_save_path_buf_) > 0) {
|
|
ImGui::BeginTooltip();
|
|
ImGui::SetWindowFontScale(0.5f);
|
|
ImGui::Text("%s", file_transfer_save_path_buf_);
|
|
ImGui::SetWindowFontScale(1.0f);
|
|
ImGui::EndTooltip();
|
|
}
|
|
ImGui::PopFont();
|
|
ImGui::PopStyleColor(3);
|
|
}
|
|
|
|
if (stream_window_inited_) {
|
|
ImGui::EndDisabled();
|
|
}
|
|
|
|
if (ConfigCenter::LANGUAGE::CHINESE == localization_language_) {
|
|
ImGui::SetCursorPosX(title_bar_button_width_ * 1.59f);
|
|
} else {
|
|
ImGui::SetCursorPosX(title_bar_button_width_ * 2.22f);
|
|
}
|
|
|
|
settings_items_offset +=
|
|
settings_items_padding + title_bar_button_width_ * 0.3f;
|
|
ImGui::SetCursorPosY(settings_items_offset);
|
|
|
|
ImGui::PopStyleVar();
|
|
|
|
// OK
|
|
if (ImGui::Button(
|
|
localization::ok[localization_language_index_].c_str())) {
|
|
show_settings_window_ = false;
|
|
show_self_hosted_server_config_window_ = false;
|
|
|
|
// Language
|
|
language_button_value_ =
|
|
localization::detail::ClampLanguageIndex(language_button_value_);
|
|
if (language_button_value_ == 0) {
|
|
localization_language_ = ConfigCenter::LANGUAGE::CHINESE;
|
|
} else if (language_button_value_ == 1) {
|
|
localization_language_ = ConfigCenter::LANGUAGE::ENGLISH;
|
|
} else {
|
|
localization_language_ = ConfigCenter::LANGUAGE::RUSSIAN;
|
|
}
|
|
config_center_->SetLanguage(localization_language_);
|
|
language_button_value_last_ = language_button_value_;
|
|
localization_language_index_ = language_button_value_;
|
|
LOG_INFO("Set localization language: {}",
|
|
localization::GetSupportedLanguages()
|
|
[localization::detail::ClampLanguageIndex(
|
|
localization_language_index_)]
|
|
.code
|
|
.c_str());
|
|
|
|
// Video quality
|
|
if (video_quality_button_value_ == 0) {
|
|
config_center_->SetVideoQuality(ConfigCenter::VIDEO_QUALITY::LOW);
|
|
} else if (video_quality_button_value_ == 1) {
|
|
config_center_->SetVideoQuality(ConfigCenter::VIDEO_QUALITY::MEDIUM);
|
|
} else {
|
|
config_center_->SetVideoQuality(ConfigCenter::VIDEO_QUALITY::HIGH);
|
|
}
|
|
video_quality_button_value_last_ = video_quality_button_value_;
|
|
|
|
if (video_frame_rate_button_value_ == 0) {
|
|
config_center_->SetVideoFrameRate(
|
|
ConfigCenter::VIDEO_FRAME_RATE::FPS_30);
|
|
} else if (video_frame_rate_button_value_ == 1) {
|
|
config_center_->SetVideoFrameRate(
|
|
ConfigCenter::VIDEO_FRAME_RATE::FPS_60);
|
|
}
|
|
video_frame_rate_button_value_last_ = video_frame_rate_button_value_;
|
|
|
|
// Video encode format
|
|
if (video_encode_format_button_value_ == 0) {
|
|
config_center_->SetVideoEncodeFormat(
|
|
ConfigCenter::VIDEO_ENCODE_FORMAT::H264);
|
|
} else if (video_encode_format_button_value_ == 1) {
|
|
config_center_->SetVideoEncodeFormat(
|
|
ConfigCenter::VIDEO_ENCODE_FORMAT::AV1);
|
|
}
|
|
video_encode_format_button_value_last_ =
|
|
video_encode_format_button_value_;
|
|
|
|
// Hardware video codec
|
|
if (enable_hardware_video_codec_) {
|
|
config_center_->SetHardwareVideoCodec(true);
|
|
} else {
|
|
config_center_->SetHardwareVideoCodec(false);
|
|
}
|
|
enable_hardware_video_codec_last_ = enable_hardware_video_codec_;
|
|
|
|
// TURN mode
|
|
if (enable_turn_) {
|
|
config_center_->SetTurn(true);
|
|
} else {
|
|
config_center_->SetTurn(false);
|
|
}
|
|
enable_turn_last_ = enable_turn_;
|
|
|
|
// SRTP
|
|
if (enable_srtp_) {
|
|
config_center_->SetSrtp(true);
|
|
} else {
|
|
config_center_->SetSrtp(false);
|
|
}
|
|
enable_srtp_last_ = enable_srtp_;
|
|
|
|
if (enable_self_hosted_) {
|
|
config_center_->SetSelfHosted(true);
|
|
} else {
|
|
config_center_->SetSelfHosted(false);
|
|
}
|
|
enable_self_hosted_last_ = enable_self_hosted_;
|
|
|
|
if (enable_autostart_) {
|
|
config_center_->SetAutostart(true);
|
|
} else {
|
|
config_center_->SetAutostart(false);
|
|
}
|
|
enable_autostart_last_ = enable_autostart_;
|
|
|
|
if (enable_daemon_) {
|
|
config_center_->SetDaemon(true);
|
|
} else {
|
|
config_center_->SetDaemon(false);
|
|
}
|
|
enable_daemon_last_ = enable_daemon_;
|
|
|
|
#if _WIN32
|
|
if (enable_minimize_to_tray_) {
|
|
config_center_->SetMinimizeToTray(true);
|
|
} else {
|
|
config_center_->SetMinimizeToTray(false);
|
|
}
|
|
enable_minimize_to_tray_last_ = enable_minimize_to_tray_;
|
|
#endif
|
|
|
|
// File transfer save path
|
|
config_center_->SetFileTransferSavePath(file_transfer_save_path_buf_);
|
|
file_transfer_save_path_last_ = file_transfer_save_path_buf_;
|
|
|
|
settings_window_pos_reset_ = true;
|
|
|
|
// Recreate peer instance
|
|
LoadSettingsFromCacheFile();
|
|
|
|
// Recreate peer instance
|
|
if (!stream_window_inited_) {
|
|
LOG_INFO("Recreate peer instance");
|
|
CleanupPeers();
|
|
CreateConnectionPeer();
|
|
}
|
|
}
|
|
|
|
ImGui::SameLine();
|
|
// Cancel
|
|
if (ImGui::Button(
|
|
localization::cancel[localization_language_index_].c_str())) {
|
|
show_settings_window_ = false;
|
|
show_self_hosted_server_config_window_ = false;
|
|
|
|
if (language_button_value_ != language_button_value_last_) {
|
|
language_button_value_ = language_button_value_last_;
|
|
}
|
|
|
|
if (video_quality_button_value_ != video_quality_button_value_last_) {
|
|
video_quality_button_value_ = video_quality_button_value_last_;
|
|
}
|
|
|
|
if (video_frame_rate_button_value_ !=
|
|
video_frame_rate_button_value_last_) {
|
|
video_frame_rate_button_value_ = video_frame_rate_button_value_last_;
|
|
}
|
|
|
|
if (video_encode_format_button_value_ !=
|
|
video_encode_format_button_value_last_) {
|
|
video_encode_format_button_value_ =
|
|
video_encode_format_button_value_last_;
|
|
}
|
|
|
|
if (enable_hardware_video_codec_ != enable_hardware_video_codec_last_) {
|
|
enable_hardware_video_codec_ = enable_hardware_video_codec_last_;
|
|
}
|
|
|
|
if (enable_turn_ != enable_turn_last_) {
|
|
enable_turn_ = enable_turn_last_;
|
|
}
|
|
|
|
// Restore file transfer save path
|
|
strncpy(file_transfer_save_path_buf_,
|
|
file_transfer_save_path_last_.c_str(),
|
|
sizeof(file_transfer_save_path_buf_) - 1);
|
|
file_transfer_save_path_buf_[sizeof(file_transfer_save_path_buf_) - 1] =
|
|
'\0';
|
|
|
|
settings_window_pos_reset_ = true;
|
|
}
|
|
ImGui::SetWindowFontScale(0.5f);
|
|
ImGui::End();
|
|
ImGui::PopStyleVar(2);
|
|
ImGui::PopStyleColor();
|
|
}
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
} // namespace crossdesk
|