| Index: chrome/browser/sync/notifier/communicator/mailbox.h
|
| ===================================================================
|
| --- chrome/browser/sync/notifier/communicator/mailbox.h (revision 0)
|
| +++ chrome/browser/sync/notifier/communicator/mailbox.h (revision 0)
|
| @@ -0,0 +1,166 @@
|
| +// Copyright (c) 2009 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_SYNC_NOTIFIER_COMMUNICATOR_MAILBOX_H_
|
| +#define CHROME_BROWSER_SYNC_NOTIFIER_COMMUNICATOR_MAILBOX_H_
|
| +
|
| +#include <set>
|
| +#include <string>
|
| +#include <vector>
|
| +
|
| +#include "talk/base/basictypes.h"
|
| +#include "talk/base/linked_ptr.h"
|
| +
|
| +namespace buzz {
|
| +class XmlElement;
|
| +}
|
| +
|
| +namespace notifier {
|
| +// -----------------------------------------------------------------------------
|
| +class MailAddress {
|
| + public:
|
| + MailAddress(const std::string& name, const std::string& address)
|
| + : name_(name),
|
| + address_(address) {
|
| + }
|
| + const std::string& name() const { return name_; }
|
| + const std::string& address() const { return address_; }
|
| + std::string safe_name() const; // will return *something*
|
| + private:
|
| + std::string name_;
|
| + std::string address_;
|
| +};
|
| +
|
| +// -----------------------------------------------------------------------------
|
| +class MailSender : public MailAddress {
|
| + public:
|
| + MailSender(const std::string& name, const std::string& address, bool unread,
|
| + bool originator)
|
| + : MailAddress(name, address),
|
| + unread_(unread),
|
| + originator_(originator) {
|
| + }
|
| +
|
| + MailSender(const MailSender& r)
|
| + : MailAddress(r.name(), r.address()) {
|
| + unread_ = r.unread_;
|
| + originator_ = r.originator_;
|
| + }
|
| +
|
| + bool unread() const { return unread_; }
|
| + bool originator() const { return originator_; }
|
| +
|
| + private:
|
| + bool unread_;
|
| + bool originator_;
|
| +};
|
| +
|
| +typedef std::vector<MailSender> MailSenderList;
|
| +
|
| +// -----------------------------------------------------------------------------
|
| +// MessageThread: everything there is to know about a mail thread.
|
| +class MessageThread {
|
| + public:
|
| + MessageThread(const MessageThread& r) {
|
| + labels_ = NULL;
|
| + senders_ = NULL;
|
| + *this = r;
|
| + }
|
| +
|
| + ~MessageThread();
|
| +
|
| + // Try to parse the XML to create a MessageThreadInfo. If NULL is returned
|
| + // then we either ran out of memory or there was an error in parsing the
|
| + // XML
|
| + static MessageThread* CreateFromXML(const buzz::XmlElement* src);
|
| +
|
| + MessageThread& operator=(const MessageThread& r);
|
| +
|
| + // SameThreadAs : name is self evident
|
| + bool SameThreadAs(const MessageThread& r) {
|
| + AssertValid();
|
| + r.AssertValid();
|
| + return (thread_id_ == r.thread_id_);
|
| + }
|
| +
|
| + // SameAs : true if thread has same id and messages
|
| + // Assumes that messages don't disappear from threads.
|
| + bool SameAs(const MessageThread& r) {
|
| + AssertValid();
|
| + r.AssertValid();
|
| + return SameThreadAs(r) &&
|
| + message_count_ == r.message_count_;
|
| + }
|
| +
|
| + typedef std::set<std::string> StringSet;
|
| +
|
| + int64 thread_id() const { return thread_id_; }
|
| + const StringSet* labels() const { return labels_; }
|
| + int64 date64() const { return date64_; }
|
| + MailSenderList* senders() const { return senders_; }
|
| + int personal_level() const { return personal_level_; }
|
| + int message_count() const { return message_count_; }
|
| + const std::string& subject() const { return subject_; }
|
| + const std::string& snippet() const { return snippet_; }
|
| + bool starred() const;
|
| + bool unread() const;
|
| +
|
| +#ifdef _DEBUG
|
| + void AssertValid() const;
|
| +#else
|
| + inline void AssertValid() const {}
|
| +#endif
|
| +
|
| + private:
|
| + void Clear();
|
| +
|
| + private:
|
| + MessageThread() : senders_(NULL), labels_(NULL) {}
|
| + bool InitFromXml(const buzz::XmlElement* src);
|
| +
|
| + int64 thread_id_;
|
| + int64 date64_;
|
| + int message_count_;
|
| + int personal_level_;
|
| + std::string subject_;
|
| + std::string snippet_;
|
| + MailSenderList* senders_;
|
| + StringSet* labels_;
|
| +};
|
| +
|
| +typedef talk_base::linked_ptr<MessageThread> MessageThreadPointer;
|
| +typedef std::vector<MessageThreadPointer> MessageThreadVector;
|
| +
|
| +// -----------------------------------------------------------------------------
|
| +class MailBox {
|
| + public:
|
| + static MailBox* CreateFromXML(const buzz::XmlElement* src);
|
| +
|
| + const MessageThreadVector& threads() const { return threads_; }
|
| + int mailbox_size() const { return mailbox_size_; }
|
| + int first_index() const { return first_index_; }
|
| + bool estimate() const { return estimate_; }
|
| + int64 result_time() const { return result_time_; }
|
| + int64 highest_thread_id() const { return highest_thread_id_; }
|
| +
|
| + private:
|
| + MailBox() {}
|
| + bool InitFromXml(const buzz::XmlElement* src);
|
| +
|
| + MessageThreadVector threads_;
|
| +
|
| + int mailbox_size_;
|
| + int first_index_;
|
| + bool estimate_;
|
| + int64 result_time_;
|
| + int64 highest_thread_id_;
|
| +};
|
| +
|
| +std::string GetSenderHtml(const MailSenderList& sender_list,
|
| + int message_count,
|
| + const std::string& me_address,
|
| + int space);
|
| +} // namespace notifier
|
| +
|
| +#endif // CHROME_BROWSER_SYNC_NOTIFIER_COMMUNICATOR_MAILBOX_H_
|
|
|
| Property changes on: chrome\browser\sync\notifier\communicator\mailbox.h
|
| ___________________________________________________________________
|
| Added: svn:eol-style
|
| + LF
|
|
|
|
|