36 #include <QStandardPaths> 39 PageList::PageList(QObject *parent)
44 const QString qmlSuffix = QStringLiteral(
".qml");
45 const QString disabledSuffix = QStringLiteral(
".disabled");
46 QSet<QString> disabledPages;
49 if (getenv(
"WIZARD_TESTING") !=
nullptr) {
50 dataDirs = QStandardPaths::standardLocations(QStandardPaths::GenericDataLocation);
51 }
else if (!isRunningInstalled()) {
52 dataDirs << qmlDirectory();
54 dataDirs = shellDataDirs();
57 Q_FOREACH(
const QString &dataDir, dataDirs) {
58 QDir dir(dataDir +
"/Wizard/Pages");
59 const QStringList entries = dir.entryList(QStringList(QStringLiteral(
"[0-9]*")), QDir::Files | QDir::Readable);
60 Q_FOREACH(
const QString &entry, entries) {
61 if (!m_pages.contains(entry) && entry.endsWith(qmlSuffix))
62 m_pages.insert(entry, dir.absoluteFilePath(entry));
63 else if (entry.endsWith(qmlSuffix + disabledSuffix))
64 disabledPages.insert(entry.left(entry.size() - disabledSuffix.size()));
69 Q_FOREACH(
const QString &page, disabledPages) {
75 if (settings.value(QStringLiteral(
"Wizard/SkipUntilFinishedPage")).toBool()) {
76 while (m_pages.count() > 1) {
77 m_pages.erase(m_pages.begin());
81 settings.remove(QStringLiteral(
"Wizard/SkipUntilFinishedPage"));
85 QStringList PageList::entries()
const 87 return m_pages.keys();
90 QStringList PageList::paths()
const 92 return m_pages.values();
95 int PageList::index()
const 100 int PageList::numPages()
const 102 return m_pages.size();
105 QString PageList::prev()
108 return m_pages.values()[setIndex(m_index - 1)];
113 QString PageList::next()
115 if (m_index < m_pages.count() - 1)
116 return m_pages.values()[setIndex(m_index + 1)];
121 int PageList::setIndex(
int index)
124 Q_EMIT indexChanged();