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
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

@@ -0,0 +1,37 @@
QLineEdit#search_box {
background: rgb(204, 204, 204);
border: 0px;
height: 26px;
padding: 0 4px;
selection-background-color: rgb(51, 51, 51);
font-family: "Source Code Pro";
font-size: 16px;
font-weight: bold;
}
QAbstractItemView#search_box_popup {
selection-background-color: rgb(51, 51, 51);
font-family: "Source Code Pro";
font-size: 14px;
font-weight: bold;
}
QPushButton#search_button {
border: 0px;
border-image: url(data/gui/search_view/images/button_search.png);
height: 26px;
height: 26px;
}
QPushButton#case_sensitive_button {
border-image: url(data/gui/search_view/images/button_case_sensitive_inactive.png);
border: 0px;
height: 26px;
height: 26px;
margin-left: 4px;
margin-right: 4px;
}
QPushButton#case_sensitive_button:checked {
border-image: url(data/gui/search_view/images/button_case_sensitive_active.png);
}
@@ -0,0 +1,37 @@
QLineEdit#search_box {
background: rgb(204, 204, 204);
border: 0px;
height: 26px;
padding: 0 4px;
selection-background-color: rgb(51, 51, 51);
font-family: "Source Code Pro";
font-size: 16px;
font-weight: bold;
}
QAbstractItemView#search_box_popup {
selection-background-color: rgb(51, 51, 51);
font-family: "Source Code Pro";
font-size: 14px;
font-weight: bold;
}
QPushButton#search_button {
border: 0px;
border-image: url(data/gui/search_view/images/button_search.png);
height: 26px;
height: 26px;
}
QPushButton#case_sensitive_button {
border-image: url(data/gui/search_view/images/button_case_sensitive_inactive.png);
border: 0px;
height: 26px;
height: 26px;
margin-left: 4px;
margin-right: 4px;
}
QPushButton#case_sensitive_button:checked {
border-image: url(data/gui/search_view/images/button_case_sensitive_active.png);
}
+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);