158 lines
5.0 KiB
C++
158 lines
5.0 KiB
C++
/***************************************************************************
|
|
contactaddeduserwidget.cpp - QWidget class with
|
|
QTabWidget
|
|
-------------------
|
|
begin : Friday Sept 24 2010
|
|
copyright : (C) 2010 by Timo Tambet
|
|
email : ttambet@gmail.com
|
|
copyright : (C) 2002 by Mike K. Bennett
|
|
email : mkb137b@hotmail.com
|
|
***************************************************************************/
|
|
|
|
/***************************************************************************
|
|
* *
|
|
* 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. *
|
|
* *
|
|
***************************************************************************/
|
|
|
|
#include "contactaddeduserwidget.h"
|
|
#include "../contact/contact.h"
|
|
#include "../model/contactlist.h"
|
|
#include "../contact/group.h"
|
|
#include "../currentaccount.h"
|
|
#include "../kmessdebug.h"
|
|
#include "../utils/kmessconfig.h"
|
|
#include <QPushButton>
|
|
#include <KStandardGuiItem>
|
|
#include <KLocalizedString>
|
|
|
|
|
|
|
|
/**
|
|
* Constructor
|
|
*
|
|
* This contains all the widgets for selecting what action to perform when a user adds you
|
|
* to their contact list. Multiple instances of this widget are added to the QTabWidget in
|
|
* ContactAddedUserDialog.
|
|
*
|
|
* @param contactHandle Reference to the handle of the contact that has added you
|
|
* @param contactFriendlyName The friendly name of the contact
|
|
*/
|
|
ContactAddedUserWidget::ContactAddedUserWidget( const QString& contactHandle, const QString& contactFriendlyName )
|
|
: QWidget()
|
|
, Ui::ContactAddedUserWidget()
|
|
, contactHandle_( contactHandle )
|
|
{
|
|
setupUi( this );
|
|
|
|
QPushButton *okButton = buttonbox->addButton( KStandardGuiItem::ok().text(), QDialogButtonBox::AcceptRole );
|
|
okButton->setIcon( KStandardGuiItem::ok().icon() );
|
|
connect( okButton, SIGNAL(clicked()), this, SLOT(accept()) );
|
|
|
|
QPushButton *discardButton = buttonbox->addButton( KStandardGuiItem::discard().text(), QDialogButtonBox::RejectRole );
|
|
discardButton->setIcon( KStandardGuiItem::discard().icon() );
|
|
connect( discardButton, SIGNAL(clicked()), this, SLOT(reject()) );
|
|
|
|
if( contactHandle == contactFriendlyName )
|
|
{
|
|
messageLabel_->setText( i18n( "%1\nhas added you to his or her contact list."
|
|
, contactHandle ) );
|
|
}
|
|
else
|
|
{
|
|
messageLabel_->setText( i18n( "%1 (%2)\nhas added you to his or her contact list."
|
|
, contactFriendlyName
|
|
, contactHandle ) );
|
|
}
|
|
|
|
// if they're already a friend, ie in the contact list, don't allow the "add" option to
|
|
// be selected. only options should be to allow or block.
|
|
Contact *c = CurrentAccount::instance()->getContactList()->getContactByHandle( contactHandle );
|
|
if ( c && c->isFriend() )
|
|
{
|
|
addContactOption_->setEnabled( false );
|
|
}
|
|
|
|
// Fill up the groups list from the contactlist data
|
|
QList<Group*> groupList( CurrentAccount::instance()->getContactList()->getGroupList() );
|
|
QListWidgetItem *item;
|
|
|
|
foreach( const Group *group, groupList )
|
|
{
|
|
if( ! group->isSpecialGroup() )
|
|
{
|
|
item = new QListWidgetItem( group->getName(), groupList_ );
|
|
|
|
// Set the groupId in the item's data, to retrieve it later
|
|
item->setData( Qt::UserRole, group->getId() );
|
|
item->setFlags( Qt::ItemIsUserCheckable | Qt::ItemIsEnabled );
|
|
item->setCheckState( Qt::Unchecked );
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
* @brief Destructor
|
|
*
|
|
*/
|
|
ContactAddedUserWidget::~ContactAddedUserWidget()
|
|
{
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
* @brief Called when the user pressed the "ok" button
|
|
*
|
|
*/
|
|
void ContactAddedUserWidget::accept()
|
|
{
|
|
QStringList groupIds;
|
|
if( addContactOption_->isChecked() )
|
|
{
|
|
// Find all checked items in the list
|
|
QListWidgetItem *item;
|
|
for( int i = 0; i < groupList_->count(); i++ )
|
|
{
|
|
item = groupList_->item( i );
|
|
if( item->checkState() == Qt::Checked )
|
|
{
|
|
// Retrieve the group id from the item's data
|
|
groupIds.append( item->data( Qt::UserRole ).toString() );
|
|
}
|
|
}
|
|
emit userChoice( contactHandle_, groupIds, ADD );
|
|
}
|
|
else if( allowContactOption_->isChecked() )
|
|
{
|
|
emit userChoice( contactHandle_, groupIds, ALLOW );
|
|
}
|
|
else if ( blockContactOption_->isChecked() )
|
|
{
|
|
emit userChoice( contactHandle_, groupIds, BLOCK );
|
|
}
|
|
|
|
// The widget is not necessary anymore, delete it
|
|
deleteLater();
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
* @brief Called when the user pressed the "cancel" button
|
|
*
|
|
*/
|
|
void ContactAddedUserWidget::reject()
|
|
{
|
|
// Communicate the user choice
|
|
emit userChoice( contactHandle_, QStringList(), IGNORE );
|
|
|
|
// The widget is not necessary anymore, delete it
|
|
deleteLater();
|
|
}
|