Added week numbers table that shows/hides depending on configuration

This commit is contained in:
gamosoft_cp 2014-10-17 21:50:36 +00:00
parent 6d54b8a784
commit 3d3e97dc4b
3 changed files with 77 additions and 3 deletions

View File

@ -36,6 +36,7 @@
this.lnkToday = new System.Windows.Forms.LinkLabel();
this.btnConfig = new System.Windows.Forms.Button();
this.toolTipCalendar = new System.Windows.Forms.ToolTip(this.components);
this.tableLayoutPanel2 = new System.Windows.Forms.TableLayoutPanel();
this.SuspendLayout();
//
// btnPrevious
@ -74,7 +75,7 @@
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 14.28572F));
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 14.28572F));
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 14.28572F));
this.tableLayoutPanel1.Location = new System.Drawing.Point(9, 34);
this.tableLayoutPanel1.Location = new System.Drawing.Point(31, 34);
this.tableLayoutPanel1.Margin = new System.Windows.Forms.Padding(0);
this.tableLayoutPanel1.Name = "tableLayoutPanel1";
this.tableLayoutPanel1.RowCount = 7;
@ -85,7 +86,7 @@
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 14.28571F));
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 14.28571F));
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 14.28571F));
this.tableLayoutPanel1.Size = new System.Drawing.Size(234, 161);
this.tableLayoutPanel1.Size = new System.Drawing.Size(212, 161);
this.tableLayoutPanel1.TabIndex = 3;
//
// lnkCurrentRange
@ -125,10 +126,28 @@
this.btnConfig.UseVisualStyleBackColor = true;
this.btnConfig.Click += new System.EventHandler(this.btnConfig_Click);
//
// tableLayoutPanel2
//
this.tableLayoutPanel2.ColumnCount = 1;
this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.tableLayoutPanel2.Location = new System.Drawing.Point(0, 34);
this.tableLayoutPanel2.Name = "tableLayoutPanel2";
this.tableLayoutPanel2.RowCount = 7;
this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 14.28571F));
this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 14.28571F));
this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 14.28571F));
this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 14.28571F));
this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 14.28571F));
this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 14.28571F));
this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 14.28571F));
this.tableLayoutPanel2.Size = new System.Drawing.Size(28, 161);
this.tableLayoutPanel2.TabIndex = 6;
//
// CustomCalendar
//
this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.tableLayoutPanel2);
this.Controls.Add(this.btnConfig);
this.Controls.Add(this.lnkToday);
this.Controls.Add(this.lnkCurrentRange);
@ -152,5 +171,6 @@
private System.Windows.Forms.LinkLabel lnkToday;
private System.Windows.Forms.Button btnConfig;
private System.Windows.Forms.ToolTip toolTipCalendar;
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel2;
}
}

View File

@ -8,6 +8,7 @@ using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Outlook = Microsoft.Office.Interop.Outlook;
using System.Globalization;
namespace Outlook2013TodoAddIn
{
@ -173,6 +174,22 @@ namespace Outlook2013TodoAddIn
}
}
// This piece controls the week numbers
this.tableLayoutPanel2.CellBorderStyle = TableLayoutPanelCellBorderStyle.None;
for (int row = 0; row < this.tableLayoutPanel2.RowCount; row++)
{
Label lblCtrl = new Label() { Text = "#" };
lblCtrl.Name = String.Format("lbl_{0}", row.ToString());
lblCtrl.Dock = DockStyle.Fill;
lblCtrl.TextAlign = ContentAlignment.MiddleRight;
lblCtrl.Margin = Padding.Empty;
lblCtrl.Padding = Padding.Empty;
lblCtrl.Font = new Font(this.Font.FontFamily, this.Font.Size-2, FontStyle.Italic);
lblCtrl.FlatStyle = FlatStyle.Flat;
this.tableLayoutPanel2.Controls.Add(lblCtrl);
this.tableLayoutPanel2.SetCellPosition(lblCtrl, new TableLayoutPanelCellPosition(0, row));
}
this.btnPrevious.FlatAppearance.MouseOverBackColor = this.HoverBackColor;
this.btnNext.FlatAppearance.MouseOverBackColor = this.HoverBackColor;
this.btnConfig.FlatAppearance.MouseOverBackColor = this.HoverBackColor;
@ -307,12 +324,39 @@ namespace Outlook2013TodoAddIn
if (this.ShowWeekNumbers)
{
// TODO: Show the week numbers
this.tableLayoutPanel1.Left = 31;
this.tableLayoutPanel1.Width = 212;
this.tableLayoutPanel2.Visible = true;
}
else
{
this.tableLayoutPanel1.Left = 9;
this.tableLayoutPanel1.Width = 234;
this.tableLayoutPanel2.Visible = false;
}
// Row 0 is for days of week
for (int row = 1; row < this.tableLayoutPanel1.RowCount; row++)
{
if (this.ShowWeekNumbers)
{
Label lblDoW = this.tableLayoutPanel2.GetControlFromPosition(0, row) as Label;
DateTime dateForWeek;
if (previousMonthVisible)
{
dateForWeek = new DateTime(previousMonth.Year, previousMonth.Month, dayCurrent);
}
else if (nextMonthVisible)
{
dateForWeek = new DateTime(nextMonth.Year, nextMonth.Month, dayCurrent);
}
else
{
dateForWeek = new DateTime(this.SelectedDate.Year, this.SelectedDate.Month, dayCurrent);
}
lblDoW.Text = GetWeekForDate(dateForWeek).ToString();
}
for (int col = 0; col < this.tableLayoutPanel1.ColumnCount; col++)
{
Label lblCtrl = this.tableLayoutPanel1.GetControlFromPosition(col, row) as Label;
@ -383,6 +427,13 @@ namespace Outlook2013TodoAddIn
}
}
private int GetWeekForDate(DateTime time)
{
// Add 6 days since we want the date at the "last" column of the calendar to be more precise
int weekNumber = CultureInfo.InvariantCulture.Calendar.GetWeekOfYear(time.AddDays(6), CalendarWeekRule.FirstDay, this.FirstDayOfWeek);
return weekNumber;
}
/// <summary>
/// Returns to the previous month
/// </summary>

View File

@ -120,4 +120,7 @@
<metadata name="toolTipCalendar.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<metadata name="toolTipCalendar.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
</root>