kjk / moriarty-sm

This URL has Read+Write access

moriarty-sm / HyperlinkHandler.h
100644 164 lines (118 sloc) 6.524 kb
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
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
#ifndef INFOMAN_HYPERLINK_HANDLER_H__
#define INFOMAN_HYPERLINK_HANDLER_H__
 
#include "InfoManGlobals.h"
#include <HyperlinkHandlerBase.hpp>
#include <PediaUrl.hpp>
 
#define urlSchemaHttp "http"
#define urlSchemaDream "dream"
#define urlSchemaMovie "movie"
#define urlSchemaTheatre "theatre"
#define urlSchemaLyricsForm "lyricsform"
#define urlSchemaMenu "menu"
#define urlSchemaRunModule "runmodule"
 
#define urlSchemaAmazonPreferences "amazonpreferences"
#define urlSchemaAmazonForm "amazonform"
#define urlSchemaAmazonSearch "s+amazonsearch"
 
#define urlSchemaSimpleFormWithDefinition "simpleform"
#define urlSchemaNetflixForm "netflixform"
#define urlSchemaListsOfBestsForm "listsofbestsform"
 
#define urlSchemaEncyclopediaTerm pediaUrlTerm
#define urlSchemaEncyclopediaRandom pediaUrlRandom
#define urlSchemaEncyclopediaSearch pediaUrlSearch
#define urlSchemaEncyclopediaLangs pediaUrlLangs
#define urlSchemaEncyclopediaStats pediaUrlStats
 
#define urlSchemaEncyclopedia "pedia"
 
#define urlSchemaDict "dict"
#define urlSchemaDictTerm "s+dictterm"
#define urlSchemaDictRandom "s+dictrandom"
#define urlSchemaDictForm "dictform"
 
#define urlSchemaEBookSearch "s+eBook-search"
#define urlSchemaEBookDownload "s+eBook-download"
#define urlSchemaEBookBrowse "s+eBook-browse"
#define urlSchemaEBookHome "s+eBook-home"
#define urlSchemaEBook "eBook"
 
#define urlSchemaEBayForm "ebayform"
 
#define urlSchemaClipboardCopy "clipbrdcopy"
 
#define urlSchemaRecipesList "s+recipeslist"
 
#define urlSchemaHoroscope "s+horoscope"
 
#define urlSchemaBoxOffice "s+boxoffice"
 
#define urlSchemaGetDream "s+dream"
 
#define urlSchemaStocksList "s+stockslist"
#define urlSchemaStock "s+stock"
#define urlSchemaStocksValidate "s+stocksvalidate"
#define urlSchemaStockName "s+stockname"
 
#define urlSchemaWeather "s+weather"
 
#define urlSchemaCurrency "s+currency"
 
#define urlSchemaJoke "s+joke"
#define urlSchemaJokesList "s+jokeslist"
 
#define urlSchemaMoviesGet "s+movies"
 
#define urlSeparatorSchema ':'
#define urlSeparatorFlags '+'
#define urlSeparatorSchemaStr ":"
#define urlSeparatorFlagsStr "+"
 
#define urlFlagServer 's'
#define urlFlagClosePopup 'c'
#define urlFlagHistory 'h'
#define urlFlagHistoryInCache 'H'
 
#define pediaUrlPartSetLang "lang"
#define pediaUrlPartHome "home"
#define pediaUrlPartSearchDialog "search"
#define pediaUrlPartShowArticle "article"
 
#define ebookUrlPartSearch "search"
#define ebookUrlPartMove "move"
#define ebookUrlPartDelete "delete"
#define ebookUrlPartCopy "copy"
#define ebookUrlPartLaunch "launch"
#define ebookUrlPartManage "manage"
#define ebookUrlPartBrowse "browse"
#define ebookUrlPartDownload "download"
 
#define urlSchemaFlickr "flickr"
 
#define flickrUrlPartAbout "about"
 
 
class HyperlinkHandler: public HyperlinkHandlerBase {
 
public:
 
    typedef void (HyperlinkHandler::* HandlerFunction)(const char* hyperlink, ulong_t len, const Point*);
 
private:
 
    static HandlerFunction findHandler(const char* schema, ulong_t len);
    
/*
static void closePopup(uint_t id);
 
static void closePopup();
*/
        
    enum HandlerFlag {
        flagServerHyperlink = 1,
        flagClosePopupForm = 2,
        flagHistory = 4,
        flagHistoryInCache = 8
    };
    
    static uint_t interpretFlag(char flag);
 
 
public:
 
    void handleHyperlink(const char* link, ulong_t len, const Point* point);
 
    ~HyperlinkHandler();
 
private:
    void handleRunModule(const char* hyperlink, ulong_t len, const Point* point);
    void handleHttp(const char* hyperlink, ulong_t len, const Point* point);
    void handleDream(const char* hyperlink, ulong_t len, const Point* point);
    
    // Implemented in MoviesModule.cpp
    void handleMovie(const char* hyperlink, ulong_t len, const Point* point);
    void handleTheatre(const char* hyperlink, ulong_t len, const Point* point);
    
    
    void handleLyricsForm(const char* hyperlink, ulong_t len, const Point* point);
    void handleDictForm(const char* hyperlink, ulong_t len, const Point* point);
    void handleMenu(const char* hyperlink, ulong_t len, const Point* point);
    void handleAmazonForm(const char* hyperlink, ulong_t len, const Point* point);
    void handleAmazonPreferences(const char* hyperlink, ulong_t len, const Point* point);
    void handleSimpleFormWithDefinition(const char* hyperlink, ulong_t len, const Point* point);
    void handleClipboardCopy(const char* hyperlink, ulong_t len, const Point* point);
    void handleListsOfBestsForm(const char* hyperlink, ulong_t len, const Point* point);
    void handleEBayForm(const char* hyperlink, ulong_t len, const Point* point);
    void handlePedia(const char* hyperlink, ulong_t len, const Point* point);
    void handlePediaHome(const char* hyperlink, ulong_t len, const Point* point);
    void handlePediaLang(const char* hyperlink, ulong_t len, const Point* point);
    void handlePediaSearch(const char* hyperlink, ulong_t len, const Point* point);
    void handlePediaArticle(const char* hyperlink, ulong_t len, const Point* point);
    void handleEBook(const char* hyperlink, ulong_t len, const Point* point);
    void handleEBookDownload(const char* data, ulong_t len);
    void handleNetflixForm(const char* hyperlink, ulong_t len, const Point* point);
    void handleFlickr(const char* hyperlink, ulong_t len, const Point* point);
};
 
const char* hyperlinkData(const char* link, ulong_t& length);
 
void HyperlinkHandlerDispose();
 
#endif