BUG FIX when there is no usedSettings
[satune.git] / src / Tuner / searchtuner.cc
index 6b17a2a244bec5ccc2c197d98bf8138d37e1d469..3cf94fb1f937f880c0dbb08c23d869d1e799bc49 100644 (file)
@@ -64,7 +64,7 @@ ostream &operator<<(ostream &os, const TunableSetting &ts)
 SearchTuner::SearchTuner() {
 }
 
-SearchTuner::SearchTuner(const char *filename) {
+SearchTuner::SearchTuner(const char *filename, bool addused) {
        ifstream myfile;
        myfile.open (filename, ios::in);
        if (myfile.is_open()) {
@@ -86,7 +86,9 @@ SearchTuner::SearchTuner(const char *filename) {
                        }
                        setting->setDecision(lowValue, highValue, defaultValue, selectedValue);
                        settings.add(setting);
-                       usedSettings.add(setting);
+                       if (addused) {
+                               usedSettings.add(setting);
+                       }
                }
                myfile.close();
        } else {
@@ -94,6 +96,29 @@ SearchTuner::SearchTuner(const char *filename) {
        }
 }
 
+bool SearchTuner::equalUsed(SearchTuner *tuner) {
+       if (tuner->usedSettings.getSize() != usedSettings.getSize()) {
+               return false;
+       }
+       bool result = true;
+       SetIteratorTunableSetting *iterator = usedSettings.iterator();
+       while (iterator->hasNext()) {
+               TunableSetting *setting = iterator->next();
+               if (!tuner->usedSettings.contains(setting)) {
+                       result = false;
+                       break;
+               } else {
+                       TunableSetting *tunerSetting = tuner->usedSettings.get(setting);
+                       if (tunerSetting->selectedValue != setting->selectedValue) {
+                               result = false;
+                               break;
+                       }
+               }
+       }
+       delete iterator;
+       return result;
+}
+
 void SearchTuner::addUsed(const char *filename) {
        ifstream myfile;
        myfile.open (filename, ios::in);
@@ -131,15 +156,15 @@ void SearchTuner::addUsed(const char *filename) {
        }
 }
 
-bool SearchTuner::isSubTunerof(SearchTuner *newTuner){
+bool SearchTuner::isSubTunerof(SearchTuner *newTuner) {
        SetIteratorTunableSetting *iterator = usedSettings.iterator();
        while (iterator->hasNext()) {
                TunableSetting *setting = iterator->next();
-               if(!newTuner->settings.contains(setting)){
+               if (!newTuner->settings.contains(setting)) {
                        return false;
-               } else{
+               } else {
                        TunableSetting *newSetting = newTuner->settings.get(setting);
-                       if(newSetting->selectedValue != setting->selectedValue){
+                       if (newSetting->selectedValue != setting->selectedValue) {
                                return false;
                        }
                }
@@ -150,7 +175,8 @@ bool SearchTuner::isSubTunerof(SearchTuner *newTuner){
 
 SearchTuner *SearchTuner::copyUsed() {
        SearchTuner *tuner = new SearchTuner();
-       SetIteratorTunableSetting *iterator = usedSettings.iterator();
+       
+       SetIteratorTunableSetting *iterator = !usedSettings.isEmpty()? usedSettings.iterator():settings.iterator();
        while (iterator->hasNext()) {
                TunableSetting *setting = iterator->next();
                TunableSetting *copy = new TunableSetting(setting);