diff options
author | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
---|---|---|
committer | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
commit | 460c52653ab0dcca6f19a4f492ed2c5e4e963ab0 (patch) | |
tree | 67208f7c145782a7e90b123b982ca78d88cc2c87 /kaddressbook/distributionlistentryview.cpp | |
download | tdepim-460c52653ab0dcca6f19a4f492ed2c5e4e963ab0.tar.gz tdepim-460c52653ab0dcca6f19a4f492ed2c5e4e963ab0.zip |
Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features.
BUG:215923
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdepim@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'kaddressbook/distributionlistentryview.cpp')
-rw-r--r-- | kaddressbook/distributionlistentryview.cpp | 140 |
1 files changed, 140 insertions, 0 deletions
diff --git a/kaddressbook/distributionlistentryview.cpp b/kaddressbook/distributionlistentryview.cpp new file mode 100644 index 000000000..2db13f808 --- /dev/null +++ b/kaddressbook/distributionlistentryview.cpp @@ -0,0 +1,140 @@ +#include "distributionlistentryview.h" +#include "imagewidget.h" +#include <interfaces/core.h> + +#include <libkdepim/resourceabc.h> + +#include <kabc/addressbook.h> +#include <kabc/resource.h> + +#include <kdialog.h> +#include <kiconloader.h> +#include <klocale.h> +#include <kurllabel.h> + +#include <qbuttongroup.h> +#include <qcombobox.h> +#include <qlabel.h> +#include <qlayout.h> +#include <qradiobutton.h> +#include <qstringlist.h> +#include <qvbuttongroup.h> + +KAB::DistributionListEntryView::DistributionListEntryView( KAB::Core* core, QWidget* parent ) : QWidget( parent ), m_core( core ), m_emailGroup( 0 ) +{ + m_mainLayout = new QVBoxLayout( this ); + m_mainLayout->setSpacing( KDialog::spacingHint() ); + m_mainLayout->setMargin( KDialog::marginHint() ); + + QBoxLayout* headerLayout = new QHBoxLayout; + headerLayout->setSpacing( KDialog::spacingHint() * 3 ); + + m_imageLabel = new QLabel( this ); + m_imageLabel->setAutoResize( true ); + headerLayout->addWidget( m_imageLabel, 0, Qt::AlignTop ); + + m_addresseeLabel = new QLabel( this ); + headerLayout->addWidget( m_addresseeLabel, 0, Qt::AlignTop ); + headerLayout->addStretch(); + + m_mainLayout->addItem( headerLayout ); + + QBoxLayout* distLayout = new QHBoxLayout; + distLayout->setSpacing( KDialog::spacingHint() ); + + QLabel* distLabel = new QLabel( this ); + distLabel->setText( i18n( "<b>Distribution list:</b>" ) ); + distLabel->setAlignment( Qt::SingleLine ); + distLayout->addWidget( distLabel ); + + m_distListLabel = new KURLLabel( this ); + distLabel->setBuddy( m_distListLabel ); + connect( m_distListLabel, SIGNAL( leftClickedURL( const QString& ) ), + this, SIGNAL( distributionListClicked( const QString& ) ) ); + distLayout->addWidget( m_distListLabel ); + distLayout->addStretch(); + m_mainLayout->addItem( distLayout ); + + QLabel* emailLabel = new QLabel( this ); + emailLabel->setText( i18n( "<b>Email address to use in this list:</b>" ) ); + emailLabel->setAlignment( Qt::SingleLine ); + m_mainLayout->addWidget( emailLabel ); + + QBoxLayout* emailLayout = new QHBoxLayout; + emailLayout->setSpacing( KDialog::spacingHint() ); + emailLayout->addSpacing( 30 ); + + m_radioLayout = new QGridLayout; + emailLayout->addItem( m_radioLayout ); + emailLayout->addStretch(); + m_mainLayout->addItem( emailLayout ); + + QBoxLayout* resourceLayout = new QHBoxLayout; + resourceLayout->setSpacing( KDialog::spacingHint() ); + m_resourceLabel = new QLabel( this ); + resourceLayout->addWidget( m_resourceLabel ); + resourceLayout->addStretch(); + + m_mainLayout->addItem( resourceLayout ); + m_mainLayout->addStretch(); +} + +void KAB::DistributionListEntryView::emailButtonClicked( int id ) +{ + const QString email = m_idToEmail[ id ]; + if ( m_entry.email == email ) + return; + m_list.removeEntry( m_entry.addressee, m_entry.email ); + m_entry.email = email; + m_list.insertEntry( m_entry.addressee, m_entry.email ); + m_core->addressBook()->insertAddressee( m_list ); +} + +void KAB::DistributionListEntryView::clear() +{ + setEntry( KPIM::DistributionList(), KPIM::DistributionList::Entry() ); +} + +void KAB::DistributionListEntryView::setEntry( const KPIM::DistributionList& list, const KPIM::DistributionList::Entry& entry ) +{ + m_list = list; + m_entry = entry; + + delete m_emailGroup; + m_emailGroup = 0; + + QPixmap pixmap; + pixmap.convertFromImage( m_entry.addressee.photo().data() ); + m_imageLabel->setPixmap( pixmap.isNull() ? KGlobal::iconLoader()->loadIcon( "personal", KIcon::Desktop ) : pixmap ); + m_addresseeLabel->setText( i18n( "Formatted name, role, organization", "<qt><h2>%1</h2><p>%2<br/>%3</p></qt>" ).arg( m_entry.addressee.formattedName(), m_entry.addressee.role(), m_entry.addressee.organization() ) ); + m_distListLabel->setURL( m_list.name() ); + m_distListLabel->setText( m_list.name() ); + m_resourceLabel->setText( i18n( "<b>Address book:</b> %1" ).arg( m_entry.addressee.resource() ? m_entry.addressee.resource()->resourceName() : QString() ) ); + m_resourceLabel->setAlignment( Qt::SingleLine ); + + m_emailGroup = new QVButtonGroup( this ); + m_emailGroup->setFlat( true ); + m_emailGroup->setExclusive( true ); + m_emailGroup->setFrameShape( QFrame::NoFrame ); + + const QString preferred = m_entry.email.isNull() ? m_entry.addressee.preferredEmail() : m_entry.email; + const QStringList mails = m_entry.addressee.emails(); + m_idToEmail.clear(); + for ( QStringList::ConstIterator it = mails.begin(); it != mails.end(); ++it ) + { + QRadioButton* button = new QRadioButton( m_emailGroup ); + button->setText( *it ); + m_idToEmail.insert( m_emailGroup->insert( button ), *it ); + if ( *it == preferred ) + button->setChecked( true ); + button->setShown( true ); + } + connect( m_emailGroup, SIGNAL( clicked( int ) ), + this, SLOT( emailButtonClicked( int ) ) ); + m_radioLayout->addWidget( m_emailGroup, 0, 0 ); + m_emailGroup->setShown( true ); + m_mainLayout->invalidate(); +} + + +#include "distributionlistentryview.moc" |