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

knotes

  • sources
  • kde-4.12
  • kdepim
  • knotes
  • print
knoteprintselectthemecombobox.cpp
Go to the documentation of this file.
1 /*
2  Copyright (c) 2013 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 "knoteprintselectthemecombobox.h"
19 #include "knotesglobalconfig.h"
20 
21 #include <KStandardDirs>
22 #include <KConfigGroup>
23 #include <KConfig>
24 
25 #include <QDirIterator>
26 #include <QDebug>
27 
28 KNotePrintSelectThemeComboBox::KNotePrintSelectThemeComboBox(QWidget *parent)
29  : QComboBox(parent)
30 {
31  loadThemes();
32 }
33 
34 KNotePrintSelectThemeComboBox::~KNotePrintSelectThemeComboBox()
35 {
36 
37 }
38 
39 void KNotePrintSelectThemeComboBox::loadThemes()
40 {
41  clear();
42  const QString defaultTheme = KNotesGlobalConfig::self()->theme();
43 
44  const QString relativePath = QLatin1String("knotes/print/themes/");
45  QStringList themesDirectories = KGlobal::dirs()->findDirs("data", relativePath);
46  if (themesDirectories.count() < 2) {
47  //Make sure to add local directory
48  const QString localDirectory = KStandardDirs::locateLocal("data", relativePath);
49  if (!themesDirectories.contains(localDirectory)) {
50  themesDirectories.append(localDirectory);
51  }
52  }
53 
54  int index = 0;
55  int themeIndex = 0;
56  Q_FOREACH (const QString &directory, themesDirectories) {
57  QDirIterator dirIt( directory, QStringList(), QDir::AllDirs | QDir::NoDotAndDotDot );
58  QStringList alreadyLoadedThemeName;
59  while ( dirIt.hasNext() ) {
60  dirIt.next();
61  const QString themeInfoFile = dirIt.filePath() + QDir::separator() + QLatin1String("theme.desktop");
62  KConfig config( themeInfoFile );
63  KConfigGroup group( &config, QLatin1String( "Desktop Entry" ) );
64  QString name = group.readEntry( "Name", QString() );
65  if (name.isEmpty()) {
66  continue;
67  }
68  if (alreadyLoadedThemeName.contains(name)) {
69  int i = 2;
70  const QString originalName(name);
71  while (alreadyLoadedThemeName.contains(name)) {
72  name = originalName + QString::fromLatin1(" (%1)").arg(i);
73  ++i;
74  }
75  }
76  const QString printThemePath(dirIt.filePath() + QDir::separator());
77  if (!printThemePath.isEmpty()) {
78  alreadyLoadedThemeName << name;
79  if (defaultTheme == printThemePath) {
80  themeIndex = index;
81  }
82  addItem(name, printThemePath);
83  ++index;
84  }
85  }
86  }
87  setCurrentIndex(themeIndex);
88 }
89 
90 QString KNotePrintSelectThemeComboBox::selectedTheme() const
91 {
92  return itemData(currentIndex()).toString();
93 }
94 
95 
96 #include "knoteprintselectthemecombobox.moc"
KNotePrintSelectThemeComboBox::selectedTheme
QString selectedTheme() const
Definition: knoteprintselectthemecombobox.cpp:90
QWidget
KNotePrintSelectThemeComboBox::loadThemes
void loadThemes()
Definition: knoteprintselectthemecombobox.cpp:39
KNotePrintSelectThemeComboBox::KNotePrintSelectThemeComboBox
KNotePrintSelectThemeComboBox(QWidget *parent=0)
Definition: knoteprintselectthemecombobox.cpp:28
knoteprintselectthemecombobox.h
QComboBox
KNotePrintSelectThemeComboBox::~KNotePrintSelectThemeComboBox
~KNotePrintSelectThemeComboBox()
Definition: knoteprintselectthemecombobox.cpp:34
This file is part of the KDE documentation.
Documentation copyright © 1996-2014 The KDE developers.
Generated on Tue Oct 14 2014 22:56:33 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

knotes

Skip menu "knotes"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members

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