From d796c9dd933ab96ec83b9a634feedd5d32e1ba3f Mon Sep 17 00:00:00 2001 From: Timothy Pearson Date: Tue, 8 Nov 2011 12:31:36 -0600 Subject: Test conversion to TQt3 from Qt3 8c6fc1f8e35fd264dd01c582ca5e7549b32ab731 --- examples/listviews/listviews.cpp | 260 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 260 insertions(+) create mode 100644 examples/listviews/listviews.cpp (limited to 'examples/listviews/listviews.cpp') diff --git a/examples/listviews/listviews.cpp b/examples/listviews/listviews.cpp new file mode 100644 index 00000000..91d4a2bc --- /dev/null +++ b/examples/listviews/listviews.cpp @@ -0,0 +1,260 @@ +/**************************************************************************** +** +** Copyright (C) 1992-2008 Trolltech ASA. All rights reserved. +** +** This file is part of an example program for TQt. This example +** program may be used, distributed and modified without limitation. +** +*****************************************************************************/ + +#include "listviews.h" + +#include +#include +#include +#include +#include +#include +#include + +// ----------------------------------------------------------------- + +MessageHeader::MessageHeader( const MessageHeader &mh ) +{ + msender = mh.msender; + msubject = mh.msubject; + mdatetime = mh.mdatetime; +} + +MessageHeader &MessageHeader::operator=( const MessageHeader &mh ) +{ + msender = mh.msender; + msubject = mh.msubject; + mdatetime = mh.mdatetime; + + return *this; +} + +// ----------------------------------------------------------------- + +Folder::Folder( Folder *parent, const TQString &name ) + : TQObject( parent, name ), fName( name ) +{ + lstMessages.setAutoDelete( TRUE ); +} + +// ----------------------------------------------------------------- + +FolderListItem::FolderListItem( TQListView *parent, Folder *f ) + : TQListViewItem( parent ) +{ + myFolder = f; + setText( 0, f->folderName() ); + + if ( myFolder->children() ) + insertSubFolders( myFolder->children() ); +} + +FolderListItem::FolderListItem( FolderListItem *parent, Folder *f ) + : TQListViewItem( parent ) +{ + myFolder = f; + + setText( 0, f->folderName() ); + + if ( myFolder->children() ) + insertSubFolders( myFolder->children() ); +} + +void FolderListItem::insertSubFolders( const TQObjectList *lst ) +{ + Folder *f; + for ( f = ( Folder* )( ( TQObjectList* )lst )->first(); f; f = ( Folder* )( ( TQObjectList* )lst )->next() ) + (void)new FolderListItem( this, f ); +} + +// ----------------------------------------------------------------- + +MessageListItem::MessageListItem( TQListView *parent, Message *m ) + : TQListViewItem( parent ) +{ + myMessage = m; + setText( 0, myMessage->header().sender() ); + setText( 1, myMessage->header().subject() ); + setText( 2, myMessage->header().datetime().toString() ); +} + +void MessageListItem::paintCell( TQPainter *p, const TQColorGroup &cg, + int column, int width, int alignment ) +{ + TQColorGroup _cg( cg ); + TQColor c = _cg.text(); + + if ( myMessage->state() == Message::Unread ) + _cg.setColor( TQColorGroup::Text, TQt::red ); + + TQListViewItem::paintCell( p, _cg, column, width, alignment ); + + _cg.setColor( TQColorGroup::Text, c ); +} + +// ----------------------------------------------------------------- + +ListViews::ListViews( TQWidget *parent, const char *name ) + : TQSplitter( TQt::Horizontal, parent, name ) +{ + lstFolders.setAutoDelete( TRUE ); + + folders = new TQListView( this ); + folders->header()->setClickEnabled( FALSE ); + folders->addColumn( "Folder" ); + + initFolders(); + setupFolders(); + + folders->setRootIsDecorated( TRUE ); + setResizeMode( folders, TQSplitter::KeepSize ); + + TQSplitter *vsplitter = new TQSplitter( TQt::Vertical, this ); + + messages = new TQListView( vsplitter ); + messages->addColumn( "Sender" ); + messages->addColumn( "Subject" ); + messages->addColumn( "Date" ); + messages->setColumnAlignment( 1, TQt::AlignRight ); + messages->setAllColumnsShowFocus( TRUE ); + messages->setShowSortIndicator( TRUE ); + menu = new TQPopupMenu( messages ); + for( int i = 1; i <= 10; i++ ) + menu->insertItem( TQString( "Context Item %1" ).arg( i ) ); + connect(messages, SIGNAL( contextMenuRequested( TQListViewItem *, const TQPoint& , int ) ), + this, SLOT( slotRMB( TQListViewItem *, const TQPoint &, int ) ) ); + vsplitter->setResizeMode( messages, TQSplitter::KeepSize ); + + message = new TQLabel( vsplitter ); + message->setAlignment( TQt::AlignTop ); + message->setBackgroundMode( PaletteBase ); + + connect( folders, SIGNAL( selectionChanged( TQListViewItem* ) ), + this, SLOT( slotFolderChanged( TQListViewItem* ) ) ); + connect( messages, SIGNAL( selectionChanged() ), + this, SLOT( slotMessageChanged() ) ); + connect( messages, SIGNAL( currentChanged( TQListViewItem * ) ), + this, SLOT( slotMessageChanged() ) ); + + messages->setSelectionMode( TQListView::Extended ); + // some preparations + folders->firstChild()->setOpen( TRUE ); + folders->firstChild()->firstChild()->setOpen( TRUE ); + folders->setCurrentItem( folders->firstChild()->firstChild()->firstChild() ); + folders->setSelected( folders->firstChild()->firstChild()->firstChild(), TRUE ); + + messages->setSelected( messages->firstChild(), TRUE ); + messages->setCurrentItem( messages->firstChild() ); + message->setMargin( 5 ); + + TQValueList lst; + lst.append( 170 ); + setSizes( lst ); +} + +void ListViews::initFolders() +{ + unsigned int mcount = 1; + + for ( unsigned int i = 1; i < 20; i++ ) { + TQString str; + str = TQString( "Folder %1" ).arg( i ); + Folder *f = new Folder( 0, str ); + for ( unsigned int j = 1; j < 5; j++ ) { + TQString str2; + str2 = TQString( "Sub Folder %1" ).arg( j ); + Folder *f2 = new Folder( f, str2 ); + for ( unsigned int k = 1; k < 3; k++ ) { + TQString str3; + str3 = TQString( "Sub Sub Folder %1" ).arg( k ); + Folder *f3 = new Folder( f2, str3 ); + initFolder( f3, mcount ); + } + } + lstFolders.append( f ); + } +} + +void ListViews::initFolder( Folder *folder, unsigned int &count ) +{ + for ( unsigned int i = 0; i < 15; i++, count++ ) { + TQString str; + str = TQString( "Message %1 " ).arg( count ); + TQDateTime dt = TQDateTime::currentDateTime(); + dt = dt.addSecs( 60 * count ); + MessageHeader mh( "Trolltech ", str, dt ); + + TQString body; + body = TQString( "This is the message number %1 of this application, \n" + "which shows how to use TQListViews, TQListViewItems, \n" + "TQSplitters and so on. The code should show how easy\n" + "this can be done in TQt." ).arg( count ); + Message *msg = new Message( mh, body ); + folder->addMessage( msg ); + } +} + +void ListViews::setupFolders() +{ + folders->clear(); + + for ( Folder* f = lstFolders.first(); f; f = lstFolders.next() ) + (void)new FolderListItem( folders, f ); +} + +void ListViews::slotRMB( TQListViewItem* Item, const TQPoint & point, int ) +{ + if( Item ) + menu->popup( point ); +} + + +void ListViews::slotFolderChanged( TQListViewItem *i ) +{ + if ( !i ) + return; + messages->clear(); + message->setText( "" ); + + FolderListItem *item = ( FolderListItem* )i; + + for ( Message* msg = item->folder()->firstMessage(); msg; + msg = item->folder()->nextMessage() ) + (void)new MessageListItem( messages, msg ); +} + +void ListViews::slotMessageChanged() +{ + TQListViewItem *i = messages->currentItem(); + if ( !i ) + return; + + if ( !i->isSelected() ) { + message->setText( "" ); + return; + } + + MessageListItem *item = ( MessageListItem* )i; + Message *msg = item->message(); + + TQString text; + TQString tmp = msg->header().sender(); + tmp = tmp.replace( "<", "<" ); + tmp = tmp.replace( ">", ">" ); + text = TQString( "From: %1
" + "Subject: %2
" + "Date: %3

" + "%4" ). + arg( tmp ).arg( msg->header().subject() ). + arg( msg->header().datetime().toString() ).arg( msg->body() ); + + message->setText( text ); + + msg->setState( Message::Read ); +} -- cgit v1.2.1