source: trunk/examples/webkit/previewer/mainwindow.cpp@ 651

Last change on this file since 651 was 651, checked in by Dmitry A. Kuminov, 15 years ago

trunk: Merged in qt 4.6.2 sources.

File size: 6.0 KB
Line 
1/****************************************************************************
2**
3** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
4** All rights reserved.
5** Contact: Nokia Corporation ([email protected])
6**
7** This file is part of the examples of the Qt Toolkit.
8**
9** $QT_BEGIN_LICENSE:LGPL$
10** Commercial Usage
11** Licensees holding valid Qt Commercial licenses may use this file in
12** accordance with the Qt Commercial License Agreement provided with the
13** Software or, alternatively, in accordance with the terms contained in
14** a written agreement between you and Nokia.
15**
16** GNU Lesser General Public License Usage
17** Alternatively, this file may be used under the terms of the GNU Lesser
18** General Public License version 2.1 as published by the Free Software
19** Foundation and appearing in the file LICENSE.LGPL included in the
20** packaging of this file. Please review the following information to
21** ensure the GNU Lesser General Public License version 2.1 requirements
22** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
23**
24** In addition, as a special exception, Nokia gives you certain additional
25** rights. These rights are described in the Nokia Qt LGPL Exception
26** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
27**
28** GNU General Public License Usage
29** Alternatively, this file may be used under the terms of the GNU
30** General Public License version 3.0 as published by the Free Software
31** Foundation and appearing in the file LICENSE.GPL included in the
32** packaging of this file. Please review the following information to
33** ensure the GNU General Public License version 3.0 requirements will be
34** met: http://www.gnu.org/copyleft/gpl.html.
35**
36** If you have questions regarding the use of this file, please contact
37** Nokia at [email protected].
38** $QT_END_LICENSE$
39**
40****************************************************************************/
41
42#include <QtGui>
43#include <QtWebKit>
44#include "mainwindow.h"
45
46//! [0]
47MainWindow::MainWindow()
48{
49 createActions();
50 createMenus();
51 centralWidget = new Previewer(this);
52 setCentralWidget(centralWidget);
53
54 connect(centralWidget->webView, SIGNAL(loadFinished(bool)),
55 this, SLOT(updateTextEdit()));
56 setStartupText();
57}
58//! [0]
59
60//! [1]
61void MainWindow::createActions()
62{
63 openAct = new QAction(tr("&Open..."), this);
64 openAct->setShortcuts(QKeySequence::Open);
65 openAct->setStatusTip(tr("Open an existing HTML file"));
66 connect(openAct, SIGNAL(triggered()), this, SLOT(open()));
67
68 openUrlAct = new QAction(tr("&Open URL..."), this);
69 openUrlAct->setShortcut(tr("Ctrl+U"));
70 openUrlAct->setStatusTip(tr("Open a URL"));
71 connect(openUrlAct, SIGNAL(triggered()), this, SLOT(openUrl()));
72//! [1]
73
74 saveAct = new QAction(tr("&Save"), this);
75 saveAct->setShortcuts(QKeySequence::Save);
76 saveAct->setStatusTip(tr("Save the HTML file to disk"));
77 connect(saveAct, SIGNAL(triggered()), this, SLOT(save()));
78
79 exitAct = new QAction(tr("E&xit"), this);
80 exitAct->setStatusTip(tr("Exit the application"));
81 exitAct->setShortcuts(QKeySequence::Quit);
82 connect(exitAct, SIGNAL(triggered()), this, SLOT(close()));
83
84 aboutAct = new QAction(tr("&About"), this);
85 aboutAct->setStatusTip(tr("Show the application's About box"));
86 connect(aboutAct, SIGNAL(triggered()), this, SLOT(about()));
87
88 aboutQtAct = new QAction(tr("About &Qt"), this);
89 aboutQtAct->setStatusTip(tr("Show the Qt library's About box"));
90 connect(aboutQtAct, SIGNAL(triggered()), qApp, SLOT(aboutQt()));
91}
92
93//! [2]
94void MainWindow::createMenus()
95{
96 fileMenu = menuBar()->addMenu(tr("&File"));
97 fileMenu->addAction(openAct);
98 fileMenu->addAction(openUrlAct);
99 fileMenu->addAction(saveAct);
100 fileMenu->addSeparator();
101 fileMenu->addAction(exitAct);
102
103 menuBar()->addSeparator();
104
105 helpMenu = menuBar()->addMenu(tr("&Help"));
106 helpMenu->addAction(aboutAct);
107 helpMenu->addAction(aboutQtAct);
108}
109//! [2]
110
111//! [3]
112void MainWindow::about()
113{
114 QMessageBox::about(this, tr("About Previewer"),
115 tr("The <b>Previewer</b> example demonstrates how to "
116 "view HTML documents using a QWebView."));
117}
118//! [3]
119
120//! [4]
121void MainWindow::open()
122{
123 QString fileName = QFileDialog::getOpenFileName(this);
124 if (!fileName.isEmpty()) {
125 // read from file
126 QFile file(fileName);
127
128 if (!file.open(QIODevice::ReadOnly)) {
129 QMessageBox::information(this, tr("Unable to open file"),
130 file.errorString());
131 return;
132 }
133
134 QTextStream out(&file);
135 QString output = out.readAll();
136
137 // display contents
138 centralWidget->plainTextEdit->setPlainText(output);
139 centralWidget->setBaseUrl(QUrl::fromLocalFile(fileName));
140 }
141}
142//! [4]
143
144//! [5]
145void MainWindow::openUrl()
146{
147 bool ok;
148 QString url = QInputDialog::getText(this, tr("Enter a URL"),
149 tr("URL:"), QLineEdit::Normal, "http://", &ok);
150
151 if (ok && !url.isEmpty()) {
152 centralWidget->webView->setUrl(url);
153 }
154}
155//! [5]
156
157//! [6]
158void MainWindow::save()
159{
160 QString content = centralWidget->plainTextEdit->toPlainText();
161 QString fileName = QFileDialog::getSaveFileName(this);
162
163 if (!fileName.isEmpty()) {
164 // save to file
165 QFile file(fileName);
166
167 if (!file.open(QIODevice::WriteOnly)) {
168 QMessageBox::information(this, tr("Unable to open file"),
169 file.errorString());
170 return;
171 }
172
173 QTextStream in(&file);
174 in << content;
175 }
176}
177//! [6]
178
179//! [7]
180void MainWindow::updateTextEdit()
181{
182 QWebFrame *mainFrame = centralWidget->webView->page()->mainFrame();
183 QString frameText = mainFrame->toHtml();
184 centralWidget->plainTextEdit->setPlainText(frameText);
185}
186//! [7]
187
188//! [8]
189void MainWindow::setStartupText()
190{
191 QString string = "<html><body><h1>HTML Previewer</h1>"
192 " <p>This example shows you how to use QWebView to"
193 " preview HTML data written in a QPlainTextEdit.</p>"
194 " </body></html>";
195 centralWidget->webView->setHtml(string);
196}
197//! [8]
Note: See TracBrowser for help on using the repository browser.