From 166e1f40fe88603667f250c2b1633a94ff0cc095 Mon Sep 17 00:00:00 2001
From: Filippo Scognamiglio <flscogna@gmail.com>
Date: Thu, 8 Jan 2015 03:55:19 +0100
Subject: [PATCH] Misc fixes in settings dialog.

---
 app/qml/ApplicationSettings.qml    |  8 +++++++
 app/qml/CheckableSlider.qml        | 19 +++++-----------
 app/qml/Components/SizedLabel.qml  | 35 ++++++++++++++++++++++++++++++
 app/qml/SettingsGeneralTab.qml     |  1 +
 app/qml/SettingsPerformanceTab.qml | 19 ++++++++--------
 app/qml/SettingsScreenTab.qml      |  6 ++---
 app/qml/SettingsTerminalTab.qml    | 12 +++++-----
 app/qml/SimpleSlider.qml           | 14 ++++--------
 app/qml/resources.qrc              |  1 +
 9 files changed, 75 insertions(+), 40 deletions(-)
 create mode 100644 app/qml/Components/SizedLabel.qml

diff --git a/app/qml/ApplicationSettings.qml b/app/qml/ApplicationSettings.qml
index b7a3b67..c3d4583 100644
--- a/app/qml/ApplicationSettings.qml
+++ b/app/qml/ApplicationSettings.qml
@@ -19,6 +19,7 @@
 *******************************************************************************/
 
 import QtQuick 2.2
+import QtQuick.Controls 1.0
 
 import "utils.js" as Utils
 
@@ -455,4 +456,11 @@ QtObject{
         storeCustomProfiles();
         //storage.dropSettings(); //DROPS THE SETTINGS!.. REMEMBER TO DISABLE ONCE ENABLED!!
     }
+
+    // VARS ///////////////////////////////////////////////////////////////////
+
+    property Label _sampleLabel: Label {
+        text: "100%"
+    }
+    property real labelWidth: _sampleLabel.width
 }
diff --git a/app/qml/CheckableSlider.qml b/app/qml/CheckableSlider.qml
index ceb9c4f..086eeb7 100644
--- a/app/qml/CheckableSlider.qml
+++ b/app/qml/CheckableSlider.qml
@@ -22,6 +22,8 @@ import QtQuick 2.2
 import QtQuick.Controls 1.1
 import QtQuick.Layouts 1.1
 
+import "Components"
+
 RowLayout {
     property alias name: check.text
 
@@ -35,7 +37,6 @@ RowLayout {
     id: setting_component
     anchors.left: parent.left
     anchors.right: parent.right
-    spacing: 25
 
     onValueChanged: {
         check.checked = !(value == 0);
@@ -45,7 +46,7 @@ RowLayout {
 
     CheckBox{
         id: check
-        implicitWidth: 150
+        implicitWidth: 160
         onClicked: {
             if(!checked){
                 checked = false;
@@ -66,16 +67,8 @@ RowLayout {
             newValue(value);
         }
     }
-    Text{
-        id: textfield
-        property string unformattedText: Math.round(((value - min_value) / (max_value - min_value)) * 100)
-        text: formatNumber(unformattedText)
-    }
-    function formatNumber(num) {
-        var n = "" + num;
-        while (n.length < 3) {
-            n = " " + n;
-        }
-        return n + "%";
+    SizedLabel {
+        anchors { top: parent.top; bottom: parent.bottom }
+        text: Math.round(((value - min_value) / (max_value - min_value)) * 100) + "%"
     }
 }
diff --git a/app/qml/Components/SizedLabel.qml b/app/qml/Components/SizedLabel.qml
new file mode 100644
index 0000000..a3dbfea
--- /dev/null
+++ b/app/qml/Components/SizedLabel.qml
@@ -0,0 +1,35 @@
+/*******************************************************************************
+* Copyright (c) 2013 "Filippo Scognamiglio"
+* https://github.com/Swordfish90/cool-retro-term
+*
+* This file is part of cool-retro-term.
+*
+* cool-retro-term is free 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
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program.  If not, see <http://www.gnu.org/licenses/>.
+*******************************************************************************/
+
+
+import QtQuick 2.0
+import QtQuick.Controls 1.0
+
+// This component is simply a label with a predifined size.
+// Used to improve alignment.
+
+Item {
+    property alias text: textfield.text
+    width: appSettings.labelWidth
+    Label{
+        id: textfield
+        anchors { right: parent.right; verticalCenter: parent.verticalCenter }
+    }
+}
diff --git a/app/qml/SettingsGeneralTab.qml b/app/qml/SettingsGeneralTab.qml
index 18f72a6..80dfa9a 100644
--- a/app/qml/SettingsGeneralTab.qml
+++ b/app/qml/SettingsGeneralTab.qml
@@ -88,6 +88,7 @@ Tab{
                     Item {
                         // Spacing
                         Layout.fillHeight: true
+                        visible: false
                     }
                     Button{
                         Layout.fillWidth: true
diff --git a/app/qml/SettingsPerformanceTab.qml b/app/qml/SettingsPerformanceTab.qml
index 7d938a8..bf821c0 100644
--- a/app/qml/SettingsPerformanceTab.qml
+++ b/app/qml/SettingsPerformanceTab.qml
@@ -22,6 +22,8 @@ import QtQuick 2.2
 import QtQuick.Controls 1.1
 import QtQuick.Layouts 1.1
 
+import "Components"
+
 Tab{
     ColumnLayout{
         anchors.fill: parent
@@ -47,10 +49,10 @@ Tab{
                     maximumValue: 60
                     minimumValue: 1
                     enabled: appSettings.fps !== 0
-                    value: appSettings.fps !== 0 ? appSettings.fps : 60
+                    value: appSettings.fps !== 0 ? appSettings.fps : 24
                 }
-                Text{text: slider.value}
-                Text{text: qsTr("Texture Quality")}
+                SizedLabel { text: slider.value }
+                Label{text: qsTr("Texture Quality")}
                 Slider{
                     Layout.fillWidth: true
                     id: txtslider
@@ -63,7 +65,7 @@ Tab{
                         enabled = true;
                     }
                 }
-                Text{text: Math.round(txtslider.value * 100) + "%"}
+                SizedLabel{text: Math.round(txtslider.value * 100) + "%"}
             }
         }
         GroupBox{
@@ -74,8 +76,7 @@ Tab{
             GridLayout{
                 id: bloomQualityContainer
                 anchors.fill: parent
-
-                Text{text: qsTr("Bloom Quality")}
+                Label{text: qsTr("Bloom Quality")}
                 Slider{
                     Layout.fillWidth: true
                     id: bloomSlider
@@ -88,7 +89,7 @@ Tab{
                         enabled = true;
                     }
                 }
-                Text{text: Math.round(bloomSlider.value * 100) + "%"}
+                SizedLabel{text: Math.round(bloomSlider.value * 100) + "%"}
             }
         }
         GroupBox{
@@ -100,7 +101,7 @@ Tab{
                 id: blurQualityContainer
                 anchors.fill: parent
 
-                Text{text: qsTr("BurnIn Quality")}
+                Label{text: qsTr("BurnIn Quality")}
                 Slider{
                     Layout.fillWidth: true
                     id: burnInSlider
@@ -113,7 +114,7 @@ Tab{
                         enabled = true;
                     }
                 }
-                Text{text: Math.round(burnInSlider.value * 100) + "%"}
+                SizedLabel{text: Math.round(burnInSlider.value * 100) + "%"}
             }
         }
         GroupBox{
diff --git a/app/qml/SettingsScreenTab.qml b/app/qml/SettingsScreenTab.qml
index 7374624..5777e65 100644
--- a/app/qml/SettingsScreenTab.qml
+++ b/app/qml/SettingsScreenTab.qml
@@ -46,17 +46,17 @@ Tab{
             GridLayout{
                 anchors.fill: parent
                 columns: 2
-                Text{ text: qsTr("Brightness") }
+                Label{ text: qsTr("Brightness") }
                 SimpleSlider{
                     onValueChanged: appSettings.brightness = value
                     value: appSettings.brightness
                 }
-                Text{ text: qsTr("Contrast") }
+                Label{ text: qsTr("Contrast") }
                 SimpleSlider{
                     onValueChanged: appSettings.contrast = value
                     value: appSettings.contrast
                 }
-                Text{ text: qsTr("Opacity") }
+                Label{ text: qsTr("Opacity") }
                 SimpleSlider{
                     onValueChanged: appSettings.windowOpacity = value
                     value: appSettings.windowOpacity
diff --git a/app/qml/SettingsTerminalTab.qml b/app/qml/SettingsTerminalTab.qml
index 439ee8e..ae0e719 100644
--- a/app/qml/SettingsTerminalTab.qml
+++ b/app/qml/SettingsTerminalTab.qml
@@ -22,6 +22,8 @@ import QtQuick 2.2
 import QtQuick.Controls 1.1
 import QtQuick.Layouts 1.1
 
+import "Components"
+
 Tab{
     ColumnLayout{
         anchors.fill: parent
@@ -32,7 +34,7 @@ Tab{
             GridLayout{
                 anchors.fill: parent
                 columns: 2
-                Text{ text: qsTr("Name") }
+                Label{ text: qsTr("Name") }
                 ComboBox{
                     id: fontChanger
                     Layout.fillWidth: true
@@ -54,7 +56,7 @@ Tab{
                     }
                     Component.onCompleted: updateIndex();
                 }
-                Text{ text: qsTr("Scaling") }
+                Label{ text: qsTr("Scaling") }
                 RowLayout{
                     Layout.fillWidth: true
                     Slider{
@@ -74,11 +76,11 @@ Tab{
                             onFontScalingChanged: fontScalingChanger.value = appSettings.fontScaling;
                         }
                     }
-                    Text{
+                    SizedLabel{
                         text: Math.round(fontScalingChanger.value * 100) + "%"
                     }
                 }
-                Text{ text: qsTr("Font Width") }
+                Label{ text: qsTr("Font Width") }
                 RowLayout{
                     Layout.fillWidth: true
                     Slider{
@@ -93,7 +95,7 @@ Tab{
                             maximumValue = 1.5;
                         }
                     }
-                    Text{
+                    SizedLabel{
                         text: Math.round(widthChanger.value * 100) + "%"
                     }
                 }
diff --git a/app/qml/SimpleSlider.qml b/app/qml/SimpleSlider.qml
index 7b741aa..44d3608 100644
--- a/app/qml/SimpleSlider.qml
+++ b/app/qml/SimpleSlider.qml
@@ -22,6 +22,8 @@ import QtQuick 2.2
 import QtQuick.Controls 1.1
 import QtQuick.Layouts 1.1
 
+import "Components"
+
 RowLayout {
     property alias value: slider.value
     property alias stepSize: slider.stepSize
@@ -36,15 +38,7 @@ RowLayout {
         stepSize: parent.stepSize
         Layout.fillWidth: true
     }
-    Text{
-        id: textfield
-        text: formatNumber(Math.round(value * maxMultiplier))
-    }
-    function formatNumber(num) {
-        var n = "" + num;
-        while (n.length < 3) {
-            n = " " + n;
-        }
-        return n + "%";
+    SizedLabel{
+        text: Math.round(value * maxMultiplier) + "%"
     }
 }
diff --git a/app/qml/resources.qrc b/app/qml/resources.qrc
index ac03023..6cb8a7c 100644
--- a/app/qml/resources.qrc
+++ b/app/qml/resources.qrc
@@ -51,5 +51,6 @@
         <file>fonts/modern-inconsolata/Inconsolata.otf</file>
         <file>SettingsScreenTab.qml</file>
         <file>fonts/modern-fixedsys-excelsior/FSEX301-L2.ttf</file>
+        <file>Components/SizedLabel.qml</file>
     </qresource>
 </RCC>