SUAI-TaskPlanner-Contest / TaskPlanner

Client application for working with todos and syncing with CalDAV servers
MIT License
3 stars 2 forks source link

Создать обработчик конфликтов по сигналу #90

Closed astronik00 closed 1 year ago

astronik00 commented 1 year ago

class MainWindow(QObject)
    detectedConflicts = pyqtSignal(list, arguments=['conficted_tasks'])

    def __init__(self, server_service, task_service, caldav_service) -> None:
        super().__init__()

    # остальные методы

    @PyQtSlot()
    def sync_tasks(self):
        tasks_list = self._model.tasks
        conficted_tasks = []
        for task in tasks_list:
             conficted_tasks.append(self.caldav_service.publish_tasks(task))
        while len(conficted_tasks) > 0:
            for i in range(len(conficted_tasks)):
                self.detectedConflicts.emit(conficted_tasks)
                # по этому сигналу нужно открыть окно Merge
                # слева все значения заполнить conficted_tasks[0], справа conficted_tasks[1], в центре вывести conficted_tasks[0]
                # result_task (на основании нажатой кнопки решения конфликта)
                if self.caldav_service.publish_tasks(result_task) == None:
                    conficted_tasks.pop(i)
astronik00 commented 1 year ago

python:

@PyqtSlot(ItemModel)  
def handle_this(task):  
    return /* обработали поля task */

@PyqtSlot()  
def sync_tasks():  
    # ...  
    result_task = detectedConflicts.emit(conflicted_tasks) 

QML:

onDetectedConflicts {  
    return main_handler.handle_this(/* здесь считать поля*/)  
}