UBDocumentPublisher.h 3.19 KB
Newer Older
Claudio Valerio's avatar
Claudio Valerio committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14
/*
 * 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 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
Claudio Valerio's avatar
Claudio Valerio committed
15 16 17 18 19 20 21 22
#ifndef UBDOCUMENTPUBLISHER_H
#define UBDOCUMENTPUBLISHER_H

#include <QtGui>
#include <QtNetwork>

#include "ui_webPublishing.h"

23
#define DOCPUBLICATION_URL     "http://planete.sankore.org/xwiki/bin/view/CreateResources/UniboardUpload?xpage=plain&outputSyntax=plain"
24

25 26 27 28 29 30
typedef struct
{
    QString title;
    QString description;
} sDocumentInfos;

Claudio Valerio's avatar
Claudio Valerio committed
31 32 33
class UBDocumentProxy;
class UBServerXMLHttpRequest;
class UBGraphicsW3CWidgetItem;
34
class QWebView;
Claudio Valerio's avatar
Claudio Valerio committed
35

36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
class UBProxyLoginDlg : public QDialog
{
    Q_OBJECT
public:
    UBProxyLoginDlg(QWidget* parent=0, const char* name="ProxyLoginDlg");
    ~UBProxyLoginDlg();

    QString username(){return mpUsername->text();}
    QString password(){return mpPassword->text();}

private:
    QVBoxLayout* mpLayout;
    QHBoxLayout* mpUserLayout;
    QHBoxLayout* mpPasswordLayout;
    QDialogButtonBox* mpButtons;
    QLabel* mpUserLabel;
    QLabel* mpPasswordLabel;
    QLineEdit* mpUsername;
    QLineEdit* mpPassword;
};

57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
class UBPublicationDlg : public QDialog
{
    Q_OBJECT
public:
    UBPublicationDlg(QWidget* parent=0, const char* name="UBPublicationDlg");
    ~UBPublicationDlg();

    QString title(){return mpTitle->text();}
    QString description(){return mpDescription->document()->toPlainText();}

private slots:
    void onTextChanged();

private:
    QVBoxLayout* mpLayout;
    QHBoxLayout* mpTitleLayout;
    QLabel* mpTitleLabel;
    QLineEdit* mpTitle;
    QLabel* mpDescLabel;
    QTextEdit* mpDescription;
    QDialogButtonBox* mpButtons;
};

80

81
class UBDocumentPublisher : public QObject
Claudio Valerio's avatar
Claudio Valerio committed
82 83 84
{
    Q_OBJECT;

85 86 87
public:
    explicit UBDocumentPublisher(UBDocumentProxy* sourceDocument, QObject *parent = 0);
    virtual ~UBDocumentPublisher();
Claudio Valerio's avatar
Claudio Valerio committed
88

89
    void publish();
Claudio Valerio's avatar
Claudio Valerio committed
90

91
signals:
Claudio Valerio's avatar
Claudio Valerio committed
92

93
    void loginDone();
Claudio Valerio's avatar
Claudio Valerio committed
94

95
protected:
Claudio Valerio's avatar
Claudio Valerio committed
96

97 98 99 100
    virtual void updateGoogleMapApiKey();
    virtual void rasterizeScenes();
    virtual void upgradeDocumentForPublishing();
    virtual void generateWidgetPropertyScript(UBGraphicsW3CWidgetItem *widgetItem, int pageNumber);
Claudio Valerio's avatar
Claudio Valerio committed
101

102
private slots:
Claudio Valerio's avatar
Claudio Valerio committed
103

104
    void onFinished(QNetworkReply* reply);
Claudio Valerio's avatar
Claudio Valerio committed
105

106
private:
Claudio Valerio's avatar
Claudio Valerio committed
107

108 109
    UBDocumentProxy *mSourceDocument;
    UBDocumentProxy *mPublishingDocument;
110
    void init();
111
    void sendUbw(QString username, QString password);
112
    QString getBase64Of(QString stringToEncode);
Claudio Valerio's avatar
Claudio Valerio committed
113

114 115 116 117 118 119
    QHBoxLayout* mpLayout;
    QNetworkAccessManager* mpNetworkMgr;
    QNetworkCookieJar* mpCookieJar;
    QString mUsername;
    QString mPassword;
    QString mCrlf;
120
    bool bLoginCookieSet;
Claudio Valerio's avatar
Claudio Valerio committed
121

122 123
    void buildUbwFile();
    QString mTmpZipFile;
124
    QList<QNetworkCookie> mCookies;
125
    sDocumentInfos mDocInfos;
Claudio Valerio's avatar
Claudio Valerio committed
126 127 128

};
#endif // UBDOCUMENTPUBLISHER_H