• 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
  • widgets
favoritecollectionwidget.cpp
Go to the documentation of this file.
1 /* -*- mode: C++; c-file-style: "gnu" -*-
2 
3  Copyright (c) 2012-2013 Montel Laurent <montel@kde.org>
4 
5  This program is free software; you can redistribute it and/or modify it
6  under the terms of the GNU General Public License, version 2, as
7  published by the Free Software Foundation.
8 
9  This program is distributed in the hope that it will be useful, but
10  WITHOUT ANY WARRANTY; without even the implied warranty of
11  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12  General Public License for more details.
13 
14  You should have received a copy of the GNU General Public License along
15  with this program; if not, write to the Free Software Foundation, Inc.,
16  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
17 */
18 
19 #include "favoritecollectionwidget.h"
20 #include "kernel/mailkernel.h"
21 #include "mailcommonsettings_base.h"
22 
23 #include <messagecore/settings/globalsettings.h>
24 
25 #include <KDE/KGlobalSettings>
26 #include <KDE/KLocale>
27 #include <KDE/KXMLGUIClient>
28 #include <KActionMenu>
29 #include <KActionCollection>
30 
31 #include <QPainter>
32 
33 using namespace MailCommon;
34 
35 class FavoriteCollectionWidget::Private
36 {
37 public:
38  Private()
39  : listMode(0),
40  iconMode(0)
41  {
42  }
43  QColor textColor;
44  QAction *listMode;
45  QAction *iconMode;
46 };
47 
48 FavoriteCollectionWidget::FavoriteCollectionWidget( KXMLGUIClient *xmlGuiClient, QWidget *parent )
49  : Akonadi::EntityListView( xmlGuiClient, parent ), d( new Private )
50 {
51  setFocusPolicy( Qt::NoFocus );
52 
53  connect( KGlobalSettings::self(), SIGNAL(kdisplayFontChanged()),
54  this, SLOT(slotGeneralFontChanged()));
55  connect( KGlobalSettings::self(), SIGNAL(kdisplayPaletteChanged()),
56  this, SLOT(slotGeneralPaletteChanged()));
57 
58  readConfig();
59 
60  createMenu(xmlGuiClient->actionCollection());
61 }
62 
63 FavoriteCollectionWidget::~FavoriteCollectionWidget()
64 {
65  delete d;
66 }
67 
68 void FavoriteCollectionWidget::updateMode()
69 {
70  switch(viewMode()) {
71  case ListMode:
72  d->listMode->setChecked( true );
73  d->iconMode->setChecked( false );
74  break;
75  case IconMode:
76  d->listMode->setChecked( false );
77  d->iconMode->setChecked( true );
78  break;
79  }
80 }
81 
82 void FavoriteCollectionWidget::createMenu(KActionCollection *ac)
83 {
84  KActionMenu *iconSizeMenu = new KActionMenu(i18n("Icon size"), this);
85  ac->addAction(QLatin1String("favorite_icon_size"), iconSizeMenu);
86 
87  static int icon_sizes[] = { 16, 22, 32 /*, 48, 64, 128 */ };
88 
89  QActionGroup *grp = new QActionGroup( iconSizeMenu );
90  const int nbElement( (int)( sizeof( icon_sizes ) / sizeof( int ) ) );
91  QAction *act = 0;
92  for ( int i = 0; i < nbElement; ++i ) {
93  act = new QAction(QString::fromLatin1( "%1x%2" ).arg( icon_sizes[ i ] ).arg( icon_sizes[ i ] ), iconSizeMenu);
94  iconSizeMenu->addAction( act );
95  act->setCheckable( true );
96  grp->addAction( act );
97  if ( iconSize().width() == icon_sizes[ i ] ) {
98  act->setChecked( true );
99  }
100  act->setData( QVariant( icon_sizes[ i ] ) );
101  connect( act, SIGNAL(triggered(bool)),
102  SLOT(slotChangeIconSize(bool)) );
103  }
104 
105  KActionMenu *modeFavoriteMenu = new KActionMenu(i18n("Mode"), this);
106  ac->addAction(QLatin1String("favorite_mode"), modeFavoriteMenu);
107 
108  grp = new QActionGroup( modeFavoriteMenu );
109  d->listMode = new QAction(i18n("List Mode"), modeFavoriteMenu);
110  modeFavoriteMenu->addAction( d->listMode );
111  d->listMode->setCheckable( true );
112  grp->addAction( d->listMode );
113  if ( viewMode() == ListMode) {
114  d->listMode->setChecked( true );
115  }
116  d->listMode->setData( QVariant( MailCommon::MailCommonSettings::EnumFavoriteCollectionViewMode::ListMode ) );
117  connect( d->listMode, SIGNAL(triggered(bool)),
118  SLOT(slotChangeMode(bool)) );
119 
120  d->iconMode = new QAction(i18n("Icon Mode"), modeFavoriteMenu);
121  modeFavoriteMenu->addAction( d->iconMode );
122  grp->addAction( d->iconMode );
123  d->iconMode->setCheckable( true );
124  if ( viewMode() == IconMode ) {
125  d->iconMode->setChecked( true );
126  }
127  d->iconMode->setData( QVariant( MailCommon::MailCommonSettings::EnumFavoriteCollectionViewMode::IconMode ) );
128  connect( d->iconMode, SIGNAL(triggered(bool)),
129  SLOT(slotChangeMode(bool)) );
130 }
131 
132 void FavoriteCollectionWidget::slotChangeMode(bool)
133 {
134  QAction *act = dynamic_cast< QAction * >( sender() );
135  if ( !act ) {
136  return;
137  }
138 
139  QVariant data = act->data();
140 
141  bool ok;
142  const int mode = data.toInt( &ok );
143  if ( !ok ) {
144  return;
145  }
146 
147  switch(mode) {
148  case MailCommon::MailCommonSettings::EnumFavoriteCollectionViewMode::IconMode:
149  setViewMode(IconMode);
150  break;
151  case MailCommon::MailCommonSettings::EnumFavoriteCollectionViewMode::ListMode:
152  setViewMode(ListMode);
153  break;
154  }
155 
156  MailCommon::MailCommonSettings::self()->setFavoriteCollectionViewMode(mode);
157  MailCommon::MailCommonSettings::self()->writeConfig();
158 }
159 
160 void FavoriteCollectionWidget::slotChangeIconSize(bool )
161 {
162  QAction *act = dynamic_cast< QAction * >( sender() );
163  if ( !act ) {
164  return;
165  }
166 
167  QVariant data = act->data();
168 
169  bool ok;
170  const int size = data.toInt( &ok );
171  if ( !ok ) {
172  return;
173  }
174 
175  const QSize newIconSize( QSize( size, size ) );
176  if ( newIconSize == iconSize() ) {
177  return;
178  }
179  setIconSize( newIconSize );
180  MailCommon::MailCommonSettings::self()->setIconSize(iconSize().width());
181  MailCommon::MailCommonSettings::self()->writeConfig();
182 }
183 
184 void FavoriteCollectionWidget::slotGeneralPaletteChanged()
185 {
186  const QPalette palette = viewport()->palette();
187  QColor color = palette.text().color();
188  color.setAlpha( 128 );
189  d->textColor = color;
190 }
191 
192 void FavoriteCollectionWidget::slotGeneralFontChanged()
193 {
194  // Custom/System font support
195  if ( MessageCore::GlobalSettings::self()->useDefaultFonts() ) {
196  setFont( KGlobalSettings::generalFont() );
197  }
198 }
199 
200 void FavoriteCollectionWidget::readConfig()
201 {
202  // Custom/System font support
203  if (!MessageCore::GlobalSettings::self()->useDefaultFonts() ) {
204  KConfigGroup fontConfig( KernelIf->config(), "Fonts" );
205  setFont( fontConfig.readEntry( "folder-font", KGlobalSettings::generalFont() ) );
206  } else {
207  setFont( KGlobalSettings::generalFont() );
208  }
209 
210  int iIconSize = MailCommon::MailCommonSettings::self()->iconSize();
211  if ( iIconSize < 16 || iIconSize > 32 ) {
212  iIconSize = 22;
213  }
214  setIconSize( QSize( iIconSize, iIconSize ) );
215 }
216 
217 void FavoriteCollectionWidget::paintEvent( QPaintEvent *event )
218 {
219  if ( !model() || model()->rowCount() == 0 ) {
220  QPainter p( viewport() );
221 
222  QFont font = p.font();
223  font.setItalic( true );
224  p.setFont( font );
225 
226  if (!d->textColor.isValid()) {
227  slotGeneralPaletteChanged();
228  }
229  p.setPen( d->textColor );
230 
231  p.drawText( QRect( 0, 0, width(), height() ), Qt::AlignCenter, i18n( "Drop your favorite folders here..." ) );
232  } else {
233  Akonadi::EntityListView::paintEvent( event );
234  }
235 }
236 
237 #include "favoritecollectionwidget.moc"
MailCommon::FavoriteCollectionWidget::slotGeneralPaletteChanged
void slotGeneralPaletteChanged()
Definition: favoritecollectionwidget.cpp:184
KernelIf
#define KernelIf
Definition: mailkernel.h:186
MailCommon::MailCommonSettings::iconSize
static int iconSize()
Get IconSize.
Definition: mailcommonsettings_base.h:39
mailcommonsettings_base.h
MailCommon::MailCommonSettings::EnumFavoriteCollectionViewMode::IconMode
Definition: mailcommonsettings_base.h:19
QWidget
MailCommon::FavoriteCollectionWidget::slotChangeIconSize
void slotChangeIconSize(bool)
Definition: favoritecollectionwidget.cpp:160
MailCommon::FavoriteCollectionWidget::readConfig
void readConfig()
Definition: favoritecollectionwidget.cpp:200
MailCommon::FavoriteCollectionWidget::~FavoriteCollectionWidget
~FavoriteCollectionWidget()
Definition: favoritecollectionwidget.cpp:63
favoritecollectionwidget.h
MailCommon::FavoriteCollectionWidget::FavoriteCollectionWidget
FavoriteCollectionWidget(KXMLGUIClient *xmlGuiClient, QWidget *parent=0)
Definition: favoritecollectionwidget.cpp:48
MailCommon::FavoriteCollectionWidget::slotChangeMode
void slotChangeMode(bool)
Definition: favoritecollectionwidget.cpp:132
MailCommon::FavoriteCollectionWidget::updateMode
void updateMode()
Definition: favoritecollectionwidget.cpp:68
MailCommon::MailCommonSettings::setIconSize
static void setIconSize(int v)
Set IconSize.
Definition: mailcommonsettings_base.h:29
MailCommon::MailCommonSettings::EnumFavoriteCollectionViewMode::ListMode
Definition: mailcommonsettings_base.h:19
mailkernel.h
MailCommon::FavoriteCollectionWidget::slotGeneralFontChanged
void slotGeneralFontChanged()
Definition: favoritecollectionwidget.cpp:192
MailCommon::FavoriteCollectionWidget::paintEvent
void paintEvent(QPaintEvent *)
Definition: favoritecollectionwidget.cpp:217
MailCommon::MailCommonSettings::setFavoriteCollectionViewMode
static void setFavoriteCollectionViewMode(int v)
Set Display Mode of the Favorite Collections View.
Definition: mailcommonsettings_base.h:83
MailCommon::MailCommonSettings::self
static MailCommonSettings * self()
Definition: mailcommonsettings_base.cpp:25
This file is part of the KDE documentation.
Documentation copyright © 1996-2014 The KDE developers.
Generated on Tue Oct 14 2014 22:55:14 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