|
@@ -30,23 +30,41 @@ namespace components {
|
|
|
"720p",
|
|
|
"1080p"
|
|
|
};
|
|
|
-
|
|
|
- m_quality_dropdown = m_builder->get_widget<Gtk::DropDown>("quality_entry");
|
|
|
- m_cancel_btn = m_builder->get_widget<Gtk::Button>("cancel_button");
|
|
|
- m_save_btn = m_builder->get_widget<Gtk::Button>("saveclose_button");
|
|
|
|
|
|
- assert(m_quality_dropdown != nullptr);
|
|
|
- assert(m_cancel_btn != nullptr);
|
|
|
- assert(m_save_btn != nullptr);
|
|
|
+ m_save_btn = m_builder->get_widget<Gtk::Button>("saveclose_button");
|
|
|
+ m_cancel_btn = m_builder->get_widget<Gtk::Button>("cancel_button");
|
|
|
+ m_mpvpath_entry = m_builder->get_widget<Gtk::Entry>("mpvpath_entry");
|
|
|
+ m_quality_dropdown = m_builder->get_widget<Gtk::DropDown>("quality_entry");
|
|
|
+ m_apikey_entry = m_builder->get_widget<Gtk::Entry>("apikey_entry");
|
|
|
|
|
|
- auto string_list = Gtk::StringList::create(quality_strings);
|
|
|
- m_quality_dropdown->set_model(string_list);
|
|
|
+ m_miniplayer_btn = m_builder->get_widget<Gtk::CheckButton>("minimode_entry");
|
|
|
+ m_fullscreen_btn = m_builder->get_widget<Gtk::CheckButton>("fullscreen_entry");
|
|
|
+ m_ontop_btn = m_builder->get_widget<Gtk::CheckButton>("ontop_entry");
|
|
|
|
|
|
+ assert(m_quality_dropdown != nullptr);
|
|
|
+ assert(m_cancel_btn != nullptr);
|
|
|
+ assert(m_save_btn != nullptr);
|
|
|
+ assert(m_mpvpath_entry != nullptr);
|
|
|
+ assert(m_apikey_entry != nullptr);
|
|
|
+ assert(m_miniplayer_btn != nullptr);
|
|
|
+ assert(m_fullscreen_btn != nullptr);
|
|
|
+ assert(m_ontop_btn != nullptr);
|
|
|
+
|
|
|
+ // Кнопки
|
|
|
m_save_btn->signal_clicked().connect(sigc::mem_fun(
|
|
|
*this, &PrefWindow::onSaveClicked));
|
|
|
m_cancel_btn->signal_clicked().connect(sigc::mem_fun(
|
|
|
*this, &PrefWindow::onCancelClicked));
|
|
|
|
|
|
+ // Ключ API
|
|
|
+ m_apikey_entry->set_text(appcore->getApiKey());
|
|
|
+
|
|
|
+ // Путь к MPV
|
|
|
+ m_mpvpath_entry->set_text(appcore->getMpvPath());
|
|
|
+
|
|
|
+ // Качество
|
|
|
+ auto string_list = Gtk::StringList::create(quality_strings);
|
|
|
+ m_quality_dropdown->set_model(string_list);
|
|
|
int selected_quality_index;
|
|
|
switch(m_appcore->getQuality())
|
|
|
{
|
|
@@ -70,6 +88,24 @@ namespace components {
|
|
|
break;
|
|
|
}
|
|
|
m_quality_dropdown->set_selected(selected_quality_index);
|
|
|
+
|
|
|
+ // Мини-плеер
|
|
|
+ this->prepareBoolButton(
|
|
|
+ m_miniplayer_btn,
|
|
|
+ appcore->getIsMiniplayer(),
|
|
|
+ BoolSettingType::MINIPLAYER);
|
|
|
+
|
|
|
+ // Полноэкранный режим
|
|
|
+ this->prepareBoolButton(
|
|
|
+ m_fullscreen_btn,
|
|
|
+ appcore->getFullscreen(),
|
|
|
+ BoolSettingType::FULLSCREEN);
|
|
|
+
|
|
|
+ // Режим поверх всех окон
|
|
|
+ this->prepareBoolButton(
|
|
|
+ m_ontop_btn,
|
|
|
+ appcore->getOnTop(),
|
|
|
+ BoolSettingType::ONTOP);
|
|
|
}
|
|
|
|
|
|
PrefWindow* PrefWindow::create(
|
|
@@ -98,6 +134,25 @@ namespace components {
|
|
|
this->close();
|
|
|
}
|
|
|
|
|
|
+ void PrefWindow::onBoolButtonClicked(BoolButtonParams params)
|
|
|
+ {
|
|
|
+ bool value = params.caller->get_active();
|
|
|
+ switch (params.setting_type)
|
|
|
+ {
|
|
|
+ case BoolSettingType::MINIPLAYER:
|
|
|
+ m_appcore->setMiniplayer(value);
|
|
|
+ break;
|
|
|
+ case BoolSettingType::FULLSCREEN:
|
|
|
+ m_appcore->setFullscreen(value);
|
|
|
+ break;
|
|
|
+ case BoolSettingType::ONTOP:
|
|
|
+ m_appcore->setOnTop(value);
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
void PrefWindow::saveConfig()
|
|
|
{
|
|
|
// Качество
|
|
@@ -125,7 +180,25 @@ namespace components {
|
|
|
break;
|
|
|
}
|
|
|
m_appcore->setQuality(quality);
|
|
|
-
|
|
|
+ m_appcore->setApiKey(m_apikey_entry->get_text());
|
|
|
+
|
|
|
m_appcore->saveConfig();
|
|
|
}
|
|
|
+
|
|
|
+ void PrefWindow::prepareBoolButton(
|
|
|
+ Gtk::CheckButton* widget,
|
|
|
+ bool default_value,
|
|
|
+ BoolSettingType setting_type)
|
|
|
+ {
|
|
|
+ widget->set_active(default_value);
|
|
|
+ widget->signal_toggled().connect(
|
|
|
+ sigc::bind(
|
|
|
+ sigc::mem_fun(*this, &PrefWindow::onBoolButtonClicked),
|
|
|
+ BoolButtonParams {
|
|
|
+ setting_type,
|
|
|
+ widget
|
|
|
+ }
|
|
|
+ )
|
|
|
+ );
|
|
|
+ }
|
|
|
}
|