Changes: Consistently rename classes
[qtcontacts-tracker:hasselmms-qtcontacts-tracker.git] / src / plugin / factory.cpp
1 /*********************************************************************************
2  ** This file is part of QtContacts tracker storage plugin
3  **
4  ** Copyright (c) 2009-2011 Nokia Corporation and/or its subsidiary(-ies).
5  **
6  ** Contact:  Nokia Corporation (info@qt.nokia.com)
7  **
8  ** GNU Lesser General Public License Usage
9  ** This file may be used under the terms of the GNU Lesser General Public License
10  ** version 2.1 as published by the Free Software Foundation and appearing in the
11  ** file LICENSE.LGPL included in the packaging of this file.  Please review the
12  ** following information to ensure the GNU Lesser General Public License version
13  ** 2.1 requirements will be met:
14  ** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
15  **
16  ** In addition, as a special exception, Nokia gives you certain additional rights.
17  ** These rights are described in the Nokia Qt LGPL Exception version 1.1, included
18  ** in the file LGPL_EXCEPTION.txt in this package.
19  **
20  ** Other Usage
21  ** Alternatively, this file may be used in accordance with the terms and
22  ** conditions contained in a signed written agreement between you and Nokia.
23  *********************************************************************************/
24
25 #include "factory.h"
26
27 #include <dao/support.h>
28 #include <engine/contactmanagerengine.h>
29 #include <lib/logger.h>
30
31 ////////////////////////////////////////////////////////////////////////////////////////////////////
32
33 QctContactManagerEngineV1::QctContactManagerEngineV1(const QMap<QString, QString> &parameters,
34                                                      const QString &managerName,
35                                                      int interfaceVersion,
36                                                      QObject *parent)
37     : m_impl(new QctContactManagerEngine(parameters, managerName, interfaceVersion))
38 {
39     setParent(parent);
40 }
41
42 ////////////////////////////////////////////////////////////////////////////////////////////////////
43
44 QctEngineFactory::QctEngineFactory()
45 {
46     const QString banner =
47             QString::fromLatin1(PACKAGE ": initializing " PACKAGE " " VERSION " for %2 [%1]").
48             arg(QString::number(QCoreApplication::applicationPid()),
49                 QCoreApplication::applicationFilePath());
50
51     qDebug(qPrintable(banner));
52 }
53
54 QctEngineFactory::~QctEngineFactory()
55 {
56 }
57
58 ////////////////////////////////////////////////////////////////////////////////////////////////////
59
60 static int findInterfaceVersion(const QMap<QString, QString> &parameters)
61 {
62     typedef QMap<QString, QString>::ConstIterator Iterator;
63     const Iterator it = parameters.find(QLatin1String(QTCONTACTS_IMPLEMENTATION_VERSION_NAME));
64     int interfaceVersion = -1;
65
66     if (it != parameters.end()) {
67         bool ok = false;
68         interfaceVersion = it->toInt(&ok);
69
70         if (not ok) {
71             qctWarn("Malformed contact manager interface version");
72             return 0;
73         }
74     }
75
76     return interfaceVersion;
77 }
78
79 QContactManagerEngine *
80 QctEngineFactory::engine(const QMap<QString, QString> &parameters,
81                          QContactManager::Error *error)
82 {
83     const int interfaceVersion = findInterfaceVersion(parameters);
84
85     switch(interfaceVersion) {
86     case 1:
87         qctPropagate(QContactManager::NoError, error);
88         return new QctContactManagerEngineV1(parameters, managerName(), interfaceVersion);
89
90     case 2: case -1:
91         qctPropagate(QContactManager::NoError, error);
92         return new QctContactManagerEngine(parameters, managerName(), interfaceVersion);
93
94     default:
95         qctPropagate(QContactManager::NotSupportedError, error);
96         qctWarn(QString::fromLatin1("Engine interface version %1 is not supported").
97                 arg(interfaceVersion));
98         return 0;
99     }
100 }
101
102 QString
103 QctEngineFactory::managerName() const
104 {
105     return QLatin1String("tracker");
106 }
107
108 QList<int>
109 QctEngineFactory::supportedImplementationVersions() const
110 {
111     return QList<int>() << 1 << 2;
112 }
113
114 ////////////////////////////////////////////////////////////////////////////////////////////////////
115
116 Q_EXPORT_PLUGIN2(qtcontacts_tracker, QctEngineFactory)