Separate Viewer from MainWindow and implement PDF embedding
[pykit.git] / Publisher.hh
1 // $Id$
2 //
3 // Copyright (C) 2010
4 //     Stefan Bund <info@j32.de>
5
6 /** \file
7     \brief InternalNetworkAccessManager public header */
8
9 #ifndef HH_PyKit_Publisher_
10 #define HH_PyKit_Publisher_ 1
11
12 // Custom includes
13 #include <QNetworkAccessManager>
14 #include <QNetworkRequest>
15 #include <QNetworkReply>
16 #include <QBuffer>
17 #include <boost/noncopyable.hpp>
18
19 //#include "Publisher.mpp"
20 ///////////////////////////////hh.p////////////////////////////////////////
21
22 namespace pykit {
23
24     namespace detail { class InternalServerReply; }
25
26     class Request
27     {
28     public:
29         void write(std::string const & data);
30         void reset();
31
32         void setContentType(std::string const & contentType);
33         void setLocation(std::string const & location);
34
35         QUrl url() const;
36
37     private:
38         Request(detail::InternalServerReply & reply);
39
40         detail::InternalServerReply & reply_;
41
42         friend class detail::InternalServerReply;
43     };
44
45     class Publisher
46         : boost::noncopyable
47     {
48     public:
49         virtual ~Publisher() {}
50         virtual void publish(Request & request) = 0;
51     };
52
53     class InternalNetworkAccessManager
54         : public QNetworkAccessManager
55     {
56         Q_OBJECT;
57     public:
58         InternalNetworkAccessManager(QNetworkAccessManager * manager, QObject * parent,
59                                      Publisher * publisher);
60
61         QNetworkReply * createRequest(Operation operation, QNetworkRequest const & request,
62                                       QIODevice * device);
63
64     private:
65         Publisher * publisher_;
66     };
67
68 }
69
70 ///////////////////////////////hh.e////////////////////////////////////////
71 //#include "Publisher.cci"
72 //#include "Publisher.ct"
73 //#include "Publisher.cti"
74 #endif
75
76 \f
77 // Local Variables:
78 // mode: c++
79 // fill-column: 100
80 // comment-column: 40
81 // c-file-style: "j32"
82 // indent-tabs-mode: nil
83 // ispell-local-dictionary: "american"
84 // compile-command: "scons -U"
85 // End: