michael@0: /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- michael@0: * michael@0: * This Source Code Form is subject to the terms of the Mozilla Public michael@0: * License, v. 2.0. If a copy of the MPL was not distributed with this michael@0: * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ michael@0: michael@0: #ifndef nsFilePicker_h_ michael@0: #define nsFilePicker_h_ michael@0: michael@0: #include "nsBaseFilePicker.h" michael@0: #include "nsString.h" michael@0: #include "nsIFileChannel.h" michael@0: #include "nsIFile.h" michael@0: #include "nsCOMArray.h" michael@0: #include "nsTArray.h" michael@0: michael@0: class nsILocalFileMac; michael@0: @class NSArray; michael@0: michael@0: class nsFilePicker : public nsBaseFilePicker michael@0: { michael@0: public: michael@0: nsFilePicker(); michael@0: virtual ~nsFilePicker(); michael@0: michael@0: NS_DECL_ISUPPORTS michael@0: michael@0: // nsIFilePicker (less what's in nsBaseFilePicker) michael@0: NS_IMETHOD GetDefaultString(nsAString& aDefaultString); michael@0: NS_IMETHOD SetDefaultString(const nsAString& aDefaultString); michael@0: NS_IMETHOD GetDefaultExtension(nsAString& aDefaultExtension); michael@0: NS_IMETHOD GetFilterIndex(int32_t *aFilterIndex); michael@0: NS_IMETHOD SetFilterIndex(int32_t aFilterIndex); michael@0: NS_IMETHOD SetDefaultExtension(const nsAString& aDefaultExtension); michael@0: NS_IMETHOD GetFile(nsIFile * *aFile); michael@0: NS_IMETHOD GetFileURL(nsIURI * *aFileURL); michael@0: NS_IMETHOD GetFiles(nsISimpleEnumerator **aFiles); michael@0: NS_IMETHOD Show(int16_t *_retval); michael@0: NS_IMETHOD AppendFilter(const nsAString& aTitle, const nsAString& aFilter); michael@0: michael@0: /** michael@0: * Returns the current filter list in the format used by Cocoa's NSSavePanel michael@0: * and NSOpenPanel. michael@0: * Returns nil if no filter currently apply. michael@0: */ michael@0: NSArray* GetFilterList(); michael@0: michael@0: protected: michael@0: michael@0: virtual void InitNative(nsIWidget *aParent, const nsAString& aTitle); michael@0: michael@0: // actual implementations of get/put dialogs using NSOpenPanel & NSSavePanel michael@0: // aFile is an existing but unspecified file. These functions must specify it. michael@0: // michael@0: // will return |returnCancel| or |returnOK| as result. michael@0: int16_t GetLocalFiles(const nsString& inTitle, bool inAllowMultiple, nsCOMArray& outFiles); michael@0: int16_t GetLocalFolder(const nsString& inTitle, nsIFile** outFile); michael@0: int16_t PutLocalFile(const nsString& inTitle, const nsString& inDefaultName, nsIFile** outFile); michael@0: michael@0: void SetDialogTitle(const nsString& inTitle, id aDialog); michael@0: NSString *PanelDefaultDirectory(); michael@0: NSView* GetAccessoryView(); michael@0: michael@0: nsString mTitle; michael@0: nsCOMArray mFiles; michael@0: nsString mDefault; michael@0: michael@0: nsTArray mFilters; michael@0: nsTArray mTitles; michael@0: michael@0: int32_t mSelectedTypeIndex; michael@0: }; michael@0: michael@0: #endif // nsFilePicker_h_