mirror of
https://github.com/ciphervance/supercell-wx.git
synced 2025-11-01 17:00:05 +00:00
Normalize edited URL
This commit is contained in:
parent
c6801722a1
commit
61bfeb88d0
1 changed files with 27 additions and 16 deletions
|
|
@ -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
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue