+ folders = p.stringArrayForKey_("folders")
+ if not folders:
+ return
+ p.removeObjectForKey_("folders")
+
+ first = True
+ for f in folders:
+ target = {}
+ target["folder"] = f
+ target["playlists"] = list(playlists)
+ target["uuid"] = uuid.uuid1().get_hex()
+ if first:
+ first = False
+ self.setCurrentTarget_(target["uuid"])
+ self.targets.addObject_(target)
+
+ self._savePrefs()
+
+ def _loadPrefs(self):
+ p = self.prefs()
+
+ self.current_target = None
+ self.setCurrentTarget_(p.stringForKey_("current_target"))
+
+ self.targets = self.prefs().arrayForKey_("targets")
+ if self.targets is None:
+ self.targets = NSMutableArray.array()
+ else:
+ self.targets = NSMutableArray.arrayWithArray_(self.targets)
+
+ if self.getCurrentTarget() is None:
+ self._migratePrefs()
+
+ def _savePrefs(self):
+ p = self.prefs()
+ p.setObject_forKey_(self.current_target, "current_target")
+ p.setObject_forKey_(self.targets, "targets")
+ p.synchronize()
+
+ def getCurrentTarget(self):
+ for target in self.targets:
+ if target["uuid"] == self.current_target:
+ return target
+ return None
+
+ def setCurrentTarget_(self, target_uuid):
+ old_uuid = self.current_target
+ self.current_target = target_uuid
+ if old_uuid is None and target_uuid is not None:
+ self.playlistModel.outlineView.setEnabled_(True)
+ if old_uuid != target_uuid:
+ self.playlistModel.outlineView.reloadItem_reloadChildren_(None, True)