class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.db = DataBase()
        self.widget = Contacts(self.db)
        self.err_win = None
        self.init_ui()

    def init_ui(self):
        self.resize(400, 600)
        self.centre()
        self.setWindowTitle('export_contacts')
        self.setCentralWidget(self.widget)

        vk_action = QAction('&VK', self)
        vk_action.triggered.connect(self.widget.init_ui)

        fb_action = QAction('&Facebook', self)
        fb_action.triggered.connect(lambda: self.widget.init_ui())

        exit_action = QAction('&Exit', self)
        exit_action.triggered.connect(qApp.quit)

        th = Thread(target=self.widget.import_all_contacts)
        import_action = QAction('&Import all contacts', self)
        import_action.triggered.connect(lambda: th.start())

        search_action = QAction('&Find contact', self)
        search_action.triggered.connect(self.find_contact)

        menubar = self.menuBar()
        export = menubar.addMenu('&Export from')

        find_contact = menubar.addMenu('&Find Contact')
        find_contact.addAction(search_action)

        import_cont = menubar.addMenu('&Import all contacts')
        import_cont.addAction(import_action)

        ex = menubar.addMenu('&Exit')
        ex.addAction(exit_action)

        from_vk = export.addMenu('&VK')
        from_fb = export.addMenu('&Facebook')

        from_vk.addAction(vk_action)
        from_fb.addAction(fb_action)

        self.show()
        if self.db.db_exists():
            self.widget.init_ui()

    def find_contact(self):
        name, ok = QInputDialog.getText(self, 'Find contact',
                                        'Enter username')
        if ok:
            if self.widget.dic_wind.get(name) is not None:
                self.widget.dic_wind[name].init_ui()
            else:
                self.err_win = ErrorWindow(
                    'Contact ' + name + ' not found')
                self.err_win.init_ui()

    def centre(self):
        qr = self.frameGeometry()
        cp = QDesktopWidget().availableGeometry().center()
        qr.moveCenter(cp)
        self.move(qr.topLeft())