on 2ecb97b help sign in
unity8/plugins/IndicatorsClient/indicatorsfactory.cpp
55 lines 1.9 kB history raw
1/*
2 * Copyright (C) 2013 Canonical, Ltd.
3 *
4 * Authors:
5 * Michał Sawicz <michal.sawicz@canonical.com>
6 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; version 3.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program. If not, see <http://www.gnu.org/licenses/>.
18 */
20// local
21#include "indicatorsfactory.h"
23// indicators
24#include "indicators/datetime/indicatorclient_datetime.h"
25#include "indicators/messaging/indicatorclient_messaging.h"
26#include "indicators/network/indicatorclient_network.h"
27#include "indicators/power/indicatorclient_power.h"
28#include "indicators/sound/indicatorclient_sound.h"
30IndicatorsFactory::IndicatorsFactory()
32 registerItem<IndicatorClientDateTime>("indicator-datetime");
33 registerItem<IndicatorClientMessaging>("indicator-messaging");
34 registerItem<IndicatorClientNetwork>("indicator-network");
35 registerItem<IndicatorClientPower>("indicator-power");
36 registerItem<IndicatorClientSound>("indicator-sound");
39IndicatorsFactory::~IndicatorsFactory()
41 qDeleteAll(m_factoryItems);
44template<class TYPE>
45void IndicatorsFactory::registerItem(const QString& indicator)
47 m_factoryItems[indicator] = new IndicatorFactoryItemTyped<TYPE>();
50IndicatorClientInterface::Ptr IndicatorsFactory::create(const QString& indicator, QObject* parent)
52 if (!m_factoryItems.contains(indicator))
53 return IndicatorClientInterface::Ptr();
54 return m_factoryItems[indicator]->create(parent);