#include "OpenRGBDialog2.h" #include "OpenRGBDevicePage.h" #include "OpenRGBDeviceInfoPage.h" #include "OpenRGBSystemInfoPage.h" #include #include using namespace Ui; OpenRGBDialog2::OpenRGBDialog2(std::vector& bus, std::vector& control, QWidget *parent) : QMainWindow(parent), busses(bus), controllers (control), ui(new OpenRGBDialog2Ui) { ui->setupUi(this); QIcon logo(":OpenRGB.png"); setWindowIcon(logo); QMenu* trayIconMenu = new QMenu( this ); trayIcon = new QSystemTrayIcon(this); QAction* actionShowHide = new QAction("Show/Hide", this); connect(actionShowHide, SIGNAL(triggered()), this, SLOT(on_ShowHide())); trayIconMenu->addAction(actionShowHide); QAction* actionExit = new QAction( "Exit", this ); connect( actionExit, SIGNAL( triggered() ), this, SLOT( on_Exit() )); trayIconMenu->addAction(actionExit); trayIcon->setIcon(logo); trayIcon->setToolTip("OpenRGB"); trayIcon->setContextMenu(trayIconMenu); trayIcon->show(); /*-----------------------------------------------------*\ | Set up list of devices | \*-----------------------------------------------------*/ QTabBar *DevicesTabBar = ui->DevicesTabBar->tabBar(); for(std::size_t dev_idx = 0; dev_idx < control.size(); dev_idx++) { OpenRGBDevicePage *NewPage = new OpenRGBDevicePage(control[dev_idx]); ui->DevicesTabBar->addTab(NewPage, ""); /*-----------------------------------------------------*\ | Connect the page's Set All button to the Set All slot | \*-----------------------------------------------------*/ connect(NewPage, SIGNAL(SetAllDevices(unsigned char, unsigned char, unsigned char)), this, SLOT(on_SetAllDevices(unsigned char, unsigned char, unsigned char))); /*-----------------------------------------------------*\ | Use Qt's HTML capabilities to display both icon and | | text in the tab label. Choose icon based on device | | type and append device name string. | \*-----------------------------------------------------*/ QString NewLabelString = "
" + QString::fromStdString(control[dev_idx]->name) + "
"; QLabel *NewTabLabel = new QLabel(); NewTabLabel->setText(NewLabelString); NewTabLabel->setIndent(20); NewTabLabel->setGeometry(0, 0, 200, 20); DevicesTabBar->setTabButton(dev_idx, QTabBar::LeftSide, NewTabLabel); } /*-----------------------------------------------------*\ | Set up list of information | \*-----------------------------------------------------*/ QTabBar *InformationTabBar = ui->InformationTabBar->tabBar(); for(std::size_t dev_idx = 0; dev_idx < control.size(); dev_idx++) { OpenRGBDeviceInfoPage *NewPage = new OpenRGBDeviceInfoPage(control[dev_idx]); ui->InformationTabBar->addTab(NewPage, ""); /*-----------------------------------------------------*\ | Use Qt's HTML capabilities to display both icon and | | text in the tab label. Choose icon based on device | | type and append device name string. | \*-----------------------------------------------------*/ QString NewLabelString = "
" + QString::fromStdString(control[dev_idx]->name) + "
"; QLabel *NewTabLabel = new QLabel(); NewTabLabel->setText(NewLabelString); NewTabLabel->setIndent(20); NewTabLabel->setGeometry(0, 0, 200, 20); InformationTabBar->setTabButton(dev_idx, QTabBar::LeftSide, NewTabLabel); } OpenRGBSystemInfoPage *SysInfoPage = new OpenRGBSystemInfoPage(bus); ui->InformationTabBar->addTab(SysInfoPage, ""); /*-----------------------------------------------------*\ | Use Qt's HTML capabilities to display both icon and | | text in the tab label. Choose icon based on device | | type and append device name string. | \*-----------------------------------------------------*/ QString SystemLabelString = "
System
"; QLabel *SystemTabLabel = new QLabel(); SystemTabLabel->setText(SystemLabelString); SystemTabLabel->setIndent(20); SystemTabLabel->setGeometry(0, 0, 200, 20); InformationTabBar->setTabButton(control.size(), QTabBar::LeftSide, SystemTabLabel); } OpenRGBDialog2::~OpenRGBDialog2() { delete ui; } void OpenRGBDialog2::show() { QMainWindow::show(); } void OpenRGBDialog2::on_Exit() { close(); } void OpenRGBDialog2::on_SetAllDevices(unsigned char red, unsigned char green, unsigned char blue) { for(int device = 0; device < ui->DevicesTabBar->count(); device++) { qobject_cast(ui->DevicesTabBar->widget(device))->SetDevice(red, green, blue); } } void OpenRGBDialog2::on_ShowHide() { if(isHidden()) { show(); } else { hide(); } }