#ifndef GLOBAL_H #define GLOBAL_H #include #include #include #include namespace Shared { enum ConnectionState { disconnected, connecting, connected, error }; enum Availability { online, away, extendedAway, busy, chatty, invisible, offline }; enum SubscriptionState { none, from, to, both, unknown }; static const Availability availabilityHighest = offline; static const Availability availabilityLowest = online; static const SubscriptionState subscriptionStateHighest = unknown; static const SubscriptionState subscriptionStateLowest = none; static const std::deque connectionStateNames = {"Disconnected", "Connecting", "Connected", "Error"}; static const std::deque connectionStateThemeIcons = {"network-disconnect", "view-refresh", "network-connect", "state-error"}; static const std::deque availabilityThemeIcons = { "user-online", "user-away", "user-away-extended", "user-busy", "chatty", "user-invisible", "user-offline" }; static const std::deque availabilityNames = {"Online", "Away", "Absent", "Busy", "Chatty", "Invisible", "Offline"}; static const std::deque subscriptionStateThemeIcons = {"edit-none", "arrow-down-double", "arrow-up-double", "dialog-ok", "question"}; static const std::deque subscriptionStateNames = {"None", "From", "To", "Both", "Unknown"}; QString generateUUID(); class Message { public: enum Type { error, normal, chat, groupChat, headline }; Message(Type p_type); Message(); void setFrom(const QString& from); void setFromResource(const QString& from); void setFromJid(const QString& from); void setTo(const QString& to); void setToResource(const QString& to); void setToJid(const QString& to); void setTime(const QDateTime& p_time); void setId(const QString& p_id); void setBody(const QString& p_body); void setThread(const QString& p_body); void setOutgoing(bool og); void setForwarded(bool fwd); void setType(Type t); void setCurrentTime(); QString getFrom() const; QString getFromJid() const; QString getFromResource() const; QString getTo() const; QString getToJid() const; QString getToResource() const; QDateTime getTime() const; QString getId() const; QString getBody() const; QString getThread() const; bool getOutgoing() const; bool getForwarded() const; Type getType() const; QString getPenPalJid() const; QString getPenPalResource() const; void generateRandomId(); void serialize(QDataStream& data) const; void deserialize(QDataStream& data); private: QString jFrom; QString rFrom; QString jTo; QString rTo; QString id; QString body; QDateTime time; QString thread; Type type; bool outgoing; bool forwarded; }; static const std::deque fallbackAvailabilityThemeIconsLightBig = { ":images/fallback/light/big/online.svg", ":images/fallback/light/big/away.svg", ":images/fallback/light/big/absent.svg", ":images/fallback/light/big/busy.svg", ":images/fallback/light/big/chatty.svg", ":images/fallback/light/big/invisible.svg", ":images/fallback/light/big/offline.svg" }; static const std::deque fallbackSubscriptionStateThemeIconsLightBig = { ":images/fallback/light/big/edit-none.svg", ":images/fallback/light/big/arrow-down-double.svg", ":images/fallback/light/big/arrow-up-double.svg", ":images/fallback/light/big/dialog-ok.svg", ":images/fallback/light/big/question.svg" }; static const std::deque fallbackAvailabilityThemeIconsLightSmall = { ":images/fallback/light/small/online.svg", ":images/fallback/light/small/away.svg", ":images/fallback/light/small/absent.svg", ":images/fallback/light/small/busy.svg", ":images/fallback/light/small/chatty.svg", ":images/fallback/light/small/invisible.svg", ":images/fallback/light/small/offline.svg" }; static const std::deque fallbackSubscriptionStateThemeIconsLightSmall = { ":images/fallback/light/small/edit-none.svg", ":images/fallback/light/small/arrow-down-double.svg", ":images/fallback/light/small/arrow-up-double.svg", ":images/fallback/light/small/dialog-ok.svg", ":images/fallback/light/small/question.svg" }; static const std::deque fallbackAvailabilityThemeIconsDarkBig = { ":images/fallback/dark/big/online.svg", ":images/fallback/dark/big/away.svg", ":images/fallback/dark/big/absent.svg", ":images/fallback/dark/big/busy.svg", ":images/fallback/dark/big/chatty.svg", ":images/fallback/dark/big/invisible.svg", ":images/fallback/dark/big/offline.svg" }; static const std::deque fallbackSubscriptionStateThemeIconsDarkBig = { ":images/fallback/dark/big/edit-none.svg", ":images/fallback/dark/big/arrow-down-double.svg", ":images/fallback/dark/big/arrow-up-double.svg", ":images/fallback/dark/big/dialog-ok.svg", ":images/fallback/dark/big/question.svg" }; static const std::deque fallbackAvailabilityThemeIconsDarkSmall = { ":images/fallback/dark/small/online.svg", ":images/fallback/dark/small/away.svg", ":images/fallback/dark/small/absent.svg", ":images/fallback/dark/small/busy.svg", ":images/fallback/dark/small/chatty.svg", ":images/fallback/dark/small/invisible.svg", ":images/fallback/dark/small/offline.svg" }; static const std::deque fallbackSubscriptionStateThemeIconsDarkSmall = { ":images/fallback/dark/small/edit-none.svg", ":images/fallback/dark/small/arrow-down-double.svg", ":images/fallback/dark/small/arrow-up-double.svg", ":images/fallback/dark/small/dialog-ok.svg", ":images/fallback/dark/small/question.svg" }; QIcon availabilityIcon(Availability av, bool big = false); QIcon subscriptionStateIcon(SubscriptionState ss, bool big = false); }; #endif // GLOBAL_H