You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
calculate-utils-2.2-install.../src/pagemanager.cpp

148 lines
2.8 KiB

#include "pagemanager.h"
#include <QStackedWidget>
#include <QLabel>
#include <QApplication>
#include <QEvent>
#include <QDebug>
#include "installerpage.h"
PageManager::PageManager(QStackedWidget* stackedWidget, QLabel* listLabel, QObject* parent) :
QObject(parent),
m_StackWidget(stackedWidget),
m_ListLabel(listLabel),
m_isSinglePage(false)
{
Q_ASSERT_X( stackedWidget != 0, "PageManager::PageManager", "stackedWidget pointer is 0");
Q_ASSERT_X( listLabel != 0, "PageManager::PageManager", "listLabel pointer is 0");
m_ListLabel->setWordWrap(true);
m_ListLabel->setAlignment ( Qt::AlignLeft | Qt::AlignTop );
}
PageManager::~PageManager()
{
// clear stack widget
removeStackedPage();
qDeleteAll(m_Pages);
}
void PageManager::addPage(InstallerPage* page)
{
Q_ASSERT_X( page != 0, "PageManager::addPage", "page pointer is 0");
connect( page, SIGNAL(changeNext(bool)), this, SIGNAL(changeNext(bool)) );
connect( page, SIGNAL(changePrev(bool)), this, SIGNAL(changePrev(bool)) );
connect( page, SIGNAL(skipNext()), this, SLOT(showNext()) );
m_Pages.push_back(page);
m_CurPage = m_Pages.begin();
pageUpdate();
}
unsigned int PageManager::getPageCount()
{
return m_Pages.count();
}
void PageManager::showOnce(InstallerPage* page)
{
Q_ASSERT_X( page != 0, "PageManager::showOnce", "page pointer is 0");
if (page)
{
removeStackedPage();
m_isSinglePage = true;
m_StackWidget->addWidget( page );
m_StackWidget->setCurrentIndex(0);
page->show();
}
}
void PageManager::showFirst()
{
}
void PageManager::showNext()
{
if ((*m_CurPage)->validate())
{
if ( !m_isSinglePage && (m_CurPage != m_Pages.end()) && ((m_CurPage + 1) != m_Pages.end()) )
{
++m_CurPage;
pageUpdate();
}
if (m_isSinglePage)
{
m_isSinglePage = false;
pageUpdate();
}
}
}
void PageManager::showPrevious()
{
if ( !m_isSinglePage && (m_CurPage != m_Pages.begin()) )
{
--m_CurPage;
pageUpdate();
}
if (m_isSinglePage)
{
m_isSinglePage = false;
pageUpdate();
}
}
void PageManager::pageUpdate()
{
QString label;
removeStackedPage();
m_StackWidget->addWidget( *m_CurPage );
m_StackWidget->setCurrentIndex(0);
foreach(InstallerPage* page, m_Pages)
{
QString title = page->getTitle();
page->clearActive();
if (title == (*m_CurPage)->getTitle())
{
title = "<b>" + title + "</b>";
page->setActive();
// restore active key settings
emit changeNext(true);
emit changePrev(true);
page->show();
}
title += "<br>";
label += title;
}
m_ListLabel->setText( label );
}
void PageManager::removeStackedPage()
{
QWidget* currWidget = m_StackWidget->currentWidget();
if (currWidget)
{
m_StackWidget->removeWidget( currWidget );
}
}
void PageManager::retranslatePages()
{
foreach(InstallerPage* page, m_Pages)
page->retranslateUi();
pageUpdate();
}