36#include <QStandardPaths>
39PageList::PageList(QObject *parent)
44 const QString qmlSuffix = QStringLiteral(
".qml");
45 const QString disabledSuffix = QStringLiteral(
".disabled");
46 QSet<QString> disabledPages;
49 if (!isRunningInstalled() && getenv(
"WIZARD_TESTING") ==
nullptr) {
50 dataDirs << qmlDirectory();
52 dataDirs = shellDataDirs();
55 Q_FOREACH(
const QString &dataDir, dataDirs) {
56 QDir dir(dataDir +
"/Wizard/Pages");
57 const QStringList entries = dir.entryList(QStringList(QStringLiteral(
"[0-9]*")), QDir::Files | QDir::Readable);
58 Q_FOREACH(
const QString &entry, entries) {
59 if (!m_pages.contains(entry) && entry.endsWith(qmlSuffix))
60 m_pages.insert(entry, dir.absoluteFilePath(entry));
61 else if (entry.endsWith(qmlSuffix + disabledSuffix))
62 disabledPages.insert(entry.left(entry.size() - disabledSuffix.size()));
67 Q_FOREACH(
const QString &page, disabledPages) {
73 if (settings.value(QStringLiteral(
"Wizard/SkipUntilFinishedPage")).toBool()) {
74 const QString lastPage = m_pages.lastKey();
75 Q_FOREACH(
const QString &page, m_pages.keys()) {
76 if (Q_UNLIKELY(page != lastPage)) {
82 settings.remove(QStringLiteral(
"Wizard/SkipUntilFinishedPage"));
86QStringList PageList::entries()
const
88 return m_pages.keys();
91QStringList PageList::paths()
const
93 return m_pages.values();
96int PageList::index()
const
101int PageList::numPages()
const
103 return m_pages.size();
106QString PageList::prev()
109 return m_pages.values()[setIndex(m_index - 1)];
114QString PageList::next()
116 if (m_index < m_pages.count() - 1)
117 return m_pages.values()[setIndex(m_index + 1)];
122int PageList::setIndex(
int index)
125 Q_EMIT indexChanged();