Click here to Skip to main content
15,868,016 members
Articles / Programming Languages / C#
Article

GmailNotifierControl: A Gmail Notifier like control

Rate me:
Please Sign up or sign in to vote.
4.65/5 (13 votes)
6 Jun 2005CPOL1 min read 104.8K   2.1K   100   21
A Gmail Notifier dialog control, to use with any app, just like a baloon tooltip.

Sample Image - GmailNotifierInfo.jpg

Introduction

I've been using Gmail for something like 8 months, and all I can say is that the Gmail team did a good work. I also liked the Gmail Notifier, the way it acts... I decided thus to create my own Gmail Notifier like control, so as to use it in apps I write.

Using the code

The GmailNotifierControl is made of a picture box, a label, one or two timers (I could have used only one but the code wouldn't have been that clear) and a [ThatsItControl :)]. The control exposes some properties visible under the Misc... section in the VS IDE, and a method, all of which are listed below:

  • GmailImage: The image to show in the control.
  • Info: The text to display.
  • Interval: The time to sleep before moving the control up or down.
  • NotifyText: The text to display in the notify icon of the control.
  • Pitch: The number of pixels by which the control is moved vertically (in the Y axis).
  • TimeOut: The duration of visibility of the info, after that duration the control hides.
  • ShowInfo(): Shows the info set in the control.

The code itself is easy to understand, just see by yourself:

C#
private void tmrMove_Tick(object sender, System.EventArgs e)
{
    int nTaskBarHeight = Screen.PrimaryScreen.Bounds.Bottom - 
                         Screen.PrimaryScreen.WorkingArea.Bottom;
    if(!bHide) //Show the Info Box
    {
        this.Show();
        if ( this.Top > Screen.PrimaryScreen.Bounds.Bottom - 
           (this.Height + nTaskBarHeight )) //screen limit - TaskBarSize
        {    
            this.TopMost = false;
            this.Top -= nPitch;
            this.Refresh();
            bFinished = false;
        }
        else 
        {
            this.TopMost = true;
            bFinished = true;
            this.Refresh();
            bHide = true;
        }
    }
    else if (!bFinished) //Hide It
    {
        if ( this.Top < Screen.PrimaryScreen.Bounds.Bottom )
        {    
            this.TopMost = false;
            this.Top += nPitch;
            this.Refresh();
            bFinished = false;
        }
        else 
        {
            this.TopMost = true;
            this.Hide();
            bFinished = true;
            bHide = false;
        }
    }
    if (bFinished)
        tmrMove.Stop();
    if (bHide && bFinished)
        tmrEnd.Start();
}

In order to have the properties in the same category in the IDE, I used this:

C#
[Category("Misc..."),
 Description("The TimeOut in milliseconds of GmailNotifierControl Info")]
 public int TimeOut
 {
     get
     {
     return this.nTimeOut / 1000;
     }
     set
     {
     this.nTimeOut = value * 1000;
     this.tmrEnd.Interval = value * 1000;
     }
 }

 [Category("Misc..."),
  Description("The text to show in the GmailNotifierControl")]
 public string Info
 {
     get
     {
     return this.strInfo;
     }
     set
     {
     this.lblInfo.Text = value;
     this.strInfo = value;
     this.Refresh();
     }
 }

Points of Interest

I have tried to override some form specific properties like opacity, just to get them together in the Misc... category but couldn't. I would also like to refine this control, so any contribution, any suggestions, would be welcome.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Chief Technology Officer
Morocco Morocco
in his studies, erratum discovered c/c++.he appreciated it.
when he met oracle products, in his job, he fell in love.
he uses c# .net & ms sql.

he created a "f.r.i.e.n.d.s" like soap movie, melting all of the above.
went back in the university.
after he took courses of artificial vision & imagery, he finished his studies with a successful license plate recognition project.

Comments and Discussions

 
GeneralGet the taskbar height Pin
Kerem Kat3-Sep-07 9:06
Kerem Kat3-Sep-07 9:06 
AnswerRe: Get the taskbar height Pin
eRRaTuM4-Sep-07 6:49
eRRaTuM4-Sep-07 6:49 
GeneralRe: Get the taskbar height Pin
Kerem Kat4-Sep-07 8:13
Kerem Kat4-Sep-07 8:13 
GeneralRe: Get the taskbar height Pin
eRRaTuM10-Sep-07 4:45
eRRaTuM10-Sep-07 4:45 
GeneralThanks and small addition Pin
PeterTa15-Feb-07 18:27
PeterTa15-Feb-07 18:27 
AnswerRe: Thanks and small addition Pin
eRRaTuM18-Feb-07 23:49
eRRaTuM18-Feb-07 23:49 
QuestionGood Work! Pin
Mike20025-Aug-06 1:30
Mike20025-Aug-06 1:30 
AnswerRe: Good Work! Pin
eRRaTuM21-Nov-06 23:53
eRRaTuM21-Nov-06 23:53 
GeneralThanks a lot. Pin
AngurajanK19-Jul-06 23:50
AngurajanK19-Jul-06 23:50 
I was just looking Sigh | :sigh: for a control like this for my project. Great Wink | ;)
Its very useful.Rose | [Rose]
AnswerRe: Thanks a lot. Pin
eRRaTuM20-Jul-06 1:01
eRRaTuM20-Jul-06 1:01 
QuestionUse at commercial product? Pin
sanme9813-Jun-06 22:24
sanme9813-Jun-06 22:24 
AnswerRe: Use at commercial product? Pin
eRRaTuM28-Jun-06 1:39
eRRaTuM28-Jun-06 1:39 
GeneralRe: Use at commercial product? Pin
Xavierkeil23-Aug-08 11:04
Xavierkeil23-Aug-08 11:04 
GeneralRe: Use at commercial product? Pin
eRRaTuM25-Aug-08 4:37
eRRaTuM25-Aug-08 4:37 
GeneralOpacity Pin
mishariy19-Oct-05 6:06
mishariy19-Oct-05 6:06 
GeneralRe: Opacity Pin
eRRaTuM27-Oct-05 1:35
eRRaTuM27-Oct-05 1:35 
GeneralWider menu bars Pin
Phebous16-Jun-05 8:43
Phebous16-Jun-05 8:43 
GeneralRe: Wider menu bars Pin
eRRaTuM17-Jun-05 6:09
eRRaTuM17-Jun-05 6:09 
QuestionDoes it miss something? Pin
eRRaTuM8-Jun-05 4:55
eRRaTuM8-Jun-05 4:55 
Generallittle change Pin
TylorDurden6-Jun-05 22:24
TylorDurden6-Jun-05 22:24 
GeneralRe: little change Pin
eRRaTuM7-Jun-05 0:11
eRRaTuM7-Jun-05 0:11 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.