/* This file is part of the KDE project Copyright (C) 2005 Dag Andersen This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; version 2 of the License. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. */ #include "kptwbsdefinitionpanel.h" #include "kptwbsdefinition.h" #include "kptcommand.h" #include "kptpart.h" #include #include #include #include #include #include #include #include #include #include #include namespace KPlato { WBSDefinitionPanel::WBSDefinitionPanel(WBSDefinition &def, TQWidget *p, const char *n) : WBSDefinitionPanelBase(p, n), m_def(def) { removeBtn->setEnabled(false); TQStringList codeList = def.codeList(); defaultSeparator->setText(def.defaultSeparator()); defaultCode->insertStringList(codeList); defaultCode->setCurrentItem(def.defaultCodeIndex()); defaultCode->setFocus(); levelsGroup->setChecked(def.isLevelsDefEnabled()); int i = 0; const TQMap &lev = def.levelsDef(); levelsTable->setNumRows(lev.count()); kdDebug()<<"Map size="<::const_iterator it; for (it = lev.begin(); it != lev.end(); ++it) { levelsTable->verticalHeader()->setLabel(i, TQString("%1").arg(it.key())); TQComboTableItem *item = new TQComboTableItem(levelsTable, codeList, true); item->setCurrentItem(it.data().code); levelsTable->setItem(i, 0, item); levelsTable->setText(i, 1, it.data().separator); i++; } levelsTable->setColumnStretchable(0, true); slotLevelChanged(level->value()); connect(defaultCode, TQ_SIGNAL(activated(int)), TQ_SLOT(slotChanged())); connect(defaultSeparator, TQ_SIGNAL(textChanged(const TQString&)), TQ_SLOT(slotChanged())); connect(levelsGroup, TQ_SIGNAL(toggled(bool)), TQ_SLOT(slotLevelsGroupToggled(bool))); connect(levelsTable, TQ_SIGNAL(valueChanged(int, int)), TQ_SLOT(slotChanged())); connect(levelsTable, TQ_SIGNAL(selectionChanged()), TQ_SLOT(slotSelectionChanged())); connect(level, TQ_SIGNAL(valueChanged(int)), TQ_SLOT(slotLevelChanged(int))); connect(removeBtn, TQ_SIGNAL(clicked()), TQ_SLOT(slotRemoveBtnClicked())); connect(addBtn, TQ_SIGNAL(clicked()), TQ_SLOT(slotAddBtnClicked())); } void WBSDefinitionPanel::setStartValues(Part */*part*/) { } KMacroCommand *WBSDefinitionPanel::buildCommand(Part */*part*/) { KMacroCommand *cmd = new KMacroCommand(i18n("Modify WBS Definition")); return cmd; } bool WBSDefinitionPanel::ok() { m_def.setDefaultCode(defaultCode->currentItem()); m_def.setDefaultSeparator(defaultSeparator->text()); m_def.setLevelsDefEnabled(levelsGroup->isChecked()); m_def.clearLevelsDef(); for (int i = 0; i < levelsTable->numRows(); ++i) { m_def.setLevelsDef(levelsTable->verticalHeader()->label(i).toInt(), levelsTable->text(i, 0), levelsTable->text(i, 1)); } return true; } void WBSDefinitionPanel::slotChanged() { emit changed(true); } void WBSDefinitionPanel::slotSelectionChanged() { TQString s; bool rowSelected = false; for (int i=0; i < levelsTable->numRows(); ++i) { if (levelsTable->isRowSelected(i, true)) { s += TQString("Row[%1]=selected ").arg(i); rowSelected = true; } } removeBtn->setEnabled(rowSelected); if (s.isEmpty()) s = "None selected"; kdDebug()< rows; for (int i=0; i < levelsTable->numRows(); ++i) { if (levelsTable->isRowSelected(i)) { rows.resize(rows.size()+1); rows[rows.size()-1] = i; } } levelsTable->removeRows(rows); removeBtn->setEnabled(false); slotLevelChanged(level->value()); } void WBSDefinitionPanel::slotAddBtnClicked() { kdDebug()<numRows()-1; for (; i >= 0; --i) { kdDebug()<value()<value() > levelsTable->verticalHeader()->label(i).toInt()) { break; } } i++; levelsTable->insertRows(i); levelsTable->verticalHeader()->setLabel(i, TQString("%1").arg(level->value())); TQComboTableItem *item = new TQComboTableItem(levelsTable, m_def.codeList(), true); levelsTable->setItem(i, 0, item); levelsTable->clearSelection(); levelsTable->selectCells(i, 0, i, 0); levelsTable->setCurrentCell(i, 0); addBtn->setEnabled(false); slotChanged(); kdDebug()<