예제 #1
0
        private void CalendarNode_Click(object sender, EventArgs e)
        {
            CalendarNode nodeClicked = (CalendarNode)sender;

            if (nodeClicked.numDates == 4)
            {
                return;
            }

            DateTime dueDate = nodeClicked.date;

            Tuple <Label, int> tag = GetSelectedTagInfo();

            Label l = tag.Item1;

            l.Location = new Point(10, 20 * ++nodeClicked.numDates);

            DueDateTextBox t = new DueDateTextBox(l, l.Width, nodeClicked, nodeClicked.numDates);

            t.BackColor = c6;
            t.ForeColor = Color.White;

            if (tag.Item2 != -1)
            {
                t.Text        = "HW #1";
                t.Location    = new Point(l.Width + 10, 20 * nodeClicked.numDates);
                t.Size        = new Size(110, 18);
                t.BorderStyle = BorderStyle.None;
                t.LostFocus  += DueDateBox_Leave;

                nodeClicked.Controls.Add(t.InitDotLabel(5, 20 * nodeClicked.numDates + 5, l.ForeColor));
            }
            else
            {
                t.Text        = "HW #1";
                t.Location    = new Point(13, 20 * nodeClicked.numDates);
                t.Size        = new Size(110, 18);
                t.BorderStyle = BorderStyle.None;
                t.LostFocus  += DueDateBox_Leave;

                nodeClicked.Controls.Add(t.InitDotLabel(5, 20 * nodeClicked.numDates + 5, Color.Black));
            }

            nodeClicked.Controls.Add(l);
            nodeClicked.Controls.Add(t);

            using (SQLiteCommand cmd = new SQLiteCommand("INSERT INTO " + sched_table + " (name, tag_id, date) VALUES (@name, @tag_id, @date)", SQLCon))
            {
                cmd.Parameters.AddWithValue("@name", "HW #1");
                cmd.Parameters.AddWithValue("@tag_id", tag.Item2);
                cmd.Parameters.AddWithValue("@date", dueDate);
                cmd.ExecuteNonQuery();
            }

            t.rowid = Convert.ToInt32(SQLCon.LastInsertRowId);
        }
예제 #2
0
        private void LoadWeek(DateTime firstDay, int rowIndex)
        {
            //this week has already been loaded
            if (days.ContainsKey(firstDay))
            {
                for (int i = 0; i < 7; i++)
                {
                    days[firstDay.AddDays(i)].SetLocation(i * width + x_offset, rowIndex * height + y_offset);
                    calendar.Controls.Add(days[firstDay.AddDays(i)]);
                }
            }
            else
            {
                //this week has not been loaded yet
                for (int i = 0; i < 7; i++)
                {
                    CalendarNode cNode = new CalendarNode(i * width + x_offset, rowIndex * height + y_offset);
                    cNode.BorderStyle = BorderStyle.FixedSingle;

                    Label l = new Label();
                    l.Text      = firstDay.AddDays(i).ToString("MMM") + " " + firstDay.AddDays(i).Day.ToString();
                    l.Visible   = true;
                    l.Size      = new Size(90, 18);
                    l.Location  = new Point(10, 0);
                    l.BackColor = Color.Transparent;
                    //l.ForeColor = c2;
                    l.ForeColor = Color.FromArgb(249, 38, 89);
                    l.Font      = new Font(l.Font, FontStyle.Bold);
                    cNode.date  = firstDay.AddDays(i);

                    cNode.BackColor = c6;

                    if (cNode.date == new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day))
                    {
                        Label ll = new Label();
                        //ll.BackColor = c2;
                        ll.BackColor = Color.FromArgb(166, 226, 46);
                        ll.AutoSize  = false;
                        ll.Size      = new Size(160, 6);
                        ll.Location  = new Point(0, 114);
                        cNode.Controls.Add(ll);
                    }

                    RemoveLabel r = new RemoveLabel();
                    r.Location = new Point(32, 95);
                    r.Visible  = false;

                    r.DragDrop += (o, e) => {
                        e.Effect = DragDropEffects.Copy;
                        r.SendToBack();
                        r.Font   = new Font(r.Font, FontStyle.Regular);
                        r.Text   = r.Text.Substring(3);
                        r.Width -= 5;

                        int rowid = (int)e.Data.GetData(typeof(int));

                        CalendarNode parent = (CalendarNode)r.Parent;

                        DueDateTextBox d = null;

                        foreach (Control c in parent.Controls)
                        {
                            if (c is DueDateTextBox)
                            {
                                if (((DueDateTextBox)c).rowid == rowid)
                                {
                                    d = (DueDateTextBox)c;
                                }
                            }
                        }

                        if (MessageBox.Show("Are you sure you want to delete \"" + d.Text + "\"?", "", MessageBoxButtons.YesNo) == DialogResult.Yes)
                        {
                            using (SQLiteCommand cmd = new SQLiteCommand("DELETE FROM " + sched_table + " WHERE rowid = @rowid", SQLCon))
                            {
                                cmd.Parameters.AddWithValue("@rowid", rowid);
                                cmd.ExecuteNonQuery();
                            }

                            parent.Controls.Remove(d.dotLabel);

                            if (d.tagLabel != null)
                            {
                                parent.Controls.Remove(d.tagLabel);
                            }

                            parent.Controls.Remove(d);

                            if (d.rowIndex < parent.numDates)
                            {
                                foreach (Control c in parent.Controls)
                                {
                                    if (c is DueDateTextBox)
                                    {
                                        DueDateTextBox d1 = (DueDateTextBox)c;

                                        if (d1.rowIndex > d.rowIndex)
                                        {
                                            d1.Location          = new Point(d1.Location.X, d1.Location.Y - 20);
                                            d1.dotLabel.Location = new Point(d1.dotLabel.Location.X, d1.dotLabel.Location.Y - 20);
                                            if (d1.tagLabel != null)
                                            {
                                                d1.tagLabel.Location = new Point(d1.tagLabel.Location.X, d1.tagLabel.Location.Y - 20);
                                                d1.rowIndex--;
                                            }
                                        }
                                    }
                                }
                            }

                            parent.numDates--;
                        }

                        r.Visible = false;
                    };

                    r.DragEnter += (o, e) => {
                        e.Effect = DragDropEffects.Copy;
                        r.SendToBack();
                        r.Font   = new Font(r.Font, FontStyle.Bold);
                        r.Text   = "   " + r.Text;
                        r.Width += 5;
                    };

                    r.DragLeave += (o, e) => {
                        r.Font   = new Font(r.Font, FontStyle.Regular);
                        r.Text   = r.Text.Substring(3);
                        r.Width -= 5;
                    };

                    r.AllowDrop = true;

                    cNode.removeLabel = r;

                    cNode.Controls.Add(r);
                    cNode.Controls.Add(l);

                    cNode.Click += CalendarNode_Click;

                    calendar.Controls.Add(cNode);

                    days[cNode.date] = cNode;
                }

                //if (firstDay == DateTime.Now.StartOfWeek(DayOfWeek.Sunday))
                //{
                //	Label l = new Label();
                //	l.BackColor = Color.Green;
                //	l.AutoSize = false;
                //	l.Size = new Size(5, 120);
                //	l.Location = new Point(0, 0);
                //	days[firstDay].Controls.Add(l);
                //	//MessageBox.Show("?" + firstDay.ToString());
                //}

                using (SQLiteCommand cmd = new SQLiteCommand("SELECT *, rowid FROM " + sched_table + " WHERE date >= @fd AND date <= @ld", SQLCon))
                {
                    cmd.Parameters.AddWithValue("@fd", firstDay);
                    cmd.Parameters.AddWithValue("@ld", firstDay.AddDays(6));

                    using (SQLiteDataReader reader = cmd.ExecuteReader())
                    {
                        while (reader.Read())
                        {
                            DateTime date = (DateTime)reader[2];

                            Label l = new Label();
                            l.Location = new Point(10, 20 * ++days[date].numDates);

                            int tagid = (int)reader[1];

                            string dueDateName = (string)reader[0];

                            int rowid = Convert.ToInt32((Int64)reader[3]);

                            if (tagid != -1)
                            {
                                l.Text      = tags[(int)reader[1]].tagNameBox.Text;
                                l.ForeColor = tags[(int)reader[1]].color;
                                l.Size      = TextRenderer.MeasureText(l.Text, l.Font);
                                l.BackColor = Color.Transparent;

                                DueDateTextBox t = new DueDateTextBox(l, l.Width, days[date], days[date].numDates);                                 //???
                                t.Text        = dueDateName;
                                t.Location    = new Point(l.Width + 10, 20 * days[date].numDates);
                                t.Size        = new Size(100, 18);
                                t.BorderStyle = BorderStyle.None;
                                t.LostFocus  += DueDateBox_Leave;
                                t.rowid       = rowid;
                                t.BackColor   = c6;
                                t.ForeColor   = Color.White;

                                days[date].Controls.Add(t.InitDotLabel(5, 20 * days[date].numDates + 5, l.ForeColor));
                                days[date].Controls.Add(l);
                                days[date].Controls.Add(t);
                            }
                            else
                            {
                                DueDateTextBox t = new DueDateTextBox(l, -1, days[date], days[date].numDates);
                                t.Text        = dueDateName;
                                t.Location    = new Point(13, 20 * days[date].numDates);
                                t.Size        = new Size(100, 18);
                                t.BorderStyle = BorderStyle.None;
                                t.LostFocus  += DueDateBox_Leave;
                                t.rowid       = rowid;
                                t.BackColor   = c6;

                                days[date].Controls.Add(t.InitDotLabel(5, 20 * days[date].numDates + 5, Color.Black));
                                days[date].Controls.Add(t);
                            }
                        }
                    }
                }
            }
        }