mirror of
https://github.com/sudoxnym/open-hyperion.git
synced 2026-04-14 19:46:39 +00:00
Prompt to map additional universes when an added controller exceeds the universe size
This commit is contained in:
parent
cb0cbf6946
commit
3a1f46647e
1 changed files with 93 additions and 2 deletions
|
|
@ -3,6 +3,7 @@
|
||||||
|
|
||||||
#include <e131.h>
|
#include <e131.h>
|
||||||
#include <QLineEdit>
|
#include <QLineEdit>
|
||||||
|
#include <QMessageBox>
|
||||||
#include <QSignalMapper>
|
#include <QSignalMapper>
|
||||||
|
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
|
|
@ -570,6 +571,38 @@ void OpenRGBE131ReceiverDialog::on_ButtonAddController_clicked()
|
||||||
start_channel = last_member.start_channel + (last_member.num_leds * 3);
|
start_channel = last_member.start_channel + (last_member.num_leds * 3);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*-----------------------------------------------------*\
|
||||||
|
| Determine number of LEDs |
|
||||||
|
\*-----------------------------------------------------*/
|
||||||
|
unsigned int start_led = 0;
|
||||||
|
unsigned int num_leds = resource_manager->GetRGBControllers()[selected_controller]->colors.size();
|
||||||
|
unsigned int remaining_leds = num_leds;
|
||||||
|
bool update = false;
|
||||||
|
|
||||||
|
if((num_leds * 3) + start_channel > 512)
|
||||||
|
{
|
||||||
|
num_leds = (512 - start_channel) / 3;
|
||||||
|
remaining_leds -= num_leds;
|
||||||
|
start_led += num_leds;
|
||||||
|
|
||||||
|
QMessageBox::StandardButton reply;
|
||||||
|
|
||||||
|
reply = QMessageBox::question(this, "", "This controller is too large for the selected universe. Do you want to map additional universes for this controller?", QMessageBox::Yes|QMessageBox::No);
|
||||||
|
|
||||||
|
if(reply == QMessageBox::Yes)
|
||||||
|
{
|
||||||
|
update = false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
update = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
update = true;
|
||||||
|
}
|
||||||
|
|
||||||
/*-----------------------------------------------------*\
|
/*-----------------------------------------------------*\
|
||||||
| Add controller to universe |
|
| Add controller to universe |
|
||||||
\*-----------------------------------------------------*/
|
\*-----------------------------------------------------*/
|
||||||
|
|
@ -578,12 +611,70 @@ void OpenRGBE131ReceiverDialog::on_ButtonAddController_clicked()
|
||||||
new_member.controller = resource_manager->GetRGBControllers()[selected_controller];
|
new_member.controller = resource_manager->GetRGBControllers()[selected_controller];
|
||||||
new_member.start_channel = start_channel;
|
new_member.start_channel = start_channel;
|
||||||
new_member.start_led = 0;
|
new_member.start_led = 0;
|
||||||
new_member.num_leds = new_member.controller->colors.size();
|
new_member.num_leds = num_leds;
|
||||||
|
|
||||||
new_member.update = true;
|
new_member.update = update;
|
||||||
|
|
||||||
universe_list[selected_universe].members.push_back(new_member);
|
universe_list[selected_universe].members.push_back(new_member);
|
||||||
|
|
||||||
|
/*-----------------------------------------------------*\
|
||||||
|
| Add additional universes for controller |
|
||||||
|
\*-----------------------------------------------------*/
|
||||||
|
if(update == false)
|
||||||
|
{
|
||||||
|
while(remaining_leds > 0)
|
||||||
|
{
|
||||||
|
start_channel = 1;
|
||||||
|
num_leds = remaining_leds;
|
||||||
|
|
||||||
|
if((num_leds * 3) + start_channel > 512)
|
||||||
|
{
|
||||||
|
num_leds = (512 - start_channel) / 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
remaining_leds -= num_leds;
|
||||||
|
|
||||||
|
if(remaining_leds == 0)
|
||||||
|
{
|
||||||
|
update = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*-----------------------------------------------------*\
|
||||||
|
| Get next universe value |
|
||||||
|
\*-----------------------------------------------------*/
|
||||||
|
unsigned int next_universe = 1;
|
||||||
|
|
||||||
|
if(universe_list.size() > 0)
|
||||||
|
{
|
||||||
|
next_universe = universe_list[universe_list.size() - 1].universe + 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*-----------------------------------------------------*\
|
||||||
|
| Create and add new universe to list |
|
||||||
|
\*-----------------------------------------------------*/
|
||||||
|
universe_entry new_universe;
|
||||||
|
|
||||||
|
new_universe.universe = next_universe;
|
||||||
|
|
||||||
|
/*-----------------------------------------------------*\
|
||||||
|
| Add selected controller member to new universe |
|
||||||
|
\*-----------------------------------------------------*/
|
||||||
|
universe_member new_member;
|
||||||
|
|
||||||
|
new_member.controller = resource_manager->GetRGBControllers()[selected_controller];
|
||||||
|
new_member.start_channel = 1;
|
||||||
|
new_member.start_led = start_led;
|
||||||
|
new_member.num_leds = num_leds;
|
||||||
|
new_member.update = update;
|
||||||
|
|
||||||
|
new_universe.members.push_back(new_member);
|
||||||
|
|
||||||
|
universe_list.push_back(new_universe);
|
||||||
|
|
||||||
|
start_led += num_leds;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*-----------------------------------------------------*\
|
/*-----------------------------------------------------*\
|
||||||
| Update the universe tree view |
|
| Update the universe tree view |
|
||||||
\*-----------------------------------------------------*/
|
\*-----------------------------------------------------*/
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue