From db38deab4bde3bc1d5a4832e381e7d6299ac4a5d Mon Sep 17 00:00:00 2001 From: "mcmullen%netscape.com" Date: Sat, 15 May 1999 22:54:17 +0000 Subject: [PATCH] Fixed file widget to use filespec, instead of string. Made input params const. --- widget/src/windows/nsFileWidget.cpp | 35 ++++++++-------------------- widget/src/windows/nsFileWidget.h | 17 +++++++------- widget/tests/widget/nsWidgetTest.cpp | 5 ++-- 3 files changed, 20 insertions(+), 37 deletions(-) diff --git a/widget/src/windows/nsFileWidget.cpp b/widget/src/windows/nsFileWidget.cpp index 34cf5eca570..baf38166a14 100644 --- a/widget/src/windows/nsFileWidget.cpp +++ b/widget/src/windows/nsFileWidget.cpp @@ -98,8 +98,8 @@ PRBool nsFileWidget::Show() GetFilterListArray(filterList); char *filterBuffer = filterList.ToNewCString(); char *title = mTitle.ToNewCString(); - char *initialDir = mDisplayDirectory.ToNewCString(); - if (mDisplayDirectory.Length() > 0) { + const char *initialDir = mDisplayDirectory.GetNativePathCString(); + if (initialDir && *initialDir) { ofn.lpstrInitialDir = initialDir; } @@ -129,14 +129,12 @@ PRBool nsFileWidget::Show() // Store the current directory in mDisplayDirectory char* newCurrentDirectory = new char[MAX_PATH+1]; VERIFY(::GetCurrentDirectory(MAX_PATH, newCurrentDirectory) > 0); - mDisplayDirectory.SetLength(0); - mDisplayDirectory.Append(newCurrentDirectory); + mDisplayDirectory = newCurrentDirectory; delete[] newCurrentDirectory; // Clean up filter buffers delete[] filterBuffer; delete[] title; - delete[] initialDir; // Set user-selected location of file or directory mFile.SetLength(0); @@ -182,19 +180,6 @@ NS_IMETHODIMP nsFileWidget::SetFilterList(PRUint32 aNumberOfFilters,const nsStri return NS_OK; } -//------------------------------------------------------------------------- -// -// Get the file + path -// -//------------------------------------------------------------------------- - -NS_IMETHODIMP nsFileWidget::GetFile(nsString& aFile) -{ - aFile.SetLength(0); - aFile.Append(mFile); - return NS_OK; -} - //------------------------------------------------------------------------- // //------------------------------------------------------------------------- @@ -214,7 +199,7 @@ NS_METHOD nsFileWidget::GetFile(nsFileSpec& aFile) // Get the file + path // //------------------------------------------------------------------------- -NS_IMETHODIMP nsFileWidget::SetDefaultString(nsString& aString) +NS_IMETHODIMP nsFileWidget::SetDefaultString(const nsString& aString) { mDefault = aString; return NS_OK; @@ -226,7 +211,7 @@ NS_IMETHODIMP nsFileWidget::SetDefaultString(nsString& aString) // Set the display directory // //------------------------------------------------------------------------- -NS_IMETHODIMP nsFileWidget::SetDisplayDirectory(nsString& aDirectory) +NS_IMETHODIMP nsFileWidget::SetDisplayDirectory(const nsFileSpec& aDirectory) { mDisplayDirectory = aDirectory; return NS_OK; @@ -238,7 +223,7 @@ NS_IMETHODIMP nsFileWidget::SetDisplayDirectory(nsString& aDirectory) // Get the display directory // //------------------------------------------------------------------------- -NS_IMETHODIMP nsFileWidget::GetDisplayDirectory(nsString& aDirectory) +NS_IMETHODIMP nsFileWidget::GetDisplayDirectory(nsFileSpec& aDirectory) { aDirectory = mDisplayDirectory; return NS_OK; @@ -247,7 +232,7 @@ NS_IMETHODIMP nsFileWidget::GetDisplayDirectory(nsString& aDirectory) //------------------------------------------------------------------------- NS_IMETHODIMP nsFileWidget::Create(nsIWidget *aParent, - nsString& aTitle, + const nsString& aTitle, nsFileDlgMode aMode, nsIDeviceContext *aContext, nsIAppShell *aAppShell, @@ -263,7 +248,7 @@ NS_IMETHODIMP nsFileWidget::Create(nsIWidget *aParent, //------------------------------------------------------------------------- nsFileDlgResults nsFileWidget::GetFile(nsIWidget * aParent, - nsString & promptString, + const nsString & promptString, nsFileSpec & theFileSpec) { Create(aParent, promptString, eMode_load, nsnull, nsnull); @@ -280,7 +265,7 @@ nsFileDlgResults nsFileWidget::GetFile(nsIWidget * aParent, //------------------------------------------------------------------------- nsFileDlgResults nsFileWidget::GetFolder(nsIWidget * aParent, - nsString & promptString, + const nsString & promptString, nsFileSpec & theFileSpec) { Create(aParent, promptString, eMode_load, nsnull, nsnull); @@ -318,7 +303,7 @@ nsFileDlgResults nsFileWidget::GetFolder(nsIWidget * aParent, //------------------------------------------------------------------------- nsFileDlgResults nsFileWidget::PutFile(nsIWidget * aParent, - nsString & promptString, + const nsString & promptString, nsFileSpec & theFileSpec) { Create(aParent, promptString, eMode_load, nsnull, nsnull); diff --git a/widget/src/windows/nsFileWidget.h b/widget/src/windows/nsFileWidget.h index 8b1c3a450ec..782c38cbd4f 100644 --- a/widget/src/windows/nsFileWidget.h +++ b/widget/src/windows/nsFileWidget.h @@ -40,7 +40,7 @@ class nsFileWidget : public nsIFileWidget // nsIWidget interface NS_IMETHOD Create( nsIWidget *aParent, - nsString& aTitle, + const nsString& aTitle, nsFileDlgMode aMode, nsIDeviceContext *aContext = nsnull, nsIAppShell *aAppShell = nsnull, @@ -49,26 +49,25 @@ class nsFileWidget : public nsIFileWidget // nsIFileWidget part virtual PRBool Show(); - NS_IMETHOD GetFile(nsString& aFile); NS_IMETHOD GetFile(nsFileSpec& aFile); - NS_IMETHOD SetDefaultString(nsString& aFile); + NS_IMETHOD SetDefaultString(const nsString& aFile); NS_IMETHOD SetFilterList(PRUint32 aNumberOfFilters,const nsString aTitles[],const nsString aFilters[]); - NS_IMETHOD GetDisplayDirectory(nsString& aDirectory); - NS_IMETHOD SetDisplayDirectory(nsString& aDirectory); + NS_IMETHOD GetDisplayDirectory(nsFileSpec& aDirectory); + NS_IMETHOD SetDisplayDirectory(const nsFileSpec& aDirectory); virtual nsFileDlgResults GetFile( nsIWidget * aParent, - nsString & promptString, // Window title for the dialog + const nsString & promptString, // Window title for the dialog nsFileSpec & theFileSpec); // Populate with initial path for file dialog virtual nsFileDlgResults GetFolder( nsIWidget * aParent, - nsString & promptString, // Window title for the dialog + const nsString & promptString, // Window title for the dialog nsFileSpec & theFileSpec); // Populate with initial path for file dialog virtual nsFileDlgResults PutFile( nsIWidget * aParent, - nsString & promptString, // Window title for the dialog + const nsString & promptString, // Window title for the dialog nsFileSpec & theFileSpec); // Populate with initial path for file dialog protected: @@ -81,7 +80,7 @@ class nsFileWidget : public nsIFileWidget const nsString* mTitles; const nsString* mFilters; nsString mDefault; - nsString mDisplayDirectory; + nsFileSpec mDisplayDirectory; void GetFilterListArray(nsString& aFilterList); diff --git a/widget/tests/widget/nsWidgetTest.cpp b/widget/tests/widget/nsWidgetTest.cpp index 6ce0341b494..2404b77f82c 100644 --- a/widget/tests/widget/nsWidgetTest.cpp +++ b/widget/tests/widget/nsWidgetTest.cpp @@ -1042,12 +1042,11 @@ nsEventStatus PR_CALLBACK HandleFileButtonEvent(nsGUIEvent *aEvent) PRUint32 result = fileWidget->Show(); if (result) { - nsString file; + nsFileSpec file; fileWidget->GetFile(file); - char* filestr = file.ToNewCString(); + const char* filestr = file.GetNativePathCString(); printf("file widget contents %s\n", filestr); statusText->SetText(filestr,actualSize); - delete[] filestr; } else statusText->SetText("Cancel selected",actualSize);