[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    extragear/plasma
From:       Andre Duffeck <andre () duffeck ! de>
Date:       2007-11-13 7:05:56
Message-ID: 1194937556.808978.852.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 735967 by duffeck:

Upload the status via the engine and refresh the timeline afterwards, so
that the new status is shown immediately


 M  +2 -63     applets/twitter/twitter.cpp  
 M  +0 -16     applets/twitter/twitter.h  
 M  +66 -0     dataengines/twitter/twitterengine.cpp  
 M  +15 -1     dataengines/twitter/twitterengine.h  


--- trunk/extragear/plasma/applets/twitter/twitter.cpp #735966:735967
@@ -35,13 +35,8 @@
 #include <KLocalizedString>
 #include <KSharedConfig>
 #include <KDialog>
-#include <ksocketfactory.h>
 #include <KLineEdit>
 #include <KStringHandler>
-#include <KCodecs>
-#include <KUrl>
-#include <KIO/Job>
-#include <KIO/TransferJob>
 
 #include <plasma/svg.h>
 #include <plasma/theme.h>
@@ -356,12 +351,8 @@
 
 void Twitter::updateStatus()
 {
-    kDebug() ;
-    m_action = Upload;
-
-    m_socket = KSocketFactory::connectToHost( "http", "twitter.com", 80 );
-    connect( m_socket, SIGNAL(connected()), SLOT(slotConnected()) );
-    connect( m_socket, SIGNAL(readyRead()), SLOT(slotRead()) );
+    m_engine->setProperty( "status", m_statusEdit->toPlainText() );
+    m_statusEdit->setPlainText("");
 }
 
 void Twitter::downloadHistory()
@@ -405,56 +396,4 @@
     return desc;
 }
 
-void Twitter::slotConnected()
-{
-    kDebug() ;
-    QString auth = QString( "%1:%2" ).arg( m_username, m_password );
-    auth = QString( "Basic " ) + KCodecs::base64Encode( auth.toAscii() );
-    QString data;
-    if( m_action == Upload ) {
-        QString status = QString( "source=kdetwitter&status=%1" ).arg( m_statusEdit->toPlainText() );
-        data = QString("POST /statuses/update.json HTTP/1.1\r\n"
-                "Authorization: %1\r\n"
-                "User-Agent: Mozilla/5.0\r\n"
-                "Host: twitter.com\r\n"
-                "Accept: */*\r\n"
-                "Content-Length: %2\r\n"
-                "Content-Type: application/x-www-form-urlencoded\r\n\r\n"
-                "%3" )
-                .arg( auth, QString::number(status.toUtf8().length()), status );
-    }
-
-    m_header = QHttpResponseHeader();
-    m_data.truncate( 0 );
-    m_socket->write( data.toUtf8(), data.toUtf8().length() );
-}
-
-void Twitter::slotRead()
-{
-    kDebug() ;
-    QString read = m_socket->readAll();
-
-    QString data;
-    if( !m_header.isValid() ) {
-        m_header = read.section( "\r\n\r\n", 0, 0 );
-        m_data = read.section( "\r\n\r\n", 1, 1 );
-    } else {
-        m_data.append( read );
-    }
-
-    if( m_header.statusCode() == 401 ) {
-        m_flash->flash( i18n("Authentication failed") );
-        m_action = Idle;
-        return;
-    }
-
-    if( m_action == Upload ) {
-        kDebug() << "Status upload succeeded.";
-        m_flash->flash( i18n("Status upload succeeded") );
-        m_action = Idle;
-        m_statusEdit->setPlainText("");
-    }
-}
-
-
 #include "twitter.moc"
--- trunk/extragear/plasma/applets/twitter/twitter.h #735966:735967
@@ -22,7 +22,6 @@
 
 #include <QLabel>
 #include <QDomDocument>
-#include <QHttpResponseHeader>
 #include <QMap>
 
 #include <plasma/applet.h>
@@ -44,10 +43,6 @@
     class VBoxLayout;
     class HBoxLayout;
 }
-namespace KIO
-{
-    class Job;
-}
 
 struct Tweet {
     Plasma::HBoxLayout *layout;
@@ -59,8 +54,6 @@
 {
     Q_OBJECT
     public:
-        enum Action { Idle, Upload, HistoryDownload };
-
         Twitter(QObject *parent, const QVariantList &args);
         ~Twitter();
 
@@ -78,9 +71,6 @@
         void updateStatus();
         void downloadHistory();
 
-        void slotConnected();
-        void slotRead();
-
         void showTweets();
 
     protected:
@@ -112,13 +102,7 @@
         int m_historyRefresh;
         bool m_includeFriends;
 
-        Action m_action;
-
         Plasma::DataEngine *m_engine;
-        QTcpSocket *m_socket;
-        QHttpResponseHeader m_header;
-        QDomDocument m_historyDoc;
-        QString m_data;
         QString m_curTimeline;
 
         QMap< QString, QPixmap > m_pictureMap;
--- trunk/extragear/plasma/dataengines/twitter/twitterengine.cpp #735966:735967
@@ -30,6 +30,9 @@
 
 #include <KDebug>
 #include <KUrl>
+#include <ksocketfactory.h>
+#include <KCodecs>
+#include <KUrl>
 
 TwitterEngine::TwitterEngine(QObject* parent, const QVariantList& args)
     : Plasma::DataEngine(parent)
@@ -66,6 +69,16 @@
     setUpdateInterval( interval.toInt() );
 }
 
+void TwitterEngine::setStatus(const QString &status)
+{
+    kDebug();
+    m_status = status;
+
+    m_socket = KSocketFactory::connectToHost( "http", "twitter.com", 80 );
+    connect( m_socket, SIGNAL(connected()), SLOT(slotConnected()) );
+    connect( m_socket, SIGNAL(readyRead()), SLOT(slotRead()) );  
+}
+
 QString TwitterEngine::username() const
 {
     return m_username;
@@ -81,6 +94,11 @@
     return m_interval;
 }
 
+QString TwitterEngine::status() const
+{
+    return m_status;
+}
+
 /*QStringList TwitterEngine::sources() const
 {
     return QStringList() << "Timeline";
@@ -253,4 +271,52 @@
     return timeline;
 }
 
+void TwitterEngine::slotConnected()
+{
+    kDebug() ;
+    QString auth = QString( "%1:%2" ).arg( m_username, m_password );
+    auth = QString( "Basic " ) + KCodecs::base64Encode( auth.toAscii() );
+    QString data;
+    QString status = QString( "source=kdetwitter&status=%1" ).arg( m_status );
+    data = QString("POST /statuses/update.xml HTTP/1.1\r\n"
+        "Authorization: %1\r\n"
+        "User-Agent: Mozilla/5.0\r\n"
+        "Host: twitter.com\r\n"
+        "Accept: */*\r\n"
+        "Content-Length: %2\r\n"
+        "Content-Type: application/x-www-form-urlencoded\r\n\r\n"
+        "%3" )
+        .arg( auth, QString::number(status.toUtf8().length()), status );
+
+    m_header = QHttpResponseHeader();
+    m_data.truncate( 0 );
+    m_socket->write( data.toUtf8(), data.toUtf8().length() );
+}
+
+void TwitterEngine::slotRead()
+{
+    kDebug() ;
+    QString read = m_socket->readAll();
+
+    QString data;
+    if( !m_header.isValid() ) {
+        m_header = read.section( "\r\n\r\n", 0, 0 );
+        m_data = read.section( "\r\n\r\n", 1, 1 );
+    } else {
+        m_data.append( read );
+    }
+
+    if( m_header.statusCode() == 401 ) {
+        kDebug() << "Status upload succeeded.";
+        return;
+    }
+
+    kDebug() << "Status upload succeeded.";
+    foreach( QString source, m_activeSources ) {
+        if( source.startsWith( "Timeline" ) )
+            updateSource( source );
+    }
+}
+
+
 #include "twitterengine.moc"
--- trunk/extragear/plasma/dataengines/twitter/twitterengine.h #735966:735967
@@ -24,6 +24,8 @@
 
 #include <QMap>
 #include <QStringList>
+#include <QTcpSocket>
+#include <QHttpResponseHeader>
 
 class QDomNodeList;
 class QHttp;
@@ -34,7 +36,9 @@
     Q_PROPERTY(QString username READ username WRITE setUsername)
     Q_PROPERTY(QString password READ password WRITE setPassword)
     Q_PROPERTY(QString interval READ interval WRITE setInterval)
+    Q_PROPERTY(QString status READ status WRITE setStatus)
 
+
     public:
         TwitterEngine(QObject* parent,const QVariantList& args);
         ~TwitterEngine();
@@ -48,6 +52,9 @@
         QString interval() const;
         void setInterval(const QString& interval);
 
+        QString status() const;
+        void setStatus(const QString& refresh);
+
         //QStringList sources() const;
         enum UpdateType { Timeline=1, Status, UserTimeline, UserTimelineWithFriends, UserImage };
 
@@ -64,12 +71,16 @@
         void unauthorizedRequestFinished(int id, bool error);
         bool updateSource(const QString &source);
 
-private:
+        void slotConnected();
+        void slotRead();
+
+    private:
         QList<QVariant> parseStatuses(QDomNodeList items);
 
         QString m_username;
         QString m_password;
         QString m_interval;
+        QString m_status;
         QHttp* m_http;
         QHttp* m_unauthorizedHttp;
         QMap<int,UpdateType> m_updates;
@@ -77,6 +88,9 @@
         QMap<int,QString> m_timelines;
         QStringList m_activeSources;
         QMap<QString,KUrl> m_userImages;
+        QTcpSocket *m_socket;
+        QHttpResponseHeader m_header;
+        QString m_data;
 };
 
 K_EXPORT_PLASMA_DATAENGINE(twitter, TwitterEngine)
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic