bool SSIModifyTask::take( Transfer* transfer ) { if ( forMe( transfer ) ) { SnacTransfer* st = dynamic_cast<SnacTransfer*>( transfer ); if ( st ) { setTransfer( transfer ); if ( st->snacSubtype() == 0x0008 ) handleContactAdd(); else if ( st->snacSubtype() == 0x0009 ) handleContactUpdate(); else if ( st->snacSubtype() == 0x000A ) handleContactRemove(); else if ( st->snacSubtype() == 0x000E ) handleContactAck(); setTransfer( 0 ); } return true; } else return false; }
bool OscarLoginTask::take( Transfer* transfer ) { if ( forMe( transfer ) ) { SnacTransfer* st = dynamic_cast<SnacTransfer*>( transfer ); if (!st) return false; Oscar::WORD subtype = st->snacSubtype(); switch ( subtype ) { case 0x0003: setTransfer( transfer ); handleLoginResponse(); setTransfer( 0 ); return true; break; case 0x0007: setTransfer( transfer ); processAuthStringReply(); setTransfer( 0 ); return true; break; default: return false; break; } return false; } return false; }
bool AimLoginTask::forMe( Transfer* transfer ) const { SnacTransfer* st = dynamic_cast<SnacTransfer*>( transfer ); if (!st) return false; if ( st && st->snacService() == 0x17 ) { WORD subtype = st->snacSubtype(); switch ( subtype ) { case 0x0002: case 0x0003: case 0x0006: case 0x0007: return true; break; default: return false; break; } } return false; }
bool ServerVersionsTask::take( Transfer* transfer ) { SnacTransfer* st = dynamic_cast<SnacTransfer*> ( transfer ); if (!st) return false; if ( forMe( transfer ) ) { switch ( st->snacSubtype() ) { case 0x03: setTransfer( transfer ); handleFamilies(); setTransfer( 0 ); return true; break; case 0x18: setTransfer( transfer ); kDebug(OSCAR_RAW_DEBUG) << "Ignoring server versions"; setSuccess( 0, QString() ); setTransfer( 0 ); return true; break; default: return false; } } return false; }
bool SSIAuthTask::take( Transfer* t ) { if ( forMe( t ) ) { setTransfer( t ); SnacTransfer* st = dynamic_cast<SnacTransfer*> ( t ); switch ( st->snacSubtype() ) { case 0x0015: // Future authorization granted handleFutureAuthGranted(); break; case 0x0019: // Authorization request handleAuthRequested(); break; case 0x001b: // Authorization reply handleAuthReplied(); break; case 0x001c: // "You were added" message handleAddedMessage(); break; } setTransfer( 0 ); return true; } return false; }
bool OwnUserInfoTask::take( Transfer* transfer ) { if ( forMe( transfer ) ) { SnacTransfer* st = dynamic_cast<SnacTransfer*>( transfer ); if ( !st ) return false; Buffer* b = transfer->buffer(); if ( st->snacSubtype() == 0x0F ) { UserDetails ud; ud.fill( b ); m_details = ud; emit gotInfo(); setSuccess( 0, QString() ); return true; } else { bool needUpload = false; Oscar::WORD infoType = b->getWord(); if ( infoType == 0x0000 || infoType == 0x0001 ) { Oscar::BYTE flags = b->getByte(); if ( flags == 0x41 ) //we need to do a buddy upload when bit 8 = 1 needUpload = true; QByteArray qba; if ( b->bytesAvailable() != 0 ) { //buffer might be empty if flags bit 8 = 1 Oscar::BYTE checksumLength = b->getByte(); qba = b->getBlock( checksumLength ); kDebug(OSCAR_RAW_DEBUG) << "Self icon checksum: " << qba.toHex(); } if ( needUpload ) { kDebug(OSCAR_RAW_DEBUG) << "Buddy icon upload requested"; emit buddyIconUploadRequested(); } else { kDebug(OSCAR_RAW_DEBUG) << "no item for hash found"; } } if ( infoType == 0x0002 ) { QString availableMsg( b->getBSTR() ); kDebug(OSCAR_RAW_DEBUG) << "self available message: "; } setSuccess( 0, QString() ); return true; } } return false; }