summaryrefslogtreecommitdiffstats
path: root/examples/listviews/listviews.cpp
diff options
context:
space:
mode:
authorTimothy Pearson <kb9vqf@pearsoncomputing.net>2011-11-08 12:31:36 -0600
committerTimothy Pearson <kb9vqf@pearsoncomputing.net>2011-11-08 12:31:36 -0600
commitd796c9dd933ab96ec83b9a634feedd5d32e1ba3f (patch)
tree6e3dcca4f77e20ec8966c666aac7c35bd4704053 /examples/listviews/listviews.cpp
downloadtqt3-d796c9dd933ab96ec83b9a634feedd5d32e1ba3f.tar.gz
tqt3-d796c9dd933ab96ec83b9a634feedd5d32e1ba3f.zip
Test conversion to TQt3 from Qt3 8c6fc1f8e35fd264dd01c582ca5e7549b32ab731
Diffstat (limited to 'examples/listviews/listviews.cpp')
-rw-r--r--examples/listviews/listviews.cpp260
1 files changed, 260 insertions, 0 deletions
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 <qlabel.h>
+#include <qpainter.h>
+#include <qpalette.h>
+#include <qobjectlist.h>
+#include <qpopupmenu.h>
+#include <qheader.h>
+#include <qregexp.h>
+
+// -----------------------------------------------------------------
+
+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<int> 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 <info@trolltech.com> ", 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( "<", "&lt;" );
+ tmp = tmp.replace( ">", "&gt;" );
+ text = TQString( "<b><i>From:</i></b> <a href=\"mailto:info@trolltech.com\">%1</a><br>"
+ "<b><i>Subject:</i></b> <big><big><b>%2</b></big></big><br>"
+ "<b><i>Date:</i></b> %3<br><br>"
+ "%4" ).
+ arg( tmp ).arg( msg->header().subject() ).
+ arg( msg->header().datetime().toString() ).arg( msg->body() );
+
+ message->setText( text );
+
+ msg->setState( Message::Read );
+}