summaryrefslogtreecommitdiffstats
path: root/tools/designer/examples/metric/metric.ui.h
blob: ba66022b628dc87362069321cef617756445c77f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
/****************************************************************************
** ui.h extension file, included from the uic-generated form implementation.
**
** If you wish to add, delete or rename functions respectively slots use
** Qt Designer which will update this file, preserving your code. Create an
** init() function in place of a constructor, and a destroy() function in
** place of a destructor.
*****************************************************************************/

#include <qvalidator.h>

void ConversionForm::init()
{
    numberLineEdit->setValidator( new QDoubleValidator( numberLineEdit ) );
    numberLineEdit->setText( "10" );
    convert();
    numberLineEdit->selectAll();
}

void ConversionForm::convert()
{
    enum MetricUnits {
	Kilometers,
	Meters,
	Centimeters,
	Millimeters
    };
    enum OldUnits {
	Miles,
	Yards,
	Feet,
	Inches
    };

    // Retrieve the input
    double input = numberLineEdit->text().toDouble();
    double scaledInput = input;

    // internally convert the input to millimeters
    switch ( fromComboBox->currentItem() ) {
    case Kilometers:
	scaledInput *= 1000000;
	break;
    case Meters:
	scaledInput *= 1000;
	break;
    case Centimeters:
	scaledInput *= 10;
	break;
    }

    //convert to inches
    double result = scaledInput * 0.0393701;

    switch ( toComboBox->currentItem() ) {
    case Miles:
	result /= 63360;
	break;
    case Yards:
	result /= 36;
	break;
    case Feet:
	result /= 12;
	break;
    }

    // set the result
    int decimals = decimalsSpinBox->value();
    resultLineEdit->setText( QString::number( result, 'f', decimals ) );
    numberLineEdit->setText( QString::number( input, 'f', decimals ) );
}