From Andrew Lindesay <apl@xxxxxxxxxxxxxx>:
Andrew Lindesay has uploaded this change for review. (
https://review.haiku-os.org/c/haiku/+/3549 ;)
Change subject: HaikuDepot: Screenshot List
......................................................................
HaikuDepot: Screenshot List
Remove the use of custom list class related to
screenshots on a package.
Relates To #15534
---
M src/apps/haikudepot/model/PackageInfo.cpp
M src/apps/haikudepot/model/PackageInfo.h
M src/apps/haikudepot/server/WebAppInterface.cpp
M src/apps/haikudepot/server/WebAppInterface.h
M src/apps/haikudepot/ui/PackageInfoView.cpp
M src/apps/haikudepot/ui_generic/SharedBitmap.h
6 files changed, 42 insertions(+), 13 deletions(-)
git pull ssh://git.haiku-os.org:22/haiku refs/changes/49/3549/1
diff --git a/src/apps/haikudepot/model/PackageInfo.cpp
b/src/apps/haikudepot/model/PackageInfo.cpp
index b56c3ec..8846780 100644
--- a/src/apps/haikudepot/model/PackageInfo.cpp
+++ b/src/apps/haikudepot/model/PackageInfo.cpp
@@ -911,25 +911,49 @@
void
PackageInfo::ClearScreenshots()
{
- if (!fScreenshots.IsEmpty()) {
- fScreenshots.Clear();
+ if (!fScreenshots.empty()) {
+ fScreenshots.clear();
_NotifyListeners(PKG_CHANGED_SCREENSHOTS);
}
}
bool
+PackageInfo::_HasScreenshot(const BitmapRef& screenshot)
+{
+ std::vector<BitmapRef>::iterator it = std::find(
+ fScreenshots.begin(), fScreenshots.end(), screenshot);
+ return it != fScreenshots.end();
+}
+
+
+bool
PackageInfo::AddScreenshot(const BitmapRef& screenshot)
{
- if (!fScreenshots.Add(screenshot))
+ if (_HasScreenshot(screenshot))
return false;
+ fScreenshots.push_back(screenshot);
_NotifyListeners(PKG_CHANGED_SCREENSHOTS);
return true;
}
+int32
+PackageInfo::CountScreenshots() const
+{
+ return fScreenshots.size();
+}
+
+
+const BitmapRef
+PackageInfo::ScreenshotAtIndex(int32 index) const
+{
+ return fScreenshots[index];
+}
+
+
void
PackageInfo::SetSize(int64 size)
{
diff --git a/src/apps/haikudepot/model/PackageInfo.h
b/src/apps/haikudepot/model/PackageInfo.h
index 0c10686..df59c11 100644
--- a/src/apps/haikudepot/model/PackageInfo.h
+++ b/src/apps/haikudepot/model/PackageInfo.h
@@ -329,8 +329,8 @@
void ClearScreenshots();
bool AddScreenshot(const
BitmapRef& screenshot);
- const BitmapList& Screenshots() const
- {
return fScreenshots; }
+ int32 CountScreenshots()
const;
+ const BitmapRef ScreenshotAtIndex(int32 index)
const;
void SetSize(int64 size);
int64 Size() const
@@ -353,6 +353,8 @@
void _NotifyListeners(uint32
changes);
void
_NotifyListenersImmediate(uint32 changes);
+ bool _HasScreenshot(const
BitmapRef& screenshot);
+
private:
BString fName;
BString fTitle;
@@ -368,7 +370,8 @@
RatingSummary fCachedRatingSummary;
int64 fProminence;
ScreenshotInfoList fScreenshotInfos;
- BitmapList fScreenshots;
+ std::vector<BitmapRef>
+ fScreenshots;
PackageState fState;
PackageInstallationLocationSet
fInstallationLocations;
diff --git a/src/apps/haikudepot/server/WebAppInterface.cpp
b/src/apps/haikudepot/server/WebAppInterface.cpp
index 62ecf2f..0828437 100644
--- a/src/apps/haikudepot/server/WebAppInterface.cpp
+++ b/src/apps/haikudepot/server/WebAppInterface.cpp
@@ -21,7 +21,6 @@
#include "DataIOUtils.h"
#include "HaikuDepotConstants.h"
-#include "List.h"
#include "Logger.h"
#include "ServerSettings.h"
#include "ServerHelper.h"
diff --git a/src/apps/haikudepot/server/WebAppInterface.h
b/src/apps/haikudepot/server/WebAppInterface.h
index 5692211..d36adcf 100644
--- a/src/apps/haikudepot/server/WebAppInterface.h
+++ b/src/apps/haikudepot/server/WebAppInterface.h
@@ -12,7 +12,6 @@
#include <String.h>
#include <package/PackageVersion.h>
-#include "List.h"
#include "UserCredentials.h"
#include "UserDetail.h"
#include "UserUsageConditions.h"
diff --git a/src/apps/haikudepot/ui/PackageInfoView.cpp
b/src/apps/haikudepot/ui/PackageInfoView.cpp
index 55d8182..925d191 100644
--- a/src/apps/haikudepot/ui/PackageInfoView.cpp
+++ b/src/apps/haikudepot/ui/PackageInfoView.cpp
@@ -823,15 +823,21 @@
fWebsiteIconView->SetBitmap(&fWebsiteIcon, BITMAP_SIZE_16);
_SetContactInfo(fWebsiteLinkView,
package.Publisher().Website());
+ int32 countScreenshots = package.CountScreenshots();
bool hasScreenshot = false;
- const BitmapList& screenShots = package.Screenshots();
- if (screenShots.CountItems() > 0) {
- const BitmapRef& bitmapRef = screenShots.ItemAtFast(0);
+ if (countScreenshots > 0) {
+ const BitmapRef& bitmapRef =
package.ScreenshotAtIndex(0);
if (bitmapRef.Get() != NULL) {
+ HDDEBUG("did find screenshot for package [%s]",
+ package.Name().String());
hasScreenshot = true;
fScreenshotView->SetBitmap(bitmapRef);
}
}
+ else {
+ HDTRACE("did not find screenshots for package [%s]",
+ package.Name().String());
+ }
if (!hasScreenshot)
fScreenshotView->UnsetBitmap();
diff --git a/src/apps/haikudepot/ui_generic/SharedBitmap.h
b/src/apps/haikudepot/ui_generic/SharedBitmap.h
index 52f6c2a..3ed7c4c 100644
--- a/src/apps/haikudepot/ui_generic/SharedBitmap.h
+++ b/src/apps/haikudepot/ui_generic/SharedBitmap.h
@@ -11,7 +11,6 @@
#include <String.h>
#include "HaikuDepotConstants.h"
-#include "List.h"
class BBitmap;
@@ -55,7 +54,6 @@
typedef BReference<SharedBitmap> BitmapRef;
-typedef List<BitmapRef, false> BitmapList;
#endif // SHARED_BITMAP_H
--
To view, visit https://review.haiku-os.org/c/haiku/+/3549
To unsubscribe, or for help writing mail filters, visit
https://review.haiku-os.org/settings
Gerrit-Project: haiku
Gerrit-Branch: master
Gerrit-Change-Id: I8289c25ef0ab5a6715dd9c6c83b6602a25d2f544
Gerrit-Change-Number: 3549
Gerrit-PatchSet: 1
Gerrit-Owner: Andrew Lindesay <apl@xxxxxxxxxxxxxx>
Gerrit-MessageType: newchange