/* * This file is part of ScalixAdmin. * * Copyright (C) 2007 Trolltech ASA. All rights reserved. * * 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. * * This program 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 General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #include #include #include #include #include #include #include #include #include #include "jobs.h" #include "ldapdialog.h" #include "otheruserview.h" #include "settings.h" #include "otheruserpage.h" OtherUserPage::OtherUserPage( TQWidget *parent ) : TQWidget( parent ) { TQGridLayout *layout = new TQGridLayout( this, 2, 2, 11, 6 ); mView = new OtherUserView( &mManager, this ); layout->addMultiCellWidget( mView, 0, 0, 0, 1 ); mAddButton = new TQPushButton( i18n( "Add Account..." ), this ); layout->addWidget( mAddButton, 1, 0 ); mDeleteButton = new TQPushButton( i18n( "Remove Account" ), this ); mDeleteButton->setEnabled( false ); layout->addWidget( mDeleteButton, 1, 1 ); connect( mView, TQT_SIGNAL( selectionChanged() ), TQT_SLOT( selectionChanged() ) ); connect( mAddButton, TQT_SIGNAL( clicked() ), TQT_SLOT( addUser() ) ); connect( mDeleteButton, TQT_SIGNAL( clicked() ), TQT_SLOT( removeUser() ) ); loadAllUsers(); } OtherUserPage::~OtherUserPage() { } void OtherUserPage::loadAllUsers() { Scalix::GetOtherUsersJob *job = Scalix::getOtherUsers( Settings::self()->globalSlave(), Settings::self()->accountUrl() ); connect( job, TQT_SIGNAL( result( TDEIO::Job* ) ), TQT_SLOT( allUsers( TDEIO::Job* ) ) ); } void OtherUserPage::addUser() { LdapDialog dlg( this ); if ( !dlg.exec() ) return; const TQString email = dlg.selectedUser(); if ( email.isEmpty() ) return; Scalix::AddOtherUserJob *job = Scalix::addOtherUser( Settings::self()->globalSlave(), Settings::self()->accountUrl(), email ); connect( job, TQT_SIGNAL( result( TDEIO::Job* ) ), TQT_SLOT( userAdded( TDEIO::Job* ) ) ); } void OtherUserPage::removeUser() { const TQString email = mView->selectedUser(); if ( email.isEmpty() ) return; Scalix::DeleteOtherUserJob *job = Scalix::deleteOtherUser( Settings::self()->globalSlave(), Settings::self()->accountUrl(), email ); connect( job, TQT_SIGNAL( result( TDEIO::Job* ) ), TQT_SLOT( userRemoved( TDEIO::Job* ) ) ); } void OtherUserPage::allUsers( TDEIO::Job *job ) { if ( job->error() ) KMessageBox::error( this, job->errorString() ); Scalix::GetOtherUsersJob *userJob = static_cast( job ); mManager.clear(); const TQStringList users = userJob->otherUsers(); for ( uint i = 0; i < users.count(); ++i ) mManager.addOtherUser( users[ i ] ); selectionChanged(); } void OtherUserPage::userAdded( TDEIO::Job *job ) { if ( job->error() ) KMessageBox::error( this, job->errorString() ); else loadAllUsers(); // update the GUI updateKmail(); } void OtherUserPage::userRemoved( TDEIO::Job *job ) { if ( job->error() ) KMessageBox::error( this, job->errorString() ); else loadAllUsers(); // update the GUI updateKmail(); } void OtherUserPage::selectionChanged() { mDeleteButton->setEnabled( mView->selectedItem() != 0 ); } void OtherUserPage::updateKmail() { TQMessageBox *msg = new TQMessageBox( tqApp->mainWidget() ); msg->setText( i18n( "Updating account..." ) ); msg->show(); tqApp->processEvents(); sleep( 1 ); tqApp->processEvents(); TQString error; TQCString dcopService; int result = KDCOPServiceStarter::self()-> findServiceFor( "DCOP/ResourceBackend/IMAP", TQString(), TQString(), &error, &dcopService ); if ( result != 0 ) { KMessageBox::error( 0, i18n( "Unable to start KMail to trigger account update with Scalix server" ) ); delete msg; return; } DCOPRef ref( dcopService, "KMailIface" ); // loop until dcop iface is set up correctly TQStringList list; while ( list.isEmpty() ) { ref.call( "accounts()" ).get( list ); } ref.call( "checkAccount(TQString)", i18n( "Scalix Server" ) ); delete msg; } #include "otheruserpage.moc"