diff options
Diffstat (limited to 'quanta/project/eventconfigurationdlg.cpp')
-rw-r--r-- | quanta/project/eventconfigurationdlg.cpp | 151 |
1 files changed, 151 insertions, 0 deletions
diff --git a/quanta/project/eventconfigurationdlg.cpp b/quanta/project/eventconfigurationdlg.cpp new file mode 100644 index 00000000..e85ce7f6 --- /dev/null +++ b/quanta/project/eventconfigurationdlg.cpp @@ -0,0 +1,151 @@ +/*************************************************************************** + eventconfigurationdlg.cpp - description + ------------------- + begin : Mon Jul 12 2004 + copyright : (C) 2004 Andras Mantia <[email protected]> + ***************************************************************************/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ + + //qt includes +#include <qdom.h> + +//kde includes +#include <kcombobox.h> +#include <kdialogbase.h> +#include <klistview.h> +#include <klocale.h> +#include <kmessagebox.h> + +//app includes +#include "eventconfigurationdlg.h" +#include "eventeditordlg.h" +#include "qpevents.h" + +EventConfigurationDlg::EventConfigurationDlg(KActionCollection *actionCollection, QWidget* parent, const char* name, WFlags fl) +: EventConfigurationDlgS(parent,name,fl) +{ + m_actionCollection = actionCollection; +} + +EventConfigurationDlg::~EventConfigurationDlg() +{ +} + +void EventConfigurationDlg::initEvents(EventActions *events) +{ + QListViewItem *item; + for (EventActions::ConstIterator it = events->constBegin(); it != events->constEnd(); ++it) + { + QValueList<EventAction> evList = it.data(); + for (QValueList<EventAction>::ConstIterator it2 = evList.constBegin(); it2 != evList.constEnd(); ++it2) + { + EventAction ev = *it2; + item = new QListViewItem(eventsListView, QPEvents::ref()->fullEventName(it.key()), QPEvents::ref()->fullActionName(ev.action)); + int argcount = ev.arguments.count(); + if (argcount > 0) + item->setText(2, ev.arguments[0]); + if (argcount > 1) + item->setText(3, ev.arguments[1]); + if (argcount > 2) + item->setText(4, ev.arguments[2]); + if (argcount > 3) + item->setText(5, ev.arguments[3]); + } + } +} + +void EventConfigurationDlg::saveEvents(QDomDocument dom) +{ + QDomNode projectNode = dom.firstChild().firstChild(); + QDomNode eventsNode = projectNode.namedItem("events"); + projectNode.removeChild(eventsNode); + eventsNode = dom.createElement("events"); + projectNode.appendChild(eventsNode); + QDomElement node; + QListViewItemIterator it(eventsListView); + QListViewItem *item; + while (it.current()) + { + item = it.current(); + node = dom.createElement("event"); + eventsNode.appendChild(node); + QDomElement el = node.toElement(); + el.setAttribute("name", QPEvents::ref()->eventName(item->text(0))); + el.setAttribute("action", QPEvents::ref()->actionName(item->text(1))); + if (el.attribute("action") == "script" || el.attribute("action") == "action") + el.setAttribute("type", "external"); + else + el.setAttribute("type", "internal"); + for (uint i = 2; i < 6; i++) + { + QString s = item->text(i); + if (s.isEmpty()) + s = "--not set--"; + QDomNode argNode = dom.createElement("argument"); + node.appendChild(argNode); + argNode.appendChild(dom.createTextNode(s)); + } + ++it; + } +} + +void EventConfigurationDlg::slotAddEvent() +{ + KDialogBase editDlg(this, "add_event", true, i18n("New Event"), KDialogBase::Ok | KDialogBase::Cancel); + EventEditorDlg eventDlg(m_actionCollection, &editDlg); + editDlg.setMainWidget(&eventDlg); + if (editDlg.exec()) + { + QListViewItem *item = new QListViewItem(eventsListView); + item->setText(0, eventDlg.eventCombo->currentText()); + item->setText(1, eventDlg.actionCombo->currentText()); + item->setText(2, eventDlg.argument1()); + item->setText(3, eventDlg.argument2()); + item->setText(4, eventDlg.argument3()); + item->setText(5, eventDlg.argument4()); + } +} + +void EventConfigurationDlg::slotEditEvent() +{ + QListViewItem *item = eventsListView->currentItem(); + if (!item) return; + KDialogBase editDlg(this, "edit_event", true, i18n("Edit Event"), KDialogBase::Ok | KDialogBase::Cancel); + EventEditorDlg eventDlg(m_actionCollection, &editDlg); + editDlg.setMainWidget(&eventDlg); + eventDlg.setEvent(item->text(0)); + eventDlg.setAction(item->text(1)); + QStringList arguments; + arguments << item->text(2) << item->text(3) << item->text(4) << item->text(5); + eventDlg.setArguments(arguments); + if (editDlg.exec()) + { + item->setText(0, eventDlg.eventCombo->currentText()); + item->setText(1, eventDlg.actionCombo->currentText()); + item->setText(2, eventDlg.argument1()); + item->setText(3, eventDlg.argument2()); + item->setText(4, eventDlg.argument3()); + item->setText(5, eventDlg.argument4()); + } +} + +void EventConfigurationDlg::slotDeleteEvent() +{ + QListViewItem *item = eventsListView->currentItem(); + if (!item) return; + if (KMessageBox::warningContinueCancel(this, i18n("<qt>Are you sure that you want to remove the configuration of the <b>%1</b> event?</qt>").arg(item->text(0)), i18n("Delete Event Configuration"),KStdGuiItem::del()) == KMessageBox::Continue) + { + delete item; + } +} + +#include "eventconfigurationdlg.moc" + |