diff --git a/mainwindow.ui b/mainwindow.ui
new file mode 100644
index 000000000..c4a3e92d7
--- /dev/null
+++ b/mainwindow.ui
@@ -0,0 +1,3336 @@
+
+
+ MainWindow
+
+
+
+ 0
+ 0
+ 882
+ 600
+
+
+
+
+ 640
+ 420
+
+
+
+ qTox
+
+
+
+ :/img/icon.png:/img/icon.png
+
+
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 0
+ 23
+
+
+
+
+ 16777215
+ 23
+
+
+
+
+ 4
+
+
+ 5
+
+
+ 0
+
+
+ 1
+
+
+ 0
+
+
-
+
+
+
+ 16
+ 16
+
+
+
+
+ 16
+ 16
+
+
+
+
+ 16
+ 16
+
+
+
+ QToolButton::InstantPopup
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+ QSizePolicy::Fixed
+
+
+
+ 15
+ 1
+
+
+
+
+ -
+
+
+
+ 100
+ 22
+
+
+
+
+ 16777215
+ 22
+
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+ QSizePolicy::Minimum
+
+
+
+ 134
+ 20
+
+
+
+
+ -
+
+
+
+ 22
+ 22
+
+
+
+
+ 22
+ 22
+
+
+
+
+ 22
+ 22
+
+
+
+ true
+
+
+
+ -
+
+
+
+ 22
+ 22
+
+
+
+
+ 22
+ 22
+
+
+
+
+ 22
+ 22
+
+
+
+ true
+
+
+
+ -
+
+
+
+ 22
+ 22
+
+
+
+
+ 22
+ 22
+
+
+
+
+ 22
+ 22
+
+
+
+ true
+
+
+
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+
+ true
+
+
+ false
+
+
+ QSplitter{
+ color: rgb(255, 255, 255);
+ background-color: rgb(255, 255, 255);
+ alternate-background-color: rgb(255, 255, 255);
+ border-color: rgb(255, 255, 255);
+ gridline-color: rgb(255, 255, 255);
+ selection-color: rgb(255, 255, 255);
+ selection-background-color: rgb(255, 255, 255);
+}
+QSplitter:handle{
+ color: rgb(255, 255, 255);
+ background-color: rgb(255, 255, 255);
+}
+
+
+ Qt::Horizontal
+
+
+ false
+
+
+
+
+ 0
+ 0
+
+
+
+
+ 225
+ 0
+
+
+
+
+ 1920
+ 16777215
+
+
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 28
+ 28
+ 28
+
+
+
+
+
+
+ 42
+ 42
+ 42
+
+
+
+
+
+
+ 35
+ 35
+ 35
+
+
+
+
+
+
+ 14
+ 14
+ 14
+
+
+
+
+
+
+ 18
+ 18
+ 18
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 0
+ 0
+ 0
+
+
+
+
+
+
+ 28
+ 28
+ 28
+
+
+
+
+
+
+ 0
+ 0
+ 0
+
+
+
+
+
+
+ 14
+ 14
+ 14
+
+
+
+
+
+
+ 28
+ 28
+ 28
+
+
+
+
+
+
+ 255
+ 255
+ 220
+
+
+
+
+
+
+ 0
+ 0
+ 0
+
+
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 28
+ 28
+ 28
+
+
+
+
+
+
+ 42
+ 42
+ 42
+
+
+
+
+
+
+ 35
+ 35
+ 35
+
+
+
+
+
+
+ 14
+ 14
+ 14
+
+
+
+
+
+
+ 18
+ 18
+ 18
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 0
+ 0
+ 0
+
+
+
+
+
+
+ 28
+ 28
+ 28
+
+
+
+
+
+
+ 0
+ 0
+ 0
+
+
+
+
+
+
+ 14
+ 14
+ 14
+
+
+
+
+
+
+ 28
+ 28
+ 28
+
+
+
+
+
+
+ 255
+ 255
+ 220
+
+
+
+
+
+
+ 0
+ 0
+ 0
+
+
+
+
+
+
+
+
+ 14
+ 14
+ 14
+
+
+
+
+
+
+ 28
+ 28
+ 28
+
+
+
+
+
+
+ 42
+ 42
+ 42
+
+
+
+
+
+
+ 35
+ 35
+ 35
+
+
+
+
+
+
+ 14
+ 14
+ 14
+
+
+
+
+
+
+ 18
+ 18
+ 18
+
+
+
+
+
+
+ 14
+ 14
+ 14
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 14
+ 14
+ 14
+
+
+
+
+
+
+ 28
+ 28
+ 28
+
+
+
+
+
+
+ 28
+ 28
+ 28
+
+
+
+
+
+
+ 0
+ 0
+ 0
+
+
+
+
+
+
+ 28
+ 28
+ 28
+
+
+
+
+
+
+ 28
+ 28
+ 28
+
+
+
+
+
+
+ 255
+ 255
+ 220
+
+
+
+
+
+
+ 0
+ 0
+ 0
+
+
+
+
+
+
+
+ true
+
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
-
+
+
+ true
+
+
+
+ 0
+ 0
+
+
+
+
+ 225
+ 60
+
+
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 28
+ 28
+ 28
+
+
+
+
+
+
+ 42
+ 42
+ 42
+
+
+
+
+
+
+ 35
+ 35
+ 35
+
+
+
+
+
+
+ 14
+ 14
+ 14
+
+
+
+
+
+
+ 18
+ 18
+ 18
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 0
+ 0
+ 0
+
+
+
+
+
+
+ 28
+ 28
+ 28
+
+
+
+
+
+
+ 0
+ 0
+ 0
+
+
+
+
+
+
+ 14
+ 14
+ 14
+
+
+
+
+
+
+ 255
+ 255
+ 220
+
+
+
+
+
+
+ 0
+ 0
+ 0
+
+
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 28
+ 28
+ 28
+
+
+
+
+
+
+ 42
+ 42
+ 42
+
+
+
+
+
+
+ 35
+ 35
+ 35
+
+
+
+
+
+
+ 14
+ 14
+ 14
+
+
+
+
+
+
+ 18
+ 18
+ 18
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 0
+ 0
+ 0
+
+
+
+
+
+
+ 28
+ 28
+ 28
+
+
+
+
+
+
+ 0
+ 0
+ 0
+
+
+
+
+
+
+ 14
+ 14
+ 14
+
+
+
+
+
+
+ 255
+ 255
+ 220
+
+
+
+
+
+
+ 0
+ 0
+ 0
+
+
+
+
+
+
+
+
+ 14
+ 14
+ 14
+
+
+
+
+
+
+ 28
+ 28
+ 28
+
+
+
+
+
+
+ 42
+ 42
+ 42
+
+
+
+
+
+
+ 35
+ 35
+ 35
+
+
+
+
+
+
+ 14
+ 14
+ 14
+
+
+
+
+
+
+ 18
+ 18
+ 18
+
+
+
+
+
+
+ 14
+ 14
+ 14
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 14
+ 14
+ 14
+
+
+
+
+
+
+ 28
+ 28
+ 28
+
+
+
+
+
+
+ 28
+ 28
+ 28
+
+
+
+
+
+
+ 0
+ 0
+ 0
+
+
+
+
+
+
+ 28
+ 28
+ 28
+
+
+
+
+
+
+ 255
+ 255
+ 220
+
+
+
+
+
+
+ 0
+ 0
+ 0
+
+
+
+
+
+
+
+ true
+
+
+
-
+
+
+ 0
+
+
-
+
+
+
+ 40
+ 40
+
+
+
+
+ 40
+ 40
+
+
+
+
+
+
+ :/img/contact.png
+
+
+ true
+
+
+
+ -
+
+
+ 0
+
+
-
+
+
+ true
+
+
+
+ 1
+ 0
+
+
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 240
+ 240
+ 240
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+
+
+ 11
+ 75
+ true
+
+
+
+ Your name
+
+
+
+ -
+
+
+
+ 1
+ 0
+
+
+
+
+
+
+
+
+ 193
+ 193
+ 193
+
+
+
+
+
+
+ 193
+ 193
+ 193
+
+
+
+
+
+
+
+
+ 193
+ 193
+ 193
+
+
+
+
+
+
+ 193
+ 193
+ 193
+
+
+
+
+
+
+
+
+ 14
+ 14
+ 14
+
+
+
+
+
+
+ 14
+ 14
+ 14
+
+
+
+
+
+
+
+
+ 8
+
+
+
+ Your status
+
+
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+ QSizePolicy::Fixed
+
+
+
+ 10
+ 20
+
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 20
+ 40
+
+
+
+ Qt::NoFocus
+
+
+
+
+
+
+ 10
+ 10
+
+
+
+ false
+
+
+ false
+
+
+ false
+
+
+ true
+
+
+
+
+
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 225
+ 0
+
+
+
+ Qt::LeftToRight
+
+
+ true
+
+
+ QFrame::NoFrame
+
+
+ Qt::ScrollBarAlwaysOff
+
+
+ true
+
+
+
+
+ 0
+ 0
+ 501
+ 430
+
+
+
+
+
+ -
+
+
+ true
+
+
+
+ 0
+ 0
+
+
+
+
+ 225
+ 35
+
+
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 28
+ 28
+ 28
+
+
+
+
+
+
+ 42
+ 42
+ 42
+
+
+
+
+
+
+ 35
+ 35
+ 35
+
+
+
+
+
+
+ 14
+ 14
+ 14
+
+
+
+
+
+
+ 18
+ 18
+ 18
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 0
+ 0
+ 0
+
+
+
+
+
+
+ 28
+ 28
+ 28
+
+
+
+
+
+
+ 0
+ 0
+ 0
+
+
+
+
+
+
+ 14
+ 14
+ 14
+
+
+
+
+
+
+ 255
+ 255
+ 220
+
+
+
+
+
+
+ 0
+ 0
+ 0
+
+
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 28
+ 28
+ 28
+
+
+
+
+
+
+ 42
+ 42
+ 42
+
+
+
+
+
+
+ 35
+ 35
+ 35
+
+
+
+
+
+
+ 14
+ 14
+ 14
+
+
+
+
+
+
+ 18
+ 18
+ 18
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 0
+ 0
+ 0
+
+
+
+
+
+
+ 28
+ 28
+ 28
+
+
+
+
+
+
+ 0
+ 0
+ 0
+
+
+
+
+
+
+ 14
+ 14
+ 14
+
+
+
+
+
+
+ 255
+ 255
+ 220
+
+
+
+
+
+
+ 0
+ 0
+ 0
+
+
+
+
+
+
+
+
+ 14
+ 14
+ 14
+
+
+
+
+
+
+ 28
+ 28
+ 28
+
+
+
+
+
+
+ 42
+ 42
+ 42
+
+
+
+
+
+
+ 35
+ 35
+ 35
+
+
+
+
+
+
+ 14
+ 14
+ 14
+
+
+
+
+
+
+ 18
+ 18
+ 18
+
+
+
+
+
+
+ 14
+ 14
+ 14
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 14
+ 14
+ 14
+
+
+
+
+
+
+ 28
+ 28
+ 28
+
+
+
+
+
+
+ 28
+ 28
+ 28
+
+
+
+
+
+
+ 0
+ 0
+ 0
+
+
+
+
+
+
+ 28
+ 28
+ 28
+
+
+
+
+
+
+ 255
+ 255
+ 220
+
+
+
+
+
+
+ 0
+ 0
+ 0
+
+
+
+
+
+
+
+ true
+
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
-
+
+
+
+ 55
+ 35
+
+
+
+
+ 55
+ 35
+
+
+
+ Qt::NoFocus
+
+
+ Add friends
+
+
+
+
+
+
+ :/img/add.png:/img/add.png
+
+
+ true
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+ QSizePolicy::Maximum
+
+
+
+ 500
+ 20
+
+
+
+
+ -
+
+
+
+ 55
+ 35
+
+
+
+ Qt::NoFocus
+
+
+ Create a group chat
+
+
+
+
+
+
+ :/img/group.png:/img/group.png
+
+
+ true
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+ QSizePolicy::Maximum
+
+
+
+ 500
+ 20
+
+
+
+
+ -
+
+
+
+ 55
+ 35
+
+
+
+
+ 55
+ 35
+
+
+
+ Qt::NoFocus
+
+
+ View completed file transfers
+
+
+
+
+
+
+ :/img/transfer.png:/img/transfer.png
+
+
+ true
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+ QSizePolicy::Maximum
+
+
+
+ 500
+ 20
+
+
+
+
+ -
+
+
+
+ 55
+ 35
+
+
+
+
+ 55
+ 35
+
+
+
+ Qt::NoFocus
+
+
+ Change your settings
+
+
+
+
+
+
+ :/img/settings.png:/img/settings.png
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+ 1
+ 0
+
+
+
+
+ 375
+ 0
+
+
+
+
+
+
+
+
+ 0
+ 0
+ 0
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 127
+ 127
+ 127
+
+
+
+
+
+
+ 170
+ 170
+ 170
+
+
+
+
+
+
+ 0
+ 0
+ 0
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 0
+ 0
+ 0
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 0
+ 0
+ 0
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 255
+ 255
+ 220
+
+
+
+
+
+
+ 0
+ 0
+ 0
+
+
+
+
+
+
+
+
+ 0
+ 0
+ 0
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 127
+ 127
+ 127
+
+
+
+
+
+
+ 170
+ 170
+ 170
+
+
+
+
+
+
+ 0
+ 0
+ 0
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 0
+ 0
+ 0
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 0
+ 0
+ 0
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 255
+ 255
+ 220
+
+
+
+
+
+
+ 0
+ 0
+ 0
+
+
+
+
+
+
+
+
+ 127
+ 127
+ 127
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 127
+ 127
+ 127
+
+
+
+
+
+
+ 170
+ 170
+ 170
+
+
+
+
+
+
+ 127
+ 127
+ 127
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 127
+ 127
+ 127
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 0
+ 0
+ 0
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 255
+ 255
+ 220
+
+
+
+
+
+
+ 0
+ 0
+ 0
+
+
+
+
+
+
+
+ true
+
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 0
+ 60
+
+
+
+
+ 16777215
+ 60
+
+
+
+ true
+
+
+
+ -
+
+
+
+ 0
+ 1
+
+
+
+
+ 16777215
+ 1
+
+
+
+
+
+
+
+
+ 193
+ 193
+ 193
+
+
+
+
+
+
+
+
+ 193
+ 193
+ 193
+
+
+
+
+
+
+
+
+ 127
+ 127
+ 127
+
+
+
+
+
+
+
+ QFrame::HLine
+
+
+ QFrame::Plain
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 375
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Close
+
+
+ Ctrl+Q
+
+
+
+
+
+ EditableLabelWidget
+ QLabel
+ widget/tool/editablelabelwidget.h
+
+
+ AdjustingScrollArea
+ QScrollArea
+ widget/adjustingscrollarea.h
+ 1
+
+
+
+
+
+
+
diff --git a/qtox.pro b/qtox.pro
index 9f13b9176..1ebaad38f 100644
--- a/qtox.pro
+++ b/qtox.pro
@@ -25,7 +25,8 @@ greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = qtox
TEMPLATE = app
-FORMS += widget.ui
+FORMS += \
+ mainwindow.ui
CONFIG += c++11
TRANSLATIONS = translations/de.ts \
@@ -86,7 +87,8 @@ HEADERS += widget/form/addfriendform.h \
widget/tool/clickablelabel.h \
smileypack.h \
widget/emoticonswidget.h \
- style.h
+ style.h \
+ widget/adjustingscrollarea.h
SOURCES += \
widget/form/addfriendform.cpp \
@@ -121,4 +123,5 @@ SOURCES += \
widget/tool/clickablelabel.cpp \
smileypack.cpp \
widget/emoticonswidget.cpp \
- style.cpp
+ style.cpp \
+ widget/adjustingscrollarea.cpp
diff --git a/settings.cpp b/settings.cpp
index 83c85e63d..19e9e1f93 100644
--- a/settings.cpp
+++ b/settings.cpp
@@ -104,6 +104,8 @@ void Settings::load()
minimizeOnClose = s.value("minimizeOnClose", false).toBool();
useNativeStyle = s.value("nativeStyle", false).toBool();
useNativeDecoration = s.value("nativeDecoration", true).toBool();
+ windowGeometry = s.value("windowGeometry", QByteArray()).toByteArray();
+ windowState = s.value("windowState", QByteArray()).toByteArray();
s.endGroup();
s.beginGroup("Privacy");
@@ -162,6 +164,8 @@ void Settings::save(QString path)
s.setValue("minimizeOnClose", minimizeOnClose);
s.setValue("nativeStyle", useNativeStyle);
s.setValue("nativeDecoration", useNativeDecoration);
+ s.setValue("windowGeometry", windowGeometry);
+ s.setValue("windowState", windowState);
s.endGroup();
s.beginGroup("Privacy");
@@ -359,6 +363,26 @@ void Settings::setUseNativeDecoration(bool value)
useNativeDecoration = value;
}
+QByteArray Settings::getWindowGeometry() const
+{
+ return windowGeometry;
+}
+
+void Settings::setWindowGeometry(const QByteArray &value)
+{
+ windowGeometry = value;
+}
+
+QByteArray Settings::getWindowState() const
+{
+ return windowState;
+}
+
+void Settings::setWindowState(const QByteArray &value)
+{
+ windowState = value;
+}
+
bool Settings::isMinimizeOnCloseEnabled() const
{
return minimizeOnClose;
diff --git a/settings.h b/settings.h
index eafd2aa58..a514350d5 100644
--- a/settings.h
+++ b/settings.h
@@ -118,6 +118,12 @@ public:
bool getUseNativeDecoration() const;
void setUseNativeDecoration(bool value);
+ QByteArray getWindowGeometry() const;
+ void setWindowGeometry(const QByteArray &value);
+
+ QByteArray getWindowState() const;
+ void setWindowState(const QByteArray &value);
+
private:
Settings();
Settings(Settings &settings) = delete;
@@ -155,6 +161,8 @@ private:
bool minimizeOnClose;
bool useNativeStyle;
bool useNativeDecoration;
+ QByteArray windowGeometry;
+ QByteArray windowState;
// ChatView
int firstColumnHandlePos;
diff --git a/style.cpp b/style.cpp
index 3a8cb1142..609dcc277 100644
--- a/style.cpp
+++ b/style.cpp
@@ -1,3 +1,19 @@
+/*
+ Copyright (C) 2014 by Project Tox
+
+ This file is part of qTox, a Qt-based graphical interface for Tox.
+
+ This program is libre software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+ See the COPYING file for more details.
+*/
+
#include "style.h"
#include "settings.h"
diff --git a/style.h b/style.h
index 37ec89828..77a09ce25 100644
--- a/style.h
+++ b/style.h
@@ -1,3 +1,19 @@
+/*
+ Copyright (C) 2014 by Project Tox
+
+ This file is part of qTox, a Qt-based graphical interface for Tox.
+
+ This program is libre software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+ See the COPYING file for more details.
+*/
+
#ifndef STYLE_H
#define STYLE_H
diff --git a/widget.ui b/widget.ui
deleted file mode 100644
index 3fd6e03bd..000000000
--- a/widget.ui
+++ /dev/null
@@ -1,3341 +0,0 @@
-
-
- Widget
-
-
-
- 0
- 0
- 640
- 420
-
-
-
-
- 640
- 420
-
-
-
-
- 16777215
- 16777215
-
-
-
- Tox
-
-
-
- :/img/icon.png:/img/icon.png
-
-
-
- 2
-
-
- 1
-
-
- 2
-
-
- 2
-
-
- 0
-
- -
-
-
-
- 0
- 0
-
-
-
-
- 0
- 23
-
-
-
-
- 16777215
- 23
-
-
-
-
- 4
-
-
- 5
-
-
- 0
-
-
- 1
-
-
- 0
-
-
-
-
-
-
- 16
- 16
-
-
-
-
- 16
- 16
-
-
-
-
- 16
- 16
-
-
-
- QToolButton::InstantPopup
-
-
-
- -
-
-
- Qt::Horizontal
-
-
- QSizePolicy::Fixed
-
-
-
- 15
- 1
-
-
-
-
- -
-
-
-
- 100
- 22
-
-
-
-
- 16777215
- 22
-
-
-
-
- -
-
-
- Qt::Horizontal
-
-
- QSizePolicy::Minimum
-
-
-
- 134
- 20
-
-
-
-
- -
-
-
-
- 22
- 22
-
-
-
-
- 22
- 22
-
-
-
-
- 22
- 22
-
-
-
- true
-
-
-
- -
-
-
-
- 22
- 22
-
-
-
-
- 22
- 22
-
-
-
-
- 22
- 22
-
-
-
- true
-
-
-
- -
-
-
-
- 22
- 22
-
-
-
-
- 22
- 22
-
-
-
-
- 22
- 22
-
-
-
- true
-
-
-
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
-
- true
-
-
- false
-
-
- QSplitter{
- color: rgb(255, 255, 255);
- background-color: rgb(255, 255, 255);
- alternate-background-color: rgb(255, 255, 255);
- border-color: rgb(255, 255, 255);
- gridline-color: rgb(255, 255, 255);
- selection-color: rgb(255, 255, 255);
- selection-background-color: rgb(255, 255, 255);
-}
-QSplitter:handle{
- color: rgb(255, 255, 255);
- background-color: rgb(255, 255, 255);
-}
-
-
- Qt::Horizontal
-
-
- false
-
-
-
-
- 0
- 0
-
-
-
-
- 225
- 0
-
-
-
-
- 1920
- 16777215
-
-
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 28
- 28
- 28
-
-
-
-
-
-
- 42
- 42
- 42
-
-
-
-
-
-
- 35
- 35
- 35
-
-
-
-
-
-
- 14
- 14
- 14
-
-
-
-
-
-
- 18
- 18
- 18
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 0
- 0
- 0
-
-
-
-
-
-
- 28
- 28
- 28
-
-
-
-
-
-
- 0
- 0
- 0
-
-
-
-
-
-
- 14
- 14
- 14
-
-
-
-
-
-
- 28
- 28
- 28
-
-
-
-
-
-
- 255
- 255
- 220
-
-
-
-
-
-
- 0
- 0
- 0
-
-
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 28
- 28
- 28
-
-
-
-
-
-
- 42
- 42
- 42
-
-
-
-
-
-
- 35
- 35
- 35
-
-
-
-
-
-
- 14
- 14
- 14
-
-
-
-
-
-
- 18
- 18
- 18
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 0
- 0
- 0
-
-
-
-
-
-
- 28
- 28
- 28
-
-
-
-
-
-
- 0
- 0
- 0
-
-
-
-
-
-
- 14
- 14
- 14
-
-
-
-
-
-
- 28
- 28
- 28
-
-
-
-
-
-
- 255
- 255
- 220
-
-
-
-
-
-
- 0
- 0
- 0
-
-
-
-
-
-
-
-
- 14
- 14
- 14
-
-
-
-
-
-
- 28
- 28
- 28
-
-
-
-
-
-
- 42
- 42
- 42
-
-
-
-
-
-
- 35
- 35
- 35
-
-
-
-
-
-
- 14
- 14
- 14
-
-
-
-
-
-
- 18
- 18
- 18
-
-
-
-
-
-
- 14
- 14
- 14
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 14
- 14
- 14
-
-
-
-
-
-
- 28
- 28
- 28
-
-
-
-
-
-
- 28
- 28
- 28
-
-
-
-
-
-
- 0
- 0
- 0
-
-
-
-
-
-
- 28
- 28
- 28
-
-
-
-
-
-
- 28
- 28
- 28
-
-
-
-
-
-
- 255
- 255
- 220
-
-
-
-
-
-
- 0
- 0
- 0
-
-
-
-
-
-
-
- true
-
-
-
- 0
-
-
- 0
-
-
- 0
-
-
- 0
-
-
- 0
-
-
-
-
-
- true
-
-
-
- 0
- 0
-
-
-
-
- 225
- 60
-
-
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 28
- 28
- 28
-
-
-
-
-
-
- 42
- 42
- 42
-
-
-
-
-
-
- 35
- 35
- 35
-
-
-
-
-
-
- 14
- 14
- 14
-
-
-
-
-
-
- 18
- 18
- 18
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 0
- 0
- 0
-
-
-
-
-
-
- 28
- 28
- 28
-
-
-
-
-
-
- 0
- 0
- 0
-
-
-
-
-
-
- 14
- 14
- 14
-
-
-
-
-
-
- 255
- 255
- 220
-
-
-
-
-
-
- 0
- 0
- 0
-
-
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 28
- 28
- 28
-
-
-
-
-
-
- 42
- 42
- 42
-
-
-
-
-
-
- 35
- 35
- 35
-
-
-
-
-
-
- 14
- 14
- 14
-
-
-
-
-
-
- 18
- 18
- 18
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 0
- 0
- 0
-
-
-
-
-
-
- 28
- 28
- 28
-
-
-
-
-
-
- 0
- 0
- 0
-
-
-
-
-
-
- 14
- 14
- 14
-
-
-
-
-
-
- 255
- 255
- 220
-
-
-
-
-
-
- 0
- 0
- 0
-
-
-
-
-
-
-
-
- 14
- 14
- 14
-
-
-
-
-
-
- 28
- 28
- 28
-
-
-
-
-
-
- 42
- 42
- 42
-
-
-
-
-
-
- 35
- 35
- 35
-
-
-
-
-
-
- 14
- 14
- 14
-
-
-
-
-
-
- 18
- 18
- 18
-
-
-
-
-
-
- 14
- 14
- 14
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 14
- 14
- 14
-
-
-
-
-
-
- 28
- 28
- 28
-
-
-
-
-
-
- 28
- 28
- 28
-
-
-
-
-
-
- 0
- 0
- 0
-
-
-
-
-
-
- 28
- 28
- 28
-
-
-
-
-
-
- 255
- 255
- 220
-
-
-
-
-
-
- 0
- 0
- 0
-
-
-
-
-
-
-
- true
-
-
-
-
-
-
- 0
-
-
-
-
-
-
- 40
- 40
-
-
-
-
- 40
- 40
-
-
-
-
-
-
- :/img/contact.png
-
-
- true
-
-
-
- -
-
-
- 0
-
-
-
-
-
- true
-
-
-
- 1
- 0
-
-
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 240
- 240
- 240
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
-
-
- 11
- 75
- true
-
-
-
- Your name
-
-
-
- -
-
-
-
- 1
- 0
-
-
-
-
-
-
-
-
- 193
- 193
- 193
-
-
-
-
-
-
- 193
- 193
- 193
-
-
-
-
-
-
-
-
- 193
- 193
- 193
-
-
-
-
-
-
- 193
- 193
- 193
-
-
-
-
-
-
-
-
- 14
- 14
- 14
-
-
-
-
-
-
- 14
- 14
- 14
-
-
-
-
-
-
-
-
- 8
-
-
-
- Your status
-
-
-
-
-
- -
-
-
- Qt::Horizontal
-
-
- QSizePolicy::Fixed
-
-
-
- 10
- 20
-
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
-
- 20
- 40
-
-
-
- Qt::NoFocus
-
-
-
-
-
-
- 10
- 10
-
-
-
- false
-
-
- false
-
-
- false
-
-
- true
-
-
-
-
-
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
-
- 225
- 0
-
-
-
- Qt::RightToLeft
-
-
- true
-
-
- QFrame::NoFrame
-
-
- Qt::ScrollBarAlwaysOff
-
-
- true
-
-
-
-
- 0
- 0
- 255
- 299
-
-
-
-
-
- -
-
-
- true
-
-
-
- 0
- 0
-
-
-
-
- 225
- 35
-
-
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 28
- 28
- 28
-
-
-
-
-
-
- 42
- 42
- 42
-
-
-
-
-
-
- 35
- 35
- 35
-
-
-
-
-
-
- 14
- 14
- 14
-
-
-
-
-
-
- 18
- 18
- 18
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 0
- 0
- 0
-
-
-
-
-
-
- 28
- 28
- 28
-
-
-
-
-
-
- 0
- 0
- 0
-
-
-
-
-
-
- 14
- 14
- 14
-
-
-
-
-
-
- 255
- 255
- 220
-
-
-
-
-
-
- 0
- 0
- 0
-
-
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 28
- 28
- 28
-
-
-
-
-
-
- 42
- 42
- 42
-
-
-
-
-
-
- 35
- 35
- 35
-
-
-
-
-
-
- 14
- 14
- 14
-
-
-
-
-
-
- 18
- 18
- 18
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 0
- 0
- 0
-
-
-
-
-
-
- 28
- 28
- 28
-
-
-
-
-
-
- 0
- 0
- 0
-
-
-
-
-
-
- 14
- 14
- 14
-
-
-
-
-
-
- 255
- 255
- 220
-
-
-
-
-
-
- 0
- 0
- 0
-
-
-
-
-
-
-
-
- 14
- 14
- 14
-
-
-
-
-
-
- 28
- 28
- 28
-
-
-
-
-
-
- 42
- 42
- 42
-
-
-
-
-
-
- 35
- 35
- 35
-
-
-
-
-
-
- 14
- 14
- 14
-
-
-
-
-
-
- 18
- 18
- 18
-
-
-
-
-
-
- 14
- 14
- 14
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 14
- 14
- 14
-
-
-
-
-
-
- 28
- 28
- 28
-
-
-
-
-
-
- 28
- 28
- 28
-
-
-
-
-
-
- 0
- 0
- 0
-
-
-
-
-
-
- 28
- 28
- 28
-
-
-
-
-
-
- 255
- 255
- 220
-
-
-
-
-
-
- 0
- 0
- 0
-
-
-
-
-
-
-
- true
-
-
-
- 0
-
-
- 0
-
-
- 0
-
-
- 0
-
-
- 0
-
-
-
-
-
-
- 55
- 35
-
-
-
-
- 55
- 35
-
-
-
- Qt::NoFocus
-
-
- Add friends
-
-
-
-
-
-
- :/img/add.png:/img/add.png
-
-
- true
-
-
-
- -
-
-
- Qt::Horizontal
-
-
- QSizePolicy::Maximum
-
-
-
- 500
- 20
-
-
-
-
- -
-
-
-
- 55
- 35
-
-
-
- Qt::NoFocus
-
-
- Create a group chat
-
-
-
-
-
-
- :/img/group.png:/img/group.png
-
-
- true
-
-
-
- -
-
-
- Qt::Horizontal
-
-
- QSizePolicy::Maximum
-
-
-
- 500
- 20
-
-
-
-
- -
-
-
-
- 55
- 35
-
-
-
-
- 55
- 35
-
-
-
- Qt::NoFocus
-
-
- View completed file transfers
-
-
-
-
-
-
- :/img/transfer.png:/img/transfer.png
-
-
- true
-
-
-
- -
-
-
- Qt::Horizontal
-
-
- QSizePolicy::Maximum
-
-
-
- 500
- 20
-
-
-
-
- -
-
-
-
- 55
- 35
-
-
-
-
- 55
- 35
-
-
-
- Qt::NoFocus
-
-
- Change your settings
-
-
-
-
-
-
- :/img/settings.png:/img/settings.png
-
-
- true
-
-
-
-
-
-
-
-
-
-
-
- 1
- 0
-
-
-
-
- 375
- 0
-
-
-
-
-
-
-
-
- 0
- 0
- 0
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 127
- 127
- 127
-
-
-
-
-
-
- 170
- 170
- 170
-
-
-
-
-
-
- 0
- 0
- 0
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 0
- 0
- 0
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 0
- 0
- 0
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 255
- 255
- 220
-
-
-
-
-
-
- 0
- 0
- 0
-
-
-
-
-
-
-
-
- 0
- 0
- 0
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 127
- 127
- 127
-
-
-
-
-
-
- 170
- 170
- 170
-
-
-
-
-
-
- 0
- 0
- 0
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 0
- 0
- 0
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 0
- 0
- 0
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 255
- 255
- 220
-
-
-
-
-
-
- 0
- 0
- 0
-
-
-
-
-
-
-
-
- 127
- 127
- 127
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 127
- 127
- 127
-
-
-
-
-
-
- 170
- 170
- 170
-
-
-
-
-
-
- 127
- 127
- 127
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 127
- 127
- 127
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 0
- 0
- 0
-
-
-
-
-
-
- 255
- 255
- 255
-
-
-
-
-
-
- 255
- 255
- 220
-
-
-
-
-
-
- 0
- 0
- 0
-
-
-
-
-
-
-
- true
-
-
-
- 0
-
-
- 0
-
-
- 0
-
-
- 0
-
-
- 0
-
- -
-
-
-
- 0
- 0
-
-
-
-
- 0
- 60
-
-
-
-
- 16777215
- 60
-
-
-
- true
-
-
-
- -
-
-
-
- 0
- 1
-
-
-
-
- 16777215
- 1
-
-
-
-
-
-
-
-
- 193
- 193
- 193
-
-
-
-
-
-
-
-
- 193
- 193
- 193
-
-
-
-
-
-
-
-
- 127
- 127
- 127
-
-
-
-
-
-
-
- QFrame::HLine
-
-
- QFrame::Plain
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
-
- 375
- 0
-
-
-
-
-
-
-
-
-
-
-
- Close
-
-
- Ctrl+Q
-
-
-
-
-
-
- EditableLabelWidget
- QLabel
- widget/tool/editablelabelwidget.h
-
-
-
-
-
-
-
- actionClose
- triggered()
- Widget
- close()
-
-
- -1
- -1
-
-
- 69
- 61
-
-
-
-
-
diff --git a/widget/adjustingscrollarea.cpp b/widget/adjustingscrollarea.cpp
new file mode 100644
index 000000000..02e5b8746
--- /dev/null
+++ b/widget/adjustingscrollarea.cpp
@@ -0,0 +1,35 @@
+/*
+ Copyright (C) 2014 by Project Tox
+
+ This file is part of qTox, a Qt-based graphical interface for Tox.
+
+ This program is libre software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+ See the COPYING file for more details.
+*/
+
+#include "adjustingscrollarea.h"
+
+#include
+#include
+
+AdjustingScrollArea::AdjustingScrollArea(QWidget *parent) :
+ QScrollArea(parent)
+{
+}
+
+void AdjustingScrollArea::resizeEvent(QResizeEvent *ev)
+{
+ if (widget())
+ {
+ widget()->setMinimumWidth(width());
+ }
+
+ QScrollArea::resizeEvent(ev);
+}
diff --git a/widget/adjustingscrollarea.h b/widget/adjustingscrollarea.h
new file mode 100644
index 000000000..de6a85ac3
--- /dev/null
+++ b/widget/adjustingscrollarea.h
@@ -0,0 +1,35 @@
+/*
+ Copyright (C) 2014 by Project Tox
+
+ This file is part of qTox, a Qt-based graphical interface for Tox.
+
+ This program is libre software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+ See the COPYING file for more details.
+*/
+
+#ifndef ADJUSTINGSCROLLAREA_H
+#define ADJUSTINGSCROLLAREA_H
+
+#include
+
+class AdjustingScrollArea : public QScrollArea
+{
+ Q_OBJECT
+public:
+ explicit AdjustingScrollArea(QWidget *parent = 0);
+
+ virtual void resizeEvent(QResizeEvent *ev);
+signals:
+
+public slots:
+
+};
+
+#endif // ADJUSTINGSCROLLAREA_H
diff --git a/widget/form/addfriendform.cpp b/widget/form/addfriendform.cpp
index d83e9b5b3..9d09e0682 100644
--- a/widget/form/addfriendform.cpp
+++ b/widget/form/addfriendform.cpp
@@ -57,7 +57,7 @@ AddFriendForm::~AddFriendForm()
main->deleteLater();
}
-void AddFriendForm::show(Ui::Widget &ui)
+void AddFriendForm::show(Ui::MainWindow &ui)
{
ui.mainContent->layout()->addWidget(main);
ui.mainHead->layout()->addWidget(head);
diff --git a/widget/form/addfriendform.h b/widget/form/addfriendform.h
index 7f2263827..0edcf2214 100644
--- a/widget/form/addfriendform.h
+++ b/widget/form/addfriendform.h
@@ -17,7 +17,7 @@
#ifndef ADDFRIENDFORM_H
#define ADDFRIENDFORM_H
-#include "ui_widget.h"
+#include "ui_mainwindow.h"
#include
#include
@@ -33,7 +33,7 @@ public:
AddFriendForm();
~AddFriendForm();
- void show(Ui::Widget& ui);
+ void show(Ui::MainWindow &ui);
bool isToxId(const QString& value) const;
void showWarning(const QString& message) const;
QString getMessage() const;
diff --git a/widget/form/chatform.cpp b/widget/form/chatform.cpp
index 62ad56318..f5c1487a8 100644
--- a/widget/form/chatform.cpp
+++ b/widget/form/chatform.cpp
@@ -137,7 +137,7 @@ ChatForm::~ChatForm()
delete netcam;
}
-void ChatForm::show(Ui::Widget &ui)
+void ChatForm::show(Ui::MainWindow &ui)
{
ui.mainContent->layout()->addWidget(main);
ui.mainHead->layout()->addWidget(head);
diff --git a/widget/form/chatform.h b/widget/form/chatform.h
index 064e05b29..3354629d6 100644
--- a/widget/form/chatform.h
+++ b/widget/form/chatform.h
@@ -28,7 +28,7 @@
#include
#include "widget/tool/chattextedit.h"
-#include "ui_widget.h"
+#include "ui_mainwindow.h"
#include "core.h"
#include "widget/netcamview.h"
@@ -43,7 +43,7 @@ class ChatForm : public QObject
public:
ChatForm(Friend* chatFriend);
~ChatForm();
- void show(Ui::Widget& ui);
+ void show(Ui::MainWindow &ui);
void setName(QString newName);
void setStatusMessage(QString newMessage);
void addFriendMessage(QString message);
diff --git a/widget/form/filesform.cpp b/widget/form/filesform.cpp
index 14ffe5fe0..6d69c1f5a 100644
--- a/widget/form/filesform.cpp
+++ b/widget/form/filesform.cpp
@@ -50,7 +50,7 @@ FilesForm::~FilesForm()
// I'm not too bummed about removing it
}
-void FilesForm::show(Ui::Widget& ui)
+void FilesForm::show(Ui::MainWindow& ui)
{
ui.mainContent->layout()->addWidget(&main);
ui.mainHead->layout()->addWidget(head);
diff --git a/widget/form/filesform.h b/widget/form/filesform.h
index f8fb51105..0f1a2b1d8 100644
--- a/widget/form/filesform.h
+++ b/widget/form/filesform.h
@@ -17,7 +17,7 @@
#ifndef FILESFORM_H
#define FILESFORM_H
-#include "ui_widget.h"
+#include "ui_mainwindow.h"
#include
#include
@@ -37,7 +37,7 @@ public:
FilesForm();
~FilesForm();
- void show(Ui::Widget& ui);
+ void show(Ui::MainWindow &ui);
public slots:
void onFileDownloadComplete(const QString& path);
diff --git a/widget/form/groupchatform.cpp b/widget/form/groupchatform.cpp
index f3f12afcf..919c457d7 100644
--- a/widget/form/groupchatform.cpp
+++ b/widget/form/groupchatform.cpp
@@ -142,7 +142,7 @@ GroupChatForm::~GroupChatForm()
delete main;
}
-void GroupChatForm::show(Ui::Widget &ui)
+void GroupChatForm::show(Ui::MainWindow &ui)
{
ui.mainContent->layout()->addWidget(main);
ui.mainHead->layout()->addWidget(head);
diff --git a/widget/form/groupchatform.h b/widget/form/groupchatform.h
index b4ac9a5ce..af008476a 100644
--- a/widget/form/groupchatform.h
+++ b/widget/form/groupchatform.h
@@ -27,7 +27,7 @@
#include
#include "widget/tool/chattextedit.h"
-#include "ui_widget.h"
+#include "ui_mainwindow.h"
// Spacing in px inserted when the author of the last message changes
#define AUTHOR_CHANGE_SPACING 5
@@ -40,7 +40,7 @@ class GroupChatForm : public QObject
public:
GroupChatForm(Group* chatGroup);
~GroupChatForm();
- void show(Ui::Widget& ui);
+ void show(Ui::MainWindow &ui);
void setName(QString newName);
void addGroupMessage(QString message, int peerId);
void addMessage(QString author, QString message, QString date=QTime::currentTime().toString("hh:mm"));
diff --git a/widget/form/settingsform.cpp b/widget/form/settingsform.cpp
index 822cae675..193fac4a1 100644
--- a/widget/form/settingsform.cpp
+++ b/widget/form/settingsform.cpp
@@ -93,7 +93,7 @@ void SettingsForm::setFriendAddress(const QString& friendAddress)
id.setText(friendAddress);
}
-void SettingsForm::show(Ui::Widget &ui)
+void SettingsForm::show(Ui::MainWindow &ui)
{
name.setText(ui.nameLabel->text());
statusText.setText(ui.statusLabel->text());
diff --git a/widget/form/settingsform.h b/widget/form/settingsform.h
index db5a395cf..0c8f59ee4 100644
--- a/widget/form/settingsform.h
+++ b/widget/form/settingsform.h
@@ -28,7 +28,7 @@
#include
#include
#include "widget/tool/clickablelabel.h"
-#include "ui_widget.h"
+#include "ui_mainwindow.h"
#include "widget/selfcamview.h"
class SettingsForm : public QObject
@@ -38,7 +38,7 @@ public:
SettingsForm();
~SettingsForm();
- void show(Ui::Widget& ui);
+ void show(Ui::MainWindow &ui);
public slots:
void setFriendAddress(const QString& friendAddress);
diff --git a/widget/friendwidget.cpp b/widget/friendwidget.cpp
index 845bf816c..a430288a0 100644
--- a/widget/friendwidget.cpp
+++ b/widget/friendwidget.cpp
@@ -27,7 +27,6 @@ FriendWidget::FriendWidget(int FriendId, QString id)
{
this->setMouseTracking(true);
this->setAutoFillBackground(true);
- this->setFixedWidth(225);
this->setFixedHeight(55);
this->setLayout(&layout);
layout.setSpacing(0);
@@ -70,11 +69,6 @@ FriendWidget::FriendWidget(int FriendId, QString id)
isActiveWidget = 0;
}
-void FriendWidget::setNewFixedWidth(int newWidth)
-{
- this->setFixedWidth(newWidth);
-}
-
void FriendWidget::mouseReleaseEvent (QMouseEvent*)
{
emit friendWidgetClicked(this);
diff --git a/widget/friendwidget.h b/widget/friendwidget.h
index 091f78c69..6afcdc1aa 100644
--- a/widget/friendwidget.h
+++ b/widget/friendwidget.h
@@ -34,7 +34,6 @@ public:
void leaveEvent(QEvent* event);
void setAsActiveChatroom();
void setAsInactiveChatroom();
- void setNewFixedWidth(int newWidth);
signals:
void friendWidgetClicked(FriendWidget* widget);
diff --git a/widget/groupwidget.cpp b/widget/groupwidget.cpp
index 6eb995031..7a138e28a 100644
--- a/widget/groupwidget.cpp
+++ b/widget/groupwidget.cpp
@@ -27,7 +27,6 @@ GroupWidget::GroupWidget(int GroupId, QString Name)
this->setMouseTracking(true);
this->setAutoFillBackground(true);
this->setLayout(&layout);
- this->setFixedWidth(225);
this->setFixedHeight(55);
layout.setSpacing(0);
layout.setMargin(0);
@@ -72,11 +71,6 @@ GroupWidget::GroupWidget(int GroupId, QString Name)
isActiveWidget = 0;
}
-void GroupWidget::setNewFixedWidth(int newWidth)
-{
- this->setFixedWidth(newWidth);
-}
-
void GroupWidget::mouseReleaseEvent (QMouseEvent*)
{
emit groupWidgetClicked(this);
diff --git a/widget/groupwidget.h b/widget/groupwidget.h
index fe66a2371..ab2cf8929 100644
--- a/widget/groupwidget.h
+++ b/widget/groupwidget.h
@@ -33,7 +33,8 @@ public:
void contextMenuEvent(QContextMenuEvent * event);
void enterEvent(QEvent* event);
void leaveEvent(QEvent* event);
-
+ void setAsInactiveChatroom();
+ void setAsActiveChatroom();
signals:
void groupWidgetClicked(GroupWidget* widget);
@@ -44,9 +45,6 @@ public:
QLabel avatar, name, nusers, statusPic;
QHBoxLayout layout;
QVBoxLayout textLayout;
- void setAsInactiveChatroom();
- void setAsActiveChatroom();
- void setNewFixedWidth(int newWidth);
private:
QColor lastColor;
diff --git a/widget/widget.cpp b/widget/widget.cpp
index 519d69d94..c7d6eda88 100644
--- a/widget/widget.cpp
+++ b/widget/widget.cpp
@@ -15,7 +15,7 @@
*/
#include "widget.h"
-#include "ui_widget.h"
+#include "ui_mainwindow.h"
#include "settings.h"
#include "friend.h"
#include "friendlist.h"
@@ -41,11 +41,21 @@
Widget *Widget::instance{nullptr};
-Widget::Widget(QWidget *parent) :
- QWidget(parent), ui(new Ui::Widget), activeFriendWidget{nullptr}, activeGroupWidget{nullptr}
+Widget::Widget(QWidget *parent)
+ : QMainWindow(parent),
+ ui(new Ui::MainWindow),
+ activeFriendWidget{nullptr},
+ activeGroupWidget{nullptr}
{
ui->setupUi(this);
+ ui->statusbar->hide();
+ ui->menubar->hide();
+
+ //restore window state
+ restoreGeometry(Settings::getInstance().getWindowGeometry());
+ restoreState(Settings::getInstance().getWindowState());
+
ui->titleBar->hide();
layout()->setContentsMargins(0, 0, 0, 0);
ui->friendList->setObjectName("friendList");
@@ -84,29 +94,17 @@ Widget::Widget(QWidget *parent) :
resizeDiagSupEsq = false;
resizeDiagSupDer = false;
- QSettings settings(Settings::getInstance().getSettingsDirPath() + '/' + "windowSettings.ini", QSettings::IniFormat);
- QRect geo = settings.value("geometry").toRect();
-
- if (geo.height() > 0 and geo.x() < QApplication::desktop()->width() and geo.width() > 0 and geo.y() < QApplication::desktop()->height())
- this->setGeometry(geo);
-
- if (settings.value("maximized").toBool())
- {
- showMaximized();
- ui->pbMax->setObjectName("restoreButton");
- }
-
isWindowMinimized = 0;
ui->mainContent->setLayout(new QVBoxLayout());
ui->mainHead->setLayout(new QVBoxLayout());
ui->mainHead->layout()->setMargin(0);
ui->mainHead->layout()->setSpacing(0);
+
QWidget* friendListWidget = new QWidget();
friendListWidget->setLayout(new QVBoxLayout());
friendListWidget->layout()->setSpacing(0);
friendListWidget->layout()->setMargin(0);
- friendListWidget->setLayoutDirection(Qt::LeftToRight);
ui->friendList->setWidget(friendListWidget);
// delay setting username and message until Core inits
@@ -116,10 +114,7 @@ Widget::Widget(QWidget *parent) :
ui->statusLabel->label->setStyleSheet("QLabel { color : white; font-size: 8pt;}");
ui->friendList->widget()->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
- QFile f1(":/ui/statusButton/statusButton.css");
- f1.open(QFile::ReadOnly | QFile::Text);
- QTextStream statusButtonStylesheetStream(&f1);
- ui->statusButton->setStyleSheet(statusButtonStylesheetStream.readAll());
+ ui->statusButton->setStyleSheet(Style::get(":/ui/statusButton/statusButton.css"));
QMenu *statusButtonMenu = new QMenu(ui->statusButton);
QAction* setStatusOnline = statusButtonMenu->addAction(tr("Online","Button to set your status to 'Online'"));
@@ -147,9 +142,9 @@ Widget::Widget(QWidget *parent) :
ui->friendList->viewport()->installEventFilter(this);
- QList currentSizes = ui->centralWidget->sizes();
- currentSizes[0] = 225;
- ui->centralWidget->setSizes(currentSizes);
+// QList currentSizes = ui->centralWidget->sizes();
+// currentSizes[0] = 225;
+// ui->centralWidget->setSizes(currentSizes);
ui->statusButton->setObjectName("offline");
ui->statusButton->style()->polish(ui->statusButton);
@@ -198,7 +193,6 @@ Widget::Widget(QWidget *parent) :
connect(this, &Widget::friendRequested, core, &Core::requestFriendship);
connect(this, &Widget::friendRequestAccepted, core, &Core::acceptFriendRequest);
- connect(ui->centralWidget, SIGNAL(splitterMoved(int,int)),this, SLOT(splitterMoved(int,int)));
connect(ui->addButton, SIGNAL(clicked()), this, SLOT(onAddClicked()));
connect(ui->groupButton, SIGNAL(clicked()), this, SLOT(onGroupClicked()));
connect(ui->transferButton, SIGNAL(clicked()), this, SLOT(onTransferClicked()));
@@ -236,10 +230,6 @@ Widget::~Widget()
for (Group* g : GroupList::groupList)
delete g;
GroupList::groupList.clear();
- QSettings settings(Settings::getInstance().getSettingsDirPath() + '/' + "windowSettings.ini", QSettings::IniFormat);
- settings.setValue("geometry", geometry());
- settings.setValue("maximized", isMaximized());
- settings.setValue("useNativeTheme", useNativeTheme);
delete ui;
}
@@ -250,27 +240,16 @@ Widget* Widget::getInstance()
return instance;
}
-//Super ugly hack to enable resizable friend widgets
-//There should be a way to set them to resize automagicly, but I can't seem to find it.
-void Widget::splitterMoved(int, int)
-{
- updateFriendListWidth();
-}
-
QThread* Widget::getCoreThread()
{
return coreThread;
}
-void Widget::updateFriendListWidth()
+void Widget::closeEvent(QCloseEvent *event)
{
- int newWidth = ui->friendList->width();
- for (Friend* f : FriendList::friendList)
- if (f->widget != nullptr)
- f->widget->setNewFixedWidth(newWidth);
- for (Group* g : GroupList::groupList)
- if (g->widget != nullptr)
- g->widget->setNewFixedWidth(newWidth);
+ Settings::getInstance().setWindowGeometry(saveGeometry());
+ Settings::getInstance().setWindowState(saveState());
+ QWidget::closeEvent(event);
}
QString Widget::getUsername()
@@ -432,7 +411,6 @@ void Widget::addFriend(int friendId, const QString &userId)
QWidget* widget = ui->friendList->widget();
QLayout* layout = widget->layout();
layout->addWidget(newfriend->widget);
- updateFriendListWidth();
connect(newfriend->widget, SIGNAL(friendWidgetClicked(FriendWidget*)), this, SLOT(onFriendWidgetClicked(FriendWidget*)));
connect(newfriend->widget, SIGNAL(removeFriend(int)), this, SLOT(removeFriend(int)));
connect(newfriend->widget, SIGNAL(copyFriendIdToClipboard(int)), this, SLOT(copyFriendIdToClipboard(int)));
@@ -736,7 +714,7 @@ Group *Widget::createGroup(int groupId)
layout->addWidget(newgroup->widget);
if (!useNativeTheme)
newgroup->widget->statusPic.setPixmap(QPixmap(":img/status/dot_groupchat.png"));
- updateFriendListWidth();
+
connect(newgroup->widget, SIGNAL(groupWidgetClicked(GroupWidget*)), this, SLOT(onGroupWidgetClicked(GroupWidget*)));
connect(newgroup->widget, SIGNAL(removeGroup(int)), this, SLOT(removeGroup(int)));
connect(newgroup->chatForm, SIGNAL(sendMessage(int,QString)), core, SLOT(sendGroupMessage(int,QString)));
@@ -768,12 +746,6 @@ bool Widget::isFriendWidgetCurActiveWidget(Friend* f)
return true;
}
-void Widget::resizeEvent(QResizeEvent *)
-{
- updateFriendListWidth();
-}
-
-
bool Widget::event(QEvent * e)
{
@@ -944,7 +916,6 @@ void Widget::moveWindow(QMouseEvent *e)
void Widget::resizeWindow(QMouseEvent *e)
{
- updateFriendListWidth();
if (!useNativeTheme)
{
if (allowToResize)
diff --git a/widget/widget.h b/widget/widget.h
index 9db9057b5..0980cff69 100644
--- a/widget/widget.h
+++ b/widget/widget.h
@@ -18,7 +18,7 @@
#define WIDGET_H
#include
-#include
+#include
#include
#include
#include
@@ -31,7 +31,7 @@
#define PIXELS_TO_ACT 7
namespace Ui {
-class Widget;
+class MainWindow;
}
class GroupWidget;
@@ -39,7 +39,7 @@ struct FriendWidget;
class Group;
struct Friend;
-class Widget : public QWidget
+class Widget : public QMainWindow
{
Q_OBJECT
@@ -60,7 +60,8 @@ public:
void updateFriendStatusLights(int friendId);
int useNativeTheme;
~Widget();
- void updateFriendListWidth();
+
+ virtual void closeEvent(QCloseEvent *event);
signals:
void friendRequestAccepted(const QString& userId);
@@ -70,9 +71,6 @@ signals:
void usernameChanged(const QString& username);
void statusMessageChanged(const QString& statusMessage);
-protected:
- void resizeEvent(QResizeEvent *);
-
private slots:
void maximizeBtnClicked();
void minimizeBtnClicked();
@@ -108,7 +106,6 @@ private slots:
void removeFriend(int friendId);
void copyFriendIdToClipboard(int friendId);
void removeGroup(int groupId);
- void splitterMoved(int pos, int index);
void setStatusOnline();
void setStatusAway();
void setStatusBusy();
@@ -121,7 +118,7 @@ private:
Group* createGroup(int groupId);
private:
- Ui::Widget *ui;
+ Ui::MainWindow *ui;
QSplitter *centralLayout;
QPoint dragPosition;
TitleMode m_titleMode;