From 4a5c3b9898da2c2fcee7730ed7a58fc20816b401 Mon Sep 17 00:00:00 2001 From: Jaidyn Ann Date: Thu, 18 Feb 2021 23:16:45 -0600 Subject: [PATCH] Download progress label in FeedsView --- src/App.cpp | 1 + src/FeedController.cpp | 4 ++++ src/FeedController.h | 1 + src/FeedsView.cpp | 22 ++++++++++++++++++++++ src/FeedsView.h | 4 ++++ src/MainWindow.cpp | 2 ++ 6 files changed, 34 insertions(+) diff --git a/src/App.cpp b/src/App.cpp index 43b7e1a..1d604f6 100644 --- a/src/App.cpp +++ b/src/App.cpp @@ -79,6 +79,7 @@ App::MessageReceived(BMessage* msg) } case kFeedsEdited: case kProgress: + case kDownloadStart: { fMainWindow->PostMessage(msg); break; diff --git a/src/FeedController.cpp b/src/FeedController.cpp index b7d2c89..1e074dd 100644 --- a/src/FeedController.cpp +++ b/src/FeedController.cpp @@ -124,6 +124,10 @@ FeedController::_DownloadLoop(void* ignored) printf( "Downloading feed from %s...\n", feedBuffer->GetXmlUrl().UrlString().String()); + BMessage* downloadInit = new BMessage(kDownloadStart); + downloadInit->AddString("feed", feedBuffer->GetTitle()); + ((App*)be_app)->MessageReceived(downloadInit); + if (feedBuffer->Fetch()) { BMessage* downloaded = new BMessage(kDownloadComplete); downloaded->AddData("feeds", B_RAW_TYPE, feedBuffer, sizeof(Feed)); diff --git a/src/FeedController.h b/src/FeedController.h index e472ef0..ed7f694 100644 --- a/src/FeedController.h +++ b/src/FeedController.h @@ -16,6 +16,7 @@ enum { kEnqueueFeed = 'fenq', kClearQueue = 'frmq', + kDownloadStart = 'fdst', kDownloadComplete = 'fdlc', kDownloadFail = 'fdlf', kParseComplete = 'fpec', diff --git a/src/FeedsView.cpp b/src/FeedsView.cpp index e606696..aeeb25f 100644 --- a/src/FeedsView.cpp +++ b/src/FeedsView.cpp @@ -11,6 +11,7 @@ #include #include #include +#include #include @@ -19,6 +20,7 @@ #include "FeedController.h" #include "FeedEditWindow.h" #include "FeedListItem.h" +#include "Notifier.h" FeedsView::FeedsView(const char* name) @@ -64,6 +66,12 @@ FeedsView::MessageReceived(BMessage* msg) { // _PopulateFeedList(); } + case kDownloadStart: + { + BString feedName; + if (msg->FindString("feed", &feedName) == B_OK) + _UpdateProgress(feedName); + } default: { // BWindow::MessageReceived(msg); @@ -85,6 +93,8 @@ FeedsView::_InitInterface() _PopulateFeedList(); + fProgressLabel = new BStringView("progressLabel", "Progress…"); + // Add, Remove, Edit fAddButton = new BButton("addFeed", "+", new BMessage(kFeedsAddButton)); fRemoveButton = new BButton("removeFeed", "-", new BMessage(kFeedsRemoveButton)); @@ -122,6 +132,9 @@ FeedsView::_InitInterface() .Add(new BSeparatorView(B_HORIZONTAL)) .End() .Add(new BSeparatorView(B_VERTICAL)) + + .AddGlue() + .Add(fProgressLabel) .AddGlue() // Edit button @@ -174,3 +187,12 @@ FeedsView::_PopulateFeedList() } +void +FeedsView::_UpdateProgress(BString feedName) +{ + BString label("Fetching "); + label << feedName << "…"; + fProgressLabel->SetText(label); +} + + diff --git a/src/FeedsView.h b/src/FeedsView.h index 02ef209..ce56767 100644 --- a/src/FeedsView.h +++ b/src/FeedsView.h @@ -12,6 +12,7 @@ class BMessage; class BListView; class BScrollView; +class BStringView; enum @@ -38,9 +39,12 @@ private: void _PopulateFeedList(); + void _UpdateProgress(BString feedName); + BButton* fAddButton; BButton* fRemoveButton; BButton* fEditButton; + BStringView* fProgressLabel; BListView* fFeedsListView; BScrollView* fFeedsScrollView; }; diff --git a/src/MainWindow.cpp b/src/MainWindow.cpp index 8910920..d7ebc4c 100644 --- a/src/MainWindow.cpp +++ b/src/MainWindow.cpp @@ -43,6 +43,7 @@ MainWindow::MessageReceived(BMessage *msg) case kFeedsEditButton: case kFeedsSelected: case kFeedsEdited: + case kDownloadStart: { fFeedsView->MessageReceived(msg); break; @@ -54,6 +55,7 @@ MainWindow::MessageReceived(BMessage *msg) } case kProgress: { + fFeedsView->MessageReceived(msg); int32 max = 0; int32 current = 0;