/// <summary> /// 在指定的日期添加课程 /// </summary> /// <param name="week">在星期几添加</param> /// <param name="ct">课程的描述。UUID默认由此函数生成。</param> /// <param name="genUUID">是否由此函数生成UUID。默认为True.</param> public static void AddClass(int week, ClassTime ct, bool genUUID = true) { if (genUUID) { ct.UUID = System.Guid.NewGuid().ToString(); } string dataFilePath = Path.Combine(DATA_PATH, CLASSES_PREFIX + week.ToString() + ".config"); if (!File.Exists(dataFilePath)) { File.WriteAllText(dataFilePath, ""); } var classes = GetClasses(week); if (classes.Count >= 20) { throw new System.Exception("课程数量达到上限!"); } foreach (var i in classes) { if ((i.BeginHour * 60 + i.BeginMinute <= ct.BeginHour * 60 + ct.BeginMinute && ct.BeginHour * 60 + ct.BeginMinute <= i.EndHour * 60 + i.EndMinute) || (i.BeginHour * 60 + i.BeginMinute <= ct.EndHour * 60 + ct.EndMinute && ct.EndHour * 60 + ct.EndMinute <= i.EndHour * 60 + i.EndMinute)) { throw new System.Exception("课程冲突!"); } } File.WriteAllText(dataFilePath, File.ReadAllText(dataFilePath) + ct.ToString() + '\n'); }
public override View GetView(int position, View convertView, ViewGroup parent) { ClassTime ct = classes[position]; View view; if (convertView == null) { view = LayoutInflater.From(con).Inflate(Resource.Layout.list_item_class, null); } else { view = convertView; //直接对convertView进行重用 } ImageView classImg = view.FindViewById <ImageView>(Resource.Id.ClassImage); TextView className = view.FindViewById <TextView>(Resource.Id.ClassName); TextView classTime = view.FindViewById <TextView>(Resource.Id.ClassTime); TextView classOrder = view.FindViewById <TextView>(Resource.Id.ClassOrderTextView); classImg.SetImageResource(DataController.GetClassImage(ct.ClassName)); className.Text = ct.ClassName; classOrder.Text = (position + 1).ToString(); classTime.Text = /* "第" + (position + 1).ToString() + "节\n" + */ FmtInt(ct.BeginHour) + ":" + FmtInt(ct.BeginMinute) + " - " + FmtInt(ct.EndHour) + ":" + FmtInt(ct.EndMinute); //fill in your items //holder.Title.Text = "new text here"; return(view); }
public int CompareTo(object obj) { ClassTime o = (ClassTime)obj; int lhs = BeginHour * 60 + BeginMinute; int rhs = o.BeginHour * 60 + o.BeginMinute; return(lhs.CompareTo(rhs)); }
/// <summary> /// Only for testing. /// </summary> public static void GenerateTestData() // ONLY FOR TEST { Random r = new Random(); var colors = new string[] { "Chinese", "Math", "English", "Art", "Music", "PE", "Unknown" }; while (true) { try { DataController.AddSubject(System.Guid.NewGuid().ToString().Substring(0, 4), colors[r.Next(0, 7)]); } catch (Exception) { break; } } var subjects = DataController.GetSubjects(); for (int i = 0; i < 7; ++i) { for (int j = 0; j < 20; ++j) { ClassTime ct = new ClassTime(); ct.BeginHour = 2 * j / 60; ct.BeginMinute = 2 * j % 60; ct.EndHour = (2 * j + 1) / 60; ct.EndMinute = (2 * j + 1) % 60; ct.ClassName = subjects[r.Next(0, subjects.Count)]; try { DataController.AddClass(i, ct); } catch (Exception) { break; } } } }
protected override void OnCreate(Bundle savedInstanceState) { base.OnCreate(savedInstanceState); if (DataController.StartedActivity.ContainsKey(ACTIVITY_NAME) && DataController.StartedActivity[ACTIVITY_NAME]) { this.Finish(); return; } DataController.StartedActivity[ACTIVITY_NAME] = true; SetContentView(Resource.Layout.activity_create_class); SupportActionBar.Hide(); week = Intent.GetIntExtra("Week", 0); if (Intent.GetBooleanExtra("Edit", false)) { begHour = Intent.GetIntExtra("CurBeginHour", 0); begMinute = Intent.GetIntExtra("CurBeginMinute", 0); endHour = Intent.GetIntExtra("CurEndHour", 0); endMinute = Intent.GetIntExtra("CurEndMinute", 0); chgUUID = Intent.GetStringExtra("CurUUID"); chgSubject = Intent.GetStringExtra("CurSubject"); FindViewById <TextView>(Resource.Id.BeginTimeText).Text = FmtInt(begHour) + " : " + FmtInt(begMinute); FindViewById <TextView>(Resource.Id.EndTimeText).Text = FmtInt(endHour) + " : " + FmtInt(endMinute); FindViewById <Button>(Resource.Id.CreateClassButton).Text = "修改"; FindViewById <TextView>(Resource.Id.AddClassTextView).Text = "修改课程"; } FindViewById <TextView>(Resource.Id.SubjectNameText).Text = chgSubject; string[] hours = new string[24], minutes = new string[60]; for (int i = 0; i != 60; ++i) { minutes[i] = FmtInt(i) + "分"; } for (int i = 0; i != 24; ++i) { hours[i] = FmtInt(i) + "时"; } FindViewById <TextView>(Resource.Id.SwitchBeginTimeButton).Click += (sender, e) => { var intent = new Intent(this, typeof(PickTimeActivity)); intent.PutExtra("Title", "开始时间"); intent.PutExtra("Minutes", GetDisplayTime(begHour) * 60 + GetDisplayTime(begMinute)); StartActivityForResult(intent, 4); }; FindViewById <TextView>(Resource.Id.SwitchEndTimeButton).Click += (sender, e) => { var intent = new Intent(this, typeof(PickTimeActivity)); intent.PutExtra("Title", "结束时间"); intent.PutExtra("Minutes", GetDisplayTime(endHour) * 60 + GetDisplayTime(endMinute)); StartActivityForResult(intent, 5); }; FindViewById <Button>(Resource.Id.SwitchSubjectButton).Click += (sender, e) => { var intent = new Intent(this, typeof(EditSubjectActivity)); intent.PutExtra("Select", true); StartActivityForResult(intent, 444); // 米4达 }; FindViewById <Button>(Resource.Id.CancelCreateClassButton).Click += (sender, e) => { this.Finish(); }; FindViewById <Button>(Resource.Id.CreateClassButton).Click += (sender, e) => { ClassTime ct = new ClassTime(); ct.ClassName = chgSubject; if (ct.ClassName == "未选择") { Toast.MakeText(this, "请选择科目!", ToastLength.Short).Show(); return; } if (begHour == -1 || begMinute == -1) { Toast.MakeText(this, "请选择课程开始时间!", ToastLength.Short).Show(); return; } if (endHour == -1 || endMinute == -1) { Toast.MakeText(this, "请选择课程结束时间!", ToastLength.Short).Show(); return; } if (begHour * 60 + begMinute >= endHour * 60 + endMinute) { Toast.MakeText(this, "课程结束时间必须晚于课程开始时间!", ToastLength.Short).Show(); return; } if (Intent.GetBooleanExtra("Edit", false)) { DataController.RemoveClass(week, chgUUID); } ct.BeginHour = begHour; ct.BeginMinute = begMinute; ct.EndHour = endHour; ct.EndMinute = endMinute; try { DataController.AddClass(week, ct); } catch (System.Exception ee) { Toast.MakeText(this, ee.Message, ToastLength.Long).Show(); return; } Toast.MakeText(this, "课程添加成功!", ToastLength.Short); this.SetResult(Result.Ok); this.Finish(); return; }; // Create your application here }