Add client functionality to send rescan request and add rescan button for each client in client list
This commit is contained in:
parent
0cfe5ae0bb
commit
80dee91ab9
4 changed files with 67 additions and 24 deletions
|
|
@ -93,21 +93,24 @@ void OpenRGBClientInfoPage::UpdateInfo()
|
|||
/*-----------------------------------------------------*\
|
||||
| Set up the tree view header |
|
||||
\*-----------------------------------------------------*/
|
||||
ui->ClientTree->setColumnCount(4);
|
||||
ui->ClientTree->setColumnCount(5);
|
||||
ui->ClientTree->header()->setStretchLastSection(false);
|
||||
ui->ClientTree->header()->setSectionResizeMode(0, QHeaderView::Stretch);
|
||||
ui->ClientTree->setColumnWidth(1, 100);
|
||||
ui->ClientTree->setColumnWidth(2, 100);
|
||||
ui->ClientTree->setColumnWidth(3, 100);
|
||||
ui->ClientTree->setColumnWidth(4, 100);
|
||||
|
||||
/*-----------------------------------------------------*\
|
||||
| Set up a signal mapper to handle disconnect buttons |
|
||||
| Set up signal mappers to handle buttons |
|
||||
\*-----------------------------------------------------*/
|
||||
QSignalMapper* signalMapper = new QSignalMapper(this);
|
||||
connect(signalMapper, SIGNAL(mapped(QObject *)), this, SLOT(onClientDisconnectButton_clicked(QObject *)));
|
||||
QSignalMapper* signalMapperDisconnect = new QSignalMapper(this);
|
||||
QSignalMapper* signalMapperSave = new QSignalMapper(this);
|
||||
QSignalMapper* signalMapperRescan = new QSignalMapper(this);
|
||||
|
||||
QSignalMapper* signalMapperSave = new QSignalMapper(this);
|
||||
connect(signalMapperSave, SIGNAL(mapped(QObject *)), this, SLOT(onClientSaveCheckBox_clicked(QObject *)));
|
||||
connect(signalMapperDisconnect, SIGNAL(mapped(QObject *)), this, SLOT(onClientDisconnectButton_clicked(QObject *)));
|
||||
connect(signalMapperSave, SIGNAL(mapped(QObject *)), this, SLOT(onClientSaveCheckBox_clicked(QObject *)));
|
||||
connect(signalMapperRescan, SIGNAL(mapped(QObject *)), this, SLOT(onClientRescanButton_clicked(QObject *)));
|
||||
|
||||
/*-------------------------------------------------*\
|
||||
| Get Client settings |
|
||||
|
|
@ -157,32 +160,45 @@ void OpenRGBClientInfoPage::UpdateInfo()
|
|||
/*-----------------------------------------------------*\
|
||||
| Create the save checkbox |
|
||||
\*-----------------------------------------------------*/
|
||||
QCheckBox* new_checkbox = new QCheckBox( "" );
|
||||
ui->ClientTree->setItemWidget(new_top_item, 2, new_checkbox);
|
||||
new_checkbox->setChecked(found);
|
||||
QCheckBox* checkbox_save = new QCheckBox( "" );
|
||||
ui->ClientTree->setItemWidget(new_top_item, 2, checkbox_save);
|
||||
checkbox_save->setChecked(found);
|
||||
|
||||
connect(new_checkbox, SIGNAL(clicked()), signalMapperSave, SLOT(map()));
|
||||
connect(checkbox_save, SIGNAL(clicked()), signalMapperSave, SLOT(map()));
|
||||
|
||||
NetworkClientPointer * new_save_arg = new NetworkClientPointer();
|
||||
new_save_arg->net_client = ResourceManager::get()->GetClients()[client_idx];
|
||||
new_save_arg->widget = new_checkbox;
|
||||
NetworkClientPointer * arg_save = new NetworkClientPointer();
|
||||
arg_save->net_client = ResourceManager::get()->GetClients()[client_idx];
|
||||
arg_save->widget = checkbox_save;
|
||||
|
||||
signalMapperSave->setMapping(new_checkbox, new_save_arg);
|
||||
signalMapperSave->setMapping(checkbox_save, arg_save);
|
||||
|
||||
/*-----------------------------------------------------*\
|
||||
| Create the disconnect buttons and connect them to the |
|
||||
| signal mapper |
|
||||
| Create the rescan button |
|
||||
\*-----------------------------------------------------*/
|
||||
QPushButton* new_button = new QPushButton(tr("Disconnect"));
|
||||
ui->ClientTree->setItemWidget(new_top_item, 3, new_button);
|
||||
QPushButton* button_rescan = new QPushButton(tr("Rescan Devices"));
|
||||
ui->ClientTree->setItemWidget(new_top_item, 3, button_rescan);
|
||||
|
||||
connect(new_button, SIGNAL(clicked()), signalMapper, SLOT(map()));
|
||||
connect(button_rescan, SIGNAL(clicked()), signalMapperRescan, SLOT(map()));
|
||||
|
||||
NetworkClientPointer * new_arg = new NetworkClientPointer();
|
||||
new_arg->net_client = ResourceManager::get()->GetClients()[client_idx];
|
||||
new_arg->widget = new_button;
|
||||
NetworkClientPointer * arg_rescan = new NetworkClientPointer();
|
||||
arg_rescan->net_client = ResourceManager::get()->GetClients()[client_idx];
|
||||
arg_rescan->widget = button_rescan;
|
||||
|
||||
signalMapper->setMapping(new_button, new_arg);
|
||||
signalMapperRescan->setMapping(button_rescan, arg_rescan);
|
||||
|
||||
/*-----------------------------------------------------*\
|
||||
| Create the disconnect button |
|
||||
\*-----------------------------------------------------*/
|
||||
QPushButton* button_disconnect = new QPushButton(tr("Disconnect"));
|
||||
ui->ClientTree->setItemWidget(new_top_item, 4, button_disconnect);
|
||||
|
||||
connect(button_disconnect, SIGNAL(clicked()), signalMapperDisconnect, SLOT(map()));
|
||||
|
||||
NetworkClientPointer * arg_disconnect = new NetworkClientPointer();
|
||||
arg_disconnect->net_client = ResourceManager::get()->GetClients()[client_idx];
|
||||
arg_disconnect->widget = button_disconnect;
|
||||
|
||||
signalMapperDisconnect->setMapping(button_disconnect, arg_disconnect);
|
||||
|
||||
/*-----------------------------------------------------*\
|
||||
| Add child items for each device in the client |
|
||||
|
|
@ -267,7 +283,7 @@ void OpenRGBClientInfoPage::on_ClientConnectButton_clicked()
|
|||
void OpenRGBClientInfoPage::onClientDisconnectButton_clicked(QObject * arg)
|
||||
{
|
||||
/*-----------------------------------------------------*\
|
||||
| Get the pointer to the disconnecting client from args |
|
||||
| Get the pointer to the client from args |
|
||||
\*-----------------------------------------------------*/
|
||||
NetworkClient * disconnect_client = ((NetworkClientPointer *)arg)->net_client;
|
||||
|
||||
|
|
@ -278,6 +294,19 @@ void OpenRGBClientInfoPage::onClientDisconnectButton_clicked(QObject * arg)
|
|||
ResourceManager::get()->UnregisterNetworkClient(disconnect_client);
|
||||
}
|
||||
|
||||
void OpenRGBClientInfoPage::onClientRescanButton_clicked(QObject * arg)
|
||||
{
|
||||
/*-----------------------------------------------------*\
|
||||
| Get the pointer to the client from args |
|
||||
\*-----------------------------------------------------*/
|
||||
NetworkClient * rescan_client = ((NetworkClientPointer *)arg)->net_client;
|
||||
|
||||
/*-----------------------------------------------------*\
|
||||
| Send a rescan request to the client |
|
||||
\*-----------------------------------------------------*/
|
||||
rescan_client->SendRequest_RescanDevices();
|
||||
}
|
||||
|
||||
void OpenRGBClientInfoPage::onClientSaveCheckBox_clicked(QObject * arg)
|
||||
{
|
||||
/*-----------------------------------------------------*\
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue