#!/usr/bin/python

# Copyright 2010 Kalle Kivimaa <killer@iki.fi> BSD license.
# See the accompanying copyright file for more info

import sys
import os
from PyQt4 import QtCore, QtGui

class Button(QtGui.QToolButton):
    def __init__(self, text, color, parent=None):
        QtGui.QToolButton.__init__(self, parent)

        self.setSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Preferred)
        self.setText(text)

        newPalette = self.palette()
        newPalette.setColor(QtGui.QPalette.Button, color)
        self.setPalette(newPalette)

    def sizeHint(self):
        size = QtGui.QToolButton.sizeHint(self)
        size.setHeight(size.height() + 20)
        size.setWidth(100)
        return size

class GetTime(QtGui.QTimeEdit):
    def __init__(self, parent=None):
        QtGui.QTimeEdit.__init__(self, parent)

    def sizeHint(self):
        size = QtGui.QTimeEdit.sizeHint(self)
        size.setHeight(size.height() + 20)
        size.setWidth(200)
        return size
        
class Silencer(QtGui.QDialog):
    
    def __init__(self, parent=None):
        QtGui.QDialog.__init__(self, parent)
        layout = QtGui.QBoxLayout( QtGui.QBoxLayout.LeftToRight )
        self.getter = GetTime( self )
        layout.addWidget( self.getter )
        self.firstProfile = QtGui.QComboBox( self )
        self.firstProfile.addItem( "silent" )
        self.firstProfile.addItem( "general" )
        layout.addWidget( self.firstProfile )
        self.lastProfile = QtGui.QComboBox( self )
        self.lastProfile.addItem( "general" )
        self.lastProfile.addItem( "silent" )
        layout.addWidget( self.lastProfile )
        button = Button("Set", QtGui.QColor(150, 205, 205))
        layout.addWidget( button )
        self.connect(button, QtCore.SIGNAL("clicked()"), self.timeChanged)
        self.setLayout( layout )
        self.setWindowTitle(self.tr("Silencer"))

    def timeChanged(self):
        self.hide()
        first = self.firstProfile.currentText()
        last = self.lastProfile.currentText()
        secs = self.getter.time().hour() * 3600 + self.getter.time().minute() * 60 + self.getter.time().second()
        os.spawnv(os.P_WAIT, "/opt/silencer/timer", ("/opt/silencer/timer", first, str(secs), last))
        sys.exit()
        
if __name__ == "__main__":
    app = QtGui.QApplication(sys.argv)
    silencer = Silencer()
    sys.exit(silencer.exec_())
