Moved the downgradable status tracking to the UI

This commit is contained in:
kabachuha 2020-11-18 20:49:49 +03:00
parent 967504aba5
commit 2a2a2e84e8
3 changed files with 36 additions and 1 deletions

View file

@ -55,7 +55,7 @@ addon_tracking_info get_addon_tracking_info(const addon_info& addon)
if(t.remote_version == t.installed_version) {
t.state = ADDON_INSTALLED;
} else if(t.remote_version > t.installed_version || t.remote_version < t.installed_version) {
} else if(t.remote_version > t.installed_version) {
t.state = ADDON_INSTALLED_UPGRADABLE;
} else if(t.remote_version == version_info()) {
// Remote version not set.

View file

@ -440,6 +440,15 @@ void addon_manager::pre_show(window& window)
stk->select_layer(0);
}
widget* version_filter_parent = &window;
if(stacked_widget* stk = find_widget<stacked_widget>(&window, "main_stack", false, false)) {
version_filter_parent = stk->get_layer_grid(1);
}
menu_button& version_filter = find_widget<menu_button>(version_filter_parent, "version_filter", false);
connect_signal_notify_modified(version_filter,
std::bind(&addon_manager::on_selected_version_change, this, std::ref(window)));
on_addon_select(window);
window.set_enter_disabled(true);
@ -973,6 +982,31 @@ void addon_manager::on_addon_select(window& window)
version_filter.set_values(version_filter_entries);
}
void addon_manager::on_selected_version_change(window& window)
{
widget* parent = &window;
if(stacked_widget* stk = find_widget<stacked_widget>(&window, "main_stack", false, false)) {
parent = stk->get_layer_grid(1);
}
const addon_info* info = find_widget<addon_list>(&window, "addons", false).get_selected_addon();
if(info == nullptr) {
return;
}
if(!tracking_info_[info->id].can_publish && is_installed_addon_status(tracking_info_[info->id].state)) {
bool updatable = tracking_info_[info->id].installed_version
!= find_widget<menu_button>(parent, "version_filter", false).get_value_string();
stacked_widget& action_stack = find_widget<stacked_widget>(parent, "action_stack", false);
action_stack.select_layer(0);
stacked_widget& install_update_stack = find_widget<stacked_widget>(parent, "install_update_stack", false);
install_update_stack.select_layer(1);
find_widget<button>(parent, "update", false).set_active(updatable);
}
}
bool addon_manager::exit_hook(window& window)
{
if(window.get_retval() == addon_list::DEFAULT_ACTION_RETVAL) {

View file

@ -145,6 +145,7 @@ private:
boost::dynamic_bitset<> get_status_filter_visibility(const window& window) const;
boost::dynamic_bitset<> get_type_filter_visibility(const window& window) const;
void on_selected_version_change(window& window);
bool exit_hook(window& window);
};