From ce4a32fe52ef09d8f5ff1dd22c001110902b60a2 Mon Sep 17 00:00:00 2001 From: toma Date: Wed, 25 Nov 2009 17:56:58 +0000 Subject: Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features. BUG:215923 git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdelibs@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da --- kdeui/tests/kdockwidgetdemo.cpp | 796 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 796 insertions(+) create mode 100644 kdeui/tests/kdockwidgetdemo.cpp (limited to 'kdeui/tests/kdockwidgetdemo.cpp') diff --git a/kdeui/tests/kdockwidgetdemo.cpp b/kdeui/tests/kdockwidgetdemo.cpp new file mode 100644 index 000000000..e0ff60897 --- /dev/null +++ b/kdeui/tests/kdockwidgetdemo.cpp @@ -0,0 +1,796 @@ +#include "kdockwidgetdemo.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +//#include +#include + +static const char *dir_tree_xpm[] = { +"16 16 8 1", +" c Gray0", +". c #000080", +"X c Cyan", +"o c #808000", +"O c Yellow", +"+ c #808080", +"@ c None", +"# c #c1c1c1", +"@@@@@@@@@@@@@@@@", +"@@@+++++@@@@@@@@", +"@@+@O@O@+@@@@@@@", +"@+@O@O@O@++++++@", +"@+@@@@@@@@@@@@o ", +"@+@O@++ +O@O@Oo ", +"@+@@+@X@ +O@O@o ", +"@+@+@X@X@ +O@Oo ", +"@+@+X@X@X o@O@o ", +"@+@+@X@X@ oO@Oo ", +"@+@@+@X@ +ooO@o ", +"@+@O@+ +@..oOo ", +"@+ooooooo.X..oo ", +"@@ .X.. @", +"@@@@@@@@@@@.X.. ", +"@@@@@@@@@@@@.X. " +}; + +static const char *preview_xpm[] = { +"16 16 6 1", +" c Gray0", +". c #000080", +"X c Yellow", +"o c #808080", +"O c None", +"+ c Gray100", +"OOOOOOOOOOOOOOOO", +"OOo oOOOOOOO", +"Oo oooo OOOOOO", +"O OOOOoo oOOOOO", +"O OOOO++oo OOOOO", +"O OOOO++Oo OOOOO", +"O O+OOOOOo OOOOO", +"O OO+OOOOo OOOOO", +"OooOO+OOo OOOOO", +"OO oOOOo + OOOO", +"OOOo .X+ OOO", +"OOOOOOOOO .X+ OO", +"OOOOOOOOOO .X+ O", +"OOOOOOOOOOO .X O", +"OOOOOOOOOOOO OO", +"OOOOOOOOOOOOOOOO" +}; + +SFileDialog::SFileDialog( QString initially, const QStringList& filter, const char* name ) +:QDialog(0L,name,true) +{ + KConfig* config = kapp->config(); + config->setGroup( QString::fromLatin1("SFileDialogData:") + name ); + if ( initially.isNull() ){ + initially = config->readPathEntry( "InitiallyDir", QDir::currentDirPath() ); + } + + QStringList bookmark; + bookmark = config->readListEntry( "Bookmarks" ); + + dockManager = new KDockManager(this); + + d_dirView = new KDockWidget( dockManager, "Dock_DirView", QPixmap(dir_tree_xpm) ); + d_dirView->setCaption("Tree"); + + dirView = new DirectoryView( d_dirView, 0 ); + dirView->addColumn( "" ); + dirView->header()->hide(); + d_dirView->setWidget( dirView ); + + Directory* root = new Directory( dirView, "/" ); + root->setOpen(true); + + d_preview = new KDockWidget( dockManager, "Dock_Preview", QPixmap(preview_xpm) ); + d_preview->setCaption("Preview"); + preview = new Preview( d_preview ); + d_preview->setWidget( preview ); + + d_fd = new KDockWidget( dockManager, "Dock_QFileDialog", QPixmap(), this ); + fd = new CustomFileDialog( d_fd ); + fd->setDir( initially ); + fd->setFilters( filter ); + fd->setBookmark( bookmark ); + fd->reparent(d_fd, QPoint(0,0)); + d_fd->setWidget( fd ); + + connect( dirView, SIGNAL( folderSelected( const QString & ) ), fd, SLOT( setDir2( const QString & ) ) ); + connect( fd, SIGNAL( dirEntered( const QString & ) ), dirView, SLOT( setDir( const QString & ) ) ); + + d_fd->setDockSite( KDockWidget::DockTop|KDockWidget::DockLeft|KDockWidget::DockRight|KDockWidget::DockBottom ); + d_fd->setEnableDocking(KDockWidget::DockNone); + + d_dirView->setEnableDocking(KDockWidget::DockTop|KDockWidget::DockLeft|KDockWidget::DockRight|KDockWidget::DockBottom|KDockWidget::DockCenter); + d_preview->setEnableDocking(KDockWidget::DockTop|KDockWidget::DockLeft|KDockWidget::DockRight|KDockWidget::DockBottom|KDockWidget::DockCenter); + + d_dirView->manualDock( d_fd, KDockWidget::DockLeft, 20 ); + d_preview->manualDock( d_fd, KDockWidget::DockBottom, 70 ); + + connect(fd, SIGNAL(fileHighlighted(const QString&)), preview, SLOT(showPreview(const QString&))); + connect(fd, SIGNAL(signalDone(int)), this, SLOT(done(int))); + + connect(fd, SIGNAL(dirEntered(const QString&)), this, SLOT(changeDir(const QString&))); + connect(dirView, SIGNAL(folderSelected(const QString&)), this, SLOT(changeDir(const QString&))); + + b_tree = new QToolButton( fd ); + QToolTip::add( b_tree, "Show/Hide Tree" ); + b_tree->setPixmap( QPixmap( dir_tree_xpm ) ); + connect( b_tree, SIGNAL(clicked()), d_dirView, SLOT(changeHideShowState()) ); + b_tree->setToggleButton(true); + b_tree->setOn(true); + fd->addToolButton( b_tree, true ); + + b_preview = new QToolButton( fd ); + QToolTip::add( b_preview, "Show/Hide Preview" ); + b_preview->setPixmap( QPixmap( preview_xpm ) ); + connect( b_preview, SIGNAL(clicked()), d_preview, SLOT(changeHideShowState()) ); + b_preview->setToggleButton(true); + b_preview->setOn(true); + fd->addToolButton( b_preview ); + + connect( dockManager, SIGNAL(change()), this, SLOT(dockChange())); + connect( dockManager, SIGNAL(setDockDefaultPos(KDockWidget*)), this, SLOT(setDockDefaultPos(KDockWidget*))); + setCaption("Open File"); + resize(550,450); + qDebug("read config"); + dockManager->readConfig( 0L , name ); +} + +void SFileDialog::dockChange() +{ + b_preview->setOn( d_preview->isVisibleToTLW() ); + b_tree->setOn( d_dirView->isVisibleToTLW() ); +} + +SFileDialog::~SFileDialog() +{ + KConfig* config = kapp->config(); + config->setGroup( QString("SFileDialogData:") + name() ); + config->writeEntry( "Bookmarks", fd->getBookmark() ); + + qDebug("write config"); + dockManager->writeConfig( 0L , name() ); +} + +void SFileDialog::setDockDefaultPos( KDockWidget* d ) +{ + if ( d == d_dirView ){ + d_dirView->manualDock( d_fd, KDockWidget::DockLeft, 20 ); + } + + if ( d == d_preview ){ + d_preview->manualDock( d_fd, KDockWidget::DockBottom, 70 ); + } +} + +void SFileDialog::changeDir( const QString& f ) +{ + if ( !f.isEmpty() ){ + KConfig* config = kapp->config(); + config->setGroup( QString("SFileDialogData:") + name() ); + config->writePathEntry( "InitiallyDir", f ); + } +} + +QString SFileDialog::getOpenFileName( QString initially, + const QStringList& filter, + const QString caption, const char* name ) +{ + SFileDialog* fd = new SFileDialog( initially, filter, name ); + if ( !caption.isNull() ) fd->setCaption( caption ); + QString result = ( fd->exec() == QDialog::Accepted ) ? fd->fd->selectedFile():QString::null; + delete fd; + + return result; +} + +QStringList SFileDialog::getOpenFileNames( QString initially, + const QStringList& filter, + const QString caption, const char* name ) +{ + SFileDialog* fd = new SFileDialog( initially, filter, name ); + if ( !caption.isNull() ) fd->setCaption( caption ); + + fd->fd->setMode( QFileDialog::ExistingFiles ); + fd->d_preview->undock(); + fd->b_preview->hide(); + + fd->exec(); + QStringList result = fd->fd->selectedFiles(); + delete fd; + + return result; +} + +void SFileDialog::showEvent( QShowEvent *e ) +{ + QDialog::showEvent( e ); + dirView->setDir( fd->dirPath() ); +} + +/******************************************************************************************************/ +PixmapView::PixmapView( QWidget *parent ) +:QScrollView( parent ) +{ +// kimgioRegister(); + viewport()->setBackgroundMode( PaletteBase ); +} + +void PixmapView::setPixmap( const QPixmap &pix ) +{ + pixmap = pix; + resizeContents( pixmap.size().width(), pixmap.size().height() ); + viewport()->repaint( true ); +} + +void PixmapView::drawContents( QPainter *p, int, int, int, int ) +{ + p->drawPixmap( 0, 0, pixmap ); +} + +Preview::Preview( QWidget *parent ) +:QWidgetStack( parent ) +{ + normalText = new QMultiLineEdit( this ); + normalText->setReadOnly( true ); + html = new QTextView( this ); + pixmap = new PixmapView( this ); + raiseWidget( normalText ); +} + +void Preview::showPreview( const QString &str ) +{ + QUrl u(str); + if ( u.isLocalFile() ){ + QString path = u.path(); + QFileInfo fi( path ); + if ( fi.isFile() && (int)fi.size() > 400 * 1024 ) { + normalText->setText( tr( "The File\n%1\nis too large, so I don't show it!" ).arg( path ) ); + raiseWidget( normalText ); + return; + } + + QPixmap pix( path ); + if ( pix.isNull() ) { + if ( fi.isFile() ) { + QFile f( path ); + if ( f.open( IO_ReadOnly ) ) { + QTextStream ts( &f ); + QString text = ts.read(); + f.close(); + if ( fi.extension().lower().contains( "htm" ) ) { + QString url = html->mimeSourceFactory()->makeAbsolute( path, html->context() ); + html->setText( text, url ); + raiseWidget( html ); + return; + } else { + normalText->setText( text ); + raiseWidget( normalText ); + return; + } + } + } + normalText->setText( QString::null ); + raiseWidget( normalText ); + } else { + pixmap->setPixmap( pix ); + raiseWidget( pixmap ); + } + } else { + normalText->setText( "I only show local files!" ); + raiseWidget( normalText ); + } +} + +// **************************************************************************************************** +static const char* homepage_xpm[] = { +"24 24 9 1", +" c #262660", +". c #383666", +"X c #62639c", +"o c #7e86a5", +"O c #a6a7dd", +"+ c #bbbaed", +"@ c #c4c4f2", +"# c #f8f9f9", +"$ c None", +"$$$$$$$$$$$$$$$$$$$$$$$$", +"$$$$$$$$$$$$$$$$$$$$$$$$", +"$$$$$$$$$$$$$$$$o.X$$$$$", +"$$$$$$$$$$oOOOO$O.X$$$$$", +"$$$$$$$$$$oXXXX+O.X$$$$$", +"$$$$$$$$$X#XXXXXO.X$$$$$", +"$$$$$$$$X #XXXXO.X$$$$$", +"$$$$$$$X XO #XXXO.X$$$$$", +"$$$$$$X XOOO #XXX.XX$$$$", +"$$$$$X XOOOOO #XXXXXX$$$", +"$$$$X XOOOOOOO #XXXXXX$$", +"$$$X XOOOOOOOOO #XXXXXX$", +"$$X XOOOOOOOOOOO #.....$", +"$$$$$OOOOXXXXOOOOX...$$$", +"$$$$$OOOOXXXXOOOOX...$$$", +"$$$$$OOOOXXXXOOOOX..o$$$", +"$$$$$OOOOXXXXOOOOX.oo$$$", +"$$$$$OOOOXXXXOOOOXXoo$$$", +"$$$$$OOOOXXXXOOOOXooo$$$", +"$$$ooOOOOXXXXOOOOXoooo$$", +"$ooooXXXXXXXXXXXXXooooo$", +"$ooooooooooooooooooooooo", +"$$$$$$$$$$$$$$$$$$$$$$$$", +"$$$$$$$$$$$$$$$$$$$$$$$$" +}; + +static const char* folder_trash[] = { +"16 16 10 1", +" c Gray0", +". c #222222", +"X c #333366", +"o c #6666cc", +"O c Magenta", +"+ c #808080", +"@ c #9999ff", +"# c #c0c0c0", +"$ c Gray100", +"% c None", +"%%%%%%oo%%%%%%%%", +"%%%%%o$$o%%%%%%%", +"%%%%o$$$$o%%%%%%", +"%%%o$+$+$$o o%%%", +"%%oo$$+$+$$o .%%", +"%%.oo$$+$+$$o.%%", +"%% Xoo$$+$$o +%%", +"%%o Xoo$$oo o%%", +"%%%X.XX +X%%%", +"%%%o@X+X#X+X+%%%", +"%%%+.$X#X+X %%%%", +"%%%%.o$o#X+X%%%%", +"%%%%.X@$X+ +%%%%", +"%%%%+Xo.#. %%%%%", +"%%%%%.Xo. o%%%%%", +"%%%%%+. %%%%%%" +}; + +static const char* globalbookmark_xpm[]={ +"12 16 3 1", +". c None", +"a c #000000", +"# c #008080", +"............", +"............", +"........##..", +".......#####", +"......#####a", +".....#####a.", +"....#####a..", +"...#####a...", +"..#####a....", +".#####a.....", +"aaa##a......", +"...#a.......", +"...a........", +"............", +"............", +"............"}; + +CustomFileDialog::CustomFileDialog( QWidget* parent ) +: QFileDialog( parent, 0, false ) +{ + QToolButton *p = new QToolButton( this ); + + p->setPixmap( QPixmap( globalbookmark_xpm ) ); + QToolTip::add( p, tr( "Bookmarks" ) ); + + bookmarkMenu = new QPopupMenu( this ); + connect( bookmarkMenu, SIGNAL( activated( int ) ), this, SLOT( bookmarkChosen( int ) ) ); + addId = bookmarkMenu->insertItem( "Add bookmark" ); + clearId = bookmarkMenu->insertItem( QPixmap(folder_trash), "Clear bookmarks" ); + bookmarkMenu->insertSeparator(); + + p->setPopup( bookmarkMenu ); + p->setPopupDelay(0); + addToolButton( p, true ); + + QToolButton *b = new QToolButton( this ); + QToolTip::add( b, tr( "Go Home!" ) ); + + b->setPixmap( QPixmap( homepage_xpm ) ); + connect( b, SIGNAL( clicked() ), this, SLOT( goHome() ) ); + + addToolButton( b ); +} + + +void CustomFileDialog::setBookmark( QStringList &s ) +{ + QStringList::Iterator it = s.begin(); + for ( ; it != s.end(); ++it ){ + bookmarkList << (*it); + + const char* book_pix[]={ + "12 16 3 1", + ". c None", + "a c #000000", + "# c #008080", + "............", + "............", + "........##..", + ".......#####", + "......#####a", + ".....#####a.", + "....#####a..", + "...#####a...", + "..#####a....", + ".#####a.....", + "aaa##a......", + "...#a.......", + "...a........", + "............", + "............", + "............"}; + bookmarkMenu->insertItem( QIconSet( book_pix ), (*it) ); + } +} + +CustomFileDialog::~CustomFileDialog() +{ +} + +void CustomFileDialog::setDir2( const QString &s ) +{ + blockSignals( true ); + setDir( s ); + blockSignals( false ); +} + +void CustomFileDialog::bookmarkChosen( int i ) +{ + if ( i == clearId ){ + bookmarkList.clear(); + bookmarkMenu->clear(); + addId = bookmarkMenu->insertItem( "Add bookmark" ); + clearId = bookmarkMenu->insertItem( "Clear bookmarks" ); + bookmarkMenu->insertSeparator(); + return; + } + + if ( i == addId ){ + bookmarkList << dirPath(); + + const char* book_pix[]={ + "12 16 3 1", + ". c None", + "a c #000000", + "# c #008080", + "............", + "............", + "........##..", + ".......#####", + "......#####a", + ".....#####a.", + "....#####a..", + "...#####a...", + "..#####a....", + ".#####a.....", + "aaa##a......", + "...#a.......", + "...a........", + "............", + "............", + "............"}; + bookmarkMenu->insertItem( QIconSet( book_pix ), dirPath() ); + return; + } + + setDir( bookmarkMenu->text( i ) ); +} + +void CustomFileDialog::goHome() +{ + if ( getenv( "HOME" ) ) + setDir( getenv( "HOME" ) ); + else + setDir( "/" ); +} + +void CustomFileDialog::done( int i ) +{ + emit signalDone(i); +} +/******************************************************************************************************/ +static const char* folder_closed_xpm[] = { +"16 16 9 1", +" c Gray0", +". c #222222", +"X c #6666cc", +"o c #9999ff", +"O c #c0c0c0", +"+ c #ccccff", +"@ c #ffffcc", +"# c Gray100", +"$ c None", +"$$$$$$$$$$$$$$$$", +"$$$$$$$$$$$$$$$$", +"$$$$$$$$$$$$$$$$", +"$$$$$$$$$$$$$$$$", +"$$XXXXo$$$$$$$$$", +"$X#++o@XXXXXX$$$", +"X#+++++++++++o$$", +"X#o+o+o+o+o+oX$$", +"X#+o+o+o+o+o+X $", +"X#o+o+o+o+o+oX $", +"X#+o+o+o+o+o+X $", +"X#o+o+o+o+o+oX $", +"X#+o+o+o+o+o+X $", +"X+o+o+o+o+o+oX $", +"XXXXXXXXXXXXXX $", +"$ .. $" +}; + +static const char* folder_open_xpm[] = { +"16 16 10 1", +" c Gray0", +". c #222222", +"X c #6666cc", +"o c Magenta", +"O c #9999ff", +"+ c #c0c0c0", +"@ c #ccccff", +"# c #ffffcc", +"$ c Gray100", +"% c None", +"%%%%%%%%%%%%%%%%", +"%%%%%%%%%%%%%%%%", +"%%%%%%%%%%%%%%%%", +"%%%%%%%%%%%%%%%%", +"%%XXXX%%%%%%%%%%", +"%X$$$XXXXXXXXX%%", +"%X$O+#######.OX%", +"%X$+#######.O@X%", +"%O$#######.O@OX ", +"XXXXXXXXXX.XO@X ", +"X$$$$$$$$$+ @OX ", +"%XO+O+O+O+O+ @X ", +"%X+O+O+O+O+O. X ", +"%%X+O+O+O+O+O. ", +"%%XXXXXXXXXXXXX ", +"%%% " +}; + +static const char* folder_locked_xpm[] = { +"16 16 8 1", +" c Gray0", +". c #333366", +"X c #6666cc", +"o c Magenta", +"O c #9999ff", +"+ c #c0c0c0", +"@ c Gray100", +"# c None", +"###O.O##########", +"###...##########", +"###O.O##########", +"##.#X#.#OX######", +"#...X...@@X#####", +"#.......OOOOOOX#", +"#.......@@@@@@X#", +"#@@@@@@@O+O+O+X ", +"#O@O+O+O+O+O+OX ", +"#O@+O+O+O+O+O+X ", +"#O@O+O+O+O+O+OX ", +"#O@+O+O+O+O+O+X ", +"#O@O+O+O+O+O+OX ", +"#OXXXXXXXXXXXXX ", +"## ", +"################" +}; + +Directory::Directory( Directory * parent, const QString& filename ) +:QListViewItem( parent ), f(filename) +{ + p = parent; + readable = QDir( fullName() ).isReadable(); + + if ( !readable ) + setPixmap( 0, QPixmap( folder_locked_xpm ) ); + else + setPixmap( 0, QPixmap( folder_closed_xpm ) ); +} + + +Directory::Directory( QListView * parent, const QString& filename ) +:QListViewItem( parent ), f(filename) +{ + p = 0; + readable = QDir( fullName() ).isReadable(); +} + + +void Directory::setOpen( bool o ) +{ + if ( o ) + setPixmap( 0, QPixmap( folder_open_xpm ) ); + else + setPixmap( 0, QPixmap( folder_closed_xpm ) ); + + if ( o && !childCount() ){ + QString s( fullName() ); + QDir thisDir( s ); + if ( !thisDir.isReadable() ) { + readable = false; + setExpandable( false ); + return; + } + + listView()->setUpdatesEnabled( false ); + const QFileInfoList * files = thisDir.entryInfoList(); + if ( files ){ + QFileInfoListIterator it( *files ); + QFileInfo * f; + while( (f=it.current()) != 0 ){ + ++it; + if ( f->fileName() != "." && f->fileName() != ".." && f->isDir() ) + (void)new Directory( this, f->fileName() ); + } + } + listView()->setUpdatesEnabled( true ); + } + QListViewItem::setOpen( o ); +} + + +void Directory::setup() +{ + setExpandable( true ); + QListViewItem::setup(); +} + + +QString Directory::fullName() +{ + QString s; + if ( p ) { + s = p->fullName(); + s.append( f.name() ); + s.append( "/" ); + } else { + s = f.name(); + } + return s; +} + + +QString Directory::text( int column ) const +{ + if ( column == 0 ) + return f.name(); + else + if ( readable ) + return "Directory"; + else + return "Unreadable Directory"; +} + +DirectoryView::DirectoryView( QWidget *parent, const char *name ) +:QListView( parent, name ) +{ + connect( this, SIGNAL( clicked( QListViewItem * ) ), + this, SLOT( slotFolderSelected( QListViewItem * ) ) ); + connect( this, SIGNAL( doubleClicked( QListViewItem * ) ), + this, SLOT( slotFolderSelected( QListViewItem * ) ) ); + connect( this, SIGNAL( returnPressed( QListViewItem * ) ), + this, SLOT( slotFolderSelected( QListViewItem * ) ) ); + + setAcceptDrops( true ); + viewport()->setAcceptDrops( true ); +} + +void DirectoryView::setOpen( QListViewItem* i, bool b ) +{ + QListView::setOpen(i,b); + setCurrentItem(i); + slotFolderSelected(i); +} + +void DirectoryView::slotFolderSelected( QListViewItem *i ) +{ + if ( !i ) return; + + Directory *dir = (Directory*)i; + emit folderSelected( dir->fullName() ); +} + +QString DirectoryView::fullPath(QListViewItem* item) +{ + QString fullpath = item->text(0); + while ( (item=item->parent()) ) { + if ( item->parent() ) + fullpath = item->text(0) + "/" + fullpath; + else + fullpath = item->text(0) + fullpath; + } + return fullpath; +} + +void DirectoryView::setDir( const QString &s ) +{ + QListViewItemIterator it( this ); + ++it; + for ( ; it.current(); ++it ) { + it.current()->setOpen( false ); + } + + QStringList lst( QStringList::split( "/", s ) ); + QListViewItem *item = firstChild(); + QStringList::Iterator it2 = lst.begin(); + for ( ; it2 != lst.end(); ++it2 ) { + while ( item ) { + if ( item->text( 0 ) == *it2 ) { + item->setOpen( true ); + break; + } + item = item->itemBelow(); + } + } + + if ( item ){ + setSelected( item, true ); + setCurrentItem( item ); + } +} + +QString DirectoryView::selectedDir() +{ + Directory *dir = (Directory*)currentItem(); + return dir->fullName(); +} +/**********************************************************************************************/ + +int main(int argc, char* argv[]) { + KApplication app(argc,argv,"kdockwidgetdemo"); + +#if 0 + SFileDialog* openfile = new SFileDialog(); + openfile->exec(); + qDebug( openfile->fileName() ); +#endif + +#if 0 + qDebug ( SFileDialog::getOpenFileName( QString::null, QString::fromLatin1("All (*)"), + QString::fromLatin1("DockWidget Demo"), "dialog1" ) ); +#endif + +#if 1 + QStringList s = SFileDialog::getOpenFileNames( QString::null, QString::fromLatin1("All (*)"), + QString::fromLatin1("DockWidget Demo"), "dialog1" ); + QStringList::Iterator it = s.begin(); + for ( ; it != s.end(); ++it ){ + qDebug( "%s", (*it).local8Bit().data() ); + } +#endif + return 0; +} + +#include "kdockwidgetdemo.moc" + -- cgit v1.2.1