summaryrefslogtreecommitdiffstats
path: root/chrome/browser/chromeos/notifications/system_notification.h
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/chromeos/notifications/system_notification.h')
-rw-r--r--chrome/browser/chromeos/notifications/system_notification.h78
1 files changed, 78 insertions, 0 deletions
diff --git a/chrome/browser/chromeos/notifications/system_notification.h b/chrome/browser/chromeos/notifications/system_notification.h
new file mode 100644
index 0000000..ff1efef
--- /dev/null
+++ b/chrome/browser/chromeos/notifications/system_notification.h
@@ -0,0 +1,78 @@
+// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_CHROMEOS_NOTIFICATIONS_SYSTEM_NOTIFICATION_H_
+#define CHROME_BROWSER_CHROMEOS_NOTIFICATIONS_SYSTEM_NOTIFICATION_H_
+
+#include <string>
+
+#include "base/basictypes.h"
+#include "base/move.h"
+#include "base/ref_counted.h"
+#include "base/string16.h"
+#include "chrome/browser/chromeos/notifications/balloon_collection_impl.h"
+#include "chrome/browser/notifications/notification_delegate.h"
+#include "googleurl/src/gurl.h"
+
+class Profile;
+
+namespace chromeos {
+
+// The system notification object handles the display of a system notification
+
+class SystemNotification {
+ public:
+ // The profile is the current user profile. The id is any string used
+ // to uniquely identify this notification. The title is the title of
+ // the message to be displayed. On creation, the message is hidden.
+ SystemNotification(Profile* profile, std::string id, int icon_resource_id,
+ string16 title);
+
+ ~SystemNotification();
+
+ // Show will show or update the message for this notification
+ // on a transition to urgent, the notification will be shown if it was
+ // previously hidden or minimized by the user.
+ void Show(const string16& message, bool urgent);
+
+ // Hide will dismiss the notification, if the notification is already
+ // hidden it does nothing
+ void Hide();
+
+ // Current visibility state for this notification.
+ bool visible() const { return visible_; }
+
+ // Current urgent state for this notification.
+ bool urgent() const { return urgent_; }
+
+ private:
+ class Delegate : public NotificationDelegate {
+ public:
+ explicit Delegate(std::string id) : id_(base::move(id)) {}
+ void Display() {}
+ void Error() {}
+ void Close(bool by_user) {}
+ std::string id() const { return id_; }
+
+ private:
+ std::string id_;
+
+ DISALLOW_COPY_AND_ASSIGN(Delegate);
+ };
+
+ Profile* profile_;
+ BalloonCollectionImpl* collection_;
+ scoped_refptr<Delegate> delegate_;
+ GURL icon_;
+ string16 title_;
+ bool visible_;
+ bool urgent_;
+
+ DISALLOW_COPY_AND_ASSIGN(SystemNotification);
+};
+
+} // namespace chromeos
+
+#endif // CHROME_BROWSER_CHROMEOS_NOTIFICATIONS_SYSTEM_NOTIFICATION_H_
+