// Copyright (c) 2004 Rob Kaper . All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // 1. Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // 2. Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the distribution. // // THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS `AS IS'' AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE // ARE DISCLAIMED. IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS // OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY // OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF // SUCH DAMAGE. #include #include #include #include #include #include "kwrappedlistviewitem.h" KWrappedListViewItem::KWrappedListViewItem( TQListView *parent, TQString text, TQString t2 ) : TQObject(), KListViewItem( parent ) { init( parent, text, t2 ); } KWrappedListViewItem::KWrappedListViewItem( TQListView *parent, TQListViewItem *after, TQString text, TQString t2 ) : TQObject(), KListViewItem( parent, after ) { init( parent, text, t2 ); } void KWrappedListViewItem::setup() { widthChanged(); } /* int KWrappedListViewItem::width( const TQFontMetrics&, const TQListView*, int ) const { return m_wrap->boundingRect().width(); } */ void KWrappedListViewItem::wrapColumn( int c ) { if ( c != m_wrapColumn ) return; TQListView *lv = listView(); if ( !lv ) return; TQFont font = TQFont( KGlobalSettings::generalFont().family(), KGlobalSettings::generalFont().pointSize(), TQFont::Normal ); TQFontMetrics fm = TQFontMetrics( font ); int wrapWidth = lv->width(); for ( int i = 0 ; i < m_wrapColumn ; i++ ) wrapWidth -= ( width(fm, lv, i) + lv->itemMargin() ); if ( pixmap(c) ) wrapWidth -= ( pixmap( c )->width() + lv->itemMargin() ); TQScrollBar *scrollBar = lv->verticalScrollBar(); if ( !scrollBar->isHidden() ) wrapWidth -= scrollBar->width(); TQRect rect = TQRect( 0, 0, wrapWidth - 20, -1 ); KWordWrap *wrap = KWordWrap::formatText( fm, rect, 0, m_origText ); setText( c, wrap->wrappedString() ); int lc = text(c).contains( TQChar( '\n' ) ) + 1; setHeight( wrap->boundingRect().height() + lc*lv->itemMargin() ); widthChanged( c ); delete wrap; } void KWrappedListViewItem::init( TQListView *parent, TQString text, TQString t2 ) { m_wrapColumn = 0; setMultiLinesEnabled( true ); parent->setResizeMode( TQListView::LastColumn ); m_origText = text; if ( !t2.isNull() ) { setText( 0, text ); m_origText = t2; m_wrapColumn = 1; } else m_origText = text; wrapColumn( m_wrapColumn ); connect( parent->header(), TQT_SIGNAL(sizeChange(int, int, int)), this, TQT_SLOT(wrapColumn(int))); } #include "kwrappedlistviewitem.moc"