protected virtual View CreateDayHeaders() { _linearLayoutDayHeaders = new LinearLayout(Context) { LayoutParameters = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.MatchParent, LinearLayout.LayoutParams.WrapContent) }; DateTime date = DateTools.Last(FirstDayOfWeek); for (int i = 0; i < 7; i++, date = date.AddDays(1)) { TextView dayHeader = new TextView(Context) { Text = date.ToString("ddd"), LayoutParameters = new LinearLayout.LayoutParams( 0, LinearLayout.LayoutParams.WrapContent) { Weight = 1 }, Gravity = GravityFlags.Right }; dayHeader.SetPadding(0, 0, ThemeHelper.AsPx(Context, 4), 0); _linearLayoutDayHeaders.AddView(dayHeader); } return(_linearLayoutDayHeaders); }
private FrameworkElement CreatePrintableView() { MyAdaptiveGridPanel panel = new MyAdaptiveGridPanel() { MinColumnWidth = 280 }; DayOfWeek dayOfWeek = DayOfWeek.Sunday; for (int i = 0; i < 7; i++, dayOfWeek = dayOfWeek + 1) { var snapshot = new DayScheduleSnapshot(); snapshot.Initialize(_scheduleViewModel.SemesterViewItemsGroup, DateTools.Last(dayOfWeek, _scheduleViewModel.StartDate)); panel.Children.Add(new StackPanel() { Children = { new TextBlock() { Text = dayOfWeek.ToString(), FontSize = 30 }, snapshot } }); } return(panel); }
public ScheduleViewModel(BaseViewModel parent, Params modelParams = null) : base(parent) { SemesterItemsViewGroup semesterGroup = SemesterItemsViewGroup.Load(MainScreenViewModel.CurrentLocalAccountId, MainScreenViewModel.CurrentSemester, trackChanges: true); if (semesterGroup == null) { throw new NullReferenceException("semesterGroup was null"); } if (semesterGroup.Semester == null) { throw new NullReferenceException("semesterGroup.Semester was null"); } if (modelParams == null) { modelParams = new Params(); } _modelParams = modelParams; _arrangerItemsChangedHandler = new WeakEventHandler <EventArgs>(Arranger_OnItemsChanged); SemesterViewItemsGroup = semesterGroup; var acct = MainScreenViewModel.CurrentAccount; Account = acct ?? throw new NullReferenceException("MainScreenViewModel.CurrentAccount was null"); FirstDayOfWeek = acct.WeekChangesOn; DateTime today = DateTime.Today; if (semesterGroup.Semester.IsDateDuringThisSemester(today)) { StartDate = DateTools.Last(FirstDayOfWeek); } else if (!PowerPlannerSending.DateValues.IsUnassigned(semesterGroup.Semester.Start) && today < semesterGroup.Semester.Start) { // Semester hasn't started yet, jump to first week of semester StartDate = DateTools.Last(FirstDayOfWeek, semesterGroup.Semester.Start); } else { // Semester already ended, jump to last week of semester StartDate = DateTools.Last(FirstDayOfWeek, semesterGroup.Semester.End); } if (!HasSchedules() || modelParams.IsEditing) { EnterEditMode(); } AccountDataStore.AddDataChangedEventHandler(this); UpdateHasTwoWeekSchedule(); }
/// <summary> /// Doesn't do any saving or setting of any other dependent properties /// </summary> /// <param name="startsOn"></param> /// <param name="currentWeek"></param> public bool SetWeekSimple(DayOfWeek startsOn, Schedule.Week currentWeek) { DateTime today = DateTime.SpecifyKind(DateTime.Today, DateTimeKind.Utc); if (currentWeek == Schedule.Week.WeekTwo) { today = today.AddDays(-7); } DateTime answer = DateTools.Last(startsOn, today); if (answer != WeekOneStartsOn) { WeekOneStartsOn = answer; return(true); } return(false); }
protected override FrameworkElement GenerateDayHeader(DayOfWeek dayOfWeek) { Grid grid = new Grid() { Background = CalendarView.GridDayHeaderBackground, Margin = new Thickness(0, 0, 0, 1) }; grid.Children.Add(new TextBlock() { Text = DateTools.Last(dayOfWeek).ToString("ddd"), Foreground = CalendarView.GridDayHeaderForeground, Margin = new Thickness(6, 2, 6, 2), HorizontalAlignment = Windows.UI.Xaml.HorizontalAlignment.Right, FontSize = 16 }); return(grid); }
/// <summary> /// Automatically updates display, resets reminders, starts settings sync, and submits changes /// </summary> /// <param name="startsOn"></param> /// <param name="currentWeek"></param> public async System.Threading.Tasks.Task SetWeek(DayOfWeek startsOn, Schedule.Week currentWeek) { // Clear cached schedules on day since they don't subscribe to these changes. // Ideally I would have the lists subscribe to the account, but this will do for now. ViewLists.SchedulesOnDay.ClearCached(); ViewLists.DayScheduleItemsArranger.ClearCached(); DateTime today = DateTime.SpecifyKind(DateTime.Today, DateTimeKind.Utc); if (currentWeek == Schedule.Week.WeekTwo) { today = today.AddDays(-7); } DateTime answer = DateTools.Last(startsOn, today); if (answer != WeekOneStartsOn) { WeekOneStartsOn = answer; NeedsToSyncSettings = true; // Save await SaveOnThread(); //make upcoming update OnPropertyChanged("ShowSchedule"); AccountDataStore data = await AccountDataStore.Get(this.LocalAccountId); var dontWait = RemindersExtension.Current?.ResetReminders(this, data); var dontWaitThread = System.Threading.Tasks.Task.Run(delegate { // Update schedule tile var dontWaitScheduleTile = ScheduleTileExtension.Current?.UpdateScheduleTile(this, data); }); dontWait = Sync.SyncSettings(this, Sync.ChangedSetting.WeekOneStartsOn); } }
public static bool CreateAccount(SqlConnection conn, string username, string password, string email) { string salt = CreateSalt(); string saltedPassword = SaltPassword(password, salt); using (SqlCommand cmd = conn.CreateCommand()) { cmd.CommandText = "insert into Account (Username, Password, PasswordSalt, Email, WeekOneStartsOn) values (@username, @password, @passwordSalt, @email, @weekOneStartsOn) select cast(scope_identity() as bigint)"; cmd.Parameters.AddWithValue("username", username); cmd.Parameters.AddWithValue("password", saltedPassword); cmd.Parameters.AddWithValue("passwordSalt", salt); cmd.Parameters.AddWithValue("email", email); cmd.Parameters.AddWithValue("weekOneStartsOn", DateTools.Last(DayOfWeek.Sunday)); try { object answer = cmd.ExecuteScalar(); if (answer is long) { return(true); // To get the account ID, app should request to login } else { return(false); } } catch { //likely means there was a duplicate username return(false); } } }