class callhistoryGUI(QtGui.QMainWindow):
    def __init__(self, callhistorydb, abookdb=None, abimgdb=None):
        QtGui.QMainWindow.__init__(self)

        self.call_history_list = []
        self.address_book_list = []

        if callhistorydb == None:
            self.callhistorydb = None
        else:
            self.callhistorydb = callhistorydb

        if abimgdb == "" or abimgdb is None:
            self.abimgdb = None
        else:
            self.abimgdb = abimgdb

        if abookdb == "" or abookdb is None:
            self.abookdb = None
        else:
            self.abookdb = abookdb
            self.address_book_list = get_addressbook(self.abookdb, self.abimgdb)

        self.ui = Ui_frmCallHistory()
        self.ui.setupUi(self)
        self.setAttribute(QtCore.Qt.WA_DeleteOnClose)
        QtCore.QObject.connect(self.ui.actionExtract, QtCore.SIGNAL("triggered(bool)"), self.extractApp)
        QtCore.QObject.connect(self.ui.actionReport, QtCore.SIGNAL("triggered(bool)"), self.printReport)

        mode = iOSCallHistoryVersion(self.callhistorydb)
        msgstore = sqlite3.connect(self.callhistorydb)
        msgstore.row_factory = sqlite3.Row
        c1 = msgstore.cursor()

        if mode == "" or mode is None or mode == "Unknown":
            QtGui.QMessageBox.information(self, "Information", "Unsupported iOS version...")
        elif mode == IPHONE_VERSION6:
            self.call_history_list = getCall_list(c1, self.address_book_list)
        elif mode == IPHONE_VERSION8:
            self.call_history_list = getCall_list8(c1, self.address_book_list)
        if self.call_history_list is None:
            QtGui.QMessageBox.information(self, "Information", "No calls found...")
        else:
            callsmodel = CallHistoryTableModel(self.call_history_list)
            self.ui.tableViewCalls.setModel(callsmodel)

    def extractApp(self):
        QtGui.QMessageBox.information(self, "Information", "Not implemented yet...")

    def printReport(self):

        path = expanduser("~")
        outdir = QtGui.QFileDialog.getExistingDirectory(self, "Open Directory", path,
                                                            QtGui.QFileDialog.ShowDirsOnly | QtGui.QFileDialog.DontResolveSymlinks);

        if (outdir == None) or (len(outdir) == 0):
            return None

        outfile = outdir + "/CallHistory-Report"
        printHTMLReport(outfile, self.call_hisotry_list)
    def __init__(self, callhistorydb, abookdb=None, abimgdb=None):
        QtGui.QMainWindow.__init__(self)

        self.call_history_list = []
        self.address_book_list = []

        if callhistorydb == None:
            self.callhistorydb = None
        else:
            self.callhistorydb = callhistorydb

        if abimgdb == "" or abimgdb is None:
            self.abimgdb = None
        else:
            self.abimgdb = abimgdb

        if abookdb == "" or abookdb is None:
            self.abookdb = None
        else:
            self.abookdb = abookdb
            self.address_book_list = get_addressbook(self.abookdb, self.abimgdb)

        self.ui = Ui_frmCallHistory()
        self.ui.setupUi(self)
        self.setAttribute(QtCore.Qt.WA_DeleteOnClose)
        QtCore.QObject.connect(self.ui.actionExtract, QtCore.SIGNAL("triggered(bool)"), self.extractApp)
        QtCore.QObject.connect(self.ui.actionReport, QtCore.SIGNAL("triggered(bool)"), self.printReport)

        mode = iOSCallHistoryVersion(self.callhistorydb)
        msgstore = sqlite3.connect(self.callhistorydb)
        msgstore.row_factory = sqlite3.Row
        c1 = msgstore.cursor()

        if mode == "" or mode is None or mode == "Unknown":
            QtGui.QMessageBox.information(self, "Information", "Unsupported iOS version...")
        elif mode == IPHONE_VERSION6:
            self.call_history_list = getCall_list(c1, self.address_book_list)
        elif mode == IPHONE_VERSION8:
            self.call_history_list = getCall_list8(c1, self.address_book_list)
        if self.call_history_list is None:
            QtGui.QMessageBox.information(self, "Information", "No calls found...")
        else:
            callsmodel = CallHistoryTableModel(self.call_history_list)
            self.ui.tableViewCalls.setModel(callsmodel)