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.
tdenetwork/kopete/libkopete/ui/kopetepasswordwidget.cpp

131 lines
3.7 KiB

/*
kopetepasswordwidget.cpp - widget for modifying a Kopete::Password
Copyright (c) 2003 by Richard Smith <kde@metafoo.co.uk>
Kopete (c) 2003 by the Kopete developers <kopete-devel@kde.org>
*************************************************************************
* *
* This library is free software; you can redistribute it and/or *
* modify it under the terms of the GNU Lesser General Public *
* License as published by the Free Software Foundation; either *
* version 2 of the License, or (at your option) any later version. *
* *
*************************************************************************
*/
#include "kopetepasswordwidget.h"
#include "kopetepassword.h"
#include <kpassdlg.h>
#include <tqcheckbox.h>
class Kopete::UI::PasswordWidget::Private
{
public:
uint maxLength;
};
Kopete::UI::PasswordWidget::PasswordWidget( TQWidget *parent, const char *name, Kopete::Password *from )
: KopetePasswordWidgetBase( parent, name ), d( new Private )
{
load( from );
}
Kopete::UI::PasswordWidget::~PasswordWidget()
{
delete d;
}
void Kopete::UI::PasswordWidget::load( Kopete::Password *source )
{
disconnect( mRemembered, TQ_SIGNAL( stateChanged( int ) ), this, TQ_SLOT( slotRememberChanged() ) );
disconnect( mPassword, TQ_SIGNAL( textChanged( const TQString & ) ), this, TQ_SIGNAL( changed() ) );
disconnect( mRemembered, TQ_SIGNAL( stateChanged( int ) ), this, TQ_SIGNAL( changed() ) );
if ( source && source->remembered() )
{
mRemembered->setTristate();
mRemembered->setNoChange();
source->requestWithoutPrompt( this, TQ_SLOT( receivePassword( const TQString & ) ) );
}
else
{
mRemembered->setTristate( false );
mRemembered->setChecked( false );
}
if ( source )
d->maxLength = source->maximumLength();
else
d->maxLength = 0;
mPassword->setEnabled( false );
connect( mRemembered, TQ_SIGNAL( stateChanged( int ) ), this, TQ_SLOT( slotRememberChanged() ) );
connect( mPassword, TQ_SIGNAL( textChanged( const TQString & ) ), this, TQ_SIGNAL( changed() ) );
connect( mRemembered, TQ_SIGNAL( stateChanged( int ) ), this, TQ_SIGNAL( changed() ) );
emit changed();
}
void Kopete::UI::PasswordWidget::slotRememberChanged()
{
mRemembered->setTristate( false );
mPassword->setEnabled( mRemembered->isChecked() );
}
void Kopete::UI::PasswordWidget::receivePassword( const TQString &pwd )
{
// pwd == null could mean user declined to open wallet
// don't uncheck the remembered field in this case.
if ( !pwd.isNull() && mRemembered->state() == TQButton::NoChange )
{
mRemembered->setChecked( true );
setPassword( pwd );
}
}
void Kopete::UI::PasswordWidget::save( Kopete::Password *target )
{
if ( !target || mRemembered->state() == TQButton::NoChange )
return;
if ( mRemembered->isChecked() )
target->set( password() );
else
target->set();
}
bool Kopete::UI::PasswordWidget::validate()
{
if ( !mRemembered->isChecked() ) return true;
if ( d->maxLength == 0 ) return true;
return password().length() <= d->maxLength;
}
TQString Kopete::UI::PasswordWidget::password() const
{
return mPassword->password();
}
bool Kopete::UI::PasswordWidget::remember() const
{
return mRemembered->state() == TQButton::On;
}
void Kopete::UI::PasswordWidget::setPassword( const TQString &pass )
{
// switch out of 'waiting for wallet' mode if we're in it
mRemembered->setTristate( false );
// fill in the password text
mPassword->erase();
mPassword->insert( pass );
mPassword->setEnabled( remember() );
}
#include "kopetepasswordwidget.moc"