ui: style search view

Added stylesheet for search view.
Added utility function that loads all font files inside a folder.
Added icons and font files.
This commit is contained in:
malte_langkabel
2014-07-15 12:30:40 +02:00
parent bbe5874a89
commit 61cb4afd91
16 changed files with 150 additions and 16 deletions
+3
View File
@@ -5,6 +5,7 @@
#include "Application.h"
#include "includes.h"
#include "qt/QtGuiFactory.h"
#include "qt/utility/utilityQt.h"
int main(int argc, char *argv[])
{
@@ -14,5 +15,7 @@ int main(int argc, char *argv[])
std::shared_ptr<Application> app = Application::create(&guiFactory);
app->loadProject("data/ProjectSettings.xml");
utility::loadFontsFromDirectory("data/fonts", ".otf");
return qtApp.exec();
}
+38
View File
@@ -1,5 +1,13 @@
#include "utilityQt.h"
#include <set>
#include <QFile>
#include <QFontDatabase>
#include "utility/FileSystem.h"
#include "utility/logging/logging.h"
namespace utility
{
void setWidgetBackgroundColor(QWidget* widget, const Colori& color)
@@ -9,4 +17,34 @@ namespace utility
widget->setPalette(palette);
widget->setAutoFillBackground(true);
}
void loadFontsFromDirectory(const std::string& path, const std::string& extension)
{
std::vector<std::string> extensions;
extensions.push_back(extension);
std::vector<std::string> fontFileNames = FileSystem::getFileNamesFromDirectory(path, extensions);
std::set<int> loadedFontIds;
for (const std::string& fontFileName: fontFileNames)
{
QFile file(fontFileName.c_str());
if (file.open(QIODevice::ReadOnly))
{
int id = QFontDatabase::addApplicationFontFromData(file.readAll());
if (id != -1)
{
loadedFontIds.insert(id);
}
}
}
for (int loadedFontId: loadedFontIds)
{
for (QString family: QFontDatabase::applicationFontFamilies(loadedFontId))
{
LOG_INFO("Loaded FontFamily: " + family.toStdString());
}
}
}
}
+1
View File
@@ -9,6 +9,7 @@
namespace utility
{
void setWidgetBackgroundColor(QWidget* widget, const Colori& color);
void loadFontsFromDirectory(const std::string& path, const std::string& extension = ".otf");
}
# endif // UTILITY_QT_H
+20 -15
View File
@@ -2,11 +2,12 @@
#include <QtWidgets>
#include "component/controller/SearchController.h"
#include "qt/element/QtButton.h"
#include "qt/element/QtEditBox.h"
#include "qt/QtWidgetWrapper.h"
#include "qt/utility/utilityQt.h"
#include "component/controller/SearchController.h"
#include "utility/text/TextAccess.h"
QtSearchView::QtSearchView(ViewLayout* viewLayout)
: SearchView(viewLayout)
@@ -27,28 +28,30 @@ void QtSearchView::createWidgetWrapper()
void QtSearchView::initGui()
{
QWidget* widget = QtWidgetWrapper::getWidgetOfView(this);
utility::setWidgetBackgroundColor(widget, Colori(190, 190, 190, 255));
utility::setWidgetBackgroundColor(widget, Colori(255, 255, 255, 255));
widget->setStyleSheet(TextAccess::createFromFile("data/gui/search_view/search_view.css")->getText().c_str());
QBoxLayout* layout = new QBoxLayout(QBoxLayout::LeftToRight);
layout->setSpacing(3);
layout->setContentsMargins(3, 3, 3, 3);
layout->setSpacing(0);
//layout->setContentsMargins(3, 3, 3, 3);
widget->setLayout(layout);
m_searchButton = new QtButton(widget);
m_searchButton->setCallbackOnClick(std::bind(&QtSearchView::onSearchButtonClick, this));
m_searchButton->setObjectName("search_button");
widget->layout()->addWidget(m_searchButton);
m_searchBox = new QtEditBox(widget);
m_searchBox->setPlaceholderText("Please enter your search string.");
m_searchBox->setCallbackOnReturnPressed(std::bind(&QtSearchView::onSearchButtonClick, this));
std::vector<std::string> autocompletionList;
autocompletionList.push_back("tralala");
autocompletionList.push_back("lalila");
setAutocompletionList(autocompletionList);
m_searchButton = new QtButton(widget);
m_searchButton->setText("Search");
m_searchButton->setCallbackOnClick(std::bind(&QtSearchView::onSearchButtonClick, this));
m_searchBox->setObjectName("search_box");
widget->layout()->addWidget(m_searchBox);
widget->layout()->addWidget(m_searchButton);
m_caseSensitiveButton = new QtButton(widget);
m_caseSensitiveButton->setObjectName("case_sensitive_button");
m_caseSensitiveButton->setCheckable(true);
widget->layout()->addWidget(m_caseSensitiveButton);
}
void QtSearchView::setText(const std::string& s)
@@ -84,6 +87,8 @@ void QtSearchView::doSetAutocompletionList(const std::vector<std::string>& autoc
for (const std::string& s: autocompletionList)
wordList << s.c_str();
QCompleter *completer = new QCompleter(wordList, m_searchBox);
completer->popup()->setObjectName("search_box_popup");
completer->setCaseSensitivity(Qt::CaseInsensitive);
m_searchBox->setCompleter(completer);
completer->popup()->setStyleSheet(TextAccess::createFromFile("data/gui/search_view/search_view.css")->getText().c_str());
}
+1
View File
@@ -31,6 +31,7 @@ private:
QtEditBox* m_searchBox;
QtButton* m_searchButton;
QtButton* m_caseSensitiveButton;
QtThreadedFunctor<const std::string&> m_setTextFunctor;
QtThreadedFunctor<const std::vector<std::string>&> m_setAutocompletionListFunctor;
};
+7
View File
@@ -25,6 +25,13 @@ std::vector<std::string> FileSystem::getSourceFilesFromDirectory(
return files;
}
std::vector<std::string> FileSystem::getFileNamesFromDirectory(
const std::string& path, const std::vector<std::string>& extensions
)
{
return getSourceFilesFromDirectory(path, extensions);
}
bool FileSystem::isValidExtension(const std::string& filepath, const std::vector<std::string>& extensions)
{
boost::filesystem::path path(filepath);
+6 -1
View File
@@ -7,9 +7,14 @@
class FileSystem
{
public:
static std::vector<std::string> getSourceFilesFromDirectory(
static std::vector<std::string> getSourceFilesFromDirectory( // TODO: Replace this with getFileNamesFromDirectory.
const std::string& path, const std::vector<std::string>& extensions
);
static std::vector<std::string> getFileNamesFromDirectory(
const std::string& path, const std::vector<std::string>& extensions
);
static bool exists(const std::string& path);
static std::string fileName(const std::string& path);