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.
285 lines
6.7 KiB
285 lines
6.7 KiB
// -*- mode: C++; c-file-style: "gnu" -*- |
|
// kmcomposewin.cpp |
|
// Author: Markus Wuebben <markus.wuebben@kde.org> |
|
// This code is published under the GPL. |
|
|
|
#include <config.h> |
|
|
|
#include "kmatmlistview.h" |
|
|
|
#include "kmmainwin.h" |
|
#include "kmreadermainwin.h" |
|
#include "messagesender.h" |
|
#include "kmmsgpartdlg.h" |
|
#include <kpgpblock.h> |
|
#include <kaddrbook.h> |
|
#include "kmaddrbook.h" |
|
#include "kmmsgdict.h" |
|
#include "kmfolderimap.h" |
|
#include "kmfoldermgr.h" |
|
#include "kmfoldercombobox.h" |
|
#include "kmtransport.h" |
|
#include "kmcommands.h" |
|
#include "kcursorsaver.h" |
|
#include "partNode.h" |
|
#include "attachmentlistview.h" |
|
#include "transportmanager.h" |
|
using KMail::AttachmentListView; |
|
#include "dictionarycombobox.h" |
|
using KMail::DictionaryComboBox; |
|
#include "addressesdialog.h" |
|
using KPIM::AddressesDialog; |
|
#include "addresseeemailselection.h" |
|
using KPIM::AddresseeEmailSelection; |
|
using KPIM::AddresseeSelectorDialog; |
|
#include <maillistdrag.h> |
|
using KPIM::MailListDrag; |
|
#include "recentaddresses.h" |
|
using KRecentAddress::RecentAddresses; |
|
#include "kleo_util.h" |
|
#include "stl_util.h" |
|
#include "recipientseditor.h" |
|
|
|
#include "attachmentcollector.h" |
|
#include "objecttreeparser.h" |
|
|
|
#include "kmfoldermaildir.h" |
|
|
|
#include <libkpimidentities/identitymanager.h> |
|
#include <libkpimidentities/identitycombo.h> |
|
#include <libkpimidentities/identity.h> |
|
#include <libkdepim/kfileio.h> |
|
#include <libemailfunctions/email.h> |
|
#include <kleo/cryptobackendfactory.h> |
|
#include <kleo/exportjob.h> |
|
#include <ui/progressdialog.h> |
|
#include <ui/keyselectiondialog.h> |
|
|
|
#include <gpgmepp/context.h> |
|
#include <gpgmepp/key.h> |
|
|
|
#include <kabc/vcardconverter.h> |
|
#include <libkdepim/kvcarddrag.h> |
|
#include <kio/netaccess.h> |
|
|
|
|
|
#include "klistboxdialog.h" |
|
|
|
#include "messagecomposer.h" |
|
|
|
#include <kcharsets.h> |
|
#include <kcompletionbox.h> |
|
#include <kcursor.h> |
|
#include <kcombobox.h> |
|
#include <kstdaccel.h> |
|
#include <kmenu.h> |
|
#include <kedittoolbar.h> |
|
#include <kkeydialog.h> |
|
#include <kdebug.h> |
|
#include <kfiledialog.h> |
|
#include <kwin.h> |
|
#include <kinputdialog.h> |
|
#include <kmessagebox.h> |
|
#include <kio/scheduler.h> |
|
#include <ktempfile.h> |
|
#include <klocale.h> |
|
#include <kapplication.h> |
|
#include <kstatusbar.h> |
|
#include <kaction.h> |
|
#include <kstdaction.h> |
|
#include <kdirwatch.h> |
|
#include <kstdguiitem.h> |
|
#include <kiconloader.h> |
|
#include <kpushbutton.h> |
|
#include <kuserprofile.h> |
|
#include <krun.h> |
|
#include <ktempdir.h> |
|
//#include <keditlistbox.h> |
|
#include "globalsettings.h" |
|
#include "replyphrases.h" |
|
|
|
#include <kspell.h> |
|
#include <kspelldlg.h> |
|
#include <spellingfilter.h> |
|
#include <k3syntaxhighlighter.h> |
|
#include <kcolordialog.h> |
|
#include <kzip.h> |
|
#include <ksavefile.h> |
|
|
|
#include <q3tabdialog.h> |
|
#include <qregexp.h> |
|
#include <qbuffer.h> |
|
#include <qtooltip.h> |
|
#include <qtextcodec.h> |
|
#include <q3header.h> |
|
#include <q3whatsthis.h> |
|
#include <qfontdatabase.h> |
|
|
|
#include <mimelib/mimepp.h> |
|
|
|
#include <algorithm> |
|
|
|
#include <sys/stat.h> |
|
#include <sys/types.h> |
|
#include <stdlib.h> |
|
#include <unistd.h> |
|
#include <errno.h> |
|
#include <fcntl.h> |
|
#include <assert.h> |
|
|
|
KMAtmListViewItem::KMAtmListViewItem(Q3ListView *parent) |
|
: QObject(), |
|
Q3ListViewItem( parent ), |
|
mListview( parent ), |
|
mCBSignEnabled( false ), |
|
mCBEncryptEnabled( false ) |
|
{ |
|
mCBEncrypt = new QCheckBox( mListview->viewport() ); |
|
mCBSign = new QCheckBox( mListview->viewport() ); |
|
mCBCompress = new QCheckBox( mListview->viewport() ); |
|
connect( mCBCompress, SIGNAL( clicked() ), this, SLOT( slotCompress() ) ); |
|
|
|
mCBEncrypt->hide(); |
|
mCBSign->hide(); |
|
} |
|
|
|
KMAtmListViewItem::~KMAtmListViewItem() |
|
{ |
|
delete mCBEncrypt; |
|
mCBEncrypt = 0; |
|
delete mCBSign; |
|
mCBSign = 0; |
|
delete mCBCompress; |
|
mCBCompress = 0; |
|
} |
|
|
|
void KMAtmListViewItem::paintCell( QPainter * p, const QColorGroup & cg, |
|
int column, int width, int align ) |
|
{ |
|
// this is also called for the encrypt/sign columns to assure that the |
|
// background is cleared |
|
Q3ListViewItem::paintCell( p, cg, column, width, align ); |
|
if ( 4 == column ) { |
|
QRect r = mListview->itemRect( this ); |
|
if ( !r.size().isValid() ) { |
|
mListview->ensureItemVisible( this ); |
|
mListview->repaintContents( FALSE ); |
|
r = mListview->itemRect( this ); |
|
} |
|
int colWidth = mListview->header()->sectionSize( column ); |
|
r.setX( mListview->header()->sectionPos( column ) |
|
- mListview->header()->offset() |
|
+ colWidth / 2 |
|
- r.height() / 2 |
|
- 1 ); |
|
r.setY( r.y() + 1 ); |
|
r.setWidth( r.height() - 2 ); |
|
r.setHeight( r.height() - 2 ); |
|
r = QRect( mListview->viewportToContents( r.topLeft() ), r.size() ); |
|
|
|
mCBCompress->resize( r.size() ); |
|
mListview->moveChild( mCBCompress, r.x(), r.y() ); |
|
|
|
QColor bg; |
|
if (isSelected()) |
|
bg = cg.highlight(); |
|
else |
|
bg = cg.base(); |
|
|
|
mCBCompress->setPaletteBackgroundColor(bg); |
|
mCBCompress->show(); |
|
} |
|
if( 5 == column || 6 == column ) { |
|
QRect r = mListview->itemRect( this ); |
|
if ( !r.size().isValid() ) { |
|
mListview->ensureItemVisible( this ); |
|
mListview->repaintContents( FALSE ); |
|
r = mListview->itemRect( this ); |
|
} |
|
int colWidth = mListview->header()->sectionSize( column ); |
|
r.setX( mListview->header()->sectionPos( column ) |
|
+ colWidth / 2 |
|
- r.height() / 2 |
|
- 1 ); |
|
r.setY( r.y() + 1 ); |
|
r.setWidth( r.height() - 2 ); |
|
r.setHeight( r.height() - 2 ); |
|
r = QRect( mListview->viewportToContents( r.topLeft() ), r.size() ); |
|
|
|
QCheckBox* cb = (5 == column) ? mCBEncrypt : mCBSign; |
|
cb->resize( r.size() ); |
|
mListview->moveChild( cb, r.x(), r.y() ); |
|
|
|
QColor bg; |
|
if (isSelected()) |
|
bg = cg.highlight(); |
|
else |
|
bg = cg.base(); |
|
|
|
bool enabled = (5 == column) ? mCBEncryptEnabled : mCBSignEnabled; |
|
cb->setPaletteBackgroundColor(bg); |
|
if (enabled) cb->show(); |
|
} |
|
} |
|
|
|
void KMAtmListViewItem::enableCryptoCBs(bool on) |
|
{ |
|
if( mCBEncrypt ) { |
|
mCBEncryptEnabled = on; |
|
mCBEncrypt->setEnabled( on ); |
|
mCBEncrypt->setShown( on ); |
|
} |
|
if( mCBSign ) { |
|
mCBSignEnabled = on; |
|
mCBSign->setEnabled( on ); |
|
mCBSign->setShown( on ); |
|
} |
|
} |
|
|
|
void KMAtmListViewItem::setEncrypt(bool on) |
|
{ |
|
if( mCBEncrypt ) |
|
mCBEncrypt->setChecked( on ); |
|
} |
|
|
|
bool KMAtmListViewItem::isEncrypt() |
|
{ |
|
if( mCBEncrypt ) |
|
return mCBEncrypt->isChecked(); |
|
else |
|
return false; |
|
} |
|
|
|
void KMAtmListViewItem::setSign(bool on) |
|
{ |
|
if( mCBSign ) |
|
mCBSign->setChecked( on ); |
|
} |
|
|
|
bool KMAtmListViewItem::isSign() |
|
{ |
|
if( mCBSign ) |
|
return mCBSign->isChecked(); |
|
else |
|
return false; |
|
} |
|
|
|
void KMAtmListViewItem::setCompress(bool on) |
|
{ |
|
mCBCompress->setChecked( on ); |
|
} |
|
|
|
bool KMAtmListViewItem::isCompress() |
|
{ |
|
return mCBCompress->isChecked(); |
|
} |
|
|
|
void KMAtmListViewItem::slotCompress() |
|
{ |
|
if ( mCBCompress->isChecked() ) |
|
emit compress( itemPos() ); |
|
else |
|
emit uncompress( itemPos() ); |
|
} |
|
|
|
#include "kmatmlistview.moc"
|
|
|