1/* 2 * This file Copyright (C) Mnemosyne LLC 3 * 4 * This program is free software; you can redistribute it and/or modify 5 * it under the terms of the GNU General Public License version 2 6 * as published by the Free Software Foundation. 7 * 8 * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html 9 * 10 * $Id: hig.cc 11092 2010-08-01 20:36:13Z charles $ 11 */ 12 13#include <iostream> 14 15#include <QCheckBox> 16#include <QGridLayout> 17#include <QHBoxLayout> 18#include <QLabel> 19 20#include "hig.h" 21 22 23HIG :: HIG( QWidget * parent ): 24 QWidget( parent ), 25 myRow( 0 ), 26 myHasTall( false ), 27 myGrid( new QGridLayout( this ) ) 28{ 29 myGrid->setContentsMargins( PAD_BIG, PAD_BIG, PAD_BIG, PAD_BIG ); 30 myGrid->setHorizontalSpacing( PAD_BIG ); 31 myGrid->setVerticalSpacing( PAD ); 32 myGrid->setColumnStretch ( 1, 1 ); 33} 34 35HIG :: ~HIG( ) 36{ 37 delete myGrid; 38} 39 40/*** 41**** 42***/ 43 44void 45HIG :: addSectionDivider( ) 46{ 47 QWidget * w = new QWidget( this ); 48 myGrid->addWidget( w, myRow, 0, 1, 2 ); 49 ++myRow; 50} 51 52void 53HIG :: addSectionTitle( const QString& title ) 54{ 55 QLabel * label = new QLabel( this ); 56 label->setText( title ); 57 label->setStyleSheet( "font: bold" ); 58 label->setAlignment( Qt::AlignLeft|Qt::AlignVCenter ); 59 addSectionTitle( label ); 60} 61 62void 63HIG :: addSectionTitle( QWidget * w ) 64{ 65 myGrid->addWidget( w, myRow, 0, 1, 2, Qt::AlignLeft|Qt::AlignVCenter ); 66 ++myRow; 67} 68 69void 70HIG :: addSectionTitle( QLayout * l ) 71{ 72 myGrid->addLayout( l, myRow, 0, 1, 2, Qt::AlignLeft|Qt::AlignVCenter ); 73 ++myRow; 74} 75 76 77QLayout * 78HIG :: addRow( QWidget * w ) 79{ 80 QHBoxLayout * h = new QHBoxLayout( ); 81 h->addSpacing( 18 ); 82 h->addWidget( w ); 83 84 QLabel * l; 85 if( ( l = qobject_cast<QLabel*>(w) ) ) 86 l->setAlignment( Qt::AlignLeft ); 87 88 return h; 89} 90 91void 92HIG :: addWideControl( QLayout * l ) 93{ 94 QHBoxLayout * h = new QHBoxLayout( ); 95 h->addSpacing( 18 ); 96 h->addLayout( l ); 97 myGrid->addLayout( h, myRow, 0, 1, 2, Qt::AlignLeft|Qt::AlignVCenter ); 98 ++myRow; 99} 100 101void 102HIG :: addWideControl( QWidget * w ) 103{ 104 QHBoxLayout * h = new QHBoxLayout( ); 105 h->addSpacing( 18 ); 106 h->addWidget( w ); 107 myGrid->addLayout( h, myRow, 0, 1, 2, Qt::AlignLeft|Qt::AlignVCenter ); 108 ++myRow; 109} 110 111QCheckBox* 112HIG :: addWideCheckBox( const QString& text, bool isChecked ) 113{ 114 QCheckBox * check = new QCheckBox( text, this ); 115 check->setChecked( isChecked ); 116 addWideControl( check ); 117 return check; 118} 119 120void 121HIG :: addLabel( QWidget * w ) 122{ 123 QHBoxLayout * h = new QHBoxLayout( ); 124 h->addSpacing( 18 ); 125 h->addWidget( w ); 126 myGrid->addLayout( h, myRow, 0, 1, 1, Qt::AlignLeft|Qt::AlignVCenter ); 127} 128 129QLabel* 130HIG :: addLabel( const QString& text ) 131{ 132 QLabel * label = new QLabel( text, this ); 133 addLabel( label ); 134 return label; 135} 136 137void 138HIG :: addTallLabel( QWidget * w ) 139{ 140 QHBoxLayout * h = new QHBoxLayout( ); 141 h->addSpacing( 18 ); 142 h->addWidget( w ); 143 myGrid->addLayout( h, myRow, 0, 1, 1, Qt::AlignLeft|Qt::AlignTop ); 144} 145 146QLabel* 147HIG :: addTallLabel( const QString& text ) 148{ 149 QLabel * label = new QLabel( text, this ); 150 addTallLabel( label ); 151 return label; 152} 153 154void 155HIG :: addControl( QWidget * w ) 156{ 157 myGrid->addWidget( w, myRow, 1, 1, 1 ); 158} 159 160void 161HIG :: addControl( QLayout * l ) 162{ 163 myGrid->addLayout( l, myRow, 1, 1, 1 ); 164} 165 166QLabel * 167HIG :: addRow( const QString& text, QWidget * control, QWidget * buddy ) 168{ 169 QLabel * label = addLabel( text ); 170 addControl( control ); 171 label->setBuddy( buddy ? buddy : control ); 172 ++myRow; 173 return label; 174} 175 176QLabel * 177HIG :: addTallRow( const QString& text, QWidget * control, QWidget * buddy ) 178{ 179 QLabel* label = addTallLabel( text ); 180 label->setBuddy( buddy ? buddy : control ); 181 addControl( control ); 182 myHasTall = true; 183 myGrid->setRowStretch ( myRow, 1 ); 184 ++myRow; 185 return label; 186} 187 188QLabel * 189HIG :: addRow( const QString& text, QLayout * control, QWidget * buddy ) 190{ 191 QLabel * label = addLabel( text ); 192 addControl( control ); 193 if( buddy != 0 ) 194 label->setBuddy( buddy ); 195 ++myRow; 196 return label; 197} 198 199void 200HIG :: addRow( QWidget * label, QWidget * control, QWidget * buddy ) 201{ 202 addLabel( label ); 203 if( control ) { 204 addControl( control ); 205 QLabel * l = qobject_cast<QLabel*>( label ); 206 if( l != 0 ) 207 l->setBuddy( buddy ? buddy : control ); 208 } 209 ++myRow; 210} 211 212void 213HIG :: addRow( QWidget * label, QLayout * control, QWidget * buddy ) 214{ 215 addLabel( label ); 216 if( control ) { 217 addControl( control ); 218 QLabel * l = qobject_cast<QLabel*>( label ); 219 if( l != 0 && buddy != 0 ) 220 l->setBuddy( buddy ); 221 } 222 ++myRow; 223} 224 225void 226HIG :: finish( ) 227{ 228 if( !myHasTall ) { 229 QWidget * w = new QWidget( this ); 230 myGrid->addWidget( w, myRow, 0, 1, 2 ); 231 myGrid->setRowStretch( myRow, 100 ); 232 ++myRow; 233 } 234} 235