Normalize edited URL

This commit is contained in:
Dan Paulat 2023-07-25 23:26:52 -05:00
parent c6801722a1
commit 61bfeb88d0

View file

@ -53,6 +53,8 @@ public:
explicit Impl(PlacefileManager* self) : self_ {self} {} explicit Impl(PlacefileManager* self) : self_ {self} {}
~Impl() {} ~Impl() {}
static std::string NormalizeUrl(const std::string& urlString);
boost::asio::thread_pool threadPool_ {1u}; boost::asio::thread_pool threadPool_ {1u};
PlacefileManager* self_; PlacefileManager* self_;
@ -138,22 +140,24 @@ void PlacefileManager::set_placefile_thresholded(const std::string& name,
void PlacefileManager::set_placefile_url(const std::string& name, void PlacefileManager::set_placefile_url(const std::string& name,
const std::string& newUrl) const std::string& newUrl)
{ {
std::string normalizedUrl = Impl::NormalizeUrl(newUrl);
std::unique_lock lock(p->placefileRecordLock_); std::unique_lock lock(p->placefileRecordLock_);
auto it = p->placefileRecordMap_.find(name); auto it = p->placefileRecordMap_.find(name);
auto itNew = p->placefileRecordMap_.find(newUrl); auto itNew = p->placefileRecordMap_.find(normalizedUrl);
if (it != p->placefileRecordMap_.cend() && if (it != p->placefileRecordMap_.cend() &&
itNew == p->placefileRecordMap_.cend()) itNew == p->placefileRecordMap_.cend())
{ {
auto placefileRecord = it->second; auto placefileRecord = it->second;
placefileRecord->name_ = newUrl; placefileRecord->name_ = normalizedUrl;
placefileRecord->placefile_ = nullptr; placefileRecord->placefile_ = nullptr;
p->placefileRecordMap_.erase(it); p->placefileRecordMap_.erase(it);
p->placefileRecordMap_.emplace(newUrl, placefileRecord); p->placefileRecordMap_.emplace(normalizedUrl, placefileRecord);
lock.unlock(); lock.unlock();
Q_EMIT PlacefileRenamed(name, newUrl); Q_EMIT PlacefileRenamed(name, normalizedUrl);
} }
} }
@ -177,18 +181,7 @@ PlacefileManager::GetActivePlacefiles()
void PlacefileManager::AddUrl(const std::string& urlString) void PlacefileManager::AddUrl(const std::string& urlString)
{ {
std::string normalizedUrl; std::string normalizedUrl = Impl::NormalizeUrl(urlString);
// Normalize URL string
QUrl url = QUrl::fromUserInput(QString::fromStdString(urlString));
if (url.isLocalFile())
{
normalizedUrl = QDir::toNativeSeparators(url.toLocalFile()).toStdString();
}
else
{
normalizedUrl = urlString;
}
std::unique_lock lock(p->placefileRecordLock_); std::unique_lock lock(p->placefileRecordLock_);
@ -291,6 +284,24 @@ std::shared_ptr<PlacefileManager> PlacefileManager::Instance()
return placefileManager; return placefileManager;
} }
std::string PlacefileManager::Impl::NormalizeUrl(const std::string& urlString)
{
std::string normalizedUrl;
// Normalize URL string
QUrl url = QUrl::fromUserInput(QString::fromStdString(urlString));
if (url.isLocalFile())
{
normalizedUrl = QDir::toNativeSeparators(url.toLocalFile()).toStdString();
}
else
{
normalizedUrl = urlString;
}
return normalizedUrl;
}
} // namespace manager } // namespace manager
} // namespace qt } // namespace qt
} // namespace scwx } // namespace scwx