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

kmail

  • sources
  • kde-4.14
  • kdepim
  • kmail
  • configuredialog
configureagentswidget.cpp
Go to the documentation of this file.
1 /*
2  Copyright (c) 2013-2015 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 "configureagentswidget.h"
19 #include "configureagents/configureagentlistview.h"
20 
21 #include "agents/sendlateragent/sendlaterutil.h"
22 #include <akonadi/private/xdgbasedirs_p.h>
23 
24 #include <KLocalizedString>
25 #include <KDesktopFile>
26 #include <KDebug>
27 #include <KTextEdit>
28 #include <KGlobal>
29 #include <KConfigGroup>
30 
31 #include <QDBusInterface>
32 #include <QDBusReply>
33 #include <QSplitter>
34 #include <QFile>
35 #include <QDir>
36 #include <QHBoxLayout>
37 
38 
39 ConfigureAgentsWidget::ConfigureAgentsWidget(QWidget *parent)
40  : QWidget(parent)
41 {
42  QHBoxLayout *lay = new QHBoxLayout;
43  mSplitter = new QSplitter;
44  mSplitter->setChildrenCollapsible(false);
45  lay->addWidget(mSplitter);
46 
47  mConfigureAgentListView = new ConfigureAgentListView;
48 
49  mSplitter->addWidget(mConfigureAgentListView);
50  mDescription = new KTextEdit;
51  mDescription->setReadOnly(true);
52  mDescription->enableFindReplace(false);
53  mSplitter->addWidget(mDescription);
54 
55  connect(mConfigureAgentListView, SIGNAL(descriptionChanged(QString)), mDescription, SLOT(setText(QString)));
56  connect(mConfigureAgentListView, SIGNAL(agentChanged()), this, SIGNAL(changed()));
57 
58  setLayout(lay);
59  mAgentPathList = Akonadi::XdgBaseDirs::findAllResourceDirs( "data", QLatin1String( "akonadi/agents" ) );
60  initialize();
61  readConfig();
62 }
63 
64 ConfigureAgentsWidget::~ConfigureAgentsWidget()
65 {
66  writeConfig();
67 }
68 
69 void ConfigureAgentsWidget::readConfig()
70 {
71  KConfigGroup group( KGlobal::config(), "ConfigureAgentsWidget" );
72  QList<int> size;
73  size << 400 << 100;
74  mSplitter->setSizes(group.readEntry( "splitter", size));
75 }
76 
77 void ConfigureAgentsWidget::writeConfig()
78 {
79  KConfigGroup group( KGlobal::config(), "ConfigureAgentsWidget" );
80  group.writeEntry( "splitter", mSplitter->sizes());
81 }
82 
83 void ConfigureAgentsWidget::addInfos(const QString &desktopFile, ConfigureAgentItem &item)
84 {
85  KDesktopFile config(desktopFile);
86  item.setAgentName(config.readName());
87  const QString descriptionStr = QLatin1String("<b>") + i18n("Description:") + QLatin1String("</b><br>") + config.readComment();
88  item.setDescription(descriptionStr);
89 }
90 
91 void ConfigureAgentsWidget::initialize()
92 {
93  QVector<ConfigureAgentItem> lst;
94  createItem(QLatin1String("akonadi_sendlater_agent"), QLatin1String("/SendLaterAgent"), QLatin1String("sendlateragent.desktop"), lst);
95  createItem(QLatin1String("akonadi_archivemail_agent"), QLatin1String("/ArchiveMailAgent"), QLatin1String("archivemailagent.desktop"), lst);
96  createItem(QLatin1String("akonadi_newmailnotifier_agent"), QLatin1String("/NewMailNotifierAgent"), QLatin1String("newmailnotifieragent.desktop"), lst);
97  createItem(QLatin1String("akonadi_followupreminder_agent"), QLatin1String("/FollowUpReminder"), QLatin1String("followupreminder.desktop"), lst);
98  //Add more
99  mConfigureAgentListView->setAgentItems(lst);
100 }
101 
102 void ConfigureAgentsWidget::createItem(const QString &interfaceName, const QString &path, const QString &desktopFileName, QVector<ConfigureAgentItem> &listItem)
103 {
104  Q_FOREACH(const QString &agentPath, mAgentPathList) {
105  QFile file (agentPath + QDir::separator() + desktopFileName);
106  if (file.exists()) {
107  ConfigureAgentItem item;
108  item.setInterfaceName(interfaceName);
109  item.setPath(path);
110  bool failed = false;
111  const bool enabled = agentActivateState(interfaceName, path, failed);
112  item.setChecked(enabled);
113  item.setFailed(failed);
114  addInfos(file.fileName(), item);
115  listItem.append(item);
116  }
117  }
118 }
119 
120 bool ConfigureAgentsWidget::agentActivateState(const QString &interfaceName, const QString &pathName, bool &failed)
121 {
122  failed = false;
123  QDBusInterface interface( QLatin1String("org.freedesktop.Akonadi.Agent.") + interfaceName, pathName );
124  if (interface.isValid()) {
125  QDBusReply<bool> enabled = interface.call(QLatin1String("enabledAgent"));
126  if (enabled.isValid()) {
127  return enabled;
128  } else {
129  kDebug()<<interfaceName << "doesn't have enabledAgent function";
130  failed = true;
131  return false;
132  }
133  } else {
134  failed = true;
135  kDebug()<<interfaceName << "does not exist ";
136  }
137  return false;
138 }
139 
140 void ConfigureAgentsWidget::save()
141 {
142  mConfigureAgentListView->save();
143  SendLater::SendLaterUtil::forceReparseConfiguration();
144 }
145 
146 QString ConfigureAgentsWidget::helpAnchor() const
147 {
148  return QString();
149 }
150 
151 void ConfigureAgentsWidget::doLoadFromGlobalSettings()
152 {
153  //initialize();
154 }
155 
156 void ConfigureAgentsWidget::doResetToDefaultsOther()
157 {
158  mConfigureAgentListView->resetToDefault();
159 }
160 
161 
ConfigureAgentItem::setPath
void setPath(const QString &path)
Definition: configureagentitem.cpp:58
QWidget
QSplitter::setSizes
void setSizes(const QList< int > &list)
ConfigureAgentsWidget::doResetToDefaultsOther
void doResetToDefaultsOther()
Definition: configureagentswidget.cpp:156
QVector::append
void append(const T &value)
QDBusReply
ConfigureAgentsWidget::ConfigureAgentsWidget
ConfigureAgentsWidget(QWidget *parent=0)
Definition: configureagentswidget.cpp:39
ConfigureAgentListView
Definition: configureagentlistview.h:23
QHBoxLayout
QDBusReply::isValid
bool isValid() const
QDir::separator
QChar separator()
ConfigureAgentsWidget::doLoadFromGlobalSettings
void doLoadFromGlobalSettings()
Definition: configureagentswidget.cpp:151
QFile
ConfigureAgentsWidget::helpAnchor
QString helpAnchor() const
Definition: configureagentswidget.cpp:146
QSplitter::addWidget
void addWidget(QWidget *widget)
ConfigureAgentListView::setAgentItems
void setAgentItems(const QVector< ConfigureAgentItem > &lst)
Definition: configureagentlistview.cpp:49
QWidget::size
QSize size() const
QWidget::enabled
enabled
QBoxLayout::addWidget
void addWidget(QWidget *widget, int stretch, QFlags< Qt::AlignmentFlag > alignment)
QSplitter::sizes
QList< int > sizes() const
QWidget::setLayout
void setLayout(QLayout *layout)
QSplitter::setChildrenCollapsible
void setChildrenCollapsible(bool)
ConfigureAgentItem
Definition: configureagentitem.h:23
ConfigureAgentListView::resetToDefault
void resetToDefault()
Definition: configureagentlistview.cpp:114
ConfigureAgentItem::setChecked
void setChecked(bool checked)
Definition: configureagentitem.cpp:78
configureagentswidget.h
ConfigureAgentItem::setInterfaceName
void setInterfaceName(const QString &interfaceName)
Definition: configureagentitem.cpp:68
ConfigureAgentsWidget::save
void save()
Definition: configureagentswidget.cpp:140
QString
QList
configureagentlistview.h
ConfigureAgentItem::setFailed
void setFailed(bool failed)
Definition: configureagentitem.cpp:88
QDBusInterface
ConfigureAgentListView::save
void save()
Definition: configureagentlistview.cpp:99
QSplitter
ConfigureAgentItem::setAgentName
void setAgentName(const QString &agentName)
Definition: configureagentitem.cpp:38
QVector< ConfigureAgentItem >
ConfigureAgentItem::setDescription
void setDescription(const QString &description)
Definition: configureagentitem.cpp:48
QLatin1String
ConfigureAgentsWidget::changed
void changed()
QObject::connect
bool connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type)
ConfigureAgentsWidget::~ConfigureAgentsWidget
~ConfigureAgentsWidget()
Definition: configureagentswidget.cpp:64
KTextEdit
This file is part of the KDE documentation.
Documentation copyright © 1996-2020 The KDE developers.
Generated on Mon Jun 22 2020 13:34:32 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

kmail

Skip menu "kmail"
  • 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
  • pimprint

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