From a852846fc23d5521b1afdd7f7db1588c7308421a Mon Sep 17 00:00:00 2001 From: Ingo Weinhold Date: Tue, 17 Jun 2014 09:48:46 +0200 Subject: [PATCH] HaikuDepot: Update list on installation location package changes Very dumb implementation (just does a full update). I leave it to the HaikuDepot hackers to improve it. --- src/apps/haikudepot/MainWindow.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/apps/haikudepot/MainWindow.cpp b/src/apps/haikudepot/MainWindow.cpp index 453505d29f..0e564a362c 100644 --- a/src/apps/haikudepot/MainWindow.cpp +++ b/src/apps/haikudepot/MainWindow.cpp @@ -126,6 +126,9 @@ MainWindow::MainWindow(BRect frame, const BMessage& settings) if (settings.FindBool("show source packages", &showOption) == B_OK) fModel.SetShowSourcePackages(showOption); + BPackageRoster().StartWatching(this, + B_WATCH_PACKAGE_INSTALLATION_LOCATIONS); + _StartRefreshWorker(); fPendingActionsSem = create_sem(0, "PendingPackageActions"); @@ -140,6 +143,8 @@ MainWindow::MainWindow(BRect frame, const BMessage& settings) MainWindow::~MainWindow() { + BPackageRoster().StopWatching(this); + fTerminating = true; if (fModelWorker > 0) wait_for_thread(fModelWorker, NULL); @@ -180,6 +185,12 @@ MainWindow::MessageReceived(BMessage* message) // TODO: ? break; + case B_PACKAGE_UPDATE: + // TODO: We should do a more selective update depending on the + // "event", "location", and "change count" fields! + _StartRefreshWorker(false); + break; + case MSG_REFRESH_DEPOTS: _StartRefreshWorker(true); break;