Хранилища Subversion qb

Редакция

Редакция 6 | Содержимое файла | Сравнить с предыдущей | Последнее изменение | Открыть журнал | RSS

Редакция Автор № строки Строка
2 diffor 1
#include <QtGui>
2
#include <QtSql>
3
#include "mainwindow.h"
4
#include "dbconfigdialog.h"
6 diffor 5
#include "tdpreviewdialog.h"
2 diffor 6
 
7
MainWindow::MainWindow(QWidget *parent)
8
    : QMainWindow(parent)
9
{
10
    QLabel *dbLabel = new QLabel("Database");
11
    QComboBox *dbCombo = new QComboBox;
12
    dbCombo->addItem("default");
13
    dbCombo->setEnabled(false);
14
    QPushButton *dbPrefButton = new QPushButton("Config");
15
    QPushButton *dbConnectButton = new QPushButton("Connect");
16
    QHBoxLayout *dbLayout = new QHBoxLayout;
17
    dbLayout->addWidget(dbLabel);
18
    dbLayout->addWidget(dbCombo);
19
    dbLayout->addWidget(dbPrefButton);
20
    dbLayout->addWidget(dbConnectButton);
21
 
4 diffor 22
    QGroupBox *queryGroup = new QGroupBox("Query");
2 diffor 23
    queryEdit = new QTextEdit;
24
    QPushButton *queryExecButton = new QPushButton("Exec");
25
    QHBoxLayout *queryLayout = new QHBoxLayout;
26
    queryLayout->addWidget(queryEdit);
27
    queryLayout->addWidget(queryExecButton);
4 diffor 28
    queryGroup->setLayout(queryLayout);
2 diffor 29
 
4 diffor 30
    QGroupBox *logGroup = new QGroupBox("Log");
31
    logEdit = new QTextEdit;
32
    logEdit->setReadOnly(true);
33
    QHBoxLayout *logLayout = new QHBoxLayout;
34
    logLayout->addWidget(logEdit);
35
    logGroup->setLayout(logLayout);
36
 
37
    QGroupBox *resultGroup = new QGroupBox("Result");
2 diffor 38
    resultTable = new QTableView;
39
    resultModel = new QSqlQueryModel;
8 diffor 40
    QPushButton *previewButton = new QPushButton("Preview");
6 diffor 41
    QPushButton *printButton = new QPushButton("Print");
4 diffor 42
    QHBoxLayout *resultLayout = new QHBoxLayout;
43
    resultLayout->addWidget(resultTable);
8 diffor 44
    resultLayout->addWidget(previewButton);
6 diffor 45
    resultLayout->addWidget(printButton);
4 diffor 46
    resultGroup->setLayout(resultLayout);
2 diffor 47
 
48
    QWidget *mainWidget = new QWidget;
49
    QVBoxLayout *mainLayout = new QVBoxLayout;
50
    mainLayout->addLayout(dbLayout);
4 diffor 51
    mainLayout->addWidget(queryGroup);
52
    mainLayout->addWidget(logGroup);
53
    mainLayout->addWidget(resultGroup);
2 diffor 54
 
55
    mainWidget->setLayout(mainLayout);
56
    setCentralWidget(mainWidget);
57
 
58
    connect(queryExecButton,SIGNAL(clicked()),this,SLOT(queryExec()));
59
    connect(dbPrefButton, SIGNAL(clicked()),this,SLOT(settingsDB()));
60
    connect(dbConnectButton, SIGNAL(clicked()),this,SLOT(connectDB()));
8 diffor 61
    connect(previewButton, SIGNAL(clicked()), this, SLOT(on_previewPushButton_clicked()));
62
    connect(printButton, SIGNAL(clicked()), this, SLOT(on_printPushButton_clicked()));
3 diffor 63
    statusBar()->showMessage(tr("Ready"));
2 diffor 64
}
65
 
66
MainWindow::~MainWindow()
67
{
68
 
69
}
70
 
71
void MainWindow::queryExec()
72
{
4 diffor 73
    statusBar()->showMessage("SQL process...");
2 diffor 74
    resultModel->setQuery(queryEdit->toPlainText());
75
    resultTable->setModel(resultModel);
76
    resultTable->show();
4 diffor 77
 
78
    if(resultModel->lastError().isValid())
79
        logEdit->insertPlainText(resultModel->lastError().text());
80
        else logEdit->insertPlainText("No error.");
81
    logEdit->insertPlainText("\n");
82
    statusBar()->showMessage("Ready");
2 diffor 83
}
84
 
85
void MainWindow::settingsDB()
86
{
87
    DbConfigDialog *dbc = new DbConfigDialog();
88
    dbc->exec();
89
}
90
 
91
void MainWindow::connectDB()
92
{
93
    QSettings settings;
94
 
95
    QSqlDatabase db = QSqlDatabase::addDatabase(settings.value("DB/driver").toString());
96
    db.setDatabaseName(settings.value("DB/database").toString());
97
    if (!db.open())
98
        QMessageBox::critical(this, tr("Connection error"), tr("Can't open database\n%1").arg(db.lastError().text()), QMessageBox::Ok);
99
    else
100
        QMessageBox::information(this,tr("Connection complete"), tr("Connection complete!"),QMessageBox::Ok);
101
}
6 diffor 102
 
103
void MainWindow::on_previewPushButton_clicked()
104
{
105
        TDPreviewDialog *dialog = new TDPreviewDialog(resultTable,new QPrinter(QPrinter::HighResolution),this);
106
        //dialog->setHeaderText(queryEdit->toPlainText());
107
        dialog->exec();
108
        delete dialog;
109
}
110
 
8 diffor 111
void MainWindow::on_printPushButton_clicked()
112
{
113
        TDPreviewDialog *dialog = new TDPreviewDialog(resultTable,new QPrinter(QPrinter::HighResolution),this);
114
        dialog->print();
115
        delete dialog;
116
}
117