~ubuntu-branches/ubuntu/oneiric/koffice/oneiric-updates

« back to all changes in this revision

Viewing changes to kexi/formeditor/factories/containerfactory.cpp

  • Committer: Bazaar Package Importer
  • Author(s): Alessandro Ghersi
  • Date: 2010-10-27 17:52:57 UTC
  • mfrom: (0.12.1 upstream)
  • Revision ID: james.westby@ubuntu.com-20101027175257-s04zqqk5bs8ckm9o
Tags: 1:2.2.83-0ubuntu1
* Merge with Debian git remaining changes:
 - Add build-deps on librcps-dev, opengtl-dev, libqtgtl-dev, freetds-dev,
   create-resources, libspnav-dev
 - Remove needless build-dep on libwv2-dev
 - koffice-libs recommends create-resources
 - krita recommends pstoedit
 - Keep our patches
* New upstream release 2.3 beta 3
  - Remove debian/patches fixed by upstream
  - Update install files

Show diffs side-by-side

added added

removed removed

Lines of Context:
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>
5
5
 
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
248
248
}
249
249
 
250
 
///////  Tab related command (to allow tab creation/deletion undoing)
251
 
 
252
 
InsertPageCommand::InsertPageCommand(KFormDesigner::Container *container, QWidget *parent)
253
 
        : KFormDesigner::Command()
254
 
{
255
 
    m_containername = container->widget()->objectName();
256
 
    m_form = container->form();
257
 
    m_parentname = parent->objectName();
258
 
    setText( i18n("Add Page") );
259
 
}
260
 
 
261
 
void
262
 
InsertPageCommand::execute()
263
 
{
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);
270
 
    }
271
 
 
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);
277
 
 
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));
290
 
    }
291
 
}
292
 
 
293
 
void InsertPageCommand::undo()
294
 
{
295
 
    QWidget *page = m_form->objectTree()->lookup(m_name)->widget();
296
 
    QWidget *parent = m_form->objectTree()->lookup(m_parentname)->widget();
297
 
 
298
 
    QWidgetList list;
299
 
    list.append(page);
300
 
    KFormDesigner::Command *com = new KFormDesigner::DeleteWidgetCommand(*m_form, list);
301
 
 
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);
309
 
        if (index > 0)
310
 
            index--;
311
 
        else if (index < (stack->count()-1))
312
 
            index++;
313
 
        else
314
 
            index = -1;
315
 
 
316
 
        if (index >= 0)
317
 
            stack->setCurrentIndex(index);
318
 
        stack->removeWidget(page);
319
 
    }
320
 
 
321
 
    com->execute();
322
 
    delete com;
323
 
}
324
 
 
325
250
/////// Sub forms ////////////////////////:
326
251
 
327
252
#if 0
379
304
 
380
305
void AddTabAction::slotTriggered()
381
306
{
382
 
    if (!m_receiver->inherits("QTabWidget"))
 
307
    if (!qobject_cast<QTabWidget*>(m_receiver))
383
308
        return;
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();
387
312
        delete command;
406
331
 
407
332
void RemoveTabAction::slotTriggered()
408
333
{
409
 
    if (!m_receiver->inherits("QTabWidget"))
 
334
    if (!qobject_cast<QTabWidget*>(m_receiver) || m_receiver->count() == 0)
410
335
        return;
411
 
    QWidget *w = m_receiver->currentWidget();
412
 
 
413
 
    QWidgetList list;
414
 
    list.append(w);
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);
418
338
}
419
339
 
429
349
 
430
350
void RenameTabAction::slotTriggered()
431
351
{
432
 
    if (!m_receiver->inherits("QTabWidget"))
 
352
    if (!qobject_cast<QTabWidget*>(m_receiver))
433
353
        return;
434
354
    QWidget *w = m_receiver->currentWidget();
435
355
    bool ok;
457
377
    {
458
378
        return;
459
379
    }
460
 
    KFormDesigner::Command *command = new InsertPageCommand(m_container, m_receiver);
 
380
    KFormDesigner::Command *command = new KFormDesigner::InsertPageCommand(m_container, m_receiver);
461
381
    if (!dynamic_cast<QStackedWidget*>(m_receiver)->currentWidget()) {
462
382
        command->execute();
463
383
        delete command;
905
825
}
906
826
 
907
827
bool
908
 
ContainerFactory::startInlineEditing(InlineEditorCreationArguments& args)
 
828
ContainerFactory::startInlineEditing(InlineEditorCreationArguments& /*args*/)
909
829
{
910
830
//2.0    m_container = container;
911
831
#if 0 // needed?
1157
1077
}
1158
1078
#endif
1159
1079
 
 
1080
KFormDesigner::ObjectTreeItem* ContainerFactory::selectableItem(KFormDesigner::ObjectTreeItem* item)
 
1081
{
 
1082
    if (item->parent() && item->parent()->widget()) {
 
1083
        if (qobject_cast<QTabWidget*>(item->parent()->widget())) {
 
1084
            // tab widget's page
 
1085
            return item->parent();
 
1086
        }
 
1087
    }
 
1088
    return item;
 
1089
}
 
1090
 
1160
1091
K_EXPORT_KEXI_FORM_WIDGET_FACTORY_PLUGIN(ContainerFactory, containers)
1161
1092
 
1162
1093
#include "containerfactory.moc"