Date: Saturday, April 10, 2010 @ 11:55:15
  Author: andrea
Revision: 77061

upgpkg: kdenetwork 4.4.2-2
fix yahoo protocol in kopete (FS#18624)

Added:
  kdenetwork/trunk/fix-yahoo-protocol.patch
Modified:
  kdenetwork/trunk/PKGBUILD

--------------------------+
 PKGBUILD                 |   12 +
 fix-yahoo-protocol.patch |  330 +++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 338 insertions(+), 4 deletions(-)

Modified: PKGBUILD
===================================================================
--- PKGBUILD    2010-04-10 14:51:38 UTC (rev 77060)
+++ PKGBUILD    2010-04-10 15:55:15 UTC (rev 77061)
@@ -10,7 +10,7 @@
          'kdenetwork-krdc'
          'kdenetwork-krfb')
 pkgver=4.4.2
-pkgrel=1
+pkgrel=2
 arch=('i686' 'x86_64')
 url='http://www.kde.org'
 license=('GPL' 'LGPL' 'FDL')
@@ -19,11 +19,15 @@
              'qca-ossl' 'kdebase-workspace' 'kdebase-lib' 'libvncserver' 
'libmsn'
              'ppp' 'libv4l' 'libidn' 'rdesktop' 'qimageblitz' 'libxss' 
'libxdamage'
              'libgadu' 'telepathy-qt4')
-source=("http://download.kde.org/stable/${pkgver}/src/${pkgbase}-${pkgver}.tar.bz2";)
-md5sums=('079fe0c9b7d7c5b52e673b5f4bc4f301')
+source=("http://download.kde.org/stable/${pkgver}/src/${pkgbase}-${pkgver}.tar.bz2";
+       'fix-yahoo-protocol.patch')
+md5sums=('079fe0c9b7d7c5b52e673b5f4bc4f301'
+       'aef9c40e3b93f36b1c611f0bb5429e50')
 
 build() {
-        cd ${srcdir}
+        cd ${srcdir}/${pkgbase}-${pkgver}
+       patch -Np1 -i ${srcdir}/fix-yahoo-protocol.patch || return 1
+       cd ${srcdir}
        mkdir build
        cd build
        cmake ../${pkgbase}-${pkgver} \

Added: fix-yahoo-protocol.patch
===================================================================
--- fix-yahoo-protocol.patch                            (rev 0)
+++ fix-yahoo-protocol.patch    2010-04-10 15:55:15 UTC (rev 77061)
@@ -0,0 +1,330 @@
+Index: kdenetwork/kopete/protocols/yahoo/yahoocontact.h
+===================================================================
+--- kdenetwork/kopete/protocols/yahoo/yahoocontact.h   (revision 1110827)
++++ kdenetwork/kopete/protocols/yahoo/yahoocontact.h   (revision 1110828)
+@@ -56,8 +56,8 @@
+ 
+       void setOnlineStatus(const Kopete::OnlineStatus &status);
+       void setYahooStatus( const Kopete::OnlineStatus& );
+-      void setStealthed( bool );
+-      bool stealthed();
++      void updateStealthed();
++      bool stealthed() const;
+ 
+ 
+       /** The group name getter and setter methods**/
+@@ -121,7 +121,6 @@
+       YahooChatSession *m_manager;
+       YahooWebcamDialog* m_webcamDialog;
+       YahooAccount* m_account;
+-      bool m_stealthed;
+       bool m_receivingWebcam;
+       bool m_sessionActive;
+       
+Index: kdenetwork/kopete/protocols/yahoo/libkyahoo/listtask.cpp
+===================================================================
+--- kdenetwork/kopete/protocols/yahoo/libkyahoo/listtask.cpp   (revision 
1110827)
++++ kdenetwork/kopete/protocols/yahoo/libkyahoo/listtask.cpp   (revision 
1110828)
+@@ -34,9 +34,6 @@
+ 
+ }
+ 
+-QStringList loginstealthedbuddies;
+-QStringList loginunstealthedbuddies;
+-
+ bool ListTask::take( Transfer* transfer )
+ {
+       if ( !forMe( transfer ) )
+@@ -85,47 +82,30 @@
+               case 301:
+                       if( p.second == "319"){
+                               emit gotBuddy( buddy, QString(), group );
+-                                /**
+-                                * Note: michaelacole
+-                                * Since you can log in from other places and 
remove or add Perm Offline status
+-                                * We have to reset both conditions at login
+-                                * Yahoo sends this data at this time,
+-                                * so better to compile list of both now then 
notify kopete client.
+-                                */
+-                              loginunstealthedbuddies.append( buddy );
+                       }
+                       break;
+               case 317:
+                       if( p.second == "2"){
+-                      kDebug(YAHOO_RAW_DEBUG) << "Stealthed setting on" << 
buddy ;
+-                        /** Note: michaelacole
+-                        * Since you can log in from other places and remove 
or add Perm Offline status
+-                        * We have to reset both conditions at login
+-                        * Yahoo sends this data at this time,
+-                        * so better to compile list of both now then notify 
kopete client.
+-                        */
+-                      loginstealthedbuddies.append( buddy );
+-                      loginunstealthedbuddies.removeAll( buddy );
++                              kDebug(YAHOO_RAW_DEBUG) << "Stealthed setting 
on" << buddy ;
++                              emit stealthStatusChanged( buddy, 
Yahoo::StealthActive );
+                       };
+                       break;
+-                /**
+-                * Note: michaelacole
+-                * Other buddy codes are here for add to list and blacklist
+-                * I will need to capute more codes for addition here.
+-                * Blacklist is done on the server at Yahoo whereas
+-                * Kopete has its own plugin for blacklisting.
+-                */
++                      /**
++                      * Note: michaelacole
++                      * Other buddy codes are here for add to list and 
blacklist
++                      * I will need to capute more codes for addition here.
++                      * Blacklist is done on the server at Yahoo whereas
++                      * Kopete has its own plugin for blacklisting.
++                      */
+               }
+       }
+-        /**
+-        * Note: michaelacole
+-        * Since you can log in from other places and remove or add Perm 
Offline status
+-        * We have to reset both conditions at login
+-        * Yahoo sends this data at this time,
+-        * so better to compile list of both now then notify kopete client.
+-        */
+-        client()->notifyUnstealthedBuddies( loginunstealthedbuddies );
+-        client()->notifyStealthedBuddies( loginstealthedbuddies );
++      /**
++      * Note: michaelacole
++      * Since you can log in from other places and remove or add Perm Offline 
status
++      * We have to reset both conditions at login
++      * Yahoo sends this data at this time,
++      * so better to compile list of both now then notify kopete client.
++      */
+ }
+ 
+ 
+Index: kdenetwork/kopete/protocols/yahoo/libkyahoo/client.cpp
+===================================================================
+--- kdenetwork/kopete/protocols/yahoo/libkyahoo/client.cpp     (revision 
1110827)
++++ kdenetwork/kopete/protocols/yahoo/libkyahoo/client.cpp     (revision 
1110828)
+@@ -76,8 +76,7 @@
+       int error;
+       QString errorString;
+       QString errorInformation;
+-      QStringList stealthedBuddies;
+-      QStringList unstealthedBuddies;
++      QSet<QString> stealthedBuddies;
+       // tasks
+       bool tasksInitialized;
+       LoginTask * loginTask;
+@@ -133,14 +132,13 @@
+       
+       QObject::connect( d->loginTask, SIGNAL( haveSessionID( uint ) ), SLOT( 
lt_gotSessionID( uint ) ) );
+       QObject::connect( d->loginTask, SIGNAL( buddyListReady() ), SLOT( 
processPictureQueue() ) );
+-      QObject::connect( d->loginTask, SIGNAL( buddyListReady() ), SLOT( 
processStealthQueue() ) );
+       QObject::connect( d->loginTask, SIGNAL( loginResponse( int, const 
QString& ) ), 
+                               SLOT( slotLoginResponse( int, const QString& ) 
) );
+       QObject::connect( d->loginTask, SIGNAL( haveCookies() ), SLOT( 
slotGotCookies() ) );
+       QObject::connect( d->listTask, SIGNAL( gotBuddy(const QString &, const 
QString &, const QString &) ), 
+                                       SIGNAL( gotBuddy(const QString &, const 
QString &, const QString &) ) );
+       QObject::connect( d->listTask, SIGNAL( stealthStatusChanged( const 
QString&, Yahoo::StealthStatus ) ), 
+-                                      SIGNAL( stealthStatusChanged( const 
QString&, Yahoo::StealthStatus ) ) );
++                                      SLOT( notifyStealthStatusChanged( const 
QString&, Yahoo::StealthStatus ) ) );
+ }
+ 
+ Client::~Client()
+@@ -182,9 +180,11 @@
+       emit connected();
+       kDebug(YAHOO_RAW_DEBUG) << " starting login task ... ";
+ 
++      // Clear stealth settings
++      d->stealthedBuddies.clear();
++
+       d->loginTask->setStateOnConnect( (d->statusOnConnect == 
Yahoo::StatusInvisible) ? Yahoo::StatusInvisible : Yahoo::StatusAvailable );
+       d->loginTask->go();
+-      processStealthQueue();
+       d->active = true;
+ }
+ 
+@@ -615,29 +615,6 @@
+       spt->go( true );
+ }
+ 
+-// **** Stealth Handling **** michaelacole
+-void Client::processStealthQueue()
+-{
+-      if( d->buddyListReady ){
+-              while (!d->unstealthedBuddies.isEmpty())
+-                      {
+-                      QString it;
+-                      it = d->unstealthedBuddies.takeFirst();
+-                      kDebug(YAHOO_RAW_DEBUG) << "unstealthed setting set on" 
<< it;
+-                      stealthContact( it, Yahoo::StealthOffline , 
Yahoo::StealthNotActive );
+-                      }
+-
+-              while (!d->stealthedBuddies.isEmpty())
+-                      {
+-                      QString it;
+-                      it = d->stealthedBuddies.takeFirst();
+-                      kDebug(YAHOO_RAW_DEBUG) << "stealthed setting set on" 
<< it ;
+-                      stealthContact( it, Yahoo::StealthPermOffline , 
Yahoo::StealthActive );
+-                      }
+-      }
+-}
+-
+-
+ // ***** Webcam handling *****
+ 
+ void Client::requestWebcam( const QString &userId )
+@@ -767,14 +744,22 @@
+       emit error( level );
+ }
+ 
+-void Client::notifyStealthedBuddies( const QStringList &buddies)
++Yahoo::StealthStatus Client::stealthStatus( const QString &userId ) const
+ {
+-      d->stealthedBuddies = buddies;
++      if ( d->stealthedBuddies.contains( userId ) )
++              return Yahoo::StealthActive;
++      else
++              return Yahoo::StealthNotActive;
+ }
+ 
+-void Client::notifyUnstealthedBuddies( const QStringList &buddies)
++void Client::notifyStealthStatusChanged( const QString &userId, 
Yahoo::StealthStatus state )
+ {
+-      d->unstealthedBuddies = buddies;
++      if ( state == Yahoo::StealthActive )
++              d->stealthedBuddies.insert( userId );
++      else
++              d->stealthedBuddies.remove( userId );
++      
++      emit stealthStatusChanged( userId, state );
+ }
+ 
+ QString Client::userId()
+@@ -902,7 +887,7 @@
+       QObject::connect( d->statusTask, SIGNAL( 
statusChanged(QString,int,const QString,int,int,int) ), 
+                               SIGNAL( statusChanged(QString,int,const 
QString,int,int,int) ) );
+       QObject::connect( d->statusTask, SIGNAL( stealthStatusChanged( const 
QString&, Yahoo::StealthStatus ) ), 
+-                              SIGNAL( stealthStatusChanged( const QString&, 
Yahoo::StealthStatus ) ) );
++                              SLOT( notifyStealthStatusChanged( const 
QString&, Yahoo::StealthStatus ) ) );
+       QObject::connect( d->statusTask, SIGNAL( loginResponse( int, const 
QString& ) ), 
+                               SLOT( slotLoginResponse( int, const QString& ) 
) );
+       QObject::connect( d->statusTask, SIGNAL( authorizationRejected( const 
QString&, const QString& ) ), 
+Index: kdenetwork/kopete/protocols/yahoo/libkyahoo/listtask.h
+===================================================================
+--- kdenetwork/kopete/protocols/yahoo/libkyahoo/listtask.h     (revision 
1110827)
++++ kdenetwork/kopete/protocols/yahoo/libkyahoo/listtask.h     (revision 
1110828)
+@@ -40,7 +40,7 @@
+ 
+ signals:
+       void gotBuddy(const QString&, const QString&, const QString&);
+-
++      void stealthStatusChanged( const QString&, Yahoo::StealthStatus );
+ };
+ 
+ #endif
+Index: kdenetwork/kopete/protocols/yahoo/libkyahoo/client.h
+===================================================================
+--- kdenetwork/kopete/protocols/yahoo/libkyahoo/client.h       (revision 
1110827)
++++ kdenetwork/kopete/protocols/yahoo/libkyahoo/client.h       (revision 
1110828)
+@@ -189,6 +189,12 @@
+               void stealthContact( QString const &userId, Yahoo::StealthMode 
mode, Yahoo::StealthStatus state );
+ 
+               /**
++               * Get the stealth status of a buddy
++               * @param userId the yahoo ID of the buddy
++               */
++              Yahoo::StealthStatus stealthStatus( const QString &userId ) 
const;
++
++              /**
+                * Request the buddy's picture
+                * @param userId the yahoo ID of the buddy
+                */
+@@ -456,12 +462,6 @@
+                */
+               void notifyError( const QString &info, const QString 
&errorString, LogLevel level );
+ 
+-              /**
+-               * Steathed information from login..
+-               */
+-              void notifyStealthedBuddies( const QStringList &buddies);
+-              void notifyUnstealthedBuddies( const QStringList &buddies);
+-
+       signals:
+               /** CONNECTION EVENTS */
+               /**
+@@ -723,10 +723,10 @@
+                */
+               void processPictureQueue();
+ 
+-               /** 
+-               * Update all Stealth info after login
++              /**
++               * Process steathed change.
+                */
+-              void processStealthQueue();
++              void notifyStealthStatusChanged( const QString &, 
Yahoo::StealthStatus );
+                 
+       private:
+               void distribute( Transfer *transfer );
+Index: kdenetwork/kopete/protocols/yahoo/yahoocontact.cpp
+===================================================================
+--- kdenetwork/kopete/protocols/yahoo/yahoocontact.cpp (revision 1110827)
++++ kdenetwork/kopete/protocols/yahoo/yahoocontact.cpp (revision 1110828)
+@@ -74,7 +74,6 @@
+       m_manager = 0L;
+       m_account = account;
+       m_YABEntry = 0L;
+-      m_stealthed = false;
+       m_receivingWebcam = false;
+       m_sessionActive = false;
+ 
+@@ -109,7 +108,8 @@
+ 
+ void YahooContact::setOnlineStatus(const Kopete::OnlineStatus &status)
+ {
+-      if( m_stealthed && status.internalStatus() <= 999)      // Not Stealted 
-> Stealthed
++      bool isStealthed = stealthed();
++      if( isStealthed && status.internalStatus() <= 999)      // Not Stealted 
-> Stealthed
+       {
+               Contact::setOnlineStatus(
+                       Kopete::OnlineStatus(status.status() ,
+@@ -119,7 +119,7 @@
+                       status.overlayIcons() + QStringList("yahoo_stealthed") ,
+                       i18n("%1|Stealthed", status.description() ) ) );
+       }
+-      else if( !m_stealthed && status.internalStatus() > 999 )// Stealthed -> 
Not Stealthed
++      else if( !isStealthed && status.internalStatus() > 999 )// Stealthed -> 
Not Stealthed
+               Contact::setOnlineStatus( static_cast< YahooProtocol *>( 
protocol() )->statusFromYahoo( status.internalStatus() - 1000 ) );
+       else
+               Contact::setOnlineStatus( status );
+@@ -128,15 +128,14 @@
+               setStatusMessage( Kopete::StatusMessage() );
+ }
+ 
+-void YahooContact::setStealthed( bool stealthed )
++void YahooContact::updateStealthed()
+ {
+-      m_stealthed = stealthed;
+       setOnlineStatus( onlineStatus() );
+ }
+ 
+-bool YahooContact::stealthed()
++bool YahooContact::stealthed() const
+ {
+-      return m_stealthed;
++      return (m_account->yahooSession()->stealthStatus( m_userId ) == 
Yahoo::StealthActive );
+ }
+ 
+ void YahooContact::serialize(QMap<QString, QString> &serializedData, 
QMap<QString, QString> &addressBookData)
+Index: kdenetwork/kopete/protocols/yahoo/yahooaccount.cpp
+===================================================================
+--- kdenetwork/kopete/protocols/yahoo/yahooaccount.cpp (revision 1110827)
++++ kdenetwork/kopete/protocols/yahoo/yahooaccount.cpp (revision 1110828)
+@@ -978,7 +978,7 @@
+               kDebug(YAHOO_GEN_DEBUG) << "contact " << who << " doesn't 
exist.";
+               return;
+       }
+-      kc->setStealthed( state == Yahoo::StealthActive );
++      kc->updateStealthed();
+ }
+ 
+ QString YahooAccount::prepareIncomingMessage( const QString &messageText )

Reply via email to