private void lbl_sneeze_display_MouseMove(object sender, MouseEventArgs e)
        {
            int          sneezeIndex;
            SneezeRecord record = GetSneezeAtLocation(lbl_sneeze_display.PointToClient(MousePosition), out sneezeIndex);

            if (record == null)
            {
                toolTip.ToolTipTitle = "";
                toolTip.SetToolTip(lbl_sneeze_display, null);
                lastHoveredSneeze = null;
                return;
            }

            if (record == lastHoveredSneeze)
            {
                return;
            }
            lastHoveredSneeze = record;

            SneezeDatabase database    = SneezeClientListener.Database;
            string         toolTipText = $"Username: {database.IdToUser[record.UserId].Name}\n" +
                                         $"Date: {record.Date.ToLocalTime():g}";

            if (!String.IsNullOrEmpty(record.Comment))
            {
                toolTipText += "\n\n" + record.Comment;
            }

            toolTip.ToolTipTitle = "Sneeze " + (database.CountdownStart - sneezeIndex);
            toolTip.SetToolTip(lbl_sneeze_display, toolTipText);
        }
Example #2
0
        private static void TellClientToRemoveSneeze(SneezeRecord sneeze)
        {
            string serializedSneeze = sneeze.SerializeToString();

            foreach (ConnectionInfo info in NetworkComms.AllConnectionInfo())
            {
                TCPConnection.GetConnection(info).SendObject(Messages.SneezeRemoved, serializedSneeze);
            }
        }
        private static void HandlePersonSneezed(PacketHeader header, Connection connection, string serializedSneeze)
        {
            SneezeRecord sneeze;

            lock (dbSync)
            {
                sneeze = new SneezeRecord();
                sneeze.DeserializeFromString(serializedSneeze);
                Database?.Sneezes.Add(sneeze);
            }

            PersonSneezed?.Invoke(sneeze);
        }
 private void SneezeClientListener_PersonSneezed(SneezeRecord sneeze)
 {
     BeginInvoke(new Action(() =>
     {
         lbl_sneeze_display.Invalidate();
         if (sneeze.UserId != CurrentUser?.UserGuid)
         {
             string userName = SneezeClientListener.Database.IdToUser[sneeze.UserId].Name;
             notifyIcon?.ShowBalloonTip(2000, "Sneeze Countdown", $"{userName} sneezed!", ToolTipIcon.None);
         }
         CalculateApocalypse();
     }));
 }
Example #5
0
        /// <summary>
        /// Writes the provided sneeze to the console window
        /// </summary>
        private static void HandleSneeze(PacketHeader header, Connection connection, string serializedSneeze)
        {
            SneezeRecord sneeze = new SneezeRecord();

            sneeze.DeserializeFromString(serializedSneeze);
            database.Sneezes.Add(sneeze);
            database.Save();

            foreach (ConnectionInfo info in NetworkComms.AllConnectionInfo())
            {
                TCPConnection.GetConnection(info).SendObject(Messages.PersonSneezed, serializedSneeze);
            }
        }
Example #6
0
        private static void HandleUpdateSneeze(PacketHeader header, Connection connection, string serializedSneeze)
        {
            SneezeRecord sneeze = new SneezeRecord();

            sneeze.DeserializeFromString(serializedSneeze);
            int sneezeIndex = database.Sneezes.FindIndex(s => s.Date == sneeze.Date);

            if (sneezeIndex == -1)
            {
                return; // This should never happen, but just in case...
            }
            database.Sneezes[sneezeIndex] = sneeze;
            database.Save();

            TellClientToUpdateSneeze(sneeze);
        }
Example #7
0
        private static void HandleRemoveSneeze(PacketHeader header, Connection connection, string serializedSneeze)
        {
            SneezeRecord sneeze = new SneezeRecord();

            sneeze.DeserializeFromString(serializedSneeze);
            var sneezeRecord = database.Sneezes.Find(s => s.Date == sneeze.Date);

            if (sneezeRecord != null)
            {
                database.Sneezes.Remove(sneezeRecord);
                database.Save();

                //We could send the entire database, but let's try to avoid that if possible.
                TellClientToRemoveSneeze(sneeze);
            }
        }
        private void lbl_sneeze_display_MouseClick(object sender, MouseEventArgs e)
        {
            if ((e.Button & MouseButtons.Left) != 0)
            {
                return;
            }
            int          sneezeIndex;
            SneezeRecord sneeze = GetSneezeAtLocation(lbl_sneeze_display.PointToClient(MousePosition), out sneezeIndex);

            if (sneeze == null)
            {
                return;
            }

            if (sneeze.UserId != CurrentUser?.UserGuid)
            {
                return;
            }

            ContextMenuStrip strip = new ContextMenuStrip();

            strip.Items.Add("Edit sneeze...", null, (s, a) =>
            {
                using (SneezeCommentEditorForm form = new SneezeCommentEditorForm(sneeze.Comment))
                {
                    if (form.ShowDialog(this) == DialogResult.OK)
                    {
                        sneeze.Comment = form.UpdatedText;
                        SneezeClientListener.UpdateSneeze(sneeze);
                    }
                }
            });
            strip.Items.Add("Remove sneeze...", null, (s, a) =>
            {
                if (DialogResult.Yes == MessageBox.Show(this,
                                                        "Are you sure you want to delete this sneeze?",
                                                        "Delete Sneeze",
                                                        MessageBoxButtons.YesNo, MessageBoxIcon.Question))
                {
                    SneezeClientListener.RemoveSneeze(sneeze);
                }
            });
            strip.Show(MousePosition);
        }
        private static void HandleSneezeRemoved(PacketHeader header, Connection connection, string serializedSneeze)
        {
            lock (dbSync)
            {
                if (database == null)
                {
                    return;
                }

                SneezeRecord sneeze = new SneezeRecord();
                sneeze.DeserializeFromString(serializedSneeze);
                var sneezeRecord = database.Sneezes.Find(s => s.Date == sneeze.Date);
                if (sneezeRecord != null)
                {
                    database.Sneezes.Remove(sneezeRecord);
                    SneezeRemoved?.Invoke();
                }
            }
        }
        private static void HandleSneezeUpdated(PacketHeader header, Connection connection, string serializedSneeze)
        {
            lock (dbSync)
            {
                if (database == null)
                {
                    return;
                }

                SneezeRecord sneeze = new SneezeRecord();
                sneeze.DeserializeFromString(serializedSneeze);
                int sneezeIndex = database.Sneezes.FindIndex(s => s.Date == sneeze.Date);
                if (sneezeIndex == -1)
                {
                    return; // This should never happen, but just in case...
                }
                database.Sneezes[sneezeIndex] = sneeze;
            }

            SneezeUpdated?.Invoke();
        }
 public static void UpdateSneeze(SneezeRecord sneeze)
 {
     SendToServer(Messages.UpdateSneeze, sneeze);
 }
 public static void RemoveSneeze(SneezeRecord sneeze)
 {
     SendToServer(Messages.RemoveSneeze, sneeze);
 }
 private void lbl_sneeze_display_MouseLeave(object sender, EventArgs e)
 {
     toolTip.ToolTipTitle = "";
     lastHoveredSneeze    = null;
 }
        private void lbl_sneeze_display_Paint(object sender, PaintEventArgs e)
        {
            Graphics g = e.Graphics;

            g.Clear(Settings.Default.BoardBackColor);
            Font           font     = lbl_sneeze_display.Font;
            SneezeDatabase database = SneezeClientListener.Database;

            if (database == null)
            {
                if (failedToConnect)
                {
                    DrawTextCentered("Failed to connect to server at specified IP.", g, font, Color.Red);
                }
                else if (dbError != DatabaseErrorType.None)
                {
                    if (dbError == DatabaseErrorType.VersionNumberConflict)
                    {
                        DrawTextCentered("Database version number does not match.\nPlease update your client to the latest version.", g, font, Color.Red);
                    }
                }
                else if (connectionClosed)
                {
                    DrawTextCentered("Connection to server was lost.", g, font, Color.Red);
                }
                else if (connectionOpening)
                {
                    DrawTextCentered("Connecting...", g, font, Color.Blue);
                }
                else
                {
                    DrawTextCentered("Not connected to server.", g, font, Color.Black);
                }
                return;
            }

            if (database.Sneezes.Count == 0)
            {
                DrawTextCentered("No recorded sneezes.", g, font, Color.Black);
                return;
            }

            int    viewLeftEdge        = scroll_horizontal.Value;
            int    maxSneezesPerColumn = lbl_sneeze_display.Height / font.Height;
            string maxWidthNumber      = new string('9', database.CountdownStart.ToString().Length);
            Size   numberSize          = TextRenderer.MeasureText(g, maxWidthNumber, font);
            int    startingIndex       = Math.Min(viewLeftEdge / (numberSize.Width + numberPadding) * maxSneezesPerColumn, database.Sneezes.Count - 1);
            int    endingIndex         = Math.Min((viewLeftEdge + lbl_sneeze_display.Width + numberSize.Width) / (numberSize.Width + numberPadding) * maxSneezesPerColumn, database.Sneezes.Count - 1);

            for (int i = startingIndex; i <= endingIndex; i++)
            {
                int sneezeNum = database.CountdownStart - i;
                //DO NOT DELETE! May need this later.
                //if (sneezeNum < 26359)
                //    sneezeNum -= 5;
                //if (sneezeNum < 24423)
                //    sneezeNum += 2;
                int   columnNum = i / maxSneezesPerColumn;
                int   rowNum    = i % maxSneezesPerColumn;
                Point textLoc   = new Point(columnNum * (numberSize.Width + numberPadding) - viewLeftEdge, rowNum * font.Height);

                SneezeRecord sneeze = database.Sneezes[i];
                if (!string.IsNullOrEmpty(sneeze.Comment))
                {
                    using (Pen p = new Pen(Color.Goldenrod))
                        g.DrawRectangle(p, textLoc.X, textLoc.Y, numberSize.Width, numberSize.Height);
                }

                UserInfo userInfo;
                Color    sneezeColor = Color.Black;
                if (database.IdToUser.TryGetValue(sneeze.UserId, out userInfo))
                {
                    sneezeColor = userInfo.Color;
                }

                TextRenderer.DrawText(g, sneezeNum.ToString(), font, textLoc, sneezeColor);
            }
        }