diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 5d4b302b8..889bf89d3 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -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 diff --git a/src/ui/console.cpp b/src/ui/console.cpp new file mode 100644 index 000000000..5a89d9584 --- /dev/null +++ b/src/ui/console.cpp @@ -0,0 +1,44 @@ +#include "console.h" + +#include +#include +#include +#include + +#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("> " + query.executedQuery() + ""); + + 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(); + } +} diff --git a/src/ui/console.h b/src/ui/console.h new file mode 100644 index 000000000..2ba5b8532 --- /dev/null +++ b/src/ui/console.h @@ -0,0 +1,23 @@ +#ifndef CONSOLE_H +#define CONSOLE_H + +#include + +#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 diff --git a/src/ui/console.ui b/src/ui/console.ui new file mode 100644 index 000000000..0be439b28 --- /dev/null +++ b/src/ui/console.ui @@ -0,0 +1,68 @@ + + + Console + + + + 0 + 0 + 455 + 323 + + + + Console + + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + Run + + + + + + + + + + + + diff --git a/src/ui/mainwindow.cpp b/src/ui/mainwindow.cpp index 6bf90cdee..672065772 100644 --- a/src/ui/mainwindow.cpp +++ b/src/ui/mainwindow.cpp @@ -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(); +} diff --git a/src/ui/mainwindow.h b/src/ui/mainwindow.h index 0b0535d92..70094abd6 100644 --- a/src/ui/mainwindow.h +++ b/src/ui/mainwindow.h @@ -252,6 +252,8 @@ class MainWindow : public QMainWindow, public PlatformInterface { void FocusGlobalSearchField(); void DoGlobalSearch(const QString& query); + void ShowConsole(); + private: void ConnectInfoView(SongInfoBase* view); diff --git a/src/ui/mainwindow.ui b/src/ui/mainwindow.ui index 4a9cd0bbf..511ff1441 100644 --- a/src/ui/mainwindow.ui +++ b/src/ui/mainwindow.ui @@ -474,6 +474,7 @@ + @@ -711,6 +712,11 @@ Kittens + + + Console + + &Shuffle mode