void MainWindow::on_actionMove_and_Add_Mode_triggered()
{
    //if move mode is activated, enable edit buttons and uncheck other modes
    if (ui->actionMove_and_Add_Mode->isChecked())
    {
        ui->menuSetMode->setWindowTitle("Mode: Move and Add");
        enableEditButtons(true);
        ui->actionSelect_Mode->setChecked(false);
        ui->actionAssign_IDs->setChecked(false);
    }
    else
        enableEditButtons(false);
}
void PermissionWidget::checkPrivilege(void)
{
	QObject *obj_sender=sender();

	if(obj_sender && obj_sender->metaObject()->className()==QString("QCheckBox"))
	{
		QCheckBox *chk=nullptr, *chk_priv=nullptr, *chk_gop=nullptr;
		unsigned priv;

		chk=dynamic_cast<QCheckBox *>(obj_sender);

		for(priv=Permission::PRIV_SELECT; priv<=Permission::PRIV_USAGE; priv++)
		{
			chk_priv=dynamic_cast<QCheckBox *>(privileges_tbw->cellWidget(priv,0));
			chk_gop=dynamic_cast<QCheckBox *>(privileges_tbw->cellWidget(priv,1));

			if(chk==chk_gop)
			{
				chk_priv->setChecked(chk_gop->isChecked());
				break;
			}
			else if(chk==chk_priv && !chk->isChecked())
			{
				chk_gop->setChecked(false);
				break;
			}
		}

		enableEditButtons();
	}
}
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    setMinimumSize(200, 200);
    setAcceptDrops(true);

    //Limits data entered to integers from 0-999
    ui->ledNumEdit->setValidator(new QIntValidator(0, 999, this));
    ui->lowerBoundSelectLabel->setValidator(new QIntValidator(0, 999, this));
    ui->upperBoundSelectLabel->setValidator(new QIntValidator(0, 999, this));
    //sets up displays and disables
    ui->displayText->setReadOnly(true);
    ui->displayText->setText("Action Information here");
    ui->ledNumEdit->setText(QString::number(getNumLEDs()));
    //Set Mode to Move and Add
    ui->actionMove_and_Add_Mode->setChecked(true);
    ui->actionSelect_Mode->setChecked(false);
    ui->actionAssign_IDs->setChecked(false);
    ui->menuSetMode->setWindowTitle("Mode: Move and Add");
    enableEditButtons(true);

    //Create the first LED Label, push back LEDs (list of pointers to all LEDs
    //in the app)
    LEDLabel *ledIcon = new LEDLabel(ledCount, this);
    LEDs.push_back(ledIcon);

    //Initialize private member pointer variables vectOfData, dWindow.
    vectOfData = new std::vector<LightParameter>;
    dWindow = new DisplayWindow(vectOfData , this);
    dWindow->setModal(false);
}
void MainWindow::on_actionAssign_IDs_triggered()
{
    //if assign ID mode is activated, disable edit buttons and uncheck other modes
    if (ui->actionAssign_IDs->isChecked())
    {
        ui->menuSetMode->setWindowTitle("Mode: Add Connector");
        enableEditButtons(false);
        ui->actionMove_and_Add_Mode->setChecked(false);
        ui->actionSelect_Mode->setChecked(false);
    }
}
void PermissionWidget::cancelOperation(void)
{
	unsigned priv;
	QCheckBox *chk=nullptr;

	permission=nullptr;

	for(priv=Permission::PRIV_SELECT; priv<=Permission::PRIV_USAGE; priv++)
	{
		chk=dynamic_cast<QCheckBox *>(privileges_tbw->cellWidget(priv,0));
		chk->setChecked(false);
		chk=dynamic_cast<QCheckBox *>(privileges_tbw->cellWidget(priv,1));
		chk->setChecked(false);
	}

	roles_tab->removeRows();
	perm_id_edt->clear();
	enableEditButtons();
	cancel_tb->setEnabled(false);
	permissions_tab->clearSelection();
	perm_disable_sql_chk->setChecked(false);
}
void PermissionWidget::editPermission(void)
{
	if(permission)
	{
		unsigned priv, i, count;
		QCheckBox *chk=nullptr, *chk1=nullptr;
		Role *role=nullptr;

		roles_tab->blockSignals(true);
		roles_tab->removeRows();

		perm_disable_sql_chk->setChecked(permission->isSQLDisabled());
		perm_id_edt->setText(permission->getName());
		revoke_rb->setChecked(permission->isRevoke());
		cascade_chk->setChecked(permission->isCascade());

		count=permission->getRoleCount();
		for(i=0; i < count; i++)
		{
			roles_tab->addRow();
			role=permission->getRole(i);
			roles_tab->setRowData(QVariant::fromValue<void *>(reinterpret_cast<void *>(role)), i);
      roles_tab->setCellText(/*Utf8String::create(*/role->getName(),i,0);
		}

		roles_tab->blockSignals(false);

		for(priv=Permission::PRIV_SELECT; priv<=Permission::PRIV_USAGE; priv++)
		{
			chk=dynamic_cast<QCheckBox *>(privileges_tbw->cellWidget(priv,0));
			chk1=dynamic_cast<QCheckBox *>(privileges_tbw->cellWidget(priv,1));

			chk->setChecked(permission->getPrivilege(priv));
			chk1->setChecked(permission->getGrantOption(priv));
		}

		enableEditButtons();
	}
}