using EMSystem.Forms; using FontAwesome.Sharp; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Runtime.InteropServices; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace EMSystem { public partial class AppForm : Form { // fields //currently active button on title panel private IconButton crntBtn; // colorized panel on left side on currently used button private Panel leftSideBar; // currently used form private Form crntUsedForm; private IconPictureBox title = new IconPictureBox(); // constructor public AppForm() { InitializeComponent(); // defying left side panel leftSideBar = new Panel { // defying sizes for width and height Size = new Size(7, 60) }; navigationPanel.Controls.Add(leftSideBar); this.FormBorderStyle = FormBorderStyle.None; this.title.Location = this.Location; this.title.Width = this.Width; this.title.Height = 50; this.title.BackColor = Color.Black; this.Controls.Add(this.title); this.MaximizedBounds = Screen.FromHandle(this.Handle).WorkingArea; } // struct for RGB colors to use when switching forms private struct RGBC { public static Color color1 = Color.FromArgb(232, 23, 93); public static Color color2 = Color.FromArgb(204, 82, 122); public static Color color3 = Color.FromArgb(249, 205, 173); public static Color color4 = Color.FromArgb(249, 88, 155); } // Methods //Currently actively used button private void ActBtn(object senderBtn, Color color) { if (senderBtn != null) { DisableActBtn(); crntBtn = (IconButton)senderBtn; crntBtn.BackColor = Color.FromArgb(54, 54, 54); crntBtn.ForeColor = color; crntBtn.TextAlign = ContentAlignment.MiddleCenter; crntBtn.IconColor = color; crntBtn.Font = new System.Drawing.Font("Century Gothic", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); crntBtn.TextImageRelation = TextImageRelation.TextBeforeImage; crntBtn.ImageAlign = ContentAlignment.MiddleRight; leftSideBar.BackColor = color; leftSideBar.Location = new Point(0, crntBtn.Location.Y); leftSideBar.Visible = true; leftSideBar.BringToFront(); crntUsedFormIcon.IconChar = crntBtn.IconChar; crntUsedFormIcon.IconColor = color; } } //disables active used button if the form isn't curently used private void DisableActBtn() { if(crntBtn != null) { crntBtn.BackColor = Color.FromArgb(71, 71, 71); crntBtn.ForeColor = Color.Gainsboro; crntBtn.TextAlign = ContentAlignment.MiddleLeft; crntBtn.IconColor = Color.Gainsboro; crntBtn.Font = new System.Drawing.Font("Century Gothic", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); crntBtn.TextImageRelation = TextImageRelation.ImageBeforeText; crntBtn.ImageAlign = ContentAlignment.MiddleLeft; } } //opens different form private void OpenForm(Form crntForm) { if(crntUsedForm != null) { crntUsedForm.Close(); } crntUsedForm = crntForm; crntForm.TopLevel = false; crntForm.FormBorderStyle = FormBorderStyle.None; crntForm.Dock = DockStyle.Fill; desktopPanel.Controls.Add(crntForm); desktopPanel.Tag = crntForm; crntForm.BringToFront(); crntForm.Show(); crntUsedFormTitle.Text = crntForm.Text; } // home screen button private void homeBtn_Click(object sender, EventArgs e) { ActBtn(sender, RGBC.color1 // uses RGB color from struct ); // if statement to check if any form is currently used if (crntUsedForm != null) { // if used, then closes crntUsedForm.Close(); } // when closes current form or there isn't any, then reset method is called Reset(); } // pressing on logo returns back to home screen private void logoPic_Click(object sender, EventArgs e) { // closes current used form crntUsedForm.Close(); // resets back to home screen Reset(); } // reset method to return home screen private void Reset() { DisableActBtn(); crntBtn.BackColor = Color.FromArgb(54, 54, 54); crntBtn.ForeColor = Color.FromArgb(232, 23, 93); crntBtn.TextAlign = ContentAlignment.MiddleCenter; crntBtn.IconColor = Color.FromArgb(232, 23, 93); crntBtn.Font = new System.Drawing.Font("Century Gothic", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); crntBtn.TextImageRelation = TextImageRelation.TextBeforeImage; crntBtn.ImageAlign = ContentAlignment.MiddleRight; leftSideBar.Visible = true; leftSideBar.Location = new Point(0, homeBtn.Location.Y); leftSideBar.BackColor = Color.FromArgb(232, 23, 93); crntUsedFormIcon.IconChar = IconChar.Home; crntUsedFormIcon.IconColor = Color.FromArgb(232, 23, 93); crntUsedFormTitle.Text = "Home"; } // draggable window [DllImport("user32.DLL", EntryPoint = "ReleaseCapture")] private extern static void ReleaseCapture(); [DllImport("user32.DLL", EntryPoint = "SendMessage")] private extern static void SendMessage(System.IntPtr hWnd, int wMsg, int wParam, int lParam); private void titlePanel_MouseDown(object sender, MouseEventArgs e) { ReleaseCapture(); SendMessage(this.Handle, 0x112, 0xf012, 0); } // close application button private void exitBtn_Click(object sender, EventArgs e) { Application.Exit(); } // maximizing application button private void maxBtn_Click(object sender, EventArgs e) { if (this.WindowState == FormWindowState.Normal) { this.WindowState = FormWindowState.Maximized; } else { this.WindowState = FormWindowState.Normal; } } // minimizing application button private void minBtn_Click(object sender, EventArgs e) { WindowState = FormWindowState.Minimized; } private void AppForm_Load(object sender, EventArgs e) { // date and time on application home screen timeTimer.Start(); labelDate.Text = DateTime.Now.ToString("dddd , dd. MMMM, yyyy").ToUpper(); // format for date labelTime.Text = DateTime.Now.ToString("HH:mm"); // format for time } private void timeTimer_Tick(object sender, EventArgs e) { labelTime.Text = DateTime.Now.ToString("HH:mm"); timeTimer.Start(); } // double click with right mouse button to minimize/maximize screen private void titlePanel_MouseDoubleClick(object sender, MouseEventArgs e) { if (this.WindowState == FormWindowState.Normal) { this.WindowState = FormWindowState.Maximized; } else { this.WindowState = FormWindowState.Normal; } } //opens add employee popup form private void addEmpBtn_Click(object sender, EventArgs e) { //background form for "popup" form Form BGForm = new Form(); try { using(AddEmpForm popup = new AddEmpForm()) { BGForm.StartPosition = FormStartPosition.Manual; BGForm.FormBorderStyle = FormBorderStyle.None; BGForm.Opacity = .50d; BGForm.BackColor = Color.Black; BGForm.WindowState = FormWindowState.Maximized; BGForm.Location = this.Location; BGForm.ShowInTaskbar = false; BGForm.Show(); popup.Owner = BGForm; popup.ShowDialog(); BGForm.Dispose(); } } catch (Exception ex) { MessageBox.Show(ex.Message); } finally { BGForm.Dispose(); } } //opens employees list form private void empListBtn_Click_1(object sender, EventArgs e) { ActBtn(sender, RGBC.color3 // uses color3 from RGB color struct ); OpenForm(new EmpListForm()); } // opens todolist form private void toDoListBtn_Click_1(object sender, EventArgs e) { ActBtn(sender, RGBC.color4 // uses color4 from RGB color struct ); OpenForm(new ToDoListForm()); } } }