diff --git a/data/gui/addons_update.stkgui b/data/gui/addons_update.stkgui
index 99f3286e6..07691ee18 100644
--- a/data/gui/addons_update.stkgui
+++ b/data/gui/addons_update.stkgui
@@ -2,7 +2,7 @@
-
+
diff --git a/src/addons/addons.cpp b/src/addons/addons.cpp
index aef107f3c..7ceaa3901 100644
--- a/src/addons/addons.cpp
+++ b/src/addons/addons.cpp
@@ -38,7 +38,7 @@
using namespace irr; /* irrXML which is used to read (not write) xml file,
is located in the namespace irr::io.*/
using namespace io;
-
+Addons* addons_manager = 0;
// ----------------------------------------------------------------------------
Addons::Addons()
diff --git a/src/addons/addons.hpp b/src/addons/addons.hpp
index 7ba2344d8..b6cdb5e5f 100644
--- a/src/addons/addons.hpp
+++ b/src/addons/addons.hpp
@@ -110,5 +110,6 @@ class Addons
std::string getDownloadStateAsStr();
};
+extern Addons * addons_manager;
#endif
#endif
diff --git a/src/main.cpp b/src/main.cpp
index 8b5bc7a57..31c80a0ed 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -71,6 +71,7 @@
#ifdef ADDONS_MANAGER
#include "addons/network.hpp"
+#include "addons/addons.hpp"
#endif
void cmdLineHelp (char* invocation)
@@ -543,6 +544,7 @@ void initRest()
network_manager = new NetworkManager ();
#ifdef ADDONS_MANAGER
network_http = new NetworkHttp ();
+ addons_manager = new Addons ();
#endif
stk_config->load(file_manager->getConfigFile("stk_config.xml"));
diff --git a/src/states_screens/addons_screen.cpp b/src/states_screens/addons_screen.cpp
index c352978f8..4af906356 100644
--- a/src/states_screens/addons_screen.cpp
+++ b/src/states_screens/addons_screen.cpp
@@ -63,18 +63,18 @@ void AddonsScreen::loadList()
std::cout << "load list" << std::endl;
GUIEngine::ListWidget* w_list = this->getWidget("list_addons");
w_list->clear();
- this->addons->resetIndex();
+ addons_manager->resetIndex();
//w_list->addItem("kart", _("Karts:"), -1 /* no icon */);
- while(this->addons->NextType(this->type))
+ while(addons_manager->NextType(this->type))
{
- std::cout << this->addons->GetName() << std::endl;
- if(this->addons->IsInstalledAsBool())
- w_list->addItem(this->addons->GetIdAsStr().c_str(),
- this->addons->GetName().c_str(), 0 /* icon installed */);
+ std::cout << addons_manager->GetName() << std::endl;
+ if(addons_manager->IsInstalledAsBool())
+ w_list->addItem(addons_manager->GetIdAsStr().c_str(),
+ addons_manager->GetName().c_str(), 0 /* icon installed */);
else
- w_list->addItem(this->addons->GetIdAsStr().c_str(),
- this->addons->GetName().c_str(), 1 /* icon unsinstalled*/);
+ w_list->addItem(addons_manager->GetIdAsStr().c_str(),
+ addons_manager->GetName().c_str(), 1 /* icon unsinstalled*/);
}
this->can_load_list = false;
@@ -101,8 +101,8 @@ void AddonsScreen::eventCallback(GUIEngine::Widget* widget, const std::string& n
if(addons != "track" && addons != "kart")
{
- this->addons->SelectId(addons);
- this->load = new AddonsLoading(this->addons, 0.8f, 0.8f);
+ addons_manager->SelectId(addons);
+ this->load = new AddonsLoading(addons_manager, 0.8f, 0.8f);
}
}
if (name == "category")
@@ -155,10 +155,7 @@ void AddonsScreen::init()
// ------------------------------------------------------------------------------------------------------
void * AddonsScreen::downloadList( void * pthis)
{
- AddonsScreen * pt = (AddonsScreen*)pthis;
- //load all karts...
- pt->addons = new Addons();
-
+ AddonsScreen * pt = (AddonsScreen*)pthis;
pthread_mutex_lock(&(pt->mutex));
pt->can_load_list = true;
pthread_mutex_unlock(&(pt->mutex));
diff --git a/src/states_screens/addons_update_screen.cpp b/src/states_screens/addons_update_screen.cpp
index 0e0a480ca..878e78835 100644
--- a/src/states_screens/addons_update_screen.cpp
+++ b/src/states_screens/addons_update_screen.cpp
@@ -81,6 +81,20 @@ void AddonsUpdateScreen::init()
{
Screen::init();
getWidget("category")->select("tab_update", PLAYER_ID_GAME_MASTER);
+
+ GUIEngine::ListWidget* w_list = this->getWidget("list_addons");
+ w_list->clear();
+ addons_manager->resetIndex();
+ //w_list->addItem("kart", _("Karts:"), -1 /* no icon */);
+ while(addons_manager->Next())
+ {
+ if(addons_manager->IsInstalledAsBool() && addons_manager->GetInstalledVersion() < addons_manager->GetVersion() )
+ {
+ std::cout << addons_manager->GetName() << std::endl;
+ w_list->addItem(addons_manager->GetIdAsStr().c_str(),
+ addons_manager->GetName().c_str(), 0);
+ }
+ }
}
#endif