From 58114b347649d1a79bffe93baa10814dac078cec Mon Sep 17 00:00:00 2001 From: Rene Gollent Date: Tue, 12 Nov 2013 18:13:55 -0500 Subject: [PATCH] HaikuDepot: Fix #10115. - Also reset package state in the BFatalErrorException case. - Show actual alerts for fatal install/uninstall errors rather than simply printing them to the console. --- src/apps/haiku-depot/PackageManager.cpp | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/src/apps/haiku-depot/PackageManager.cpp b/src/apps/haiku-depot/PackageManager.cpp index cc7c83bcbf..a28046df51 100644 --- a/src/apps/haiku-depot/PackageManager.cpp +++ b/src/apps/haiku-depot/PackageManager.cpp @@ -13,6 +13,7 @@ #include +#include #include #include @@ -113,9 +114,16 @@ public: try { fPackageManager->Install(&packageName, 1); } catch (BFatalErrorException ex) { - fprintf(stderr, "Fatal error occurred while installing package " - "%s: %s (%s)\n", packageName, ex.Message().String(), + _SetDownloadedPackagesState(NONE); + BString errorString; + errorString.SetToFormat( + "Fatal error occurred while installing package %s: " + "%s (%s)\n", packageName, ex.Message().String(), ex.Details().String()); + BAlert* alert(new(std::nothrow) BAlert(B_TRANSLATE("Fatal error"), + errorString, B_TRANSLATE("Close"))); + if (alert != NULL) + alert->Go(NULL); return ex.Error(); } catch (BAbortedByUserException ex) { _SetDownloadedPackagesState(NONE); @@ -207,9 +215,15 @@ public: try { fPackageManager->Uninstall(&packageName, 1); } catch (BFatalErrorException ex) { - fprintf(stderr, "Fatal error occurred while uninstalling package " - "%s: %s (%s)\n", packageName, ex.Message().String(), + BString errorString; + errorString.SetToFormat( + "Fatal error occurred while uninstalling package %s: " + "%s (%s)\n", packageName, ex.Message().String(), ex.Details().String()); + BAlert* alert(new(std::nothrow) BAlert(B_TRANSLATE("Fatal error"), + errorString, B_TRANSLATE("Close"))); + if (alert != NULL) + alert->Go(NULL); return ex.Error(); } catch (BAbortedByUserException ex) { return B_OK;