Пример #1
0
void DbTab::delButtonPressed()
{
	QModelIndexList list = selectedIndexes(table);
	
	if(table==tables[0].second)
	{
		for(int i=0; i<list.count(); i++)
		{
			int id=table->item(list.at(i).row(),5)->data(Qt::DisplayRole).toInt();
			Database::getInstance().deleteSnapshot(id);
		}
		reloadTable(0);
	}
	else if(table==tables[1].second)
	{
		for(int i=0; i<list.count(); i++)
		{
			int id=table->item(list.at(i).row(),5)->data(Qt::DisplayRole).toInt();
			Database::getInstance().deleteScene(id);
		}
		reloadTable(1);
	}
	else if(table==tables[2].second)
	{
		for(int i=0; i<list.count(); i++)
		{
			int id=table->item(list.at(i).row(),2)->data(Qt::DisplayRole).toInt();
			if(id == ROBOT_ID)
			{
				QMessageBox::warning(this, "Ошибка", "Робот не может быть удален", QMessageBox::Ok);
				
				return;
			}
			Database::getInstance().deleteDescription(id);
		}
		reloadTable(2);
	}
	else if(table==tables[3].second)
	{
		for(int i=0; i<list.count(); i++)
		{
			int id=table->item(list.at(i).row(),4)->data(Qt::DisplayRole).toInt();
			Database::getInstance().deleteObject(id);
		}
		reloadTable(3);
	}
	
}
Пример #2
0
void DbTab::changeButtonPressed()
{
	if(table==tables[2].second)
	{
		AddChangeDescrDialog *dialog=new AddChangeDescrDialog(false,this);
		dialog->setName(table->item(table->currentRow(),0)->data(Qt::DisplayRole).toString());
		dialog->setDescription(table->item(table->currentRow(),1)->data(Qt::DisplayRole).toString());
		int result=dialog->exec();
		if(result==QDialog::Accepted)
		{
			Description description;
			description.name=dialog->name();
			description.description=dialog->description();
			description.id=table->item(table->currentRow(),2)->data(Qt::DisplayRole).toInt();
			
			Database::getInstance().changeDescription(description);
			
			reloadTable(2);
		}
	}
	if(table==tables[3].second)
	{
		AddObjectDialog *dialog=new AddObjectDialog(this,false);
		dialog->setPhysHeight(table->item(table->currentRow(),1)->data(Qt::DisplayRole).toInt());
		int result=dialog->exec();
	}
}
Пример #3
0
Departments::Departments(QSqlDatabase& db, QWidget *parent): QDialog(parent),
    ui(new Ui::Departments), _db(&db) {
  ui->setupUi(this);

  _searchAgain = true;

  _model = new QSqlRelationalTableModel(this, *_db);
  _model->setTable("departments");
  _model->setEditStrategy(QSqlTableModel::OnFieldChange);
  _model->setRelation(2, QSqlRelation("faculties", "fc_id", "fc_name"));
  reloadTable();

  QTableView* view = ui->tableView;
  view->setModel(_model);
  view->setItemDelegate(new QSqlRelationalDelegate(view));
}
Пример #4
0
void Departments::on_addButton_clicked() {
  int fc_id = IdRetriever::getId(*_db, "faculties", "fc_id", "fc_name",
                                 "Faculty", "Choose faculty", this);
  if (fc_id == -1) return;

  QSqlQuery query(*_db);
  query.prepare("INSERT INTO departments(dp_fc, dp_name)"
                " VALUES (:fc_id, '');");
  query.bindValue(":fc_id", fc_id);
  query.exec();
  if (query.lastError().isValid()) {
    qDebug() << query.lastQuery();
    qDebug() << query.lastError();
  }
  reloadTable();
}
Пример #5
0
void Departments::on_delButton_clicked() {
  QModelIndex idx = ui->tableView->currentIndex();
  if (idx.row() == -1) return;

  QSqlQuery query(*_db);
  query.prepare("DELETE FROM books_authors WHERE bka_bk IN "
                "(SELECT bk_id FROM books WHERE bk_dp = :id);");
  query.bindValue(":id", _model->index(idx.row(), 0).data().toInt());
  query.exec();

  query.prepare("DELETE FROM books WHERE bk_dp = :id;");
  query.bindValue(":id", _model->index(idx.row(), 0).data().toInt());
  query.exec();

  query.prepare("DELETE FROM departments WHERE dp_id = :id;");
  query.bindValue(":id", _model->index(idx.row(), 0).data().toInt());
  query.exec();

  if (query.lastError().isValid()) {
    qDebug() << query.lastQuery();
    qDebug() << query.lastError();
  }
  reloadTable();
}
Пример #6
0
DbTab::DbTab(QWidget *parent)
	: QWidget(parent)
{
//	tables[0]=std::make_pair("Снимки", DatabaseView::getInstance().snapshotsTable());
//	tables[1]=std::make_pair("Сцены", DatabaseView::getInstance().scenesTable());
//	tables[2]=std::make_pair("Описания объектов", DatabaseView::getInstance().descriptionsTable());
//	tables[3]=std::make_pair("Объекты", DatabaseView::getInstance().objectsTable());
//	tables[4]=std::make_pair("Карты",DatabaseView::getInstance().descriptionsTable());
	tableBox = new QComboBox();
	mainLayout = new QGridLayout();
	mainLayout->addWidget(tableBox,0,4,1,2);
	for(std::map<int,std::pair<QString,QTableWidget*> >::iterator it=tables.begin(); it!=tables.end(); it++)
	{
		tableBox->addItem(it->second.first);
		mainLayout->addWidget(it->second.second,1,1,5,5);
		it->second.second->hide();
	}
	connect(tableBox,SIGNAL(currentIndexChanged(int)),SLOT(tableChanged(int)));
	table=tables[0].second;
	table->show();
	addButton=new QPushButton("Добавить");
	connect(addButton,SIGNAL(clicked()),SLOT(addButtonPressed()));
	mainLayout->addWidget(addButton,6,2,1,1);
	addButton->hide();
	changeButton=new QPushButton("Изменить");
	connect(changeButton,SIGNAL(clicked()),SLOT(changeButtonPressed()));
	mainLayout->addWidget(changeButton,6,3,1,1);
	changeButton->hide();
	QPushButton *reloadButton=new QPushButton("Обновить");
	connect(reloadButton,SIGNAL(clicked()),SLOT(reloadTable()));
	mainLayout->addWidget(reloadButton,6,4,1,1);
	QPushButton *delButton=new QPushButton("Удалить");
	connect(delButton,SIGNAL(clicked()),SLOT(delButtonPressed()));
	mainLayout->addWidget(delButton,6,5,1,1);
	setLayout(mainLayout);
}