Skip to content
Snippets Groups Projects
Commit 94c4dccc authored by Lukáš Paukert's avatar Lukáš Paukert
Browse files

Cleanup after Qt UI

parent 21903e90
No related branches found
No related tags found
No related merge requests found
......@@ -21,9 +21,6 @@ if (${CMAKE_CXX_COMPILER_ID} MATCHES "GNU" OR ${CMAKE_CXX_COMPILER_ID} MATCHES "
set(CMAKE_CXX_FLAGS_MINSIZEREL "-Os")
endif ()
 
find_package(Qt5Widgets REQUIRED)
find_package(Qt5Network REQUIRED)
include_directories(
${CMAKE_CURRENT_BINARY_DIR}
${CMAKE_CURRENT_SOURCE_DIR}
......@@ -40,8 +37,6 @@ add_subdirectory(lib/SQLiteCpp)
set(SOURCES
src/main.cpp
src/ui_wt/MainPage.cpp
src/ui/forms/mainform.cpp
src/ui/widgets/textedit.cpp
src/calculation/InvertedIndex.cpp src/calculation/InvertedIndex.h
src/util/InvertedIndexJSONParser.cpp src/util/InvertedIndexJSONParser.h
src/calculation/Space.cpp src/calculation/Space.h
......@@ -51,38 +46,19 @@ set(SOURCES
src/util/QueryJSONParser.cpp src/util/QueryJSONParser.h
src/exceptions/Exceptions.h
src/database/Terms.cpp src/database/Terms.h
src/database/DocumentCollection.cpp src/database/DocumentCollection.h src/util/ArgumentParser.cpp src/util/ArgumentParser.h src/database/Document.cpp src/database/Document.h)
# User interface files
set(FORMS
src/ui/forms/mainform.ui
)
# Resource files
set(RESOURCES
resources.qrc
)
src/database/DocumentCollection.cpp src/database/DocumentCollection.h
src/util/ArgumentParser.cpp src/util/ArgumentParser.h
src/database/Document.cpp src/database/Document.h)
 
# Shared libraries
set(LIBRARIES
Qt5::Widgets
Qt5::Network
SQLiteCpp
wt
wthttp
)
 
# Generate additional sources with MOC and UIC
qt5_wrap_ui(UIC_SOURCES ${FORMS})
qt5_add_resources(RCC_SOURCES ${RESOURCES})
# Set target
add_executable(${TARGET_NAME} ${SOURCES} ${HEADERS} ${UIC_SOURCES} ${RCC_SOURCES})
add_executable(${TARGET_NAME} ${SOURCES} ${HEADERS})
 
# Link with libraries
target_link_libraries(${TARGET_NAME} ${LIBRARIES})
# Installation
install(TARGETS ${TARGET_NAME} RUNTIME DESTINATION bin)
install(FILES resources/${TARGET_NAME}.png DESTINATION share/icons/hicolor/48x48/apps)
install(FILES ${TARGET_NAME}.desktop DESTINATION share/applications)
<RCC>
<qresource prefix="/">
<file>resources/add-tab.png</file>
<file>resources/close-hover.png</file>
<file>resources/close.png</file>
<file>resources/main-icon.png</file>
<file>resources/swap.png</file>
<file>resources/settings.png</file>
</qresource>
</RCC>
querying/resources/add-tab.png

457 B

querying/resources/close-hover.png

219 B

querying/resources/close.png

258 B

querying/resources/main-icon.png

1.19 KiB

querying/resources/settings.png

593 B

querying/resources/swap.png

786 B

#include "mainform.h"
#include "ui_mainform.h"
#include <QMenu>
#include <QToolButton>
#include <QtCore/QFile>
#include <QtCore/QTextStream>
MainForm::MainForm(QWidget *parent) :
QMainWindow(parent),
UI(new Ui::MainForm),
documentsList(new QListWidget()),
resultsList(new QListWidget()),
openedDocument(new QTextBrowser()) {
setupUi();
}
MainForm::~MainForm() {
delete UI;
delete documentsList;
delete resultsList;
delete openedDocument;
}
void MainForm::setupUi() {
UI->setupUi(this);
setWindowIcon(QIcon(":/resources/main-icon.png"));
setWindowTitle("Querying: Vector model of information retrieval");
trayIcon.setIcon(QIcon(":/resources/main-icon.png"));
trayIcon.show();
connect(&trayIcon,
SIGNAL(activated(QSystemTrayIcon::ActivationReason)),
SLOT(onTrayIconActivated(QSystemTrayIcon::ActivationReason)));
UI->statusBar->hide();
UI->toolBar->setIconSize(QSize(24, 24));
UI->toolBar->setFloatable(false);
UI->toolBar->setMovable(false);
}
void MainForm::onTrayIconActivated(QSystemTrayIcon::ActivationReason reason) {
if (reason == QSystemTrayIcon::Trigger) {
setVisible(!isVisible());
} else if (reason == QSystemTrayIcon::Context) {
QMenu menu;
if (isVisible()) {
menu.addAction("Minimize", this, SLOT(hide()));
} else {
menu.addAction("Restore", this, SLOT(show()));
}
menu.addAction(settingsAction);
menu.addSeparator();
menu.addAction("Quit", qApp, SLOT(quit()));
menu.exec(QCursor::pos());
}
}
MainForm &MainForm::setAvailableDocuments(const std::vector<Document> &documents) {
QStringList dummy;
for (const auto &doc : documents)
dummy.append(QString(doc.name.data()));
UI->documentsList->addItems(dummy);
return *this;
}
MainForm &MainForm::setResults(const std::vector<std::string> &results) {
QStringList dummy;
for (const auto &result : results)
dummy.append(QString(result.data()));
UI->resultsList->addItems(dummy);
return *this;
}
MainForm &MainForm::setOpenedDocument(const Document &document) {
QString path = QString::fromStdString(document.name);
QFile file(path);
file.open(QIODevice::ReadOnly);
UI->documentBrowser->setText(QTextStream(&file).readAll());
file.close();
return *this;
}
#ifndef MAINFORM_H
#define MAINFORM_H
#include <QMainWindow>
#include <QSystemTrayIcon>
#include <string>
#include <vector>
#include <QtWidgets/QListView>
#include <QtCore/QStringListModel>
#include <QtWidgets/QListWidget>
#include <QtWidgets/QTextBrowser>
#include <src/database/Document.h>
namespace Ui {
class MainForm;
}
class MainForm : public QMainWindow {
Q_OBJECT
public:
explicit MainForm(QWidget *parent = nullptr);
~MainForm() override;
/**
* Diplays all available documents in @see documentsList
* @param documents List of document names to display
* @return self
*/
MainForm &setAvailableDocuments(const std::vector<Document> &documents);
/**
* Displays the results in the @see resultsList
* @param results Results to display
* @return self
*/
MainForm &setResults(const std::vector<std::string> &results);
/**
* Loads and opens a text document
* @param document Document path to display
* @return self
*/
MainForm &setOpenedDocument(const Document &document);
private:
Ui::MainForm *UI;
QSystemTrayIcon trayIcon;
QAction *settingsAction; /**< ? */
QListWidget *documentsList;/**<List view of documents */
QListWidget *resultsList;/**<List view of results - documents that are the result of the query*/
QTextBrowser *openedDocument; /**<Browser for the currently opened document*/
void setupUi();
private slots:
void onTrayIconActivated(QSystemTrayIcon::ActivationReason reason);
};
#endif // MAINFORM_H
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>MainForm</class>
<widget class="QMainWindow" name="MainForm">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>430</width>
<height>447</height>
</rect>
</property>
<property name="windowTitle">
<string>MainForm</string>
</property>
<widget class="QWidget" name="centralWidget">
<layout class="QVBoxLayout" name="verticalLayout">
<property name="leftMargin">
<number>2</number>
</property>
<property name="topMargin">
<number>2</number>
</property>
<property name="rightMargin">
<number>2</number>
</property>
<property name="bottomMargin">
<number>2</number>
</property>
<item>
<widget class="QListWidget" name="documentsList"/>
</item>
<item>
<widget class="QTextBrowser" name="documentBrowser"/>
</item>
<item>
<widget class="QListWidget" name="resultsList"/>
</item>
</layout>
</widget>
<widget class="QMenuBar" name="menuBar">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>430</width>
<height>25</height>
</rect>
</property>
</widget>
<widget class="QToolBar" name="toolBar">
<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>
#include "textedit.h"
#include <QDebug>
#include <QKeyEvent>
TextEdit::TextEdit(QWidget* parent) :
QPlainTextEdit(parent)
{
}
TextEdit::~TextEdit()
{
}
void TextEdit::keyPressEvent(QKeyEvent* e)
{
if(e->key() == Qt::Key_Escape) {
clear();
}
else {
QPlainTextEdit::keyPressEvent(e);
}
}
#ifndef TEXTEDIT_H
#define TEXTEDIT_H
#include <QPlainTextEdit>
class TextEdit : public QPlainTextEdit {
Q_OBJECT
public:
TextEdit(QWidget* parent = nullptr);
~TextEdit();
private:
void keyPressEvent(QKeyEvent* e);
};
#endif // TEXTEDIT_H
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment