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.
tdewebdev/quanta/project/membereditdlg.cpp

184 lines
5.7 KiB

/***************************************************************************
membereditdlg.cpp - description
-------------------
begin : Wed Jul 7 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 <tqcheckbox.h>
//kde includes
#include <kcombobox.h>
#include <kdialogbase.h>
#include <kinputdialog.h>
#include <klineedit.h>
#include <klocale.h>
#include <kmessagebox.h>
#include <kpushbutton.h>
#include <kabc/stdaddressbook.h>
//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 *tqparent, const char *name)
: MemberEditDlgS(tqparent, name)
{
TQValueList<SubProject> *subprojects = Project::ref()->subprojects();
for (TQValueList<SubProject>::ConstIterator it = subprojects->constBegin(); it != subprojects->constEnd(); ++it)
subprojectCombo->insertItem((*it).name);
subprojectCombo->setEnabled(false);
editSubprojectsButton->setEnabled(false);
TQMap<TQString, TeamMember> members = Project::ref()->allMembers();
TQStringList items;
for (TQMap<TQString, TeamMember>::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<SubProject> *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<TQString, TeamMember> members = Project::ref()->allMembers();
if (members.tqcontains(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<TQString, TQString> 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"