1/*
2 This file is part of libkabc.
3
4 Copyright (c) 2004 Bo Thorsen <bo@sonofthor.dk>
5
6 This library is free software; you can redistribute it and/or
7 modify it under the terms of the GNU Library General Public
8 License as published by the Free Software Foundation; either
9 version 2 of the License, or (at your option) any later version.
10
11 This library is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU Library General Public License for more details.
15
16 You should have received a copy of the GNU Library General Public License
17 along with this library; see the file COPYING.LIB. If not, write to the
18 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
19 Boston, MA 02110-1301, USA.
20*/
21
22#ifndef RESOURCEABC_H
23#define RESOURCEABC_H
24
25#include "kabc_export.h"
26#include "resource.h"
27#include <QtCore/QMap>
28
29// This is here because it can't go to kdelibs/kabc yet, but ultimately
30// it should probably go there (maybe redesigned to have a real object
31// for subresources).
32
33namespace KABC {
34
35/**
36 * This class is the implementation of subfolder resources for KABC.
37 * More methods will be added to give KAddressBook the possibility to
38 * handle subresources.
39 */
40
41class KABC_DEPRECATED_EXPORT ResourceABC : public Resource
42{
43 Q_OBJECT
44
45 public:
46 ResourceABC();
47 ResourceABC( const KConfigGroup &group );
48 virtual ~ResourceABC();
49
50 /**
51 * Get the UID to subresource map. This is necessary to implement
52 * the search order.
53 * The returned map has the UID as key and the resource it's in as
54 * the data.
55 */
56 virtual QMap<QString, QString> uidToResourceMap() const = 0;
57
58 /**
59 * If this resource has subresources, return a QStringList of them.
60 * In most cases, resources do not have subresources, so this is
61 * by default just empty.
62 */
63 virtual QStringList subresources() const;
64
65 /**
66 * Is the given subresource writable?
67 */
68 virtual bool subresourceWritable( const QString & ) const = 0;
69
70 /**
71 * Is this subresource active or not?
72 */
73 virtual bool subresourceActive( const QString & ) const;
74
75 /**
76 * Completion weight for a given subresource
77 */
78 virtual int subresourceCompletionWeight( const QString &subResource ) const = 0;
79
80 /**
81 * Label for a given subresource
82 */
83 virtual QString subresourceLabel( const QString &subResource ) const = 0;
84
85 public Q_SLOTS:
86 /**
87 * (De-)activate a subresource.
88 */
89 virtual void setSubresourceActive( const QString &subResource, bool active ) = 0;
90
91 /**
92 * Set completion weight for a given subresource
93 */
94 virtual void setSubresourceCompletionWeight( const QString &subResource, int weight ) = 0;
95
96 Q_SIGNALS:
97 /**
98 * This signal is emitted when a subresource is added.
99 */
100 void signalSubresourceAdded( KABC::ResourceABC *, const QString &type,
101 const QString &subResource );
102
103 /**
104 * This signal is emitted when a subresource is removed.
105 */
106 void signalSubresourceRemoved( KABC::ResourceABC *, const QString &type,
107 const QString &subResource );
108
109 /**
110 * This signal is emitted when subresource properties have changed.
111 */
112 void signalSubresourceChanged( KABC::ResourceABC *, const QString &type,
113 const QString &subResource );
114};
115
116}
117
118#endif // RESOURCEABC_H
119