tabwidget.cpp \
abstracttab.cpp \
tabs/mylisttab.cpp \
+ tabs/searchtab.cpp \
tabs/reportstab.cpp \
tabs/unknownfilestab.cpp \
registertabs.cpp
tabwidget.h \
abstracttab.h \
tabs/mylisttab.h \
+ tabs/searchtab.h \
tabs/reportstab.h \
tabs/unknownfilestab.h
FORMS += mainwindow.ui \
databaseconnectiondialog.ui \
tabs/mylisttab.ui \
+ tabs/searchtab.ui \
tabs/reportstab.ui \
tabs/unknownfilestab.ui
#include "tabwidget.h"
#include "tabs/mylisttab.h"
+#include "tabs/searchtab.h"
#include "tabs/reportstab.h"
#include "tabs/unknownfilestab.h"
void registerTabs()
{
TabWidget::registerTab<MyListTab>();
+ TabWidget::registerTab<SearchTab>();
TabWidget::registerTab<ReportsTab>();
TabWidget::registerTab<UnknownFilesTab>();
}
--- /dev/null
+#include "searchtab.h"
+#include "ui_searchtab.h"
+
+#include <QSqlQueryModel>
+#include <QSqlQuery>
+
+#include "mylist.h"
+
+using namespace LocalMyList;
+
+SearchTab::SearchTab(QWidget *parent) :
+ AbstractTabBase(parent),
+ ui(new Ui::SearchTab)
+{
+ ui->setupUi(this);
+ m_label = name();
+}
+
+SearchTab::~SearchTab()
+{
+ delete ui;
+}
+
+QString SearchTab::staticId()
+{
+ return "search";
+}
+
+QString SearchTab::name()
+{
+ return tr("Search");
+}
+
+void SearchTab::init()
+{
+ model = new QSqlQueryModel(this);
+ ui->view->setModel(model);
+}
+
+void SearchTab::activate()
+{
+}
+
+void SearchTab::on_input_textChanged(const QString &text)
+{
+ QString query;
+
+ if (text.isEmpty())
+ {
+ model->setQuery(QSqlQuery());
+ return;
+ }
+
+ if (text.length() > 3)
+ query = "%" + text + "%";
+ else
+ query = text + "%";
+
+ QSqlQuery &q = MyList::instance()->database()->prepare(
+ "SELECT a.aid, b.title AS main_title, a.title, a.language, a.type FROM anime_title a "
+ " LEFT JOIN anime_title b on b.aid = a.aid "
+ " WHERE a.title ILIKE :query "
+ " AND b.type = 1 "
+ " ORDER BY a.title ASC, a.aid ASC "
+ " LIMIT 100");
+ q.bindValue(":word", text);
+ q.bindValue(":query", query);
+
+ MyList::instance()->database()->exec(q);
+ model->setQuery(q);
+
+ model->setHeaderData(0, Qt::Horizontal, tr("aid"));
+ model->setHeaderData(1, Qt::Horizontal, tr("Main Title"));
+ model->setHeaderData(2, Qt::Horizontal, tr("Title"));
+ model->setHeaderData(3, Qt::Horizontal, tr("Language"));
+ model->setHeaderData(4, Qt::Horizontal, tr("Type"));
+
+ ui->view->resizeColumnsToContents();
+
+/*
+ "SELECT a.aid, b.title AS main_title, a.title, a.language, a.type, a.title <-> :word AS distance FROM anime_title a "
+ " LEFT JOIN anime_title b on b.aid = a.aid "
+ " WHERE a.title ILIKE :query "
+ " AND b.type = 1 "
+ " ORDER BY distance ASC, a.title ASC, a.aid ASC "
+ " LIMIT 100");
+*/
+}
--- /dev/null
+#ifndef SEARCHTAB_H
+#define SEARCHTAB_H
+
+#include "abstracttab.h"
+
+namespace Ui {
+class SearchTab;
+}
+
+class QSqlQueryModel;
+
+class SearchTab : public AbstractTabBase<SearchTab>
+{
+ Q_OBJECT
+
+public:
+ explicit SearchTab(QWidget *parent = 0);
+ ~SearchTab();
+
+ static QString staticId();
+ static QString name();
+
+ void init();
+ void activate();
+
+private slots:
+ void on_input_textChanged(const QString &text);
+
+private:
+ Ui::SearchTab *ui;
+
+ QSqlQueryModel *model;
+};
+
+#endif // SEARCHTAB_H
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>SearchTab</class>
+ <widget class="QWidget" name="SearchTab">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>400</width>
+ <height>300</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>Form</string>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <property name="leftMargin">
+ <number>0</number>
+ </property>
+ <property name="rightMargin">
+ <number>0</number>
+ </property>
+ <property name="bottomMargin">
+ <number>0</number>
+ </property>
+ <item>
+ <widget class="FilterLineEdit" name="input"/>
+ </item>
+ <item>
+ <widget class="QTableView" name="view"/>
+ </item>
+ </layout>
+ </widget>
+ <customwidgets>
+ <customwidget>
+ <class>FilterLineEdit</class>
+ <extends>QLineEdit</extends>
+ <header>filterlineedit.h</header>
+ </customwidget>
+ </customwidgets>
+ <resources/>
+ <connections/>
+</ui>
!nogui {
SUBDIRS += localmylist-management
-
- !notools {
- SUBDIRS += search-gui
- }
}
!notools {
+++ /dev/null
-#include <QApplication>
-#include "mainwindow.h"
-
-int main(int argc, char *argv[])
-{
- QApplication a(argc, argv);
- MainWindow w;
- w.show();
-
- return a.exec();
-}
+++ /dev/null
-#include "mainwindow.h"
-#include "ui_mainwindow.h"
-
-#include <QSqlQuery>
-#include <QSqlError>
-#include "database.h"
-#include "mylist.h"
-
-#include <QDebug>
-
-using namespace LocalMyList;
-
-MainWindow::MainWindow(QWidget *parent) :
- QMainWindow(parent),
- ui(new Ui::MainWindow)
-{
- ui->setupUi(this);
- MyList::instance()->loadLocalSettings();
- MyList::instance()->database()->connect();
-
- model = new QSqlQueryModel(this);
-
- ui->resultView->setModel(model);
- on_search_textChanged("");
-}
-
-MainWindow::~MainWindow()
-{
- delete ui;
-}
-
-void MainWindow::on_search_textChanged(const QString &text)
-{
-
- QString query;
-
- if (text.isEmpty())
- {
- model->setQuery(QSqlQuery());
- return;
- }
-
- if (text.length() > 3)
- query = "%" + text + "%";
- else
- query = text + "%";
-
- QSqlQuery &q = MyList::instance()->database()->prepare(
- "SELECT a.aid, b.title AS main_title, a.title, a.language, a.type, a.title <-> :word AS distance FROM anime_title a "
- " LEFT JOIN anime_title b on b.aid = a.aid "
- " WHERE a.title ILIKE :query "
- " AND b.type = 1 "
- " ORDER BY distance ASC, a.title ASC, a.aid ASC "
- " LIMIT 100");
- q.bindValue(":word", text);
- q.bindValue(":query", query);
-
- MyList::instance()->database()->exec(q);
- model->setQuery(q);
- ui->resultView->resizeColumnsToContents();
-
-}
+++ /dev/null
-#ifndef MAINWINDOW_H
-#define MAINWINDOW_H
-
-#include <QMainWindow>
-#include <QSqlQueryModel>
-
-namespace Ui {
- class MainWindow;
-}
-
-namespace LocalMyList {
- class Database;
-}
-
-class MainWindow : public QMainWindow
-{
- Q_OBJECT
-
-public:
- explicit MainWindow(QWidget *parent = 0);
- ~MainWindow();
-
-private slots:
- void on_search_textChanged(const QString &arg1);
-
-private:
- Ui::MainWindow *ui;
- QSqlQueryModel *model;
- LocalMyList::Database *db;
-};
-
-#endif // MAINWINDOW_H
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<ui version="4.0">
- <class>MainWindow</class>
- <widget class="QMainWindow" name="MainWindow">
- <property name="geometry">
- <rect>
- <x>0</x>
- <y>0</y>
- <width>400</width>
- <height>300</height>
- </rect>
- </property>
- <property name="windowTitle">
- <string>MainWindow</string>
- </property>
- <widget class="QWidget" name="centralWidget">
- <layout class="QVBoxLayout" name="verticalLayout">
- <item>
- <widget class="QLineEdit" name="search"/>
- </item>
- <item>
- <widget class="QTableView" name="resultView"/>
- </item>
- </layout>
- </widget>
- <widget class="QMenuBar" name="menuBar">
- <property name="geometry">
- <rect>
- <x>0</x>
- <y>0</y>
- <width>400</width>
- <height>21</height>
- </rect>
- </property>
- </widget>
- <widget class="QToolBar" name="mainToolBar">
- <attribute name="toolBarArea">
- <enum>TopToolBarArea</enum>
- </attribute>
- <attribute name="toolBarBreak">
- <bool>false</bool>
- </attribute>
- </widget>
- <widget class="QStatusBar" name="statusBar"/>
- </widget>
- <layoutdefault spacing="6" margin="11"/>
- <resources/>
- <connections/>
-</ui>
+++ /dev/null
-QT += core gui
-greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
-
-include(../config.pri)
-
-TARGET = lml-search-gui
-DESTDIR = ../build
-TEMPLATE = app
-
-
-SOURCES += main.cpp\
- mainwindow.cpp
-
-HEADERS += mainwindow.h
-
-FORMS += mainwindow.ui
-
-include(../localmylist.pri)
-
-target.path = $${PREFIX}/bin
-INSTALLS += target