Merge branch '1.0'
[kdevelop:php-docs.git] / phpdocumentationwidget.cpp
1 /*  This file is part of KDevelop
2
3     Copyright 2009 Milian Wolff <mail@milianw.de>
4
5     This library is free software; you can redistribute it and/or
6     modify it under the terms of the GNU Library General Public
7     License as published by the Free Software Foundation; either
8     version 2 of the License, or (at your option) any later version.
9
10     This library is distributed in the hope that it will be useful,
11     but WITHOUT ANY WARRANTY; without even the implied warranty of
12     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13     Library General Public License for more details.
14
15     You should have received a copy of the GNU Library General Public License
16     along with this library; see the file COPYING.LIB.  If not, write to
17     the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
18     Boston, MA 02110-1301, USA.
19 */
20
21 #include "phpdocumentationwidget.h"
22
23 #include <KHTMLPart>
24 #include <QProgressBar>
25
26 #include <QVBoxLayout>
27
28 #include "phpdocsplugin.h"
29 #include <QLabel>
30
31 PhpDocumentationWidget::PhpDocumentationWidget(const KUrl &url, PhpDocsPlugin* provider, QWidget* parent)
32     : QStackedWidget(parent), m_part(new KHTMLPart(this)), m_loading(new QWidget(this))
33 {
34     addWidget(m_part->widget());
35     addWidget(m_loading);
36
37     connect( m_part, SIGNAL(docCreated()),
38              this, SLOT(documentLoaded()) );
39
40     QProgressBar* progressbar = new QProgressBar;
41     progressbar->setValue(0);
42     progressbar->setMinimum(0);
43     progressbar->setMaximum(100);
44     progressbar->setAlignment(Qt::AlignCenter);
45
46     connect( m_part->browserExtension(), SIGNAL(loadingProgress(int)),
47              progressbar, SLOT(setValue(int)) );
48
49     QVBoxLayout* layout = new QVBoxLayout;
50     layout->addStretch();
51     QLabel* label = new QLabel(i18n("...loading documentation..."));
52     label->setAlignment(Qt::AlignCenter);
53     layout->addWidget(label);
54     layout->addWidget(progressbar);
55     layout->addStretch();
56     m_loading->setLayout(layout);
57     setCurrentWidget(m_loading);
58
59     connect( m_part->browserExtension(), SIGNAL(openUrlRequest(KUrl,KParts::OpenUrlArguments, KParts::BrowserArguments)),
60              provider, SLOT(loadUrl(KUrl)) );
61
62     m_part->openUrl( url );
63 }
64
65 void PhpDocumentationWidget::documentLoaded()
66 {
67     m_part->setUserStyleSheet( QString( "#headnav,#headsearch,#footnav,#leftbar{display:none !important;}"
68                                         "body{font-size:80% !important;}"
69                                         "option,select{font-size:80% !important;}"
70                                         "#layout_2,#layout_3{background: none !important;}"
71                                         "#content{margin:0 !important}") );
72
73     setCurrentWidget(m_part->widget());
74     removeWidget(m_loading);
75     delete m_loading;
76     m_loading = 0;
77 }
78
79 #include "phpdocumentationwidget.moc"