Ticket #640: browse.patch
File browse.patch, 6.4 KB (added by , 18 years ago) |
---|
-
mythflix/mythflix.cpp
58 58 m_InColumn = 0; 59 59 m_UISites = 0; 60 60 m_UIArticles = 0; 61 m_TimerTimeout = 10*60*1000;62 61 63 62 setNoErase(); 64 63 loadTheme(); … … 89 88 new UIListBtnTypeItem(m_UISites, site->name()); 90 89 item->setData(site); 91 90 } 92 93 // Now do the actual work94 m_RetrieveTimer = new QTimer(this);95 connect(m_RetrieveTimer, SIGNAL(timeout()),96 this, SLOT(slotRetrieveNews()));97 m_UpdateFreq = gContext->GetNumSetting("NewsUpdateFrequency", 30);98 m_RetrieveTimer->start(m_TimerTimeout, false);99 91 92 93 NewsSite* site = (NewsSite*) m_NewsSites.first(); 94 connect(site, SIGNAL(finished(NewsSite*)), 95 this, SLOT(slotNewsRetrieved(NewsSite*))); 96 100 97 slotRetrieveNews(); 101 98 102 slotSiteSelected((NewsSite*) m_NewsSites.first());103 104 99 netflixShopperId = gContext->GetSetting("NetflixShopperId"); 105 100 std::cerr << "MythFlix: Using NetflixShopperId " << netflixShopperId << std::endl; 106 101 … … 109 104 110 105 MythFlix::~MythFlix() 111 106 { 112 m_RetrieveTimer->stop();113 107 delete m_Theme; 114 108 } 115 109 … … 412 406 cursorLeft(); 413 407 else if (action == "RIGHT") 414 408 cursorRight(); 415 else if (action == "RETRIEVENEWS")416 slotRetrieveNews();417 409 else if(action == "SELECT") 418 410 slotViewArticle(); 419 else if (action == "CANCEL")420 {421 cancelRetrieve();422 }423 411 else 424 412 handled = false; 425 413 } … … 493 481 if (m_NewsSites.count() == 0) 494 482 return; 495 483 496 cancelRetrieve();497 498 m_RetrieveTimer->stop();499 500 484 for (NewsSite* site = m_NewsSites.first(); site; site = m_NewsSites.next()) 501 485 { 502 site->stop(); 503 connect(site, SIGNAL(finished(NewsSite*)), 504 this, SLOT(slotNewsRetrieved(NewsSite*))); 486 site->retrieve(); 505 487 } 506 488 507 for (NewsSite* site = m_NewsSites.first(); site; site = m_NewsSites.next())508 {509 if (site->timeSinceLastUpdate() > m_UpdateFreq)510 site->retrieve();511 else512 processAndShowNews(site);513 }514 515 m_RetrieveTimer->start(m_TimerTimeout, false);516 489 } 517 490 518 491 void MythFlix::slotNewsRetrieved(NewsSite* site) 519 492 { 520 unsigned int updated = site->lastUpdated().toTime_t();521 522 MSqlQuery query(MSqlQuery::InitCon());523 query.prepare("UPDATE netflix SET updated = :UPDATED "524 "WHERE name = :NAME ;");525 query.bindValue(":UPDATED", updated);526 query.bindValue(":NAME", site->name().utf8());527 if (!query.exec() || !query.isActive())528 MythContext::DBError("news update time", query);529 530 493 processAndShowNews(site); 531 494 } 532 495 533 void MythFlix::cancelRetrieve()534 {535 for (NewsSite* site = m_NewsSites.first(); site;536 site = m_NewsSites.next()) {537 site->stop();538 processAndShowNews(site);539 }540 }541 542 496 void MythFlix::processAndShowNews(NewsSite* site) 543 497 { 544 498 if (!site) … … 565 519 update(m_InfoRect); 566 520 } 567 521 } 568 void MythFlix::slotSiteSelected(NewsSite* site)569 {570 if(!site)571 return;572 573 m_UIArticles->Reset();574 522 575 for (NewsArticle* article = site->articleList().first(); article;576 article = site->articleList().next()) {577 UIListBtnTypeItem* item =578 new UIListBtnTypeItem(m_UIArticles, article->title());579 item->setData(article);580 }581 582 update(m_SitesRect);583 update(m_ArticlesRect);584 update(m_InfoRect);585 }586 587 523 void MythFlix::slotSiteSelected(UIListBtnTypeItem *item) 588 524 { 589 525 if (!item || !item->getData()) 590 526 return; 591 527 592 slotSiteSelected((NewsSite*) item->getData());528 processAndShowNews((NewsSite*) item->getData()); 593 529 } 594 530 595 531 void MythFlix::slotArticleSelected(UIListBtnTypeItem*) … … 607 543 NewsArticle *article = (NewsArticle*) articleUIItem->getData(); 608 544 if(article) 609 545 { 546 547 // updateAddingView(); 548 610 549 QString cmdUrl(article->articleURL()); 611 550 cmdUrl.replace('\'', "%27"); 612 551 … … 641 580 //do you listen for signal done 642 581 //delete http; 643 582 644 583 if (debug) 645 584 cerr << "MythFlix: Redirecting to (" << location << ")..." << endl; 646 585 647 http = new QHttp();648 connect(http, SIGNAL(responseHeaderReceived (const QHttpResponseHeader&)), this, SLOT(slotMovieAdded(const QHttpResponseHeader&)));586 http = new QHttp(); 587 connect(http, SIGNAL(responseHeaderReceived (const QHttpResponseHeader&)), this, SLOT(slotMovieAdded(const QHttpResponseHeader&))); 649 588 650 QHttpRequestHeader header( "GET", location );651 header.setValue( "Cookie", "validReEntryCookie=Y; validReEntryConfirmed=Y; NetflixShopperId=" + netflixShopperId + ";" );652 header.setValue( "Host", "www.netflix.com" );653 http->setHost( "www.netflix.com" );654 http->request( header );589 QHttpRequestHeader header( "GET", location ); 590 header.setValue( "Cookie", "validReEntryCookie=Y; validReEntryConfirmed=Y; NetflixShopperId=" + netflixShopperId + ";" ); 591 header.setValue( "Host", "www.netflix.com" ); 592 http->setHost( "www.netflix.com" ); 593 http->request( header ); 655 594 } 656 595 else 657 596 { 658 659 //How do you clean up http objects660 //do you listen for signal done661 //delete http;662 663 /*664 if (debug)665 cerr << "MythFlix: Movie Added" << endl;666 667 LayerSet* container = m_Theme->GetSet("info");668 UITextType* ttype =669 (UITextType *)container->GetType("status");670 671 if (ttype)672 ttype->SetText("Added");673 674 */675 676 597 } 677 598 } -
mythflix/mythflix.h
73 73 74 74 NewsSite::List m_NewsSites; 75 75 76 QTimer *m_RetrieveTimer;77 76 QHttp *http; 78 77 79 78 QString netflixShopperId; 80 79 81 int m_TimerTimeout;82 unsigned int m_UpdateFreq;83 84 80 private slots: 85 81 void slotViewArticle(); 86 82 void slotRetrieveNews(); 87 83 void slotNewsRetrieved(NewsSite* site); 88 84 89 85 void slotSiteSelected(UIListBtnTypeItem *item); 90 void slotSiteSelected(NewsSite*);91 92 86 void slotArticleSelected(UIListBtnTypeItem *item); 93 87 94 88 void slotMovieAdded(const QHttpResponseHeader &resp);