summaryrefslogtreecommitdiffabout
path: root/kaddressbook/kcmconfigs/addresseewidget.cpp
Side-by-side diff
Diffstat (limited to 'kaddressbook/kcmconfigs/addresseewidget.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--kaddressbook/kcmconfigs/addresseewidget.cpp236
1 files changed, 236 insertions, 0 deletions
diff --git a/kaddressbook/kcmconfigs/addresseewidget.cpp b/kaddressbook/kcmconfigs/addresseewidget.cpp
new file mode 100644
index 0000000..0f3c353
--- a/dev/null
+++ b/kaddressbook/kcmconfigs/addresseewidget.cpp
@@ -0,0 +1,236 @@
+/*
+ This file is part of KAddressBook.
+ Copyright (c) 2003 Tobias Koenig <tokoe@kde.org>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+ As a special exception, permission is given to link this program
+ with any edition of Qt, and distribute the resulting executable,
+ without including the source code for Qt in the source distribution.
+*/
+
+#include <qgroupbox.h>
+#include <qlabel.h>
+#include <qlayout.h>
+#include <qlistbox.h>
+#include <qpushbutton.h>
+
+#include <kbuttonbox.h>
+#include <kcombobox.h>
+#include <kconfig.h>
+#include <kdialog.h>
+#include <klocale.h>
+#include <kglobal.h>
+#include <klineedit.h>
+#include <kstandarddirs.h>
+
+#include "addresseewidget.h"
+
+NamePartWidget::NamePartWidget( const QString &title, QWidget *parent,
+ const char *name )
+ : QWidget( parent, name )
+{
+ if (KGlobal::getOrientation() == KGlobal::Portrait)
+ {
+ QGridLayout* layout = new QGridLayout( this, 1, 1, KDialog::marginHintSmall(),
+ KDialog::spacingHintSmall() );
+
+ QLabel *label = new QLabel( i18n( title ), this );
+ layout->addWidget( label, 0, 1 );
+
+ mBox = new QListBox( this );
+ mBox->setMaximumSize(70, 70);
+ layout->addMultiCellWidget( mBox, 0, 1, 0, 0 );
+
+ KButtonBox *bbox = new KButtonBox( this, Qt::Vertical );
+ mAddButton = bbox->addButton( i18n( "Add" ), this, SLOT( add() ) );
+ mRemoveButton = bbox->addButton( i18n( "Rem" ), this, SLOT( remove() ) );
+ bbox->layout();
+ layout->addMultiCellWidget( bbox, 0, 2, 2,2);
+
+ mEdit = new KLineEdit( this );
+ layout->addWidget( mEdit, 1, 1 );
+ //mEdit->setMinimumWidth(50);
+
+// layout->addWidget( group );
+
+ }
+ else
+ {
+ QHBoxLayout *layout = new QHBoxLayout( this );
+
+ QGroupBox *group = new QGroupBox( 0, Qt::Vertical, title, this );
+ QGridLayout *groupLayout = new QGridLayout( group->layout(), 2, 2,
+ KDialog::spacingHint() );
+
+ mBox = new QListBox( group );
+
+ groupLayout->addWidget( mBox, 0, 0 );
+
+ KButtonBox *bbox = new KButtonBox( group, Qt::Vertical );
+ mAddButton = bbox->addButton( i18n( "Add" ), this, SLOT( add() ) );
+ mRemoveButton = bbox->addButton( i18n( "Remove" ), this, SLOT( remove() ) );
+ bbox->layout();
+ groupLayout->addWidget( bbox, 0, 1 );
+
+ mEdit = new KLineEdit( group );
+ groupLayout->addMultiCellWidget( mEdit, 1, 1, 0, 1 );
+
+ layout->addWidget( group );
+
+ }
+
+ mAddButton->setEnabled( false );
+ mRemoveButton->setEnabled( false );
+
+
+ connect( mBox, SIGNAL( selectionChanged( QListBoxItem* ) ),
+ SLOT( selectionChanged( QListBoxItem* ) ) );
+ connect( mEdit, SIGNAL( textChanged( const QString& ) ),
+ SLOT( textChanged( const QString& ) ) );
+ connect( mEdit, SIGNAL( returnPressed() ), SLOT( add() ) );
+
+}
+
+NamePartWidget::~NamePartWidget()
+{
+}
+
+void NamePartWidget::setNameParts( const QStringList &list )
+{
+ mBox->clear();
+ mBox->insertStringList( list );
+}
+
+QStringList NamePartWidget::nameParts() const
+{
+ QStringList parts;
+ for ( uint i = 0; i < mBox->count(); ++i )
+ parts.append( mBox->text( i ) );
+
+ return parts;
+}
+
+void NamePartWidget::add()
+{
+ if ( !mEdit->text().isEmpty() ) {
+ mBox->insertItem( mEdit->text() );
+ emit modified();
+ }
+
+ mEdit->setText( "" );
+}
+
+void NamePartWidget::remove()
+{
+ mBox->removeItem( mBox->currentItem() );
+ if ( mBox->count() == 0 )
+ selectionChanged( 0 );
+
+ emit modified();
+}
+
+void NamePartWidget::selectionChanged( QListBoxItem *item )
+{
+ mRemoveButton->setEnabled( item != 0 );
+}
+
+void NamePartWidget::textChanged( const QString& text )
+{
+ mAddButton->setEnabled( !text.isEmpty() );
+}
+
+
+AddresseeWidget::AddresseeWidget( QWidget *parent, const char *name )
+ : QWidget( parent, name )
+{
+ QGridLayout *layout;
+
+ mPrefix = new NamePartWidget( i18n( "Prefixes" ), this );
+ mInclusion = new NamePartWidget( i18n( "Inclusions" ), this );
+ mSuffix = new NamePartWidget( i18n( "Suffixes" ), this );
+ QLabel *label = new QLabel( i18n( "Default formatted name:" ), this );
+
+ mFormattedNameCombo = new KComboBox( this );
+ mFormattedNameCombo->insertItem( i18n( "Empty" ) );
+ mFormattedNameCombo->insertItem( i18n( "Simple Name" ) );
+ mFormattedNameCombo->insertItem( i18n( "Full Name" ) );
+ mFormattedNameCombo->insertItem( i18n( "Reverse Name" ) );
+
+ if (KGlobal::getOrientation() == KGlobal::Portrait)
+ {
+ layout = new QGridLayout( this, 4, 2, KDialog::marginHint(),
+ KDialog::spacingHint() );
+
+ layout->addMultiCellWidget( mPrefix, 0, 0, 0, 1 );
+ layout->addMultiCellWidget( mInclusion, 1, 1, 0, 1 );
+ layout->addMultiCellWidget( mSuffix, 2, 2, 0, 1 );
+ layout->addWidget( label, 3, 0 );
+ layout->addWidget( mFormattedNameCombo, 3, 1 );
+
+ }
+ else
+ {
+ layout = new QGridLayout( this, 2, 3, KDialog::marginHint(),
+ KDialog::spacingHint() );
+
+ layout->addWidget( mPrefix, 0, 0 );
+ layout->addWidget( mInclusion, 0, 1 );
+ layout->addWidget( mSuffix, 0, 2 );
+ layout->addWidget( label, 1, 0 );
+ layout->addMultiCellWidget( mFormattedNameCombo, 1, 1, 1, 2 );
+ }
+
+ connect( mPrefix, SIGNAL( modified() ), SIGNAL( modified() ) );
+ connect( mInclusion, SIGNAL( modified() ), SIGNAL( modified() ) );
+ connect( mSuffix, SIGNAL( modified() ), SIGNAL( modified() ) );
+ connect( mFormattedNameCombo, SIGNAL( activated( int ) ), SIGNAL( modified() ) );
+}
+
+AddresseeWidget::~AddresseeWidget()
+{
+}
+
+void AddresseeWidget::restoreSettings()
+{
+ KConfig config( locateLocal("config", "kabcrc") );
+ config.setGroup( "General" );
+
+ mPrefix->setNameParts( config.readListEntry( "Prefixes" ) );
+ mInclusion->setNameParts( config.readListEntry( "Inclusions" ) );
+ mSuffix->setNameParts( config.readListEntry( "Suffixes" ) );
+
+ KConfig cfg( locateLocal("config","kaddressbookrc") );
+ cfg.setGroup( "General" );
+ mFormattedNameCombo->setCurrentItem( cfg.readNumEntry( "FormattedNameType", 1 ) );
+}
+
+void AddresseeWidget::saveSettings()
+{
+ KConfig config( locateLocal("config","kabcrc") );
+ config.setGroup( "General" );
+
+ config.writeEntry( "Prefixes", mPrefix->nameParts() );
+ config.writeEntry( "Inclusions", mInclusion->nameParts() );
+ config.writeEntry( "Suffixes", mSuffix->nameParts() );
+
+ KConfig cfg( locateLocal("config","kaddressbookrc") );
+ cfg.setGroup( "General" );
+ cfg.writeEntry( "FormattedNameType", mFormattedNameCombo->currentItem() );
+}
+
+#ifndef KAB_EMBEDDED
+#include "addresseewidget.moc"
+#endif //KAB_EMBEDDED