int main(int argc, char **argv) { Arguments *args; Rule *rules; int rules_number; int i; srand(time(NULL)); args = processArguments(argc, argv); if(args->mode == 0) { rules = processRuleFile(args); for(i=0;i<args->name_number;i++) { if(args->name_length<1) generateName(args->output_file, rules, 3+rand()%6); else generateName(args->output_file, rules, args->name_length); } } else if(args->mode == 1) { rules = generateRules(args, &rules_number); writeRules(rules, rules_number, args->output_file); } fclose(args->output_file); return 0; }
void Configuration::readRules(QList<Rule> &rules, int *rules_version_return) { // IMPROVE constants.h // So wrong by the API specifications, but so right by the end results (no, I don't like doing it this way) QSettings s("ProfileMatic", "rules"); // QSettings s("ajalkane", "ProfileMatic"); Rule defaultRule = Rule::createDefaultRule(); int rules_version = s.value("rulesVersion", 0).toInt(); if (rules_version_return != 0) { *rules_version_return = rules_version; } int size = s.beginReadArray("rules"); for (int i = 0; i < size; ++i) { s.setArrayIndex(i); Rule r; // r.ruleActive = s.value("ruleActive").toBool(); _assignRuleId(r, s.value("ruleId")); r.setRuleName(s.value("ruleName").toString()); QList<int> daysList; _readIntList(s, "days", "dayId", daysList); r.setDays(QSet<int>::fromList(daysList)); QList<int> locationCells; _readIntList(s, "locationCells", "cellId", locationCells); r.setLocationCells(QSet<int>::fromList(locationCells)); QList<QString> wlans; _readStringList(s, "wlans", "wlanName", wlans); r.setWlan(QSet<QString>::fromList(wlans)); bool wlanTimeoutOk = false; int wlanTimeout = s.value("wlanTimeout").toInt(&wlanTimeoutOk); if (wlanTimeoutOk) { r.setWlanTimeout(wlanTimeout); } QString timeStartStr = s.value("timeStart").toString(); QString timeEndStr = s.value("timeEnd").toString(); r.setTimeStart(QTime::fromString(timeStartStr)); r.setTimeEnd(rules_version == 0 ? r.getTimeStart().addSecs(60) : QTime::fromString(timeEndStr)); r.setProfile(s.value("profile").toString()); r.setRestoreProfile(s.value("restoreProfile", false).toBool()); bool profileVolumeOk = false; int profileVolume = s.value("profileVolume").toInt(&profileVolumeOk); if (profileVolumeOk) { r.setProfileVolume(profileVolume); } bool flightModeOk = false; int flightMode = s.value("flightMode").toInt(&flightModeOk); if (flightModeOk) { r.setFlightMode(flightMode); } r.setRestoreFlightMode(s.value("restoreFlightMode", false).toBool()); bool powerSavingModeOk = false; int powerSavingMode = s.value("powerSavingMode").toInt(&powerSavingModeOk); if (powerSavingModeOk) { r.setPowerSavingMode(powerSavingMode); } r.setRestorePowerSavingMode(s.value("restorePowerSavingMode", false).toBool()); bool blueToothModeOk = false; int blueToothMode = s.value("blueToothMode").toInt(&blueToothModeOk); if (blueToothModeOk) { r.setBlueToothMode(blueToothMode); } r.setRestoreBlueToothMode(s.value("restoreBlueToothMode", false).toBool()); bool cellularModeOk = false; int cellularMode = s.value("cellularMode").toInt(&cellularModeOk); if (cellularModeOk) { r.setCellularMode(cellularMode); } r.setCommandLine(s.value("commandLine").toString()); QList<PresenceRule *> presenceRules; _readPresenceRuleList(s, presenceRules); r.setPresenceRules(presenceRules); qDeleteAll(presenceRules); presenceRules.clear(); r.setPresenceStatusMessage(s.value("presenceStatusMessage").toString()); r.setRestorePresence(s.value("restorePresence", r.getRestorePresence()).toBool()); r.setPresenceChangeType((Rule::PresenceChangeType) s.value("presenceChangeType", (int) Rule::CustomPresenceType).toInt()); // Make sure default rule is always last, and is created if it does not exist if (!r.isDefaultRule()) { rules << r; } else { defaultRule.actionsFrom(r); } qDebug("Configuration: index %d, ruleId: %s, ruleName: %s", i, qPrintable(r.getRuleId()), qPrintable(r.getRuleName())); } rules << defaultRule; s.endArray(); // Write rules to finalize conversion if (rules_version == 0) { qDebug("Writing rules after conversion"); writeRules(rules); } }