Редакция 68 |
Редакция 70 |
К новейшей редакции |
Авторство |
Сравнить с предыдущей |
Последнее изменение |
Открыть журнал
| Скачать
| RSS
#include "classeditor.h"
#include "ui_classeditor.h"
ClassEditor::ClassEditor(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::ClassEditor)
{
ui->setupUi(this);
// settdialog = new SettingsDialog(this);
///////////////////////////////////////////////////// settdialog.show();
sql.setDatabaseName(tr("an_db"));
/*
field = new TableField(tr("Ñîòðóäíèêè"), this);
field->setNotNull(true);
field->setDefaultValue(tr("ñîòðóäíèê"));
table = new SqlTable (tr("NewTable"), this);
table->setName(tr("NewTable"));
table->fields().at(0)->setNotNull(true);
if (!(table->setPrimaryKey(tr("ID")))) {
ui->label_3->setText(table->lastError());
}
else ui->label_3->setText(table->primaryKey());
table->append(field);
field = new TableField(tr("Êîìïüþòåðû"), this);
field->setNotNull(true);
field->setDefaultValue(tr("êîìïüþòåð"));
table->append(field);
field = new TableField(tr("Ìîíèòîðû"), this);
field->setNotNull(true);
field->setDefaultValue(tr("ìîíèòîð"));
table->append(field);
field = new TableField(tr("Êîëè÷åñòâî (øòóê)"), this);
field->setNotNull(true);
field->setType(tr("INTEGER"));
field->setDefaultValue(tr("1"));
table->append(field);
field = new TableField(tr("Äåíü ðîæäåíèÿ"), this);
field->setNotNull(false);
field->setType(tr("DATE"));
field->setDefaultValue(tr("NULL"));
table->append(field);
ui->label_2->setText(table->name());
ui->label->setText(table->fields().at(0)->sqlString());
ui->label_4->setText(table->sqlString());
////// ui->lineEdit->insert(table->sqlString());
*/
/**********************************************
QTextDocument *document;
// = ui->textEdit->document();
QTextCursor *cursor;
document = ui->textEdit->document();
cursor = new QTextCursor(document);
cursor->movePosition(QTextCursor::Start);
QTextCharFormat format(cursor->charFormat());
//format.setFontFamily("Courier");
format.setFontFamily("Arial");
//format.setFontItalic(false);
format.setFontWeight(QFont::Normal);
QTextCharFormat boldFormat = format;
boldFormat.setFontWeight(QFont::Bold);
QTextCharFormat italicFormat = format;
//format.setFontFamily("Courier");
// format.setFontFamily("Arial");
italicFormat.setFontItalic(true);
cursor->insertText(table->sqlString(), format);
****************************************************/
QString errorString;
sql.setDatabaseName(tr("an_db"));
sql.setHostName(tr("localhost"));
sql.setUserName(tr("an"));
sql.setPassword(tr("393939"));
bool ok;
ok = sql.connect();
if (!ok) {
QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
this, // Ðîäèòåëüñêèé âèäæåò.
QObject::tr("Database Error"), // Çàãîëîâîê.
sql.lasError()); // Òåêñò ñîîáùåíèÿ.
}
else {
QMessageBox::information( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
this, // Ðîäèòåëüñêèé âèäæåò.
QObject::tr("Database Connect"), // Çàãîëîâîê.
QObject::tr("Ñîåäèíåíèå ñ áàçîé äàííûõ óñïåøíî óñòàíîâëåíî.")); // Òåêñò ñîîáùåíèÿ.
}
/*
ok = sql.createTable(table);
if (!ok) {
QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
this, // Ðîäèòåëüñêèé âèäæåò.
QObject::tr("Database Error"), // Çàãîëîâîê.
sql.lasError()); // Òåêñò ñîîáùåíèÿ.
}
else {
QMessageBox::information( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
this, // Ðîäèòåëüñêèé âèäæåò.
QObject::tr("Database Connect"), // Çàãîëîâîê.
QObject::tr("Òàáëèöà â áàçå äàííûõ óñïåøíî ñîçäàíà.")); // Òåêñò ñîîáùåíèÿ.
}
*/
ok = sql.createListOfClassesTable();
if (!ok) {
QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
this, // Ðîäèòåëüñêèé âèäæåò.
QObject::tr("Database Error"), // Çàãîëîâîê.
sql.lasError()); // Òåêñò ñîîáùåíèÿ.
}
else {
QMessageBox::information( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
this, // Ðîäèòåëüñêèé âèäæåò.
QObject::tr("Database Create"), // Çàãîëîâîê.
QObject::tr("Áàçà äàííûõ óñïåøíî ñîçäàíà.")); // Òåêñò ñîîáùåíèÿ.
}
ok = sql.createDescriptionOfClassesTable();
if (!ok) {
QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
this, // Ðîäèòåëüñêèé âèäæåò.
QObject::tr("Database Error"), // Çàãîëîâîê.
sql.lasError()); // Òåêñò ñîîáùåíèÿ.
}
else {
QMessageBox::information( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
this, // Ðîäèòåëüñêèé âèäæåò.
QObject::tr("Database Create"), // Çàãîëîâîê.
QObject::tr("Áàçà äàííûõ óñïåøíî ñîçäàíà.")); // Òåêñò ñîîáùåíèÿ.
}
/////////////////model = new QSqlTableModel(this);
mymodel = new MyModel(this);
//modelForDescription = new QSqlTableModel(this);
modelForDescription = new ModelForDescriptionTable(this);
/////////////////model->setTable(tr("ListOfClasses"));
mymodel->setTable(tr("ListOfClasses"));
modelForDescription->setTable(tr("DescriptionOfClasses"));
modelForDescription->setEditStrategy(QSqlTableModel::OnFieldChange);
/////model->setEditStrategy(QSqlTableModel::OnManualSubmit);
/*
model->setEditStrategy(QSqlTableModel::OnFieldChange);
mymodel->setEditStrategy(QSqlTableModel::OnFieldChange);
*/
//////////////////model->setSort(0, Qt::AscendingOrder);
mymodel->setSort(0, Qt::AscendingOrder);
modelForDescription->setSort(0, Qt::AscendingOrder);
// model->setFilter(tr("Èäåíòèôèêàòîð_ñèñòåìíîãî_áëîêà = '7' and Èíâåíòàðíûé_íîìåð = 'i09090909'"));
////////////////////model->select();
mymodel->select();
/////////////////////////model->setHeaderData(1, Qt::Horizontal, tr("Èìÿ êëàññà"));
mymodel->setHeaderData(1, Qt::Horizontal, tr("Èìÿ êëàññà"));
////////////////////////model->setHeaderData(2, Qt::Horizontal, tr("Ïñåâäîíèì êëàññà"));
mymodel->setHeaderData(2, Qt::Horizontal, tr("Ïñåâäîíèì êëàññà"));
mymodel->setHeaderData(4, Qt::Horizontal, tr("Êîìåíòàðèé"));
//ui->tableView->setModel(model);
ui->tableView->setModel(mymodel);
//tableForDescription = new QTableView();
ui->tableView_2->setModel(modelForDescription);
ui->tableView_2->setAlternatingRowColors(true);
ui->tableView_2->resizeColumnsToContents();
//tableForDescription->show();
ui->tableView->setAlternatingRowColors(true);
ui->tableView->resizeColumnsToContents();
ui->tableView->hideColumn(0);
ui->tableView->hideColumn(3);
ui->tableView->hideColumn(2);
/*
ui->tableView_2->hideColumn(0);
ui->tableView_2->hideColumn(5);
ui->tableView_2->hideColumn(2);
*/
ui->tableView_2->setItemDelegateForColumn(3, &classTableDelegate);
currIndexOfClassesTable = modelForDescription->index(0, 1);
QModelIndex index_temp;
currClassID = mymodel->data(mymodel->index(0,0)).toString();
QItemSelectionModel *selectionModel = ui->tableView->selectionModel();
QModelIndex topLeft;
QModelIndex bottomRight;
topLeft = mymodel->index(0, 0, QModelIndex());
bottomRight = mymodel->index(0, 1, QModelIndex());
QItemSelection selection(topLeft, bottomRight);
selectionModel->select(selection, QItemSelectionModel::Select);
QString class_indx;
QString str_fltr = tr("ClassIdentifer = ");
class_indx = mymodel->data(mymodel->index(0,0)).toString();
str_fltr.append(class_indx);
modelForDescription->setFilter(str_fltr);
modelForDescription->select();
ui->tableView_2->resizeColumnsToContents();
//connect(ui->tableView, SIGNAL(clicked(const QModelIndex)), this, SLOT(on_tableView_clicked(const QModelIndex)));
connect(mymodel, SIGNAL(dataChanged(QModelIndex,QModelIndex)), this, SLOT(on_myModel_dataChanged(QModelIndex,QModelIndex)));
connect(modelForDescription, SIGNAL(dataChanged(QModelIndex,QModelIndex)), this, SLOT(on_modelForDescription_dataChanged(QModelIndex,QModelIndex)));
connect(ui->newClassAction, SIGNAL(triggered(bool)), this, SLOT(on_pushButton_clicked(bool)));
connect(ui->action_ID, SIGNAL(triggered(bool)), this, SLOT(on_action_ID_triggered(bool)));
connect(ui->action_showAlias, SIGNAL(triggered(bool)), this, SLOT(on_action_showAlias_triggered(bool))); // ïîêàçûâàòü ïñåâäîíèìû
connect(ui->action_showInstance, SIGNAL(triggered(bool)), this, SLOT(on_action_showInstance_triggered(bool))); // ïîêàçûâàòü õðàíèëèùà îáúåêòîâ
connect(ui->action_removeSelectedFields, SIGNAL(triggered()), this, SLOT(on_pushButton_4_clicked())); // óäàëèòü âûäåëåííûå ïîëÿ
connect(ui->action_removeAllFields, SIGNAL(triggered()), this, SLOT(on_pushButton_5_clicked())); // óäàëèòü âñå ïîëÿ
connect(ui->action_removeSelectedClasses, SIGNAL(triggered()), this, SLOT(on_pushButton_2_clicked())); // óäàëèòü âûäåëåííûå êëàññû
connect(ui->action_removeAllClasses, SIGNAL(triggered()), this, SLOT(on_action_removeAllClasses())); // óäàëèòü âûäåëåííûå êëàññû
}
ClassEditor::~ClassEditor()
{
delete ui;
// delete field;
// delete settdialog;
}
void ClassEditor::changeEvent(QEvent *e)
{
QMainWindow::changeEvent(e);
switch (e->type()) {
case QEvent::LanguageChange:
ui->retranslateUi(this);
break;
default:
break;
}
}
void ClassEditor::addNewClass(){
int row = model->rowCount();
model->insertRows(row, 1);
model->setData(model->index(row, 1), tr("New class")); // ïðèñâàèâàåì íîâîå çíà÷åíèå ïîëþ "èìÿ êëàññà"
// model->setData(model->index(row, 1), tr("Âàñÿ Ïóïê èí"));
// model->setData(model->index(row, 2) , tr("Ìóõîñðà íñê, Çàæîïèíñêèå âûñåëêè ä 1"));
model->submitAll();
row = model->rowCount();
QString tmp_str;
int i_tmp;
i_tmp = model->data(model->index(row-1, 0)).toInt();
tmp_str = model->data(model->index(row-1, 0)).toString(); // ãåíåðèì èìÿ òàáëèöû-õðàíèëèùà îáúåêòîâ êëàññà
tmp_str.append(tr("_Inctance"));
model->setData(model->index(row-1, 3), tmp_str ); // è çàíîñèì çíà÷åíèå â òàáëèöó
model->submitAll();
mymodel->select();
}
void ClassEditor::addNewClass_new(){
int row = mymodel->rowCount();
mymodel->insertRows(row, 1);
mymodel->setData(mymodel->index(row, 1), QVariant(tr("New classs")), Qt::EditRole); // ïðèñâàèâàåì íîâîå çíà÷åíèå ïîëþ "èìÿ êëàññà"
mymodel->submitAll();
row = mymodel->rowCount();
QString tmp_str1;
int i_tmp1;
i_tmp1 = mymodel->data(mymodel->index(row-1, 0)).toInt();
tmp_str1 = mymodel->data(mymodel->index(row-1, 0)).toString(); // ãåíåðèì èìÿ òàáëèöû-õðàíèëèùà îáúåêòîâ êëàññà
tmp_str1.append(tr("_Inctance"));
mymodel->setData(mymodel->index(row-1, 3), QVariant(tmp_str1), Qt::EditRole); // è çàíîñèì çíà÷åíèå â òàáëèöó
// model->setData(model->index(row, 1), tr("Âàñÿ Ïóïê èí"));
// model->setData(model->index(row, 2) , tr("Ìóõîñðà íñê, Çàæîïèíñêèå âûñåëêè ä 1"));
//mymodel->submitAll();
//row = mymodel->rowCount();
//mymodel->select();
}
void ClassEditor::addNewField(){
// QSqlRecord rec = mymodel->record(1);
//bool ok;
//ok = rec.isEmpty();
//QString currientClassID;
//currientClassID = rec.value(1).toString();
int row = modelForDescription->rowCount();
modelForDescription->insertRows(row, 1);
modelForDescription->setData(modelForDescription->index(row, 5), QVariant(currClassID), Qt::EditRole);
modelForDescription->setData(modelForDescription->index(row, 4), QVariant(tr("NULL")), Qt::EditRole);
modelForDescription->submitAll();
}
// äîáàâëÿåì íîâûé êëàññ
void ClassEditor::on_pushButton_clicked(){
//int i;
//i++;
/////ClassEditor::addNewClass();
ClassEditor::addNewClass_new();
mymodel->select();
//ui->tableView->setModel(mymodel);
}
void ClassEditor::on_tableView_clicked(const QModelIndex & index ){
int i, row, column;
i++;
row = index.row();
column = index.column();
currIndexOfClassesTable = index;
QModelIndex index_tmp;
QString tmp_str, filter_str;
index_tmp = ui->tableView->model()->index(row, 0);
tmp_str = ui->tableView->model()->data(index_tmp).toString();
currClassID = tmp_str;
// ui->label->setText(QVariant(currIndexOfClassesTable.row()).toString());
filter_str = tr("ClassIdentifer = ");
filter_str.append(tmp_str);
modelForDescription->setFilter(filter_str);
modelForDescription->select();
ui->tableView_2->resizeColumnsToContents();
i++;
}
void ClassEditor::on_pushButton_2_clicked(){ // îáðàáîò÷èê íàæàòèÿ êíîïðêè "Óäàëèòü êëàññ"
QModelIndex model_index;
QItemSelectionModel *selectionModel = ui->tableView->selectionModel();
QModelIndexList indexes = selectionModel->selectedIndexes();
QList<int> selectedRows;
selectedRows.clear();
foreach (model_index, indexes){ // ñïèñîê âñåõ âûäåëåííûõ ñòðîê
if (!selectedRows.contains(model_index.row()) && (model_index.column()==1)) selectedRows.append(model_index.row()); // îñòàâëÿåì â ñïèñêå òîëüêî âûáðàííûå â ïåðâîé êîëîíêå
}
qSort(selectedRows.begin(),selectedRows.end(), qGreater<int>()); // ñîðòèðóåì â îáðàòíîì ïîðÿäêå
for (int m =0; m < selectedRows.size(); ++m){
ClassEditor::removeClass(selectedRows.at(m));
}
mymodel->submitAll();
ClassEditor::modelForDescription->select();
}
void ClassEditor::on_pushButton_3_clicked(){ // îáðàáîò÷èê íàæàòèÿ êíîïêè "Íîâîå ïîëå"
int i;
i++;
ClassEditor::addNewField();
ClassEditor::modelForDescription->select();
ui->tableView_2->resizeColumnsToContents();
}
void ClassEditor::on_pushButton_4_clicked(){ // îáðàáîò÷èê íàæàòèÿ êíîïêè "Óäàëèòü ïîëå"
// int i;
QModelIndex model_index;
QItemSelectionModel *selectionModel = ui->tableView_2->selectionModel();
QModelIndexList indexes = selectionModel->selectedIndexes();
//QModelIndexList indexes_fo_first_col; // èíäåêñû äëÿ ïåðâîãî ñòîëáöà (èìåíà êëàññîâ)
//model_index = mymodel->selec;
//modelList = ui->tableView->SelectItems;
//i = indexes.size();
QList<int> selectedRows;
//indexes_fo_first_col.clear();
/*
foreach (model_index, indexes){ // ñïèñîê âñåõ âûäåëåííûõ ñòðîê
if (!indexes_fo_first_col.contains(model_index) && (model_index.column()==1)) indexes_fo_first_col.append(model_index); // îñòàâëÿåì â ñïèñêå òîëüêî âûáðàííûå â ïåðâîé êîëîíêå
}
*/
selectedRows.clear();
foreach (model_index, indexes){ // ñïèñîê âñåõ âûäåëåííûõ ñòðîê
if (!selectedRows.contains(model_index.row()) && (model_index.column()==1)) selectedRows.append(model_index.row()); // îñòàâëÿåì â ñïèñêå òîëüêî âûáðàííûå â ïåðâîé êîëîíêå
}
qSort(selectedRows.begin(),selectedRows.end(), qGreater<int>()); // ñîðòèðóåì â îáðàòíîì ïîðÿäêå
for (int m =0; m < selectedRows.size(); ++m){
modelForDescription->removeRow(selectedRows.at(m));
}
//i = selectedRows.size();
//if (i > 0) model_index = indexes.at(0);
}
void ClassEditor::on_pushButton_5_clicked(){ // îáðàáîò÷èê íàæàòèÿ êíîïêè "Óäàëèòü âñå ïîëÿ"
int row;
row = ClassEditor::modelForDescription->rowCount();
ClassEditor::modelForDescription->removeRows(0, row);
ClassEditor::modelForDescription->submitAll();
}
void ClassEditor::on_myModel_dataChanged( const QModelIndex & topLeft, const QModelIndex & bottomRight ){
int i;
i++;
ui->tableView->resizeColumnsToContents();
}
void ClassEditor::on_modelForDescription_dataChanged ( const QModelIndex & topLeft, const QModelIndex & bottomRight ){
ui->tableView_2->resizeColumnsToContents();
}
void ClassEditor::on_action_ID_triggered(bool is_checked){ // îáðàáàòûâàåì âûáîð â ìåíþ "Ïîêàçûâàòü ID"
if (is_checked) ui->tableView->showColumn(0);
else ui->tableView->hideColumn(0);
ui->tableView->resizeColumnsToContents();
}
void ClassEditor::on_action_showAlias_triggered(bool is_checked){ // îáðàáàòûâàåì âûáîð â ìåíþ "Ïîêàçûâàòü ïñåâäîíèì"
if (is_checked) ui->tableView->showColumn(2);
else ui->tableView->hideColumn(2);
ui->tableView->resizeColumnsToContents();
}
void ClassEditor::on_action_showInstance_triggered(bool is_checked){ // îáðàáàòûâàåì âûáîð â ìåíþ "Ïîêàçûâàòü õðàíèëèùà îáúåêòîâ"
if (is_checked) ui->tableView->showColumn(3);
else ui->tableView->hideColumn(3);
ui->tableView->resizeColumnsToContents();
}
void ClassEditor::on_action_removeAllClasses(){ // îáðàáàòûâàåì âûáîð â ìåíþ "Óäàëèòü âñå êëàññû"
int row;
row = ClassEditor::mymodel->rowCount();
for (int m=0; m < row; ++m){
ClassEditor::removeClass(0);
//ClassEditor::mymodel->removeRows(0, row);
}
ClassEditor::mymodel->submitAll();
ClassEditor::modelForDescription->select();
}
void ClassEditor::removeClass(int class_row){ // ôóíêöèÿ óäàëÿåò êëàññ, íàõîäÿùèéñÿ â ñòðîêå ñ íîìåðîì class_row
QModelIndex index_tmp;
QString tmp_str, filter_str;
index_tmp = ui->tableView->model()->index(class_row, 0);
tmp_str = ui->tableView->model()->data(index_tmp).toString();
currClassID = tmp_str;
// ui->label->setText(QVariant(currIndexOfClassesTable.row()).toString());
filter_str = tr("ClassIdentifer = ");
filter_str.append(tmp_str);
modelForDescription->setFilter(filter_str); // îáíîâëÿåì òàáëèöó ïîëåé
ClassEditor::on_pushButton_5_clicked(); // ñíà÷àëà óäàëèì âñå ïîëÿ êëàññà
mymodel->removeRow(class_row); // òåïåðü óäàëÿåì ñàì êëàññ
mymodel->submitAll(); // ôèêñèðóåì èçìåíåíèÿ
ui->tableView->resizeColumnsToContents();
ui->tableView_2->resizeColumnsToContents();
}