|
Packit |
1c1d7e |
/******************************************************************************
|
|
Packit |
1c1d7e |
*
|
|
Packit |
1c1d7e |
*
|
|
Packit |
1c1d7e |
*
|
|
Packit |
1c1d7e |
* Copyright (C) 1997-2015 by Dimitri van Heesch.
|
|
Packit |
1c1d7e |
*
|
|
Packit |
1c1d7e |
* Permission to use, copy, modify, and distribute this software and its
|
|
Packit |
1c1d7e |
* documentation under the terms of the GNU General Public License is hereby
|
|
Packit |
1c1d7e |
* granted. No representations are made about the suitability of this software
|
|
Packit |
1c1d7e |
* for any purpose. It is provided "as is" without express or implied warranty.
|
|
Packit |
1c1d7e |
* See the GNU General Public License for more details.
|
|
Packit |
1c1d7e |
*
|
|
Packit |
1c1d7e |
*/
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
#include "inputbool.h"
|
|
Packit |
1c1d7e |
#include "helplabel.h"
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
#include <QCheckBox>
|
|
Packit |
1c1d7e |
#include <QTextStream>
|
|
Packit |
1c1d7e |
#include <QTextCodec>
|
|
Packit |
1c1d7e |
#include <QGridLayout>
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
InputBool::InputBool( QGridLayout *layout, int &row,
|
|
Packit |
1c1d7e |
const QString &id, bool checked,
|
|
Packit |
1c1d7e |
const QString &docs )
|
|
Packit |
1c1d7e |
: m_default(checked), m_docs(docs), m_id(id)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
m_lab = new HelpLabel(id);
|
|
Packit |
1c1d7e |
m_cb = new QCheckBox;
|
|
Packit |
1c1d7e |
layout->addWidget(m_lab,row, 0);
|
|
Packit |
1c1d7e |
layout->addWidget(m_cb,row, 1);
|
|
Packit |
1c1d7e |
m_enabled = true;
|
|
Packit |
1c1d7e |
m_state=!checked; // force update
|
|
Packit |
1c1d7e |
setValue(checked);
|
|
Packit |
1c1d7e |
connect( m_cb, SIGNAL(toggled(bool)), SLOT(setValue(bool)) );
|
|
Packit |
1c1d7e |
connect( m_lab, SIGNAL(enter()), SLOT(help()) );
|
|
Packit |
1c1d7e |
connect( m_lab, SIGNAL(reset()), SLOT(reset()) );
|
|
Packit |
1c1d7e |
row++;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void InputBool::help()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
showHelp(this);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void InputBool::setEnabled(bool b)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
m_enabled = b;
|
|
Packit |
1c1d7e |
m_cb->setEnabled(b);
|
|
Packit |
1c1d7e |
m_lab->setEnabled(b);
|
|
Packit |
1c1d7e |
updateDefault();
|
|
Packit |
1c1d7e |
updateDependencies();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void InputBool::updateDependencies()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
for (int i=0;i
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
m_dependencies[i]->setEnabled(m_enabled && m_state);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void InputBool::setValue( bool s )
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (m_state!=s)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
m_state=s;
|
|
Packit |
1c1d7e |
updateDefault();
|
|
Packit |
1c1d7e |
updateDependencies();
|
|
Packit |
1c1d7e |
m_cb->setChecked( s );
|
|
Packit |
1c1d7e |
m_value = m_state;
|
|
Packit |
1c1d7e |
emit changed();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void InputBool::updateDefault()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (m_state==m_default || !m_lab->isEnabled())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
m_lab->setText(QString::fromLatin1("<qt>")+m_id+QString::fromLatin1("
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
m_lab->setText(QString::fromLatin1("<qt><font color='red'>")+m_id+QString::fromLatin1("</font></qt>"));
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
QVariant &InputBool::value()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
return m_value;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void InputBool::update()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
QString v = m_value.toString().toLower();
|
|
Packit |
1c1d7e |
m_state = (v==QString::fromLatin1("yes") ||
|
|
Packit |
1c1d7e |
v==QString::fromLatin1("true") ||
|
|
Packit |
1c1d7e |
v==QString::fromLatin1("1"));
|
|
Packit |
1c1d7e |
m_cb->setChecked( m_state );
|
|
Packit |
1c1d7e |
updateDefault();
|
|
Packit |
1c1d7e |
updateDependencies();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void InputBool::reset()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
setValue(m_default);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void InputBool::writeValue(QTextStream &t,QTextCodec *codec)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (m_state)
|
|
Packit |
1c1d7e |
t << codec->fromUnicode(QString::fromLatin1("YES"));
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
t << codec->fromUnicode(QString::fromLatin1("NO"));
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|