예제 #1
0
        /// <summary>
        /// Konstruktor okna czatu
        /// </summary>
        /// <param name="idRozmowcy">Identyfikator drugiego uczestnika czatu</param>
        /// <param name="komunikator">Obiekt odpowiedzialny za przesylanie i odbieranie wiadomosci</param>
        public OknoCzat(Kontakt rozmowca)
        {           
            // inicjalizacja elementow graficznych okna
            InitializeComponent();
            // ustalanie naglowka okna
            this.Text = String.Format("Mój Czat z {0}", rozmowca.Nazwa);

            // zapisywanie referencji
            this.rozmowca = rozmowca;
        }
예제 #2
0
        void rysujElement(Kontakt kontakt, DrawItemEventArgs e)
        {
            Padding margines = this.Margin;

            // kolorowanie wybranego elementu listy
            if ((e.State & DrawItemState.Selected) == DrawItemState.Selected)
            {
                e.Graphics.FillRectangle(Brushes.CornflowerBlue, e.Bounds);
            }
            else
            {
                e.Graphics.FillRectangle(Brushes.Wheat, e.Bounds);
            }

            // separacja elementow listy
            e.Graphics.DrawLine(Pens.DarkGray, e.Bounds.X, e.Bounds.Y, e.Bounds.X + e.Bounds.Width, e.Bounds.Y);

            // rysowanie obrazka
           // Image obrazek = null;
            //e.Graphics.DrawImage(obrazek, e.Bounds.X + margines.Left, e.Bounds.Y + margines.Top, rozmiarIkony.Width, rozmiarIkony.Height);

            // obliczanie ram dla tytulu
            Rectangle ramyTytul = new Rectangle(e.Bounds.X + margines.Horizontal + rozmiarIkony.Width,
                                                  e.Bounds.Y + margines.Top,
                                                  e.Bounds.Width - margines.Right - rozmiarIkony.Width - margines.Horizontal,
                                                  (int)czcionkaTytul.GetHeight() + 2);

            // obliczanie ram dla detalu
            Rectangle ramyDetal = new Rectangle(e.Bounds.X + margines.Horizontal + rozmiarIkony.Width,
                                                   e.Bounds.Y + (int)czcionkaTytul.GetHeight() + 2 + margines.Vertical + margines.Top,
                                                   e.Bounds.Width - margines.Right - rozmiarIkony.Width - margines.Horizontal,
                                                   e.Bounds.Height - margines.Bottom - (int)czcionkaTytul.GetHeight() - 2 - margines.Vertical - margines.Top);

            // rysuj tekst
            e.Graphics.DrawString(kontakt.Nazwa, czcionkaTytul, Brushes.Black, ramyTytul, format);
            e.Graphics.DrawString(kontakt.StatusTekst + (kontakt.Opis!= null?" (" + kontakt.Opis + ")":""), czcionkaDetal, Brushes.DarkGray, ramyDetal, format);

            e.DrawFocusRectangle();
        }
예제 #3
0
        void dodajNowyKontakt(Kontakt kontakt) {
            if (kontakty.Any(k => k.ID == kontakt.ID)) 
            {
                MessageBox.Show("Masz już taki kontakt.");
                return;
            } 
            kontakty.Add(kontakt);

            if (polaczony)
            { komunikator.DodajKontakt(kontakt.ID, kontakt.IP); }
            
            
            odswiezListeKontaktow();
            Kontakt.ZapiszListeKontaktow(kontakty, "kontakty.xml");
        }
예제 #4
0
 /// <summary>
 /// Pokaz okno czatu z innym uzytkownikiem. Jesli okno jeszcze nie istnieje, stworz je
 /// </summary>
 /// <param name="idRozmowcy">Identyfikator rozmowcy</param>
 OknoCzat otworzOknoCzat(Kontakt rozmowca) {
     // jesli okno czatu jest juz otware, pokaz je
     if (oknaCzatu.ContainsKey(rozmowca.ID))
     { 
         // znajdz okno
         OknoCzat otwarteOkno = oknaCzatu[rozmowca.ID];
         // jesli okno jest zminimalizowane, przywroc je na pulpit
         if (otwarteOkno.WindowState == FormWindowState.Minimized) 
         {
             otwarteOkno.WindowState = FormWindowState.Normal;
         }
         // pokaz okno na pierwszym planie
         otwarteOkno.BringToFront();
         // pokaz je, jesli bylo schowane
         otwarteOkno.Visible = true;
     }
     else //nie bylo otwarte, wiec otworz nowe
     {
         OknoCzat noweOkno = new OknoCzat(rozmowca);
         noweOkno.Komunikator = komunikator;
         // zachowujemy nowe okno na liscie otwartych okien
         oknaCzatu.Add(rozmowca.ID, noweOkno);
         // pokazujemy nowe okno
         noweOkno.Show(this);
     }
     return oknaCzatu[rozmowca.ID];
 }
예제 #5
0
 /// <summary>
 /// Pokaz okno czatu z innym uzytkownikiem i wyswietl w nim wiadomosc
 /// </summary>
 /// <param name="idRozmowcy">nadawca wiadomosci </param>
 /// <param name="wiadomosc">tresc wiadomosci</param>
 void otworzOknoCzat(Kontakt rozmowca, string wiadomosc)
 {
     var okno = otworzOknoCzat(rozmowca);
     okno.WyswietlWiadomosc(wiadomosc);
 }
예제 #6
0
 void zmienOpisKontaktu(Kontakt rozmowca, string opis) {
     rozmowca.Opis = opis;
     odswiezListeKontaktow();
 }
예제 #7
0
 void obsluzWiadomosc(Kontakt rozmowca, TypWiadomosci rodzaj , string wiadomosc) {
     if (rodzaj == TypWiadomosci.Zwykla) { otworzOknoCzat(rozmowca, wiadomosc); }
     else if (rodzaj == TypWiadomosci.Opis) { zmienOpisKontaktu(rozmowca, wiadomosc); }
 }
예제 #8
0
 /// <summary>
 /// komunikator przekazal nam nowa wiadomosc
 /// </summary>
 /// <param name="id">Identyfikator nadawcy</param>
 /// <param name="wiadomosc">tresc wiadomosci</param>
  void komunikator_NowaWiadomosc(string id, TypWiadomosci rodzaj , string wiadomosc)
 {
     // otworz okno przez delegate poniewaz jestesmy w innym watku
     var kontakt = kontakty.Where(k => k.ID == id).SingleOrDefault();
     if (kontakt == null) 
     {// nieznany 
         kontakt = new Kontakt() { ID = id, IP = IPAddress.Parse(id), Nazwa = id, Polaczony = true };
         kontakty.Add(kontakt);
     }
      Invoke(obsluzNowaWiadomoscUI, kontakt, rodzaj , wiadomosc); 
 }
예제 #9
0
 public OknoDodajKontakt(Kontakt kontakt):this() 
 {
     tbIP.Text = kontakt.IP.ToString();
     tbNazwa.Text = kontakt.Nazwa;
     NowyKontakt = kontakt;
 }
예제 #10
0
 public OknoDodajKontakt()
 {
     InitializeComponent();
     CenterToParent();
     NowyKontakt = new Kontakt();
 }