Started on window for managing the server.

This commit is contained in:
eelke 2017-02-12 08:13:38 +01:00
parent f51105bde0
commit 2f95c2f096
17 changed files with 163 additions and 8 deletions

View file

@ -2,6 +2,7 @@
#include "connectionmanagerwindow.h" #include "connectionmanagerwindow.h"
#include "connectionlistmodel.h" #include "connectionlistmodel.h"
#include "MainWindow.h" #include "MainWindow.h"
#include "ServerWindow.h"
MasterController::MasterController(QObject *parent) : QObject(parent) MasterController::MasterController(QObject *parent) : QObject(parent)
@ -27,7 +28,7 @@ void MasterController::showConnectionManager()
m_connectionManagerWindow->show(); m_connectionManagerWindow->show();
} }
void MasterController::openWindowForConnection(int connection_index) void MasterController::openSqlWindowForConnection(int connection_index)
{ {
auto cc = m_connectionListModel->get(connection_index); auto cc = m_connectionListModel->get(connection_index);
m_connectionListModel->save(connection_index); m_connectionListModel->save(connection_index);
@ -39,3 +40,15 @@ void MasterController::openWindowForConnection(int connection_index)
} }
} }
void MasterController::openServerWindowForConnection(int connection_index)
{
auto cc = m_connectionListModel->get(connection_index);
m_connectionListModel->save(connection_index);
if (cc.valid()) {
auto w = new ServerWindow(this, nullptr);
w->setAttribute( Qt::WA_DeleteOnClose );
//w->setConfig(cc.get());
w->show();
}
}

View file

@ -25,8 +25,8 @@ public:
} }
void showConnectionManager(); void showConnectionManager();
void openSqlWindowForConnection(int connection_index);
void openWindowForConnection(int connection_index); void openServerWindowForConnection(int connection_index);
signals: signals:

14
src/ServerWindow.cpp Normal file
View file

@ -0,0 +1,14 @@
#include "ServerWindow.h"
#include "ui_ServerWindow.h"
ServerWindow::ServerWindow(MasterController *master, QWidget *parent) :
QMainWindow(parent),
ui(new Ui::ServerWindow)
{
ui->setupUi(this);
}
ServerWindow::~ServerWindow()
{
delete ui;
}

24
src/ServerWindow.h Normal file
View file

@ -0,0 +1,24 @@
#ifndef SERVERWINDOW_H
#define SERVERWINDOW_H
#include <QMainWindow>
namespace Ui {
class ServerWindow;
}
class MasterController;
class ServerWindow : public QMainWindow
{
Q_OBJECT
public:
explicit ServerWindow(MasterController *master, QWidget *parent = 0);
~ServerWindow();
private:
Ui::ServerWindow *ui;
};
#endif // SERVERWINDOW_H

37
src/ServerWindow.ui Normal file
View file

@ -0,0 +1,37 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>ServerWindow</class>
<widget class="QMainWindow" name="ServerWindow">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>800</width>
<height>600</height>
</rect>
</property>
<property name="windowTitle">
<string>MainWindow</string>
</property>
<widget class="QWidget" name="centralwidget">
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QTableView" name="tableView"/>
</item>
</layout>
</widget>
<widget class="QMenuBar" name="menubar">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>800</width>
<height>23</height>
</rect>
</property>
</widget>
<widget class="QStatusBar" name="statusbar"/>
</widget>
<resources/>
<connections/>
</ui>

View file

@ -131,3 +131,4 @@ bool SqlLexer::nextBasicToken(int &startpos, int &length, BasicTokenType &tokent
} }
return false; return false;
} }

View file

@ -38,6 +38,7 @@ private:
QString m_block; QString m_block;
int m_pos = 0; int m_pos = 0;
LexerState m_state; LexerState m_state;
}; };
#endif // SQLLEXER_H #endif // SQLLEXER_H

View file

@ -86,7 +86,7 @@ void ConnectionManagerWindow::setupWidgetMappings()
void ConnectionManagerWindow::on_actionConnect_triggered() void ConnectionManagerWindow::on_actionConnect_triggered()
{ {
auto ci = ui->listView->selectionModel()->currentIndex(); auto ci = ui->listView->selectionModel()->currentIndex();
m_masterController->openWindowForConnection(ci.row()); m_masterController->openSqlWindowForConnection(ci.row());
} }
void ConnectionManagerWindow::on_actionQuit_application_triggered() void ConnectionManagerWindow::on_actionQuit_application_triggered()
@ -104,3 +104,9 @@ void ConnectionManagerWindow::on_actionBackup_database_triggered()
{ {
// BACKUP // BACKUP
} }
void ConnectionManagerWindow::on_actionManage_server_triggered()
{
auto ci = ui->listView->selectionModel()->currentIndex();
m_masterController->openServerWindowForConnection(ci.row());
}

View file

@ -34,6 +34,8 @@ private slots:
void on_actionBackup_database_triggered(); void on_actionBackup_database_triggered();
void on_actionManage_server_triggered();
private: private:
Ui::ConnectionManagerWindow *ui; Ui::ConnectionManagerWindow *ui;
QDataWidgetMapper *m_mapper = nullptr; QDataWidgetMapper *m_mapper = nullptr;

View file

@ -194,7 +194,7 @@
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>800</width> <width>800</width>
<height>22</height> <height>23</height>
</rect> </rect>
</property> </property>
<widget class="QMenu" name="menuFile"> <widget class="QMenu" name="menuFile">
@ -223,6 +223,8 @@
<bool>false</bool> <bool>false</bool>
</attribute> </attribute>
<addaction name="actionConnect"/> <addaction name="actionConnect"/>
<addaction name="actionManage_server"/>
<addaction name="separator"/>
<addaction name="actionAdd_Connection"/> <addaction name="actionAdd_Connection"/>
<addaction name="actionDelete_connection"/> <addaction name="actionDelete_connection"/>
<addaction name="separator"/> <addaction name="separator"/>
@ -274,6 +276,16 @@
<string>Backup database</string> <string>Backup database</string>
</property> </property>
</action> </action>
<action name="actionManage_server">
<property name="icon">
<iconset>
<normalon>:/icons/server_edit.png</normalon>
</iconset>
</property>
<property name="text">
<string>Manage server</string>
</property>
</action>
</widget> </widget>
<resources> <resources>
<include location="resources.qrc"/> <include location="resources.qrc"/>

BIN
src/icons/server_edit.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

View file

@ -197,6 +197,17 @@ void MainWindow::on_actionCancel_triggered()
void MainWindow::closeEvent(QCloseEvent *event) void MainWindow::closeEvent(QCloseEvent *event)
{ {
// TODO collect which files need saving // TODO collect which files need saving
std::vector<QString> files_to_save;
int n = ui->tabWidget->count();
for (int i = 0; i < n; ++i) {
QWidget *w = ui->tabWidget->widget(i);
QueryTab *qt = dynamic_cast<QueryTab*>(w);
if (qt) {
if (qt->isChanged()) {
files_to_save.push_back(qt->fileName());
}
}
}
// if (!m_queryTextChanged || continueWithoutSaving()) { // if (!m_queryTextChanged || continueWithoutSaving()) {
// event->accept(); // event->accept();
// } // }

View file

@ -55,6 +55,18 @@ private:
MasterController *m_masterController; MasterController *m_masterController;
// class OpenDocumentController {
// public:
// private:
// QString path = QStandardPaths::writableLocation(QStandardPaths::AppDataLocation);
// QDir dir(path);
// if (!dir.exists()) {
// dir.mkpath(".");
// }
// };
QueryTab *GetActiveQueryTab(); QueryTab *GetActiveQueryTab();

View file

@ -50,6 +50,9 @@ public:
void copyQueryAsCString(); void copyQueryAsCString();
void exportData(const QString &filename); void exportData(const QString &filename);
QString fileName() const { return m_fileName; }
bool isChanged() const { return m_queryTextChanged; }
private: private:
// struct ResultTab { // struct ResultTab {

View file

@ -19,5 +19,6 @@
<file>icons/backups.png</file> <file>icons/backups.png</file>
<file>icons/page_white_copy.png</file> <file>icons/page_white_copy.png</file>
<file>icons/token_shortland_character.png</file> <file>icons/token_shortland_character.png</file>
<file>icons/server_edit.png</file>
</qresource> </qresource>
</RCC> </RCC>

View file

@ -51,7 +51,8 @@ SOURCES += main.cpp\
ParamListModel.cpp \ ParamListModel.cpp \
MainWindow.cpp \ MainWindow.cpp \
SqlSyntaxHighlighter.cpp \ SqlSyntaxHighlighter.cpp \
SqlLexer.cpp SqlLexer.cpp \
ServerWindow.cpp
HEADERS += \ HEADERS += \
sqlparser.h \ sqlparser.h \
@ -89,7 +90,8 @@ HEADERS += \
ParamListModel.h \ ParamListModel.h \
MainWindow.h \ MainWindow.h \
SqlSyntaxHighlighter.h \ SqlSyntaxHighlighter.h \
SqlLexer.h SqlLexer.h \
ServerWindow.h
FORMS += mainwindow.ui \ FORMS += mainwindow.ui \
databasewindow.ui \ databasewindow.ui \
@ -97,7 +99,8 @@ FORMS += mainwindow.ui \
databaseinspectorwidget.ui \ databaseinspectorwidget.ui \
tuplesresultwidget.ui \ tuplesresultwidget.ui \
querytab.ui \ querytab.ui \
backupdialog.ui backupdialog.ui \
ServerWindow.ui
RESOURCES += \ RESOURCES += \
resources.qrc resources.qrc

View file

@ -26,3 +26,18 @@ TEST(mycase, lexer)
ASSERT_THAT( out, Eq(QString("SELECT")) ); ASSERT_THAT( out, Eq(QString("SELECT")) );
} }
TEST(mycase, lexer_quote_in_string)
{
QString input = " 'abc''def' ";
SqlLexer lexer(input, LexerState::Null);
int startpos, length;
BasicTokenType tokentype;
QString out;
lexer.nextBasicToken(startpos, length, tokentype, out);
ASSERT_THAT(startpos, Eq(1));
ASSERT_THAT(length, Eq(10));
ASSERT_THAT(tokentype, Eq(BasicTokenType::QuotedString));
}