public override SavedState SaveState()
    {
        List <SavedState> subtaskStates = new List <SavedState>();
        //saving all the subtasks
        int i = 0;

        foreach (Subtask_Controller subtask in m_Subtasks.Values)
        {
            subtaskStates.Add(subtask.Serialize());
            i++;
        }
        TaskModelState taskState = new TaskModelState(subtaskStates);

        return(taskState);
    }
    public override void Deserialize(SavedState _savedState)
    {
        base.Deserialize(_savedState);
        CleanDatas();
        TaskModelState state = ((TaskModelState)_savedState);
        SubtaskState   subtask;

        for (int i = 0; i < state.SubtasksDatas.Length; i++)
        {
            subtask = ((SubtaskState)state.SubtasksDatas[i]);
            m_view.LoadSubtask(subtask.Name, subtask.Software);
            //onLoadSubtask(this, new LoadSubtaskEvent(subtask)); //send the subtask datas to the view part to update it
        }
        m_model.Load(state);
    }