Skip to content
Snippets Groups Projects
group_edit_controller.py 2.6 KiB
Newer Older
from PyQt5.QtWidgets import QLineEdit
from model.qtmodels.person_table_model import PersonTableModel
from utils.person_table import PersonTable
from windows import groupedit
from PyQt5 import QtWidgets as Qt
Jakub Štercl's avatar
Jakub Štercl committed
class GroupEdit(Qt.QWidget, groupedit.Ui_Form):
    NEW_GROUP = 0
    def __init__(self, main_window, group, parent=None):
Jakub Štercl's avatar
Jakub Štercl committed
        super(GroupEdit, self).__init__(parent)
        self.main_window = main_window
        if group == self.NEW_GROUP:
            self.setGroup(Group(Group.NEW_GROUP))
        else:
            self.setGroup(group)
        self._editName = QLineEdit()

        # insert others table
        self.othersTable = PersonTable()
        self.layoutOthers.insertWidget(1, self.othersTable)

        self.btnDelete.clicked.connect(self.deleteGroup)
        self.btnChangeName.clicked.connect(self.editName)

    def setGroup(self, group):
        self.group = group
        self.personTable = PersonTable(group.getMembers())
        self.layoutMembers.insertWidget(1, self.personTable)
        self.lblName.setText(group.name)

    def editName(self):
        self.btnChangeName.setText("OK")
        # hide label and remove it from layout
        self.lblName.hide()
        self.layoutName.removeWidget(self.lblName)
        # make line edit the same size
        if self.lblName.width() > 100:
            self._editName.setFixedWidth(self.lblName.width())
        else:
            self._editName.setFixedWidth(100)
        self._editName.setFixedHeight(self.lblName.height())
        # add line edit to layout
        self.layoutName.insertWidget(1, self._editName)
        self._editName.show()
        # change signals of button
        self.btnChangeName.clicked.disconnect(self.editName)
        self.btnChangeName.clicked.connect(self.changeName)

    def changeName(self):
        self._checkName()
        self.btnChangeName.setText("Edit")
        # hide line edit
        self._editName.hide()
        self.layoutName.removeWidget(self._editName)
        #show updated label
        self.layoutName.insertWidget(1, self.lblName)
        self.lblName.setText(self._editName.text())
        self.lblName.show()
        # change signals of button
        self.btnChangeName.clicked.disconnect(self.changeName)
        self.btnChangeName.clicked.connect(self.editName)

    # TODO check name (long enough (but not too much :)), unique ...
    # TODO confirmation (QMessage)
    def deleteGroup(self):
        self.group.delete()
        self.main_window.dataChanged()
        self.main_window.goBack()