Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
openpagesmodel.cpp
Go to the documentation of this file.
1// Copyright (C) 2016 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
4
6#include "helpviewer.h"
7#include "tracer.h"
8
9#include <QtCore/QStringList>
10#include <QtCore/QUrl>
11
13
14using namespace Qt::StringLiterals;
15
16OpenPagesModel::OpenPagesModel(QObject *parent) : QAbstractTableModel(parent)
17{
19}
20
21int OpenPagesModel::rowCount(const QModelIndex &parent) const
22{
24 return parent.isValid() ? 0 : m_pages.size();
25}
26
27int OpenPagesModel::columnCount(const QModelIndex &/*parent*/) const
28{
30 return 2;
31}
32
33QVariant OpenPagesModel::data(const QModelIndex &index, int role) const
34{
36 if (!index.isValid() || index.row() >= rowCount() || index.column() > 0
37 || role != Qt::DisplayRole)
38 return QVariant();
39 QString title = m_pages.at(index.row())->title();
40 title.replace(u'&', "&&"_L1);
41 return title.isEmpty() ? "(Untitled)"_L1 : title;
42}
43
44HelpViewer *OpenPagesModel::addPage(const QUrl &url, qreal zoom)
45{
47 beginInsertRows(QModelIndex(), rowCount(), rowCount());
48 HelpViewer *page = new HelpViewer(zoom);
49 connect(page, &HelpViewer::titleChanged, this, &OpenPagesModel::handleTitleChanged);
50 m_pages << page;
51 endInsertRows();
52 page->setSource(url);
53 return page;
54}
55
56void OpenPagesModel::removePage(int index)
57{
59 Q_ASSERT(index >= 0 && index < rowCount());
60 beginRemoveRows(QModelIndex(), index, index);
61 HelpViewer *page = m_pages.at(index);
62 m_pages.removeAt(index);
63 endRemoveRows();
64 page->deleteLater();
65}
66
68{
70 Q_ASSERT(index >= 0 && index < rowCount());
71 return m_pages.at(index);
72}
73
74void OpenPagesModel::handleTitleChanged()
75{
77 HelpViewer *page = static_cast<HelpViewer *>(sender());
78 const int row = m_pages.indexOf(page);
79 Q_ASSERT(row != -1 );
80 const QModelIndex &item = index(row, 0);
81 emit dataChanged(item, item);
82}
83
84QT_END_NAMESPACE
HelpViewer * addPage(const QUrl &url, qreal zoom=0)
void removePage(int index)
int columnCount(const QModelIndex &parent=QModelIndex()) const override
Returns the number of columns for the children of the given parent.
int rowCount(const QModelIndex &parent=QModelIndex()) const override
Returns the number of rows under the given parent.
QVariant data(const QModelIndex &index, int role=Qt::DisplayRole) const override
Returns the data stored under the given role for the item referred to by the index.
HelpViewer * pageAt(int index) const
\inmodule QtCore
Combined button and popup list for selecting options.
#define TRACE_OBJ
Definition tracer.h:34