-
Notifications
You must be signed in to change notification settings - Fork 2
/
mainwindow.cpp
114 lines (87 loc) · 2.71 KB
/
mainwindow.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "connectionspane.h"
#include "connectivity/dbconnection.h"
#include "util/iconutil.h"
#include "util/dialoghelper.h"
#include "util/settingshelper.h"
#include "util/appconnectionmanager.h"
#include "connection_page/connectionpage.h"
#include "app_menu/appmenu.h"
#include "app_menu/appfilemenu.h"
#include <QtGui>
#include <iostream>
using namespace std;
MainWindow *MainWindow::instance = 0;
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
connectionsPane=new ConnectionsPane();
this->setCentralWidget(connectionsPane);
createMenu();
setWindowIcon(IconUtil::getIcon("database_big"));
setWindowTitle("OraExp");
SettingsHelper::restoreWindowPosition(this, "MainWindow");
SettingsHelper::loadStaticApplicationSettings();
//connectionsPane->installEventFilter(this);
connect(connectionsPane, SIGNAL(canExit()), this, SLOT(canExit()));
Q_ASSERT(MainWindow::instance == 0);
MainWindow::instance = this;
#ifndef DEBUG
showConnectDialog();
#endif
}
MainWindow::~MainWindow()
{
AppMenu::cleanUp();
delete ui;
delete connectionsPane; //to ensure that child DbConnection destructors will be called before destroyEnvironment
DbConnection::destroyEnvironment();
AppConnectionManager::cleanup();
}
void MainWindow::createMenu()
{
AppMenu::defaultInstance()->setupMenu(this, this->connectionsPane);
}
void MainWindow::showConnectDialog()
{
this->connectionsPane->addConnection();
}
void MainWindow::closeEvent(QCloseEvent *event)
{
event->setAccepted(false);
if(AppMenu::isAllDisabled()){ //exiting
return;
}
if(connectionsPane->isBusy()){
QMessageBox::information(this->window(), tr("Application busy"),
tr("Cannot exit when there are ongoing database operations."));
return;
}
bool exiting = connectionsPane->closeAll(true);
if(exiting){
AppMenu::disableAll();
}
}
void MainWindow::canExit()
{
SettingsHelper::saveWindowPosition(this, "MainWindow");
SettingsHelper::saveStaticApplicationSettings();
AppMenu::defaultInstance()->getFileMenu()->saveRecentFileList();
qApp->quit();
}
/*
bool MainWindow::eventFilter(QObject *obj, QEvent *ev)
{
if(obj==connectionsPane && ev->type()==QEvent::KeyPress){
QKeyEvent *keyEvent = static_cast<QKeyEvent *>(ev);
if(keyEvent->key()==Qt::Key_Tab && (keyEvent->modifiers() & Qt::ControlModifier)==Qt::ControlModifier){
qDebug("Ctrl+Tab pressed");
ev->setAccepted(true);
return true;
}
}
return QMainWindow::eventFilter(obj, ev);
}*/