Skip to content

Commit 469cc6f

Browse files
committed
feat: add custom UI theme
1 parent b578757 commit 469cc6f

File tree

110 files changed

+1810
-150
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

110 files changed

+1810
-150
lines changed

src/hobbits-gui/hobbits-gui.pro

+4-1
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ SOURCES += \
2424
batchcreationdialog.cpp \
2525
containerselectiondialog.cpp \
2626
hobbitsguiinfo.cpp \
27+
hobbitsstyle.cpp \
2728
main.cpp \
2829
mainwindow.cpp \
2930
preferencesdialog.cpp
@@ -32,6 +33,7 @@ HEADERS += \
3233
batchcreationdialog.h \
3334
containerselectiondialog.h \
3435
hobbitsguiinfo.h \
36+
hobbitsstyle.h \
3537
mainwindow.h \
3638
preferencesdialog.h
3739

@@ -76,7 +78,8 @@ mac {
7678
}
7779

7880
RESOURCES += \
79-
icons.qrc
81+
icons.qrc \
82+
style.qrc
8083

8184
INSTALLS =
8285

src/hobbits-gui/hobbitsstyle.cpp

+55
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
#include "hobbitsstyle.h"
2+
#include <QFile>
3+
#include <QFontDatabase>
4+
5+
HobbitsStyle::HobbitsStyle()
6+
{
7+
8+
}
9+
10+
void HobbitsStyle::drawPrimitive(QStyle::PrimitiveElement element, const QStyleOption *option, QPainter *painter, const QWidget *widget) const
11+
{
12+
if (element == PE_FrameFocusRect) {
13+
return;
14+
}
15+
QProxyStyle::drawPrimitive(element, option, painter, widget);
16+
}
17+
18+
void HobbitsStyle::applyStyle(QApplication &app)
19+
{
20+
loadFonts();
21+
22+
QFile styleFile(":/style/qss/style.qss");
23+
if (styleFile.open(QFile::ReadOnly)) {
24+
QString appStyle = styleFile.readAll();
25+
app.setStyleSheet(appStyle);
26+
}
27+
28+
auto style = new HobbitsStyle();
29+
app.setStyle(style);
30+
}
31+
32+
void HobbitsStyle::loadFonts()
33+
{
34+
QFontDatabase::addApplicationFont(":/style/fonts/Montserrat/Montserrat-Regular.ttf");
35+
QFontDatabase::addApplicationFont(":/style/fonts/Montserrat/Montserrat-Medium.ttf");
36+
QFontDatabase::addApplicationFont(":/style/fonts/Montserrat/Montserrat-Bold.ttf");
37+
38+
QFontDatabase::addApplicationFont(":/style/fonts/Roboto/Roboto-Thin.ttf");
39+
QFontDatabase::addApplicationFont(":/style/fonts/Roboto/Roboto-ThinItalic.ttf");
40+
QFontDatabase::addApplicationFont(":/style/fonts/Roboto/Roboto-Light.ttf");
41+
QFontDatabase::addApplicationFont(":/style/fonts/Roboto/Roboto-LightItalic.ttf");
42+
QFontDatabase::addApplicationFont(":/style/fonts/Roboto/Roboto-Regular.ttf");
43+
QFontDatabase::addApplicationFont(":/style/fonts/Roboto/Roboto-Italic.ttf");
44+
QFontDatabase::addApplicationFont(":/style/fonts/Roboto/Roboto-Medium.ttf");
45+
QFontDatabase::addApplicationFont(":/style/fonts/Roboto/Roboto-MediumItalic.ttf");
46+
QFontDatabase::addApplicationFont(":/style/fonts/Roboto/Roboto-Bold.ttf");
47+
QFontDatabase::addApplicationFont(":/style/fonts/Roboto/Roboto-BoldItalic.ttf");
48+
QFontDatabase::addApplicationFont(":/style/fonts/Roboto/Roboto-Black.ttf");
49+
QFontDatabase::addApplicationFont(":/style/fonts/Roboto/Roboto-BlackItalic.ttf");
50+
51+
QFontDatabase::addApplicationFont(":/style/fonts/Roboto_Mono/RobotoMono-VariableFont_wght.ttf");
52+
QFontDatabase::addApplicationFont(":/style/fonts/Roboto_Mono/static/RobotoMono-Regular.ttf");
53+
QFontDatabase::addApplicationFont(":/style/fonts/Roboto_Mono/static/RobotoMono-Medium.ttf");
54+
QFontDatabase::addApplicationFont(":/style/fonts/Roboto_Mono/static/RobotoMono-Bold.ttf");
55+
}

src/hobbits-gui/hobbitsstyle.h

+20
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
#ifndef HOBBITSSTYLE_H
2+
#define HOBBITSSTYLE_H
3+
4+
#include <QApplication>
5+
#include <QProxyStyle>
6+
7+
class HobbitsStyle : public QProxyStyle
8+
{
9+
public:
10+
HobbitsStyle();
11+
12+
void drawPrimitive(QStyle::PrimitiveElement element, const QStyleOption *option, QPainter *painter, const QWidget *widget = nullptr) const override;
13+
14+
static void applyStyle(QApplication &app);
15+
16+
private:
17+
static void loadFonts();
18+
};
19+
20+
#endif // HOBBITSSTYLE_H

src/hobbits-gui/main.cpp

+3
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
#include <QCommandLineParser>
55
#include <QStyle>
66
#include "settingsmanager.h"
7+
#include "hobbitsstyle.h"
78
#ifdef Q_OS_UNIX
89
#include <iostream>
910
#include <unistd.h>
@@ -13,6 +14,8 @@ int main(int argc, char *argv[])
1314
{
1415
QApplication a(argc, argv);
1516

17+
HobbitsStyle::applyStyle(a);
18+
1619
QCoreApplication::setOrganizationName("Mahlet");
1720
QCoreApplication::setApplicationName("hobbits");
1821
QCoreApplication::setApplicationVersion(HobbitsGuiInfo::getGuiVersion());

src/hobbits-gui/mainwindow.cpp

+5-4
Original file line numberDiff line numberDiff line change
@@ -55,14 +55,16 @@ MainWindow::MainWindow(QString extraPluginPath, QString configFilePath, QWidget
5555
// Populate View Menu
5656
ui->menu_View->addAction(ui->dock_bitContainerSelect->toggleViewAction());
5757
ui->menu_View->addAction(ui->dock_operatorPlugins->toggleViewAction());
58-
ui->menu_View->addSeparator();
5958
ui->menu_View->addAction(ui->dock_findBits->toggleViewAction());
6059
ui->menu_View->addSeparator();
6160
ui->menu_View->addMenu(m_splitViewMenu);
6261

62+
ui->dock_bitContainerSelect->setContentsMargins(0, 0, 0, 0);
63+
ui->dock_operatorPlugins->setContentsMargins(0, 0, 0, 0);
64+
ui->dock_findBits->setContentsMargins(0, 0, 0, 0);
6365
ui->dock_bitContainerSelect->toggleViewAction()->setShortcut(QKeySequence(Qt::CTRL + Qt::SHIFT + Qt::Key_B));
6466
ui->dock_operatorPlugins->toggleViewAction()->setShortcut(QKeySequence(Qt::CTRL + Qt::SHIFT + Qt::Key_O));
65-
ui->dock_findBits->toggleViewAction()->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_A));
67+
ui->dock_findBits->toggleViewAction()->setShortcut(QKeySequence(Qt::CTRL + Qt::SHIFT + Qt::Key_A));
6668

6769
// More menu initialization
6870
populateRecentBatchesMenu();
@@ -265,8 +267,7 @@ void MainWindow::initializeDisplays()
265267
void MainWindow::addDisplayGroup()
266268
{
267269
QTabWidget *tabs = new QTabWidget(this);
268-
tabs->setElideMode(Qt::ElideLeft);
269-
tabs->setDocumentMode(true);
270+
tabs->setElideMode(Qt::ElideNone);
270271

271272
m_displayTabsSplitter->addWidget(tabs);
272273

0 commit comments

Comments
 (0)