XBEL stream reader: Brush up
- Use mime types in the file dialog handling - Use per class includes - Use the configure system instead of QT_NO... defines Task-number: QTBUG-111228 Change-Id: Iea915604e89d3005270f0eb83eca882855589a44 Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> (cherry picked from commit 723e331f0a811294e43207db162698c3ff8fde51) Reviewed-by: Kai Köhne <kai.koehne@qt.io>
This commit is contained in:
parent
e75305dd42
commit
7c6883d5db
@ -122,14 +122,14 @@
|
|||||||
\snippet serialization/streambookmarks/mainwindow.cpp 0
|
\snippet serialization/streambookmarks/mainwindow.cpp 0
|
||||||
|
|
||||||
The \c open() function enables the user to open an XBEL file using
|
The \c open() function enables the user to open an XBEL file using
|
||||||
QFileDialog::getOpenFileName(). A warning message is displayed along
|
QFileDialog. A warning message is displayed along
|
||||||
with the \c fileName and \c errorString if the file cannot be read or
|
with the \c fileName and \c errorString if the file cannot be read or
|
||||||
if there is a parse error.
|
if there is a parse error.
|
||||||
|
|
||||||
\snippet serialization/streambookmarks/mainwindow.cpp 1
|
\snippet serialization/streambookmarks/mainwindow.cpp 1
|
||||||
|
|
||||||
The \c saveAs() function displays a QFileDialog, prompting the user for
|
The \c saveAs() function displays a QFileDialog, prompting the user for
|
||||||
a \c fileName using QFileDialog::getSaveFileName(). Similar to the
|
a \c fileName. Similar to the
|
||||||
\c open() function, this function also displays a warning message if
|
\c open() function, this function also displays a warning message if
|
||||||
the file cannot be written to.
|
the file cannot be written to.
|
||||||
|
|
||||||
|
@ -1,22 +1,34 @@
|
|||||||
// Copyright (C) 2016 The Qt Company Ltd.
|
// Copyright (C) 2016 The Qt Company Ltd.
|
||||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
|
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
|
||||||
|
|
||||||
#include <QtWidgets>
|
|
||||||
|
|
||||||
#include "mainwindow.h"
|
#include "mainwindow.h"
|
||||||
#include "xbelreader.h"
|
#include "xbelreader.h"
|
||||||
#include "xbelwriter.h"
|
#include "xbelwriter.h"
|
||||||
|
|
||||||
|
#include <QFileDialog>
|
||||||
|
#include <QHeaderView>
|
||||||
|
#include <QMenuBar>
|
||||||
|
#include <QMessageBox>
|
||||||
|
#include <QStatusBar>
|
||||||
|
#include <QTreeWidget>
|
||||||
|
|
||||||
|
#include <QAction>
|
||||||
|
#if QT_CONFIG(clipboard)
|
||||||
|
# include <QClipboard>
|
||||||
|
#endif
|
||||||
|
#include <QDesktopServices>
|
||||||
|
#include <QGuiApplication>
|
||||||
|
#include <QScreen>
|
||||||
|
|
||||||
|
using namespace Qt::StringLiterals;
|
||||||
|
|
||||||
//! [0]
|
//! [0]
|
||||||
MainWindow::MainWindow()
|
MainWindow::MainWindow()
|
||||||
{
|
{
|
||||||
QStringList labels;
|
|
||||||
labels << tr("Title") << tr("Location");
|
|
||||||
|
|
||||||
treeWidget = new QTreeWidget;
|
treeWidget = new QTreeWidget;
|
||||||
treeWidget->header()->setSectionResizeMode(QHeaderView::Stretch);
|
treeWidget->header()->setSectionResizeMode(QHeaderView::Stretch);
|
||||||
treeWidget->setHeaderLabels(labels);
|
treeWidget->setHeaderLabels(QStringList{ tr("Title"), tr("Location") });
|
||||||
#if !defined(QT_NO_CONTEXTMENU) && !defined(QT_NO_CLIPBOARD)
|
#if QT_CONFIG(clipboard) && QT_CONFIG(contextmenu)
|
||||||
treeWidget->setContextMenuPolicy(Qt::CustomContextMenu);
|
treeWidget->setContextMenuPolicy(Qt::CustomContextMenu);
|
||||||
connect(treeWidget, &QWidget::customContextMenuRequested,
|
connect(treeWidget, &QWidget::customContextMenuRequested,
|
||||||
this, &MainWindow::onCustomContextMenuRequested);
|
this, &MainWindow::onCustomContextMenuRequested);
|
||||||
@ -33,7 +45,7 @@ MainWindow::MainWindow()
|
|||||||
}
|
}
|
||||||
//! [0]
|
//! [0]
|
||||||
|
|
||||||
#if !defined(QT_NO_CONTEXTMENU) && !defined(QT_NO_CLIPBOARD)
|
#if QT_CONFIG(clipboard) && QT_CONFIG(contextmenu)
|
||||||
void MainWindow::onCustomContextMenuRequested(const QPoint &pos)
|
void MainWindow::onCustomContextMenuRequested(const QPoint &pos)
|
||||||
{
|
{
|
||||||
const QTreeWidgetItem *item = treeWidget->itemAt(pos);
|
const QTreeWidgetItem *item = treeWidget->itemAt(pos);
|
||||||
@ -49,21 +61,19 @@ void MainWindow::onCustomContextMenuRequested(const QPoint &pos)
|
|||||||
else if (action == openAction)
|
else if (action == openAction)
|
||||||
QDesktopServices::openUrl(QUrl(url));
|
QDesktopServices::openUrl(QUrl(url));
|
||||||
}
|
}
|
||||||
#endif // !QT_NO_CONTEXTMENU && !QT_NO_CLIPBOARD
|
#endif // QT_CONFIG(clipboard) && QT_CONFIG(contextmenu)
|
||||||
|
|
||||||
//! [1]
|
//! [1]
|
||||||
void MainWindow::open()
|
void MainWindow::open()
|
||||||
{
|
{
|
||||||
QString fileName =
|
QFileDialog fileDialog(this, tr("Open Bookmark File"), QDir::currentPath());
|
||||||
QFileDialog::getOpenFileName(this, tr("Open Bookmark File"),
|
fileDialog.setMimeTypeFilters({"application/x-xbel"_L1});
|
||||||
QDir::currentPath(),
|
if (fileDialog.exec() != QDialog::Accepted)
|
||||||
tr("XBEL Files (*.xbel *.xml)"));
|
|
||||||
if (fileName.isEmpty())
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
treeWidget->clear();
|
treeWidget->clear();
|
||||||
|
|
||||||
|
const QString fileName = fileDialog.selectedFiles().constFirst();
|
||||||
QFile file(fileName);
|
QFile file(fileName);
|
||||||
if (!file.open(QFile::ReadOnly | QFile::Text)) {
|
if (!file.open(QFile::ReadOnly | QFile::Text)) {
|
||||||
QMessageBox::warning(this, tr("QXmlStream Bookmarks"),
|
QMessageBox::warning(this, tr("QXmlStream Bookmarks"),
|
||||||
@ -89,13 +99,14 @@ void MainWindow::open()
|
|||||||
//! [2]
|
//! [2]
|
||||||
void MainWindow::saveAs()
|
void MainWindow::saveAs()
|
||||||
{
|
{
|
||||||
QString fileName =
|
QFileDialog fileDialog(this, tr("Save Bookmark File"), QDir::currentPath());
|
||||||
QFileDialog::getSaveFileName(this, tr("Save Bookmark File"),
|
fileDialog.setAcceptMode(QFileDialog::AcceptSave);
|
||||||
QDir::currentPath(),
|
fileDialog.setDefaultSuffix("xbel"_L1);
|
||||||
tr("XBEL Files (*.xbel *.xml)"));
|
fileDialog.setMimeTypeFilters({"application/x-xbel"_L1});
|
||||||
if (fileName.isEmpty())
|
if (fileDialog.exec() != QDialog::Accepted)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
const QString fileName = fileDialog.selectedFiles().constFirst();
|
||||||
QFile file(fileName);
|
QFile file(fileName);
|
||||||
if (!file.open(QFile::WriteOnly | QFile::Text)) {
|
if (!file.open(QFile::WriteOnly | QFile::Text)) {
|
||||||
QMessageBox::warning(this, tr("QXmlStream Bookmarks"),
|
QMessageBox::warning(this, tr("QXmlStream Bookmarks"),
|
||||||
|
@ -1,10 +1,11 @@
|
|||||||
// Copyright (C) 2016 The Qt Company Ltd.
|
// Copyright (C) 2016 The Qt Company Ltd.
|
||||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
|
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
|
||||||
|
|
||||||
#include <QtWidgets>
|
|
||||||
|
|
||||||
#include "xbelreader.h"
|
#include "xbelreader.h"
|
||||||
|
|
||||||
|
#include <QStyle>
|
||||||
|
#include <QTreeWidget>
|
||||||
|
|
||||||
//! [0]
|
//! [0]
|
||||||
XbelReader::XbelReader(QTreeWidget *treeWidget)
|
XbelReader::XbelReader(QTreeWidget *treeWidget)
|
||||||
: treeWidget(treeWidget)
|
: treeWidget(treeWidget)
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
// Copyright (C) 2016 The Qt Company Ltd.
|
// Copyright (C) 2016 The Qt Company Ltd.
|
||||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
|
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
|
||||||
|
|
||||||
#include <QtWidgets>
|
|
||||||
|
|
||||||
#include "xbelwriter.h"
|
#include "xbelwriter.h"
|
||||||
#include "xbelreader.h"
|
#include "xbelreader.h"
|
||||||
|
|
||||||
|
#include <QTreeWidget>
|
||||||
|
|
||||||
static inline QString yesValue() { return QStringLiteral("yes"); }
|
static inline QString yesValue() { return QStringLiteral("yes"); }
|
||||||
static inline QString noValue() { return QStringLiteral("no"); }
|
static inline QString noValue() { return QStringLiteral("no"); }
|
||||||
static inline QString titleElement() { return QStringLiteral("title"); }
|
static inline QString titleElement() { return QStringLiteral("title"); }
|
||||||
|
Loading…
x
Reference in New Issue
Block a user