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.
408 lines
12 KiB
408 lines
12 KiB
/***************************************************************************
|
|
eventeditordlg.cpp - description
|
|
-------------------
|
|
begin : Mon Jul 12 2004
|
|
copyright : (C) 2004 Andras Mantia <amantia@kde.org>
|
|
***************************************************************************/
|
|
|
|
/***************************************************************************
|
|
* *
|
|
* 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 <tqlabel.h>
|
|
#include <tqregexp.h>
|
|
#include <tqtooltip.h>
|
|
|
|
//kde includes
|
|
#include <kaction.h>
|
|
#include <kcombobox.h>
|
|
#include <klocale.h>
|
|
|
|
//app includes
|
|
#include "eventeditordlg.h"
|
|
#include "qpevents.h"
|
|
#include "project.h"
|
|
#include "tagaction.h"
|
|
|
|
extern TQString simpleMemberStr;
|
|
extern TQString taskLeaderStr;
|
|
extern TQString teamLeaderStr;
|
|
extern TQString subprojectLeaderStr;
|
|
|
|
EventEditorDlg::EventEditorDlg(KActionCollection *actionCollection, TQWidget* parent, const char* name, WFlags fl)
|
|
: EventEditorDlgS(parent,name,fl)
|
|
{
|
|
m_actionCollection = actionCollection;
|
|
eventCombo->insertStringList(QPEvents::ref()->eventNames());
|
|
actionCombo->insertStringList(QPEvents::ref()->actionNames());
|
|
slotActionChanged(actionCombo->currentText());
|
|
}
|
|
|
|
EventEditorDlg::~EventEditorDlg()
|
|
{
|
|
}
|
|
|
|
void EventEditorDlg::setEvent(const TQString &name)
|
|
{
|
|
for (int i = 0; i < eventCombo->count(); i++)
|
|
{
|
|
if (eventCombo->text(i) == name)
|
|
{
|
|
eventCombo->setCurrentItem(i);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
void EventEditorDlg::setAction(const TQString &name)
|
|
{
|
|
for (int i = 0; i < actionCombo->count(); i++)
|
|
{
|
|
if (actionCombo->text(i) == name)
|
|
{
|
|
actionCombo->setCurrentItem(i);
|
|
slotActionChanged(name);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
TQString EventEditorDlg::argument1()
|
|
{
|
|
if (argument1Combo->isEnabled())
|
|
{
|
|
TQString s = argument1Combo->currentText();
|
|
TQString actionType = actionCombo->currentText();
|
|
if (actionType == QPEvents::ref()->fullActionName("email"))
|
|
{
|
|
if (s == i18n(teamLeaderStr.utf8()))
|
|
s = "teamleader";
|
|
else
|
|
if (s.startsWith(i18n(taskLeaderStr.utf8()) +" - "))
|
|
{
|
|
s.remove(i18n(taskLeaderStr.utf8()) +" - ");
|
|
s.prepend("taskleader-");
|
|
} else
|
|
if (s.startsWith(i18n(subprojectLeaderStr.utf8()) +" - "))
|
|
{
|
|
s.remove(i18n(subprojectLeaderStr.utf8()) +" - ");
|
|
s.prepend("subprojectleader-");
|
|
}
|
|
return s;
|
|
} else
|
|
if (actionType == QPEvents::ref()->fullActionName("script"))
|
|
{
|
|
TQString s = argument1Combo->currentText();
|
|
for (TQMap<TQString, TQString>::ConstIterator it = m_scriptActions.constBegin(); it != m_scriptActions.constEnd(); ++it)
|
|
{
|
|
if (it.data() == s)
|
|
{
|
|
s = it.key();
|
|
break;
|
|
}
|
|
}
|
|
return s;
|
|
} else
|
|
if (actionType == QPEvents::ref()->fullActionName("action"))
|
|
{
|
|
TQString s = argument1Combo->currentText();
|
|
for (TQMap<TQString, TQString>::ConstIterator it = m_otherActions.constBegin(); it != m_otherActions.constEnd(); ++it)
|
|
{
|
|
if (it.data() == s)
|
|
{
|
|
s = it.key();
|
|
break;
|
|
}
|
|
}
|
|
return s;
|
|
} else
|
|
|
|
return s;
|
|
}
|
|
|
|
return TQString();
|
|
}
|
|
|
|
TQString EventEditorDlg::argument2()
|
|
{
|
|
if (argument2Combo->isEnabled())
|
|
{
|
|
TQString actionType = actionCombo->currentText();
|
|
if (actionType == QPEvents::ref()->fullActionName("log"))
|
|
{
|
|
int id = argument2Combo->currentItem();
|
|
if (id == 0)
|
|
return "full";
|
|
else
|
|
return "minimal";
|
|
} else
|
|
if (actionType == QPEvents::ref()->fullActionName("script"))
|
|
{
|
|
int id = argument2Combo->currentItem();
|
|
if (id == 0)
|
|
return "yes";
|
|
else
|
|
return "no";
|
|
}
|
|
return argument2Combo->currentText();
|
|
} else
|
|
return TQString();
|
|
}
|
|
|
|
TQString EventEditorDlg::argument3()
|
|
{
|
|
if (argument3Combo->isEnabled())
|
|
{
|
|
TQString actionType = actionCombo->currentText();
|
|
if (actionType == QPEvents::ref()->fullActionName("log"))
|
|
{
|
|
int id = argument3Combo->currentItem();
|
|
if (id == 0)
|
|
return "create_new";
|
|
else
|
|
return "append";
|
|
}
|
|
return argument3Combo->currentText();
|
|
} else
|
|
return TQString();
|
|
}
|
|
|
|
TQString EventEditorDlg::argument4()
|
|
{
|
|
if (argument4Combo->isEnabled())
|
|
{
|
|
return argument4Combo->currentText();
|
|
} else
|
|
return TQString();
|
|
}
|
|
|
|
void EventEditorDlg::setArguments(const TQStringList& arguments)
|
|
{
|
|
TQString actionType = actionCombo->currentText();
|
|
if (actionType == QPEvents::ref()->fullActionName("email"))
|
|
{
|
|
TQString s = arguments[0];
|
|
if (s == "teamleader")
|
|
s = i18n(teamLeaderStr.utf8());
|
|
else
|
|
if (s.startsWith("taskleader-"))
|
|
{
|
|
s.remove("taskleader-");
|
|
s.prepend(i18n(taskLeaderStr.utf8()) +" - ");
|
|
} else
|
|
if (s.startsWith("subprojectleader-"))
|
|
{
|
|
s.remove("subprojectleader-");
|
|
s.prepend(i18n(subprojectLeaderStr.utf8()) +" - ");
|
|
}
|
|
if (argument1Combo->contains(s))
|
|
{
|
|
for (int i = 0; i < argument1Combo->count(); i++)
|
|
{
|
|
if (argument1Combo->text(i) == s)
|
|
{
|
|
argument1Combo->setCurrentItem(i);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
argument1Combo->insertItem(s, 0);
|
|
argument1Combo->setCurrentItem(0);
|
|
}
|
|
} else
|
|
if (actionType == QPEvents::ref()->fullActionName("script"))
|
|
{
|
|
TQString s = arguments[0];
|
|
if (m_scriptActions.contains(s))
|
|
s = m_scriptActions[s];
|
|
if (argument1Combo->contains(s))
|
|
{
|
|
for (int i = 0; i < argument1Combo->count(); i++)
|
|
{
|
|
if (argument1Combo->text(i) == s)
|
|
{
|
|
argument1Combo->setCurrentItem(i);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
argument1Combo->insertItem(s, 0);
|
|
argument1Combo->setCurrentItem(0);
|
|
}
|
|
s = arguments[1];
|
|
if (s == "yes")
|
|
argument2Combo->setCurrentItem(0);
|
|
else if (s == "no")
|
|
argument2Combo->setCurrentItem(1);
|
|
return; //setup for script arguments completed
|
|
} else
|
|
if (actionType == QPEvents::ref()->fullActionName("action"))
|
|
{
|
|
TQString s = arguments[0];
|
|
if (m_otherActions.contains(s))
|
|
s = m_otherActions[s];
|
|
if (argument1Combo->contains(s))
|
|
{
|
|
for (int i = 0; i < argument1Combo->count(); i++)
|
|
{
|
|
if (argument1Combo->text(i) == s)
|
|
{
|
|
argument1Combo->setCurrentItem(i);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
argument1Combo->insertItem(s, 0);
|
|
argument1Combo->setCurrentItem(0);
|
|
}
|
|
} else
|
|
if (actionType == QPEvents::ref()->fullActionName("log"))
|
|
{
|
|
argument1Combo->insertItem(arguments[0], 0);
|
|
argument1Combo->setCurrentItem(0);
|
|
TQString s = arguments[1];
|
|
if (s == "full")
|
|
argument2Combo->setCurrentItem(0);
|
|
else if (s == "minimal")
|
|
argument2Combo->setCurrentItem(1);
|
|
s = arguments[2];
|
|
if (s == "create_new")
|
|
argument3Combo->setCurrentItem(0);
|
|
else if (s == "append")
|
|
argument3Combo->setCurrentItem(1);
|
|
return; //setup for log arguments completed
|
|
} else
|
|
{
|
|
argument1Combo->insertItem(arguments[0], 0);
|
|
argument1Combo->setCurrentItem(0);
|
|
}
|
|
argument2Combo->insertItem(arguments[1], 0);
|
|
argument2Combo->setCurrentItem(0);
|
|
argument3Combo->insertItem(arguments[2], 0);
|
|
argument3Combo->setCurrentItem(0);
|
|
argument4Combo->insertItem(arguments[3], 0);
|
|
argument4Combo->setCurrentItem(0);
|
|
}
|
|
|
|
void EventEditorDlg::resetArgumentWidgets(TQLabel *label, KComboBox *combo)
|
|
{
|
|
label->setText(i18n("Argument:"));
|
|
label->setEnabled(false);
|
|
combo->setEnabled(false);
|
|
combo->setEditable(true);
|
|
combo->clear();
|
|
TQToolTip::remove(combo);
|
|
}
|
|
|
|
void EventEditorDlg::slotActionChanged(const TQString &name)
|
|
{
|
|
resetArgumentWidgets(argument1Label, argument1Combo);
|
|
resetArgumentWidgets(argument2Label, argument2Combo);
|
|
resetArgumentWidgets(argument3Label, argument3Combo);
|
|
resetArgumentWidgets(argument4Label, argument4Combo);
|
|
if (name == QPEvents::ref()->fullActionName("email"))
|
|
{
|
|
argument1Label->setEnabled(true);
|
|
argument1Label->setText(i18n("Receiver:"));
|
|
argument1Combo->setEnabled(true);
|
|
argument1Combo->insertItem(i18n(teamLeaderStr.utf8()));
|
|
TQValueList<SubProject> *subprojects = Project::ref()->subprojects();
|
|
for (uint i = 0; i < subprojects->count(); i++)
|
|
{
|
|
TQString s = (*subprojects)[i].name;
|
|
if (!Project::ref()->subprojectLeader(s).name.isEmpty())
|
|
argument1Combo->insertItem(i18n(subprojectLeaderStr.utf8()) + " - " + s);
|
|
}
|
|
TQStringList tasks = Project::ref()->tasks();
|
|
for (uint i = 0; i < tasks.count(); i++)
|
|
{
|
|
argument1Combo->insertItem(i18n(taskLeaderStr.utf8()) + " - " + tasks[i]);
|
|
}
|
|
} else
|
|
if (name == QPEvents::ref()->fullActionName("log"))
|
|
{
|
|
argument1Label->setEnabled(true);
|
|
argument1Label->setText(i18n("Log file:"));
|
|
argument1Combo->setEnabled(true);
|
|
TQToolTip::add(argument1Combo, i18n("A relative file to the project folder or a file outside of the project folder in which case the full path must be specified."));
|
|
argument2Label->setEnabled(true);
|
|
argument2Label->setText(i18n("Detail:"));
|
|
argument2Combo->setEnabled(true);
|
|
argument2Combo->setEditable(false);
|
|
argument2Combo->insertItem(i18n("Full"), 0);
|
|
argument2Combo->insertItem(i18n("Minimal"), 1);
|
|
argument3Label->setEnabled(true);
|
|
argument3Label->setText(i18n("Behavior:"));
|
|
argument3Combo->setEnabled(true);
|
|
argument3Combo->setEditable(false);
|
|
argument3Combo->insertItem(i18n("Create New Log"), 0);
|
|
argument3Combo->insertItem(i18n("Append to Existing Log"), 1);
|
|
} else
|
|
if (name == QPEvents::ref()->fullActionName("script"))
|
|
{
|
|
argument1Label->setEnabled(true);
|
|
argument1Label->setText(i18n("Action name:"));
|
|
TagAction *action = 0L;
|
|
TQString s;
|
|
TQStringList items;
|
|
TQRegExp r("\\&(?!\\&)");
|
|
for (uint i = 0; i < m_actionCollection->count(); i++)
|
|
{
|
|
action = dynamic_cast<TagAction*>(m_actionCollection->action(i));
|
|
if (action && action->type() == "script")
|
|
{
|
|
s = action->text().replace(r, "");
|
|
items.append(s);
|
|
m_scriptActions[action->name()] = s;
|
|
}
|
|
}
|
|
items.sort();
|
|
argument1Combo->insertStringList(items);
|
|
argument1Combo->setEnabled(true);
|
|
argument2Label->setEnabled(true);
|
|
argument2Label->setText(i18n("Blocking:"));
|
|
argument2Combo->setEnabled(true);
|
|
argument2Combo->setEditable(false);
|
|
argument2Combo->insertItem(i18n("Yes"), 0);
|
|
argument2Combo->insertItem(i18n("No"), 1);
|
|
} else
|
|
if (name == QPEvents::ref()->fullActionName("action"))
|
|
{
|
|
argument1Label->setEnabled(true);
|
|
argument1Label->setText(i18n("Action name:"));
|
|
TagAction *action = 0L;
|
|
TQString s;
|
|
TQRegExp r("\\&(?!\\&)");
|
|
TQStringList items;
|
|
for (uint i = 0; i < m_actionCollection->count(); i++)
|
|
{
|
|
KAction *a = m_actionCollection->action(i);
|
|
action = dynamic_cast<TagAction*>(a);
|
|
if (!action || action->type() != "script")
|
|
{
|
|
s = a->text().replace(r, "");
|
|
items.append(s);
|
|
m_otherActions[a->name()] = s;
|
|
}
|
|
}
|
|
items.sort();
|
|
argument1Combo->insertStringList(items);
|
|
argument1Combo->setEnabled(true);
|
|
}
|
|
}
|
|
|
|
#include "eventeditordlg.moc"
|
|
|