diff --git a/ResourceManager.cpp b/ResourceManager.cpp index 751e0ab0..97e2d619 100644 --- a/ResourceManager.cpp +++ b/ResourceManager.cpp @@ -101,7 +101,7 @@ NetworkServer* ResourceManager::GetServer() return(server); } -std::vector ResourceManager::GetClients() +std::vector& ResourceManager::GetClients() { return(clients); } diff --git a/ResourceManager.h b/ResourceManager.h index 2d3bc0b8..e79284d0 100644 --- a/ResourceManager.h +++ b/ResourceManager.h @@ -40,8 +40,8 @@ public: unsigned int GetDetectionPercent(); const char* GetDetectionString(); - std::vector GetClients(); - NetworkServer* GetServer(); + std::vector& GetClients(); + NetworkServer* GetServer(); void DeviceListChanged(); diff --git a/main.cpp b/main.cpp index 9666c889..fbaaa581 100644 --- a/main.cpp +++ b/main.cpp @@ -180,17 +180,7 @@ int main(int argc, char* argv[]) dlg.AddI2CToolsPage(); } - if(ResourceManager::get()->GetClients().size() == 0) - { - dlg.AddServerTab(ResourceManager::get()->GetServer()); - } - dlg.AddClientTab(); - - for(std::size_t client_idx = 0; client_idx < ResourceManager::get()->GetClients().size(); client_idx++) - { - dlg.AddClient(ResourceManager::get()->GetClients()[client_idx]); - } if(ret_flags & RET_FLAG_START_MINIMIZED) { diff --git a/qt/OpenRGBClientInfoPage.cpp b/qt/OpenRGBClientInfoPage.cpp index b7de4ac6..b713df86 100644 --- a/qt/OpenRGBClientInfoPage.cpp +++ b/qt/OpenRGBClientInfoPage.cpp @@ -1,5 +1,6 @@ #include #include "OpenRGBClientInfoPage.h" +#include "ResourceManager.h" using namespace Ui; @@ -18,8 +19,7 @@ public: OpenRGBClientInfoPage::OpenRGBClientInfoPage(std::vector& control, QWidget *parent) : QFrame(parent), - ui(new Ui::OpenRGBClientInfoPageUi), - controllers(control) + ui(new Ui::OpenRGBClientInfoPageUi) { /*-----------------------------------------------------*\ | Set initial values for GUI fields | @@ -48,7 +48,7 @@ void OpenRGBClientInfoPage::AddClient(NetworkClient* new_client) \*-----------------------------------------------------*/ if(new_client != NULL) { - rgb_clients.push_back(new_client); + ResourceManager::get()->GetClients().push_back(new_client); new_client->RegisterClientInfoChangeCallback(UpdateInfoCallback, this); UpdateInfo(); @@ -80,14 +80,14 @@ void OpenRGBClientInfoPage::UpdateInfo() /*-----------------------------------------------------*\ | Loop through all clients in list and display them | \*-----------------------------------------------------*/ - for(std::size_t client_idx = 0; client_idx < rgb_clients.size(); client_idx++) + for(std::size_t client_idx = 0; client_idx < ResourceManager::get()->GetClients().size(); client_idx++) { /*-----------------------------------------------------*\ | Create the top level tree widget items and display the| | client IP addresses in them | \*-----------------------------------------------------*/ QTreeWidgetItem* new_top_item = new QTreeWidgetItem(ui->ClientTree); - new_top_item->setText(0, QString::fromStdString(rgb_clients[client_idx]->GetIP())); + new_top_item->setText(0, QString::fromStdString(ResourceManager::get()->GetClients()[client_idx]->GetIP())); /*-----------------------------------------------------*\ | Create the disconnect buttons and connect them to the | @@ -99,26 +99,26 @@ void OpenRGBClientInfoPage::UpdateInfo() connect(new_button, SIGNAL(clicked()), signalMapper, SLOT(map())); NetworkClientPointer * new_arg = new NetworkClientPointer(); - new_arg->net_client = rgb_clients[client_idx]; + new_arg->net_client = ResourceManager::get()->GetClients()[client_idx]; signalMapper->setMapping(new_button, new_arg); /*-----------------------------------------------------*\ | Add child items for each device in the client | \*-----------------------------------------------------*/ - for(std::size_t dev_idx = 0; dev_idx < rgb_clients[client_idx]->server_controllers.size(); dev_idx++) + for(std::size_t dev_idx = 0; dev_idx < ResourceManager::get()->GetClients()[client_idx]->server_controllers.size(); dev_idx++) { /*-----------------------------------------------------*\ | Create child tree widget items and display the device | | names in them | \*-----------------------------------------------------*/ QTreeWidgetItem* new_item = new QTreeWidgetItem(new_top_item); - new_item->setText(0, QString::fromStdString(rgb_clients[client_idx]->server_controllers[dev_idx]->name)); + new_item->setText(0, QString::fromStdString(ResourceManager::get()->GetClients()[client_idx]->server_controllers[dev_idx]->name)); /*-----------------------------------------------------*\ | Add child items for each zone in the device | \*-----------------------------------------------------*/ - for(std::size_t zone_idx = 0; zone_idx < rgb_clients[client_idx]->server_controllers[dev_idx]->zones.size(); zone_idx++) + for(std::size_t zone_idx = 0; zone_idx < ResourceManager::get()->GetClients()[client_idx]->server_controllers[dev_idx]->zones.size(); zone_idx++) { /*-----------------------------------------------------*\ | Create child tree widget items and display the zone | @@ -126,11 +126,11 @@ void OpenRGBClientInfoPage::UpdateInfo() \*-----------------------------------------------------*/ QTreeWidgetItem* new_child = new QTreeWidgetItem(); - std::string zone_str = rgb_clients[client_idx]->server_controllers[dev_idx]->zones[zone_idx].name + ", "; - zone_str.append(std::to_string(rgb_clients[client_idx]->server_controllers[dev_idx]->zones[zone_idx].leds_count)); + std::string zone_str = ResourceManager::get()->GetClients()[client_idx]->server_controllers[dev_idx]->zones[zone_idx].name + ", "; + zone_str.append(std::to_string(ResourceManager::get()->GetClients()[client_idx]->server_controllers[dev_idx]->zones[zone_idx].leds_count)); zone_str.append(" LEDs, "); - switch(rgb_clients[client_idx]->server_controllers[dev_idx]->zones[zone_idx].type) + switch(ResourceManager::get()->GetClients()[client_idx]->server_controllers[dev_idx]->zones[zone_idx].type) { case ZONE_TYPE_SINGLE: zone_str.append("Single"); @@ -169,7 +169,7 @@ void Ui::OpenRGBClientInfoPage::on_ClientConnectButton_clicked() /*-----------------------------------------------------*\ | Create a new client and set name, IP, and port values | \*-----------------------------------------------------*/ - NetworkClient * rgb_client = new NetworkClient(controllers); + NetworkClient * rgb_client = new NetworkClient(ResourceManager::get()->GetRGBControllers()); std::string titleString = "OpenRGB "; titleString.append(VERSION_STRING); @@ -183,7 +183,7 @@ void Ui::OpenRGBClientInfoPage::on_ClientConnectButton_clicked() /*-----------------------------------------------------*\ | Add new client to list and register update callback | \*-----------------------------------------------------*/ - rgb_clients.push_back(rgb_client); + ResourceManager::get()->GetClients().push_back(rgb_client); rgb_client->RegisterClientInfoChangeCallback(UpdateInfoCallback, this); } @@ -203,11 +203,11 @@ void Ui::OpenRGBClientInfoPage::on_ClientDisconnectButton_clicked(QObject * arg) /*-----------------------------------------------------*\ | Remove disconnecting client from list | \*-----------------------------------------------------*/ - for(unsigned int client_idx = 0; client_idx < rgb_clients.size(); client_idx++) + for(unsigned int client_idx = 0; client_idx < ResourceManager::get()->GetClients().size(); client_idx++) { - if(disconnect_client == rgb_clients[client_idx]) + if(disconnect_client == ResourceManager::get()->GetClients()[client_idx]) { - rgb_clients.erase(rgb_clients.begin() + client_idx); + ResourceManager::get()->GetClients().erase(ResourceManager::get()->GetClients().begin() + client_idx); break; } } diff --git a/qt/OpenRGBClientInfoPage.h b/qt/OpenRGBClientInfoPage.h index 15321cb0..8b682d47 100644 --- a/qt/OpenRGBClientInfoPage.h +++ b/qt/OpenRGBClientInfoPage.h @@ -30,9 +30,6 @@ private slots: private: Ui::OpenRGBClientInfoPageUi *ui; - std::vector& controllers; - std::vector rgb_clients; - signals: void ClientListUpdated(); }; diff --git a/qt/OpenRGBDialog2.cpp b/qt/OpenRGBDialog2.cpp index 0825f49f..8da11ed6 100644 --- a/qt/OpenRGBDialog2.cpp +++ b/qt/OpenRGBDialog2.cpp @@ -171,6 +171,16 @@ OpenRGBDialog2::OpenRGBDialog2(std::vector& bus, std::vec | ProgressBar gets a proper value | \*-----------------------------------------------------*/ UpdateDevicesList(); + + /*-----------------------------------------------------*\ + | Add Server Tab | + \*-----------------------------------------------------*/ + AddServerTab(); + + /*-----------------------------------------------------*\ + | Add Client Tab | + \*-----------------------------------------------------*/ + AddClientTab(); } OpenRGBDialog2::~OpenRGBDialog2() @@ -264,16 +274,13 @@ void OpenRGBDialog2::AddClient(NetworkClient* new_client) } } -void OpenRGBDialog2::AddServerTab(NetworkServer* network_server) +void OpenRGBDialog2::AddServerTab() { /*-----------------------------------------------------*\ | Add server information tab if there is a server | \*-----------------------------------------------------*/ - if(network_server != NULL) - { - OpenRGBServerInfoPage *ServerInfoPage = new OpenRGBServerInfoPage(network_server); - ui->MainTabBar->addTab(ServerInfoPage, "SDK Server"); - } + OpenRGBServerInfoPage *ServerInfoPage = new OpenRGBServerInfoPage(ResourceManager::get()->GetServer()); + ui->MainTabBar->addTab(ServerInfoPage, "SDK Server"); } void OpenRGBDialog2::ClearDevicesList() diff --git a/qt/OpenRGBDialog2.h b/qt/OpenRGBDialog2.h index 462142d4..670ec332 100644 --- a/qt/OpenRGBDialog2.h +++ b/qt/OpenRGBDialog2.h @@ -35,7 +35,7 @@ public: void AddClient(NetworkClient* new_client); void AddClientTab(); void AddI2CToolsPage(); - void AddServerTab(NetworkServer* network_server); + void AddServerTab(); void setMode(unsigned char mode_val);