widget/cocoa/OSXNotificationCenter.h
author Justin Dolske <dolske@mozilla.com>
Wed, 13 May 2015 20:44:52 -0700
changeset 260488 89ef57a1733a31097d3f10c15f1989c3b761edbd
parent 214432 5f27f634ed58d0bfaaf863abee6c3add849f8254
child 299605 9898e4c1387675ceff6e5c514b2b37dc782ae94a
permissions -rw-r--r--
Bug 1164253 - Save request is sent twice for every button press. r=jaws a=dolske

/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/* 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 OSXNotificationCenter_h
#define OSXNotificationCenter_h

#import <Foundation/Foundation.h>
#include "nsIAlertsService.h"
#include "imgINotificationObserver.h"
#include "nsITimer.h"
#include "nsTArray.h"
#include "mozilla/RefPtr.h"

@class mozNotificationCenterDelegate;

namespace mozilla {

class OSXNotificationInfo;

class OSXNotificationCenter : public nsIAlertsService,
                              public imgINotificationObserver,
                              public nsITimerCallback
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIALERTSSERVICE
  NS_DECL_IMGINOTIFICATIONOBSERVER
  NS_DECL_NSITIMERCALLBACK

  OSXNotificationCenter();

  nsresult Init();
  void CloseAlertCocoaString(NSString *aAlertName);
  void OnClick(NSString *aAlertName);
  void ShowPendingNotification(OSXNotificationInfo *osxni);

protected:
  virtual ~OSXNotificationCenter();

private:
  mozNotificationCenterDelegate *mDelegate;
  nsTArray<nsRefPtr<OSXNotificationInfo> > mActiveAlerts;
  nsTArray<nsRefPtr<OSXNotificationInfo> > mPendingAlerts;
};

} // namespace mozilla

#endif // OSXNotificationCenter_h