Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Przesyłanie ramek jabberowych
Konnekt | Forum > Developerzy > Tworzenie wtyczek
KoSiarzPL
Niedługo chciałbym się zająć wtyczką wysyłającą komunikaty przez jabbera ale jeszcze nie przyglądałem się jak działa cała obsługa wiadomości.
Mam kilka wstępnych pytań.
1. Czy da się z poziomu API wysłąć wiadomość jabberową do konkretnego kontatku i nie chodzi mi o wysłąnie tekstu "bla bla bla" tylko całej ramki zdefiniowanej przeze mine.
2. Co potrzebuje wiedzieć i od czego zacząć chcąc napisać taką wtyczkę, która będzie wysyłać i odbierać zdefinoiwane przeze mnie ramki wiaodmości jabberowych
Olórin
Potrzebujesz zaincludować jabberoo a potem pobrać wskaźnik do jego sesji, odpowiedni IM_ masz w kjabber.h. Potem robisz z jabberoo co chcesz smile.gif
KoSiarzPL
Posiadacie jakąkoliwek dokumentację tego projektu? Szukałem na necie i niczego tam nie ma bo projekt już dawno przestał być rozwijany. Nawet pobrać go nie można ze stron wskazywanych przez stronę tego projektu (tak wiem, że jest dostępny do pobrania ze strony konnekta).
KoSiarzPL
Biblioteka jaberoo umieszczona na stronie się nie kompiluje bo brakuje mu katalogu "sigc++" wraz z zawartością (plikami *.cpp)
Olórin
sigc++ to osobna biblioteka, do pobrania z sieci wink.gif
KoSiarzPL
alez wy problemow robicie wink.gif i jak tu czlowiek ma rozwijac jabbera w K? wink.gif
KoSiarzPL
Ta biblioteka to ta: http://libsigc.sourceforge.net/stable.shtml?

Dołączyłem ją ale podczas kompilacji jaberoo dalej mam problem. Dostaję kilkadziesiąt razy błąd ( w tej bibliotece sigc++):
QUOTE
...\libsigc++-2.0.17.tar\libsigc++-2.0.17\sigc++\signal.h(847): error C2027: use of undefined type 'SigC::Marshal<__unnamed>'
with
[
__unnamed=void
]

Natomiast sama biblioteka sigc++ kompiluje mi sie bez problemow.
Jakieś pomysły?
Olórin
Powiem tylko że próbowałem to skompilowac kilka razy i nie udalo mi sie ani razu wink.gif
winthux
jak dobrze pamiętam to potrzebuje konkretnej wersji libsigc chyba 1.2.4 ...
KoSiarzPL
Zauważliście, że do pobrania najstarsza wersja to 2.0? Może to dobry moment na zmianę biblioteki do obsługi jabbera i przepisanie kjabera? wink.gif
Z propozycji bardziej realnych: podeśle mi ktoś projekt, któy się mi skompiluje?
Olórin
Najlepszym momentem na zmiane biblioteki będzie adaptowanie kJabbera na nowe UI (o ile w ogóle będzie zmieniona)...
KoSiarzPL
Zmiana zmianami ale ja potrzebuje działąjącej biblioteki jaberoo. Hao raczej napewno takową ma, co?
KoSiarzPL
Przepraszam, czy ja doczekam sie jakiejś pomocy? Szkoda by wtyczka miała się zmarnować bo napewno wielu osobom przypadnie do gustu.
hao
Było wysłać PM smile.gif Jakoś przeszedł mi ten temat koło nosa.

Nie ma sensu wymieniać biblioteki, bo jest całkiem zgrabnie napisana i jabber działa z nią bardzo dobrze.

Generalnie wszystko jest u nas na stronie smile.gif http://www.konnekt.info/sdk/123.html

Zarówno jabberoo jak i sigc. Jakby były dalej problemy, mogę wystawić skompilowane liby sigc, ale ta wersja pod powyższym linkiem nie powinna już sprawiać problemów.
Olórin
Kosiarz - jak uda Ci się podłączyć do JabberOO to daj znać wink.gif
KoSiarzPL
Kurcze nie zauważyłem,że ta biblioteka jest w katalogu :/ Skompilowało się bez problemu. Tzn. z jedny więc mam pytanie. Nie można było odnaleźć pliku "config.h" więc usunąłem linijkę dołączającą ten plik no i poszło. Wy też mieliście ten błąd?

Aha i sama biblioteka libsigc++ pobrana z katalogu coś ma problemy z otwarciem projektu i nie mogłem samodzielnie jej skompilować. Więc użyłem już skompilowanej wersji. Wierze że została ona poprawnie skompilowana smile.gif

Olórin, jakiego typu problemy miałeś?
Olórin
Takie same jak ty, tyle że mi nie udało się doprosić o działający zestaw tongue.gif
KoSiarzPL
Więc krótki tutek smile.gif :
1. Pobrać libsigc++ i jaberoo ze strony konnekta
2. Rozpakować obie biblioteki do katalogu, powiedzmu [jabber]
3. Otworzyć projekt jaberoo i zmienic konfiguracje:
a) "c/C++ > general > additional include directories" dodać ścieżkę "[jabber]/libsigc++"
b ) "linker > general > additional library directories" upewnić się że jest "bin"
c) "linker > input > additional dependiencies" upewnić się że jest "libjudo_d.lib" i "sigc_d.lib"
4. Skopiować plik "sigc_d.lib" z "[jabber]/libsigc++/bin" do "[jabber]/jaberoo/bin" i upewnić się zę jest w tym ostatnim katalogu również plik "libjudo_d.lib"
5. Skompilować
6. Jeśli pojawi się błąd że nie może odnaleźć pliku "config.h" przejść do tej linijki i ją skomentować
KoSiarzPL
Jeszcze mały problem z tą biblioteką.
Nie wiem czy to jest sprawka Hao czy ktoś inny tak "wspaniale" wymyślił, ale w pliku jabberoo_conf.h jest linijka:
CODE
#define VERSION "Konnekt W32 mod"

Nie wiem czy osoba ta pomyślała, że biblioteka lub kod innej osoby może używać zmiennej "VERSION" a przez tą deklaracje wywala teraz błąd w czyimś godzie. Czy jeśli zmienie ten wpis na:
CODE
#define KONNEKT_JAB_VERSION "Konnekt W32 mod"

to czy coś się stanie? Czy stałą ta jest gdziekolwiek używana?

[edit]
Ok poprawiłem jeszcze w całej bibliotece, mam nadzieje ze to w niczym mi nie przeszkodzi w przyszlosci smile.gif

No pieknie sie wszystko kompiluje wraz z moim projektem, to do dzieła.
hao
Komunikaty są rozsyłane przez wtyczkę UI i o ile pamiętam są wystarczające do napisania obsługi powiadomień (w obie strony). W jabberoo trzeba by napisać obsługę powiadomień, a obsługę CNT_COMPOSING najlepiej dodać do JabberClass - wtedy skorzystałby na tym również dwutlenek, a zmiana w kJabber ograniczyłaby się do zaimplementowania f-cji wirtualnych łączących nową funkcjonalność jabberoo z JabberClass.

UI rozsyła IM_CNT_COMPOSING gdy użytkownik K zaczyna pisać. Gdy przestaje, po kilkunasu sekundach wysyłany jest IM_CNT_COMPOSING_STOP. W reakcji na nie powinny być wysyłane komunikaty przez jabberoo.

Z drugiej strony, w odpowiedzi na powiadomienia z sieci na kontakcie powinna być ustawiana/zdejmowana flaga ST_COMPOSING. IMI_REFRESH_CNT powinno odświeżyć listę kontaktów i okno rozmowy (gdzie pojawi się ikonka klawiatury).

Aha, zanim przystąpisz do dzieła - użyj wersji stąd:

svn://svn.konnekt.info/jabberoo/trunk/

I jak skończysz zmieniać podeślij mi patch'a na maila.
KoSiarzPL
QUOTE(hao @ 26.03.2006 - 16:37) *

Komunikaty są rozsyłane przez wtyczkę UI i o ile pamiętam są wystarczające do napisania obsługi powiadomień (w obie strony). W jabberoo trzeba by napisać obsługę powiadomień, a obsługę CNT_COMPOSING najlepiej dodać do JabberClass - wtedy skorzystałby na tym również dwutlenek, a zmiana w kJabber ograniczyłaby się do zaimplementowania f-cji wirtualnych łączących nową funkcjonalność jabberoo z JabberClass.

Czym jest ta JabberClass? No właśnie też tak myślałem żeby cały kod wpakować w jaberoo a w kJabber tylko zrobić obsługę komunikatu że ma wysłać powiadomienie korzystając z zaimplementowanych funkcji w jabberoo.
QUOTE

UI rozsyła IM_CNT_COMPOSING gdy użytkownik K zaczyna pisać. Gdy przestaje, po kilkunasu sekundach wysyłany jest IM_CNT_COMPOSING_STOP. W reakcji na nie powinny być wysyłane komunikaty przez jabberoo.

Tak już się z tym wcześniej zapoznałem. Uważam, że trochę źle jest zrobione wysyłąnie komunikatów CNT_COMPOSING. Jeśli ktoś przestaje pisać a chwile wysyłąny jest komunikat że przestał tworzyć a to nie prawda. W okienku dalej ma tekst a przestał bo np musiał coś innego zrobić. Dlatego moja wtyczka tworzyła dwa nowe komunikaty.

QUOTE

Z drugiej strony, w odpowiedzi na powiadomienia z sieci na kontakcie powinna być ustawiana/zdejmowana flaga ST_COMPOSING. IMI_REFRESH_CNT powinno odświeżyć listę kontaktów i okno rozmowy (gdzie pojawi się ikonka klawiatury).

No tak ale nie ma zaimplementowanego komunikatu ktory by mówił że ktoś do nas pisze więc trzeba go zrobić i najlepiej by wysyłął go kJabber i usuwał tą wiadomość z kolejki by inne wtyczki jej nie przechwyciły i np nie wyświetlały śmieci w oknie wiadomości na co się skarrzył ostatnio saphire tutaj.
Olórin
QUOTE
Czym jest ta JabberClass?

Klasa (dostępna ze źródłami dwuTlenka) do łączenia klas obsługi protokołu z API Konnekta.
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.