------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.
http://bugs.kde.org/show_bug.cgi?id=131218
andre duffeck de changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |RESOLVED
Resolution| |FIXED
------- Additional Comments From andre duffeck de 2006-08-18 00:44 -------
SVN commit 574054 by duffeck:
some fixes in webcam code. That should fix bug 131218.
BUG: 131218
M +20 -9 libkyahoo/webcamtask.cpp
M +18 -2 yahooaccount.cpp
M +2 -0 yahooaccount.h
--- branches/KDE/3.5/kdenetwork/kopete/protocols/yahoo/libkyahoo/webcamtask.cpp
#574053:574054
@ -200,6 +200,7 @
client()->notifyError( i18n("Webcam connection to the user %1 could not
be established.\n\nPlease relogin and try again.")
.arg(socketMap[socket].sender), QString("%1 -
%2").arg(error).arg( socket->errorString()), Client::Error );
socketMap.remove( socket );
+ socket->deleteLater();
}
void WebcamTask::slotRead()
@ -233,21 +234,28 @
kdDebug(YAHOO_RAW_DEBUG) << k_funcinfo << "Magic Byte:" << data[2] <<
endl;
socketMap[socket].status = ConnectedStage2;
- if( data[2] == (Q_INT8)0x06 )
+
+ QString server;
+ int i = 4;
+ KStreamSocket *newSocket;
+ switch( (const char)data[2] )
{
+ case (Q_INT8)0x06:
emit webcamNotAvailable(socketMap[socket].sender);
- }
- else if( data[2] == (Q_INT8)0x04 || data[2] == (Q_INT8)0x07 )
- {
- QString server;
- int i = 4;
- while( data[i] != (Q_INT8)0x00 )
+ break;
+ case (Q_INT8)0x04:
+ case (Q_INT8)0x07:
+ while( (const char)data[i] != (Q_INT8)0x00 )
server += data[i++];
kdDebug(YAHOO_RAW_DEBUG) << k_funcinfo << "Server:" << server
<< endl;
-// server = server.mid( 4, server.find( '0', 4) );
+ if( server.isEmpty() )
+ {
+ emit webcamNotAvailable(socketMap[socket].sender);
+ break;
+ }
kdDebug(YAHOO_RAW_DEBUG) << k_funcinfo << "Connecting to " <<
server << endl;
- KStreamSocket *newSocket = new KStreamSocket( server,
QString::number(5100) );
+ newSocket = new KStreamSocket( server, QString::number(5100) );
socketMap[newSocket] = socketMap[socket];
newSocket->enableRead( true );
connect( newSocket, SIGNAL( connected( const KResolverEntry& )
), this, SLOT( slotConnectionStage2Established() ) );
@ -260,6 +268,9 @
}
newSocket->connect();
+ break;
+ default:
+ break;
}
socketMap.remove( socket );
delete socket;
--- branches/KDE/3.5/kdenetwork/kopete/protocols/yahoo/yahooaccount.cpp
#574053:574054
@ -309,7 +309,9 @
// SLOT(slotGotIdentities( const QStringList&)));
QObject::connect(m_session, SIGNAL(gotWebcamInvite(const
QString&)), this, SLOT(slotGotWebcamInvite(const QString&)));
-
+
+ QObject::connect(m_session, SIGNAL(webcamNotAvailable(const
QString&)), this, SLOT(slotWebcamNotAvailable(const QString&)));
+
QObject::connect(m_session, SIGNAL(webcamImageReceived(const
QString&, const QPixmap& )), this, SLOT(slotGotWebcamImage(const QString&,
const QPixmap& )));
QObject::connect(m_session, SIGNAL(webcamClosed(const QString&,
int )), this, SLOT(slotWebcamClosed(const QString&, int )));
@ -437,6 +439,8 @
QObject::disconnect(m_session, SIGNAL(gotWebcamInvite(const
QString&)), this, SLOT(slotGotWebcamInvite(const QString&)));
+ QObject::disconnect(m_session, SIGNAL(webcamNotAvailable(const
QString&)), this, SLOT(slotWebcamNotAvailable(const QString&)));
+
QObject::disconnect(m_session, SIGNAL(webcamImageReceived(const
QString&, const QPixmap& )), this, SLOT(slotGotWebcamImage(const QString&,
const QPixmap& )));
QObject::disconnect(m_session, SIGNAL(webcamClosed(const
QString&, int )), this, SLOT(slotWebcamClosed(const QString&, int )));
@ -1487,10 +1491,22 @
return;
}
+ if( m_pendingWebcamInvites.contains( who ) )
+ return;
+
+ m_pendingWebcamInvites.append( who );
+
if( KMessageBox::Yes == KMessageBox::questionYesNo(
Kopete::UI::Global::mainWidget(), i18n("%1 has invited you to view his/her
webcam. Accept?")
- .arg(who),
QString::null, i18n("Accept"), i18n("Ignore") ) )
+ .arg(who),
QString::null, i18n("Accept"), i18n("Ignore") ) )
+ {
+ m_pendingWebcamInvites.remove( who );
m_session->requestWebcam( who );
+ }
}
+void YahooAccount::slotWebcamNotAvailable( const QString &who )
+{
+ KMessageBox::sorry( Kopete::UI::Global::mainWidget(), i18n("Webcam for
%1 is not available.").arg(who), i18n( "Yahoo Plugin" ) );
+}
void YahooAccount::slotGotWebcamImage( const QString& who, const QPixmap&
image )
{
--- branches/KDE/3.5/kdenetwork/kopete/protocols/yahoo/yahooaccount.h
#574053:574054
@ -211,6 +211,7 @
void slotRemoveHandler(int fd);
//void slotHostConnect(const QString &host, int port);
void slotGotWebcamInvite(const QString &);
+ void slotWebcamNotAvailable( const QString &who );
void slotGotWebcamImage(const QString&, const QPixmap&);
void slotWebcamReadyForTransmission();
void slotWebcamStopTransmission();
@ -264,6 +265,7 @
*/
QMap<QString, YahooConferenceChatSession *> m_conferences;
QStringList m_pendingConfInvites;
+ QStringList m_pendingWebcamInvites;
QMap<unsigned int, Kopete::Transfer *> m_fileTransfers;
_______________________________________________
kopete-devel mailing list
[email protected]
https://mail.kde.org/mailman/listinfo/kopete-devel