Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Informationen des ausgewählten Users.
#41
Stürzt es ab oder hängt es sich auf?

Wenn du über die Liste iterierst, wäre es eine gute Idee, den Zeiger l weiterzuschalten: [c]l = l->next[/c].

Wegen der E-Mail-Benachrichtigung muss ich mal schauen, woran das liegt. Das hängt bestimmt mit unserem Umzug auf einen anderen Server zusammen. (Kann dir aber noch nicht sagen, wann ich die Zeit dafür finde...)
Welche Pidgin-Version setzt du ein?
Welches Betriebssystem?
Was sagt das Debug-Fenster?

[Bild: pidginbanner.png]
Zitieren
#42
ach, das war eigene Dummheit..
Hängt sich auf. Endlosschleife Big Grin
Vielen Dank.
Dann habe ich noch eine Frage:
Ich möchte gerne, dass diese Funktion aufgerufen wird, wenn ich auf meinen Menü-Eintrag klicke.
Momentan wird der Funktionszeiger auf meine Funktion gesetzt, wenn ich meinen Eintrag klicke. Die Funktion wird aber erst aufgerufen, wenn ich auf Info abrufen klicke im Buddy.

Und noch eine Frage:
Kann ich nach Aufruf meiner Funktion den Zeiger wieder auf die Alte Funktion setzen? Denn sonst wird bis zum Neustart das Info abrufen gesperrt sein....
Zitieren
#43
Na wenn jemand auf deinen Menü-Eintrag klickt, musst du halt den Klick auf "Info abrufen" selbst simulieren. Das macht bei mir [1] die Funktion scan_buddy(). Der Klick selbst passiert in Zeile 73, nachdem vorher alle Voraussetzungen geprüft wurden und eine Referenz auf den zu scannenden Kontakt (current_scanned_buddy) gespeichert wurde.

Mit der Referenz prüfe ich dann in Zeile 148, ob die Infos, die ich gerade bekommen habe, zu meinem Kontakt gehören. Falls ja, mache ich damit mein eigenes Ding und falls nicht wird einfach die originale Funktion aufgerufen. Indem ich current_scanned_buddy hinterher auf NULL setze, funktioniert nach dem Vorgang auf das "Info abrufen" wieder.

Du solltest den Zeiger auf jeden Fall nicht jedes Mal umbiegen sondern einmalig, wenn dein Plugin geladen wird. Und nicht vergessen, den Zeiger beim Entladen wieder zurückzubiegen! Wink Im Prinzip müsste deine call_user() am Ende genauso aussehen, wie meine scan_buddy(), wenn ich das jetzt richtig blicke.

[1] http://bazaar.launchpad.net/~konradgraef...src/scan.c
Welche Pidgin-Version setzt du ein?
Welches Betriebssystem?
Was sagt das Debug-Fenster?

[Bild: pidginbanner.png]
Zitieren
#44
Hey, ich danke dir für deine ausführlichen Rückmeldungen. Ich hatte wieder etwas Zeit um daran weitere zuarbeiten. Ich habe mir mal deine scan.c ausgedruckt und wichte Stellen markiert und in meinem neuaufgesetzem Plugin eingebaut. Das funktioniert nun wunderbar. Leider habe ich noch keine Idee wie ich die *user_info weiterverarbeiten kann. Ich konnte auch nicht in der API entdecken. Könntest du mir da vielleicht noch etwas helfen?

Ich habe auch schon das hier versucht:
[c]
purple_debug_warning("plugin-call-a-buddy", buddy->account->user_info);
[/c]
Aber das hat mir leider nur meine User_Infos angezeigt.
Zitieren
#45
Mach mal bitte einen Screenshot von dem Info-Fenster (also wenn du "Info anzeigen" machst). Du kannst es auch verpixeln, aber mich interessiert die Zeile mit der Telefonnummer (da vielleicht die ersten drei Ziffern klar lassen).
Welche Pidgin-Version setzt du ein?
Welches Betriebssystem?
Was sagt das Debug-Fenster?

[Bild: pidginbanner.png]
Zitieren
#46
Hey,
ich konnte nicht vorher antworten, da ich mich nicht einloggen konnte ;D

Also ich habe das Bild mal in den Anhang gepackt.


Angehängte Dateien Thumbnail(s)
   
Zitieren
#47
Naja, es steht doch aber alles in meiner displaying_userinfo_cb() [1]: Du holst dir mit purple_notify_user_info_get_entries() eine Liste der einzelnen Einträge. Die gehst du dann durch und wenn die Bezeichnung eines Eintrags (purple_notify_user_info_entry_get_label()) mit "Telefon:" übereinstimmt, ist der Wert des Eintrags (purple_notify_user_info_entry_get_value()) die gesuchte Telefonnummer.

Du musst dir nur noch überlegen, wie du damit umgehst, dass es mehrere Telefonnummern geben kann.

[1] http://bazaar.launchpad.net/~konradgraef...src/scan.c
Welche Pidgin-Version setzt du ein?
Welches Betriebssystem?
Was sagt das Debug-Fenster?

[Bild: pidginbanner.png]
Zitieren
#48
Hey,
dankeschön!

Zu der Überprüfung, da hast du eine Sache namens [c]dgettext()[/c].
Dies habe ich mittels Windows und Visual Studio nicht verfügbar.
Ich habe soetwas versucht:

[c]if(purple_utf8_strcasecmp(purple_notify_user_info_entry_get_label(e), "Telefon:")==0) {[/c]

Das möchte er bzw. komme ich so gar nicht in die IF-Abfrage.
Zitieren
#49
Gib dir halt purple_notify_user_info_entry_get_label() irgendwo aus und schau's dir an. Vielleicht gehört der Doppelpunkt auch nicht dazu oder irgendsowas...

Das dgettext() zieht sich nur die lokale Übersetzung aus der Übersetzungsdatei von Pidgin.
Welche Pidgin-Version setzt du ein?
Welches Betriebssystem?
Was sagt das Debug-Fenster?

[Bild: pidginbanner.png]
Zitieren
#50
Vergiss das Smile Ich muss den Doppelpunkt entfernen ;D
Habe das durch ein entsprechendes
purple_debug_warning("plugin-call-a-buddy", purple_notify_user_info_entry_get_label(e));
in der While-SChleife herausgefunden ;D

Das Plugin funktioniert. Vielen Dank für deine Hilfe!
Zitieren


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste