public MonitorQuestionNotificator(Question question) { InitializeComponent(); SetWindowPos(this.Handle, HWND_TOPMOST, 0, 0, 0, 0, SetWindowPosFlags.SWP_NOSIZE | SetWindowPosFlags.SWP_NOACTIVATE); this.TransparencyKey = Color.HotPink; _question = question; GenerateFormImage(question); animator = new MonitorAnimator(this); animator.ScrollUp(); if (_displayTime > 0) { _closeTimer.Interval = _displayTime; _closeTimer.Tick += new EventHandler(_closeTimer_Tick); _closeTimer.Start(); } }
private List<Question> GetQuestionsNewerThanQuestionId(string jsonData) { List<Question> results = new List<Question>(); var jobject = Newtonsoft.Json.Linq.JObject.Parse(jsonData); var questions = jobject.SelectToken("items"); foreach (var question in questions) { Question newquestion = new Question(); newquestion.Tags.AddRange(question.SelectToken("tags").Select(t => (string)t)); newquestion.AnswerCount = (int)question.SelectToken("answer_count"); newquestion.URL = (string)question.SelectToken("link"); newquestion.Id = (int)question.SelectToken("question_id"); newquestion.TimeStamp = (long)question.SelectToken("creation_date"); newquestion.Owner = new User() { Id = (int)question.SelectToken("owner.user_id"), Name = (string)question.SelectToken("owner.display_name"), Reputation = (int)question.SelectToken("owner.reputation"), }; newquestion.Score = (int)question.SelectToken("score"); newquestion.Title = (string)question.SelectToken("title"); newquestion.Body = ParseHTMLString((string) question.SelectToken("body")); results.Add(newquestion); } return results; }
private void GenerateFormImage(Question question) { if (_formImage != null) { _formImage.Dispose(); } _formImage = new Bitmap(400, 200); using (Graphics g = Graphics.FromImage(_formImage)) using (GraphicsPath path = HelperClass.GenerateRoundedRectPath(new Rectangle(0, 0, 400, 200), 5, HelperClass.RectangleCorners.All)) using (GraphicsPath userPath = HelperClass.GenerateRoundedRectPath(new Rectangle(0, 136, 400, 48), 5, HelperClass.RectangleCorners.BottomLeft | HelperClass.RectangleCorners.BottomRight)) using (SolidBrush userPathBrush = new SolidBrush(Color.FromArgb(150, 255, 255, 255))) using (Brush backgroundbrush = new LinearGradientBrush(Point.Empty, new Point(0, 185), Color.FromArgb(212, 212, 212), Color.FromArgb(145, 145, 145))) using (SolidBrush darkGreyBrush = new SolidBrush(Color.FromArgb(60, 60, 60))) using (StringFormat centerformat = new StringFormat()) using (Font arial10 = new Font("Arial", 10f)) using (Font arial8 = new Font("Arial", 8f)) using (Font arial8bold = new Font("Arial", 8f, FontStyle.Bold)) using (Font arial12 = new Font("Arial", 12f)) using (Font arial11 = new Font("Arial", 11f)) { centerformat.Alignment = StringAlignment.Center; centerformat.LineAlignment = StringAlignment.Center; g.TextRenderingHint = TextRenderingHint.AntiAlias; g.Clear(Color.HotPink); g.FillPath(backgroundbrush, path); g.DrawPath(Pens.DarkGray, path); g.SmoothingMode = SmoothingMode.HighQuality; g.DrawString("NEW QUESTION", arial8bold, Brushes.White, new Point(3, 3)); g.DrawString("NEW QUESTION", arial8bold, Brushes.Gray, new Point(2, 2)); //draw closing x g.DrawLine(Pens.White, new Point(Bounds.Width - 14, 11), new Point(Bounds.Width - 4, 21)); g.DrawLine(Pens.White, new Point(Bounds.Width - 14, 21), new Point(Bounds.Width - 4, 11)); g.DrawLine(Pens.Black, new Point(Bounds.Width - 15, 10), new Point(Bounds.Width - 5, 20)); g.DrawLine(Pens.Black, new Point(Bounds.Width - 15, 20), new Point(Bounds.Width - 5, 10)); g.DrawString(question.Title, arial11, Brushes.White, new Rectangle(11, 13, 380, 45)); g.DrawString(question.Title, arial11, Brushes.Black, new Rectangle(10, 12, 380, 45)); g.DrawString(question.Body, arial8, Brushes.White, new Rectangle(11, 56, 380, 60)); g.DrawString(question.Body, arial8, Brushes.Black, new Rectangle(10, 55, 380, 60)); string tagstring = string.Empty; question.Tags.ForEach(t => tagstring += t + " | "); tagstring = tagstring.Remove(tagstring.Length - 3); g.DrawLine(Pens.White, new Point(11, 119), new Point(Width - 9, 119)); g.DrawLine(Pens.Black, new Point(10, 118), new Point(Width - 10, 118)); g.DrawString(tagstring, arial10, Brushes.White, new PointF(11, 120)); g.DrawString(tagstring, arial10, Brushes.Black, new PointF(10, 119)); g.FillPath(userPathBrush, userPath); g.DrawPath(Pens.Gray, userPath); g.DrawString(question.Owner.Name, arial12, Brushes.DarkBlue, new Rectangle(50, 138, 345, 20)); g.DrawString(question.Owner.ReputationString, arial12, Brushes.Black, new Rectangle(50, 162, 80, 20), centerformat); int xposition = 135; foreach (BadgeGroup badge in question.Owner.Badges.Where(b => b.Count > 0)) { g.FillEllipse(StackMonitorClient.BadgeBrushes[badge.Rank], new Rectangle(xposition, 165, 10, 10)); g.DrawEllipse(Pens.Black, new Rectangle(xposition, 165, 10, 10)); g.DrawString(badge.Count.ToString(), arial12, Brushes.Black, new Rectangle(xposition + 10, 162, 35, 20), centerformat); xposition += 40; } if (question.Owner.Image != null) g.DrawImage(question.Owner.Image, new Rectangle(10, 144, 32, 32)); } }