exchangeconfig.cpp
00001 /* 00002 This file is part of KOrganizer. 00003 Copyright (c) 2002 Jan-Pascal van Best <janpascal@vanbest.org> 00004 00005 This program is free software; you can redistribute it and/or modify 00006 it under the terms of the GNU General Public License as published by 00007 the Free Software Foundation; either version 2 of the License, or 00008 (at your option) any later version. 00009 00010 This program is distributed in the hope that it will be useful, 00011 but WITHOUT ANY WARRANTY; without even the implied warranty of 00012 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00013 GNU General Public License for more details. 00014 00015 You should have received a copy of the GNU General Public License 00016 along with this program; if not, write to the Free Software 00017 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 00018 */ 00019 00020 #include <tqlayout.h> 00021 #include <tqlabel.h> 00022 #include <tqcombobox.h> 00023 00024 #include <tdeapplication.h> 00025 #include <tdeconfig.h> 00026 #include <tdelocale.h> 00027 #include <kdebug.h> 00028 #include <tdemessagebox.h> 00029 00030 #include <exchangeaccount.h> 00031 00032 #include "exchangeconfig.h" 00033 00034 ExchangeConfig::ExchangeConfig( KPIM::ExchangeAccount* account, TQWidget* parent ) 00035 : KDialogBase(Plain,i18n("Exchange Plugin"),Ok|Cancel,Ok,parent) 00036 { 00037 mAccount = account; 00038 00039 kdDebug(5850) << "Creating ExchangeConfig with account: " << 00040 account->host() << ":" << account->account() << endl; 00041 00042 TQFrame *topFrame = plainPage(); 00043 TQGridLayout *topLayout = new TQGridLayout( topFrame, 5, 3, 3 ); 00044 00045 m_host = new KLineEdit( mAccount->host(), topFrame ); 00046 topLayout->addWidget( new TQLabel( i18n( "Exchange server:" ), topFrame ), 0, 0 ); 00047 topLayout->addWidget( m_host, 0, 1 ); 00048 00049 m_port = new KLineEdit( mAccount->port(), topFrame ); 00050 topLayout->addWidget( new TQLabel( i18n( "Port:" ), topFrame ), 1, 0 ); 00051 topLayout->addWidget( m_port, 1, 1 ); 00052 00053 m_user = new KLineEdit( mAccount->account(), topFrame ); 00054 topLayout->addWidget( new TQLabel( i18n( "User:" ), topFrame ), 2, 0 ); 00055 topLayout->addWidget( m_user, 2, 1 ); 00056 connect( m_user, TQT_SIGNAL(textChanged(const TQString&)), this, TQT_SLOT(slotUserChanged(const TQString&)) ); 00057 00058 m_password = new KLineEdit( mAccount->password(), topFrame ); 00059 topLayout->addWidget( new TQLabel( i18n( "Password:" ), topFrame ), 3, 0 ); 00060 topLayout->addWidget( m_password, 3, 1 ); 00061 m_password->setEchoMode( TQLineEdit::Password ); 00062 00063 m_autoMailbox = new TQCheckBox( i18n( "Determine mailbox automatically" ), topFrame ); 00064 topLayout->addMultiCellWidget( m_autoMailbox, 4, 4, 0, 1 ); 00065 connect( m_autoMailbox, TQT_SIGNAL(toggled(bool)), this, TQT_SLOT(slotToggleAuto(bool)) ); 00066 00067 m_mailbox= new KLineEdit( mAccount->mailbox(), topFrame ); 00068 topLayout->addWidget( new TQLabel( i18n( "Mailbox URL:" ), topFrame ), 5, 0 ); 00069 topLayout->addWidget( m_mailbox, 5, 1 ); 00070 00071 m_tryFindMailbox = new TQPushButton( "&Find", topFrame ); 00072 topLayout->addWidget( m_tryFindMailbox, 5, 2 ); 00073 connect( m_tryFindMailbox, TQT_SIGNAL(clicked()), this, TQT_SLOT(slotFindClicked()) ); 00074 00075 kapp->config()->setGroup( "Calendar/Exchange Plugin" ); 00076 bool autoChecked = kapp->config()->readBoolEntry( "auto-mailbox", true ); 00077 m_autoMailbox->setChecked( autoChecked ); 00078 } 00079 00080 ExchangeConfig::~ExchangeConfig() 00081 { 00082 } 00083 00084 void ExchangeConfig::slotToggleAuto( bool on ) 00085 { 00086 m_mailbox->setEnabled( ! on ); 00087 // m_tryFindMailbox->setEnabled( ! on ); 00088 // if ( on ) { 00089 // m_mailbox->setText( "webdav://" + m_host->text() + "/exchange/" + m_user->text() ); 00090 // } 00091 } 00092 00093 void ExchangeConfig::slotUserChanged( const TQString& /*text*/ ) 00094 { 00095 // if ( m_mailboxEqualsUser->isChecked() ) { 00096 // m_mailbox->setText( "webdav://" + m_host->text() + "/exchange/" + text ); 00097 // } 00098 } 00099 00100 void ExchangeConfig::slotOk() 00101 { 00102 if ( m_autoMailbox->isChecked() ) { 00103 TQString mailbox = mAccount->tryFindMailbox( m_host->text(), m_port->text(), m_user->text(), m_password->text() ); 00104 if ( mailbox.isNull() ) { 00105 kdWarning() << "Could not find Exchange mailbox URL, incomplete settings!"<< endl; 00106 KMessageBox::sorry( this, "Could not determine mailbox URL" ); 00107 return; // Do not accept 00108 } else { 00109 mAccount->setMailbox( mailbox ); 00110 } 00111 } else { 00112 mAccount->setMailbox( m_mailbox->text() ); 00113 } 00114 mAccount->setHost( m_host->text() ); 00115 mAccount->setPort( m_port->text() ); 00116 mAccount->setAccount( m_user->text() ); 00117 mAccount->setPassword( m_password->text() ); 00118 00119 kapp->config()->setGroup( "Calendar/Exchange Plugin" ); 00120 kapp->config()->writeEntry( "auto-mailbox", m_autoMailbox->isChecked() ); 00121 00122 accept(); 00123 } 00124 00125 void ExchangeConfig::slotFindClicked() 00126 { 00127 TQString mailbox = mAccount->tryFindMailbox( m_host->text(), m_port->text(), m_user->text(), m_password->text() ); 00128 if ( mailbox.isNull() ) { 00129 KMessageBox::sorry( this, "Could not determine mailbox URL" ); 00130 } else { 00131 m_mailbox->setText( mailbox ); 00132 } 00133 } 00134 00135 #include "exchangeconfig.moc"