Clean up some more reference passing related to server and clients and use the Resource Manager instead

This commit is contained in:
Adam Honse 2020-09-22 12:37:41 -05:00
parent 128bfc7792
commit 55bf28d4c3
7 changed files with 34 additions and 40 deletions

View file

@ -101,7 +101,7 @@ NetworkServer* ResourceManager::GetServer()
return(server);
}
std::vector<NetworkClient*> ResourceManager::GetClients()
std::vector<NetworkClient*>& ResourceManager::GetClients()
{
return(clients);
}

View file

@ -40,8 +40,8 @@ public:
unsigned int GetDetectionPercent();
const char* GetDetectionString();
std::vector<NetworkClient*> GetClients();
NetworkServer* GetServer();
std::vector<NetworkClient*>& GetClients();
NetworkServer* GetServer();
void DeviceListChanged();

View file

@ -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)
{

View file

@ -1,5 +1,6 @@
#include <QSignalMapper>
#include "OpenRGBClientInfoPage.h"
#include "ResourceManager.h"
using namespace Ui;
@ -18,8 +19,7 @@ public:
OpenRGBClientInfoPage::OpenRGBClientInfoPage(std::vector<RGBController *>& 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;
}
}

View file

@ -30,9 +30,6 @@ private slots:
private:
Ui::OpenRGBClientInfoPageUi *ui;
std::vector<RGBController *>& controllers;
std::vector<NetworkClient*> rgb_clients;
signals:
void ClientListUpdated();
};

View file

@ -171,6 +171,16 @@ OpenRGBDialog2::OpenRGBDialog2(std::vector<i2c_smbus_interface *>& 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()

View file

@ -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);