kaddressbook

stylepage.cpp

00001 /*
00002     This file is part of KAddressBook.
00003     Copyright (c) 2002 Anders Lund <anders.lund@lund.tdcadsl.dk>
00004                        Tobias Koenig <tokoe@kde.org>
00005 
00006     This program is free software; you can redistribute it and/or modify
00007     it under the terms of the GNU General Public License as published by
00008     the Free Software Foundation; either version 2 of the License, or
00009     (at your option) any later version.
00010 
00011     This program is distributed in the hope that it will be useful,
00012     but WITHOUT ANY WARRANTY; without even the implied warranty of
00013     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
00014     GNU General Public License for more details.
00015 
00016     You should have received a copy of the GNU General Public License
00017     along with this program; if not, write to the Free Software
00018     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
00019 
00020     As a special exception, permission is given to link this program
00021     with any edition of Qt, and distribute the resulting executable,
00022     without including the source code for Qt in the source distribution.
00023 */
00024 
00025 #include <qbuttongroup.h>
00026 #include <qlabel.h>
00027 #include <qlayout.h>
00028 #include <qpixmap.h>
00029 #include <qradiobutton.h>
00030 
00031 #include <kcombobox.h>
00032 #include <kdialog.h>
00033 #include <klocale.h>
00034 
00035 #include "stylepage.h"
00036 
00037 StylePage::StylePage( KABC::AddressBook *ab, QWidget* parent,  const char* name )
00038   : QWidget( parent, name ), mAddressBook( ab )
00039 {
00040   initGUI();
00041 
00042   initFieldCombo();
00043 
00044   mSortTypeCombo->insertItem( i18n( "Ascending" ) );
00045   mSortTypeCombo->insertItem( i18n( "Descending" ) );
00046 
00047   connect( mStyleCombo, SIGNAL( activated( int ) ), SIGNAL( styleChanged( int ) ) );
00048 }
00049 
00050 StylePage::~StylePage()
00051 {
00052 }
00053 
00054 void StylePage::setPreview( const QPixmap &pixmap )
00055 {
00056   if ( pixmap.isNull() )
00057     mPreview->setText( i18n( "(No preview available.)" ) );
00058   else
00059     mPreview->setPixmap( pixmap );
00060 }
00061 
00062 void StylePage::addStyleName( const QString &name )
00063 {
00064   mStyleCombo->insertItem( name );
00065 }
00066 
00067 void StylePage::clearStyleNames()
00068 {
00069   mStyleCombo->clear();
00070 }
00071 
00072 void StylePage::setSortField( KABC::Field *field )
00073 {
00074   mFieldCombo->setCurrentText( field->label() );
00075 }
00076 
00077 void StylePage::setSortAscending( bool value )
00078 {
00079   if ( value )
00080     mSortTypeCombo->setCurrentItem( 0 );
00081   else
00082     mSortTypeCombo->setCurrentItem( 1 );
00083 }
00084 
00085 KABC::Field* StylePage::sortField()
00086 {
00087   if ( mFieldCombo->currentItem() == -1 )
00088     return mFields[ 0 ];
00089 
00090   return mFields[ mFieldCombo->currentItem() ];
00091 }
00092 
00093 bool StylePage::sortAscending()
00094 {
00095   return ( mSortTypeCombo->currentItem() == 0 );
00096 }
00097 
00098 void StylePage::initFieldCombo()
00099 {
00100   if ( !mAddressBook )
00101     return;
00102 
00103   mFieldCombo->clear();
00104 
00105   mFields = mAddressBook->fields( KABC::Field::All );
00106   KABC::Field::List::ConstIterator it;
00107   for ( it = mFields.begin(); it != mFields.end(); ++it )
00108     mFieldCombo->insertItem( (*it)->label() );
00109 }
00110 
00111 void StylePage::initGUI()
00112 {
00113   setCaption( i18n( "Choose Printing Style" ) );
00114 
00115   QGridLayout *topLayout = new QGridLayout( this, 2, 2, KDialog::marginHint(),
00116                                             KDialog::spacingHint() );
00117 
00118   QLabel *label = new QLabel( i18n( "What should the print look like?\n"
00119                                     "KAddressBook has several printing styles, designed for different purposes.\n"
00120                                     "Choose the style that suits your needs below." ), this );
00121   topLayout->addMultiCellWidget( label, 0, 0, 0, 1 );
00122 
00123   QButtonGroup *group = new QButtonGroup( i18n( "Sorting" ), this );
00124   group->setColumnLayout( 0, Qt::Vertical );
00125   QGridLayout *sortLayout = new QGridLayout( group->layout(), 2, 2,
00126                                              KDialog::spacingHint() );
00127   sortLayout->setAlignment( Qt::AlignTop );
00128 
00129   label = new QLabel( i18n( "Criterion:" ), group );
00130   sortLayout->addWidget( label, 0, 0 );
00131 
00132   mFieldCombo = new KComboBox( false, group );
00133   sortLayout->addWidget( mFieldCombo, 0, 1 );
00134 
00135   label = new QLabel( i18n( "Order:" ), group );
00136   sortLayout->addWidget( label, 1, 0 );
00137 
00138   mSortTypeCombo = new KComboBox( false, group );
00139   sortLayout->addWidget( mSortTypeCombo, 1, 1 );
00140 
00141   topLayout->addWidget( group, 1, 0 );
00142 
00143   group = new QButtonGroup( i18n( "Print Style" ), this );
00144   group->setColumnLayout( 0, Qt::Vertical );
00145   QVBoxLayout *styleLayout = new QVBoxLayout( group->layout(),
00146                                               KDialog::spacingHint() );
00147 
00148   mStyleCombo = new KComboBox( false, group );
00149   styleLayout->addWidget( mStyleCombo );
00150 
00151   mPreview = new QLabel( group );
00152   QFont font( mPreview->font() );
00153   font.setPointSize( 20 );
00154   mPreview->setFont( font );
00155   mPreview->setScaledContents( true );
00156   mPreview->setAlignment( int( QLabel::WordBreak | QLabel::AlignCenter ) );
00157   styleLayout->addWidget( mPreview );
00158 
00159   topLayout->addWidget( group, 1, 1 );
00160 }
00161 
00162 #include "stylepage.moc"
KDE Home | KDE Accessibility Home | Description of Access Keys