Ejemplo n.º 1
0
        public ViewItemClass(
            DataItemClass dataItem,
            Func <DataItemMegaItem, BaseViewItemHomeworkExam> createHomeworkOrExamMethod = null,
            Func <DataItemSchedule, ViewItemSchedule> createScheduleMethod           = null,
            Func <DataItemWeightCategory, ViewItemWeightCategory> createWeightMethod = null,
            Func <DataItemMegaItem, bool> isHomeworkOrExamChildMethod = null) : base(dataItem)
        {
            if (dataItem.Identifier == dataItem.UpperIdentifier)
            {
                IsNoClassClass = true;
            }

            if (createHomeworkOrExamMethod != null)
            {
                AddHomeworkAndExamChildrenHelper(createHomeworkOrExamMethod, isHomeworkOrExamChildMethod);
            }

            if (createScheduleMethod != null)
            {
                Schedules = new MyObservableList <ViewItemSchedule>();

                AddChildrenHelper(new ViewItemChildrenHelper <DataItemSchedule, ViewItemSchedule>(
                                      isChild: IsChild,
                                      addMethod: Add,
                                      removeMethod: Remove,
                                      createChildMethod: createScheduleMethod,
                                      children: Schedules));
            }

            if (createWeightMethod != null)
            {
                AddWeightChildrenHelper(createWeightMethod);
            }
        }
Ejemplo n.º 2
0
        public async Task TestAddingClass_Defaults()
        {
            DataItemClass c = new DataItemClass()
            {
                Identifier      = Guid.NewGuid(),
                UpperIdentifier = base.CurrentSemesterId,
                Credits         = 3,
                Name            = "Math",
                Details         = "",
                RawColor        = ColorTools.GetArray(Colors.Red, 3)
            };

            DataChanges changes = new DataChanges();

            changes.Add(c);

            await base.DataStore.ProcessLocalChanges(changes);

            var viewModel = await ViewModelClass.LoadAsync(base.LocalAccountId, c.Identifier, DateTime.Today);

            var viewClass = viewModel.Class;

            Assert.AreEqual("Math", viewClass.Name);
            Assert.AreEqual(3, viewClass.Credits);
            Assert.AreEqual("", viewClass.Details);
            Assert.AreEqual(Colors.Red, viewClass.Color);
        }
Ejemplo n.º 3
0
        private async void Save()
        {
            try
            {
                IsEnabled = false;

                var changes = new DataChanges();

                // Class changes
                var c = new DataItemClass()
                {
                    Identifier        = Class.Identifier,
                    DoesRoundGradesUp = RoundGradesUp
                };

                changes.Add(c);

                await TryHandleUserInteractionAsync("Save", async delegate
                {
                    await PowerPlannerApp.Current.SaveChanges(changes);
                }, "Failed to save. Your error has been reported.");
            }

            catch (Exception ex)
            {
                TelemetryExtension.Current?.TrackException(ex);
                await new PortableMessageDialog("Error encountered while saving. Your error report has been sent to the developer.", "Error").ShowAsync();
            }

            finally
            {
                IsEnabled = true;
            }
        }
 private ViewItemClass CreateClass(DataItemClass c)
 {
     return(new ViewItemClass(c,
                              createScheduleMethod: CreateSchedule,
                              createWeightMethod: _includeWeightCategories ? new Func <DataItemWeightCategory, ViewItemWeightCategory>(CreateWeightCategory) : null)
     {
         Semester = Semester
     });
 }
Ejemplo n.º 5
0
        private ViewItemClass CreateClass(DataItemClass dataClass)
        {
            if (dataClass.Identifier == this.Class.Identifier)
            {
                return(this.Class);
            }

            return(new ViewItemClass(dataClass, createWeightMethod: CreateWeightForOtherClasses));
        }
Ejemplo n.º 6
0
 public MainWindow()
 {
     InitializeComponent();
     Closing             += OnWindowClosing;
     main_collection      = new V2MainCollection();
     dataitem             = new DataItemClass();
     this.PreviewKeyDown += new KeyEventHandler(HandleEsc);
     //FrameworkCompatibilityPreferences.KeepTextBoxDisplaySynchronizedWithTextProperty = false;
     UpdateBindings();
 }
Ejemplo n.º 7
0
        private DataItemClass CreateClassSavedInfoDataItem()
        {
            DataItemClass dataItem = new DataItemClass()
            {
                Identifier = Class.Identifier
            };

            PopulateClassSavedInfo(dataItem);

            return(dataItem);
        }
        private void PopulateClassInfo(DataItemClass c)
        {
            if (IncludesEditingDetails)
            {
                c.Details = Details;
            }

            if (IsPartialSemesterClass)
            {
                if (StartDate != null)
                {
                    c.StartDate = DateTime.SpecifyKind(StartDate.Value.Date, DateTimeKind.Utc);
                    if (!SqlDate.IsValid(c.StartDate))
                    {
                        c.StartDate = SqlDate.MinValue;
                    }
                }
                else
                {
                    c.StartDate = SqlDate.MinValue;
                }

                if (EndDate != null)
                {
                    c.EndDate = DateTime.SpecifyKind(EndDate.Value.Date, DateTimeKind.Utc);
                    if (!SqlDate.IsValid(c.EndDate))
                    {
                        c.EndDate = SqlDate.MinValue;
                    }
                }
                else
                {
                    c.EndDate = SqlDate.MinValue;
                }

                if (StartDate != null || EndDate != null)
                {
                    TelemetryExtension.Current?.TrackEvent("UsedClassStartEndDates");
                }
            }

            else
            {
                c.StartDate = SqlDate.MinValue;
                c.EndDate   = SqlDate.MinValue;
            }
        }
Ejemplo n.º 9
0
        private void PopulateClassSavedInfo(DataItemClass dataItem)
        {
            switch (Type)
            {
            case TaskOrEventType.Task:
                dataItem.LastTaskTimeOption = SelectedTimeOption;
                dataItem.LastTaskDueTime    = StartTime;
                break;

            case TaskOrEventType.Event:
                dataItem.LastEventTimeOption = SelectedTimeOption;
                dataItem.LastEventStartTime  = StartTime;
                dataItem.LastEventDuration   = EndTime - StartTime;
                break;

            default:
                throw new NotImplementedException("Unknown item type");
            }
        }
Ejemplo n.º 10
0
        protected override void PopulateFromDataItemOverride(BaseDataItem dataItem)
        {
            base.PopulateFromDataItemOverride(dataItem);

            DataItemClass i = dataItem as DataItemClass;

            CourseNumber             = i.CourseNumber;
            ShouldAverageGradeTotals = i.ShouldAverageGradeTotals;
            DoesRoundGradesUp        = i.DoesRoundGradesUp;
            Color        = i.RawColor;
            Position     = i.Position;
            GradeScales  = i.GetGradeScales() ?? GradeScale.GenerateDefaultScaleWithoutLetters();
            Credits      = i.Credits;
            StartDate    = DateTime.SpecifyKind(i.StartDate, DateTimeKind.Local);
            EndDate      = DateTime.SpecifyKind(i.EndDate, DateTimeKind.Local);
            GpaType      = i.GpaType;
            PassingGrade = i.PassingGrade;

            _needsRecalc = true;
        }
Ejemplo n.º 11
0
        public void Save()
        {
            TryStartDataOperationAndThenNavigate(delegate
            {
                string details = Details.Trim();

                DataItemClass c = new DataItemClass()
                {
                    Identifier = Class.Identifier,
                    Details    = details
                };

                DataChanges editChanges = new DataChanges();
                editChanges.Add(c);
                return(PowerPlannerApp.Current.SaveChanges(editChanges));
            }, delegate
            {
                this.GoBack();
            });
        }
        public async void Save()
        {
            try
            {
                if (!AreScalesValid())
                {
                    await new PortableMessageDialog(PowerPlannerResources.GetString("String_InvalidGradeScalesMessageBody"), PowerPlannerResources.GetString("String_InvalidGradeScalesMessageHeader")).ShowAsync();
                    return;
                }

                GradeScale[] newScales = GradeScales.ToArray();

                DataChanges changes = new DataChanges();

                // Class changes
                {
                    var c = new DataItemClass()
                    {
                        Identifier = Class.Identifier
                    };

                    c.SetGradeScales(newScales);

                    changes.Add(c);
                }

                TryStartDataOperationAndThenNavigate(delegate
                {
                    return(PowerPlannerApp.Current.SaveChanges(changes));
                }, delegate
                {
                    this.RemoveViewModel();
                });
            }

            catch (Exception ex)
            {
                TelemetryExtension.Current?.TrackException(ex);
                await new PortableMessageDialog("Error encountered while saving. Your error report has been sent to the developer.", "Error").ShowAsync();
            }
        }
        public void Save()
        {
            TryStartDataOperationAndThenNavigate(delegate
            {
                DataChanges changes = new DataChanges();

                // Class changes
                var c = new DataItemClass()
                {
                    Identifier   = Class.Identifier,
                    PassingGrade = PassingGrade / 100
                };

                changes.Add(c);

                return(PowerPlannerApp.Current.SaveChanges(changes));
            }, delegate
            {
                this.RemoveViewModel();
            });
        }
Ejemplo n.º 14
0
        public async void Save()
        {
            try
            {
                string name = Name.Trim();
                if (string.IsNullOrWhiteSpace(name))
                {
                    await new PortableMessageDialog(PowerPlannerResources.GetString("String_NoClassNameMessageBody"), PowerPlannerResources.GetString("String_NoNameMessageHeader")).ShowAsync();
                    return;
                }

                if (IsPartialSemesterClass && EndDate != null && StartDate != null && EndDate.Value.Date < StartDate.Value.Date)
                {
                    await new PortableMessageDialog(PowerPlannerResources.GetString("EditSemesterPage_String_StartDateGreaterThanEndExplanation"), PowerPlannerResources.GetString("EditSemesterPage_String_InvalidStartDate")).ShowAsync();
                    return;
                }

                await TryHandleUserInteractionAsync("SaveClass", async (cancellationToken) =>
                {
                    Action recordTelemetryAction = delegate
                    {
                        TelemetryExtension.Current?.TrackEvent("SavedClass", new Dictionary <string, string>
                        {
                            { "State", State.ToString() },
                            { "UsingCustomColor", (!ColorItem.DefaultColors.Any(i => i.Equals(Color))).ToString() }
                        });
                    };

                    if (ClassToEdit != null)
                    {
                        DataItemClass c = new DataItemClass()
                        {
                            Identifier = ClassToEdit.Identifier,
                            Name       = name,
                            RawColor   = Color
                        };

                        PopulateClassInfo(c);

                        DataChanges editChanges = new DataChanges();
                        editChanges.Add(c);
                        await PowerPlannerApp.Current.SaveChanges(editChanges);
                        recordTelemetryAction();
                        cancellationToken.ThrowIfCancellationRequested();
                    }

                    else
                    {
                        // Get current semester
                        Guid semesterId = AddParams.SemesterIdentifier;

                        if (semesterId == Guid.Empty)
                        {
                            throw new ArgumentException("CurrentSemesterId was empty");
                        }

                        var newItems = AccountDataStore.GenerateNewDefaultClass(semesterId, name, Color);

                        PopulateClassInfo(newItems.OfType <DataItemClass>().First());

                        DataChanges changes = new DataChanges();

                        foreach (var i in newItems)
                        {
                            changes.Add(i);
                        }

                        await PowerPlannerApp.Current.SaveChanges(changes);
                        recordTelemetryAction();
                        cancellationToken.ThrowIfCancellationRequested();

                        AddParams.OnClassAddedAction?.Invoke((DataItemClass)newItems.First());

                        if (AddParams.NavigateToClassAfterAdd)
                        {
                            DataItemClass c = (DataItemClass)newItems.First();

                            var dontWait = MainScreenViewModel.SelectClass(c.Identifier);
                        }
                    }

                    this.RemoveViewModel();
                }, "Failed to save your class. Your error has been reported.");
            }

            catch (Exception ex)
            {
                TelemetryExtension.Current?.TrackException(ex);
            }
        }
Ejemplo n.º 15
0
 private static ViewItemClass CreateClass(DataItemClass dataClass)
 {
     return(new ViewItemClass(
                dataClass,
                createWeightMethod: CreateWeight));
 }
Ejemplo n.º 16
0
 private ViewItemClass CreateClass(DataItemClass dataItem)
 {
     return(new ViewItemClass(dataItem));
 }
Ejemplo n.º 17
0
 private bool IsChild(DataItemClass dataItem)
 {
     return(dataItem.UpperIdentifier == SemesterId);
 }
 private ViewItemClass CreateClass(DataItemClass c)
 {
     return(new ViewItemClass(c, createScheduleMethod: CreateSchedule, createWeightMethod: CreateWeight));
 }