/* * Copyright 2015 Canonical Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program. If not, see . * * Authors: * Mirco Mueller */ #include "MockNotification.h" #include struct MockNotificationPrivate { int id; QString summary; QString body; int value; MockNotification::Type type; QString icon; QString secondaryIcon; QStringList actions; ActionModel* actionsModel; QVariantMap hints; bool fullscreen = false; }; MockNotification::MockNotification(QObject *parent) : QObject(parent), p(new MockNotificationPrivate()) { p->actionsModel = new ActionModel(); } MockNotification::~MockNotification() { delete p->actionsModel; } QString MockNotification::getSummary() const { return p->summary; } void MockNotification::setSummary(const QString &summary) { if(p->summary != summary) { p->summary = summary; Q_EMIT summaryChanged(p->summary); Q_EMIT dataChanged(p->id); } } QString MockNotification::getBody() const { return p->body; } void MockNotification::setBody(const QString &body) { if(p->body != body) { p->body = body; Q_EMIT bodyChanged(p->body); Q_EMIT dataChanged(p->id); } } int MockNotification::getID() const { return p->id; } void MockNotification::setID(const int id) { p->id = id; } int MockNotification::getValue() const { return p->value; } void MockNotification::setValue(int value) { if(p->value != value) { p->value = value; Q_EMIT valueChanged(p->value); Q_EMIT dataChanged(p->id); } } QString MockNotification::getIcon() const { return p->icon; } void MockNotification::setIcon(const QString &icon) { if (icon.startsWith(" ") || icon.size() == 0) { p->icon = nullptr; } else { p->icon = icon; if (icon.indexOf("/") == -1) { p->icon.prepend("image://theme/"); } } Q_EMIT iconChanged(p->icon); Q_EMIT dataChanged(p->id); } QString MockNotification::getSecondaryIcon() const { return p->secondaryIcon; } void MockNotification::setSecondaryIcon(const QString &secondaryIcon) { if (secondaryIcon.startsWith(" ") || secondaryIcon.size() == 0) { p->secondaryIcon = nullptr; } else { p->secondaryIcon = secondaryIcon; if (secondaryIcon.indexOf("/") == -1) { p->secondaryIcon.prepend("image://theme/"); } } Q_EMIT secondaryIconChanged(p->secondaryIcon); Q_EMIT dataChanged(p->id); } MockNotification::Type MockNotification::getType() const { return p->type; } void MockNotification::setType(Type type) { if(p->type != type) { p->type = type; Q_EMIT typeChanged(p->type); } } ActionModel* MockNotification::getActions() const { return p->actionsModel; } QStringList MockNotification::rawActions() const { return p->actions; } void MockNotification::setActions(const QStringList &actions) { if(p->actions != actions) { p->actions = actions; Q_EMIT actionsChanged(p->actions); for (int i = 0; i < p->actions.size(); i += 2) { p->actionsModel->append(p->actions[i], p->actions[i+1]); } } } QVariantMap MockNotification::getHints() const { return p->hints; } void MockNotification::setHints(const QVariantMap& hints) { if (p->hints != hints) { p->hints = hints; Q_EMIT hintsChanged(p->hints); } } void MockNotification::invokeAction(const QString &action) { for(int i=0; iactions.size(); i++) { if(p->actions[i] == action) { Q_EMIT actionInvoked(action); qDebug() << "Info: invoked action" << action; return; } } fprintf(stderr, "Error: tried to invoke action not in actionList.\n"); } void MockNotification::close() { Q_EMIT completed(p->id); } bool MockNotification::fullscreen() const { return p->fullscreen; } void MockNotification::setFullscreen(bool fullscreen) { if (p->fullscreen == fullscreen) return; p->fullscreen = fullscreen; Q_EMIT fullscreenChanged(fullscreen); }