transmission/qt/hig.cc

241 lines
4.4 KiB
C++

/*
* This file Copyright (C) 2009-2014 Mnemosyne LLC
*
* It may be used under the GNU Public License v2 or v3 licenses,
* or any future license endorsed by Mnemosyne LLC.
*
* $Id$
*/
#include <iostream>
#include <QCheckBox>
#include <QGridLayout>
#include <QHBoxLayout>
#include <QLabel>
#include "hig.h"
HIG :: HIG (QWidget * parent):
QWidget (parent),
myRow (0),
myHasTall (false),
myGrid (new QGridLayout (this))
{
myGrid->setContentsMargins (PAD_BIG, PAD_BIG, PAD_BIG, PAD_BIG);
myGrid->setHorizontalSpacing (PAD_BIG);
myGrid->setVerticalSpacing (PAD);
myGrid->setColumnStretch (1, 1);
}
HIG :: ~HIG ()
{
delete myGrid;
}
/***
****
***/
void
HIG :: addSectionDivider ()
{
QWidget * w = new QWidget (this);
myGrid->addWidget (w, myRow, 0, 1, 2);
++myRow;
}
void
HIG :: addSectionTitle (const QString& title)
{
QLabel * label = new QLabel (this);
label->setText (title);
label->setStyleSheet ("font: bold");
label->setAlignment (Qt::AlignLeft|Qt::AlignVCenter);
addSectionTitle (label);
}
void
HIG :: addSectionTitle (QWidget * w)
{
myGrid->addWidget (w, myRow, 0, 1, 2, Qt::AlignLeft|Qt::AlignVCenter);
++myRow;
}
void
HIG :: addSectionTitle (QLayout * l)
{
myGrid->addLayout (l, myRow, 0, 1, 2, Qt::AlignLeft|Qt::AlignVCenter);
++myRow;
}
QLayout *
HIG :: addRow (QWidget * w)
{
QHBoxLayout * h = new QHBoxLayout ();
h->addSpacing (18);
h->addWidget (w);
QLabel * l;
if ((l = qobject_cast<QLabel*>(w)))
l->setAlignment (Qt::AlignLeft);
return h;
}
void
HIG :: addWideControl (QLayout * l)
{
QHBoxLayout * h = new QHBoxLayout ();
h->addSpacing (18);
h->addLayout (l);
myGrid->addLayout (h, myRow, 0, 1, 2, Qt::AlignLeft|Qt::AlignVCenter);
++myRow;
}
void
HIG :: addWideControl (QWidget * w)
{
QHBoxLayout * h = new QHBoxLayout ();
h->addSpacing (18);
h->addWidget (w);
myGrid->addLayout (h, myRow, 0, 1, 2, Qt::AlignLeft|Qt::AlignVCenter);
++myRow;
}
QCheckBox*
HIG :: addWideCheckBox (const QString& text, bool isChecked)
{
QCheckBox * check = new QCheckBox (text, this);
check->setChecked (isChecked);
addWideControl (check);
return check;
}
void
HIG :: addLabel (QWidget * w)
{
QHBoxLayout * h = new QHBoxLayout ();
h->addSpacing (18);
h->addWidget (w);
myGrid->addLayout (h, myRow, 0, 1, 1, Qt::AlignLeft|Qt::AlignVCenter);
}
QLabel*
HIG :: addLabel (const QString& text)
{
QLabel * label = new QLabel (text, this);
addLabel (label);
return label;
}
void
HIG :: addTallLabel (QWidget * w)
{
QHBoxLayout * h = new QHBoxLayout ();
h->addSpacing (18);
h->addWidget (w);
myGrid->addLayout (h, myRow, 0, 1, 1, Qt::AlignLeft|Qt::AlignTop);
}
QLabel*
HIG :: addTallLabel (const QString& text)
{
QLabel * label = new QLabel (text, this);
addTallLabel (label);
return label;
}
void
HIG :: addControl (QWidget * w)
{
myGrid->addWidget (w, myRow, 1, 1, 1);
}
void
HIG :: addControl (QLayout * l)
{
myGrid->addLayout (l, myRow, 1, 1, 1);
}
QLabel *
HIG :: addRow (const QString& text, QWidget * control, QWidget * buddy)
{
QLabel * label = addLabel (text);
addControl (control);
label->setBuddy (buddy ? buddy : control);
++myRow;
return label;
}
QLabel *
HIG :: addTallRow (const QString& text, QWidget * control, QWidget * buddy)
{
QLabel* label = addTallLabel (text);
label->setBuddy (buddy ? buddy : control);
addControl (control);
myHasTall = true;
myGrid->setRowStretch (myRow, 1);
++myRow;
return label;
}
QLabel *
HIG :: addRow (const QString& text, QLayout * control, QWidget * buddy)
{
QLabel * label = addLabel (text);
addControl (control);
if (buddy != 0)
label->setBuddy (buddy);
++myRow;
return label;
}
void
HIG :: addRow (QWidget * label, QWidget * control, QWidget * buddy)
{
addLabel (label);
if (control)
{
addControl (control);
QLabel * l = qobject_cast<QLabel*> (label);
if (l != 0)
l->setBuddy (buddy ? buddy : control);
}
++myRow;
}
void
HIG :: addRow (QWidget * label, QLayout * control, QWidget * buddy)
{
addLabel (label);
if (control)
{
addControl (control);
QLabel * l = qobject_cast<QLabel*> (label);
if (l != 0 && buddy != 0)
l->setBuddy (buddy);
}
++myRow;
}
void
HIG :: finish ()
{
if (!myHasTall)
{
QWidget * w = new QWidget (this);
myGrid->addWidget (w, myRow, 0, 1, 2);
myGrid->setRowStretch (myRow, 100);
++myRow;
}
}