Example #1
0
class ControlMainWindow(QtGui.QMainWindow):
    updateFeedbackSignal = Signal(str)

    def __init__(self, app):
        super(ControlMainWindow, self).__init__(None)
        # self.settings = QtCore.QSettings("root_window")
        self.app = app
        self.post = Post(self)
        self.widgets = {}
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        self.ui.statusbar.showMessage("Not connected")
        self.show()

        self.post.initSerialBridge()
        self.initUi()

    def initUi(self):
        self.ui.btn_close.clicked.connect(self.close)

        self.widgets["call"] = Call(self)
        self.ui.btn_call.clicked.connect(self.widgets["call"].show)

        self.widgets["import_csv"] = ImportCSV(self)
        self.ui.btn_import_csv.clicked.connect(self.widgets["import_csv"].show)

        self.widgets["received_sms"] = ReceivedSMS(self)
        self.ui.btn_show_sms.clicked.connect(self.widgets["received_sms"].show)

        self.widgets["sent_sms"] = SentSMS(self)
        self.ui.btn_sent_sms.clicked.connect(self.widgets["sent_sms"].show)

        self.widgets["send_sms"] = SendSMS(self)
        self.ui.btn_send_sms.clicked.connect(self.widgets["send_sms"].show)

        self.widgets["incoming_call"] = IncomingCall(self)
        self.widgets["incoming_sms"] = IncomingSMS(self)
        self.updateFeedbackSignal.connect(self.updateFeedback)
        # self.widgets["import_csv"].show()
        # self.widgets["incomding_sms"].show()

    def initSerialBridge(self):
        self.sb = SerialBridge()
        time.sleep(2.0)
        self.sb.send("AT")
        self.sb.trigger_words += [
            "AT", "RING", "ATA", "ATH", "ATD", "CMT", "NO CARRIER"
        ]
        self.sb.callback = self.cbSim

    def cbSim(self, feedback):
        self.updateFeedbackSignal.emit(feedback)

    @Slot(str)
    def updateFeedback(self, feedback):
        print "got feedback"
        if feedback == "RING":
            self.widgets["incoming_call"].incomingCall()
        if feedback == "ATA":
            self.widgets["incoming_call"].callAnswered()
        if feedback == "ATH":
            self.widgets["incoming_call"].callStopped()
            self.widgets["call"].callStopped()
        if "ATD" in feedback:
            self.widgets["call"].callStarted()
        if "AT" == feedback:
            self.ui.statusbar.showMessage("Connected")
        if "CMT" in feedback:
            self.widgets["incoming_sms"].incomingSMS(feedback)
        # if "CMGR" in feedback:
        # self.widgets["incoming_sms"].messageContent(feedback)
        if "NO CARRIER" in feedback:
            self.widgets["incoming_call"].callStopped()

    def keyPressEvent(self, e):
        """Summary
        
        Args:
            e (TYPE): Description
        
        Returns:
            TYPE: Description
        """
        #closes the window on escape
        if e.key() == QtCore.Qt.Key_Escape:
            self.close()

    def closeEvent(self, event):
        try:
            self.sb.close()
        except:
            pass
        for widget in self.widgets.values():
            widget.close()
        super(ControlMainWindow, self).closeEvent(event)