/*************************************************************************** membereditdlg.cpp - description ------------------- begin : Wed Jul 7 2004 copyright : (C) 2004 Andras Mantia ***************************************************************************/ /*************************************************************************** * * * 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 //kde includes #include #include #include #include #include #include #include #include //app includes #include "listdlg.h" #include "membereditdlg.h" #include "subprojecteditdlgs.h" #include "project.h" TQString simpleMemberStr = I18N_NOOP("Simple Member"); TQString taskLeaderStr = I18N_NOOP("Task Leader"); TQString teamLeaderStr = I18N_NOOP("Team Leader"); TQString subprojectLeaderStr = I18N_NOOP("Subproject Leader"); MemberEditDlg::MemberEditDlg(TQWidget *parent, const char *name) : MemberEditDlgS(parent, name) { TQValueList *subprojects = Project::ref()->subprojects(); for (TQValueList::ConstIterator it = subprojects->constBegin(); it != subprojects->constEnd(); ++it) subprojectCombo->insertItem((*it).name); subprojectCombo->setEnabled(false); editSubprojectsButton->setEnabled(false); TQMap members = Project::ref()->allMembers(); TQStringList items; for (TQMap::ConstIterator it = members.constBegin(); it != members.constEnd(); ++it) { nameCombo->insertItem(it.key()); } nameCombo->insertItem(TQString(), 0); roleCombo->insertItem(i18n(teamLeaderStr.utf8())); roleCombo->insertItem(i18n(subprojectLeaderStr.utf8())); roleCombo->insertItem(i18n(taskLeaderStr.utf8())); roleCombo->insertItem(i18n(simpleMemberStr.utf8())); roleCombo->setCurrentItem(3); } MemberEditDlg::~MemberEditDlg() { } void MemberEditDlg::slotRoleSelected(const TQString &roleName) { if (roleName != i18n(subprojectLeaderStr.utf8())) { subprojectCombo->setEnabled(false); editSubprojectsButton->setEnabled(false); } else { subprojectCombo->setEnabled(true); editSubprojectsButton->setEnabled(true); } } void MemberEditDlg::slotEditSubprojects() { KDialogBase editDlg(this, "edit_subprojects", true, i18n("Edit Subprojects"), KDialogBase::Ok | KDialogBase::Cancel); SubprojectEditDlgS subprojectDlg(&editDlg); editDlg.setMainWidget(&subprojectDlg); TQValueList *subprojects = Project::ref()->subprojects(); int idx = 0; SubProject subProject; for (uint i = 0; i < subprojects->count(); i++) { subProject = (*subprojects)[i]; if (subprojectCombo->currentText() == subProject.name) { subprojectDlg.nameEdit->setText(subProject.name); subprojectDlg.locationEdit->setText(subProject.location); idx = i; break; } } if (subprojects->count() == 0) subprojectDlg.createNew->setChecked(true); if (editDlg.exec()) { TQString oldName = subProject.name; subProject.name = subprojectDlg.nameEdit->text(); subProject.location = subprojectDlg.locationEdit->text(); if (subprojectDlg.createNew->isChecked() && (subProject.name != oldName)) { subprojects->append(subProject); subprojectCombo->insertItem(subProject.name); subprojectCombo->setCurrentItem(subprojectCombo->count() - 1); } else { (*subprojects)[idx] = subProject; subprojectCombo->setCurrentText(subProject.name); } } } void MemberEditDlg::slotMemberSelected() { TQString name = nameCombo->currentText(); TQMap members = Project::ref()->allMembers(); if (members.contains(name)) { emailEdit->setText(members[name].email); } } void MemberEditDlg::selectMember(const TQString &name) { bool found = false; for (int i = 0; i < nameCombo->count(); i++) { if (nameCombo->text(i) == name) { nameCombo->setCurrentItem(i); found = true; break; } } if (!found) { nameCombo->insertItem(name, 1); nameCombo->setCurrentItem(1); } } void MemberEditDlg::slotSelectFromAddrBook() { TQMap uidMap; TQString name; TQStringList result; KABC::AddressBook *addressBook = KABC::StdAddressBook::self(); KABC::AddressBook::ConstIterator it; KABC::AddressBook::ConstIterator end = addressBook->end(); for( it = addressBook->begin(); it != end; ++it ) { result.append((*it).assembledName()); uidMap.insert((*it).assembledName(), (*it).uid()); } result.sort(); if ( result.count() > 0 ) { ListDlg listDlg(result); listDlg.setCaption(i18n("Select Member")); if (!listDlg.exec()) return; name = listDlg.getEntry(); KABC::Addressee entry = addressBook->findByUid(uidMap[name]); nameCombo->insertItem(name, 1); nameCombo->setCurrentItem(1); emailEdit->setText(entry.emails()[0]); nicknameEdit->setText(entry.nickName()); } else { KMessageBox::error(this,i18n("No entries found in the addressbook.")); } } #include "membereditdlg.moc"