source: trunk/examples/xml/dombookmarks/mainwindow.cpp

Last change on this file was 846, checked in by Dmitry A. Kuminov, 14 years ago

trunk: Merged in qt 4.7.2 sources from branches/vendor/nokia/qt.

File size: 5.0 KB
Line 
1/****************************************************************************
2**
3** Copyright (C) 2011 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:BSD$
10** You may use this file under the terms of the BSD license as follows:
11**
12** "Redistribution and use in source and binary forms, with or without
13** modification, are permitted provided that the following conditions are
14** met:
15** * Redistributions of source code must retain the above copyright
16** notice, this list of conditions and the following disclaimer.
17** * Redistributions in binary form must reproduce the above copyright
18** notice, this list of conditions and the following disclaimer in
19** the documentation and/or other materials provided with the
20** distribution.
21** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
22** the names of its contributors may be used to endorse or promote
23** products derived from this software without specific prior written
24** permission.
25**
26** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
27** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
28** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
29** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
30** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
31** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
32** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
33** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
34** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
35** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
36** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
37** $QT_END_LICENSE$
38**
39****************************************************************************/
40
41#include <QtGui>
42
43#include "mainwindow.h"
44#include "xbeltree.h"
45
46MainWindow::MainWindow()
47{
48 xbelTree = new XbelTree;
49 setCentralWidget(xbelTree);
50
51 createActions();
52 createMenus();
53
54 statusBar()->showMessage(tr("Ready"));
55
56 setWindowTitle(tr("DOM Bookmarks"));
57 resize(480, 320);
58}
59
60void MainWindow::open()
61{
62 QString fileName =
63 QFileDialog::getOpenFileName(this, tr("Open Bookmark File"),
64 QDir::currentPath(),
65 tr("XBEL Files (*.xbel *.xml)"));
66 if (fileName.isEmpty())
67 return;
68
69 QFile file(fileName);
70 if (!file.open(QFile::ReadOnly | QFile::Text)) {
71 QMessageBox::warning(this, tr("SAX Bookmarks"),
72 tr("Cannot read file %1:\n%2.")
73 .arg(fileName)
74 .arg(file.errorString()));
75 return;
76 }
77
78 if (xbelTree->read(&file))
79 statusBar()->showMessage(tr("File loaded"), 2000);
80}
81
82void MainWindow::saveAs()
83{
84 QString fileName =
85 QFileDialog::getSaveFileName(this, tr("Save Bookmark File"),
86 QDir::currentPath(),
87 tr("XBEL Files (*.xbel *.xml)"));
88 if (fileName.isEmpty())
89 return;
90
91 QFile file(fileName);
92 if (!file.open(QFile::WriteOnly | QFile::Text)) {
93 QMessageBox::warning(this, tr("SAX Bookmarks"),
94 tr("Cannot write file %1:\n%2.")
95 .arg(fileName)
96 .arg(file.errorString()));
97 return;
98 }
99
100 if (xbelTree->write(&file))
101 statusBar()->showMessage(tr("File saved"), 2000);
102}
103
104void MainWindow::about()
105{
106 QMessageBox::about(this, tr("About DOM Bookmarks"),
107 tr("The <b>DOM Bookmarks</b> example demonstrates how to "
108 "use Qt's DOM classes to read and write XML "
109 "documents."));
110}
111
112void MainWindow::createActions()
113{
114 openAct = new QAction(tr("&Open..."), this);
115 openAct->setShortcuts(QKeySequence::Open);
116 connect(openAct, SIGNAL(triggered()), this, SLOT(open()));
117
118 saveAsAct = new QAction(tr("&Save As..."), this);
119 saveAsAct->setShortcuts(QKeySequence::SaveAs);
120 connect(saveAsAct, SIGNAL(triggered()), this, SLOT(saveAs()));
121
122 exitAct = new QAction(tr("E&xit"), this);
123 exitAct->setShortcuts(QKeySequence::Quit);
124 connect(exitAct, SIGNAL(triggered()), this, SLOT(close()));
125
126 aboutAct = new QAction(tr("&About"), this);
127 connect(aboutAct, SIGNAL(triggered()), this, SLOT(about()));
128
129 aboutQtAct = new QAction(tr("About &Qt"), this);
130 connect(aboutQtAct, SIGNAL(triggered()), qApp, SLOT(aboutQt()));
131}
132
133void MainWindow::createMenus()
134{
135 fileMenu = menuBar()->addMenu(tr("&File"));
136 fileMenu->addAction(openAct);
137 fileMenu->addAction(saveAsAct);
138 fileMenu->addAction(exitAct);
139
140 menuBar()->addSeparator();
141
142 helpMenu = menuBar()->addMenu(tr("&Help"));
143 helpMenu->addAction(aboutAct);
144 helpMenu->addAction(aboutQtAct);
145}
Note: See TracBrowser for help on using the repository browser.