void InsertPageCommand::undo() { QWidget *page = m_form->objectTree()->lookup(m_name)->widget(); QWidget *parent = m_form->objectTree()->lookup(m_parentname)->widget(); QWidgetList list; list.append(page); KFormDesigner::Command *com = new KFormDesigner::DeleteWidgetCommand(*m_form, list); QByteArray classname = parent->metaObject()->className(); if (classname == "KFDTabWidget") { TabWidgetBase *tab = dynamic_cast<TabWidgetBase*>(parent); tab->removeTab(tab->indexOf(page)); } else if (classname == "QStackedWidget" || /* compat */ classname == "QWidgetStack") { QStackedWidget *stack = dynamic_cast<QStackedWidget*>(parent); int index = stack->indexOf(page); if (index > 0) index--; else if (index < (stack->count()-1)) index++; else index = -1; if (index >= 0) stack->setCurrentIndex(index); stack->removeWidget(page); } com->execute(); delete com; }
void AddTabAction::slotTriggered() { if (!qobject_cast<QTabWidget*>(m_receiver)) return; KFormDesigner::Command *command = new KFormDesigner::InsertPageCommand(m_container, m_receiver); if (m_receiver->count() == 0) { command->execute(); delete command; } else { m_container->form()->addCommand(command); } }
void AddStackPageAction::slotTriggered() { if ( !KexiUtils::objectIsA(m_receiver, "QStackedWidget") && /* compat */ !KexiUtils::objectIsA(m_receiver, "QWidgetStack")) { return; } KFormDesigner::Command *command = new KFormDesigner::InsertPageCommand(m_container, m_receiver); if (!qobject_cast<QStackedWidget*>(m_receiver)->currentWidget()) { command->execute(); delete command; } else { m_container->form()->addCommand(command); } }