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
|
/***************************************************************************
copyright : (C) 2003-2006 by Robby Stephenson
email : robby@periapsis.org
***************************************************************************/
/***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of version 2 of the GNU General Public License as *
* published by the Free Software Foundation; *
* *
***************************************************************************/
#ifndef FETCHMANAGER_H
#define FETCHMANAGER_H
namespace Tellico {
namespace Fetch {
class SearchResult;
class ConfigWidget;
class ManagerMessage;
}
}
#include "fetcher.h"
#include "../ptrvector.h"
#include <ksortablevaluelist.h>
#include <tqobject.h>
#include <tqmap.h>
namespace Tellico {
namespace Fetch {
typedef KSortableItem<Type, TQString> TypePair; // fetcher info, type and name of type
typedef KSortableValueList<Type, TQString> TypePairList;
typedef TQMap<FetchKey, TQString> KeyMap; // map key type to name of key
typedef Vector<Fetcher> FetcherVec;
/**
* A manager for handling all the different classes of Fetcher.
*
* @author Robby Stephenson
*/
class Manager : public TQObject {
Q_OBJECT
TQ_OBJECT
public:
static Manager* self() { if(!s_self) s_self = new Manager(); return s_self; }
~Manager();
KeyMap keyMap(const TQString& source = TQString()) const;
void startSearch(const TQString& source, FetchKey key, const TQString& value);
void continueSearch();
void stop();
bool canFetch() const;
bool hasMoreResults() const;
void loadFetchers();
const FetcherVec& fetchers() const { return m_fetchers; }
FetcherVec fetchers(int type);
TypePairList typeList();
ConfigWidget* configWidget(TQWidget* parent, Type type, const TQString& name);
// create fetcher for updating an entry
FetcherVec createUpdateFetchers(int collType);
FetcherVec createUpdateFetchers(int collType, FetchKey key);
Fetcher::Ptr createUpdateFetcher(int collType, const TQString& source);
static TQString typeName(Type type);
static TQPixmap fetcherIcon(Fetch::Type type, int iconGroup=3 /*Small*/, int size=0 /* default */);
static TQPixmap fetcherIcon(Fetch::Fetcher::CPtr ptr, int iconGroup=3 /*Small*/, int size=0 /* default*/);
signals:
void signalStatus(const TQString& status);
void signalResultFound(Tellico::Fetch::SearchResult* result);
void signalDone();
private slots:
void slotFetcherDone(Tellico::Fetch::Fetcher::Ptr);
private:
friend class ManagerMessage;
static Manager* s_self;
Manager();
Fetcher::Ptr createFetcher(KConfig* config, const TQString& configGroup);
FetcherVec defaultFetchers();
void updateStatus(const TQString& message);
static TQString favIcon(const KURL& url);
static bool bundledScriptHasExecPath(const TQString& specFile, KConfig* config);
FetcherVec m_fetchers;
int m_currentFetcherIndex;
KeyMap m_keyMap;
typedef TQMap<Fetcher::Ptr, TQString> ConfigMap;
ConfigMap m_configMap;
StringMap m_scriptMap;
ManagerMessage* m_messager;
uint m_count;
bool m_loadDefaults : 1;
};
} // end namespace
} // end namespace
#endif
|