Chris@311: /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*-  vi:set ts=8 sts=4 sw=4: */
Chris@311: 
Chris@311: /*
Chris@311:     Sonic Visualiser
Chris@311:     An audio file viewer and annotation editor.
Chris@311:     Centre for Digital Music, Queen Mary, University of London.
Chris@311:     This file copyright 2007 QMUL.
Chris@311:     
Chris@311:     This program is free software; you can redistribute it and/or
Chris@311:     modify it under the terms of the GNU General Public License as
Chris@311:     published by the Free Software Foundation; either version 2 of the
Chris@311:     License, or (at your option) any later version.  See the file
Chris@311:     COPYING included with this distribution for more information.
Chris@311: */
Chris@311: 
Chris@311: #include "LabelCounterInputDialog.h"
Chris@311: 
Chris@311: #include <QVBoxLayout>
Chris@311: #include <QHBoxLayout>
Chris@311: #include <QLabel>
Chris@311: #include <QSpinBox>
Chris@311: #include <QDialogButtonBox>
Chris@311: 
Chris@311: LabelCounterInputDialog::LabelCounterInputDialog(Labeller *labeller,
Chris@311: 						 QWidget *parent) :
Chris@311:     QDialog(parent),
Chris@311:     m_labeller(labeller)
Chris@311: {
Chris@311:     setWindowTitle(tr("Set Counters"));
Chris@311: 
Chris@311:     QGridLayout *layout = new QGridLayout(this);
Chris@311:     
Chris@311:     QLabel *label = new QLabel(tr("Fine counter (beats):"));
Chris@311:     layout->addWidget(label, 1, 0);
Chris@311: 
Chris@311:     label = new QLabel(tr("Coarse counter (bars):"));
Chris@311:     layout->addWidget(label, 0, 0);
Chris@311: 
Chris@311:     QSpinBox *counter = new QSpinBox;
Chris@369:     counter->setMinimum(-10);
Chris@311:     counter->setMaximum(10000);
Chris@311:     counter->setSingleStep(1);
Chris@311:     m_origSecondCounter = m_labeller->getSecondLevelCounterValue();
Chris@311:     counter->setValue(m_origSecondCounter);
Chris@311:     connect(counter, SIGNAL(valueChanged(int)),
Chris@311:             this, SLOT(secondCounterChanged(int)));
Chris@311:     layout->addWidget(counter, 0, 1);
Chris@311: 
Chris@311:     counter = new QSpinBox;
Chris@369:     counter->setMinimum(-10);
Chris@311:     counter->setMaximum(10000);
Chris@311:     counter->setSingleStep(1);
Chris@311:     m_origCounter = m_labeller->getCounterValue();
Chris@311:     counter->setValue(m_origCounter);
Chris@311:     connect(counter, SIGNAL(valueChanged(int)),
Chris@311:             this, SLOT(counterChanged(int)));
Chris@311:     layout->addWidget(counter, 1, 1);
Chris@311:     
Chris@311:     QDialogButtonBox *bb = new QDialogButtonBox(QDialogButtonBox::Ok |
Chris@311:                                                 QDialogButtonBox::Cancel);
Chris@311:     layout->addWidget(bb, 2, 0, 1, 2);
Chris@311:     connect(bb, SIGNAL(accepted()), this, SLOT(accept()));
Chris@311:     connect(bb, SIGNAL(rejected()), this, SLOT(cancelClicked()));
Chris@311: }
Chris@311: 
Chris@311: LabelCounterInputDialog::~LabelCounterInputDialog()
Chris@311: {
Chris@311: }
Chris@311: 
Chris@311: void
Chris@311: LabelCounterInputDialog::counterChanged(int value)
Chris@311: {
Chris@311:     m_labeller->setCounterValue(value);
Chris@311: }
Chris@311: 
Chris@311: void
Chris@311: LabelCounterInputDialog::secondCounterChanged(int value)
Chris@311: {
Chris@311:     m_labeller->setSecondLevelCounterValue(value);
Chris@311: }
Chris@311: 
Chris@311: void
Chris@311: LabelCounterInputDialog::cancelClicked()
Chris@311: {
Chris@311:     m_labeller->setCounterValue(m_origCounter);
Chris@311:     m_labeller->setSecondLevelCounterValue(m_origSecondCounter);
Chris@311:     reject();
Chris@311: }
Chris@311: