• Skip to content
  • Skip to link menu
KDE API Reference
  • KDE API Reference
  • kdepimlibs API Reference
  • KDE Home
  • Contact Us
 

kpimidentities

  • sources
  • kde-4.14
  • kdepimlibs
  • kpimidentities
signatureconfigurator.cpp
1 /* -*- c++ -*-
2  Copyright 2008 Thomas McGuire <Thomas.McGuire@gmx.net>
3  Copyright 2008 Edwin Schepers <yez@familieschepers.nl>
4  Copyright 2004 Marc Mutz <mutz@kde.org>
5 
6  This library is free software; you can redistribute it and/or
7  modify it under the terms of the GNU Lesser General Public
8  License as published by the Free Software Foundation; either
9  version 2.1 of the License, or (at your option) any later version.
10 
11  This library is distributed in the hope that it will be useful,
12  but WITHOUT ANY WARRANTY; without even the implied warranty of
13  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14  Lesser General Public License for more details.
15 
16  You should have received a copy of the GNU Lesser General Public
17  License along with this library. If not, see <http://www.gnu.org/licenses/>.
18 */
19 
20 
21 #include "signatureconfigurator.h"
22 #include "identity.h"
23 
24 #include <kactioncollection.h>
25 #include <klocalizedstring.h>
26 #include <kdebug.h>
27 #include <kdialog.h>
28 #include <klineedit.h>
29 #include <kurlrequester.h>
30 #include <kshellcompletion.h>
31 #include <ktoolbar.h>
32 #include <krun.h>
33 #include <KUrl>
34 #include <KComboBox>
35 #include <KStandardDirs>
36 
37 #include <kpimtextedit/textedit.h>
38 
39 #include <QCheckBox>
40 #include <QDir>
41 #include <QFileInfo>
42 #include <QLabel>
43 #include <QLayout>
44 #include <QMimeData>
45 #include <QTextEdit>
46 
47 #include <QStackedWidget>
48 
49 #include <QVBoxLayout>
50 #include <QHBoxLayout>
51 
52 #include <assert.h>
53 
54 using namespace KPIMIdentities;
55 
56 namespace KPIMIdentities {
57 
62 //@cond PRIVATE
63 class SignatureConfigurator::Private
64 {
65  public:
66  Private( SignatureConfigurator *parent );
67  void init();
68 
69  SignatureConfigurator *q;
70  bool inlinedHtml;
71  QString imageLocation;
72 };
73 //@endcond
74 
75 SignatureConfigurator::Private::Private( SignatureConfigurator *parent )
76  :q( parent ), inlinedHtml( true )
77 {
78 }
79 
80 void SignatureConfigurator::Private::init()
81 {
82  // tmp. vars:
83  QLabel * label;
84  QWidget * page;
85  QHBoxLayout * hlay;
86  QVBoxLayout * vlay;
87  QVBoxLayout * page_vlay;
88 
89  vlay = new QVBoxLayout( q );
90  vlay->setObjectName( QLatin1String("main layout") );
91  vlay->setMargin( 0 );
92 
93  // "enable signatue" checkbox:
94  q->mEnableCheck = new QCheckBox( i18n( "&Enable signature" ), q );
95  q->mEnableCheck->setWhatsThis(
96  i18n( "Check this box if you want KMail to append a signature to mails "
97  "written with this identity." ) );
98  vlay->addWidget( q->mEnableCheck );
99 
100  // "obtain signature text from" combo and label:
101  hlay = new QHBoxLayout(); // inherits spacing
102  vlay->addLayout( hlay );
103  q->mSourceCombo = new KComboBox( q );
104  q->mSourceCombo->setEditable( false );
105  q->mSourceCombo->setWhatsThis(
106  i18n( "Click on the widgets below to obtain help on the input methods." ) );
107  q->mSourceCombo->setEnabled( false ); // since !mEnableCheck->isChecked()
108  q->mSourceCombo->addItems( QStringList()
109  << i18nc( "continuation of \"obtain signature text from\"",
110  "Input Field Below" )
111  << i18nc( "continuation of \"obtain signature text from\"",
112  "File" )
113  << i18nc( "continuation of \"obtain signature text from\"",
114  "Output of Command" ) );
115  label = new QLabel( i18n( "Obtain signature &text from:" ), q );
116  label->setBuddy( q->mSourceCombo );
117  label->setEnabled( false ); // since !mEnableCheck->isChecked()
118  hlay->addWidget( label );
119  hlay->addWidget( q->mSourceCombo, 1 );
120 
121  // widget stack that is controlled by the source combo:
122  QStackedWidget * widgetStack = new QStackedWidget( q );
123  widgetStack->setEnabled( false ); // since !mEnableCheck->isChecked()
124  vlay->addWidget( widgetStack, 1 );
125  q->connect( q->mSourceCombo, SIGNAL(currentIndexChanged(int)),
126  widgetStack, SLOT(setCurrentIndex(int)) );
127  q->connect( q->mSourceCombo, SIGNAL(highlighted(int)),
128  widgetStack, SLOT(setCurrentIndex(int)) );
129  // connects for the enabling of the widgets depending on
130  // signatureEnabled:
131  q->connect( q->mEnableCheck, SIGNAL(toggled(bool)),
132  q->mSourceCombo, SLOT(setEnabled(bool)) );
133  q->connect( q->mEnableCheck, SIGNAL(toggled(bool)),
134  widgetStack, SLOT(setEnabled(bool)) );
135  q->connect( q->mEnableCheck, SIGNAL(toggled(bool)),
136  label, SLOT(setEnabled(bool)) );
137  // The focus might be still in the widget that is disabled
138  q->connect( q->mEnableCheck, SIGNAL(clicked()),
139  q->mEnableCheck, SLOT(setFocus()) );
140 
141  int pageno = 0;
142  // page 0: input field for direct entering:
143  page = new QWidget( widgetStack );
144  widgetStack->insertWidget( pageno, page );
145  page_vlay = new QVBoxLayout( page );
146  page_vlay->setMargin(0);
147 
148 #ifndef QT_NO_TOOLBAR
149  q->mEditToolBar = new KToolBar( q );
150  q->mEditToolBar->setToolButtonStyle( Qt::ToolButtonIconOnly );
151  page_vlay->addWidget( q->mEditToolBar, 0 );
152 
153  q->mFormatToolBar = new KToolBar( q );
154  q->mFormatToolBar->setToolButtonStyle( Qt::ToolButtonIconOnly );
155  page_vlay->addWidget( q->mFormatToolBar, 1 );
156 #endif
157 
158  q->mTextEdit = new KPIMTextEdit::TextEdit( q );
159  static_cast<KPIMTextEdit::TextEdit*>( q->mTextEdit )->enableImageActions();
160  static_cast<KPIMTextEdit::TextEdit*>( q->mTextEdit )->enableInsertHtmlActions();
161  static_cast<KPIMTextEdit::TextEdit*>( q->mTextEdit )->enableInsertTableActions();
162  page_vlay->addWidget( q->mTextEdit, 2 );
163  q->mTextEdit->setWhatsThis( i18n( "Use this field to enter an arbitrary static signature." ) );
164  // exclude SupportToPlainText.
165  q->mTextEdit->setRichTextSupport( KRichTextWidget::FullTextFormattingSupport |
166  KRichTextWidget::FullListSupport |
167  KRichTextWidget::SupportAlignment |
168  KRichTextWidget::SupportRuleLine |
169  KRichTextWidget::SupportHyperlinks |
170  KRichTextWidget::SupportFormatPainting );
171 
172  // Fill the toolbars.
173  KActionCollection *actionCollection = new KActionCollection( q );
174  q->mTextEdit->createActions( actionCollection );
175 #ifndef QT_NO_TOOLBAR
176  q->mEditToolBar->addAction( actionCollection->action( QLatin1String("format_text_bold") ) );
177  q->mEditToolBar->addAction( actionCollection->action( QLatin1String("format_text_italic") ) );
178  q->mEditToolBar->addAction( actionCollection->action( QLatin1String("format_text_underline") ) );
179  q->mEditToolBar->addAction( actionCollection->action( QLatin1String("format_text_strikeout") ) );
180  q->mEditToolBar->addAction( actionCollection->action( QLatin1String("format_text_foreground_color") ) );
181  q->mEditToolBar->addAction( actionCollection->action( QLatin1String("format_text_background_color") ) );
182  q->mEditToolBar->addAction( actionCollection->action( QLatin1String("format_font_family") ) );
183  q->mEditToolBar->addAction( actionCollection->action( QLatin1String("format_font_size") ) );
184  q->mEditToolBar->addAction( actionCollection->action( QLatin1String("format_reset") ) );
185 
186  q->mFormatToolBar->addAction( actionCollection->action( QLatin1String("format_list_style") ) );
187  q->mFormatToolBar->addAction( actionCollection->action( QLatin1String("format_list_indent_more") ) );
188  q->mFormatToolBar->addAction( actionCollection->action( QLatin1String("format_list_indent_less") ) );
189  q->mFormatToolBar->addAction( actionCollection->action( QLatin1String("format_list_indent_less") ) );
190  q->mFormatToolBar->addSeparator();
191 
192  q->mFormatToolBar->addAction( actionCollection->action( QLatin1String("format_align_left") ) );
193  q->mFormatToolBar->addAction( actionCollection->action( QLatin1String("format_align_center") ) );
194  q->mFormatToolBar->addAction( actionCollection->action( QLatin1String("format_align_right") ) );
195  q->mFormatToolBar->addAction( actionCollection->action( QLatin1String("format_align_justify") ) );
196  q->mFormatToolBar->addSeparator();
197 
198  q->mFormatToolBar->addAction( actionCollection->action( QLatin1String("insert_horizontal_rule") ) );
199  q->mFormatToolBar->addAction( actionCollection->action( QLatin1String("manage_link") ) );
200  q->mFormatToolBar->addAction( actionCollection->action( QLatin1String("format_painter") ) );
201 
202  q->mFormatToolBar->addSeparator();
203  q->mFormatToolBar->addAction( actionCollection->action( QLatin1String("add_image") ) );
204  q->mFormatToolBar->addSeparator();
205  q->mFormatToolBar->addAction( actionCollection->action( QLatin1String("insert_html") ) );
206  q->mFormatToolBar->addAction( actionCollection->action( QLatin1String("insert_table" )) );
207 #endif
208 
209  hlay = new QHBoxLayout(); // inherits spacing
210  page_vlay->addLayout( hlay );
211  q->mHtmlCheck = new QCheckBox( i18n( "&Use HTML" ), page );
212  q->connect( q->mHtmlCheck, SIGNAL(clicked()),
213  q, SLOT(slotSetHtml()) );
214  hlay->addWidget( q->mHtmlCheck );
215  inlinedHtml = true;
216 
217  widgetStack->setCurrentIndex( 0 ); // since mSourceCombo->currentItem() == 0
218 
219  // page 1: "signature file" requester, label, "edit file" button:
220  ++pageno;
221  page = new QWidget( widgetStack );
222  widgetStack->insertWidget( pageno, page ); // force sequential numbers (play safe)
223  page_vlay = new QVBoxLayout( page );
224  page_vlay->setMargin( 0 );
225  hlay = new QHBoxLayout(); // inherits spacing
226  page_vlay->addLayout( hlay );
227  q->mFileRequester = new KUrlRequester( page );
228  q->mFileRequester->setWhatsThis(
229  i18n( "Use this requester to specify a text file that contains your "
230  "signature. It will be read every time you create a new mail or "
231  "append a new signature." ) );
232  label = new QLabel( i18n( "S&pecify file:" ), page );
233  label->setBuddy( q->mFileRequester );
234  hlay->addWidget( label );
235  hlay->addWidget( q->mFileRequester, 1 );
236  q->mFileRequester->button()->setAutoDefault( false );
237  q->connect( q->mFileRequester, SIGNAL(textChanged(QString)),
238  q, SLOT(slotEnableEditButton(QString)) );
239  q->mEditButton = new QPushButton( i18n( "Edit &File" ), page );
240  q->mEditButton->setWhatsThis( i18n( "Opens the specified file in a text editor." ) );
241  q->connect( q->mEditButton, SIGNAL(clicked()),
242  q, SLOT(slotEdit()) );
243  q->mEditButton->setAutoDefault( false );
244  q->mEditButton->setEnabled( false ); // initially nothing to edit
245  hlay->addWidget( q->mEditButton );
246  page_vlay->addStretch( 1 ); // spacer
247 
248  // page 2: "signature command" requester and label:
249  ++pageno;
250  page = new QWidget( widgetStack );
251  widgetStack->insertWidget( pageno, page );
252  page_vlay = new QVBoxLayout( page );
253  page_vlay->setMargin( 0 );
254  hlay = new QHBoxLayout(); // inherits spacing
255  page_vlay->addLayout( hlay );
256  q->mCommandEdit = new KLineEdit( page );
257  q->mCommandEdit->setClearButtonShown( true );
258  q->mCommandEdit->setCompletionObject( new KShellCompletion() );
259  q->mCommandEdit->setAutoDeleteCompletionObject( true );
260  q->mCommandEdit->setWhatsThis(
261  i18n( "You can add an arbitrary command here, either with or without path "
262  "depending on whether or not the command is in your Path. For every "
263  "new mail, KMail will execute the command and use what it outputs (to "
264  "standard output) as a signature. Usual commands for use with this "
265  "mechanism are \"fortune\" or \"ksig -random\"." ) );
266  label = new QLabel( i18n( "S&pecify command:" ), page );
267  label->setBuddy( q->mCommandEdit );
268  hlay->addWidget( label );
269  hlay->addWidget( q->mCommandEdit, 1 );
270  page_vlay->addStretch( 1 ); // spacer
271 }
272 
273  SignatureConfigurator::SignatureConfigurator( QWidget * parent )
274  : QWidget( parent ), d( new Private( this ) )
275  {
276  d->init();
277  }
278 
279  SignatureConfigurator::~SignatureConfigurator()
280  {
281  delete d;
282  }
283 
284  bool SignatureConfigurator::isSignatureEnabled() const
285  {
286  return mEnableCheck->isChecked();
287  }
288 
289  void SignatureConfigurator::setSignatureEnabled( bool enable )
290  {
291  mEnableCheck->setChecked( enable );
292  }
293 
294  Signature::Type SignatureConfigurator::signatureType() const
295  {
296  switch ( mSourceCombo->currentIndex() ) {
297  case 0: return Signature::Inlined;
298  case 1: return Signature::FromFile;
299  case 2: return Signature::FromCommand;
300  default: return Signature::Disabled;
301  }
302  }
303 
304  void SignatureConfigurator::setSignatureType( Signature::Type type )
305  {
306  int idx = 0;
307  switch ( type ) {
308  case Signature::Inlined: idx = 0; break;
309  case Signature::FromFile: idx = 1; break;
310  case Signature::FromCommand: idx = 2; break;
311  default: idx = 0; break;
312  };
313 
314  mSourceCombo->setCurrentIndex( idx );
315  }
316 
317  void SignatureConfigurator::setInlineText( const QString & text )
318  {
319  mTextEdit->setTextOrHtml( text );
320  }
321 
322  QString SignatureConfigurator::fileURL() const
323  {
324  QString file = mFileRequester->url().path();
325 
326  // Force the filename to be relative to ~ instead of $PWD depending
327  // on the rest of the code (KRun::run in Edit and KFileItem on save)
328  if ( !file.isEmpty() && QFileInfo( file ).isRelative() ) {
329  file = QDir::home().absolutePath() + QDir::separator() + file;
330  }
331  return file;
332  }
333 
334  void SignatureConfigurator::setFileURL( const QString & url )
335  {
336  mFileRequester->setUrl( QUrl(url) );
337  }
338 
339  QString SignatureConfigurator::commandURL() const
340  {
341  return mCommandEdit->text();
342  }
343 
344  void SignatureConfigurator::setCommandURL( const QString & url )
345  {
346  mCommandEdit->setText( url );
347  }
348 
349 
350  Signature SignatureConfigurator::signature() const
351  {
352  Signature sig;
353  const Signature::Type sigType = signatureType();
354  switch ( sigType ) {
355  case Signature::Inlined:
356  sig.setInlinedHtml( d->inlinedHtml );
357  sig.setText( d->inlinedHtml ? asCleanedHTML() : mTextEdit->textOrHtml() );
358  if ( d->inlinedHtml ) {
359  if ( !d->imageLocation.isEmpty() ) {
360  sig.setImageLocation( d->imageLocation );
361  }
362  KPIMTextEdit::ImageWithNameList images = static_cast< KPIMTextEdit::TextEdit*>( mTextEdit )->imagesWithName();
363  foreach ( const KPIMTextEdit::ImageWithNamePtr &image, images ) {
364  sig.addImage( image->image, image->name );
365  }
366  }
367  break;
368  case Signature::FromCommand:
369  sig.setUrl( commandURL(), true );
370  break;
371  case Signature::FromFile:
372  sig.setUrl( fileURL(), false );
373  break;
374  case Signature::Disabled:
375  /* do nothing */
376  break;
377  }
378  sig.setEnabledSignature( isSignatureEnabled() );
379  sig.setType( sigType );
380  return sig;
381  }
382 
383  void SignatureConfigurator::setSignature( const Signature & sig )
384  {
385  setSignatureType( sig.type() );
386  setSignatureEnabled( sig.isEnabledSignature() );
387 
388  if ( sig.isInlinedHtml() ) {
389  mHtmlCheck->setCheckState( Qt::Checked );
390  } else {
391  mHtmlCheck->setCheckState( Qt::Unchecked );
392  }
393  slotSetHtml();
394 
395  // Let insertIntoTextEdit() handle setting the text, as that function also adds the images.
396  mTextEdit->clear();
397  KPIMTextEdit::TextEdit * const pimEdit = static_cast<KPIMTextEdit::TextEdit*>( mTextEdit );
398  sig.insertIntoTextEdit( KPIMIdentities::Signature::Start, KPIMIdentities::Signature::AddNothing,
399  pimEdit, true );
400  if ( sig.type() == Signature::FromFile ) {
401  setFileURL( sig.url() );
402  } else {
403  setFileURL( QString() );
404  }
405 
406  if ( sig.type() == Signature::FromCommand ) {
407  setCommandURL( sig.url() );
408  } else {
409  setCommandURL( QString() );
410  }
411  }
412 
413  void SignatureConfigurator::slotEnableEditButton( const QString & url )
414  {
415  mEditButton->setDisabled( url.trimmed().isEmpty() );
416  }
417 
418  void SignatureConfigurator::slotEdit()
419  {
420  QString url = fileURL();
421  // slotEnableEditButton should prevent this assert from being hit:
422  assert( !url.isEmpty() );
423 
424  (void)KRun::runUrl( KUrl( url ), QString::fromLatin1( "text/plain" ), this );
425  }
426 
427  QString SignatureConfigurator::asCleanedHTML() const
428  {
429  QString text = mTextEdit->toHtml();
430 
431  // Beautiful little hack to find the html headers produced by Qt.
432  QTextDocument textDocument;
433  QString html = textDocument.toHtml();
434 
435  // Now remove each line from the text, the result is clean html.
436  foreach ( const QString& line, html.split( QLatin1Char('\n') ) ) {
437  text.remove( line + QLatin1Char('\n') );
438  }
439  return text;
440  }
441 
442  // "use HTML"-checkbox (un)checked
443  void SignatureConfigurator::slotSetHtml()
444  {
445  if ( mHtmlCheck->checkState() == Qt::Unchecked ) {
446  mHtmlCheck->setText( i18n( "&Use HTML" ) );
447 #ifndef QT_NO_TOOLBAR
448  mEditToolBar->setVisible( false );
449  mEditToolBar->setEnabled( false );
450  mFormatToolBar->setVisible( false );
451  mFormatToolBar->setEnabled( false );
452 #endif
453  mTextEdit->switchToPlainText();
454  d->inlinedHtml = false;
455  }
456  else {
457  mHtmlCheck->setText( i18n( "&Use HTML (disabling removes formatting)" ) );
458  d->inlinedHtml = true;
459 #ifndef QT_NO_TOOLBAR
460  mEditToolBar->setVisible( true );
461  mEditToolBar->setEnabled( true );
462  mFormatToolBar->setVisible( true );
463  mFormatToolBar->setEnabled( true );
464 #endif
465  mTextEdit->enableRichTextMode();
466  }
467  }
468 
469  void SignatureConfigurator::setImageLocation ( const QString& path )
470  {
471  d->imageLocation = path;
472  }
473 
474  void SignatureConfigurator::setImageLocation( const Identity &identity )
475  {
476  const QString dir = QString::fromLatin1( "emailidentities/%1/" ).arg(
477  QString::number( identity.uoid() ) );
478  setImageLocation( KStandardDirs::locateLocal( "data", dir ) );
479  }
480 
481 }
482 
KPIMIdentities::SignatureConfigurator::fileURL
QString fileURL() const
Returns the file url which the user wants to use as a signature.
Definition: signatureconfigurator.cpp:322
QWidget
KPIMIdentities::Signature::AddNothing
Don't add any text to the signature.
Definition: signature.h:224
KPIMIdentities::SignatureConfigurator::setFileURL
void setFileURL(const QString &url)
Set url for the file url part of the widget.
Definition: signatureconfigurator.cpp:334
KPIMIdentities::Signature::Start
The signature is placed at the start of the textedit.
Definition: signature.h:110
KPIMIdentities::Signature::insertIntoTextEdit
void KPIMIDENTITIES_DEPRECATED insertIntoTextEdit(KRichTextEdit *textEdit, Placement placement=End, bool addSeparator=true)
Definition: signature.cpp:507
QString::split
QStringList split(const QString &sep, SplitBehavior behavior, Qt::CaseSensitivity cs) const
KPIMIdentities::SignatureConfigurator::commandURL
QString commandURL() const
Returns the url of the command which the users wants to use as signature.
Definition: signatureconfigurator.cpp:339
KPIMIdentities::Signature::setText
void setText(const QString &text)
Set the signature text and mark this signature as being of "inline text" type.
Definition: signature.cpp:666
QHBoxLayout
KPIMIdentities::SignatureConfigurator::setSignatureType
void setSignatureType(Signature::Type type)
Set the signature type to type.
Definition: signatureconfigurator.cpp:304
KPIMIdentities::SignatureConfigurator::setImageLocation
void setImageLocation(const QString &path)
Sets the directory where the images used in the HTML signature will be stored.
Definition: signatureconfigurator.cpp:469
QString::remove
QString & remove(int position, int n)
KPIMIdentities::SignatureConfigurator::setCommandURL
void setCommandURL(const QString &url)
Sets url as the command to execute.
Definition: signatureconfigurator.cpp:344
KPIMIdentities::Signature::setImageLocation
void setImageLocation(const QString &path)
Sets the location where the copies of the signature images will be stored.
Definition: signature.cpp:642
KPIMIdentities::Identity::uoid
uint uoid() const
Unique Object Identifier for this identity.
Definition: identity.cpp:334
QDir::separator
QChar separator()
QLabel::setBuddy
void setBuddy(QWidget *buddy)
QWidget::setEnabled
void setEnabled(bool)
QBoxLayout::addWidget
void addWidget(QWidget *widget, int stretch, QFlags< Qt::AlignmentFlag > alignment)
QString::number
QString number(int n, int base)
KPIMIdentities::Signature::setEnabledSignature
void setEnabledSignature(bool enabled)
setEnabledSignature
Definition: signature.cpp:678
KPIMIdentities::Signature::isInlinedHtml
bool isInlinedHtml() const
Definition: signature.cpp:273
KPIMIdentities::Signature::setInlinedHtml
void setInlinedHtml(bool isHtml)
Sets the inlined signature to text or html.
Definition: signature.cpp:268
QCheckBox
KPIMIdentities::SignatureConfigurator::setSignatureEnabled
void setSignatureEnabled(bool enable)
Use this to activate the signature.
Definition: signatureconfigurator.cpp:289
QObject::setObjectName
void setObjectName(const QString &name)
KPIMIdentities::Signature
Abstraction of a signature (aka "footer").
Definition: signature.h:89
QString::isEmpty
bool isEmpty() const
QString::trimmed
QString trimmed() const
QStackedWidget::setCurrentIndex
void setCurrentIndex(int index)
QVBoxLayout
QStackedWidget
QString
QLayout::setMargin
void setMargin(int margin)
QStringList
KPIMIdentities::Identity
User identity information.
Definition: identity.h:83
QFileInfo
QUrl
QLatin1Char
KPIMIdentities::SignatureConfigurator
This widget gives an interface so users can edit their signature.
Definition: signatureconfigurator.h:48
QAbstractButton::isChecked
bool isChecked() const
KPIMIdentities::Signature::Type
Type
Type of signature (ie.
Definition: signature.h:98
KPIMIdentities::SignatureConfigurator::setInlineText
void setInlineText(const QString &text)
Make text the text for the signature.
Definition: signatureconfigurator.cpp:317
QFileInfo::isRelative
bool isRelative() const
QStackedWidget::insertWidget
int insertWidget(int index, QWidget *widget)
QLatin1String
QBoxLayout::addStretch
void addStretch(int stretch)
QDir::absolutePath
QString absolutePath() const
KPIMIdentities::SignatureConfigurator::setSignature
void setSignature(const Signature &sig)
Convenience method.
Definition: signatureconfigurator.cpp:383
QTextDocument
KPIMIdentities::SignatureConfigurator::SignatureConfigurator
SignatureConfigurator(QWidget *parent=0)
Constructor.
Definition: signatureconfigurator.cpp:273
QAbstractButton::setText
void setText(const QString &text)
QString::fromLatin1
QString fromLatin1(const char *str, int size)
QPushButton
KPIMIdentities::SignatureConfigurator::signatureType
Signature::Type signatureType() const
This returns the type of the signature, so that can be Disabled, Inline, fromFile, etc.
Definition: signatureconfigurator.cpp:294
QWidget::setDisabled
void setDisabled(bool disable)
KPIMIdentities::Signature::setUrl
void setUrl(const QString &url, bool isExecutable=false)
Set the signature URL and mark this signature as being of "from file" resp.
Definition: signature.cpp:262
KPIMIdentities::Signature::type
Type type() const
Definition: signature.cpp:659
QCheckBox::checkState
Qt::CheckState checkState() const
QLabel
QObject::parent
QObject * parent() const
QTextDocument::toHtml
QString toHtml(const QByteArray &encoding) const
KPIMIdentities::Signature::addImage
void addImage(const QImage &image, const QString &imageName)
Adds the given image to the signature.
Definition: signature.cpp:633
QString::arg
QString arg(qlonglong a, int fieldWidth, int base, const QChar &fillChar) const
QDir::home
QDir home()
KPIMIdentities::SignatureConfigurator::isSignatureEnabled
bool isSignatureEnabled() const
Indicated if the user wants a signature.
Definition: signatureconfigurator.cpp:284
QCheckBox::setCheckState
void setCheckState(Qt::CheckState state)
KPIMIdentities::SignatureConfigurator::~SignatureConfigurator
virtual ~SignatureConfigurator()
destructor
Definition: signatureconfigurator.cpp:279
KPIMIdentities::SignatureConfigurator::signature
Signature signature() const
Conveniece method.
Definition: signatureconfigurator.cpp:350
QBoxLayout::addLayout
void addLayout(QLayout *layout, int stretch)
This file is part of the KDE documentation.
Documentation copyright © 1996-2020 The KDE developers.
Generated on Mon Jun 22 2020 13:38:46 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

kpimidentities

Skip menu "kpimidentities"
  • Main Page
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • Related Pages

kdepimlibs API Reference

Skip menu "kdepimlibs API Reference"
  • akonadi
  •   contact
  •   kmime
  •   socialutils
  • kabc
  • kalarmcal
  • kblog
  • kcal
  • kcalcore
  • kcalutils
  • kholidays
  • kimap
  • kioslave
  •   imap4
  •   mbox
  •   nntp
  • kldap
  • kmbox
  • kmime
  • kontactinterface
  • kpimidentities
  • kpimtextedit
  • kpimutils
  • kresources
  • ktnef
  • kxmlrpcclient
  • mailtransport
  • microblog
  • qgpgme
  • syndication
  •   atom
  •   rdf
  •   rss2

Search



Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal