20#include "kptwbsdefinitionpanel.h"
21#include "kptwbsdefinition.h"
22#include "kptcommand.h"
28#include <tqcombobox.h>
29#include <tqlineedit.h>
30#include <tqcheckbox.h>
31#include <tqgroupbox.h>
32#include <tqmemarray.h>
33#include <tqpushbutton.h>
34#include <tqstringlist.h>
41WBSDefinitionPanel::WBSDefinitionPanel(WBSDefinition &def, TQWidget *p,
const char *n)
42 : WBSDefinitionPanelBase(p, n),
45 removeBtn->setEnabled(
false);
47 TQStringList codeList = def.codeList();
48 defaultSeparator->setText(def.defaultSeparator());
49 defaultCode->insertStringList(codeList);
50 defaultCode->setCurrentItem(def.defaultCodeIndex());
51 defaultCode->setFocus();
53 levelsGroup->setChecked(def.isLevelsDefEnabled());
55 const TQMap<int, WBSDefinition::CodeDef> &lev = def.levelsDef();
56 levelsTable->setNumRows(lev.count());
57 kdDebug()<<
"Map size="<<lev.count()<<endl;
58 TQMap<int, WBSDefinition::CodeDef>::const_iterator it;
59 for (it = lev.begin(); it != lev.end(); ++it) {
60 levelsTable->verticalHeader()->setLabel(i, TQString(
"%1").arg(it.key()));
61 TQComboTableItem *item =
new TQComboTableItem(levelsTable, codeList,
true);
62 item->setCurrentItem(it.data().code);
63 levelsTable->setItem(i, 0, item);
64 levelsTable->setText(i, 1, it.data().separator);
67 levelsTable->setColumnStretchable(0,
true);
68 slotLevelChanged(level->value());
70 connect(defaultCode, TQ_SIGNAL(activated(
int)), TQ_SLOT(slotChanged()));
71 connect(defaultSeparator, TQ_SIGNAL(textChanged(
const TQString&)), TQ_SLOT(slotChanged()));
72 connect(levelsGroup, TQ_SIGNAL(toggled(
bool)), TQ_SLOT(slotLevelsGroupToggled(
bool)));
73 connect(levelsTable, TQ_SIGNAL(valueChanged(
int,
int)), TQ_SLOT(slotChanged()));
74 connect(levelsTable, TQ_SIGNAL(selectionChanged()), TQ_SLOT(slotSelectionChanged()));
75 connect(level, TQ_SIGNAL(valueChanged(
int)), TQ_SLOT(slotLevelChanged(
int)));
76 connect(removeBtn, TQ_SIGNAL(clicked()), TQ_SLOT(slotRemoveBtnClicked()));
77 connect(addBtn, TQ_SIGNAL(clicked()), TQ_SLOT(slotAddBtnClicked()));
80void WBSDefinitionPanel::setStartValues(Part *) {
83KMacroCommand *WBSDefinitionPanel::buildCommand(Part *) {
84 KMacroCommand *cmd =
new KMacroCommand(i18n(
"Modify WBS Definition"));
89bool WBSDefinitionPanel::ok() {
90 m_def.setDefaultCode(defaultCode->currentItem());
91 m_def.setDefaultSeparator(defaultSeparator->text());
93 m_def.setLevelsDefEnabled(levelsGroup->isChecked());
95 m_def.clearLevelsDef();
96 for (
int i = 0; i < levelsTable->numRows(); ++i) {
97 m_def.setLevelsDef(levelsTable->verticalHeader()->label(i).toInt(), levelsTable->text(i, 0), levelsTable->text(i, 1));
102void WBSDefinitionPanel::slotChanged() {
106void WBSDefinitionPanel::slotSelectionChanged() {
108 bool rowSelected =
false;
109 for (
int i=0; i < levelsTable->numRows(); ++i) {
110 if (levelsTable->isRowSelected(i,
true)) {
111 s += TQString(
"Row[%1]=selected ").arg(i);
115 removeBtn->setEnabled(rowSelected);
116 if (s.isEmpty()) s =
"None selected";
117 kdDebug()<<k_funcinfo<<s<<endl;
120void WBSDefinitionPanel::slotRemoveBtnClicked() {
121 TQMemArray<int> rows;
122 for (
int i=0; i < levelsTable->numRows(); ++i) {
123 if (levelsTable->isRowSelected(i)) {
124 rows.resize(rows.size()+1);
125 rows[rows.size()-1] = i;
128 levelsTable->removeRows(rows);
129 removeBtn->setEnabled(
false);
130 slotLevelChanged(level->value());
133void WBSDefinitionPanel::slotAddBtnClicked() {
134 kdDebug()<<k_funcinfo<<endl;
135 int i=levelsTable->numRows()-1;
136 for (; i >= 0; --i) {
137 kdDebug()<<k_funcinfo<<
"Checking row["<<i<<
"]="<<levelsTable->verticalHeader()->label(i)<<
" with "<<level->value()<<endl;
138 if (level->value() > levelsTable->verticalHeader()->label(i).toInt()) {
143 levelsTable->insertRows(i);
144 levelsTable->verticalHeader()->setLabel(i, TQString(
"%1").arg(level->value()));
145 TQComboTableItem *item =
new TQComboTableItem(levelsTable, m_def.codeList(),
true);
146 levelsTable->setItem(i, 0, item);
147 levelsTable->clearSelection();
148 levelsTable->selectCells(i, 0, i, 0);
149 levelsTable->setCurrentCell(i, 0);
150 addBtn->setEnabled(
false);
153 kdDebug()<<k_funcinfo<<
"Added row="<<i<<
" level="<<level->value()<<endl;
156void WBSDefinitionPanel::slotLevelChanged(
int value) {
157 for (
int i=0; i < levelsTable->numRows(); ++i) {
158 if (value == levelsTable->verticalHeader()->label(i).toInt()) {
159 addBtn->setEnabled(
false);
163 addBtn->setEnabled(levelsGroup->isChecked());
166void WBSDefinitionPanel::slotLevelsGroupToggled(
bool ) {
167 slotLevelChanged(level->value());
173#include "kptwbsdefinitionpanel.moc"