void MainWindow::createDeclarativeView() { m_tweetListModel = new TweetQmlListModel(m_oauthTwitter); //connect user stream to tweet home timeline connect(m_userStream, SIGNAL(statusesStream(QTweetStatus)), m_tweetListModel, SLOT(onStatusesStream(QTweetStatus))); connect(m_userStream, SIGNAL(deleteStatusStream(qint64,qint64)), m_tweetListModel, SLOT(onDeleteStatusStream(qint64,qint64))); // ### TODO: Test for syncing problems connect(m_userStream, SIGNAL(reconnected()), m_tweetListModel, SLOT(fetchLastTweets())); //try using REST API when streams fails connect(m_userStream, SIGNAL(failureConnect()), m_tweetListModel, SLOT(fetchLastTweets())); m_mentionsListModel = new MentionsQmlListModel(m_oauthTwitter); connect(m_userStream, SIGNAL(statusesStream(QTweetStatus)), m_mentionsListModel, SLOT(onStatusesStream(QTweetStatus))); connect(m_userStream, SIGNAL(deleteStatusStream(qint64,qint64)), m_mentionsListModel, SLOT(onDeleteStatusStream(qint64,qint64))); connect(m_userStream, SIGNAL(reconnected()), m_mentionsListModel, SLOT(fetchLastTweets())); m_directMessagesListModel = new DirectMessagesQmlListModel(m_oauthTwitter); connect(m_userStream, SIGNAL(directMessageStream(QTweetDMStatus)), m_directMessagesListModel, SLOT(onDirectMessageStream(QTweetDMStatus))); m_searchListModel = new SearchQmlListModel(m_oauthTwitter); m_userInfo = new UserInfo; m_userInfo->setOAuthTwitter(m_oauthTwitter); connect(m_userStream, SIGNAL(friendsList(QList<qint64>)), m_userInfo, SLOT(onUserStreamFriendsList(QList<qint64>))); m_userTimelineListModel = new UserTimelineListModel(m_oauthTwitter); m_conversationListModel = new ConversationListModel(m_oauthTwitter); rootContext()->setContextProperty("hometimelineListModel", m_tweetListModel); rootContext()->setContextProperty("mentionsListModel", m_mentionsListModel); rootContext()->setContextProperty("directMessagesListModel", m_directMessagesListModel); rootContext()->setContextProperty("searchListModel", m_searchListModel); rootContext()->setContextProperty("userInfo", m_userInfo); rootContext()->setContextProperty("userTimelineListModel", m_userTimelineListModel); rootContext()->setContextProperty("conversationListModel", m_conversationListModel); rootContext()->setContextProperty("rootWindow", this); //setSource(QUrl::fromLocalFile("qml/QTwitdget/Main.qml")); setMainQmlFile(QLatin1String("qml/QTwitdget/Main.qml")); }
void QTweetUserStream::parsingFinished(const QVariant &json, bool ok, const QString &errorMsg) { if (!ok) { qDebug() << "JSON parsing error: " << errorMsg; #ifdef STREAM_LOGGER m_streamLog.write("***** JSON parsing error *****\n"); #endif return; } QVariantMap result = json.toMap(); //find it what stream element is if (result.contains("friends")) { //friends element parseFriendsList(result); } else if (result.contains("direct_message")) { //direct message element parseDirectMessage(result); } else if (result.contains("text")) { //status element QTweetStatus status = QTweetConvert::variantMapToStatus(result); emit statusesStream(status); } else if (result.contains("delete")) { parseDeleteStatus(result); } }
UserStream::UserStream(QWidget *parent) : QWidget(parent), ui(new Ui::UserStream) { ui->setupUi(this); m_oauthTwitter = new OAuthTwitter(new QNetworkAccessManager, this); connect(m_oauthTwitter, SIGNAL(authorizeXAuthFinished()), SLOT(onAuthorizeFinished())); connect(m_oauthTwitter, SIGNAL(authorizeXAuthError()), SLOT(onAuthorizeError())); m_userStream = new QTweetUserStream(this); m_userStream->setOAuthTwitter(m_oauthTwitter); connect(m_userStream, SIGNAL(stream(QByteArray)), SLOT(stream(QByteArray))); connect(m_userStream, SIGNAL(statusesStream(QTweetStatus)), SLOT(statusStream(QTweetStatus))); connect(ui->connectButton, SIGNAL(clicked()), SLOT(onConnectButtonClicked())); //for internal purposes m_file.setFileName("logstream.txt"); m_file.open(QIODevice::WriteOnly | QIODevice::Text); m_streamlogger.setDevice(&m_file); }