Free GG
Free GG jest komunikatorem pozwalającym korzystać z najpopularniejszej w Polsce
sieci IM. Punktem wyjściowym dla generowanych przeze wersji były źródła udostępnione na
stronie
http://sadysta.ath.cx/projekty/freegg/ (1.8.9).
Program objęty jest licencją GPL v2.
Projekt przeniesiony został z kilkoma drobnymi zmianami do środowiska Borland Turbo C++ Explorer (BDS2006). Narzędzia serii Explorer dostępne są nieodpłatnie, także do zastosowań komercyjnych.
Jeżeli masz jakieś sugestie lub oczekiwania dotyczące funkcjonalności programu - napisz. O ile zamierzam zachować reżim objętości kodu i wersji binarnej programu oraz niezależność od zewnętrznych bibliotek/komponentów to nie wykluczam rozszerzania poprzez pluginy.
Cechy wyróżniające komunikator Free GG:
- bardzo prosta budowa i krótki kod źródłowy,
- nie wyświetla reklam,
- niskie zużycie pamięci operacyjnej (raportowane przez win xp ~7 MB) i przestrzeni dyskowej (~1,5 MB statycznie linkowany plik wykonywalny bez kompresji),
- nie obsługuje skórek w 6 formatach, nie wyświetla emotikonów z 15 paczek, nie posiada zintegrowanego klienta VoIP, nie wyprowadza psa na spacer.
Jeżeli szukasz berdziej rozbudowanego programu, zależy Ci na wsparciu innych protokołów IM lub pracy pod kontrolą innych systemów operacyjnych odwiedź stronę multikomunikatora Unicom.
Uwaga: w chwili obecnej Free GG korzysta z protokołu wersji 6.0 oryginalnego klienta. Oznacza to, że nie umożliwia on już zakładania nowych kont i innych operacji na koncie (zmiana hasła).
Wersja 2.3.9, 26.01.2018
Aplikacja: FreeGG_2_3_9_bin.zip
Kod źródłowy: FreeGG_2_3_9_src.zip
- FIXED: sporadyczne zawieszanie programu przy utracie połączenia sieciowego (wyjątek przy zamykaniu socketu - złapany przy cogodzinnych rozłączeniach aero2)
Wersja 2.3.8, 06.04.2013
Aplikacja: FreeGG_2_3_8_bin.zip
Kod źródłowy: FreeGG_2_3_8_src.zip
- FIXED: sporadyczne zawieszanie programu połączone z dużym zużyciem czasu procesora (w przypadku rozłączenia połączenia sieciowego w trakcie obsługi kolejki komunikatów),
- MemWarning.dll - plugin ostrzegający sygnałem dźwiękowym gdy zajętość pamięci operacyjnej wzrasta powyżej 90%.
Wersja 2.3.7, 20.09.2008
Aplikacja: FreeGG_2_3_7_bin.zip (605 kB)
Kod źródłowy: FreeGG_2_3_7_src.zip (179 kB)
Plugin SystemShutdown.dll (bin + src, 23 kB)
Plugin SystemShutdown.dll (bin + src) - wersja uaktualniona, poprawiony
problem polegający na braku możliwości ustawienia czasu po północy przed północą, dodany wybór dnia
- W menu kontekstowym kontaktu dodany skrót do historii rozmów,
- w katalogu ustawień tworzony jest podkatalog plugins dla ustawień pluginów (w przypadku opcji noprofiles pluginy i ich pliki konfiguracyjne znajdują się w tym samym katalogu),
- freegg po załadowaniu pluginów wysyła do nich komunikat typu broadcast o lokalizacji katalogu z ustawieniami,
- shutdown plugin - rozwinięcie:
- oprócz wyłączenia komputera opcje uśpienia do RAM (S3) i hibernacji,
- okno dialogowe modyfikowane przy pomocy programu resedit,
- sprawdzanie, czy system jest zdolny do przejścia do stanu S3/hibernacji,
- ustawienia: zapis ostatnio użytego trybu do pliku ini w katalogu wskazanym przez freegg,
- komponent TTrayIcon zastąpiony własną klasą TrayIcon, ikona główna programu podąża za ikoną w trayu,
- udostępniana wersja binarna jest wersją release; niezależnie od zmniejszenia rozmiaru przez przejście debug->release rozmiar pliku zmniejszył się też przy zastąpieniu TTrayIcon; rozmiar pliku może ciągle wydawać się stosunkowo duży, należy jednak pamiętać, że plik wykonywalny nie jest jednak pakowany (UPX i podobne)
- zachowywanie bieżącego lub ustawianie nowego statusu przy wychodzeniu z programu, usypianiu do RAM (S3) lub hibernacji.
Wersja 2.3.6, 25.04.2008
Drobne poprawki i zmiany funkcjonalne oraz czyszczenie kodu - objętość programu nie
zmieniła się. Brak zmian związanych z pluginami w stosunku do poprzedniej wersji.
Aplikacja: FreeGG_2_3_6_bin.zip (669 kB)
Kod źródłowy: FreeGG_2_3_6_src.zip (177 kB)
- status opisowy zapamiętywany jest między sesjami,
- zmiana przy wyświetlaniu statusów użytkowników: użytkownikom u których zaobserwowano aktywność (zmiana opisu, stanu lub wysłanie do nas wiadomości) towarzyszy ikona niedostępności ze stanem zapytania (poprzednio: ikona ukrycia która wyświetlana była także przy wszystkich kontaktach z opisem),
- w hincie użytkownika o stanie "niedostępny ze znakiem zapytania" data
i godzina ostatniej zaobserwowanej aktywności - ta i poprzednia funkcja
podpatrzone zostały z Konnekta,
- przy sortowaniu listy użyta funkcja AnsiCompareText, uwzględniająca polskie znaki diakrytyczne,
- przy odtwarzaniu po uruchamianiu ostatniej pozycji okna sprawdzana aktualna rozdzielczość ekranu (istotne przy pracy przenośnej, z parametrem noprofiles).
Wersja 2.3.5, 30.01.2008
Niewielkie zmiany w stosunku do wersji 2.3.4.
Aplikacja: FreeGG_2_3_5_bin.zip (669 kB)
Kod źródłowy: FreeGG_2_3_5_src.zip (169 kB)
Pluginy wraz z kodem źródłowym (21 kB)
- klient powinien działać z systemem win98 (zmiana przy obsłudze przezroczystości okna),
- klient nie łączy się ponownie automatycznie jeżeli został rozłączony przez serwer (typowo po tym, gdy drugi klient o identycznym identyfikatorem połączył się z serwerem),
- lista pluginów dostępna spod menu kontekstowego traya,
- po kliknięciu na pozycję w menu odpowiadającą pluginowi przesyłany jest do niego komunikat "show main",
- dodany plugin SystemShudown.dll, zamykający system operacyjny (win >= 2000) o
ustalonej godzinie (WinAPI, oparty na dialogu -> objętość 10 kB);
jak łatwo się domyśleć okno wywoływane jest
po otrzymaniu komunikatu "show main".
15.03.2008. Plugin zamykający okno konsoli błędów (Error Console) Opery, 5kB wraz ze źródłem. Wyszukuje okno po nazwie, inne wersje językowe będą wymagać przekompilowania. Konsola błędów w wersji 9.26 i starszych otwierana jest każdorazowo przy problemach z połączeniem z serwerem poczty. Wyłączenie konsoli ma być podobno możliwe w wersji 9.51 ("Kestrel"). Alternatywa: OECK.
Wersja 2.3.4, 11.01.2008
Wersja zawiera kilka zasugerowanych poprawek oraz zalążek systemu pluginów.
Aplikacja: FreeGG_2_3_4_bin.zip (669kB)
Kod źródłowy: FreeGG_2_3_4_src.zip (166kB)
Pluginy wraz z kodem źródłowym (17kB)
- przy uruchomieniu z parametrem --noprofiles program przechowuje ustawienia w katalogu w którym jest jego plik wykonywalny,
- usunięty kod związany z połączeniami bezpośrednimi,
- usunięty zbędnie linkowany "TCppWebBrowser",
- usunięty ciąg "Rozmowa z " z nazwy okna z dialogiem/rozmową gg,
- ikona okna rozmowy odpowiada stanowi rozmówcy,
- przy utracie połączenia w trakcie gdy widoczny jest komunikat o błędzie (np. "URL startowy nie działa") ikona w trayu zmieniana na stan rozłączenia
- zalążek API pozwalającego na pisanie pluginów:
- pluginy w postaci plików DLL umieszczanych w podkatalogu plugins z minimalną liczbą funkcji eksportowanych i callbacków,
- interfejs tekstowy pozwalający na komunikację pluginów z programem głównym oraz pluginów między sobą przypominający pod względem formy API Skype ("SET STATUS DESC nowy_status"),
- proste i lekkie (7kB/9kB) pluginy stworzone przy użyciu Code::Blocks/MinGW,
powinny dać się zbudować przy użyciu dowolnego kompilatora C++ dla windows:
- plugin łączący się z gniazdkiem TCP, pobierający krótki ciąg tekstowy i ustawiający status GG na zgodny z nim
- plugin łączący się ze Skype i ustawiający jego status (MOOD_TEXT) na zgodny z tym ustawionym we FreeGG
System pluginów jest w tym momencie mocno eksperymentalny i nie mogę gwarantować wstecznej kompatybilności przyszłych wersji (ani tego że w ogóle takowe powstaną), choć tekstowy protokół daje szanse bezkonfliktowej rozbudowy. Przyczyną wprowadzenia pluginów było moje znużenie zarządzaniem dwiema gałęziami projektowymi, "oficjalną" oraz własną, rozszerzoną o funkcjonalność zawartą teraz w dwóch zamieszczonych pluginach - synchronizowanie statusu między mikroserwerem TCP, FreeGG i Skype.
Wersja 2.3.3, 27.07.2007
Aplikacja: FreeGG_2_3_3_bin.zip (715kB)
Kod źródłowy: FreeGG_2_3_3_src.zip (162kB)
- zmieniony styl listy kontaktów, każdy kontakt ma pod sobą opis (lub puste miejsce),
- import/eksport kontaktów z/do serwera GG; wszystkie istotne funkcje (nie uważam za takową transferu plików) powinny już działać z protokołem 6.0 oficjalnego komunikatora.
Wersja 2.3.2, 07.06.2007
Aplikacja: FreeGG_2_3_2_bin.zip (704kB)
Kod źródłowy: FreeGG_2_3_2_src.zip (142kB)
- pobieranie/wyświetlanie tokenów w postaci plików gif (biblioteka winimage, Copyright © 2000, Juan Soulie <jsoulie [that funny sign] cplusplus.com>),
- możliwość utworzenia/skasowania konta,
- możliwość zmiany hasła (ostrożnie!),
- możliwość przypomnienia hasła - podczas kilku prób nie udało mi się tego przetestować, oryginalny klient wyświetlał zawsze informację żeby spróbować później.
Wersja 2.3.1, 31.05.2007
Aplikacja: FreeGG_2_3_1_bin.zip (710kB)
Kod źródłowy: FreeGG_2_3_1_src.zip (132kB)
- program przedstawia się serwerowi jako wersja 6.0 oryginalnego klienta, co związane jest ze zmianą protokołu
- obsługa kontaktów na liście nie posiadających numeru GG,
- usunięte AV przy zmienie opisu statusu i trybu tylko dla przyjaciół w stanie rozłączenia,
- poprawka blokowania się programu przy funkcji WaitFor przy szybkim wyszukiwaniu w historii (np. wpisanie tekstu i trzymanie wciśniętego Enter lub przełączanie kontaktów w trakcie szukania tekstu),
- poprawione zapisywanie ustawień i kontaktów przy zamykaniu programu wskutek kończenia pracy systemu lub użytkownika, krzyżyk na pasku okna minimalizuje do traya zamiast zamykać,
- do hinta nad kontaktem dodana informacja o ip w przypadku gdy osoba znajduje się za NAT (warunkiem koniecznym do uzyskania informacji o adresie IP rozmówcy pozostaje to, by posiadał on włączoną funkcję połączeń bezpośrednich (przesyłania plików) oraz posiadał nasz numer GG dodany do listy kontaktów).
Wersja 2.3.0 (zmiany w stosunku do wersji 1.8.9 ze strony http://sadysta.ath.cx/projekty/freegg/), 26.05.2007
Aplikacja: FreeGG_2_3_0_bin.zip (708kB)
Kod źródłowy: FreeGG_2_3_0_src.zip (122kB)
- przeniesienie projektu do BDS2006/Turbo C++ Explorer,
- zmieniony ciąg zapytania o adres IP serwera gg na aktualny, zgodny z wysyłanym przez AQQ,
- usunięty kod odpowiedzialny za szyfrowanie wiadomości,
- odstępy między wierszami hinta listy kontaktów zmienione na pojedyncze,
- status użytkownika dodawany do hintu ikony w trayu,
- numer wersji odczytywany bezpośrednio ze skompilowanego pliku
- usunięta forma ValueForm,
- formy DelAccntForm, RemindPwdForm, ChPwdForm, HistoryForm, NewAccntForm tworzone są w sposób dynamiczny (co powinno dać pewne oszczędności zużycia pamięci).