summaryrefslogtreecommitdiffstats
path: root/comm/mailnews/db/msgdb/public/nsNewsDatabase.h
blob: 4a804d0d691e8fdfee6086e4186af3a22c633878 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
/* -*- Mode: C++; tab-width: 4; 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 _nsNewsDatabase_H_
#define _nsNewsDatabase_H_

#include "mozilla/Attributes.h"
#include "nsMsgDatabase.h"
#include "nsINewsDatabase.h"
#include "nsTArray.h"
#include "nsIMsgHdr.h"

// news group database

class nsNewsDatabase : public nsMsgDatabase, public nsINewsDatabase {
 public:
  nsNewsDatabase();

  NS_DECL_ISUPPORTS_INHERITED
  NS_DECL_NSINEWSDATABASE

  NS_IMETHOD Close(bool forceCommit) override;
  NS_IMETHOD ForceClosed() override;
  NS_IMETHOD Commit(nsMsgDBCommit commitType) override;
  virtual uint32_t GetCurVersion() override;

  // methods to get and set docsets for ids.
  NS_IMETHOD IsRead(nsMsgKey key, bool* pRead) override;
  virtual nsresult IsHeaderRead(nsIMsgDBHdr* msgHdr, bool* pRead) override;

  NS_IMETHOD GetHighWaterArticleNum(nsMsgKey* key) override;
  NS_IMETHOD GetLowWaterArticleNum(nsMsgKey* key) override;
  NS_IMETHOD MarkAllRead(nsTArray<nsMsgKey>& thoseMarked) override;

  virtual nsresult ExpireUpTo(nsMsgKey expireKey);
  virtual nsresult ExpireRange(nsMsgKey startRange, nsMsgKey endRange);

  virtual bool SetHdrReadFlag(nsIMsgDBHdr* msgHdr, bool bRead) override;

  virtual nsresult AdjustExpungedBytesOnDelete(nsIMsgDBHdr* msgHdr) override;
  nsresult SyncWithReadSet();

  NS_IMETHOD GetDefaultViewFlags(
      nsMsgViewFlagsTypeValue* aDefaultViewFlags) override;
  NS_IMETHOD GetDefaultSortType(
      nsMsgViewSortTypeValue* aDefaultSortType) override;
  NS_IMETHOD GetDefaultSortOrder(
      nsMsgViewSortOrderValue* aDefaultSortOrder) override;

 protected:
  virtual ~nsNewsDatabase();
  // this is owned by the nsNewsFolder, which lives longer than the db.
  nsMsgKeySet* m_readSet;
};

#endif