Add a simple database console.

This commit is contained in:
John Maguire 2012-09-26 18:36:47 +02:00
parent 896a8739e9
commit 8887460cc7
7 changed files with 153 additions and 0 deletions

View File

@ -309,6 +309,7 @@ set(SOURCES
ui/appearancesettingspage.cpp
ui/backgroundstreamssettingspage.cpp
ui/behavioursettingspage.cpp
ui/console.cpp
ui/coverfromurldialog.cpp
ui/edittagdialog.cpp
ui/equalizer.cpp
@ -562,6 +563,7 @@ set(HEADERS
ui/appearancesettingspage.h
ui/backgroundstreamssettingspage.h
ui/behavioursettingspage.h
ui/console.h
ui/coverfromurldialog.h
ui/edittagdialog.h
ui/equalizer.h
@ -677,6 +679,7 @@ set(UI
ui/appearancesettingspage.ui
ui/backgroundstreamssettingspage.ui
ui/behavioursettingspage.ui
ui/console.ui
ui/coverfromurldialog.ui
ui/edittagdialog.ui
ui/equalizer.ui

44
src/ui/console.cpp Normal file
View File

@ -0,0 +1,44 @@
#include "console.h"
#include <QFont>
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QSqlRecord>
#include "core/application.h"
#include "core/database.h"
Console::Console(Application* app, QWidget* parent)
: QDialog(parent),
app_(app) {
ui_.setupUi(this);
connect(ui_.run, SIGNAL(clicked()), SLOT(RunQuery()));
QFont font("Monospace");
font.setStyleHint(QFont::TypeWriter);
ui_.output->setFont(font);
ui_.query->setFont(font);
}
void Console::RunQuery() {
QSqlDatabase db = app_->database()->Connect();
QSqlQuery query = db.exec(ui_.query->text());
ui_.query->clear();
ui_.output->append("<b>&gt; " + query.executedQuery() + "</b>");
query.next();
while (query.isValid()) {
QSqlRecord record = query.record();
QStringList values;
for (int i = 0; i < record.count(); ++i) {
values.append(record.value(i).toString());
}
ui_.output->append(values.join("|"));
query.next();
}
}

23
src/ui/console.h Normal file
View File

@ -0,0 +1,23 @@
#ifndef CONSOLE_H
#define CONSOLE_H
#include <QDialog>
#include "ui_console.h"
class Application;
class Console : public QDialog {
Q_OBJECT
public:
Console(Application* app, QWidget* parent = 0);
private slots:
void RunQuery();
private:
Ui::Console ui_;
Application* app_;
};
#endif // CONSOLE_H

68
src/ui/console.ui Normal file
View File

@ -0,0 +1,68 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Console</class>
<widget class="QDialog" name="Dialog">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>455</width>
<height>323</height>
</rect>
</property>
<property name="windowTitle">
<string>Console</string>
</property>
<layout class="QFormLayout" name="formLayout">
<item row="0" column="0" colspan="2">
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QTextBrowser" name="output"/>
</item>
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QLineEdit" name="query"/>
</item>
<item>
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QPushButton" name="run">
<property name="text">
<string>Run</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>

View File

@ -74,6 +74,7 @@
#include "ui/about.h"
#include "ui/addstreamdialog.h"
#include "ui/albumcovermanager.h"
#include "ui/console.h"
#include "ui/edittagdialog.h"
#include "ui/equalizer.h"
#include "ui/iconloader.h"
@ -653,6 +654,7 @@ MainWindow::MainWindow(Application* app,
SLOT(NowPlayingWidgetPositionChanged(bool)));
connect(ui_->action_hypnotoad, SIGNAL(toggled(bool)), ui_->now_playing, SLOT(AllHail(bool)));
connect(ui_->action_kittens, SIGNAL(toggled(bool)), ui_->now_playing, SLOT(EnableKittens(bool)));
connect(ui_->action_console, SIGNAL(triggered()), SLOT(ShowConsole()));
NowPlayingWidgetPositionChanged(ui_->now_playing->show_above_status_bar());
// Load theme
@ -2257,3 +2259,8 @@ void MainWindow::DoGlobalSearch(const QString& query) {
FocusGlobalSearchField();
global_search_view_->StartSearch(query);
}
void MainWindow::ShowConsole() {
Console* console = new Console(app_, this);
console->show();
}

View File

@ -252,6 +252,8 @@ class MainWindow : public QMainWindow, public PlatformInterface {
void FocusGlobalSearchField();
void DoGlobalSearch(const QString& query);
void ShowConsole();
private:
void ConnectInfoView(SongInfoBase* view);

View File

@ -474,6 +474,7 @@
<addaction name="action_hypnotoad"/>
<addaction name="action_enterprise"/>
<addaction name="action_kittens"/>
<addaction name="action_console"/>
<addaction name="separator"/>
</widget>
<widget class="QMenu" name="menu_tools">
@ -711,6 +712,11 @@
<string comment="Label for buton to enable/disable kittens in the now playing widget">Kittens</string>
</property>
</action>
<action name="action_console">
<property name="text">
<string>Console</string>
</property>
</action>
<action name="action_shuffle_mode">
<property name="text">
<string>&amp;Shuffle mode</string>