Newer
Older
from PyQt5 import Qt
from PyQt5.QtCore import pyqtSlot
from PyQt5.QtWidgets import QLineEdit
from model.distribution import Distribution
from model.team import Team
from utils.members_drag_drop_table import MembersDragDropTable
from windows import distribution_overview
class DistributionOverview(Qt.QWidget, distribution_overview.Ui_Form):
def __init__(self, main_window, teams, group, parent=None):
super(DistributionOverview, self).__init__(parent)
self.setupUi(self)
self.main_window = main_window
self.teamTables = []
for i, team_name in enumerate(teams):
table = MembersDragDropTable(i, teams[team_name], team_name, self)
table.model.sourceModel().droppedMemberFrom.connect(self.removeMember)
table.deleteClicked.connect(self.removeTeam)
self.teamTables.append(table)
self.gridTeams.addWidget(table, i // 2, i % 2)
self.btnAddTeam.clicked.connect(self.addTeam)
self.btnSave.clicked.connect(self.save)
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
self.btnEditName.clicked.connect(self.editName)
self._editName.textChanged.connect(self.onEditNameChanged)
@pyqtSlot()
def editName(self):
self.btnEditName.setText("OK")
self.lblDistName.hide()
if self.lblDistName.width() > 100:
self._editName.setFixedWidth(self.lblDistName.width())
else:
self._editName.setFixedWidth(100)
self._editName.setFixedHeight(self.lblDistName.height())
self._editName.setText(self.lblDistName.text())
self.layoutName.replaceWidget(self.lblDistName, self._editName)
self._editName.show()
self.btnEditName.clicked.disconnect(self.editName)
self.btnEditName.clicked.connect(self.changeName)
@pyqtSlot()
def changeName(self):
self.btnEditName.setText("Edit")
self._editName.hide()
self.lblDistName.setText(self._editName.text())
self.layoutName.replaceWidget(self._editName, self.lblDistName)
self.lblDistName.show()
self.btnEditName.clicked.disconnect(self.changeName)
self.btnEditName.clicked.connect(self.editName)
@pyqtSlot()
def onEditNameChanged(self):
if 0 < len(self._editName.text()) < 25:
self.btnEditName.setDisabled(False)
else:
self.btnEditName.setDisabled(True)
@pyqtSlot()
def addTeam(self):
table_id = len(self.teamTables)
table = MembersDragDropTable(table_id, [], "Tým " + str(table_id + 1), self)
table.model.sourceModel().droppedMemberFrom.connect(self.removeMember)
table.deleteClicked.connect(self.removeTeam)
self.teamTables.append(table)
self.gridTeams.addWidget(table, table_id // 2, table_id % 2)
@pyqtSlot(int, int)
def removeMember(self, member_id, table_id):
self.teamTables[table_id].removeMember(member_id)
@pyqtSlot(int)
def removeTeam(self, table_id):
if self.teamTables[table_id].isEmpty():
self.teamTables[table_id].hide()
for i in range(len(self.teamTables) - 1, table_id, -1):
self.gridTeams.replaceWidget(self.teamTables[i-1], self.teamTables[i])
self.teamTables[i].id_ -= 1
self.teamTables.pop(table_id)
else:
msg = Qt.QMessageBox(self)
msg.setIcon(Qt.QMessageBox.Critical)
msg.setWindowTitle("Chyba")
msg.setText("Nelze smazat neprázdný tým!")
msg.setStandardButtons(Qt.QMessageBox.Ok)
msg.exec_()
@pyqtSlot()
def save(self):
teams = []
for table in self.teamTables:
team = Team(table.id_, table.name, table.getAllData())
teams.append(team)
distribution = Distribution(self.lblDistName.text(), teams, self.group.id_)
start = timer()
distribution.saveToDb()
print('total time:', timer() - start)
self.main_window.reset()