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

mailcommon

  • sources
  • kde-4.12
  • kdepim
  • mailcommon
  • tag
tagwidget.cpp
Go to the documentation of this file.
1 /*
2  Copyright (c) 2012 Montel Laurent <montel@kde.org>
3 
4  This program is free software; you can redistribute it and/or modify it
5  under the terms of the GNU General Public License, version 2, as
6  published by the Free Software Foundation.
7 
8  This program is distributed in the hope that it will be useful, but
9  WITHOUT ANY WARRANTY; without even the implied warranty of
10  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11  General Public License for more details.
12 
13  You should have received a copy of the GNU General Public License along
14  with this program; if not, write to the Free Software Foundation, Inc.,
15  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16 */
17 
18 #include "tagwidget.h"
19 
20 #include <QVBoxLayout>
21 #include <QGridLayout>
22 #include <QLabel>
23 #include <QCheckBox>
24 #include <KDialog>
25 #include <KColorCombo>
26 #include <KFontRequester>
27 #include <KIconButton>
28 #include <KKeySequenceWidget>
29 #include <KActionCollection>
30 #include <KLineEdit>
31 #include <KLocale>
32 using namespace MailCommon;
33 
34 TagWidget::TagWidget(const QList<KActionCollection*>& actionCollections, QWidget *parent)
35  : QWidget(parent)
36 {
37  QGridLayout *settings = new QGridLayout;
38  settings->setMargin( KDialog::marginHint() );
39  settings->setSpacing( KDialog::spacingHint() );
40  setLayout(settings);
41 
42  //Stretcher layout for adding some space after the label
43  QVBoxLayout *spacer = new QVBoxLayout();
44  settings->addLayout( spacer, 0, 0, 1, 2 );
45  spacer->addSpacing( 2 * KDialog::spacingHint() );
46 
47  //First row for renaming
48  mTagNameLineEdit = new KLineEdit( this );
49  mTagNameLineEdit->setClearButtonShown(true);
50  mTagNameLineEdit->setTrapReturnKey( true );
51  settings->addWidget( mTagNameLineEdit, 1, 1 );
52 
53  QLabel *namelabel = new QLabel( i18nc("@label:listbox Name of the tag", "Name:")
54  , this );
55  namelabel->setBuddy( mTagNameLineEdit );
56  settings->addWidget( namelabel, 1, 0 );
57 
58  connect( mTagNameLineEdit, SIGNAL(textChanged(QString)),
59  this, SLOT(slotEmitChangeCheck()) );
60 
61  //Second row for text color
62  mTextColorCheck = new QCheckBox( i18n("Change te&xt color:"),
63  this );
64  settings->addWidget( mTextColorCheck, 2, 0 );
65 
66  mTextColorCombo = new KColorCombo( this );
67  settings->addWidget( mTextColorCombo, 2, 1 );
68  mTextColorCombo->setEnabled(false);
69 
70  connect( mTextColorCheck, SIGNAL(toggled(bool)),
71  mTextColorCombo, SLOT(setEnabled(bool)) );
72  connect( mTextColorCheck, SIGNAL(stateChanged(int)),
73  this, SLOT(slotEmitChangeCheck()) );
74  connect( mTextColorCombo, SIGNAL(activated(int)),
75  this, SLOT(slotEmitChangeCheck()) );
76 
77  //Third row for text background color
78  mBackgroundColorCheck = new QCheckBox( i18n("Change &background color:"),
79  this );
80  settings->addWidget( mBackgroundColorCheck, 3, 0 );
81 
82  mBackgroundColorCombo = new KColorCombo( this );
83  settings->addWidget( mBackgroundColorCombo, 3, 1 );
84  mBackgroundColorCombo->setEnabled(false);
85 
86  connect( mBackgroundColorCheck, SIGNAL(toggled(bool)),
87  mBackgroundColorCombo, SLOT(setEnabled(bool)) );
88  connect( mBackgroundColorCheck, SIGNAL(stateChanged(int)),
89  this, SLOT(slotEmitChangeCheck()) );
90  connect( mBackgroundColorCombo, SIGNAL(activated(int)),
91  this, SLOT(slotEmitChangeCheck()) );
92 
93  //Fourth for font selection
94  mTextFontCheck = new QCheckBox( i18n("Change fo&nt:"), this );
95  settings->addWidget( mTextFontCheck, 4, 0 );
96 
97  mFontRequester = new KFontRequester( this );
98  settings->addWidget( mFontRequester, 4, 1 );
99  mFontRequester->setEnabled(false);
100 
101  connect( mTextFontCheck, SIGNAL(toggled(bool)),
102  mFontRequester, SLOT(setEnabled(bool)) );
103  connect( mTextFontCheck, SIGNAL(stateChanged(int)),
104  this, SLOT(slotEmitChangeCheck()) );
105  connect( mFontRequester, SIGNAL(fontSelected(QFont)),
106  this, SLOT(slotEmitChangeCheck()) );
107 
108  //Fifth for toolbar icon
109  mIconButton = new KIconButton( this );
110  mIconButton->setIconSize( 16 );
111  mIconButton->setIconType( KIconLoader::NoGroup, KIconLoader::Action );
112  mIconButton->setIcon(KIcon(QLatin1String("mail-tagged")));
113  settings->addWidget( mIconButton, 5, 1 );
114  connect( mIconButton, SIGNAL(iconChanged(QString)),
115  SIGNAL(iconNameChanged(QString)) );
116 
117  QLabel *iconlabel = new QLabel( i18n("Message tag &icon:"),
118  this );
119  iconlabel->setBuddy( mIconButton );
120  settings->addWidget( iconlabel, 5, 0 );
121 
122  //We do not connect the checkbox to icon selector since icons are used in the
123  //menus as well
124  connect( mIconButton, SIGNAL(iconChanged(QString)),
125  this, SLOT(slotEmitChangeCheck()) );
126 
127  //Sixth for shortcut
128  mKeySequenceWidget = new KKeySequenceWidget( this );
129  settings->addWidget( mKeySequenceWidget, 6, 1 );
130  QLabel *sclabel = new QLabel( i18n("Shortc&ut:") , this );
131  sclabel->setBuddy( mKeySequenceWidget );
132  settings->addWidget( sclabel, 6, 0 );
133  if ( !actionCollections.isEmpty() ) {
134  mKeySequenceWidget->setCheckActionCollections( actionCollections );
135  connect( mKeySequenceWidget, SIGNAL(keySequenceChanged(QKeySequence)),
136  this, SLOT(slotEmitChangeCheck()) );
137  }
138  else
139  mKeySequenceWidget->setEnabled(false);
140 
141 
142  //Seventh for Toolbar checkbox
143  mInToolbarCheck = new QCheckBox( i18n("Enable &toolbar button"),
144  this );
145  settings->addWidget( mInToolbarCheck, 7, 0 );
146  connect( mInToolbarCheck, SIGNAL(stateChanged(int)),
147  this, SLOT(slotEmitChangeCheck()) );
148 
149 }
150 
151 TagWidget::~TagWidget()
152 {
153 
154 }
155 
156 void TagWidget::slotEmitChangeCheck()
157 {
158  Q_EMIT changed();
159 }
160 
161 void TagWidget::setTagTextColor(const QColor& color)
162 {
163  mTextColorCheck->setEnabled( true );
164  if ( color.isValid() ) {
165  mTextColorCheck->setChecked( true );
166  mTextColorCombo->setColor( color );
167  } else {
168  mTextColorCheck->setChecked( false );
169  mTextColorCombo->setColor( Qt::white );
170  }
171  mTextColorCombo->setEnabled(mTextColorCheck->isChecked());
172 }
173 
174 void TagWidget::setTagBackgroundColor(const QColor& color)
175 {
176  mBackgroundColorCheck->setEnabled( true );
177  if ( color.isValid() ) {
178  mBackgroundColorCheck->setChecked( true );
179  mBackgroundColorCombo->setColor( color );
180  } else {
181  mBackgroundColorCheck->setChecked( false );
182  mBackgroundColorCombo->setColor( Qt::white );
183  }
184  mBackgroundColorCombo->setEnabled( mBackgroundColorCheck->isChecked() );
185 }
186 
187 void TagWidget::setTagTextFont(const QFont& font)
188 {
189  mTextFontCheck->setEnabled( true );
190  mTextFontCheck->setChecked( ( font != QFont() ) );
191  mFontRequester->setFont( font );
192  mFontRequester->setEnabled( mTextFontCheck->isChecked() );
193 }
194 
195 MailCommon::Tag::SaveFlags TagWidget::saveFlags() const
196 {
197  MailCommon::Tag::SaveFlags saveFlags = 0;
198  if ( mTextColorCheck->isChecked() )
199  saveFlags |= MailCommon::Tag::TextColor;
200  if ( mBackgroundColorCheck->isChecked() )
201  saveFlags |= MailCommon::Tag::BackgroundColor;
202  if ( mTextFontCheck->isChecked() )
203  saveFlags |= MailCommon::Tag::Font;
204 
205  return saveFlags;
206 }
207 
208 void TagWidget::recordTagSettings( MailCommon::Tag::Ptr tag)
209 {
210  tag->textColor = mTextColorCheck->isChecked() ? mTextColorCombo->color() : QColor();
211 
212  tag->backgroundColor = mBackgroundColorCheck->isChecked() ? mBackgroundColorCombo->color() : QColor();
213 
214  tag->textFont = mTextFontCheck->isChecked() ? mFontRequester->font() : QFont();
215 
216  tag->iconName = iconButton()->icon();
217  if (mKeySequenceWidget->isEnabled()) {
218  mKeySequenceWidget->applyStealShortcut();
219  tag->shortcut = KShortcut( mKeySequenceWidget->keySequence() );
220  }
221 
222  tag->inToolbar = mInToolbarCheck->isChecked();
223 }
224 
225 #include "tagwidget.moc"
MailCommon::Tag::Font
Definition: tag.h:50
MailCommon::Tag::TextColor
Definition: tag.h:48
QSharedPointer
Definition: collectiongeneralpage.h:30
MailCommon::TagWidget::TagWidget
TagWidget(const QList< KActionCollection * > &actionCollections, QWidget *parent=0)
Definition: tagwidget.cpp:34
tagwidget.h
QWidget
MailCommon::TagWidget::~TagWidget
~TagWidget()
Definition: tagwidget.cpp:151
MailCommon::TagWidget::recordTagSettings
void recordTagSettings(MailCommon::Tag::Ptr tag)
Definition: tagwidget.cpp:208
MailCommon::TagWidget::iconNameChanged
void iconNameChanged(const QString &)
MailCommon::TagWidget::setTagBackgroundColor
void setTagBackgroundColor(const QColor &color)
Definition: tagwidget.cpp:174
MailCommon::Tag::SaveFlags
QFlags< SaveFlag > SaveFlags
Definition: tag.h:52
MailCommon::TagWidget::setTagTextColor
void setTagTextColor(const QColor &color)
Definition: tagwidget.cpp:161
MailCommon::TagWidget::changed
void changed()
MailCommon::TagWidget::setTagTextFont
void setTagTextFont(const QFont &font)
Definition: tagwidget.cpp:187
MailCommon::Tag::BackgroundColor
Definition: tag.h:49
MailCommon::TagWidget::saveFlags
MailCommon::Tag::SaveFlags saveFlags() const
Definition: tagwidget.cpp:195
MailCommon::TagWidget::iconButton
KIconButton * iconButton()
Definition: tagwidget.h:59
QList
This file is part of the KDE documentation.
Documentation copyright © 1996-2014 The KDE developers.
Generated on Tue Oct 14 2014 22:55:15 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

mailcommon

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

kdepim API Reference

Skip menu "kdepim API Reference"
  • akonadi_next
  • akregator
  • blogilo
  • calendarsupport
  • console
  •   kabcclient
  •   konsolekalendar
  • kaddressbook
  • kalarm
  •   lib
  • kdgantt2
  • kjots
  • kleopatra
  • kmail
  • knode
  • knotes
  • kontact
  • korgac
  • korganizer
  • ktimetracker
  • libkdepim
  • libkleo
  • libkpgp
  • mailcommon
  • messagelist
  • messageviewer

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