from PyQt4.Qt import QAction
from PyQt4.QtCore import QObject
from PyQt4.QtCore import Qt
from PyQt4.QtCore import SIGNAL

from PyQt4.QtGui import QColor

import clementine


class RainbowizerScript(QObject):

  priority = 1
  colors = [ QColor("#ec1e24"),
             QColor("#f45a2c"),
             QColor("#fcf204"),
             QColor("#3cb64c"),
             QColor("#04aeec"),
             QColor("#242264"),
             QColor("#94268c") ];

  def __init__(self):
    QObject.__init__(self)

    self.action = QAction("rainbowize_playlist", self)
    self.action.setText("Rainbowize!")
    self.action.setCheckable(True)
    self.connect(self.action, SIGNAL("changed()"), self.rainbowize)

    clementine.ui.AddAction('playlist_menu', self.action)

  def rainbowize(self):
    for playlist in clementine.playlists.GetAllPlaylists():
      if self.action.isChecked():
        i = 0

        for item in playlist.GetAllItems():
          i = (i + 1) % len(self.colors)
          item.SetBackgroundColor(self.priority, self.colors[i])

      else:
        # undo all rainbow colors
        for item in playlist.GetAllItems():
          item.RemoveBackgroundColor(self.priority)


script = RainbowizerScript()