widget/nsBaseFilePicker.h
author Dorel Luca <dluca@mozilla.com>
Mon, 04 Dec 2017 18:01:09 +0200
changeset 394844 58fec9a96e269a57cc6f84bfe3a6dc6800acd955
parent 374357 6dacffdd0ed1ea53f7e2a56d1f44e2c90b959144
child 399220 3d28ca7c05d8f9ba3ba6ff1cd5449dce42ae95c1
permissions -rw-r--r--
Backed out 7 changesets (bug 1377007) for failing build bustage on Linux pgo and faling Cpp's jsapi-tests r=backout on a CLOSED TREE Backed out changeset 9428a4ed7dec (bug 1377007) Backed out changeset 4407b43a8aff (bug 1377007) Backed out changeset 65a37a7f78a5 (bug 1377007) Backed out changeset 276fe6d9b716 (bug 1377007) Backed out changeset 1de46e60ffba (bug 1377007) Backed out changeset 893e303e17ec (bug 1377007) Backed out changeset 081a241e25d4 (bug 1377007)

/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 *
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */

#ifndef nsBaseFilePicker_h__
#define nsBaseFilePicker_h__

#include "nsISupports.h"
#include "nsIFilePicker.h"
#include "nsISimpleEnumerator.h"
#include "nsArrayEnumerator.h"
#include "nsCOMPtr.h"
#include "nsString.h"

class nsPIDOMWindowOuter;
class nsIWidget;

class nsBaseFilePicker : public nsIFilePicker
{
  class AsyncShowFilePicker;
public:
  nsBaseFilePicker(); 
  virtual ~nsBaseFilePicker();

  NS_IMETHOD Init(mozIDOMWindowProxy* aParent,
                  const nsAString& aTitle,
                  int16_t aMode);

  NS_IMETHOD Open(nsIFilePickerShownCallback *aCallback);
  NS_IMETHOD AppendFilters(int32_t filterMask);
  NS_IMETHOD GetFilterIndex(int32_t *aFilterIndex);
  NS_IMETHOD SetFilterIndex(int32_t aFilterIndex);
  NS_IMETHOD GetFiles(nsISimpleEnumerator **aFiles);
  NS_IMETHOD GetDisplayDirectory(nsIFile * *aDisplayDirectory);
  NS_IMETHOD SetDisplayDirectory(nsIFile * aDisplayDirectory);
  NS_IMETHOD GetDisplaySpecialDirectory(nsAString& aDisplayDirectory);
  NS_IMETHOD SetDisplaySpecialDirectory(const nsAString& aDisplayDirectory);
  NS_IMETHOD GetAddToRecentDocs(bool *aFlag);
  NS_IMETHOD SetAddToRecentDocs(bool aFlag);
  NS_IMETHOD GetMode(int16_t *aMode);
  NS_IMETHOD SetOkButtonLabel(const nsAString& aLabel);
  NS_IMETHOD GetOkButtonLabel(nsAString& aLabel);

  NS_IMETHOD GetDomFileOrDirectory(nsISupports** aValue);
  NS_IMETHOD GetDomFileOrDirectoryEnumerator(nsISimpleEnumerator** aValue);

protected:

  virtual void InitNative(nsIWidget *aParent, const nsAString& aTitle) = 0;
  virtual nsresult Show(int16_t *_retval) = 0;

  bool mAddToRecentDocs;
  nsCOMPtr<nsIFile> mDisplayDirectory;
  nsString mDisplaySpecialDirectory;

  nsCOMPtr<nsPIDOMWindowOuter> mParent;
  int16_t mMode;
  nsString mOkButtonLabel;
};

#endif // nsBaseFilePicker_h__