private void UpdateTreeView()
        {
            DateTime startDate = m_startDate.Value;
            DateTime endDate = m_endDate.Value;

            //DateTime timesheetStartDate = new DateTime(startDate.Year, startDate.Month, 1);
            //DateTime timesheetEndDate = endDate.AddMonths(1).AddDays(-endDate.Day);

            RangeTimesheets rangeTimesheets = new RangeTimesheets(startDate, endDate);
            this.RangeTimesheets = rangeTimesheets;

            int totalTimesheets = rangeTimesheets.Count;

            RootTreeNode rootNode = new RootTreeNode("Root", DefaultImageList.Instance.GetRootIconIndex());

            // Monthly Timesheets...
            foreach (MonthlyTimesheets monthlyTimesheets in rangeTimesheets.MonthlyTimesheets) {

                // Timesheets...
                foreach (Timesheet timesheet in monthlyTimesheets.Timesheets) {

                    // TimesheetDates...
                    foreach (TimesheetDate timesheetDate in timesheet.Dates.Where(p=>p.IsValidDate)) {
                        if (timesheetDate.Date < startDate || timesheetDate.Date > endDate) {
                            continue;
                        }

                        Color foreColor = DayTypes.GetDayTypeForeColor(timesheetDate.DayType);

                        TimesheetDateTreeNode treeNode = new TimesheetDateTreeNode(timesheetDate, DefaultImageList.Instance.GetCalendarIconIndex());
                        treeNode.ForeColor = foreColor;

                        AddTimesheetDateTreeNodeDetailNodes(treeNode, timesheetDate, foreColor);

                        rootNode.Nodes.Add(treeNode);
                    }
                }
            }

            rootNode.Expand();
            m_treeView.Nodes.Add(rootNode);
        }
        private void AddTimesheetDateTreeNodeDetailNodes(TimesheetDateTreeNode timesheetDateTreeNode, TimesheetDate timesheetDate, Color foreColor)
        {
            TreeNodeEx treeNode = null;
            int imageIndex = DefaultImageList.Instance.GetPropertyIconIndex();

            // DayType Name...
            treeNode = new TimesheetDateDetailTreeNode(timesheetDate.DayType.Name, imageIndex);
            treeNode.ForeColor = foreColor;
            timesheetDateTreeNode.Nodes.Add(treeNode);

            // Billable Hours...
            treeNode = new TimesheetDateDetailTreeNode(string.Format("Billable Hours: {0}", timesheetDate.GetFormattedBillableHours()), imageIndex);
            treeNode.ForeColor = foreColor;
            timesheetDateTreeNode.Nodes.Add(treeNode);

            // Rate Per Hour...
            treeNode = new TimesheetDateDetailTreeNode(string.Format("Rate Per Hour: {0}", timesheetDate.GetFormattedRatePerHour()), imageIndex);
            treeNode.ForeColor = foreColor;
            timesheetDateTreeNode.Nodes.Add(treeNode);
        }