def __init__ (self, parent=None):
        QtGui.QDialog.__init__(self, parent)
        self.ui = Ui_SettingsDialog()
        self.ui.setupUi (self)
        conf = Settings()

        self.ui.adminPasswordEdit.setText (conf.value("adminPassword"))
        self.ui.adminPasswordRepeatEdit.setText (conf.value("adminPassword"))
        self.ui.maxPlaylistSpinBox.setValue (int(conf.value("maxPlaylist")))
        self.ui.maxTrackLengthSpinBox.setValue( \
                int(conf.value("maxTrackLength")))
        self.ui.mpdServerEdit.setText (conf.value("mpdServer"))
        self.ui.mpdPortEdit.setText (conf.value("mpdPort"))
        self.ui.mpdPasswordEdit.setText (conf.value("mpdPassword"))
        if( conf.value("fullscreenOnStart") == "True" ):
            self.ui.fullscreenOnStartCheckBox.setChecked(True)
        else:
            self.ui.fullscreenOnStartCheckBox.setChecked(False)
        if( conf.value("playOnConnect") == "True" ):
            self.ui.playOnConnectCheckBox.setChecked(True)
        else:
            self.ui.playOnConnectCheckBox.setChecked(False)
        if( conf.value("stopOnQuit") == "True" ):
            self.ui.stopOnQuitCheckBox.setChecked(True)
        else:
            self.ui.stopOnQuitCheckBox.setChecked(False)
        if (conf.value("excludeLongTracks") == "True"):
            self.ui.excludeLongTracksCheckbox.setChecked(True)
            self.ui.maxTrackLengthSpinBox.setEnabled(True)
            self.ui.maxTrackLengthLabel.setEnabled(True)
            self.ui.maxTrackLengthUp.setEnabled(True)
            self.ui.maxTrackLengthDown.setEnabled(True)
        else:
            self.ui.excludeLongTracksCheckbox.setChecked(False)
            self.ui.maxTrackLengthSpinBox.setEnabled(False)
            self.ui.maxTrackLengthLabel.setEnabled(False)
            self.ui.maxTrackLengthUp.setEnabled(False)
            self.ui.maxTrackLengthDown.setEnabled(False)
        self.ui.vkRow1Edit.setText (conf.value("vkRow1"))
        self.ui.vkRow2Edit.setText (conf.value("vkRow2"))
        self.ui.vkRow3Edit.setText (conf.value("vkRow3"))
        self.ui.vkRow4Edit.setText (conf.value("vkRow4"))

        self.vkb = VirtualKeyboard(self)
        self.vkb.setMinimumSize(600,300)
        self.layout().addWidget(self.vkb)
        QtGui.qApp.focusChanged.connect(self.focusChanged)
class SettingsDialog (QtGui.QDialog):
    def __init__ (self, parent=None):
        QtGui.QDialog.__init__(self, parent)
        self.ui = Ui_SettingsDialog()
        self.ui.setupUi (self)
        conf = Settings()

        self.ui.adminPasswordEdit.setText (conf.value("adminPassword"))
        self.ui.adminPasswordRepeatEdit.setText (conf.value("adminPassword"))
        self.ui.maxPlaylistSpinBox.setValue (int(conf.value("maxPlaylist")))
        self.ui.maxTrackLengthSpinBox.setValue( \
                int(conf.value("maxTrackLength")))
        self.ui.mpdServerEdit.setText (conf.value("mpdServer"))
        self.ui.mpdPortEdit.setText (conf.value("mpdPort"))
        self.ui.mpdPasswordEdit.setText (conf.value("mpdPassword"))
        if( conf.value("fullscreenOnStart") == "True" ):
            self.ui.fullscreenOnStartCheckBox.setChecked(True)
        else:
            self.ui.fullscreenOnStartCheckBox.setChecked(False)
        if( conf.value("playOnConnect") == "True" ):
            self.ui.playOnConnectCheckBox.setChecked(True)
        else:
            self.ui.playOnConnectCheckBox.setChecked(False)
        if( conf.value("stopOnQuit") == "True" ):
            self.ui.stopOnQuitCheckBox.setChecked(True)
        else:
            self.ui.stopOnQuitCheckBox.setChecked(False)
        if (conf.value("excludeLongTracks") == "True"):
            self.ui.excludeLongTracksCheckbox.setChecked(True)
            self.ui.maxTrackLengthSpinBox.setEnabled(True)
            self.ui.maxTrackLengthLabel.setEnabled(True)
            self.ui.maxTrackLengthUp.setEnabled(True)
            self.ui.maxTrackLengthDown.setEnabled(True)
        else:
            self.ui.excludeLongTracksCheckbox.setChecked(False)
            self.ui.maxTrackLengthSpinBox.setEnabled(False)
            self.ui.maxTrackLengthLabel.setEnabled(False)
            self.ui.maxTrackLengthUp.setEnabled(False)
            self.ui.maxTrackLengthDown.setEnabled(False)
        self.ui.vkRow1Edit.setText (conf.value("vkRow1"))
        self.ui.vkRow2Edit.setText (conf.value("vkRow2"))
        self.ui.vkRow3Edit.setText (conf.value("vkRow3"))
        self.ui.vkRow4Edit.setText (conf.value("vkRow4"))

        self.vkb = VirtualKeyboard(self)
        self.vkb.setMinimumSize(600,300)
        self.layout().addWidget(self.vkb)
        QtGui.qApp.focusChanged.connect(self.focusChanged)

    def okBtn (self):
        if self.ui.adminPasswordEdit.text() != self.ui.adminPasswordRepeatEdit.text():
            mb = QtGui.QMessageBox ("Admin passwords not the same", \
                    "The two new admin passwords you entered, are not the same", \
                    QtGui.QMessageBox.NoIcon, QtGui.QMessageBox.Ok, \
                    QtGui.QMessageBox.NoButton, QtGui.QMessageBox.NoButton, \
                    self )
            mb.exec_()
            return
        conf = Settings()
        conf.setValue ("adminPassword", self.ui.adminPasswordEdit.text())
        conf.setValue ("maxPlaylist", self.ui.maxPlaylistSpinBox.value() )
        conf.setValue ("maxTrackLength", self.ui.maxTrackLengthSpinBox.value() )
        if self.ui.excludeLongTracksCheckbox.isChecked():
            conf.setValue("excludeLongTracks", "True")
        else:
            conf.setValue("excludeLongTracks", "False")
        if self.ui.fullscreenOnStartCheckBox.isChecked():
            conf.setValue("fullscreenOnStart", "True" )
        else:
            conf.setValue("fullscreenOnStart", "False" )
        if self.ui.playOnConnectCheckBox.isChecked():
            conf.setValue("playOnConnect", "True" )
        else:
            conf.setValue("playOnConnect", "False" )
        if self.ui.stopOnQuitCheckBox.isChecked():
            conf.setValue("stopOnQuit", "True" )
        else:
            conf.setValue("stopOnQuit", "False" )
        conf.setValue ("vkRow1", self.ui.vkRow1Edit.text() )
        conf.setValue ("vkRow2", self.ui.vkRow2Edit.text() )
        conf.setValue ("vkRow3", self.ui.vkRow3Edit.text() )
        conf.setValue ("vkRow4", self.ui.vkRow4Edit.text() )
        conf.setValue ("mpdServer", self.ui.mpdServerEdit.text() )
        conf.setValue ("mpdPort", self.ui.mpdPortEdit.text() )
        conf.setValue ("mpdPassword", self.ui.mpdPasswordEdit.text() )
        self.close()

    def cancelBtn (self):
        self.close()

    def focusChanged(self, old, new):
        if new == self.ui.adminPasswordEdit:
            self.vkb.setInputLine(self.ui.adminPasswordEdit)
        if new == self.ui.adminPasswordRepeatEdit:
            self.vkb.setInputLine(self.ui.adminPasswordRepeatEdit)
        if new == self.ui.maxPlaylistSpinBox:
            self.vkb.setInputLine(self.ui.maxPlaylistSpinBox.lineEdit())
        if new == self.ui.maxTrackLengthSpinBox:
            self.vkb.setInputLine(self.ui.maxTrackLengthSpinBox.lineEdit())
        if new == self.ui.mpdServerEdit:
            self.vkb.setInputLine(self.ui.mpdServerEdit)
        if new == self.ui.mpdPasswordEdit:
            self.vkb.setInputLine(self.ui.mpdPasswordEdit)
        if new == self.ui.mpdPortEdit:
            self.vkb.setInputLine(self.ui.mpdPortEdit)
        if new == self.ui.vkRow1Edit:
            self.vkb.setInputLine(self.ui.vkRow1Edit)
        if new == self.ui.vkRow2Edit:
            self.vkb.setInputLine(self.ui.vkRow2Edit)
        if new == self.ui.vkRow3Edit:
            self.vkb.setInputLine(self.ui.vkRow3Edit)
        if new == self.ui.vkRow4Edit:
            self.vkb.setInputLine(self.ui.vkRow4Edit)
    
    def tabChanged(self, newtab):
        self.vkb.setInputLine(None)
        #Sets focus to the widget, that last had focus
        #when the new tab was left. This makes vkb edit the right lineEdit.
        lastfocusWidget = newtab.focusWidget()
        newtab.clearFocus()
        if lastfocusWidget: #Could be None
            lastfocusWidget.setFocus()