def METHOD_NAME(self):
    if self.maybe_defer_update():
        return
    current_key = self.get_role_data_for_current_item(col=self.Columns.NAME, role=self.ROLE_CONTACT_KEY)
    self.model().clear()
    self.update_headers(self.__class__.headers)
    set_current = None
    for key in sorted(self.main_window.contacts.keys()):
        contact_type, name = self.main_window.contacts[key]
        labels = [""] * len(self.Columns)
        labels[self.Columns.NAME] = name
        labels[self.Columns.ADDRESS] = key
        items = [QStandardItem(x) for x in labels]
        items[self.Columns.NAME].setEditable(contact_type != 'openalias')
        items[self.Columns.ADDRESS].setEditable(False)
        items[self.Columns.NAME].setData(key, self.ROLE_CONTACT_KEY)
        row_count = self.model().rowCount()
        self.model().insertRow(row_count, items)
        if key == current_key:
            idx = self.model().index(row_count, self.Columns.NAME)
            set_current = QPersistentModelIndex(idx)
    self.set_current_idx(set_current)
    # FIXME refresh loses sort order; so set "default" here:
    self.sortByColumn(self.Columns.NAME, Qt.AscendingOrder)
    self.filter()
    run_hook('update_contacts_tab', self)