#pragma once #include #include #include "logging.h" class QIODevice; namespace PlanEditor { class PlanEditor; class SymbolFavourites : public QObject { Q_OBJECT public: SymbolFavourites(); virtual ~SymbolFavourites() = default; virtual QStringList sidcList() const = 0; virtual QStringList scopeList() const = 0; virtual void addScope(const QString &scope) = 0; virtual void addSymbolFavourite(const QString &sidc, const QString &scope, const QString &name) = 0; virtual bool isFavourite(const QString &sidc) const = 0; virtual QString scope(const QString &sidc) const = 0; virtual QString name(const QString &sidc) const = 0; virtual void removeSymbolFavourite(const QString &sidc) = 0; virtual void removeScope(const QString &scope) = 0; virtual void includeSymbolFavourites(const SymbolFavourites &) = 0; virtual QString toString() = 0; virtual bool contentFromString(const QString &) = 0; virtual bool contentFromDevice(QIODevice *) = 0; virtual bool copyScope(const QString &scope, SymbolFavourites &dest) = 0; static SymbolFavourites *create(); static SymbolFavourites *createFromString(const QString &); static SymbolFavourites *createFromDevice(QIODevice *); class SymbolVisitor { public: SymbolVisitor() = default; virtual ~SymbolVisitor() = default; SymbolVisitor(const SymbolVisitor &) = delete; SymbolVisitor &operator = (const SymbolVisitor &) = delete; private: friend class VisitorVisitor; virtual bool apply(const QString &scope) const; virtual bool apply(const QString &scope, const QString &name, const QString &sidc) const; }; virtual void traverse(const SymbolVisitor &) = 0; signals: void signalNewScope(const QString &scope); void signalNewSymbol(const QString &scope, const QString &sidc); void signalDeleteScope(const QString &scope); void signalDeleteSymbol(const QString &sidc); }; }