Fresty i tlenowy opis…

W piątek coś sprawdzałem w tlenie i przy okazji jakoś się zainteresowałem opisem :P
Te kilka doświadczeń z opisem, głównie już znanych, ale jakoś zapomnianych przedstawiłem na forum ekipy w temacie Status opisowy w Tlenie.
Niestety zawartość postu została skasowana, po tym jak poniekąd o2 zapowiedziało filtracje i ucinanie opisu po stronie serwera…
To tak w ramach małego protestu, bojkotu… :P

Treść postu poniżej ;)

Przeprowadziłem kilka testów związanych z opisem w tlenie ;)
I udało mi się dokonać ustawiania i pomyślnego odebrania opisu w drugim tlenie. No niby nic szczególnego, prócz tego, ze opis ten składał się z ponad 5200 znaków ;)

Jak się okazuje, pozostała w tlenie ta jabberowska możliwość opisów nieograniczonych :P Jedynym problemem jest klient, a dokładniej to ustawianie i wyświetlanie stanu opisowego.
Próba ustawienia stanu większego niż 100 znaków legalnymi sposobami, tj. przez okno ustawiania opisu lub funkcja PF_CHANGEUSERSTATEdoprowadzi do redukcji opisu do 100 znaków przed wysłaniem na serwer.
Jednak, jeśli uda nam się już wysłać większy status niż "możemy", to pojawia się kolejny problem - jego odbioru i wyświetlenia w drugim kliencie.
Tlen odbierze ten podrasowany opis bez problemów, ba nawet go przypisze konkretnemu kontaktowi, ale niestety pod kontaktem jak również w hincie pokaże tylko ok. 255 znaków.

Spytacie gdzie ta reszta i skąd pewność ze odebrał poprawnie całość i przypisał...
Otóż opcja kopiuj opis skopiuje nam do schowka, cały wysłany opis, a nie tylko te ~250 pierwszych znaków...
Wiec skoro wszystko jest możliwe, to czemu klient blokuje wyświetlenie większego opisu...
Rozumiem, blokowanie przy wysłaniu do 100 znaków, ok może być takie blokada, ale skoro jest możliwość wysłania większego to niech chociaż dobrze zostanie wyświetlony pod kontaktem, lub w hincie ;]

Nie widzę problemów do zaimplementowania obsługi nieograniczonych opisów do tlena :P
Cos a'la mleczko... mleczko2 :D
Chyba że zablokują coś na serwerze :/
Zresztą max to chyba i tak 4KB by mogłoby być, bo tyle można wrzucić pod kontakt lub do hinta... w wolnej chwili obadam :P

Udało mi się pluginie zaimplementować obsługę ~nieograniczonych opisów, ale na razie się wstrzymałem z tym…

Udostępniłem plugin, a raczej to co do tej pory napisałem w ramach tego projektu. Plugin o nazwie fresty funkcjonalnością przypomina wtyczkę mleczko autorstwa Trena.

Prawdopodobnie projekt zostanie zaniechany z przyczyn oczywistych, o2 planuje przyblokować ustawianie większych opisów niż 100 znaków ;]
[...]
Aktualnie można ustawić opis 100 znakowy w wielu liniach, max 100 lini po 1 znaku :P
Należy pamietać, że Tlen i tak przytnie Wasz opis pod kontaktem do 4 lini, całość będzie w hincie...

Na razie zostałem przy tych 100 znakach, poczekamy co o2 zrobi...
Dodanie do listy, czy próba ustawienia opisu powyżej 100 zanków, zaowocuje automatycznym skróceniem do wymaganej długości...

Wersja 0.1, miała nie być publikowana do czasu zaimplementowania reszty, ale zaczołem tracić ochotę na pisanie , skoro o2 zablokować ma na dniach przyjmowanie statusów opisowych powyżej 100 znaków.

Przed chwilą wydałem nową wersje :P

Changelog wersji 0.2 pluginu fresty:

  • poprawiono obsługę kursora w EditBoxie;
  • dodano licznik znaków opisu;
  • dodano focus i zaznaczenie przy otwarciu okienka;
  • dodano skróty klawiatury i opcje dostępne pod nimi:
    CTRL+A - wiadomo
    CTRL+S - usuń spacje
    CTRL+D - przywróć spacje (po wykonaniu CTRL+S)
    Oczywiście EditBox posiada jeszcze standardowe skróty windowsa dla okienek edycyjnych typu kopiuj, wklej etc.(Ctrl+C...);

Trochę nerwów mi zeżrało babranie się z tymi kursorami :/
Kombinowałem na rożne możliwe sposoby, z przechwytywaniem odpowiednich message'ow, nawet hooka lokalnego na klawiaturę postawiłem, ale efekty nigdy nie były takie jakie oczekiwałem :(

Wszystko przez głupia obsługę zdarzeń klawiatury przez VCL.
Później modyfikując i subclassując "nie swoje" okno, ciężko się do nich dostać :P

Tren podsunął jeden pomysł, i udało się, dziwie się, że na niego nie wpadłem, dziecinnie prosty.
Przed przetwarzaniem kolejki komunikatów skierować obsługę naciśnietych klawiszy do domyślnej procedury okna:

// przechwycenie przed vcl'em obslugi klawiszy kursorow, aby w edicie dzialaly poprawnie ;]
if (wParam == VK_LEFT || wParam == VK_UP || wParam == VK_RIGHT || wParam == VK_DOWN)
	return DefWindowProc(hWnd, message, wParam, lParam);

Na to nie wpadłem, ale inne wszystkie możliwe sposoby przerobiłem...

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *