ICQ - форум. Всё про ICQ.  

Вернуться   ICQ - форум. Всё про ICQ. > Мастерская > Программирование

Программирование C / C++ / Visual C++ / Delphi / Visual Basic / ASM / Windows / Pascal

 
 
Опции темы Оценить тему
Старый 02.11.2009, 00:01   #1
Почти участник
 
Регистрация: 02.02.2008
Сообщений: 1,843

Репутация: 5599
По умолчанию QOSCAR

Представляю класс для работы с протоколом OSCAR (ICQ/AIM) на C++ с фреймворком Qt.

Проект был начат недавно, и будет развиваться очень динамично. Буду рад, если кто-то пожелает присоединиться.

Что умеет делать класс на данный момент (жирным выделено новое):
  • Логин (не md5)
  • Отправка сообщений
  • Прием сообщений
  • Отправка PING'ов серверу
  • Запрос/Получение КЛ
  • Отправка Запроса/ответа авторизации
  • Переписана большая часть кода, код подогнан под стандарты Qt
  • Оптимизирована и стабилизирована работа класса
  • Обработка пакетов разнесена по соответствующим под-классам
  • Куча мелких и не очень багфиксов

BUGS:
  • Смена пароля, не трогать!

Текущая версия класса - 2.0.1 [22.07.2010]

Исходные коды распространяются свободно, но с условием, что софт, написанный с использованием QOSCAR будет так же бесплатным и открытым.

Спасибо:
.fry, metal, astako, q1p, SunDagy

Страница проекта на Google Code

Последний раз редактировалось RankoR; 22.07.2010 в 10:54.
RankoR вне форума  
Плюсанули RankoR — 9 :
Старый 13.01.2010, 20:22   #2
Почти участник
 
Регистрация: 02.02.2008
Сообщений: 1,843

Репутация: 5599
По умолчанию

Подключаешь к проекту на Qt файл qoscar.h, и объявляешь объект класса QOSCAR где-нибудь. Например
PHP код:
class MainWindow : public QMainWindow
{
    
Q_OBJECT
 
    
public:
        
MainWindow(QObject *parent 0);
        ~
MainWindow();
 
    private:
        
QOSCAR *oscar;

RankoR вне форума  
Старый 20.02.2010, 20:41   #3
Участник
 
Регистрация: 20.02.2010
Сообщений: 14

Репутация: 5
По умолчанию

Под какую версию Qt это чудо?=) а то что то под 4.5 не работает:) не компилиться)
olegteror вне форума  
Старый 21.02.2010, 01:24   #4
Почти участник
 
Регистрация: 02.02.2008
Сообщений: 1,843

Репутация: 5599
По умолчанию

olegteror, ну-ка поподробнее =) Что компилер говорит?
Писалось как раз на 4.5, сейчас пишу на 4.6.2 - все ок (собирай из свн'а, qoscar.googlecode.com)

Добавлено через 23 часа 53 минуты
Класс обновлен, см 1 пост.

Последний раз редактировалось RankoR; 22.02.2010 в 01:18. Причина: Добавлено сообщение
RankoR вне форума  
Старый 22.02.2010, 11:39   #5
Участник
 
Регистрация: 20.02.2010
Сообщений: 14

Репутация: 5
По умолчанию

Цитата:
Что компилер говорит?
час мутузил Код примера и некоторые файлы либы что бы откомпилился:)
Сначала Качал из свн.Пришлесь Убрать из проэкта файлы икс статусов)) Потом)) еще ошибки поперли ну собсно там где. ссылаеться на файл про иксы))) ну и потом откомпилил...собсно респект за либу такую на QT в свое время под никсами писал...на нем и такое как раз исскал)) но ненашел)) так что спасибо)) Если будут баги какие либо отпишусь.
olegteror вне форума  
Старый 22.02.2010, 13:04   #6
Почти участник
 
Регистрация: 02.02.2008
Сообщений: 1,843

Репутация: 5599
По умолчанию

olegteror, ты мой проект собирал, или свой? Если свой, то нужно указывать все файлы в .pro до тех, в которых оно используется. Например, если ты юзаешь qoscar.h в mainwindow.h, то в файле .pro должны быть HEADERS и SOURCES в виде qoscar.h \ mainwindow.h и oscar.cpp \ mainwindow.cpp. Иначе линкер будет ругаться на undefined reference.
RankoR вне форума  
Старый 22.02.2010, 20:29   #7
Участник
 
Регистрация: 20.02.2010
Сообщений: 14

Репутация: 5
По умолчанию

Цитата:
ты мой проект собирал, или свой?
Стянул из свн и собирал твой проэкт:-)

Цитата:
Если свой, то нужно указывать все файлы в .pro до тех, в которых оно используется. Например, если ты юзаешь qoscar.h в mainwindow.h, то в файле .pro должны быть HEADERS и SOURCES в виде qoscar.h \ mainwindow.h и oscar.cpp \ mainwindow.cpp. Иначе линкер будет ругаться на undefined reference.
Ага ага)) знаю что все заголовочники и cpp должны в .pro прописаны:-)
olegteror вне форума  
Плюсанул olegteror :
Старый 20.07.2010, 07:55   #8
Участник
 
Регистрация: 20.02.2010
Сообщений: 14

Репутация: 5
По умолчанию

Где теперь можно стянуть сорцэ?:-) хоцца допилить под *nix system's..

Жаль что все удалено:-) м.б выложит кто в архиве хотя бы?:)

Последний раз редактировалось RankoR; 11.12.2010 в 20:41.
olegteror вне форума  
Старый 20.07.2010, 12:00   #9
Почти участник
 
Регистрация: 02.02.2008
Сообщений: 1,843

Репутация: 5599
По умолчанию

Не так давно переписал его, как будет время - сделаю коммит на гуглкод.
Кстати, новую версию как раз под линуксом и писал, так что допиливать там ничего не нужно.
RankoR вне форума  
Старый 21.07.2010, 22:53   #10
Участник
 
Регистрация: 20.02.2010
Сообщений: 14

Репутация: 5
По умолчанию

Благодарю:-).
olegteror вне форума  
Плюсанул olegteror :
Старый 22.07.2010, 10:53   #11
Почти участник
 
Регистрация: 02.02.2008
Сообщений: 1,843

Репутация: 5599
По умолчанию

Сделал коммит =)
RankoR вне форума  
Плюсанул RankoR :
Старый 24.07.2010, 07:22   #12
Участник
 
Регистрация: 20.02.2010
Сообщений: 14

Репутация: 5
По умолчанию

спасиб=),за написание под линуксом отдельное)
olegteror вне форума  
Старый 16.08.2010, 01:37   #13
Участник заблокирован
 
Регистрация: 12.08.2010
Сообщений: 1

Репутация: 1
По умолчанию

А можете сюда выкладывать в архивчик а то чет не смог с svn скачать(
Заранье спасибо))
И отдельное спасибо за сам класс)
knappen вне форума  
Старый 20.08.2010, 03:00   #14
Участник
 
Регистрация: 20.02.2010
Сообщений: 14

Репутация: 5
По умолчанию

Цитата:
А можете сюда выкладывать в архивчик а то чет не смог с svn скачать(
Заранье спасибо))
svn checkout http://qoscar.googlecode.com/svn qoscar-read-only
olegteror вне форума  
Плюсанул olegteror :
Старый 15.10.2010, 11:59   #15
Участник
 
Регистрация: 15.10.2010
Сообщений: 1

Репутация: 3
По умолчанию

У меня все компилится под Qt 4.7.
Спасибо за либу. Использую библиотеку в системе уведомлений и запросов для внутреннего использования несколькими клиентами, так как все сидят в асе.
Под Qt интересней не нашел - нужен был быстрый результат, именно эта библиотека его и дала.
vintos вне форума  
Плюсанули vintos — 2 :
Старый 28.10.2010, 04:22   #16
Участник
 
Регистрация: 20.02.2010
Сообщений: 14

Репутация: 5
По умолчанию

Цитата:
Под Qt интересней не нашел - нужен был быстрый результат, именно эта библиотека его и дала.
Именно QT Альтернатив не видел вообще. Ну есть еще libpurple(то на чем пиджин написан) но не то:)
olegteror вне форума  
Старый 08.12.2010, 16:16   #17
Участник
 
Регистрация: 07.12.2010
Сообщений: 1

Репутация: 1
По умолчанию

Народ,не подскажите как имено получать контакт лист,я уже помойму все варианты перепробывал...
OoAoO вне форума  
Старый 09.12.2010, 16:56   #18
Почти участник
 
Регистрация: 02.02.2008
Сообщений: 1,843

Репутация: 5599
По умолчанию

Примерно так:

Код:
QOscar *oscar = new QOscar(uin, password);
connect(oscar, SIGNAL(onRoster(QOscar *)), this, SLOT(onOscarRoster(QOscar *)));

oscar->login();

// Когда залогинимся - запрашиваем ростер
oscar->requestRoster();

// 
void SomeClass::onOscarRoster(QOscar *sender)
{
   // Можно получить доступ к ростеру
   QList<QRosterEntry> roster = sender->roster();
}
RankoR вне форума  
Старый 19.03.2013, 12:05   #19
Участник
 
Регистрация: 19.03.2013
Сообщений: 1

Репутация: 1
По умолчанию

Привет всем! Интересный результат получаю при попытке залогиниться в тестовом виджете.

Код:
  p, li { white-space: pre-wrap; }  Запускается /home/tim/prog/qt/QOscar/testwidget-build-Desktop-_______/testwidget/QOSCAR2...
 [Main] {Message} Switching from State  0  to  1 
 [Main] {Message} Switching from State  1  to  2 
 [Main] {Message} Switching from State  2  to  3 
 [Main] {Message} Handling FLAPs... 
 [Main] {Message} NEW_CHANNEL FLAP 
 [Main] {Message} Switching from State  3  to  4 
 [Main] {Message} All FLAPs are handled! 
 [Main] {Message} Write FLAP Channel  1 (1=login, 2=SNAC, 3=error, 4=disconnect) 
 [Main] {Message} Switching from State  4  to  5 
 [Main] {Message} Handling FLAPs... 
 [Main] {Message} CLOSE_CHANNEL FLAP 
 [Main] {Message} Switching from State  5  to  6 
 TODO: eRateLimit? 
 [Main] {Message} All TLVs are parsed! 
 [Main] {Message} All FLAPs are handled! 
 ASSERT: "0 && "unexpected socket connection"" in file ../../svn/qoscar/qoscar.cpp, line 443
 Программа неожиданно завершилась.
 /home/tim/prog/qt/QOscar/testwidget-build-Desktop-_______/testwidget/QOSCAR2 завершился с кодом 0
Версия: Qt 4.8.4 (x64)
IDE: QtCreator 2.6.1
OS: Linux 3.5.0-sabayon x86_64 GNU/Linux
Код импортировал в автоматическом режиме с svn. Виджет запускается, однако после ввода данных и нажатия кнопки "login" виджет закрывается и ничего не происходит. Почему так? Может быть я что-то не так делаю?

И еще один вопрос. В файле QOscar.cpp, в функции QOscar::QOscar увидел вот такую строчку.
Код:
oscarCodec   = "Windows-1251";
Что это за такой оскарКодек и почему 1251, а не UTF-8?

Добавлено через 1 час 55 минут
Дальнейшая вычитка qoscar.cpp вот такой вот кусок кода с интеерсным комментарием:
Код:
case 8:                                         // \todo .. what means "8"?
                if ( tlv.getData().readU16() == 0x0005 ) {
                    emit onError(eLogonFailed, this);
                    setState(StError);
                } // else 
                  //   emit onError(eRateLimit, this);        //! \todo HACK!!!
                  // setState(StError);
                qWarning() << "TODO: eRateLimit?";
        break;
собственно на этом участке кода все и отваливается, однако все равно не понятно, что за "8" такое и почему отваливается.

Последний раз редактировалось cittim; 19.03.2013 в 14:01. Причина: Добавлено сообщение
cittim вне форума  
 

Метки
qoscar

Опции темы
Оценка этой теме
Оценка этой теме:

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +3, время: 10:33.


Перевод: zCarot
Форум Асечников © Asechka.RU

Новости Сочи