Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 0 additions & 2 deletions src/RA_Integration.vcxproj
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,6 @@
<ClCompile Include="data\context\SessionTracker.cpp" />
<ClCompile Include="data\models\AchievementModel.cpp" />
<ClCompile Include="data\models\LeaderboardModel.cpp" />
<ClCompile Include="data\models\LocalBadgesModel.cpp" />
<ClCompile Include="data\models\RichPresenceModel.cpp" />
<ClCompile Include="data\models\TriggerValidation.cpp" />
<ClCompile Include="pch.cpp">
Expand Down Expand Up @@ -217,7 +216,6 @@
<ClInclude Include="data\context\SessionTracker.hh" />
<ClInclude Include="data\models\AchievementModel.hh" />
<ClInclude Include="data\models\LeaderboardModel.hh" />
<ClInclude Include="data\models\LocalBadgesModel.hh" />
<ClInclude Include="data\models\RichPresenceModel.hh" />
<ClInclude Include="data\models\TriggerValidation.hh" />
<ClInclude Include="data\Types.hh" />
Expand Down
18 changes: 6 additions & 12 deletions src/RA_Integration.vcxproj.filters
Original file line number Diff line number Diff line change
Expand Up @@ -330,9 +330,6 @@
<ClCompile Include="ui\win32\ProgressDialog.cpp">
<Filter>UI\Win32</Filter>
</ClCompile>
<ClCompile Include="data\models\LocalBadgesModel.cpp">
<Filter>Data\Models</Filter>
</ClCompile>
<ClCompile Include="ui\viewmodels\ChallengeIndicatorViewModel.cpp">
<Filter>UI\ViewModels</Filter>
</ClCompile>
Expand All @@ -351,9 +348,6 @@
<ClCompile Include="ui\viewmodels\NewAssetViewModel.cpp">
<Filter>UI\ViewModels</Filter>
</ClCompile>
<ClCompile Include="data\models\RichPresenceModel.cpp">
<Filter>Data\Models</Filter>
</ClCompile>
<ClCompile Include="ui\viewmodels\EmulatorViewModel.cpp">
<Filter>UI\ViewModels</Filter>
</ClCompile>
Expand Down Expand Up @@ -402,6 +396,9 @@
<ClCompile Include="services\impl\WindowsDebuggerDetector.cpp">
<Filter>Services\Impl</Filter>
</ClCompile>
<ClCompile Include="data\models\RichPresenceModel.cpp">
<Filter>Data\Models</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="RA_Resource.h">
Expand Down Expand Up @@ -827,9 +824,6 @@
<ClInclude Include="ui\win32\ProgressDialog.hh">
<Filter>UI\Win32</Filter>
</ClInclude>
<ClInclude Include="data\models\LocalBadgesModel.hh">
<Filter>Data\Models</Filter>
</ClInclude>
<ClInclude Include="ui\win32\bindings\NumericUpDownBinding.hh">
<Filter>UI\Win32\Bindings</Filter>
</ClInclude>
Expand All @@ -854,9 +848,6 @@
<ClInclude Include="api\UpdateLeaderboard.hh">
<Filter>API</Filter>
</ClInclude>
<ClInclude Include="data\models\RichPresenceModel.hh">
<Filter>Data\Models</Filter>
</ClInclude>
<ClInclude Include="ui\viewmodels\PointerFinderViewModel.hh">
<Filter>UI\ViewModels</Filter>
</ClInclude>
Expand Down Expand Up @@ -983,6 +974,9 @@
<ClInclude Include="services\impl\WindowsDebuggerDetector.hh">
<Filter>Services\Impl</Filter>
</ClInclude>
<ClInclude Include="data\models\RichPresenceModel.hh">
<Filter>Data\Models</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="RA_Shared.rc">
Expand Down
1 change: 1 addition & 0 deletions src/data/context/SessionTracker.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
#include "services\IFileSystem.hh"
#include "services\ILocalStorage.hh"
#include "services\IThreadPool.hh"
#include "services\ServiceLocator.hh"

#include "ui\viewmodels\WindowManager.hh"

Expand Down
5 changes: 5 additions & 0 deletions src/devkit/RADevKit.vcxproj
Original file line number Diff line number Diff line change
Expand Up @@ -69,11 +69,13 @@
<ClCompile Include="data\ModelProperty.cpp" />
<ClCompile Include="data\ModelPropertyContainer.cpp" />
<ClCompile Include="data\models\AssetModelBase.cpp" />
<ClCompile Include="data\models\LocalBadgesModel.cpp" />
<ClCompile Include="data\models\MemoryNoteModel.cpp" />
<ClCompile Include="data\models\MemoryNotesModel.cpp" />
<ClCompile Include="data\models\MemoryRegionsModel.cpp" />
<ClCompile Include="data\Value.cpp" />
<ClCompile Include="services\Http.cpp" />
<ClCompile Include="ui\ImageReference.cpp" />
<ClCompile Include="util\GSL.cpp" />
<ClCompile Include="util\StringBuilder.cpp" />
<ClCompile Include="util\Strings.cpp" />
Expand All @@ -96,6 +98,7 @@
<ClInclude Include="data\ModelProperty.hh" />
<ClInclude Include="data\ModelPropertyContainer.hh" />
<ClInclude Include="data\models\AssetModelBase.hh" />
<ClInclude Include="data\models\LocalBadgesModel.hh" />
<ClInclude Include="data\models\MemoryNoteModel.hh" />
<ClInclude Include="data\models\MemoryNotesModel.hh" />
<ClInclude Include="data\models\MemoryRegionsModel.hh" />
Expand All @@ -118,6 +121,8 @@
<ClInclude Include="services\ServiceLocator.hh" />
<ClInclude Include="services\TextReader.hh" />
<ClInclude Include="services\TextWriter.hh" />
<ClInclude Include="ui\IImageRepository.hh" />
<ClInclude Include="ui\ImageReference.hh" />
<ClInclude Include="util\Compat.hh" />
<ClInclude Include="util\EnumOps.hh" />
<ClInclude Include="util\GSL.hh" />
Expand Down
29 changes: 24 additions & 5 deletions src/devkit/RADevKit.vcxproj.filters
Original file line number Diff line number Diff line change
Expand Up @@ -165,9 +165,20 @@
<ClInclude Include="data\models\MemoryRegionsModel.hh">
<Filter>data\models</Filter>
</ClInclude>
<ClInclude Include="services\ILocalStorage.hh" />
<ClInclude Include="data\models\MemoryNotesModel.hh" />
<ClInclude Include="data\Value.hh" />
<ClInclude Include="services\ILocalStorage.hh">
<Filter>services</Filter>
</ClInclude>
<ClInclude Include="data\Value.hh">
<Filter>data</Filter>
</ClInclude>
<ClInclude Include="data\models\LocalBadgesModel.hh">
<Filter>data\models</Filter>
</ClInclude>
<ClInclude Include="data\models\MemoryNotesModel.hh">
<Filter>data\models</Filter>
</ClInclude>
<ClInclude Include="ui\IImageRepository.hh" />
<ClInclude Include="ui\ImageReference.hh" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="util\GSL.cpp">
Expand Down Expand Up @@ -227,7 +238,15 @@
<ClCompile Include="data\models\MemoryRegionsModel.cpp">
<Filter>data\models</Filter>
</ClCompile>
<ClCompile Include="data\models\MemoryNotesModel.cpp" />
<ClCompile Include="data\Value.cpp" />
<ClCompile Include="data\Value.cpp">
<Filter>data</Filter>
</ClCompile>
<ClCompile Include="data\models\LocalBadgesModel.cpp">
<Filter>data\models</Filter>
</ClCompile>
<ClCompile Include="data\models\MemoryNotesModel.cpp">
<Filter>data\models</Filter>
</ClCompile>
<ClCompile Include="ui\ImageReference.cpp" />
</ItemGroup>
</Project>
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
#include "LocalBadgesModel.hh"

#include "services\IFileSystem.hh"
#include "services\ServiceLocator.hh"
#include "services/IFileSystem.hh"
#include "services/ServiceLocator.hh"

#include "ui\ImageReference.hh"
#include "ui/IImageRepository.hh"

#include "util\Strings.hh"
#include "util/Strings.hh"

namespace ra {
namespace data {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#ifndef RA_DATA_LOCAL_BADGES_MODEL_H
#define RA_DATA_LOCAL_BADGES_MODEL_H
#ifndef RA_DATA_MODELS_LOCALBADGESMODEL_H
#define RA_DATA_MODELS_LOCALBADGESMODEL_H
#pragma once

#include "data/models/AssetModelBase.hh"
Expand All @@ -19,19 +19,41 @@ public:
LocalBadgesModel& operator=(LocalBadgesModel&&) noexcept = delete;

bool IsShownInList() const noexcept override { return false; }
void Serialize(ra::services::TextWriter&) const noexcept override {}
bool Deserialize(ra::util::Tokenizer&) noexcept override { return true; }

/// <summary>
/// Adds a reference to a local badge.
/// </summary>
/// <param name="sBadgeName">The name of the local badge.</param>
/// <param name="bCommitted"><c>true</c> if the reference has been committed.</param>
/// <remarks>An uncommitted reference may be deleted at exit.</remarks>
void AddReference(const std::wstring& sBadgeName, bool bCommitted);
void RemoveReference(const std::wstring& sBadgeName, bool bCommitted);

void Commit(const std::wstring& sPreviousBadgeName, const std::wstring& sNewBadgeName);
bool NeedsSerialized() const noexcept { return false; }

void Serialize(ra::services::TextWriter&) const noexcept override {}
bool Deserialize(ra::util::Tokenizer&) noexcept override { return true; }
/// <summary>
/// Adds a reference to a local badge.
/// </summary>
/// <param name="sBadgeName">The name of the local badge.</param>
/// <param name="bCommitted"><c>true</c> if the reference has been committed.</param>
void RemoveReference(const std::wstring& sBadgeName, bool bCommitted);

/// <summary>
/// Gets the number of references to a local badge.
/// </summary>
/// <param name="sBadgeName">The name of the local badge.</param>
/// <param name="bCommitted"><c>true</c> to look for committed references.</param>
int GetReferenceCount(const std::wstring& sBadgeName, bool bCommitted) const;

/// <summary>
/// Deletes any badges not associated to committed assets.
/// </summary>
void DeleteUncommittedBadges();

/// <summary>
/// Converts an uncommitted badge name to a committed badge name.
/// </summary>
void Commit(const std::wstring& sPreviousBadgeName, const std::wstring& sNewBadgeName);

private:
struct BadgeReferenceCount
{
Expand All @@ -46,4 +68,4 @@ private:
} // namespace data
} // namespace ra

#endif RA_DATA_LOCAL_BADGES_MODEL_H
#endif RA_DATA_MODELS_LOCALBADGESMODEL_H
84 changes: 3 additions & 81 deletions src/ui/ImageReference.hh → src/devkit/ui/IImageRepository.hh
Original file line number Diff line number Diff line change
Expand Up @@ -2,27 +2,12 @@
#define RA_UI_IMAGEREPOSITORY_H
#pragma once

#include "data\NotifyTargetSet.hh"
#include "services\ServiceLocator.hh"
#include "ImageReference.hh"

#include "data/NotifyTargetSet.hh"

namespace ra {
namespace ui {
namespace drawing::gdi {

class ImageRepository;

} // namespace drawing::gdi

enum class ImageType
{
None,
Badge,
UserPic,
Local,
Icon,
};

class ImageReference;

class IImageRepository
{
Expand Down Expand Up @@ -113,69 +98,6 @@ private:
ra::data::NotifyTargetSet<NotifyTarget> m_vNotifyTargets;
};

class ImageReference
{
public:
ImageReference() noexcept = default;
~ImageReference() noexcept
{
if (ra::services::ServiceLocator::Exists<IImageRepository>())
Release();
}

explicit ImageReference(ImageType nType, const std::string& sName) : m_nType(nType), m_sName(sName) {}

ImageReference(const ImageReference& source) = default;
ImageReference& operator=(const ImageReference&) noexcept = delete;
ImageReference(ImageReference&& source) noexcept = default;
ImageReference& operator=(ImageReference&& source) noexcept = delete;

/// <summary>
/// Get the image type.
/// </summary>
inline constexpr ImageType Type() const noexcept { return m_nType; }

/// <summary>
/// Get the image name.
/// </summary>
const std::string& Name() const noexcept { return m_sName; }

/// <summary>
/// Updates the referenced image.
/// </summary>
/// <param name="nType">Type of the image.</param>
/// <param name="sName">Name of the image.</param>
void ChangeReference(ImageType nType, const std::string& sName)
{
if (nType != m_nType || sName != m_sName)
{
Release();

m_nType = nType;
m_sName = sName;
}
}

/// <summary>
/// Releases this reference image.
/// </summary>
GSL_SUPPRESS_F6 void Release() noexcept
{
if (m_nType != ImageType::None)
{
// Suppress not working inline, but should
GSL_SUPPRESS_F6 auto& pRepository = ra::services::ServiceLocator::GetMutable<IImageRepository>();
pRepository.ReleaseReference(*this);
}
}

private:
ImageType m_nType{};
std::string m_sName;
mutable unsigned long long m_nData{};
friend class drawing::gdi::ImageRepository;
};

} // namespace ui
} // namespace ra

Expand Down
26 changes: 26 additions & 0 deletions src/devkit/ui/ImageReference.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
#include "ImageReference.hh"
#include "IImageRepository.hh"

#include "services/ServiceLocator.hh"

namespace ra {
namespace ui {

ImageReference::~ImageReference() noexcept
{
if (ra::services::ServiceLocator::Exists<IImageRepository>())
Release();
}

GSL_SUPPRESS_F6
void ImageReference::Release() noexcept
{
if (m_nType != ImageType::None)
{
auto& pRepository = ra::services::ServiceLocator::GetMutable<IImageRepository>();
pRepository.ReleaseReference(*this);
}
}

} // namespace ui
} // namespace ra
Loading
Loading