summaryrefslogtreecommitdiffstats
path: root/akregator/src/mk4storage/storagemk4impl.h
blob: 7b3a437832cd882a46c421851601672ffe42cf6d (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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
/*
    This file is part of Akregator.

    Copyright (C) 2005 Stanislav Karchebny <Stanislav.Karchebny@kdemail.net>
                  2005 Frank Osterfeld <frank.osterfeld@kdemail.net>

    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

    As a special exception, permission is given to link this program
    with any edition of Qt, and distribute the resulting executable,
    without including the source code for Qt in the source distribution.
*/

#ifndef STORAGEMK4IMPL_H
#define STORAGEMK4IMPL_H

#include "storage.h"

namespace Akregator {
namespace Backend {

/**
 * Metakit implementation of Storage interface
 */
class StorageMK4Impl : public Storage
{
    Q_OBJECT
    public:

        StorageMK4Impl();     
        StorageMK4Impl(const StorageMK4Impl&);
        StorageMK4Impl &operator =(const StorageMK4Impl&);
        virtual ~StorageMK4Impl();


        /** KGlobal::dirs()->saveLocation("data", "akregator")+"/Archive" */
        static QString defaultArchivePath();
        
        /** sets the directory where the metakit files will be stored.
            
            @param archivePath the path to the archive, or QString::null to reset it to the default.
         */   
        void setArchivePath(const QString& archivePath);

        /** returns the path to the metakit archives */
        QString archivePath() const;

        
        
        virtual void initialize(const QStringList& params);
        /**
         * Open storage and prepare it for work.
         * @return true on success.
         */
        virtual bool open(bool autoCommit = false);

        /**
         * Commit changes made in feeds and articles, making them persistent.
         * @return true on success.
         */
        virtual bool commit();

        /**
         * Rollback changes made in feeds and articles, reverting to last committed values.
         * @returns true on success.
         */
        virtual bool rollback();

        /**
         * Closes storage, freeing all allocated resources. Called from destructor, so you don't need to call it directly.
         * @return true on success.
         */
        virtual bool close();

        /**
         * @return Article archive for feed at given url.
         */
        virtual FeedStorage* archiveFor(const QString &url);
        virtual bool autoCommit() const;
        virtual int unreadFor(const QString &url);
        virtual void setUnreadFor(const QString &url, int unread);
        virtual int totalCountFor(const QString &url);
        virtual void setTotalCountFor(const QString &url, int total);
        virtual int lastFetchFor(const QString& url);
        virtual void setLastFetchFor(const QString& url, int lastFetch);
        
        virtual QStringList feeds() const;
       
        virtual void storeFeedList(const QString& opmlStr);
        virtual QString restoreFeedList() const;

        virtual void storeTagSet(const QString& xmlStr);
        virtual QString restoreTagSet() const; 
  
        /** adds all feed storages from a source to this storage
            existing articles are replaced
        */
        virtual void add(Storage* source);
        
        /** deletes all feed storages in this archive */
        virtual void clear();
        
        virtual bool taggingEnabled() const;
        
        void markDirty();

    protected slots:
        virtual void slotCommit();
        
    private:
        class StorageMK4ImplPrivate;
        StorageMK4ImplPrivate *d;
};

}
}

#endif // STORAGEMK4IMPL_H