23 #include "serverpassword.h" 25 class ServerSimilarity
33 this->server = server;
34 this->similarity = similarity;
37 bool operator<(
const ServerSimilarity &other)
const 39 return similarity < other.similarity;
47 removeServer(v.game(), v.address(), v.port());
52 ServerPassword ServerPassword::deserializeQVariant(
const QVariant &v)
54 QVariantMap m = v.toMap();
56 o.setPhrase(m[
"phrase"].toString());
57 QVariantList variantServers = m[
"servers"].toList();
58 for (QVariant server : variantServers)
60 o.addServer(ServerPasswordSummary::deserializeQVariant(server));
65 QString ServerPassword::lastGame()
const 67 return lastServer().game();
75 if (!lastServer.isValid())
81 if (s.isValid() && s.time() > lastServer.time())
87 QString ServerPassword::lastServerName()
const 89 return lastServer().name();
92 QDateTime ServerPassword::lastTime()
const 94 return lastServer().time();
99 QList<ServerSimilarity> similarities;
103 similarities << ServerSimilarity(candidate, candidate.
similarity(other));
105 if (!similarities.empty())
107 std::sort(similarities.begin(), similarities.end());
108 if (outSimilarity !=
nullptr)
109 *outSimilarity = similarities.last().
similarity;
110 return similarities.last().server;
114 if (outSimilarity !=
nullptr)
115 *outSimilarity = 0.0f;
120 void ServerPassword::removeServer(
const QString &game,
const QString &address,
unsigned short port)
122 QMutableListIterator<ServerPasswordSummary> it(d.servers);
126 if (server.game() == game && server.address() == address && server.port() == port)
131 QVariant ServerPassword::serializeQVariant()
const 134 m.insert(
"phrase", d.phrase);
135 QVariantList variantServers;
138 variantServers << s.serializeQVariant();
140 m.insert(
"servers", variantServers);
float similarity(const ServerPasswordSummary &other) const
Similarity to the 'other' server; between 0.0 and 1.0.