1
1
/* This file is part of the KDE project
2
2
Copyright (C) 2003 Lucijan Busch <lucijan@kde.org>
3
3
Copyright (C) 2004 Cedric Pasteur <cedric.pasteur@free.fr>
4
Copyright (C) 2006-2009 Jarosław Staniek <staniek@kde.org>
4
Copyright (C) 2006-2010 Jarosław Staniek <staniek@kde.org>
6
6
This library is free software; you can redistribute it and/or
7
7
modify it under the terms of the GNU Library General Public
247
247
return QSize(700, 50); // default
250
/////// Tab related command (to allow tab creation/deletion undoing)
252
InsertPageCommand::InsertPageCommand(KFormDesigner::Container *container, QWidget *parent)
253
: KFormDesigner::Command()
255
m_containername = container->widget()->objectName();
256
m_form = container->form();
257
m_parentname = parent->objectName();
258
setText( i18n("Add Page") );
262
InsertPageCommand::execute()
264
KFormDesigner::Container *container = m_form->objectTree()->lookup(m_containername)->container();
265
QWidget *parent = m_form->objectTree()->lookup(m_parentname)->widget();
266
if (m_name.isEmpty()) {
267
m_name = container->form()->objectTree()->generateUniqueName(
268
container->form()->library()->displayName("QWidget").toLatin1(),
269
/*!numberSuffixRequired*/false);
272
QWidget *page = container->form()->library()->createWidget(
273
"QWidget", parent, m_name.toLatin1(), container);
274
page->setAutoFillBackground(true);
275
// page->setPaletteBackgroundColor(Qt::red);
276
KFormDesigner::ObjectTreeItem *item = container->form()->objectTree()->lookup(m_name);
278
QByteArray classname = parent->metaObject()->className();
279
if (classname == "KFDTabWidget") {
280
TabWidgetBase *tab = dynamic_cast<TabWidgetBase*>(parent);
281
QString n = i18n("Page %1", tab->count() + 1);
282
tab->addTab(page, n);
283
tab->setCurrentWidget(page);
284
item->addModifiedProperty("title", n);
285
} else if (classname == "QStackedWidget" || /* compat */ classname == "QWidgetStack") {
286
QStackedWidget *stack = dynamic_cast<QStackedWidget*>(parent);
287
stack->addWidget(page);
288
stack->setCurrentWidget(page);
289
item->addModifiedProperty("stackIndex", stack->indexOf(page));
293
void InsertPageCommand::undo()
295
QWidget *page = m_form->objectTree()->lookup(m_name)->widget();
296
QWidget *parent = m_form->objectTree()->lookup(m_parentname)->widget();
300
KFormDesigner::Command *com = new KFormDesigner::DeleteWidgetCommand(*m_form, list);
302
QByteArray classname = parent->metaObject()->className();
303
if (classname == "KFDTabWidget") {
304
TabWidgetBase *tab = dynamic_cast<TabWidgetBase*>(parent);
305
tab->removeTab(tab->indexOf(page));
306
} else if (classname == "QStackedWidget" || /* compat */ classname == "QWidgetStack") {
307
QStackedWidget *stack = dynamic_cast<QStackedWidget*>(parent);
308
int index = stack->indexOf(page);
311
else if (index < (stack->count()-1))
317
stack->setCurrentIndex(index);
318
stack->removeWidget(page);
325
250
/////// Sub forms ////////////////////////:
380
305
void AddTabAction::slotTriggered()
382
if (!m_receiver->inherits("QTabWidget"))
307
if (!qobject_cast<QTabWidget*>(m_receiver))
384
KFormDesigner::Command *command = new InsertPageCommand(m_container, m_receiver);
309
KFormDesigner::Command *command = new KFormDesigner::InsertPageCommand(m_container, m_receiver);
385
310
if (m_receiver->count() == 0) {
386
311
command->execute();
407
332
void RemoveTabAction::slotTriggered()
409
if (!m_receiver->inherits("QTabWidget"))
334
if (!qobject_cast<QTabWidget*>(m_receiver) || m_receiver->count() == 0)
411
QWidget *w = m_receiver->currentWidget();
415
KFormDesigner::Command *com = new KFormDesigner::DeleteWidgetCommand(*m_container->form(), list);
416
m_receiver->removeTab(m_receiver->indexOf(w));
336
KFormDesigner::Command *com = new KFormDesigner::RemovePageCommand(m_container, m_receiver);
417
337
m_container->form()->addCommand(com);