Example #1
0
        static DataWeek LoadWeek(string filePath, DataWeek dataWeek = null)
        {
            if (dataWeek == null)
            {
                dataWeek = new DataWeek();
                dataWeek.FillDefault(
                    GetStartDateForFilePath(filePath));
            }

            // If file of data is exist then read file and fill the array of tasks
            if (File.Exists(filePath))
            {
                string[] dataDays = File.ReadAllLines(filePath);

                foreach (var dataDay in dataDays)
                {
                    if (dataDay == string.Empty)
                    {
                        continue;
                    }

                    // Split the value up half by char '=' (index 0 is a day name, index 1 is data of tasks)
                    var data = Crypt(dataDay).Split('=');

                    DayOfWeek dayOfWeek = (DayOfWeek)Enum.Parse(typeof(DayOfWeek), data[0], true);

                    DataDay day = dataWeek.days[dayOfWeek];

                    // Split the value up on a tasks by char '*'
                    var dataTasks = data[1].Split('*');

                    foreach (var task in dataTasks)
                    {
                        if (task == string.Empty)
                        {
                            continue;
                        }

                        // Split the value up by char '!' and get the array of values of class 'DateTask'
                        var values = task.Split('!');

                        DataTask newTask = new DataTask(values[0], values[1], int.Parse(values[4]), int.Parse(values[2]), bool.Parse(values[3]));

                        day.tasks.Add(newTask);
                    }
                }
            }

            return(dataWeek);
        }
Example #2
0
        private void Load(DateTime dateTime, string path)
        {
            if (taskStarted)
            {
                StopTimer();
            }

            days.Clear();
            Day.dragDropDatas.Clear();

            /// Create a tasks from the loaded data
            selectedDataWeek = FileManager.LoadWeek(dateTime, path);

            switch (applicationMode)
            {
            case ApplicationMode.Day:
                /// Create the day data
                selectedDataDay = selectedDataWeek.GetDay(dateTime);

                CreateDayGUI(selectedDataDay);

                break;

            case ApplicationMode.Week:
                /// Create the week data

                foreach (var d in selectedDataWeek.days)
                {
                    CreateDayGUI(d.Value);
                }

                break;
            }

            /// Update the data of interface
            labelInfoDay.Content = $"The selected date is {dateTime.Day}.{dateTime.Month}.{dateTime.Year}";
            taskDescription.Document.Blocks.Clear();

            selectedTasks.Clear();

            UpdateTimerInfo();
            UpdateTotalTime();
            UpdateButtonsTimer();

            dataChanged = false;
        }
Example #3
0
        public override bool Equals(Object obj)
        {
            // Check for null values and compare run-time types.
            if (obj == null || GetType() != obj.GetType())
            {
                return(false);
            }

            DataWeek d = (DataWeek)obj;

            DataDay thisMonday  = days[DayOfWeek.Monday];
            DataDay otherMonday = d.days[DayOfWeek.Monday];

            // Compare only Monday with Monday, because it's easily, than compare all days each other
            return((thisMonday.date.day == otherMonday.date.day) &&
                   (thisMonday.date.month == otherMonday.date.month) &&
                   (thisMonday.date.year == otherMonday.date.year));
        }
Example #4
0
        public static DataWeek LoadWeek(DateTime dateTime, string path)
        {
            // Getting a days of selected week
            DateOfWeek[] dates = GetWeek(dateTime);

            string filePath = $"{path}{dates[0].date.day} {dates[0].date.month} {dates[0].date.year}" +
                              $"-{dates[6].date.day} {dates[6].date.month} {dates[6].date.year}.week";

            // Creating a array days of week
            DataWeek dataWeek = new DataWeek();

            // Set default values
            foreach (var d in dates)
            {
                DataDay newDay = new DataDay(d.date);
                newDay.dayOfWeek = d.dayOfWeek;
                dataWeek.days.Add(d.dayOfWeek, newDay);
            }

            return(LoadWeek(filePath, dataWeek));
        }
Example #5
0
        public static void SaveWeek(DataWeek week, string path)
        {
            if (week == null)
            {
                return;
            }

            string filePath = $"{path}{week.days[DayOfWeek.Monday].date.day} {week.days[DayOfWeek.Monday].date.month} {week.days[DayOfWeek.Monday].date.year}" +
                              $"-{week.days[DayOfWeek.Sunday].date.day} {week.days[DayOfWeek.Sunday].date.month} {week.days[DayOfWeek.Sunday].date.year}.week";

            // If an all tasks of week is empty then removing the file
            if (week.isEmpty && File.Exists(filePath))
            {
                File.Delete(filePath);
                return;
            }

            // Writing a days of week to file
            StreamWriter stream = new StreamWriter(filePath);

            foreach (var d in week.days)
            {
                if (d.Value.tasks.Count > 0)
                {
                    string text = $"{d.Key.ToString()}=";

                    foreach (var t in d.Value.tasks)
                    {
                        text += $"{t.TaskName}!{t.Info}!{t.Tomatoes}!{t.IsDone}!{(int)t.TotalTime.TotalSeconds}*";
                    }

                    stream.WriteLine(Crypt(text));
                }
            }

            stream.Close();
        }
Example #6
0
        /// <summary>
        /// Copy a task to custom dates
        /// </summary>
        private void CopyTasksInto(SelectedDatesCollection dates)
        {
            if (dates == null || dates.Count == 0)
            {
                return;
            }

            List <DataWeek> weeks = new List <DataWeek>();

            // Check if current week was update
            bool update = false;

            // Get copies data tasks which need copy
            var copiesTasks = GetCopiesOfSelectedTasks();

            foreach (var d in dates)
            {
                // Search a date in a list of loaded weeks
                int indexWeek = weeks.FindIndex((w) => w.HasDate(d));

                // If it's found then to add tasks into a task list
                if (indexWeek >= 0)
                {
                    foreach (var t in copiesTasks)
                    {
                        weeks[indexWeek].days[d.DayOfWeek].tasks.Add(t);
                    }
                }

                // Otherwise, load a needed week and add it into a list then add task copies
                else
                {
                    if (!weeks.Contains(selectedDataWeek) && selectedDataWeek.HasDate(d))
                    {
                        update      = true;
                        dataChanged = false;

                        if (taskStarted)
                        {
                            StopTimer();
                        }

                        foreach (var t in copiesTasks)
                        {
                            selectedDataWeek.days[d.DayOfWeek].tasks.Add(t);
                        }

                        weeks.Add(selectedDataWeek);
                    }
                    else
                    {
                        DataWeek newWeek = FileManager.LoadWeek(d, GlobalSettings.pathData);

                        foreach (var t in copiesTasks)
                        {
                            newWeek.days[d.DayOfWeek].tasks.Add(t);
                        }

                        weeks.Add(newWeek);
                    }
                }
            }

            // Save changes
            foreach (var w in weeks)
            {
                FileManager.SaveWeek(w, GlobalSettings.pathData);
            }

            if (update)
            {
                LoadCalendarDate(calendar);
            }
        }