blob: d87e05055bf43325ae784c71bdceb6949d376966 (
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
|
/* $Id$ */
#ifndef _QUERY_SERVICE
#define _QUERY_SERVICE
/***************************************************************************
query.h - A query interface to select RSS feeds.
-------------------
begin : Saturday 15 February 2003
copyright : (C) 2003 by Ian Reinhart Geiser
email : geiseri@kde.org
***************************************************************************/
/***************************************************************************
* *
* 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. *
* *
***************************************************************************/
#include "rssnewsfeed.h"
#include "xmlrpciface.h"
#include <dcopobject.h>
#include <qmap.h>
#include <qobject.h>
#include <qvaluelist.h>
#include <qvariant.h>
class RSSService;
/**
* Helper class which just calls the slot given it's QObject/const char*
* representation.
*/
class SlotCaller : public QObject
{
Q_OBJECT
public:
static void call( QObject *object, const char *slot,
const KXMLRPC::Query::Result &value );
signals:
void signal( const KXMLRPC::Query::Result &value );
private:
SlotCaller() { }
};
class QueryService : public QObject, public DCOPObject
{
K_DCOP
Q_OBJECT
public:
QueryService( RSSService *service );
k_dcop_signals:
void feedIds( QValueList<int> ids );
void feedInfo(QMap<QString, QString> links);
void feedInfo(QValueList<RSSNewsFeed> feeds);
void gotCategories( const QStringList &categories );
void gotFeedsInCategory( const QValueList<int> &ids );
k_dcop:
/**
* Lists the active feeds in use...
**/
QStringList listActive(); // just for testing...
/**
* Query the www.syndic8.com XML-RPC interface for the
* string. The RSS ids are treturned in a integer list.
**/
void findFeeds( const QString& query );
/**
* Query the www.syndic8.com XML-RPC interface for the
* string and matches it against the SiteURL feed of
* each feed in the feed list. The RSS ids are treturned
* in a integer list.
**/
void findSites( const QString& query );
/**
* Query the www.syndic8.com XML-RPC interface for the
* requested RSS feed(s). Returned is a QMap with the format
* of Name (Site URL), RSS URL
**/
void getFeedInfo( const QVariant& ids );
/**
* Returns the list of subcategories in the specified category.
* If no "Top" is specified, the root categories are returned.
*/
void getCategories( const QString &category );
/**
* Queries the database for the list of needsfeed ID's which are
* associated with the given category.
*/
void getFeedsInCategory( const QString &category );
private slots:
void slotFoundFeeds( const KXMLRPC::Query::Result &result );
void slotGotFeedInfo( const KXMLRPC::Query::Result &result );
void slotGotCategories( const KXMLRPC::Query::Result &result );
void slotGotFeedsInCategory( const KXMLRPC::Query::Result &result );
private:
void cachedCall( const QString &method, const QValueList<QVariant> &args,
const char *slot );
void updateCache( const KXMLRPC::Query::Result &result );
RSSService *m_service;
KXMLRPC::Server *m_xmlrpcServer;
};
#endif
|