/*************************************************************************** * * * begin : 15 Jan 2004 * * copyright : (C) 2003 by Samokhvalov Anton :) * * * ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "Def.h" #include "History.h" #include "MainView.h" #include "TopicTree.h" #include "HtmlView.h" #include "TabbedHtml.h" #include #ifndef FOR_KPART #include "Exceptions.h" #include "Container.h" MainView::MainView( Container& cont, QWidget* parent, const char* name ): QSplitter( parent, name ), d_topic_tree( 0 ), d_html_view( 0 ), d_status_bar( 0 ) { setFocusPolicy( QWidget::StrongFocus ); KTempFile tmp( QString::null, ".chm" ); if ( tmp.status() != 0 ) { throw FileException( i18n( "can not create temporary file" ) ); } QDataStream* s = tmp.dataStream(); const vector< char >& t = cont.getData(); s->writeRawBytes( &(*t.begin()), t.size() ); tmp.close(); construct( tmp.name() ); } #endif MainView::MainView( const QString& fname, KActionCollection* ac, QWidget* parent, const char* name ): QSplitter( parent, name ), d_topic_tree( 0 ), d_html_view( 0 ), d_status_bar( 0 ), d_ac( ac ), d_fname( fname ) { construct( fname ); } void MainView::construct( const QString& fname ) { setFocusPolicy( QWidget::StrongFocus ); chm::chmfile* file = new chm::chmfile( (const char*)(fname.local8Bit()) ); d_topic_tree = new TopicTree( this, "d_topic_tree" ); d_html_view = new TabbedHtml( d_fname, d_ac, this, this, "qw" ); //d_html_view = new HtmlView( d_fname, d_ac, this, this, "d_html_view" ); if ( file->is_open() ) { d_topic_tree->slotLoad( file ); file->close(); } delete file; connect( d_topic_tree, SIGNAL(currentChanged(QListViewItem*)), d_html_view, SLOT(slotSetUrl(QListViewItem*)) ); } MainView::~MainView() { } void MainView::setStatusBarMessage( const QString& message ) { #ifdef FOR_KPART emit signalSetStatusBarMessage( message ); #else d_status_bar->setText( message ); #endif } void MainView::polish() { QSplitter::polish(); if ( d_topic_tree ) { d_topic_tree->setColumnWidth( 0, width()/4 ); } } void MainView::up() { if ( d_html_view ) { d_html_view->up(); } } void MainView::back() { if ( d_html_view ) { d_html_view->back(); } } void MainView::forward() { if ( d_html_view ) { d_html_view->forward(); } } void MainView::home() { if ( d_topic_tree ) { d_topic_tree->home(); } } void MainView::slotChangeState( bool up_, bool back_, bool forward_ ) { emit changeState( up_, back_, forward_ ); } bool MainView::openFile( const QString& fname ) { bool ret = false; chm::chmfile* file = new chm::chmfile( (const char*)(fname.local8Bit()) ); if ( file && file->is_open() ) { ret = true; d_topic_tree->slotLoad( file ); file->close(); d_html_view->setFileName( fname ); emit codecChanged( d_topic_tree->getCodec() ); } delete file; return ret; } void MainView::slotSetZoom( int percents ) { d_html_view->setZoomFactor( percents ); } void MainView::slotHideTopicTree( bool toggled ) { if ( toggled ) { d_topic_tree->hide(); } else { d_topic_tree->show(); } } TopicTree* MainView::getTopicTree() { return d_topic_tree; } void MainView::slotSetCodec( QTextCodec* codec ) { d_topic_tree->setCodec( codec ); } #include "MainView.moc"