Esempio n. 1
0
class AppMain(QtGui.QMainWindow):
    def __init__(self, parent=None):
        super(AppMain, self).__init__(parent)

        self.init_ui()

    def init_ui(self):

        self.fullDealInstance = FullDeal()
        self.settingsDialog = Settings()

        settings_action = QtGui.QAction(QtGui.QIcon("settings.png"), "&Exit", self)
        settings_action.triggered.connect(self.settingsDialog.show)

        self.listWidget = QtGui.QListWidget()
        self.dealFilter = Filter(self)

        VBox = QtGui.QVBoxLayout()
        VBox.setSpacing(5)
        VBox.setMargin(5)

        VBox.addWidget(self.dealFilter, 1)
        VBox.addWidget(self.listWidget, 4)

        centralWidget = QtGui.QWidget(self)
        centralWidget.setLayout(VBox)
        self.setCentralWidget(centralWidget)

        self.network = Network()
        self.response = self.network.getData()
        self.response.finished.connect(self.displayData)

        self.toolbar = self.addToolBar("ToolBar")
        self.toolbar.addAction(settings_action)

        self.dealData = []
        self.allDealData = []

        self.setGeometry(600, 600, 600, 600)
        self.setWindowTitle("TravelDeal")
        self.show()

    def displayData(self):
        self.getClearData()
        self.populateListWidget()

    def getClearData(self):
        if not self.dealData:
            replyByteArray = self.response.readAll()
            QtCore.QObject.deleteLater(self.response)
            replyString = str(replyByteArray.data())
            removedFirst = replyString[1:]
            regex = re.compile(r"(?:\')|(\\n)")
            removed = re.sub(regex, "", removedFirst)
            hercules = re.compile(r'(\\\\")')
            clear = re.sub(hercules, "'", removed)
            replyDict = json.loads(clear)
            self.dealData = replyDict["deals"]
            self.allDealData = self.dealData

        else:
            return

    def populateListWidget(self):
        replyArr = self.dealData
        for i, entry in enumerate(replyArr):
            listItem = ListItem(self.fullDealInstance)
            listItem.set_header(entry["title"])
            listItem.set_description(entry["description"])
            listWidgetItem = QtGui.QListWidgetItem(self.listWidget)
            listWidgetItem.setSizeHint(listItem.sizeHint())
            self.listWidget.addItem(listWidgetItem)
            self.listWidget.setItemWidget(listWidgetItem, listItem)

    def setNewData(self, newData):
        self.dealData = newData
        self.listWidget.clear()
        self.populateListWidget()

    def resetData(self):
        self.dealData = self.allDealData
        self.listWidget.clear()
        self.populateListWidget()