summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--include/Config.h63
-rw-r--r--include/RoomInfoListItem.h6
-rw-r--r--include/TextInputWidget.h3
-rw-r--r--include/TimelineItem.h10
-rw-r--r--include/TopRoomBar.h3
-rw-r--r--include/UserInfoWidget.h3
-rw-r--r--include/ui/Menu.h7
-rw-r--r--src/EmojiCategory.cc11
-rw-r--r--src/LoginPage.cc9
-rw-r--r--src/LogoutDialog.cc10
-rw-r--r--src/RegisterPage.cc11
-rw-r--r--src/RoomInfoListItem.cc25
-rw-r--r--src/TextInputWidget.cc7
-rw-r--r--src/TimelineItem.cc37
-rw-r--r--src/TopRoomBar.cc14
-rw-r--r--src/UserInfoWidget.cc16
-rw-r--r--src/WelcomePage.cc9
-rw-r--r--src/ui/FlatButton.cc2
-rw-r--r--src/ui/TextField.cc2
19 files changed, 156 insertions, 92 deletions
diff --git a/include/Config.h b/include/Config.h
new file mode 100644
index 00000000..147f4446
--- /dev/null
+++ b/include/Config.h
@@ -0,0 +1,63 @@
+#pragma once
+
+// Non-theme app configuration. Layouts, fonts spacing etc.
+//
+// Font sizes are in pixels.
+
+namespace conf
+{
+// Global settings.
+static const int fontSize = 12;
+static const int emojiSize = 14;
+static const int headerFontSize = 21;
+
+// Button settings.
+namespace btn
+{
+static const int fontSize = 20;
+static const int cornerRadius = 3;
+}
+
+// RoomList specific.
+namespace roomlist
+{
+namespace fonts
+{
+static const int heading = 13;
+static const int badge = 10;
+static const int bubble = 20;
+}  // namespace fonts
+}  // namespace roomlist
+
+namespace userInfoWidget
+{
+namespace fonts
+{
+static const int displayName = 16;
+static const int userid = 14;
+}  // namespace fonts
+}  // namespace userInfoWidget
+
+namespace topRoomBar
+{
+namespace fonts
+{
+static const int roomName = 15;
+static const int roomDescription = 13;
+}  // namespace fonts
+}  // namespace topRoomBar
+
+namespace timeline
+{
+static const int msgMargin = 11;
+static const int avatarSize = 36;
+static const int headerSpacing = 5;
+static const int headerLeftMargin = 12;
+
+namespace fonts
+{
+static const int timestamp = 9;
+}
+}
+
+}  // namespace conf
diff --git a/include/RoomInfoListItem.h b/include/RoomInfoListItem.h
index f725dc06..12d5abb1 100644
--- a/include/RoomInfoListItem.h
+++ b/include/RoomInfoListItem.h
@@ -75,12 +75,6 @@ private:
 
 	QPixmap roomAvatar_;
 
-	// Sizes are relative to the default font size of the Widget.
-	static const float UnreadCountFontRatio;
-	static const float RoomNameFontRatio;
-	static const float RoomDescriptionFontRatio;
-	static const float RoomAvatarLetterFontRatio;
-
 	Menu *menu_;
 	QAction *toggleNotifications_;
 
diff --git a/include/TextInputWidget.h b/include/TextInputWidget.h
index e176d48c..225750f2 100644
--- a/include/TextInputWidget.h
+++ b/include/TextInputWidget.h
@@ -63,7 +63,4 @@ private:
 	FlatButton *send_file_button_;
 	FlatButton *send_message_button_;
 	EmojiPickButton *emoji_button_;
-
-	const float TextFontRatio = 1.1;
-	const float EmojiFontRatio = 1.3;
 };
diff --git a/include/TimelineItem.h b/include/TimelineItem.h
index 6fd26f52..50a21df3 100644
--- a/include/TimelineItem.h
+++ b/include/TimelineItem.h
@@ -69,16 +69,10 @@ private:
 
 	QHBoxLayout *headerLayout_;  // Username (&) Timestamp
 
-	int MessageMargin;
-
-	const int AvatarSize = 36;
-	const float TimestampFontRatio = 0.8;
-	const float EmojiFontRatio = 1.4;
-
-	float EmojiSize = 13;
-
 	Avatar *userAvatar_;
 
+	QFont font_;
+
 	QLabel *timestamp_;
 	QLabel *userName_;
 	QLabel *body_;
diff --git a/include/TopRoomBar.h b/include/TopRoomBar.h
index ad246090..d5cb8e8e 100644
--- a/include/TopRoomBar.h
+++ b/include/TopRoomBar.h
@@ -68,9 +68,6 @@ private:
 	Avatar *avatar_;
 
 	int buttonSize_;
-
-	const float RoomNameFontRatio = 1.2;
-	const float RoomDescriptionFontRatio = 1;
 };
 
 inline void TopRoomBar::updateRoomAvatar(const QImage &avatar_image)
diff --git a/include/UserInfoWidget.h b/include/UserInfoWidget.h
index 35f7a6f5..10c770d8 100644
--- a/include/UserInfoWidget.h
+++ b/include/UserInfoWidget.h
@@ -72,7 +72,4 @@ private:
 	LogoutDialog *logoutDialog_;
 
 	int logoutButtonSize_;
-
-	const float DisplayNameFontRatio = 1.3;
-	const float UserIdFontRatio = 1.1;
 };
diff --git a/include/ui/Menu.h b/include/ui/Menu.h
index 44c13b79..7794b2d2 100644
--- a/include/ui/Menu.h
+++ b/include/ui/Menu.h
@@ -2,13 +2,18 @@
 
 #include <QMenu>
 
+#include "Config.h"
+
 class Menu : public QMenu
 {
 public:
 	Menu(QWidget *parent = nullptr)
 	    : QMenu(parent)
 	{
-		setFont(QFont("Open Sans", 10));
+		QFont font;
+		font.setPixelSize(conf::fontSize);
+
+		setFont(font);
 		setStyleSheet(
 			"QMenu { color: black; background-color: white; margin: 0px;}"
 			"QMenu::item { color: black; padding: 7px 20px; border: 1px solid transparent; margin: 2px 0px; }"
diff --git a/src/EmojiCategory.cc b/src/EmojiCategory.cc
index 3aa3009b..f633e5eb 100644
--- a/src/EmojiCategory.cc
+++ b/src/EmojiCategory.cc
@@ -18,6 +18,7 @@
 #include <QDebug>
 #include <QScrollBar>
 
+#include "Config.h"
 #include "EmojiCategory.h"
 
 EmojiCategory::EmojiCategory(QString category, QList<Emoji> emoji, QWidget *parent)
@@ -62,12 +63,12 @@ EmojiCategory::EmojiCategory(QString category, QList<Emoji> emoji, QWidget *pare
 		itemModel_->appendRow(item);
 	}
 
+	QFont font("Open Sans SemiBold");
+	font.setPixelSize(conf::fontSize);
+
 	category_ = new QLabel(category, this);
-	category_->setStyleSheet(
-		"color: #ccc;"
-		"margin: 20px 0px 15px 8px;"
-		"font-weight: 500;"
-		"font-size: 12px;");
+	category_->setFont(font);
+	category_->setStyleSheet("color: #ccc; margin: 20px 0px 15px 8px;");
 
 	auto labelLayout_ = new QHBoxLayout();
 	labelLayout_->addWidget(category_);
diff --git a/src/LoginPage.cc b/src/LoginPage.cc
index 24bfd143..329cdebc 100644
--- a/src/LoginPage.cc
+++ b/src/LoginPage.cc
@@ -17,6 +17,7 @@
 
 #include <QDebug>
 
+#include "Config.h"
 #include "InputValidator.h"
 #include "LoginPage.h"
 
@@ -119,15 +120,19 @@ LoginPage::LoginPage(QSharedPointer<MatrixClient> client, QWidget *parent)
 	login_button_->setBackgroundColor(QColor("#333333"));
 	login_button_->setForegroundColor(QColor("white"));
 	login_button_->setMinimumSize(350, 65);
-	login_button_->setFontSize(17);
+	login_button_->setFontSize(20);
 	login_button_->setCornerRadius(3);
 
 	button_layout_->addStretch(1);
 	button_layout_->addWidget(login_button_);
 	button_layout_->addStretch(1);
 
+	QFont font;
+	font.setPixelSize(conf::fontSize);
+
 	error_label_ = new QLabel(this);
-	error_label_->setStyleSheet("color: #E22826; font-size: 11pt;");
+	error_label_->setFont(font);
+	error_label_->setStyleSheet("color: #E22826");
 
 	top_layout_->addLayout(top_bar_layout_);
 	top_layout_->addStretch(1);
diff --git a/src/LogoutDialog.cc b/src/LogoutDialog.cc
index b8d55449..db3ab343 100644
--- a/src/LogoutDialog.cc
+++ b/src/LogoutDialog.cc
@@ -18,6 +18,7 @@
 #include <QLabel>
 #include <QVBoxLayout>
 
+#include "Config.h"
 #include "LogoutDialog.h"
 #include "Theme.h"
 
@@ -36,17 +37,20 @@ LogoutDialog::LogoutDialog(QWidget *parent)
 	buttonLayout->setMargin(0);
 
 	confirmBtn_ = new FlatButton("OK", this);
-	confirmBtn_->setFontSize(12);
+	confirmBtn_->setFontSize(conf::btn::fontSize);
 
 	cancelBtn_ = new FlatButton(tr("CANCEL"), this);
-	cancelBtn_->setFontSize(12);
+	cancelBtn_->setFontSize(conf::btn::fontSize);
 
 	buttonLayout->addStretch(1);
 	buttonLayout->addWidget(confirmBtn_);
 	buttonLayout->addWidget(cancelBtn_);
 
+	QFont font;
+	font.setPixelSize(conf::headerFontSize);
+
 	auto label = new QLabel(tr("Logout. Are you sure?"), this);
-	label->setFont(QFont("Open Sans", 14));
+	label->setFont(font);
 	label->setStyleSheet("color: #333333");
 
 	layout->addWidget(label);
diff --git a/src/RegisterPage.cc b/src/RegisterPage.cc
index 867ac7f1..d6120c38 100644
--- a/src/RegisterPage.cc
+++ b/src/RegisterPage.cc
@@ -18,6 +18,7 @@
 #include <QDebug>
 #include <QToolTip>
 
+#include "Config.h"
 #include "InputValidator.h"
 #include "RegisterPage.h"
 
@@ -101,15 +102,19 @@ RegisterPage::RegisterPage(QSharedPointer<MatrixClient> client, QWidget *parent)
 	button_layout_->setSpacing(0);
 	button_layout_->setMargin(0);
 
+	QFont font;
+	font.setPixelSize(conf::fontSize);
+
 	error_label_ = new QLabel(this);
-	error_label_->setStyleSheet("margin-bottom: 10px; color: #E22826; font-size: 11pt;");
+	error_label_->setFont(font);
+	error_label_->setStyleSheet("color: #E22826");
 
 	register_button_ = new RaisedButton(tr("REGISTER"), this);
 	register_button_->setBackgroundColor(QColor("#333333"));
 	register_button_->setForegroundColor(QColor("white"));
 	register_button_->setMinimumSize(350, 65);
-	register_button_->setFontSize(17);
-	register_button_->setCornerRadius(3);
+	register_button_->setFontSize(conf::btn::fontSize);
+	register_button_->setCornerRadius(conf::btn::cornerRadius);
 
 	button_layout_->addStretch(1);
 	button_layout_->addWidget(register_button_);
diff --git a/src/RoomInfoListItem.cc b/src/RoomInfoListItem.cc
index eec53ce4..11d4da57 100644
--- a/src/RoomInfoListItem.cc
+++ b/src/RoomInfoListItem.cc
@@ -19,16 +19,12 @@
 #include <QMouseEvent>
 #include <QPainter>
 
+#include "Config.h"
 #include "Ripple.h"
 #include "RoomInfoListItem.h"
 #include "RoomState.h"
 #include "Theme.h"
 
-const float RoomInfoListItem::UnreadCountFontRatio = 0.8;
-const float RoomInfoListItem::RoomNameFontRatio = 1.1;
-const float RoomInfoListItem::RoomDescriptionFontRatio = 1.1;
-const float RoomInfoListItem::RoomAvatarLetterFontRatio = 1.8;
-
 RoomInfoListItem::RoomInfoListItem(QSharedPointer<RoomSettings> settings,
 				   RoomState state,
 				   QString room_id,
@@ -90,14 +86,15 @@ void RoomInfoListItem::paintEvent(QPaintEvent *event)
 		p.fillRect(rect(), QColor("#F8FBFE"));
 
 	QFont font;
+	font.setPixelSize(conf::fontSize);
 	QFontMetrics metrics(font);
 
 	p.setPen(QColor("#333"));
 
 	QRect avatarRegion(Padding, Padding, IconSize, IconSize);
 
-	// Description line
-	int bottom_y = maxHeight_ - Padding - metrics.height() / 2 + Padding / 2;
+	// Description line with the default font.
+	int bottom_y = maxHeight_ - Padding - Padding / 3 - metrics.ascent() / 2;
 
 	if (width() > ui::sidebar::SmallSize) {
 		if (isPressed_) {
@@ -105,11 +102,15 @@ void RoomInfoListItem::paintEvent(QPaintEvent *event)
 			p.setPen(pen);
 		}
 
-		font.setPointSize(this->font().pointSize() * RoomNameFontRatio);
+		font.setPixelSize(conf::roomlist::fonts::heading);
 		p.setFont(font);
 
+		// Name line.
+		QFontMetrics fontNameMetrics(font);
+		int top_y = 2 * Padding + fontNameMetrics.ascent() / 2;
+
 		auto name = metrics.elidedText(state_.getName(), Qt::ElideRight, (width() - IconSize - 2 * Padding) * 0.8);
-		p.drawText(QPoint(2 * Padding + IconSize, Padding + metrics.height()), name);
+		p.drawText(QPoint(2 * Padding + IconSize, top_y), name);
 
 		if (!isPressed_) {
 			QPen pen(QColor("#5d6565"));
@@ -121,7 +122,7 @@ void RoomInfoListItem::paintEvent(QPaintEvent *event)
 		if (unreadMsgCount_ > 0)
 			descPercentage = 0.8;
 
-		font.setPointSize(this->font().pointSize() * RoomDescriptionFontRatio);
+		font.setPixelSize(conf::fontSize);
 		p.setFont(font);
 
 		auto description = metrics.elidedText(state_.getTopic(), Qt::ElideRight, width() * descPercentage - 2 * Padding - IconSize);
@@ -141,7 +142,7 @@ void RoomInfoListItem::paintEvent(QPaintEvent *event)
 
 		p.drawEllipse(avatarRegion.center(), IconSize / 2, IconSize / 2);
 
-		font.setPointSize(this->font().pointSize() * RoomAvatarLetterFontRatio);
+		font.setPixelSize(conf::roomlist::fonts::bubble);
 		p.setFont(font);
 		p.setPen(QColor("#333"));
 		p.setBrush(Qt::NoBrush);
@@ -169,7 +170,7 @@ void RoomInfoListItem::paintEvent(QPaintEvent *event)
 			brush.setColor(textColor);
 
 		QFont unreadCountFont;
-		unreadCountFont.setPointSize(this->font().pointSize() * UnreadCountFontRatio);
+		unreadCountFont.setPixelSize(conf::roomlist::fonts::badge);
 		unreadCountFont.setBold(true);
 
 		p.setBrush(brush);
diff --git a/src/TextInputWidget.cc b/src/TextInputWidget.cc
index f09608a0..9b70cd9b 100644
--- a/src/TextInputWidget.cc
+++ b/src/TextInputWidget.cc
@@ -20,6 +20,7 @@
 #include <QPainter>
 #include <QStyleOption>
 
+#include "Config.h"
 #include "TextInputWidget.h"
 
 FilteredTextEdit::FilteredTextEdit(QWidget *parent)
@@ -58,7 +59,7 @@ TextInputWidget::TextInputWidget(QWidget *parent)
 	send_file_button_->setIconSize(QSize(24, 24));
 
 	QFont font;
-	font.setPointSize(this->font().pointSize() * TextFontRatio);
+	font.setPixelSize(conf::fontSize);
 
 	input_ = new FilteredTextEdit(this);
 	input_->setFixedHeight(45);
@@ -99,10 +100,10 @@ void TextInputWidget::addSelectedEmoji(const QString &emoji)
 	QTextCursor cursor = input_->textCursor();
 
 	QFont emoji_font("Emoji One");
-	emoji_font.setPointSize(this->font().pointSize() * EmojiFontRatio);
+	emoji_font.setPixelSize(conf::emojiSize);
 
 	QFont text_font("Open Sans");
-	text_font.setPixelSize(this->font().pointSize() * TextFontRatio);
+	text_font.setPixelSize(conf::fontSize);
 
 	QTextCharFormat charfmt;
 	charfmt.setFont(emoji_font);
diff --git a/src/TimelineItem.cc b/src/TimelineItem.cc
index 66c55f0c..7db1c7cf 100644
--- a/src/TimelineItem.cc
+++ b/src/TimelineItem.cc
@@ -22,6 +22,7 @@
 #include <QTextEdit>
 
 #include "AvatarProvider.h"
+#include "Config.h"
 #include "ImageItem.h"
 #include "TimelineItem.h"
 #include "TimelineViewManager.h"
@@ -39,19 +40,16 @@ void TimelineItem::init()
 	userName_ = nullptr;
 	body_ = nullptr;
 
-	// Initialize layout spacing variables based on the current font.
-	QFontMetrics fm(this->font());
-	const int baseWidth = fm.width('A');
-	MessageMargin = baseWidth * 1.5;
+	font_.setPixelSize(conf::fontSize);
 
-	EmojiSize = this->font().pointSize() * EmojiFontRatio;
+	QFontMetrics fm(font_);
 
 	topLayout_ = new QHBoxLayout(this);
 	sideLayout_ = new QVBoxLayout();
 	mainLayout_ = new QVBoxLayout();
 	headerLayout_ = new QHBoxLayout();
 
-	topLayout_->setContentsMargins(MessageMargin, MessageMargin, 0, 0);
+	topLayout_->setContentsMargins(conf::timeline::msgMargin, conf::timeline::msgMargin, 0, 0);
 	topLayout_->setSpacing(0);
 
 	topLayout_->addLayout(sideLayout_);
@@ -60,11 +58,11 @@ void TimelineItem::init()
 	sideLayout_->setMargin(0);
 	sideLayout_->setSpacing(0);
 
-	mainLayout_->setContentsMargins(baseWidth * 2, 0, 0, 0);
+	mainLayout_->setContentsMargins(conf::timeline::headerLeftMargin, 0, 0, 0);
 	mainLayout_->setSpacing(0);
 
 	headerLayout_->setMargin(0);
-	headerLayout_->setSpacing(baseWidth / 2);
+	headerLayout_->setSpacing(conf::timeline::headerSpacing);
 }
 
 /* 
@@ -228,6 +226,7 @@ void TimelineItem::generateBody(const QString &body)
 	QString content("<span style=\"color: black;\"> %1 </span>");
 
 	body_ = new QLabel(this);
+	body_->setFont(font_);
 	body_->setWordWrap(true);
 	body_->setText(content.arg(replaceEmoji(body)));
 	body_->setMargin(0);
@@ -248,7 +247,7 @@ void TimelineItem::generateBody(const QString &userid, const QString &color, con
 	QString userContent("<span style=\"color: %1\"> %2 </span>");
 	QString bodyContent("<span style=\"color: #171717;\"> %1 </span>");
 
-	QFont usernameFont;
+	QFont usernameFont = font_;
 	usernameFont.setBold(true);
 
 	userName_ = new QLabel(this);
@@ -259,6 +258,7 @@ void TimelineItem::generateBody(const QString &userid, const QString &color, con
 		return;
 
 	body_ = new QLabel(this);
+	body_->setFont(font_);
 	body_->setWordWrap(true);
 	body_->setText(bodyContent.arg(replaceEmoji(body)));
 	body_->setTextInteractionFlags(Qt::TextSelectableByMouse | Qt::TextBrowserInteraction);
@@ -271,10 +271,10 @@ void TimelineItem::generateTimestamp(const QDateTime &time)
 	QString msg("<span style=\"color: #5d6565;\"> %1 </span>");
 
 	QFont timestampFont;
-	timestampFont.setPointSize(this->font().pointSize() * TimestampFontRatio);
+	timestampFont.setPixelSize(conf::timeline::fonts::timestamp);
 
 	QFontMetrics fm(timestampFont);
-	int topMargin = QFontMetrics(this->font()).height() - fm.height();
+	int topMargin = QFontMetrics(font_).ascent() - fm.ascent();
 
 	timestamp_ = new QLabel(this);
 	timestamp_->setFont(timestampFont);
@@ -291,7 +291,7 @@ QString TimelineItem::replaceEmoji(const QString &body)
 
 		// TODO: Be more precise here.
 		if (code > 9000)
-			fmtBody += QString("<span style=\"font-family: Emoji One; font-size: %1px\">").arg(EmojiSize) +
+			fmtBody += QString("<span style=\"font-family: Emoji One; font-size: %1px\">").arg(conf::emojiSize) +
 				   QString(c) +
 				   "</span>";
 		else
@@ -303,13 +303,13 @@ QString TimelineItem::replaceEmoji(const QString &body)
 
 void TimelineItem::setupAvatarLayout(const QString &userName)
 {
-	topLayout_->setContentsMargins(MessageMargin, MessageMargin, 0, 0);
+	topLayout_->setContentsMargins(conf::timeline::msgMargin, conf::timeline::msgMargin, 0, 0);
 
 	userAvatar_ = new Avatar(this);
 	userAvatar_->setLetter(QChar(userName[0]).toUpper());
 	userAvatar_->setBackgroundColor(QColor("#eee"));
 	userAvatar_->setTextColor(QColor("black"));
-	userAvatar_->setSize(AvatarSize);
+	userAvatar_->setSize(conf::timeline::avatarSize);
 
 	// TODO: The provided user name should be a UserId class
 	if (userName[0] == '@' && userName.size() > 1)
@@ -332,14 +332,13 @@ void TimelineItem::setupSimpleLayout()
 
 	// Align the end of the avatar bubble with the end of the timestamp for
 	// messages with and without avatar. Otherwise their bodies would not be aligned.
-	int timestampWidth = timestamp_->fontMetrics().boundingRect(plainText).width();
-	int offset = std::max(0, AvatarSize - timestampWidth) / 2;
+	int offset = std::max(0, conf::timeline::avatarSize - timestamp_->fontMetrics().width(plainText));
 
-	int defaultFontHeight = QFontMetrics(this->font()).height();
+	int defaultFontHeight = QFontMetrics(font_).ascent();
 
 	timestamp_->setAlignment(Qt::AlignTop);
-	timestamp_->setContentsMargins(offset, defaultFontHeight - timestamp_->fontMetrics().height(), offset, 0);
-	topLayout_->setContentsMargins(MessageMargin, MessageMargin / 3, 0, 0);
+	timestamp_->setContentsMargins(offset, defaultFontHeight - timestamp_->fontMetrics().ascent(), 0, 0);
+	topLayout_->setContentsMargins(conf::timeline::msgMargin, conf::timeline::msgMargin / 3, 0, 0);
 }
 
 void TimelineItem::setUserAvatar(const QImage &avatar)
diff --git a/src/TopRoomBar.cc b/src/TopRoomBar.cc
index 74e255a0..9de19e86 100644
--- a/src/TopRoomBar.cc
+++ b/src/TopRoomBar.cc
@@ -17,6 +17,7 @@
 
 #include <QStyleOption>
 
+#include "Config.h"
 #include "TopRoomBar.h"
 
 TopRoomBar::TopRoomBar(QWidget *parent)
@@ -41,18 +42,17 @@ TopRoomBar::TopRoomBar(QWidget *parent)
 	text_layout_->setSpacing(0);
 	text_layout_->setContentsMargins(0, 0, 0, 0);
 
-	QFont font;
-	font.setPointSize(this->font().pointSize() * RoomNameFontRatio);
-	font.setBold(true);
+	QFont roomFont("Open Sans SemiBold");
+	roomFont.setPixelSize(conf::topRoomBar::fonts::roomName);
 
 	name_label_ = new QLabel(this);
-	name_label_->setFont(font);
+	name_label_->setFont(roomFont);
 
-	font.setBold(false);
-	font.setPointSize(this->font().pointSize() * RoomDescriptionFontRatio);
+	QFont descriptionFont("Open Sans");
+	descriptionFont.setPixelSize(conf::topRoomBar::fonts::roomDescription);
 
 	topic_label_ = new QLabel(this);
-	topic_label_->setFont(font);
+	topic_label_->setFont(descriptionFont);
 
 	text_layout_->addWidget(name_label_);
 	text_layout_->addWidget(topic_label_);
diff --git a/src/UserInfoWidget.cc b/src/UserInfoWidget.cc
index a8fddcd0..57e2cdd5 100644
--- a/src/UserInfoWidget.cc
+++ b/src/UserInfoWidget.cc
@@ -18,6 +18,7 @@
 #include <QDebug>
 #include <QTimer>
 
+#include "Config.h"
 #include "FlatButton.h"
 #include "MainWindow.h"
 #include "UserInfoWidget.h"
@@ -47,20 +48,19 @@ UserInfoWidget::UserInfoWidget(QWidget *parent)
 	userAvatar_->setBackgroundColor("#f9f9f9");
 	userAvatar_->setTextColor("#333333");
 
-	QFont font;
-	font.setBold(true);
-	font.setPointSize(this->font().pointSize() * DisplayNameFontRatio);
+	QFont nameFont("Open Sans SemiBold");
+	nameFont.setPixelSize(conf::userInfoWidget::fonts::displayName);
 
 	displayNameLabel_ = new QLabel(this);
-	displayNameLabel_->setFont(font);
+	displayNameLabel_->setFont(nameFont);
 	displayNameLabel_->setStyleSheet("padding: 0 9px; color: #171919; margin-bottom: -10px;");
 	displayNameLabel_->setAlignment(Qt::AlignLeading | Qt::AlignLeft | Qt::AlignTop);
 
-	font.setBold(false);
-	font.setPointSize(this->font().pointSize() * UserIdFontRatio);
+	QFont useridFont("Open Sans");
+	useridFont.setPixelSize(conf::userInfoWidget::fonts::userid);
 
 	userIdLabel_ = new QLabel(this);
-	userIdLabel_->setFont(font);
+	userIdLabel_->setFont(useridFont);
 	userIdLabel_->setStyleSheet("padding: 0 8px 8px 8px; color: #555459;");
 	userIdLabel_->setAlignment(Qt::AlignLeading | Qt::AlignLeft | Qt::AlignVCenter);
 
@@ -129,7 +129,7 @@ void UserInfoWidget::resizeEvent(QResizeEvent *event)
 	Q_UNUSED(event);
 
 	if (width() <= ui::sidebar::SmallSize) {
-		topLayout_->setContentsMargins(0, 0, 10, 0);
+		topLayout_->setContentsMargins(0, 0, logoutButtonSize_ / 2 - 5 / 2, 0);
 
 		userAvatar_->hide();
 		displayNameLabel_->hide();
diff --git a/src/WelcomePage.cc b/src/WelcomePage.cc
index 67d64120..a39683f2 100644
--- a/src/WelcomePage.cc
+++ b/src/WelcomePage.cc
@@ -18,6 +18,7 @@
 #include <QApplication>
 #include <QLayout>
 
+#include "Config.h"
 #include "WelcomePage.h"
 
 WelcomePage::WelcomePage(QWidget *parent)
@@ -61,15 +62,15 @@ WelcomePage::WelcomePage(QWidget *parent)
 	register_button_->setBackgroundColor(QColor("#333333"));
 	register_button_->setForegroundColor(QColor("white"));
 	register_button_->setMinimumSize(240, 60);
-	register_button_->setFontSize(14);
-	register_button_->setCornerRadius(3);
+	register_button_->setFontSize(conf::btn::fontSize);
+	register_button_->setCornerRadius(conf::btn::cornerRadius);
 
 	login_button_ = new RaisedButton(tr("LOGIN"), this);
 	login_button_->setBackgroundColor(QColor("#333333"));
 	login_button_->setForegroundColor(QColor("white"));
 	login_button_->setMinimumSize(240, 60);
-	login_button_->setFontSize(14);
-	login_button_->setCornerRadius(3);
+	login_button_->setFontSize(conf::btn::fontSize);
+	login_button_->setCornerRadius(conf::btn::cornerRadius);
 
 	button_spacer_ = new QSpacerItem(20, 20, QSizePolicy::MinimumExpanding, QSizePolicy::Minimum);
 
diff --git a/src/ui/FlatButton.cc b/src/ui/FlatButton.cc
index 183b2294..7526ba9c 100644
--- a/src/ui/FlatButton.cc
+++ b/src/ui/FlatButton.cc
@@ -189,7 +189,7 @@ void FlatButton::setFontSize(qreal size)
 	font_size_ = size;
 
 	QFont f(font());
-	f.setPointSizeF(size);
+	f.setPixelSize(size);
 	setFont(f);
 
 	update();
diff --git a/src/ui/TextField.cc b/src/ui/TextField.cc
index a93d801d..fea808bb 100644
--- a/src/ui/TextField.cc
+++ b/src/ui/TextField.cc
@@ -74,7 +74,7 @@ void TextField::setLabelFontSize(qreal size)
 
 	if (label_) {
 		QFont font(label_->font());
-		font.setPointSizeF(size);
+		font.setPixelSize(size);
 		label_->setFont(font);
 		label_->update();
 	}