/
timesigproperties.cpp
86 lines (79 loc) · 3.24 KB
/
timesigproperties.cpp
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
73
74
75
76
77
78
79
80
81
82
83
84
85
//=============================================================================
// MuseScore
// Linux Music Score Editor
// $Id: restproperties.cpp 1840 2009-05-20 11:57:51Z wschweer $
//
// Copyright (C) 2011 Werner Schweer and others
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License version 2.
//
// 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, write to the Free Software
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
//=============================================================================
#include "timesigproperties.h"
#include "libmscore/timesig.h"
//---------------------------------------------------------
// TimeSigProperties
//---------------------------------------------------------
TimeSigProperties::TimeSigProperties(TimeSig* t, QWidget* parent)
: QDialog(parent)
{
setupUi(this);
timesig = t;
zText->setText(timesig->numeratorString());
nText->setText(timesig->denominatorString());
Fraction nominal = timesig->sig() * timesig->stretch();
nominal.reduce();
zNominal->setValue(nominal.numerator());
nNominal->setValue(nominal.denominator());
zActual->setValue(timesig->sig().numerator());
nActual->setValue(timesig->sig().denominator());
switch(timesig->subtype()) {
case TSIG_NORMAL:
textButton->setChecked(true);
break;
case TSIG_FOUR_FOUR:
fourfourButton->setChecked(true);
break;
case TSIG_ALLA_BREVE:
allaBreveButton->setChecked(true);
break;
}
}
//---------------------------------------------------------
// accept
//---------------------------------------------------------
void TimeSigProperties::accept()
{
if (zText->text() != timesig->numeratorString())
timesig->setNumeratorString(zText->text());
if (nText->text() != timesig->denominatorString())
timesig->setDenominatorString(nText->text());
// timesig->setSig(Fraction(zNominal->value(), nNominal->value()));
// timesig->setActualSig(Fraction(zActual->value(), nActual->value()));
if (textButton->isChecked())
timesig->setSubtype(TSIG_NORMAL);
else if (fourfourButton->isChecked()) {
timesig->setSubtype(TSIG_FOUR_FOUR);
qDebug("fourfour\n");
}
else if (allaBreveButton->isChecked()) {
timesig->setSubtype(TSIG_ALLA_BREVE);
qDebug("alla breve\n");
}
// setSig() and setActualSig must be AFTER setSubType()
// as setSubType() also reset sig
Fraction actual(zActual->value(), nActual->value());
Fraction nominal(zActual->value(), nActual->value());
Fraction stretch = nominal / actual;
timesig->setSig(actual);
timesig->setStretch(stretch);
QDialog::accept();
}