Пример #1
0
        /// <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');
        }
Пример #2
0
        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);
        }
Пример #3
0
        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));
        }
Пример #4
0
        /// <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;
                    }
                }
            }
        }
Пример #5
0
        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
        }