From 460c52653ab0dcca6f19a4f492ed2c5e4e963ab0 Mon Sep 17 00:00:00 2001 From: toma Date: Wed, 25 Nov 2009 17:56:58 +0000 Subject: Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features. BUG:215923 git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdepim@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da --- kresources/scalix/scalixadmin/delegatepage.cpp | 170 +++++++++++++++++++++++++ 1 file changed, 170 insertions(+) create mode 100644 kresources/scalix/scalixadmin/delegatepage.cpp (limited to 'kresources/scalix/scalixadmin/delegatepage.cpp') diff --git a/kresources/scalix/scalixadmin/delegatepage.cpp b/kresources/scalix/scalixadmin/delegatepage.cpp new file mode 100644 index 00000000..f9a9b8e7 --- /dev/null +++ b/kresources/scalix/scalixadmin/delegatepage.cpp @@ -0,0 +1,170 @@ +/* + * 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 "delegatedialog.h" +#include "delegateview.h" +#include "jobs.h" +#include "settings.h" + +#include "delegatepage.h" + +DelegatePage::DelegatePage( QWidget *parent ) + : QWidget( parent ) +{ + QGridLayout *layout = new QGridLayout( this, 2, 3, 11, 6 ); + + mView = new DelegateView( &mManager, this ); + layout->addMultiCellWidget( mView, 0, 0, 0, 2 ); + + mAddButton = new QPushButton( i18n( "Add Delegate..." ), this ); + layout->addWidget( mAddButton, 1, 0 ); + + mEditButton = new QPushButton( i18n( "Edit Delegate..." ), this ); + mEditButton->setEnabled( false ); + layout->addWidget( mEditButton, 1, 1 ); + + mRemoveButton = new QPushButton( i18n( "Remove Delegate" ), this ); + mRemoveButton->setEnabled( false ); + layout->addWidget( mRemoveButton, 1, 2 ); + + connect( mView, SIGNAL( selectionChanged() ), SLOT( selectionChanged() ) ); + connect( mAddButton, SIGNAL( clicked() ), SLOT( addDelegate() ) ); + connect( mEditButton, SIGNAL( clicked() ), SLOT( editDelegate() ) ); + connect( mRemoveButton, SIGNAL( clicked() ), SLOT( removeDelegate() ) ); + + loadAllDelegates(); +} + +DelegatePage::~DelegatePage() +{ +} + +void DelegatePage::loadAllDelegates() +{ + Scalix::GetDelegatesJob *job = Scalix::getDelegates( Settings::self()->globalSlave(), + Settings::self()->accountUrl() ); + connect( job, SIGNAL( result( KIO::Job* ) ), SLOT( allDelegates( KIO::Job* ) ) ); +} + +void DelegatePage::addDelegate() +{ + DelegateDialog dlg( this ); + dlg.setCaption( i18n( "Add Delegate" ) ); + + if ( !dlg.exec() ) + return; + + const Scalix::Delegate delegate = dlg.delegate(); + + if ( !delegate.isValid() ) + return; + + Scalix::SetDelegateJob *job = Scalix::setDelegate( Settings::self()->globalSlave(), + Settings::self()->accountUrl(), + delegate.email(), delegate.rights() ); + connect( job, SIGNAL( result( KIO::Job* ) ), SLOT( delegateAdded( KIO::Job* ) ) ); +} + +void DelegatePage::editDelegate() +{ + const Scalix::Delegate oldDelegate = mView->selectedDelegate(); + if ( !oldDelegate.isValid() ) + return; + + DelegateDialog dlg( this ); + dlg.setCaption( i18n( "Edit Delegate" ) ); + + dlg.setDelegate( oldDelegate ); + + if ( !dlg.exec() ) + return; + + const Scalix::Delegate delegate = dlg.delegate(); + + if ( !delegate.isValid() ) + return; + + Scalix::SetDelegateJob *job = Scalix::setDelegate( Settings::self()->globalSlave(), + Settings::self()->accountUrl(), + delegate.email(), delegate.rights() ); + connect( job, SIGNAL( result( KIO::Job* ) ), SLOT( delegateAdded( KIO::Job* ) ) ); +} + +void DelegatePage::removeDelegate() +{ + const Scalix::Delegate delegate = mView->selectedDelegate(); + if ( !delegate.isValid() ) + return; + + Scalix::DeleteDelegateJob *job = Scalix::deleteDelegate( Settings::self()->globalSlave(), + Settings::self()->accountUrl(), delegate.email() ); + connect( job, SIGNAL( result( KIO::Job* ) ), SLOT( delegateRemoved( KIO::Job* ) ) ); +} + +void DelegatePage::allDelegates( KIO::Job *job ) +{ + if ( job->error() ) + KMessageBox::error( this, job->errorString() ); + + Scalix::GetDelegatesJob *delegateJob = static_cast( job ); + + mManager.clear(); + + const Scalix::Delegate::List delegates = delegateJob->delegates(); + for ( uint i = 0; i < delegates.count(); ++i ) + mManager.addDelegate( delegates[ i ] ); + + selectionChanged(); +} + +void DelegatePage::delegateAdded( KIO::Job *job ) +{ + if ( job->error() ) + KMessageBox::error( this, job->errorString() ); + else + loadAllDelegates(); // update the GUI +} + +void DelegatePage::delegateRemoved( KIO::Job *job ) +{ + if ( job->error() ) + KMessageBox::error( this, job->errorString() ); + else + loadAllDelegates(); // update the GUI +} + +void DelegatePage::selectionChanged() +{ + bool state = ( mView->selectedItem() != 0 ); + + mEditButton->setEnabled( state ); + mRemoveButton->setEnabled( state ); +} + +#include "delegatepage.moc" -- cgit v1.2.3