[haiku-commits] Change in haiku[master]: HaikuDepot: Screenshot List

  • From: Gerrit <review@xxxxxxxxxxxxxxxxxxx>
  • To: waddlesplash <waddlesplash@xxxxxxxxx>, haiku-commits@xxxxxxxxxxxxx
  • Date: Thu, 24 Dec 2020 10:10:02 +0000

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

Other related posts:

  • » [haiku-commits] Change in haiku[master]: HaikuDepot: Screenshot List - Gerrit