Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Konnekt Delphi SDK
Konnekt | Forum > Developerzy > Tworzenie wtyczek
Stron: 1, 2
super_ip
Witam ponownie
Wlasnie podjelem probe napisania wtyczki dla sieci ICQ i jak bylo mozna sie spodziewac mam kilka problemow. Wtyczka aktualnie laczy sie z siecia i pokazuje wlasny status ale zeby mogla to zrobic trzeba podac UIN i haslo no i tu zaczyna sie problem jak pobrac do zmiennej integer i string wartosci z wczesniej zadeklarowanych kolumn wiem ze sluzy do tego funkcja UIActionCfgGetValue ale nie moge sobie z tym poradzic bo albo nic mi nie pobiera albo jakis dziwny ciag znakow oraz druga sprawa jak pobrac do TstringList liste kontaktow z rostera bo samo dodawanie obsluguje konnekt bez problemu ale jak ta liste pobrac.
winthux
Do pobierania wartości z kolumn konfiguracji służą funkcje GETINT, GETSTRA. Jeżeli chcesz pobrać wartość kontrolki z konfiguracji (np. przed zapisaniem konfiguracji) to używasz UIActionCfgGetValue. Odnośnie listy kontaktów w konnekcie, to jest ona inaczej obsługiwana niż Ci się wydaje. Kontakty rozpoznawane są przez id, które jest liczbą ani stringiem. Jeżeli chcesz sprawdzić czy dany kontakt istnieje na liście to korzystasz z IMC_CNT_IDEXISTS. Jeżeli chodzi o pobranie wszystkich kontaktów to nie wiem, nigdy czegoś takiego nie wykorzystywałem. Musisz czekać aż hao się odezwie lub inny dev, który wie jak to zrobić.
skolima
Uwaga 1. To jest przejrzenie całej listy kontaktów blokujące na czas odczytu listę. Jest to konieczne dla synchronizacji, ale oznacza, że w tym czasie inne wtyczki będą zablokowane przy próbie odczytu listy dopóki jej nie odblokujesz.

Uwaga 2. Funkcja służy w imp-gg do znalezienie kontaktu o znanym DISPLAY albo CELLPHONE. W nowym SDK ma być zbędna ze względu na możliwość przeszukiwania listy po dowolnym parametrze, nie wiem, czy to jest już dostępne.

Uwaga 3. Użycie w ten sposób std::string nie jest optymalne wydajnościowo, ale zabezpiecza przed wyciekiem przypadkowym pamięci. Aktualnie dostępny jest już chyba string ze stamina.li, powinno byc prościej?

CODE
int getCntByDisplayOrPhone(const char* string)
{
//blokujemy liste kontaktów
Ctrl->DTlock(DTCNT,-1);
//przeglądamy całą listę
for (int i = 1; i < ICMessage(IMC_CNT_COUNT); i++) {
 //pobieramy DISPLAY aktualnego kontaktu
 std::string display = GETCNTC(i, CNT_DISPLAY);
 //jeśli się zgadza z szukanym
 if(strcmp(string,display.c_str())==0)
 {
  //odblokowujemy listę kontaktów
  Ctrl->DTunlock(DTCNT,-1);
  return i;
 }
 //pobieramy CELLPHONE aktualnego kontaktu
 std::string phone = GETCNTC(i, CNT_CELLPHONE);
 //jeśli się zgadza z szukanym
 if(strcmp(string,phone.c_str())==0)
 {
  //odblokowujemy listę kontaktów
  Ctrl->DTunlock(DTCNT,-1);
  return i;
 }
}
//odblokowujemy listę kontaktów
Ctrl->DTunlock(DTCNT,-1);
return 0;
}


Coś jest niezrozumiałe? Pisz na jabbera/gg.

EDIT:właśnie zauważyłem, że to wątek o delphi tongue.gif . Mam nadzieję, że kod dasz radę przenieść?
lhs
skolima - języki chyba pomyliłeś... tongue.gif
super_ip
Skolima wielkie dzieki za kodzik, ale mi chodzilo o pobranie listy kontaktow tylko dla sieci ICQ myslalem ze skoro mozna bez problemu dodac kontakt to rownie latwo mozna pobrac i wykonac na liscie stringow jakas operacje jednak doszedlem do wniosku ze nie jest to dobry pomysl poniewaz np. id kontaktu mozna pobrac za pomoca dostarczonej juz funkcji (znalazlem jak kiedys w SDk ale jakos mi umknela i mie moge jej teraz znalesc) pozatym to musze zmienic podejscie do tego projektu bo mi wychodzi ze pisze nowy komunikator a nie wtyczke musze wiecej korzystac z dostepnych funkcji i procedur ale moja znajomosc C jest wlasciwie zadna.

Aktualnie wtyczka mozna powiedziec ze "dziala" laczy sie z siecia wysyla i pobiera wiadomosci czyli podstawowe zalozenie zostaly spelnione ale czyni to za pomoca wlasnego okna wiadomosci i procedur. Kolejny etap to wlasnie integracja z K i tu licze na Wasza pomoc no chyba ze zaczne od nauki C.

Licze wiec na pomoc,sugectje i naprowadzenie w:
1. funkcja zwracajaca id kontaktu
2. wywolanie konektowego okna wiadomosci i jego obsluzenie lub ewentualnie jako alternatywe zmiena dwukliku kontaktu aby wywolywal okno wiadomosc ICQ a nie konnektowe (cos jak we wtyczce faworki)
3. obsluga statusow oraz zmiane aktywnosci kontakow
4. obsluga knotyfi

Wszelka pomoc mile widziana rowniez na gg/jabber

I na koniec male pytanie czy piorytet wtyczki ma znaczenie poza ustawieniem jej w kolejnosci i jesli tak to jaki taka wtyczko powinna miec piorytek.

Zauwazylem tez blad wywolujacy "blad krytyczny" przy uzywaniu wtyczek zmieniajacych status (kAllStatus, kZmieniacz) ale chyba wynika to iz obsluga statusow przej moja wtyczke nie jest jeszcze zalczona
Mucha
Niestety procedura IconRegister z przykladow nie dziala (z ActCfg)
Sija
do pierwszego posta dorzucilem nowa wersje SDK (poprawki, uzupełnienia - dzięki ursusowi smile.gif)

co do ikonek:

Przykładowa definicja:
123 ICON "run.ico"
IDI_RUN = 123;
IDI_ICORUN = (NET * 1000) + 123;

Pzykładowe wykorzystanie:
ICMessage(IMI_ICONRES, IDI_ICORUN, IDI_RUN);
UIActionAdd(IMIG_CFGGRP, IMIA_RUN, ACTT_BUTTON or ACTSC_INLINE or ACTSC_BOLD, PChar('Uruchom' + AP_ICO + IntToStr(IDI_ICORUN)), 0, 150, 30);
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2012 Invision Power Services, Inc.