mirror of
https://bitbucket.org/smil3y/kde-playground.git
synced 2025-02-24 10:52:52 +00:00
164 lines
5.5 KiB
C++
164 lines
5.5 KiB
C++
/*
|
|
Copyright (C) 2010 Casey Link <unnamedrambler@gmail.com>
|
|
Copyright (C) 2009-2010 Klaralvdalens Datakonsult AB, a KDAB Group company <info@kdab.net>
|
|
|
|
Refactored from earlier code by:
|
|
Copyright (c) 2010 Volker Krause <vkrause@kde.org>
|
|
Copyright (c) 2004 Cornelius Schumacher <schumacher@kde.org>
|
|
|
|
This library is free software; you can redistribute it and/or modify it
|
|
under the terms of the GNU Library General Public License as published by
|
|
the Free Software Foundation; either version 2 of the License, or (at your
|
|
option) any later version.
|
|
|
|
This library 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 Library General Public
|
|
License for more details.
|
|
|
|
You should have received a copy of the GNU Library General Public License
|
|
along with this library; see the file COPYING.LIB. If not, write to the
|
|
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
|
02110-1301, USA.
|
|
*/
|
|
|
|
#include "recipientseditorsidewidget.h"
|
|
|
|
#include "recipientspicker.h"
|
|
#include "kwindowpositioner.h"
|
|
|
|
#include <KDialog>
|
|
#include <KLocalizedString>
|
|
#include <KPushButton>
|
|
|
|
#include <QLabel>
|
|
#include <QBoxLayout>
|
|
#include <QTextDocument>
|
|
|
|
using namespace MessageComposer;
|
|
|
|
RecipientsEditorSideWidget::RecipientsEditorSideWidget( RecipientsEditor *view, QWidget *parent )
|
|
: QWidget( parent ), mEditor( view ), mRecipientPicker( 0 ), mPickerPositioner( 0 )
|
|
{
|
|
QBoxLayout *topLayout = new QVBoxLayout( this );
|
|
|
|
topLayout->setSpacing( KDialog::spacingHint() );
|
|
topLayout->setMargin( 0 );
|
|
topLayout->addStretch( 1 );
|
|
|
|
mTotalLabel = new QLabel( this );
|
|
mTotalLabel->setAlignment( Qt::AlignCenter );
|
|
topLayout->addWidget( mTotalLabel );
|
|
mTotalLabel->hide();
|
|
|
|
topLayout->addStretch( 1 );
|
|
|
|
mDistributionListButton = new KPushButton(
|
|
i18nc("@action:button","Save List..."), this );
|
|
topLayout->addWidget( mDistributionListButton );
|
|
mDistributionListButton->hide();
|
|
connect( mDistributionListButton, SIGNAL(clicked()),
|
|
SIGNAL(saveDistributionList()) );
|
|
mDistributionListButton->setToolTip(
|
|
i18nc( "@info:tooltip", "Save recipients as distribution list") );
|
|
|
|
mSelectButton = new QPushButton(
|
|
i18nc( "@action:button Open recipient selection dialog.", "Se&lect..."), this );
|
|
topLayout->addWidget( mSelectButton );
|
|
connect( mSelectButton, SIGNAL(clicked()), SLOT(pickRecipient()) );
|
|
mSelectButton->setToolTip( i18nc("@info:tooltip","Select recipients from address book") );
|
|
updateTotalToolTip();
|
|
}
|
|
|
|
RecipientsEditorSideWidget::~RecipientsEditorSideWidget()
|
|
{
|
|
}
|
|
|
|
|
|
RecipientsPicker* RecipientsEditorSideWidget::picker() const
|
|
{
|
|
if ( !mRecipientPicker ) {
|
|
// hacks to allow picker() to be const in the presence of lazy loading
|
|
RecipientsEditorSideWidget *non_const_this = const_cast<RecipientsEditorSideWidget*>( this );
|
|
mRecipientPicker = new RecipientsPicker( non_const_this );
|
|
connect( mRecipientPicker, SIGNAL(pickedRecipient(Recipient,bool&)),
|
|
non_const_this, SIGNAL(pickedRecipient(Recipient,bool&)) );
|
|
mPickerPositioner = new KWindowPositioner( mSelectButton, mRecipientPicker );
|
|
}
|
|
return mRecipientPicker;
|
|
}
|
|
|
|
void RecipientsEditorSideWidget::setFocus()
|
|
{
|
|
mSelectButton->setFocus();
|
|
}
|
|
|
|
void RecipientsEditorSideWidget::setTotal( int recipients, int lines )
|
|
{
|
|
QString labelText;
|
|
if ( recipients == 0 ) labelText = i18nc("@info:status No recipients selected"
|
|
, "No recipients");
|
|
else labelText = i18ncp("@info:status Number of recipients selected"
|
|
, "1 recipient","%1 recipients", recipients );
|
|
mTotalLabel->setText( labelText );
|
|
|
|
if ( lines > 3 ) mTotalLabel->show();
|
|
else mTotalLabel->hide();
|
|
|
|
if ( lines > 2 ) mDistributionListButton->show();
|
|
else mDistributionListButton->hide();
|
|
|
|
updateTotalToolTip();
|
|
}
|
|
|
|
void RecipientsEditorSideWidget::updateTotalToolTip()
|
|
{
|
|
QString text = QLatin1String( "<qt>" );
|
|
|
|
QString to;
|
|
QString cc;
|
|
QString bcc;
|
|
|
|
Recipient::List recipients = mEditor->recipients();
|
|
Recipient::List::ConstIterator it;
|
|
for( it = recipients.constBegin(); it != recipients.constEnd(); ++it ) {
|
|
QString emailLine = QLatin1String(" ") + Qt::escape( (*it)->email() ) + QLatin1String("<br/>");
|
|
switch( (*it)->type() ) {
|
|
case Recipient::To:
|
|
to += emailLine;
|
|
break;
|
|
case Recipient::Cc:
|
|
cc += emailLine;
|
|
break;
|
|
case Recipient::Bcc:
|
|
bcc += emailLine;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
text += i18nc("@info:tooltip %1 list of emails", "<interface>To:</interface><nl/>%1", to);
|
|
if ( !cc.isEmpty() ) {
|
|
text += i18nc("@info:tooltip %1 list of emails", "<interface>CC:</interface><nl/>%1", cc);
|
|
}
|
|
if ( !bcc.isEmpty() ) {
|
|
text += i18nc("@info:tooltip %1 list of emails", "<interface>BCC:</interface><nl/>%1", bcc);
|
|
}
|
|
|
|
text.append( QLatin1String("</qt>") );
|
|
mTotalLabel->setToolTip( text );
|
|
}
|
|
|
|
void RecipientsEditorSideWidget::pickRecipient()
|
|
{
|
|
MessageComposer::RecipientsPicker *p = picker();
|
|
Recipient::Ptr rec = mEditor->activeRecipient();
|
|
if( rec ) {
|
|
p->setDefaultType( rec->type() );
|
|
p->setRecipients( mEditor->recipients() );
|
|
mPickerPositioner->reposition();
|
|
p->show();
|
|
}
|
|
}
|
|
|