From 460c52653ab0dcca6f19a4f492ed2c5e4e963ab0 Mon Sep 17 00:00:00 2001 From: toma Date: Wed, 25 Nov 2009 17:56:58 +0000 Subject: 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 --- kaddressbook/distributionlistentryview.cpp | 140 +++++++++++++++++++++++++++++ 1 file changed, 140 insertions(+) create mode 100644 kaddressbook/distributionlistentryview.cpp (limited to 'kaddressbook/distributionlistentryview.cpp') 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 + +#include + +#include +#include + +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +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( "Distribution list:" ) ); + 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( "Email address to use in this list:" ) ); + 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", "

%1

%2
%3

" ).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( "Address book: %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" -- cgit v1.2.1