2 * Copyright 2017, Haiku, Inc. All Rights Reserved.
3 * Distributed under the terms of the MIT License.
6 * Brian Hill <supernova@warpmail.net>
10 #include "UpdateAction.h"
12 #include <Application.h>
14 #include <package/manager/Exceptions.h>
16 #include "constants.h"
19 #undef B_TRANSLATION_CONTEXT
20 #define B_TRANSLATION_CONTEXT "UpdateAction"
23 using namespace BPackageKit
;
24 //using namespace BPackageKit::BPrivate;
25 using namespace BPackageKit::BManager::BPrivate
;
28 UpdateAction::UpdateAction()
30 fUpdateManager
= new(std::nothrow
)
31 UpdateManager(B_PACKAGE_INSTALLATION_LOCATION_SYSTEM
);
35 UpdateAction::~UpdateAction()
37 delete fUpdateManager
;
42 UpdateAction::Perform()
45 fUpdateManager
->CheckNetworkConnection();
47 fUpdateManager
->Init(BPackageManager::B_ADD_INSTALLED_REPOSITORIES
48 | BPackageManager::B_ADD_REMOTE_REPOSITORIES
49 | BPackageManager::B_REFRESH_REPOSITORIES
);
51 // These values indicate that all updates should be installed
52 //int packageCount = 0;
53 //const char* const packages = "";
56 // fUpdateManager->SetDebugLevel(1);
57 //fUpdateManager->Update(&packages, packageCount);
58 fUpdateManager
->FullSync();
59 } catch (BFatalErrorException ex
) {
60 fUpdateManager
->FinalUpdate(B_TRANSLATE("Updates did not complete"),
63 } catch (BAbortedByUserException ex
) {
64 fprintf(stderr
, "Updates aborted by user: %s\n",
65 ex
.Message().String());
66 // No need for a final message since user initiated cancel request
67 be_app
->PostMessage(kMsgFinalQuit
);
69 } catch (BNothingToDoException ex
) {
70 fprintf(stderr
, "Nothing to do while updating packages : %s\n",
71 ex
.Message().String());
72 fUpdateManager
->FinalUpdate(B_TRANSLATE("No updates available"),
73 B_TRANSLATE("There were no updates found."));
75 } catch (BException ex
) {
76 fprintf(stderr
, "Exception occurred while updating packages : %s\n",
77 ex
.Message().String());
78 fUpdateManager
->FinalUpdate(B_TRANSLATE("Updates did not complete"),