[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