#pragma once #include enum ClientInterface { Clonk = 1, IRC = 1 << 1 }; class ClientInfo { public: ClientInterface interface = Clonk; QString nick = ""; int CUID = 0; QString pcName = ""; bool activated = false; QString target = ""; static inline ClientInfo ircClient(QString nick, QString target = "") { ClientInfo ret; ret.interface = IRC; ret.nick = nick; if(target.isEmpty()) { target = nick; } ret.target = target; return ret; } static inline ClientInfo clonkClient(QString nick, QString pcName, int CUID, bool activated = false) { ClientInfo ret; ret.interface = Clonk; ret.nick = nick; ret.nick = pcName; ret.CUID = CUID; ret.activated = activated; return ret; } inline bool operator==(const ClientInfo& other) { return other.interface == interface && other.nick == nick && (interface == Clonk ? other.pcName == pcName && other.CUID == CUID : true); } inline bool operator!=(const ClientInfo& other) { return !operator==(other); } inline QString toString() const { return (!nick.isEmpty() ? nick + (interface == Clonk ? " (" + pcName + ")" : " (IRC)") : ""); } };