1 #include "featureset.h"
2
3 #include <QDebug>
4 #include <QMap>
5
FeatureSet()6 FeatureSet::FeatureSet()
7 {
8 }
9
getDefaultFeatureList()10 QMap<QString, bool> FeatureSet::getDefaultFeatureList()
11 {
12 initalizeFeatureList(featureList);
13 return featureList;
14 }
15
initalizeFeatureList(QMap<QString,bool> & featureList)16 void FeatureSet::initalizeFeatureList(QMap<QString, bool> &featureList)
17 {
18 featureList.insert("client_id", false);
19 featureList.insert("client_ver", false);
20 featureList.insert("feature_set", false);
21 featureList.insert("user_ban_history", false);
22 featureList.insert("room_chat_history", false);
23 featureList.insert("client_warnings", false);
24 featureList.insert("mod_log_lookup", false);
25 featureList.insert("idle_client", false);
26 featureList.insert("forgot_password", false);
27 featureList.insert("websocket", false);
28 // These are temp to force users onto a newer client
29 featureList.insert("2.7.0_min_version", false);
30 featureList.insert("2.8.0_min_version", false);
31 }
32
enableRequiredFeature(QMap<QString,bool> & featureList,QString featureName)33 void FeatureSet::enableRequiredFeature(QMap<QString, bool> &featureList, QString featureName)
34 {
35 if (featureList.contains(featureName))
36 featureList.insert(featureName, true);
37 }
38
disableRequiredFeature(QMap<QString,bool> & featureList,QString featureName)39 void FeatureSet::disableRequiredFeature(QMap<QString, bool> &featureList, QString featureName)
40 {
41 if (featureList.contains(featureName))
42 featureList.insert(featureName, false);
43 }
44
45 QMap<QString, bool>
addFeature(QMap<QString,bool> & featureList,QString featureName,bool isFeatureRequired)46 FeatureSet::addFeature(QMap<QString, bool> &featureList, QString featureName, bool isFeatureRequired)
47 {
48 featureList.insert(featureName, isFeatureRequired);
49 return featureList;
50 }
51
identifyMissingFeatures(QMap<QString,bool> suppliedFeatures,QMap<QString,bool> requiredFeatures)52 QMap<QString, bool> FeatureSet::identifyMissingFeatures(QMap<QString, bool> suppliedFeatures,
53 QMap<QString, bool> requiredFeatures)
54 {
55 QMap<QString, bool> missingList;
56 QMap<QString, bool>::iterator i;
57 for (i = requiredFeatures.begin(); i != requiredFeatures.end(); ++i) {
58 if (!suppliedFeatures.contains(i.key())) {
59 missingList.insert(i.key(), i.value());
60 }
61 }
62 return missingList;
63 }
64
isRequiredFeaturesMissing(QMap<QString,bool> suppliedFeatures,QMap<QString,bool> requiredFeatures)65 bool FeatureSet::isRequiredFeaturesMissing(QMap<QString, bool> suppliedFeatures, QMap<QString, bool> requiredFeatures)
66 {
67 QMap<QString, bool>::iterator i;
68 for (i = requiredFeatures.begin(); i != requiredFeatures.end(); ++i) {
69 if (i.value() && suppliedFeatures.contains(i.key())) {
70 return true;
71 }
72 }
73 return false;
74 }
75