from PyQt5 import QtWidgets as Qt

from controllers.group_edit_controller import GroupEdit
from controllers.groups_overview_controller import GroupsOverview
from model.qtmodels.group_table_model import GroupTableModel
from model.qtmodels.person_table_model import PersonTableModel
from windows import mainwindow
from globals import Global


class MainWindow(Qt.QMainWindow, mainwindow.Ui_MainWindow):

    def _init_screens(self):
        self._screens = [
            GroupsOverview(self),
        ]
        self._cur_screen = 0

    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)
        self.setupUi(self)
        self._init_screens()
        self.btnBack.clicked.connect(self.goBack)
        for controller in self._screens:
            self.stackedWidget.addWidget(controller)
        self.goToGroupOverview()

    def goToGroupOverview(self):
        self.stackedWidget.setCurrentWidget(self._screens[0])

    # if group_id unfilled - create new group
    def goToGroupEdit(self, group=GroupEdit.NEW_GROUP):
        group_edit = GroupEdit(self, group)
        self._screens.append(group_edit)
        self._cur_screen += 1
        self.stackedWidget.addWidget(group_edit)
        self.stackedWidget.setCurrentWidget(group_edit)

    def goBack(self):
        if self._cur_screen <= 0:
            return
        self._cur_screen -= 1
        self.stackedWidget.setCurrentIndex(self._cur_screen)