+ playlists = p.stringArrayForKey_("playlists")
+ if playlists is not None:
+ p.removeObjectForKey_("playlists")
+ else:
+ playlists = []
+
+ 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.uuid4().get_hex()
+ target["path_prefix"] = "../"
+ if first:
+ first = False
+ self.setCurrentTarget_(target["uuid"])
+ self.targets.addObject_(target)
+
+ self._savePrefs()
+
+ def _loadPrefs(self):
+ p = self.prefs()
+
+ self.currentTarget = None
+ self.setCurrentTarget_(p.stringForKey_("currentTarget"))
+
+ 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.currentTarget, "currentTarget")
+ p.setObject_forKey_(self.targets, "targets")
+ p.synchronize()
+
+ def getCurrentTarget(self):
+ for target in self.targets:
+ if target["uuid"] == self.currentTarget:
+ return target
+ return None
+
+ def setCurrentTarget_(self, targetUuid):
+ oldUuid = self.currentTarget
+ self.currentTarget = targetUuid
+ if oldUuid is None and targetUuid is not None:
+ self.playlistModel.outlineView.setEnabled_(True)
+ if oldUuid != targetUuid:
+ self.playlistModel.outlineView.reloadItem_reloadChildren_(None, True)