HaikuDepot: notify work status from main window
[haiku.git] / src / apps / softwareupdater / CheckAction.cpp
blobc5a2770705a73b6dc30e8cc9a9435a24fdd01fac
1 /*
2 * Copyright 2017, Haiku, Inc. All Rights Reserved.
3 * Distributed under the terms of the MIT License.
5 * Authors:
6 * Brian Hill <supernova@tycho.email>
7 */
10 #include "CheckAction.h"
12 #include <Application.h>
13 #include <Catalog.h>
14 #include <package/manager/Exceptions.h>
17 #undef B_TRANSLATION_CONTEXT
18 #define B_TRANSLATION_CONTEXT "CheckAction"
21 using namespace BPackageKit;
22 //using namespace BPackageKit::BPrivate;
23 using namespace BPackageKit::BManager::BPrivate;
26 CheckAction::CheckAction(bool verbose)
28 fCheckManager = new(std::nothrow)
29 CheckManager(B_PACKAGE_INSTALLATION_LOCATION_SYSTEM, verbose);
33 CheckAction::~CheckAction()
35 delete fCheckManager;
39 status_t
40 CheckAction::Perform()
42 try {
43 fCheckManager->CheckNetworkConnection();
45 fCheckManager->Init(BPackageManager::B_ADD_INSTALLED_REPOSITORIES
46 | BPackageManager::B_ADD_REMOTE_REPOSITORIES
47 | BPackageManager::B_REFRESH_REPOSITORIES);
49 // fUpdateManager->SetDebugLevel(1);
50 // These values indicate that all updates should be installed
51 int packageCount = 0;
52 const char* const packages = "";
53 fCheckManager->Update(&packages, packageCount);
54 } catch (BFatalErrorException ex) {
55 fprintf(stderr, B_TRANSLATE(
56 "Fatal error while checking for updates: %s\n"),
57 ex.Message().String());
58 be_app->PostMessage(kMsgFinalQuit);
59 return ex.Error();
60 } catch (BAbortedByUserException ex) {
61 be_app->PostMessage(kMsgFinalQuit);
62 return B_OK;
63 } catch (BNothingToDoException ex) {
64 puts(B_TRANSLATE("There were no updates found."));
65 fCheckManager->NoUpdatesNotification();
66 be_app->PostMessage(kMsgFinalQuit);
67 return B_OK;
68 } catch (BException ex) {
69 fprintf(stderr, B_TRANSLATE(
70 "Exception occurred while checking for updates: %s\n"),
71 ex.Message().String());
72 be_app->PostMessage(kMsgFinalQuit);
73 return B_ERROR;
76 return B_OK;