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.
koffice/kpresenter/KPrRectProperty.cpp

148 lines
4.1 KiB

// -*- Mode: c++; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 4; -*-
/* This file is part of the KDE project
Copyright (C) 2005 Thorsten Zachmann <zachmann@kde.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library 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
Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301, USA.
*/
#include "KPrRectProperty.h"
#include "rectpropertyui.h"
#include "KPrRectPreview.h"
#include <KoImageResource.h>
#include <qspinbox.h>
#include <qtoolbutton.h>
#include <qlayout.h>
KPrRectProperty::KPrRectProperty( QWidget *parent, const char *name, KPrRectValueCmd::RectValues &rectValue )
: QWidget( parent, name )
, m_rectValue( rectValue )
{
formerVerticalValue = 0;
QVBoxLayout *layout = new QVBoxLayout( this );
layout->addWidget( m_ui = new RectPropertyUI( this ) );
KoImageResource kir;
m_ui->combineButton->setPixmap(kir.chain());
connect( m_ui->xRndInput, SIGNAL( valueChanged( int ) ), this, SLOT( slotRndChanged() ) );
connect( m_ui->yRndInput, SIGNAL( valueChanged( int ) ), this, SLOT( slotRndChanged() ) );
connect( m_ui->combineButton, SIGNAL( toggled( bool ) ), this, SLOT( combineToggled( bool ) ) );
slotReset();
}
KPrRectProperty::~KPrRectProperty()
{
}
int KPrRectProperty::getRectPropertyChange() const
{
int flags = 0;
if ( getXRnd() != m_rectValue.xRnd )
flags |= KPrRectValueCmd::XRnd;
if ( getYRnd() != m_rectValue.yRnd )
flags |= KPrRectValueCmd::YRnd;
return flags;
}
KPrRectValueCmd::RectValues KPrRectProperty::getRectValues() const
{
KPrRectValueCmd::RectValues rectValue;
rectValue.xRnd = getXRnd();
rectValue.yRnd = getYRnd();
return rectValue;
}
void KPrRectProperty::setRectValues( const KPrRectValueCmd::RectValues &rectValues )
{
m_rectValue = rectValues;
slotReset();
}
void KPrRectProperty::apply()
{
int flags = getRectPropertyChange();
if ( flags & KPrRectValueCmd::XRnd )
m_rectValue.xRnd = getXRnd();
if ( flags & KPrRectValueCmd::YRnd )
m_rectValue.yRnd = getYRnd();
}
int KPrRectProperty::getXRnd() const
{
return m_ui->xRndInput->value();
}
int KPrRectProperty::getYRnd() const
{
return m_ui->yRndInput->value();
}
void KPrRectProperty::slotRndChanged()
{
m_ui->rectPreview->setRnds( getXRnd(), getYRnd() );
}
void KPrRectProperty::slotReset()
{
m_ui->xRndInput->setValue( m_rectValue.xRnd );
m_ui->yRndInput->setValue( m_rectValue.yRnd );
if(m_rectValue.xRnd == m_rectValue.yRnd)
combineToggled(true);
m_ui->rectPreview->setRnds( getXRnd(), getYRnd() );
}
void KPrRectProperty::combineToggled( bool on)
{
KoImageResource kir;
if( on ) {
formerVerticalValue = getYRnd();
m_ui->yRndInput->setValue( getXRnd() );
connect(m_ui->yRndInput, SIGNAL( valueChanged ( int ) ),
m_ui->xRndInput, SLOT( setValue ( int ) ));
connect(m_ui->xRndInput, SIGNAL( valueChanged ( int ) ),
m_ui->yRndInput, SLOT( setValue ( int ) ));
m_ui->combineButton->setPixmap(kir.chain());
}
else {
disconnect(m_ui->yRndInput, SIGNAL( valueChanged ( int ) ),
m_ui->xRndInput, SLOT( setValue ( int ) ));
disconnect(m_ui->xRndInput, SIGNAL( valueChanged ( int ) ),
m_ui->yRndInput, SLOT( setValue ( int ) ));
if(formerVerticalValue != 0)
m_ui->yRndInput->setValue( formerVerticalValue );
m_ui->combineButton->setPixmap(kir.chainBroken());
}
}
#include "KPrRectProperty.moc"