~timo-jyrinki/ubuntu/trusty/maliit-framework/fix_qt52

« back to all changes in this revision

Viewing changes to maliit-settings/settingsmanager.cpp

  • Committer: Package Import Robot
  • Author(s): Ricardo Salveti de Araujo, Sergio Schvezov, Ricardo Salveti de Araujo
  • Date: 2013-07-23 19:47:04 UTC
  • mfrom: (1.1.2) (1.2.1 experimental)
  • Revision ID: package-import@ubuntu.com-20130723194704-1lsy1kmlda069cea
Tags: 0.99.0+git20130615+97e8335-0ubuntu1
[ Sergio Schvezov ]
* New build from HEAD 97e8335.
* Packaging import from lp:phablet-extras/maliit-framework.

[ Ricardo Salveti de Araujo ]
* debian/control: adding vcs and fixing dependencies
* General package cleanup

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/* * This file is part of Maliit framework *
2
 
 *
3
 
 * Copyright (C) 2012 Mattia Barbon <mattia@develer.com>
4
 
 *
5
 
 * This library is free software; you can redistribute it and/or
6
 
 * modify it under the terms of the GNU Lesser General Public
7
 
 * License version 2.1 as published by the Free Software Foundation
8
 
 * and appearing in the file LICENSE.LGPL included in the packaging
9
 
 * of this file.
10
 
 */
11
 
 
12
 
#include "settingsmanager.h"
13
 
 
14
 
#include <maliit/settingdata.h>
15
 
#include <maliit/attributeextension.h>
16
 
#include "mimserverconnection.h"
17
 
#include "connectionfactory.h"
18
 
#include "pluginsettings.h"
19
 
 
20
 
 
21
 
namespace Maliit {
22
 
 
23
 
struct SettingsManagerPrivate
24
 
{
25
 
    QSharedPointer<AttributeExtension> settings_list_changed;
26
 
    QSharedPointer<MImServerConnection> connection;
27
 
};
28
 
 
29
 
 
30
 
QString SettingsManager::preferred_description_locale = "en";
31
 
 
32
 
void SettingsManager::setPreferredDescriptionLocale(const QString &localeName)
33
 
{
34
 
    preferred_description_locale = localeName;
35
 
}
36
 
 
37
 
QString SettingsManager::preferredDescriptionLocale()
38
 
{
39
 
    return preferred_description_locale;
40
 
}
41
 
 
42
 
SettingsManager *SettingsManager::create(QObject *parent)
43
 
{
44
 
    return new SettingsManager(createServerConnection(qgetenv("QT_IM_MODULE")), parent);
45
 
}
46
 
 
47
 
SettingsManager::SettingsManager(QSharedPointer<MImServerConnection> connection,
48
 
                                 QObject *parent) :
49
 
    QObject(parent),
50
 
    d_ptr(new SettingsManagerPrivate)
51
 
{
52
 
    Q_D(SettingsManager);
53
 
 
54
 
    d->connection = connection;
55
 
 
56
 
    if (d->connection) {
57
 
        connect(d->connection.data(), SIGNAL(pluginSettingsReceived(QList<MImPluginSettingsInfo>)),
58
 
                this, SLOT(onPluginSettingsReceived(QList<MImPluginSettingsInfo>)));
59
 
        connect(d->connection.data(), SIGNAL(connected()), this, SIGNAL(connected()));
60
 
        connect(d->connection.data(), SIGNAL(disconnected()), this, SIGNAL(disconnected()));
61
 
    } else {
62
 
        qCritical() << __PRETTY_FUNCTION__ << "No connection established";
63
 
    }
64
 
}
65
 
 
66
 
SettingsManager::~SettingsManager()
67
 
{
68
 
}
69
 
 
70
 
void SettingsManager::loadPluginSettings() const
71
 
{
72
 
    Q_D(const SettingsManager);
73
 
 
74
 
    if (d->connection) {
75
 
        d->connection->loadPluginSettings(preferredDescriptionLocale());
76
 
    } else {
77
 
        qCritical() << "Could not load plugin settings - no connection to server";
78
 
    }
79
 
}
80
 
 
81
 
void SettingsManager::onPluginSettingsReceived(const QList<MImPluginSettingsInfo> &settings)
82
 
{
83
 
    Q_D(SettingsManager);
84
 
 
85
 
    QList<QSharedPointer<PluginSettings> > result;
86
 
    QHash<int, QSharedPointer<AttributeExtension> > extensions;
87
 
 
88
 
    Q_FOREACH (const MImPluginSettingsInfo &plugin_info, settings)
89
 
    {
90
 
        QSharedPointer<AttributeExtension> extension;
91
 
 
92
 
        // special case for the attribute extension used to monitor changes in the settings list
93
 
        if (plugin_info.plugin_name == "@settings") {
94
 
            d->settings_list_changed = QSharedPointer<AttributeExtension>(AttributeExtension::create(plugin_info.extension_id));
95
 
 
96
 
            connect(d->settings_list_changed.data(), SIGNAL(extendedAttributeChanged(QString,QVariant)),
97
 
                    this, SLOT(loadPluginSettings()));
98
 
 
99
 
            continue;
100
 
        }
101
 
 
102
 
        if (extensions.contains(plugin_info.extension_id))
103
 
            extension = extensions[plugin_info.extension_id];
104
 
        else
105
 
            extension = extensions[plugin_info.extension_id] =
106
 
                AttributeExtension::create(plugin_info.extension_id);
107
 
 
108
 
        result.append(QSharedPointer<PluginSettings>(new PluginSettings(plugin_info, extension)));
109
 
    }
110
 
 
111
 
    Q_EMIT pluginSettingsReceived(result);
112
 
}
113
 
 
114
 
}