You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

140 lines
3.5 KiB

/* -*- mode: C++; c-file-style: "gnu" -*-
This file is part of KMail, the KDE mail client.
Copyright (c) 1997 Markus Wuebben <markus.wuebben@kde.org>
Copyright (c) 2007 Thomas McGuire <Thomas.McGuire@gmx.net>
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.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
#include "kmatmlistview.h"
#include <QWidget>
#include <QCheckBox>
#include <QHBoxLayout>
#include "attachmentlistview.h"
KMAtmListViewItem::KMAtmListViewItem( KMail::AttachmentListView *parent,
KMMessagePart* attachment )
: QObject(),
QTreeWidgetItem( parent ),
mAttachment( attachment ),
mParent( parent )
{
mCBCompress = addCheckBox( 4 );
mCBEncrypt = addCheckBox( 5 );
mCBSign = addCheckBox( 6 );
connect( mCBCompress, SIGNAL( clicked() ), this, SLOT( slotCompress() ) );
}
// This function was also copied to
// QRadioButton* KMPopHeadersViewItem::addRadioButton( int column )
QCheckBox* KMAtmListViewItem::addCheckBox( int column )
{
// We can not call setItemWidget() on the checkbox directly, because then
// the checkbox would be left-aligned. Therefore we create a helper widget
// with a layout to align the checkbox to the center.
QWidget *w = new QWidget( treeWidget() );
QCheckBox *c = new QCheckBox();
QHBoxLayout *l = new QHBoxLayout();
l->insertWidget( 0, c, 0, Qt::AlignHCenter );
w->setBackgroundRole( QPalette::Base );
c->setBackgroundRole( QPalette::Base );
w->setLayout( l );
l->setMargin( 0 );
l->setSpacing( 0 );
w->show();
treeWidget()->setItemWidget( this, column, w );
return c;
}
KMAtmListViewItem::~KMAtmListViewItem()
{
// The checkboxes should be automatically deleted by the treewidget
mCBEncrypt = 0;
mCBSign = 0;
mCBCompress = 0;
}
bool KMAtmListViewItem::operator < ( const QTreeWidgetItem & other ) const
{
if ( treeWidget()->sortColumn() != 1 )
return QTreeWidgetItem::operator < ( other );
else
return mAttachmentSize <
(static_cast<const KMAtmListViewItem*>( &other ))->mAttachmentSize;
}
void KMAtmListViewItem::setEncrypt( bool on )
{
if ( mCBEncrypt ) {
mCBEncrypt->setChecked( on );
}
}
bool KMAtmListViewItem::isEncrypt() const
{
if ( mParent->areCryptoCBsEnabled() ) {
return mCBEncrypt->isChecked();
} else {
return false;
}
}
void KMAtmListViewItem::setSign( bool on )
{
if ( mCBSign ) {
mCBSign->setChecked( on );
}
}
bool KMAtmListViewItem::isSign() const
{
if ( mParent->areCryptoCBsEnabled() ) {
return mCBSign->isChecked();
} else {
return false;
}
}
void KMAtmListViewItem::setCompress( bool on )
{
mCBCompress->setChecked( on );
}
bool KMAtmListViewItem::isCompress() const
{
return mCBCompress->isChecked();
}
void KMAtmListViewItem::slotCompress()
{
if ( mCBCompress->isChecked() ) {
emit compress( this );
} else {
emit uncompress( this );
}
}
KMMessagePart* KMAtmListViewItem::attachment() const
{
return mAttachment;
}
#include "kmatmlistview.moc"