diff --git a/src/apps/haikudepot/model/LanguageModel.cpp b/src/apps/haikudepot/model/LanguageModel.cpp index c74cea639a..1bce38cef8 100644 --- a/src/apps/haikudepot/model/LanguageModel.cpp +++ b/src/apps/haikudepot/model/LanguageModel.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2019, Andrew Lindesay . + * Copyright 2019-2020, Andrew Lindesay . * All rights reserved. Distributed under the terms of the MIT License. */ #include "LanguageModel.h" @@ -33,7 +33,7 @@ LanguagesCompareFn(const LanguageRef& l1, const LanguageRef& l2) LanguageModel::LanguageModel() : fSupportedLanguages(LanguagesCompareFn, NULL), - fPreferredLanguage(LANGUAGE_DEFAULT) + fPreferredLanguage(LanguageRef(new Language(LANGUAGE_DEFAULT))) { const Language defaultLanguage = _DeriveDefaultLanguage(); fSupportedLanguages.Add(LanguageRef( @@ -69,7 +69,7 @@ LanguageModel::AddSupportedLanguages(const LanguageList& languages) void LanguageModel::_SetPreferredLanguage(const Language& language) { - fPreferredLanguage = language; + fPreferredLanguage = LanguageRef(new Language(language)); if(Logger::IsDebugEnabled()) printf("set preferred language [%s]\n", language.Code()); } diff --git a/src/apps/haikudepot/model/LanguageModel.h b/src/apps/haikudepot/model/LanguageModel.h index 5010332d32..b748f41007 100644 --- a/src/apps/haikudepot/model/LanguageModel.h +++ b/src/apps/haikudepot/model/LanguageModel.h @@ -1,5 +1,5 @@ /* - * Copyright 2019, Andrew Lindesay . + * Copyright 2019-2020, Andrew Lindesay . * All rights reserved. Distributed under the terms of the MIT License. */ #ifndef LANGUAGE_MODEL_H @@ -28,7 +28,7 @@ public: int32 IndexOfSupportedLanguage( const BString& languageCode) const; - const Language& PreferredLanguage() const + const LanguageRef PreferredLanguage() const { return fPreferredLanguage; } private: @@ -40,7 +40,7 @@ private: private: LanguageList fSupportedLanguages; - Language fPreferredLanguage; + LanguageRef fPreferredLanguage; }; diff --git a/src/apps/haikudepot/model/Model.cpp b/src/apps/haikudepot/model/Model.cpp index 4c7900cf87..e2352ebc76 100644 --- a/src/apps/haikudepot/model/Model.cpp +++ b/src/apps/haikudepot/model/Model.cpp @@ -915,7 +915,7 @@ Model::DumpExportRepositoryDataPath(BPath& path) const { BString leaf; leaf.SetToFormat("repository-all_%s.json.gz", - LanguageModel().PreferredLanguage().Code()); + LanguageModel().PreferredLanguage()->Code()); return StorageUtils::LocalWorkingFilesPath(leaf, path); } @@ -930,7 +930,7 @@ Model::DumpExportReferenceDataPath(BPath& path) const { BString leaf; leaf.SetToFormat("reference-all_%s.json.gz", - LanguageModel().PreferredLanguage().Code()); + LanguageModel().PreferredLanguage()->Code()); return StorageUtils::LocalWorkingFilesPath(leaf, path); } @@ -948,7 +948,7 @@ Model::DumpExportPkgDataPath(BPath& path, { BString leaf; leaf.SetToFormat("pkg-all-%s-%s.json.gz", repositorySourceCode.String(), - LanguageModel().PreferredLanguage().Code()); + LanguageModel().PreferredLanguage()->Code()); return StorageUtils::LocalWorkingFilesPath(leaf, path); } diff --git a/src/apps/haikudepot/server/ProcessCoordinatorFactory.cpp b/src/apps/haikudepot/server/ProcessCoordinatorFactory.cpp index 38b2e29be2..dfe424636c 100644 --- a/src/apps/haikudepot/server/ProcessCoordinatorFactory.cpp +++ b/src/apps/haikudepot/server/ProcessCoordinatorFactory.cpp @@ -107,7 +107,7 @@ ProcessCoordinatorFactory::CreateBulkLoadCoordinator( for (int32 i = 0; i < repoNames.CountStrings(); i++) { ProcessNode* processNode = new ProcessNode( new ServerPkgDataUpdateProcess( - model->Language().PreferredLanguage().Code(), + model->Language().PreferredLanguage()->Code(), repoNames.StringAt(i), model, serverProcessOptions)); processNode->AddPredecessor(serverRepositoryDataUpdate); processNode->AddPredecessor(serverReferenceDataUpdate); diff --git a/src/apps/haikudepot/server/ServerReferenceDataUpdateProcess.cpp b/src/apps/haikudepot/server/ServerReferenceDataUpdateProcess.cpp index ce0fa0e051..0930a155bf 100644 --- a/src/apps/haikudepot/server/ServerReferenceDataUpdateProcess.cpp +++ b/src/apps/haikudepot/server/ServerReferenceDataUpdateProcess.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2019, Andrew Lindesay . + * Copyright 2019-2020, Andrew Lindesay . * All rights reserved. Distributed under the terms of the MIT License. */ @@ -66,7 +66,7 @@ ServerReferenceDataUpdateProcess::UrlPathComponent() BString result; AutoLocker locker(fModel->Lock()); result.SetToFormat("/__reference/all-%s.json.gz", - fModel->Language().PreferredLanguage().Code()); + fModel->Language().PreferredLanguage()->Code()); return result; } diff --git a/src/apps/haikudepot/server/ServerRepositoryDataUpdateProcess.cpp b/src/apps/haikudepot/server/ServerRepositoryDataUpdateProcess.cpp index 673e8a4bd8..b4923860a7 100644 --- a/src/apps/haikudepot/server/ServerRepositoryDataUpdateProcess.cpp +++ b/src/apps/haikudepot/server/ServerRepositoryDataUpdateProcess.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2017-2019, Andrew Lindesay . + * Copyright 2017-2020, Andrew Lindesay . * All rights reserved. Distributed under the terms of the MIT License. */ @@ -181,7 +181,7 @@ ServerRepositoryDataUpdateProcess::UrlPathComponent() BString result; AutoLocker locker(fModel->Lock()); result.SetToFormat("/__repository/all-%s.json.gz", - fModel->Language().PreferredLanguage().Code()); + fModel->Language().PreferredLanguage()->Code()); return result; } diff --git a/src/apps/haikudepot/ui/FeaturedPackagesView.cpp b/src/apps/haikudepot/ui/FeaturedPackagesView.cpp index 56bc62276f..f534fa6259 100644 --- a/src/apps/haikudepot/ui/FeaturedPackagesView.cpp +++ b/src/apps/haikudepot/ui/FeaturedPackagesView.cpp @@ -1,6 +1,7 @@ /* * Copyright 2013-214, Stephan Aßmus . * Copyright 2017, Julian Harnath . + * Copyright 2020, Andrew Lindesay . * All rights reserved. Distributed under the terms of the MIT License. */ @@ -123,7 +124,7 @@ public: virtual ~PackageView() { fPackageListener->SetPackage(PackageInfoRef(NULL)); - delete fPackageListener; + fPackageListener->ReleaseReference(); } virtual void AllAttached() diff --git a/src/apps/haikudepot/ui/RatePackageWindow.cpp b/src/apps/haikudepot/ui/RatePackageWindow.cpp index d48ca30b80..a778250639 100644 --- a/src/apps/haikudepot/ui/RatePackageWindow.cpp +++ b/src/apps/haikudepot/ui/RatePackageWindow.cpp @@ -1,6 +1,6 @@ /* * Copyright 2014, Stephan Aßmus . - * Copyright 2016-2019, Andrew Lindesay . + * Copyright 2016-2020, Andrew Lindesay . * All rights reserved. Distributed under the terms of the MIT License. */ @@ -153,8 +153,8 @@ protected: virtual const BBitmap* StarBitmap() { if (fRatingDeterminate) - return fStarBlueBitmap.Bitmap(SharedBitmap::SIZE_16); - return fStarGrayBitmap.Bitmap(SharedBitmap::SIZE_16); + return fStarBlueBitmap->Bitmap(SharedBitmap::SIZE_16); + return fStarGrayBitmap->Bitmap(SharedBitmap::SIZE_16); } private: @@ -246,7 +246,7 @@ RatePackageWindow::RatePackageWindow(BWindow* parent, BRect frame, { AutoLocker locker(fModel.Lock()); - fCommentLanguageCode = fModel.Language().PreferredLanguage().Code(); + fCommentLanguageCode = fModel.Language().PreferredLanguage()->Code(); // Construct languages popup BPopUpMenu* languagesMenu = new BPopUpMenu(B_TRANSLATE("Language")); diff --git a/src/apps/haikudepot/ui/UserLoginWindow.cpp b/src/apps/haikudepot/ui/UserLoginWindow.cpp index 6ea3332db7..c273657314 100644 --- a/src/apps/haikudepot/ui/UserLoginWindow.cpp +++ b/src/apps/haikudepot/ui/UserLoginWindow.cpp @@ -147,7 +147,7 @@ UserLoginWindow::UserLoginWindow(BWindow* parent, BRect frame, Model& model) { AutoLocker locker(fModel.Lock()); - fPreferredLanguageCode = fModel.Language().PreferredLanguage().Code(); + fPreferredLanguageCode = fModel.Language().PreferredLanguage()->Code(); // Construct languages popup BPopUpMenu* languagesMenu = new BPopUpMenu(B_TRANSLATE("Language")); fLanguageCodeField = new BMenuField("language", diff --git a/src/apps/haikudepot/ui_generic/RatingView.cpp b/src/apps/haikudepot/ui_generic/RatingView.cpp index ca0c001b23..5d55a798ef 100644 --- a/src/apps/haikudepot/ui_generic/RatingView.cpp +++ b/src/apps/haikudepot/ui_generic/RatingView.cpp @@ -1,6 +1,6 @@ /* * Copyright 2013-2014, Stephan Aßmus . - * Copyright 2018, Andrew Lindesay . + * Copyright 2018-2020, Andrew Lindesay . * All rights reserved. Distributed under the terms of the MIT License. */ @@ -17,8 +17,8 @@ RatingView::RatingView(const char* name) : BView(name, B_WILL_DRAW), - fStarBlueBitmap(RSRC_STAR_BLUE), - fStarGrayBitmap(RSRC_STAR_GREY), + fStarBlueBitmap(new SharedBitmap(RSRC_STAR_BLUE)), + fStarGrayBitmap(new SharedBitmap(RSRC_STAR_GREY)), fRating(RATING_MISSING) { SetViewUIColor(B_PANEL_BACKGROUND_COLOR); @@ -46,8 +46,8 @@ const BBitmap* RatingView::StarBitmap() { if (fRating < RATING_MIN) - return fStarGrayBitmap.Bitmap(SharedBitmap::SIZE_16); - return fStarBlueBitmap.Bitmap(SharedBitmap::SIZE_16); + return fStarGrayBitmap->Bitmap(SharedBitmap::SIZE_16); + return fStarBlueBitmap->Bitmap(SharedBitmap::SIZE_16); } diff --git a/src/apps/haikudepot/ui_generic/RatingView.h b/src/apps/haikudepot/ui_generic/RatingView.h index 05abe99cda..3d82786d24 100644 --- a/src/apps/haikudepot/ui_generic/RatingView.h +++ b/src/apps/haikudepot/ui_generic/RatingView.h @@ -1,12 +1,13 @@ /* * Copyright 2013-2014, Stephan Aßmus . - * Copyright 2018, Andrew Lindesay . + * Copyright 2018-2020, Andrew Lindesay . * All rights reserved. Distributed under the terms of the MIT License. */ #ifndef RATING_VIEW_H #define RATING_VIEW_H +#include #include #include "SharedBitmap.h" @@ -29,8 +30,10 @@ public: protected: virtual const BBitmap* StarBitmap(); - SharedBitmap fStarBlueBitmap; - SharedBitmap fStarGrayBitmap; + BReference + fStarBlueBitmap; + BReference + fStarGrayBitmap; private: float fRating;