示例#1
0
class MyMainWindow(QMainWindow):
    """ the widget """
    def __init__(self):
        ''' the init function '''
        QWidget.__init__(self)
        self.createSystemTray()
        self.createUI()
        self.createConnections()
        self.createActions()
        self.setWindowTitle(u'定时器')
        #then the size policy
        self.setSizePolicy(QSizePolicy.Maximum, QSizePolicy.Maximum)
        self.quitWithoutTray = False
        #then the positon/geometry
        self.setGeometry(400, 400, self.size().width(), self.size().height())

        self.mission = None
        self.intervalTimer = None
        DB.initTables()

    def closeEvent(self, evt):
        '''
        override the closeEvent to decide whether use systemTray
        '''
        if self.quitWithoutTray:
            if None != self.mission:
                self.mission.storeEvent()
            evt.accept()
        else:
            self.hide()
            evt.ignore()

    def showAllShortCut(self):
        '''
        not implemented
        show all shortcuts set
        '''
        pass

    def keyPressEvent(self, evt):
        if evt.key() == Qt.Key_Escape or (evt.key() == Qt.Key_W\
                and evt.modifiers() & Qt.ControlModifier):
            self.hide()
            self.msgLabel.hide()#TODO no esc effect
            if self.msgLabel.isVisible():
                self.msgLabel.hide()
        elif (evt.key() == Qt.Key_Q and evt.modifiers()&Qt.ControlModifier):
            self.noTrayClose()
        #global shortcut to invoke the app, not implemented
        elif (evt.key() == Qt.Key_T and evt.modifiers()&Qt.AltModifier):
            self.show()
        else:
            QWidget.keyPressEvent(self, evt)

    @pyqtSlot(int)
    def trayActivated(self, reason):
        if QSystemTrayIcon.DoubleClick == reason or QSystemTrayIcon.Trigger == reason:
            self.show()

    def createUI(self):
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        self.nowTimeText = time.strftime(u'%H:%M:%S'.encode('utf-8')).decode('utf-8') 
        self.ui.labelStartTime.setText(self.nowTimeText)
        self.ui.labelEndTime.setText('')
        self.ui.lineEditTimeCount.setFocus()
        self.msgLabel = MyLabel(u'<h1>时间到!</h1><img src=":/img/38.gif"/>')
        self.msgLabel.hide()
        self.msgLabel.setBuddy(self)
        self.ui.btnComplete.setDisabled(True)
        self.ui.btnDiscard.setDisabled(True)

    def createConnections(self):
        self.connect(self.ui.btnStartTimer, SIGNAL('clicked()'), \
                self.startTimer)
        self.connect(self.ui.btnComplete, SIGNAL('clicked()'), \
                self.missionComplete)
        self.connect(self.ui.btnDiscard, SIGNAL('clicked()'), \
                self.missionDiscarded)

    def createActions(self):
        self.ui.actViewData.setShortcut('Alt+D')
        self.connect(self.ui.actViewData, SIGNAL('triggered()'),
                self.viewData)

    @pyqtSlot()
    def viewData(self):
        self.dataWidget = getattr(self, 'dataWidget', False)
        if not self.dataWidget:
            self.dataWidget = getWidgetWithData()
        if self.dataWidget.isVisible():
            self.dataWidget.hide()
        else:
            self.dataWidget.show()

    def startTimer(self):
        #ui update
        self.nowTimeText = time.strftime(u'%H:%M:%S'.encode('utf-8')).decode('utf-8')
        minute = self.ui.lineEditTimeCount.text()
        try:
            minute = float(minute)
            self.timeCount = minute
        except ValueError:
            return
        self.ui.labelStartTime.setText(self.nowTimeText)
        self.dueTime = datetime.now() + timedelta(seconds=minute*60)
        dueTimeText = self.dueTime.strftime(u'%H:%M:%S'.encode('utf8')).decode('utf8')
        self.ui.labelEndTime.setText(dueTimeText)

        self.ui.btnStartTimer.setDisabled(True)
        self.ui.btnComplete.setDisabled(False)
        self.ui.btnDiscard.setDisabled(False)
        #then timer
        self.mainTimer = QTimer()
        self.mainTimer.singleShot(minute*60*1000, self, SLOT('timeOutMsg()'))

        self.mission = DB.dailyEvent()
        desc = self.ui.LEDescription.toPlainText()
        if len(desc) != 0:
            self.mission.setDescription(desc)

        self.resetIntervalTimer()

    def resetIntervalTimer(self):
        if None == self.intervalTimer:
            self.intervalTimer = QTimer()
            self.connect(self.intervalTimer, SIGNAL('timeout()'), self.intervalNoticeMsg)
        else:
            self.intervalTimer.stop()

        self.intervalNoticeTime = self.ui.intervalNoticeEdit.text()
        if self.intervalNoticeTime != '':
            try:
                self.intervalNoticeTime = float(self.intervalNoticeTime)
            except ValueError:
                return
            self.intervalCount = 0
            self.intervalTimer.start(self.intervalNoticeTime*60*1000)

    @pyqtSlot()
    def missionDiscarded(self):
        #db
        self.mission.setDiscarded()
        self.mission.setEndTimeNow()
        self.mission.storeEvent()
        #ui
        self.ui.btnComplete.setDisabled(True)
        self.ui.btnDiscard.setDisabled(True)
        self.ui.btnStartTimer.setDisabled(False)
        self.updateProgress()
        #timers
        self.mainTimer.stop()
        self.intervalTimer.stop()
        self.intervalCount = 0
        #TODO duplicated code!
        #TODO ui state change waiting -> in progress -> waiting

    @pyqtSlot()
    def intervalNoticeMsg(self):
        if not self.mission.isComplete() and not self.mission.isDiscarded():
            self.intervalCount = self.intervalCount + 1
            self.systemTray.showMessage(u'友情提醒', u'已经过了'+unicode(self.intervalCount)+u'个'+unicode(self.intervalNoticeTime)+u'分钟\n'+u'有木有!'*20, QSystemTrayIcon.Information, 2000)
            self.updateProgress()


    @pyqtSlot()
    def missionComplete(self):
        #db
        self.mission.setEndTimeNow()
        self.mission.setComplete()
        #if complete in 30s, marked as not timeouted
        if datetime.now() > self.dueTime + timedelta(seconds=30):
            self.mission.setTimeouted()

        self.mission.storeEvent()
        #ui
        self.ui.btnComplete.setDisabled(True)
        self.ui.btnDiscard.setDisabled(True)
        self.ui.btnStartTimer.setDisabled(False)
        self.updateProgress()
        #timer
        self.intervalCount = 0
        if self.mainTimer:
            self.mainTimer.stop()

    @pyqtSlot()
    def noTrayClose(self):
        self.quitWithoutTray = True
        self.close()
        sys.exit()

    @pyqtSlot()
    def timeOutMsg(self):
        if self.dueTime+timedelta(milliseconds=100) > datetime.now() > self.dueTime and not self.mission.isComplete():
            #if this is the right timeoutMsg, that is, not a discarded one, so, in the interval
            self.mainTimer.stop()
            self.msgLabel.setWindowFlags(Qt.FramelessWindowHint)
            self.msgLabel.setGeometry(self.msgLabel.width(), self.msgLabel.height(), self.size().width(), self.size().height())
            self.msgLabel.show()

    @pyqtSlot()
    def updateStartTime(self):
        text = self.ui.lineEditStartTime.text()
        if len(text) < 1:
            self.nowTimeText = time.strftime(u'%H:%M:%S'.encode('utf-8')).decode('utf-8') 
            text =  self.nowTimeText
        else:
            infer = TimeInference(text)

        self.ui.labelStartTime.setText(text)

    def updateProgress(self):
        startTime = self.mission.startTime
        nowTime = datetime.now()
        usedSeconds = (nowTime-startTime).seconds
        progress = usedSeconds / float(self.timeCount*60)
        progress = 1 if progress > 1 else progress
        self.ui.progressBar.setValue(int(progress * 100))
        pass

    def createSystemTray(self):
        self.systemTray = QSystemTrayIcon(self)
        self.trayIcon = QIcon(':/systemTray/tray.ico')
        self.trayMenu = QMenu(self)
        self.exitAction = QAction(u'退出', self)
        self.showAction = QAction(u'显示', self)
        self.connect(self.exitAction, SIGNAL('triggered()'), self.noTrayClose)
        self.connect(self.showAction, SIGNAL('triggered()'), self.show)
        self.trayMenu.addAction(self.exitAction)
        self.trayMenu.addAction(self.showAction)
        self.systemTray.setContextMenu(self.trayMenu)
        self.systemTray.setIcon(self.trayIcon)
        #self.connect(self.systemTray, SIGNAL('activated(int)'), self.trayActivated)
        self.systemTray.activated.connect(self.trayActivated)
        self.systemTray.show()
    pass
示例#2
0
class MyMainWindow(QMainWindow):
    """ the widget """
    def __init__(self):
        ''' the init function '''
        QWidget.__init__(self)
        self.createSystemTray()
        self.createUI()
        self.createConnections()
        self.createActions()
        self.setWindowTitle(u'定时器')
        #then the size policy
        self.setSizePolicy(QSizePolicy.Maximum, QSizePolicy.Maximum)
        self.quitWithoutTray = False
        #then the positon/geometry
        self.setGeometry(400, 400, self.size().width(), self.size().height())

        self.mission = None
        self.intervalTimer = None
        DB.initTables()

    def closeEvent(self, evt):
        '''
        override the closeEvent to decide whether use systemTray
        '''
        if self.quitWithoutTray:
            if None != self.mission:
                self.mission.storeEvent()
            evt.accept()
        else:
            self.hide()
            evt.ignore()

    def showAllShortCut(self):
        '''
        not implemented
        show all shortcuts set
        '''
        pass

    def keyPressEvent(self, evt):
        if evt.key() == Qt.Key_Escape or (evt.key() == Qt.Key_W\
                and evt.modifiers() & Qt.ControlModifier):
            self.hide()
            self.msgLabel.hide()  #TODO no esc effect
            if self.msgLabel.isVisible():
                self.msgLabel.hide()
        elif (evt.key() == Qt.Key_Q and evt.modifiers() & Qt.ControlModifier):
            self.noTrayClose()
        #global shortcut to invoke the app, not implemented
        elif (evt.key() == Qt.Key_T and evt.modifiers() & Qt.AltModifier):
            self.show()
        else:
            QWidget.keyPressEvent(self, evt)

    @pyqtSlot(int)
    def trayActivated(self, reason):
        if QSystemTrayIcon.DoubleClick == reason or QSystemTrayIcon.Trigger == reason:
            self.show()

    def createUI(self):
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        self.nowTimeText = time.strftime(
            u'%H:%M:%S'.encode('utf-8')).decode('utf-8')
        self.ui.labelStartTime.setText(self.nowTimeText)
        self.ui.labelEndTime.setText('')
        self.ui.lineEditTimeCount.setFocus()
        self.msgLabel = MyLabel(u'<h1>时间到!</h1><img src=":/img/38.gif"/>')
        self.msgLabel.hide()
        self.msgLabel.setBuddy(self)
        self.ui.btnComplete.setDisabled(True)
        self.ui.btnDiscard.setDisabled(True)

    def createConnections(self):
        self.connect(self.ui.btnStartTimer, SIGNAL('clicked()'), \
                self.startTimer)
        self.connect(self.ui.btnComplete, SIGNAL('clicked()'), \
                self.missionComplete)
        self.connect(self.ui.btnDiscard, SIGNAL('clicked()'), \
                self.missionDiscarded)

    def createActions(self):
        self.ui.actViewData.setShortcut('Alt+D')
        self.connect(self.ui.actViewData, SIGNAL('triggered()'), self.viewData)

    @pyqtSlot()
    def viewData(self):
        self.dataWidget = getattr(self, 'dataWidget', False)
        if not self.dataWidget:
            self.dataWidget = getWidgetWithData()
        if self.dataWidget.isVisible():
            self.dataWidget.hide()
        else:
            self.dataWidget.show()

    def startTimer(self):
        #ui update
        self.nowTimeText = time.strftime(
            u'%H:%M:%S'.encode('utf-8')).decode('utf-8')
        minute = self.ui.lineEditTimeCount.text()
        try:
            minute = float(minute)
            self.timeCount = minute
        except ValueError:
            return
        self.ui.labelStartTime.setText(self.nowTimeText)
        self.dueTime = datetime.now() + timedelta(seconds=minute * 60)
        dueTimeText = self.dueTime.strftime(
            u'%H:%M:%S'.encode('utf8')).decode('utf8')
        self.ui.labelEndTime.setText(dueTimeText)

        self.ui.btnStartTimer.setDisabled(True)
        self.ui.btnComplete.setDisabled(False)
        self.ui.btnDiscard.setDisabled(False)
        #then timer
        self.mainTimer = QTimer()
        self.mainTimer.singleShot(minute * 60 * 1000, self,
                                  SLOT('timeOutMsg()'))

        self.mission = DB.dailyEvent()
        desc = self.ui.LEDescription.toPlainText()
        if len(desc) != 0:
            self.mission.setDescription(desc)

        self.resetIntervalTimer()

    def resetIntervalTimer(self):
        if None == self.intervalTimer:
            self.intervalTimer = QTimer()
            self.connect(self.intervalTimer, SIGNAL('timeout()'),
                         self.intervalNoticeMsg)
        else:
            self.intervalTimer.stop()

        self.intervalNoticeTime = self.ui.intervalNoticeEdit.text()
        if self.intervalNoticeTime != '':
            try:
                self.intervalNoticeTime = float(self.intervalNoticeTime)
            except ValueError:
                return
            self.intervalCount = 0
            self.intervalTimer.start(self.intervalNoticeTime * 60 * 1000)

    @pyqtSlot()
    def missionDiscarded(self):
        #db
        self.mission.setDiscarded()
        self.mission.setEndTimeNow()
        self.mission.storeEvent()
        #ui
        self.ui.btnComplete.setDisabled(True)
        self.ui.btnDiscard.setDisabled(True)
        self.ui.btnStartTimer.setDisabled(False)
        self.updateProgress()
        #timers
        self.mainTimer.stop()
        self.intervalTimer.stop()
        self.intervalCount = 0
        #TODO duplicated code!
        #TODO ui state change waiting -> in progress -> waiting

    @pyqtSlot()
    def intervalNoticeMsg(self):
        if not self.mission.isComplete() and not self.mission.isDiscarded():
            self.intervalCount = self.intervalCount + 1
            self.systemTray.showMessage(
                u'友情提醒', u'已经过了' + unicode(self.intervalCount) + u'个' +
                unicode(self.intervalNoticeTime) + u'分钟\n' + u'有木有!' * 20,
                QSystemTrayIcon.Information, 2000)
            self.updateProgress()

    @pyqtSlot()
    def missionComplete(self):
        #db
        self.mission.setEndTimeNow()
        self.mission.setComplete()
        #if complete in 30s, marked as not timeouted
        if datetime.now() > self.dueTime + timedelta(seconds=30):
            self.mission.setTimeouted()

        self.mission.storeEvent()
        #ui
        self.ui.btnComplete.setDisabled(True)
        self.ui.btnDiscard.setDisabled(True)
        self.ui.btnStartTimer.setDisabled(False)
        self.updateProgress()
        #timer
        self.intervalCount = 0
        if self.mainTimer:
            self.mainTimer.stop()

    @pyqtSlot()
    def noTrayClose(self):
        self.quitWithoutTray = True
        self.close()
        sys.exit()

    @pyqtSlot()
    def timeOutMsg(self):
        if self.dueTime + timedelta(milliseconds=100) > datetime.now(
        ) > self.dueTime and not self.mission.isComplete():
            #if this is the right timeoutMsg, that is, not a discarded one, so, in the interval
            self.mainTimer.stop()
            self.msgLabel.setWindowFlags(Qt.FramelessWindowHint)
            self.msgLabel.setGeometry(self.msgLabel.width(),
                                      self.msgLabel.height(),
                                      self.size().width(),
                                      self.size().height())
            self.msgLabel.show()

    @pyqtSlot()
    def updateStartTime(self):
        text = self.ui.lineEditStartTime.text()
        if len(text) < 1:
            self.nowTimeText = time.strftime(
                u'%H:%M:%S'.encode('utf-8')).decode('utf-8')
            text = self.nowTimeText
        else:
            infer = TimeInference(text)

        self.ui.labelStartTime.setText(text)

    def updateProgress(self):
        startTime = self.mission.startTime
        nowTime = datetime.now()
        usedSeconds = (nowTime - startTime).seconds
        progress = usedSeconds / float(self.timeCount * 60)
        progress = 1 if progress > 1 else progress
        self.ui.progressBar.setValue(int(progress * 100))
        pass

    def createSystemTray(self):
        self.systemTray = QSystemTrayIcon(self)
        self.trayIcon = QIcon(':/systemTray/tray.ico')
        self.trayMenu = QMenu(self)
        self.exitAction = QAction(u'退出', self)
        self.showAction = QAction(u'显示', self)
        self.connect(self.exitAction, SIGNAL('triggered()'), self.noTrayClose)
        self.connect(self.showAction, SIGNAL('triggered()'), self.show)
        self.trayMenu.addAction(self.exitAction)
        self.trayMenu.addAction(self.showAction)
        self.systemTray.setContextMenu(self.trayMenu)
        self.systemTray.setIcon(self.trayIcon)
        #self.connect(self.systemTray, SIGNAL('activated(int)'), self.trayActivated)
        self.systemTray.activated.connect(self.trayActivated)
        self.systemTray.show()

    pass
示例#3
0
class Ui_Form(object):
    def setupUi(self, Form):
        Form.setObjectName(_fromUtf8("Form"))
        Form.resize(1081, 599)
        icon = QtGui.QIcon()
        icon.addPixmap(QtGui.QPixmap(_fromUtf8(":/images/funcell.png")),
                       QtGui.QIcon.Normal, QtGui.QIcon.Off)
        Form.setWindowIcon(icon)
        Form.setStyleSheet(
            _fromUtf8(
                "QToolButton[objectName=\"closetoolButton\"] {\n"
                "border:0px;\n"
                "}\n"
                "QToolButton[objectName=\"closetoolButton\"]:hover {\n"
                "image:url(:/images/close_hover.png);\n"
                "}\n"
                "QToolButton[objectName=\"closetoolButton\"]:pressed {\n"
                "image:url(:/images/close_pressed.png);\n"
                "}\n"
                "\n"
                "QToolButton[objectName=\"closetoolButton_2\"] {\n"
                "border:0px;\n"
                "}\n"
                "QToolButton[objectName=\"closetoolButton_2\"]:hover {\n"
                "image:url(:/images/min_hover.png);\n"
                "}\n"
                "QToolButton[objectName=\"closetoolButton_2\"]:pressed {\n"
                "image:url(:/images/min_pressed.png);\n"
                "}\n"
                "\n"
                "QWidget[objectName=\"Form\"]{\n"
                "border-image:url(\":/images/funcell_bg.png\");\n"
                "}\n"
                "\n"
                "QToolButton[objectName=\"toolButton\"]{\n"
                "background-color: rgb(85, 255, 127);\n"
                "border-radius: 10px;\n"
                "}\n"
                "QLineEdit[objectName=\"lineEdit\"],QLineEdit[objectName=\"lineEdit_2\"]{\n"
                "border:0px;\n"
                "background-color:transparent;\n"
                "}\n"
                "QCheckBox[objectName=\"checkBox\"],QLabel[objectName=\"label_3\"],QLineEdit[objectName=\"lineEdit\"],QLineEdit[objectName=\"lineEdit_2\"]{\n"
                "font-family:\'微软雅黑\';\n"
                "color:white;\n"
                "}\n"
                "\n"
                "QLabel[objectName=\"label_4\"],QLabel[objectName=\"label_5\"]{\n"
                "font-family:\'微软雅黑\';\n"
                "color:red;\n"
                "}\n"
                ""))
        self.widget = QtGui.QWidget(Form)
        self.widget.setGeometry(QtCore.QRect(-1, -1, 1081, 601))
        self.widget.setObjectName(_fromUtf8("widget"))
        self.line_2 = QtGui.QFrame(self.widget)
        self.line_2.setGeometry(QtCore.QRect(320, 225, 420, 3))
        self.line_2.setFrameShape(QtGui.QFrame.HLine)
        self.line_2.setFrameShadow(QtGui.QFrame.Sunken)
        self.line_2.setObjectName(_fromUtf8("line_2"))
        self.label = QtGui.QLabel(self.widget)
        self.label.setGeometry(QtCore.QRect(320, 182, 30, 30))
        self.label.setText(_fromUtf8(""))
        self.label.setPixmap(QtGui.QPixmap(_fromUtf8(":/images/use.png")))
        self.label.setObjectName(_fromUtf8("label"))
        self.line_3 = QtGui.QFrame(self.widget)
        self.line_3.setGeometry(QtCore.QRect(320, 295, 420, 3))
        self.line_3.setFrameShape(QtGui.QFrame.HLine)
        self.line_3.setFrameShadow(QtGui.QFrame.Sunken)
        self.line_3.setObjectName(_fromUtf8("line_3"))
        self.checkBox = QtGui.QCheckBox(self.widget)
        self.checkBox.setGeometry(QtCore.QRect(670, 365, 71, 16))
        self.checkBox.setChecked(True)
        self.checkBox.setObjectName(_fromUtf8("checkBox"))
        self.toolButton = QtGui.QToolButton(self.widget)
        self.toolButton.setGeometry(QtCore.QRect(320, 425, 420, 61))
        self.toolButton.setAutoRepeat(False)
        self.toolButton.setToolButtonStyle(QtCore.Qt.ToolButtonTextBesideIcon)
        self.toolButton.setObjectName(_fromUtf8("toolButton"))
        self.lineEdit = QtGui.QLineEdit(self.widget)
        self.lineEdit.setGeometry(QtCore.QRect(390, 185, 321, 25))
        font = QtGui.QFont()
        font.setFamily(_fromUtf8("微软雅黑"))
        self.lineEdit.setFont(font)
        self.lineEdit.setText(_fromUtf8(""))
        self.lineEdit.setObjectName(_fromUtf8("lineEdit"))
        self.line_4 = QtGui.QFrame(self.widget)
        self.line_4.setGeometry(QtCore.QRect(360, 255, 3, 25))
        self.line_4.setFrameShape(QtGui.QFrame.VLine)
        self.line_4.setFrameShadow(QtGui.QFrame.Sunken)
        self.line_4.setObjectName(_fromUtf8("line_4"))
        self.lineEdit_2 = QtGui.QLineEdit(self.widget)
        self.lineEdit_2.setGeometry(QtCore.QRect(390, 255, 321, 25))
        font = QtGui.QFont()
        font.setFamily(_fromUtf8("微软雅黑"))
        self.lineEdit_2.setFont(font)
        self.lineEdit_2.setText(_fromUtf8(""))
        self.lineEdit_2.setEchoMode(QtGui.QLineEdit.Password)
        self.lineEdit_2.setObjectName(_fromUtf8("lineEdit_2"))
        self.line = QtGui.QFrame(self.widget)
        self.line.setGeometry(QtCore.QRect(360, 185, 3, 25))
        self.line.setFrameShape(QtGui.QFrame.VLine)
        self.line.setFrameShadow(QtGui.QFrame.Sunken)
        self.line.setObjectName(_fromUtf8("line"))
        #         self.label_3 = QtGui.QLabel(self.widget)
        #         self.label_3.setGeometry(QtCore.QRect(640, 525, 105, 31))
        #         self.label_3.setObjectName(_fromUtf8("label_3"))
        self.label_3 = MyLabel(self)
        self.label_3.setGeometry(QtCore.QRect(640, 525, 105, 31))
        self.label_3.setObjectName(_fromUtf8("label_3"))
        self.label_3.setCursor(QtGui.QCursor(QtCore.Qt.PointingHandCursor))
        self.label_2 = QtGui.QLabel(self.widget)
        self.label_2.setGeometry(QtCore.QRect(320, 250, 30, 30))
        self.label_2.setText(_fromUtf8(""))
        self.label_2.setPixmap(QtGui.QPixmap(_fromUtf8(":/images/suo.png")))
        self.label_2.setObjectName(_fromUtf8("label_2"))
        self.closetoolButton = QtGui.QToolButton(self.widget)
        self.closetoolButton.setGeometry(QtCore.QRect(1050, 5, 27, 22))
        icon = QtGui.QIcon()
        icon.addPixmap(QtGui.QPixmap(_fromUtf8(":/images/close_normal.png")),
                       QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.closetoolButton.setIcon(icon)
        self.closetoolButton.setIconSize(QtCore.QSize(27, 22))
        self.closetoolButton.setObjectName(_fromUtf8("closetoolButton"))
        self.closetoolButton_2 = QtGui.QToolButton(self.widget)
        self.closetoolButton_2.setGeometry(QtCore.QRect(1020, 5, 27, 22))
        icon1 = QtGui.QIcon()
        icon1.addPixmap(QtGui.QPixmap(_fromUtf8(":/images/min_normal.png")),
                        QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.closetoolButton_2.setIcon(icon1)
        self.closetoolButton_2.setIconSize(QtCore.QSize(27, 22))
        self.closetoolButton_2.setObjectName(_fromUtf8("closetoolButton_2"))
        self.label_4 = QtGui.QLabel(self.widget)
        self.label_4.setGeometry(QtCore.QRect(770, 210, 105, 31))
        self.label_4.setObjectName(_fromUtf8("label_4"))
        self.label_5 = QtGui.QLabel(self.widget)
        self.label_5.setGeometry(QtCore.QRect(770, 280, 105, 31))
        self.label_5.setObjectName(_fromUtf8("label_5"))

        self.retranslateUi(Form)
        QtCore.QMetaObject.connectSlotsByName(Form)
        self.closetoolButton.clicked.connect(self.close)
        self.closetoolButton_2.clicked.connect(self.showMinimized)
        self.toolButton.clicked.connect(self.LoginTask)
        self.initUserInfo()

    def retranslateUi(self, Form):
        Form.setWindowTitle(_translate("Form", "请登录", None))
        self.checkBox.setText(_translate("Form", "记住密码", None))
        self.toolButton.setText(_translate("Form", "登 录", None))
        self.label_3.setText(_translate("Form", "没有帐号?立即注册", None))
        self.closetoolButton.setText(_translate("Form", "...", None))
        self.closetoolButton_2.setText(_translate("Form", "...", None))
        self.label_4.setText(_translate("Form", "游戏ProductCode", None))
        self.label_5.setText(_translate("Form", "游戏ProductKey", None))

    def mouseMoveEvent(self, event):
        if (event.buttons() == Qt.LeftButton):
            self.endPos = event.globalPos() - self.startPos
            self.move(self.endPos)

    def mousePressEvent(self, event):

        if (event.button() == Qt.LeftButton):
            self.startPos = event.globalPos() - self.frameGeometry().topLeft()

        elif (event.button() == Qt.MiddleButton):
            self.closeWindowAnimation()

    def registerTask(self):
        print 'register user'

    def saveUserInfo(self):
        GameFile = file_operate.getFullPath("Log/GameFile.log")
        checkflag = "False"
        if self.checkBox.isChecked():
            checkflag = "True"
        info = self.lineEdit.text() + '|' + self.lineEdit_2.text(
        ) + '|' + checkflag

        logFile = codecs.open(GameFile, 'w', 'utf-8')
        content = info + '\r\n'
        logFile.write(unicode(content, 'gbk'))
        logFile.close()

    def initUserInfo(self):
        GameFile = file_operate.getFullPath("Log/GameFile.log")
        if not os.path.exists('Log'):
            os.makedirs('Log')
        if os.path.exists(GameFile):
            f = open(GameFile, 'a+')
            data = str(f.read())
            f.close()
            if len(data) > 0 and data.find('|') != -1:
                logFile = codecs.open(GameFile, 'a+', 'utf-8')
                for line in logFile.readlines():
                    line = line.rstrip("\r\n")
                    Info = line.split('|')
                    if Info[2] == "True":
                        self.lineEdit.setText(Info[0])
                        self.lineEdit_2.setText(Info[1])
                        self.checkBox.setChecked(True)
                    else:
                        self.checkBox.setChecked(False)
                    break

    def getHostAddress(self):
        address = ''
        try:
            config = ET.parse(file_operate.getCommonXmlPath())
            root = config.getroot()
            host = root.find("host")
            address = host.get("address")
        except Exception, e:
            print e
            print "Error: cannot parse file: commonconfig.xml."
            return -1
        return address