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