/*
* Copyright (C) 2017 Canonical, Ltd.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
#ifndef UNITYAPPLICATIONMOCKS_H
#define UNITYAPPLICATIONMOCKS_H
#include
#include
#include
#include
// from tests/mocks
#include
using namespace unity::shell::application;
class MirSurface : public MirSurfaceInterface
{
Q_OBJECT
public:
Mir::Type type() const override { return m_type; }
QString name() const override { return QString("foo"); }
QString persistentId() const override { return QString("a-b-c-my-id"); }
QString appId() const override { return QString(); }
QPoint position() const override { return QPoint(); }
QSize size() const override { return QSize(); }
void resize(int, int) override {}
void resize(const QSize &) override {}
Mir::State state() const override { return m_state; }
bool live() const override { return m_live; }
bool visible() const override { return true; }
Mir::OrientationAngle orientationAngle() const override { return Mir::Angle0; }
void setOrientationAngle(Mir::OrientationAngle) override {}
int minimumWidth() const override { return 0; }
int minimumHeight() const override { return 0; }
int maximumWidth() const override { return 0; }
int maximumHeight() const override { return 0; }
int widthIncrement() const override { return 0; }
int heightIncrement() const override { return 0; }
void setKeymap(const QString &) override {}
QString keymap() const override { return QString(); }
Mir::ShellChrome shellChrome() const override { return Mir::NormalChrome; }
bool focused() const override { return true; }
QRect inputBounds() const override { return QRect(); }
bool confinesMousePointer() const override { return false; }
bool allowClientResize() const override { return true; }
void setAllowClientResize(bool) override {}
QPoint requestedPosition() const override { return QPoint(); }
void setRequestedPosition(const QPoint &) override {}
MirSurfaceInterface* parentSurface() const override { return nullptr; }
unity::shell::application::MirSurfaceListInterface* childSurfaceList() const override { return nullptr; }
void close() override {}
void activate() override {}
public Q_SLOTS:
void requestState(Mir::State value) override
{
if (m_state != value) {
m_state = value;
Q_EMIT stateChanged(m_state);
}
}
public:
Mir::Type m_type { Mir::NormalType };
Mir::State m_state { Mir::RestoredState };
bool m_live { true };
};
class SurfaceManager : public SurfaceManagerInterface
{
Q_OBJECT
public:
void raise(MirSurfaceInterface *) override {}
void activate(MirSurfaceInterface *) override {}
};
class Application : public ApplicationInfoInterface
{
Q_OBJECT
public:
Application(QString appId)
: ApplicationInfoInterface(appId, nullptr)
, m_appId(std::move(appId))
, m_state(Starting)
, m_requestedState(RequestedRunning)
{
}
void close() override {}
QString appId() const override { return m_appId;}
QString name() const override { return "foo"; }
QString comment() const override { return "bar"; }
QUrl icon() const override { return QUrl(); }
State state() const override { return m_state; }
RequestedState requestedState() const override { return m_requestedState; }
void setRequestedState(RequestedState value) override
{
if (value != m_requestedState) {
m_requestedState = value;
Q_EMIT requestedStateChanged(value);
}
}
bool focused() const override { return false; }
QString splashTitle() const override { return QString(); }
QUrl splashImage() const override { return QUrl(); }
bool splashShowHeader() const override { return false; }
QColor splashColor() const override { return QColor(); }
QColor splashColorHeader() const override { return QColor(); }
QColor splashColorFooter() const override { return QColor(); }
Qt::ScreenOrientations supportedOrientations() const override { return Qt::LandscapeOrientation; }
bool rotatesWindowContents() const override { return false; }
bool isTouchApp() const override { return false; }
bool exemptFromLifecycle() const override { return false; }
void setExemptFromLifecycle(bool) override {}
QSize initialSurfaceSize() const override { return QSize(); }
void setInitialSurfaceSize(const QSize &) override {}
MirSurfaceListInterface* surfaceList() const override { return &m_surfaceList; }
MirSurfaceListInterface* promptSurfaceList() const override { return nullptr; }
int surfaceCount() const override { return 0; }
QString m_appId;
State m_state;
RequestedState m_requestedState;
mutable MirSurfaceListModel m_surfaceList;
};
class ApplicationManager : public ApplicationManagerInterface
{
Q_OBJECT
public:
int rowCount(const QModelIndex &) const override
{
return m_applications.count();
}
QVariant data(const QModelIndex &/*index*/, int /*role*/) const override
{
return QVariant();
}
QString focusedApplicationId() const override {return QString();}
ApplicationInfoInterface *get(int index) const override
{
return m_applications[index];
}
ApplicationInfoInterface *findApplication(const QString &appId) const override
{
Q_UNUSED(appId);
return nullptr;
}
ApplicationInfoInterface *findApplicationWithSurface(MirSurfaceInterface* surface) const override
{
for (int i = 0; i < m_applications.count(); ++i) {
if (m_applications[i]->m_surfaceList.contains(surface)) {
return m_applications[i];
}
}
return nullptr;
}
bool requestFocusApplication(const QString &appId) override
{
Q_UNUSED(appId);
return false;
}
ApplicationInfoInterface *startApplication(const QString &appId, const QStringList &/*arguments*/) override
{
Application *application = new Application(appId);
prepend(application);
return application;
}
bool stopApplication(const QString &) override { return true; }
private:
void prepend(Application *application)
{
beginInsertRows(QModelIndex(), 0 /*first*/, 0 /*last*/);
m_applications.append(application);
endInsertRows();
}
QList m_applications;
};
#endif // UNITYAPPLICATIONMOCKS_H