AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

ICQ Konaktliste

Ein Thema von -=IOI=- · begonnen am 13. Jul 2005 · letzter Beitrag vom 13. Jul 2005
Antwort Antwort
-=IOI=-

Registriert seit: 5. Mär 2005
54 Beiträge
 
#1

ICQ Konaktliste

  Alt 13. Jul 2005, 21:00
Hallo erstmal.

Ich programmier grad nen ICQ Clone mit der TICQClient Kompo. Nun kann ich mir mit der procedure RequestContactList die Kontaktliste vom ICQ Server laden. Mit folgendem Code lese ich dann die Liste aus und schreibe die Einträge in ein ListView:

Delphi-Quellcode:
procedure TForm1.ICQClient1ServerListRecv(Sender: TObject;
  SrvContactList: TList);
var
  i: Word;
  UserInfo: TUINEntry;
  ListItem: TListItem;
begin
  if SrvContactList.Count > 0 then
    begin
    ListView1.Clear;
    LastUser := 0;
    for i := 0 to SrvContactList.Count - 1 do
    begin
      UserInfo := PUINEntry(SrvContactList.Items[i])^;
      if UserInfo.CType = U_VISIBLE_LIST then
        ICQClient1.VisibleList.Add(IntToStr(UserInfo.UIN))
      else if UserInfo.CType = U_INVISIBLE_LIST then
        ICQClient1.InvisibleList.Add(IntToStr(UserInfo.UIN))
      else if UserInfo.CType = U_NORMAL then
      begin
        if ICQClient1.AddContact(UserInfo.UIN) then
        begin
          User[LastUser+1] := TICQUser.Create;
          User[LastUser+1].Nick := UserInfo.Nick;
          User[LastUser+1].Nummer := UserInfo.UIN;
          User[LastUser+1].Status := ICON_OFFLINE;
          User[LastUser+1].Gruppe := UserInfo.CGroupID;
          Inc(LastUser);
          ListItem := ListView1.Items.Add;
          ListItem.ImageIndex := ICON_OFFLINE;
          ListItem.Caption := UserInfo.Nick;
        end;
      end;
    end;
    end;
  ICQClient1.DestroyUINList(SrvContactList);
  ICQClient1.RequestOfflineMessages;
end;
Das klappt auch alles soweit und ich seh alle Leute in der Liste mit einer roten Blume vorne dran. Nun heißt es in der Beschreibung, dass mit der Funktion StatusChange eine Änderung des Status eines Users mitgeteilt wird. Das hab ich dann so umgesetzt:

Delphi-Quellcode:
procedure TForm1.ICQClient1StatusChange(Sender: TObject; UIN: String;
  Status: Cardinal);
var i: Integer;
    FNick: String;
begin
  for i := 1 to LastUser do
  if User[i].Nummer = StrToInt(UIN) then
  begin
    FNick := User[i].Nick;
    case Status of
    S_ONLINE: User[i].Status := ICON_ONLINE;
    S_INVISIBLE: User[i].Status := ICON_INVISIBLE;
    S_AWAY: User[i].Status := ICON_AWAY;
    S_NA: User[i].Status := ICON_NA;
    S_OCCUPIED: User[i].Status := ICON_OCCUPIED;
    S_DND: User[i].Status := ICON_DND;
    S_FFC: User[i].Status := ICON_FFC;
  end;
  end;

  for i := 0 to ListView1.Items.Count - 1 do
  if FNick = ListView1.Items.Item[i].Caption then
  case Status of
  S_ONLINE: ListView1.Items.Item[i].ImageIndex := ICON_ONLINE;
  S_INVISIBLE: ListView1.Items.Item[i].ImageIndex := ICON_INVISIBLE;
  S_AWAY: ListView1.Items.Item[i].ImageIndex := ICON_AWAY;
  S_NA: ListView1.Items.Item[i].ImageIndex := ICON_NA;
  S_OCCUPIED: ListView1.Items.Item[i].ImageIndex := ICON_OCCUPIED;
  S_DND: ListView1.Items.Item[i].ImageIndex := ICON_DND;
  S_FFC: ListView1.Items.Item[i].ImageIndex := ICON_FFC;
  end;
end;
Mein Problem besteht nun darin, dass mir nach dem LogIn nicht automatisch die User, die Online sind angezeigt werden, sondern alle weiterhin eine rote Blume haben. (Falls jetzt einer auf die Idee kommt - es sind User online, mit normalem ICQ getestet).

Wie schaffe ich es also, dass er nach dem Login die einzelnen User auf ihren Status überprüft?

Danke Flo
  Mit Zitat antworten Zitat
-=IOI=-

Registriert seit: 5. Mär 2005
54 Beiträge
 
#2

Re: ICQ Konaktliste

  Alt 13. Jul 2005, 21:17
Ich glaub ich hab ne Lösung gefunden. Wenn die Hilfe stimmt könnte ich die Liste mit den Contacts durchgehen und nach jedem einzelnen mit der procedure SearchByUIN suchen. Als Ereignis erhalte ich dann OnUserFound, welches mir unter anderem den tatus angibt.

Die Lösung erscheint mir allerdings etwas sehr gewurschtelt.

Wenn also einer noch ne bessere Möglichkeit kennt, dann immer her mit.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:43 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz