Fix overwrite warnings not working

This commit is contained in:
elasota
2021-03-07 05:07:23 -05:00
parent 3917e1a370
commit 55ec6c516c
5 changed files with 43 additions and 20 deletions

View File

@@ -727,15 +727,24 @@ namespace PortabilityLayer
FileBrowserUIImpl::PopUpAlert(Rect::Create(0, 0, 135, 327), kFileBrowserUIBadNameDialogTemplateID, nullptr);
hit = -1;
}
else if (PortabilityLayer::FileManager::GetInstance()->FileExists(dirID, nameStr))
else
{
DialogTextSubstitutions substitutions(nameStr);
bool fileExists = false;
if (composites)
fileExists = PortabilityLayer::FileManager::GetInstance()->CompositeFileExists(dirID, nameStr);
else
fileExists = PortabilityLayer::FileManager::GetInstance()->NonCompositeFileExists(dirID, nameStr, extension);
PLDrivers::GetSystemServices()->Beep();
int16_t subHit = FileBrowserUIImpl::PopUpAlert(Rect::Create(0, 0, 135, 327), kFileBrowserUIOverwriteDialogTemplateID, &substitutions);
if (fileExists)
{
DialogTextSubstitutions substitutions(nameStr);
if (subHit == kOverwriteNoButton)
hit = -1;
PLDrivers::GetSystemServices()->Beep();
int16_t subHit = FileBrowserUIImpl::PopUpAlert(Rect::Create(0, 0, 135, 327), kFileBrowserUIOverwriteDialogTemplateID, &substitutions);
if (subHit == kOverwriteNoButton)
hit = -1;
}
}
}

View File

@@ -35,7 +35,8 @@ namespace PortabilityLayer
CompositeFile *OpenCompositeFile(VirtualDirectory_t dirID, const PLPasStr &filename) override;
PLError_t OpenNonCompositeFile(VirtualDirectory_t dirID, const PLPasStr &filename, const char *extension, EFilePermission filePermission, GpFileCreationDisposition_t creationDisposition, GpIOStream *&outStream) override;
bool FileExists(VirtualDirectory_t dirID, const PLPasStr &filename) override;
bool CompositeFileExists(VirtualDirectory_t dirID, const PLPasStr &filename) override;
bool NonCompositeFileExists(VirtualDirectory_t dirID, const PLPasStr &filename, const char *extension) override;
bool DeleteNonCompositeFile(VirtualDirectory_t dirID, const PLPasStr &filename, const char *ext) override;
bool DeleteCompositeFile(VirtualDirectory_t dirID, const PLPasStr &filename) override;
@@ -65,6 +66,8 @@ namespace PortabilityLayer
PLError_t OpenResources(GpIOStream *&outStream, ZipFileProxy *&outProxy, bool &outIsProxyShared) override;
const MacFileProperties &GetProperties() const override;
VirtualDirectory_t GetDirectory() const override;
PLPasStr GetFileName() const override;
bool IsDataReadOnly() const override;
void Close() override;
@@ -168,15 +171,20 @@ namespace PortabilityLayer
return RawOpenFileFork(dirID, filename, extension, filePermission, true, creationDisposition, outStream);
}
bool FileManagerImpl::FileExists(VirtualDirectory_t dirID, const PLPasStr &filename)
bool FileManagerImpl::NonCompositeFileExists(VirtualDirectory_t dirID, const PLPasStr &filename, const char *extension)
{
ExtendedFileName_t extFN;
if (!FileManagerTools::ConstructFilename(extFN, filename, ".gpf"))
if (!FileManagerTools::ConstructFilename(extFN, filename, extension))
return false;
return PLDrivers::GetFileSystem()->FileExists(dirID, extFN);
}
bool FileManagerImpl::CompositeFileExists(VirtualDirectory_t dirID, const PLPasStr &filename)
{
return NonCompositeFileExists(dirID, filename, ".gpf");
}
bool FileManagerImpl::DeleteNonCompositeFile(VirtualDirectory_t dirID, const PLPasStr &filename, const char *ext)
{
ExtendedFileName_t extFN;
@@ -371,6 +379,8 @@ namespace PortabilityLayer
if (fnameSize >= 64)
return false;
assert(strlen(extension) <= 4);
memcpy(extFN, fn.Chars(), fnameSize);
memcpy(extFN + fnameSize, extension, strlen(extension) + 1);
@@ -437,6 +447,16 @@ namespace PortabilityLayer
return m_mfp;
}
VirtualDirectory_t CompositeFileImpl::GetDirectory() const
{
return m_dirID;
}
PLPasStr CompositeFileImpl::GetFileName() const
{
return m_filename.ToShortStr();
}
bool CompositeFileImpl::IsDataReadOnly() const
{
if (m_dataInline)

View File

@@ -26,6 +26,8 @@ namespace PortabilityLayer
virtual PLError_t OpenResources(GpIOStream *&outStream, ZipFileProxy *&outProxy, bool &outIsProxyShared) = 0;
virtual const MacFileProperties &GetProperties() const = 0;
virtual VirtualDirectory_t GetDirectory() const = 0;
virtual PLPasStr GetFileName() const = 0;
virtual bool IsDataReadOnly() const = 0;
virtual void Close() = 0;
@@ -41,7 +43,8 @@ namespace PortabilityLayer
virtual CompositeFile *OpenCompositeFile(VirtualDirectory_t dirID, const PLPasStr &filename) = 0;
virtual PLError_t OpenNonCompositeFile(VirtualDirectory_t dirID, const PLPasStr &filename, const char *extension, EFilePermission filePermission, GpFileCreationDisposition_t creationDisposition, GpIOStream *&outStream) = 0;
virtual bool FileExists(VirtualDirectory_t dirID, const PLPasStr &filename) = 0;
virtual bool CompositeFileExists(VirtualDirectory_t dirID, const PLPasStr &filename) = 0;
virtual bool NonCompositeFileExists(VirtualDirectory_t dirID, const PLPasStr &filename, const char *extension) = 0;
virtual bool DeleteNonCompositeFile(VirtualDirectory_t dirID, const PLPasStr &filename, const char *ext) = 0;
virtual bool DeleteCompositeFile(VirtualDirectory_t dirID, const PLPasStr &filename) = 0;