#pragma once

#if __has_include(<PlasmaActivities/PlasmaActivities/Consumer>)
#include <PlasmaActivities/PlasmaActivities/Consumer>
#elif __has_include(<PlasmaActivities/plasmaactivities/consumer.h>)
#include <PlasmaActivities/plasmaactivities/consumer.h>
#elif __has_include(<PlasmaActivities/Consumer>)
#include <PlasmaActivities/Consumer>
#elif __has_include(<PlasmaActivities/consumer.h>)
#include <PlasmaActivities/consumer.h>
#elif __has_include(<KActivities/consumer.h>)
#include <KActivities/consumer.h>
#elif __has_include(<kactivities/consumer.h>)
#include <kactivities/consumer.h>
#elif __has_include_next(<KActivities/Consumer>)
#include_next <KActivities/Consumer>
#else
#include <QObject>
#include <QString>
#include <QStringList>
#include <QDebug>
#include <KActivities/Info>

namespace KActivities {
class Consumer : public QObject
{
public:
    enum ServiceStatus {
        NotRunning,
        Unknown,
        Running
    };

    explicit Consumer(QObject *parent = nullptr)
        : QObject(parent)
    {
        qWarning() << "KActivities Consumer stub activated: real PlasmaActivities headers are unavailable, activities integration is degraded.";
    }

    QString currentActivity() const
    {
        return QString{};
    }

    QStringList activities() const
    {
        return {};
    }

    QStringList activities(Info::State) const
    {
        return {};
    }

    ServiceStatus serviceStatus() const
    {
        return Running;
    }

    // signal-compatible stubs for pointer-to-member connects
    void serviceStatusChanged(ServiceStatus);
    void currentActivityChanged(const QString &);
    void runningActivitiesChanged(const QStringList &);
    void activityAdded(const QString &);
    void activityRemoved(const QString &);
};
}
#endif
