summaryrefslogtreecommitdiff
path: root/core/apps/helpbrowser/helpbrowser.cpp
Side-by-side diff
Diffstat (limited to 'core/apps/helpbrowser/helpbrowser.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--core/apps/helpbrowser/helpbrowser.cpp227
1 files changed, 227 insertions, 0 deletions
diff --git a/core/apps/helpbrowser/helpbrowser.cpp b/core/apps/helpbrowser/helpbrowser.cpp
new file mode 100644
index 0000000..d32fc0b
--- a/dev/null
+++ b/core/apps/helpbrowser/helpbrowser.cpp
@@ -0,0 +1,227 @@
+/**********************************************************************
+** Copyright (C) 2000 Trolltech AS. All rights reserved.
+**
+** This file is part of Qtopia Environment.
+**
+** This file may be distributed and/or modified under the terms of the
+** GNU General Public License version 2 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file.
+**
+** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+**
+** See http://www.trolltech.com/gpl/ for GPL licensing information.
+**
+** Contact info@trolltech.com if any conditions of this licensing are
+** not clear to you.
+**
+**********************************************************************/
+
+#include "helpbrowser.h"
+
+#include <qpe/qpeapplication.h>
+#include <qpe/resource.h>
+#include <qpe/global.h>
+
+#include <qstatusbar.h>
+#include <qdragobject.h>
+#include <qpixmap.h>
+#include <qpopupmenu.h>
+#include <qpe/qpemenubar.h>
+#include <qpe/qpetoolbar.h>
+#include <qtoolbutton.h>
+#include <qiconset.h>
+#include <qfile.h>
+#include <qtextstream.h>
+#include <qstylesheet.h>
+#include <qmessagebox.h>
+#include <qfiledialog.h>
+#include <qevent.h>
+#include <qlineedit.h>
+#include <qobjectlist.h>
+#include <qfileinfo.h>
+#include <qfile.h>
+#include <qdatastream.h>
+#include <qprinter.h>
+#include <qsimplerichtext.h>
+#include <qpaintdevicemetrics.h>
+#include <qaction.h>
+
+#include <ctype.h>
+
+
+HelpBrowser::HelpBrowser( QWidget* parent, const char *name, WFlags f )
+ : QMainWindow( parent, name, f ),
+ selectedURL()
+{
+ init( "index.html" );
+}
+
+void HelpBrowser::init( const QString& _home )
+{
+ setIcon( Resource::loadPixmap( "help_icon" ) );
+
+ browser = new QTextBrowser( this );
+ browser->setFrameStyle( QFrame::Panel | QFrame::Sunken );
+ connect( browser, SIGNAL( textChanged() ),
+ this, SLOT( textChanged() ) );
+
+ setCentralWidget( browser );
+ setToolBarsMovable( FALSE );
+
+ if ( !_home.isEmpty() )
+ browser->setSource( _home );
+
+ QPEToolBar* toolbar = new QPEToolBar( this );
+ toolbar->setHorizontalStretchable( TRUE );
+ QPEMenuBar *menu = new QPEMenuBar( toolbar );
+
+ toolbar = new QPEToolBar( this );
+ // addToolBar( toolbar, "Toolbar");
+
+ //QPopupMenu* go = new QPopupMenu( this );
+ backAction = new QAction( tr( "Backward" ), Resource::loadIconSet( "back" ), QString::null, 0, this, 0 );
+ connect( backAction, SIGNAL( activated() ), browser, SLOT( backward() ) );
+ connect( browser, SIGNAL( backwardAvailable( bool ) ),
+ backAction, SLOT( setEnabled( bool ) ) );
+ //backAction->addTo( go );
+ backAction->addTo( toolbar );
+ backAction->setEnabled( FALSE );
+
+ forwardAction = new QAction( tr( "Forward" ), Resource::loadIconSet( "forward" ), QString::null, 0, this, 0 );
+ connect( forwardAction, SIGNAL( activated() ), browser, SLOT( forward() ) );
+ connect( browser, SIGNAL( forwardAvailable( bool ) ),
+ forwardAction, SLOT( setEnabled( bool ) ) );
+ //forwardAction->addTo( go );
+ forwardAction->addTo( toolbar );
+ forwardAction->setEnabled( FALSE );
+
+ QAction *a = new QAction( tr( "Home" ), Resource::loadPixmap( "home" ), QString::null, 0, this, 0 );
+ connect( a, SIGNAL( activated() ), browser, SLOT( home() ) );
+ //a->addTo( go );
+ a->addTo( toolbar );
+
+ bookm = new QPopupMenu( this );
+ bookm->insertItem( tr( "Add Bookmark" ), this, SLOT( addBookmark() ) );
+ bookm->insertItem( tr( "Remove from Bookmarks" ), this, SLOT( removeBookmark() ) );
+ bookm->insertSeparator();
+ connect( bookm, SIGNAL( activated( int ) ),
+ this, SLOT( bookmChosen( int ) ) );
+
+ readBookmarks();
+
+ //menu->insertItem( tr("Go"), go );
+ menu->insertItem( tr( "Bookmarks" ), bookm );
+
+ resize( 240, 300 );
+ browser->setFocus();
+
+ connect( qApp, SIGNAL(appMessage(const QCString&, const QByteArray&)),
+ this, SLOT(appMessage(const QCString&, const QByteArray&)) );
+}
+
+void HelpBrowser::appMessage(const QCString& msg, const QByteArray& data)
+{
+ if ( msg == "showFile(QString)" ) {
+ QDataStream ds(data,IO_ReadOnly);
+ QString fn;
+ ds >> fn;
+ setDocument( fn );
+ }
+}
+
+void HelpBrowser::setDocument( const QString &doc )
+{
+ if ( !doc.isEmpty() )
+ browser->setSource( doc );
+ raise();
+}
+
+
+void HelpBrowser::textChanged()
+{
+ if ( browser->documentTitle().isNull() )
+ setCaption( tr("Help Browser") );
+ else
+ setCaption( browser->documentTitle() ) ;
+
+ selectedURL = caption();
+}
+
+HelpBrowser::~HelpBrowser()
+{
+ QStringList bookmarks;
+ QMap<int, Bookmark>::Iterator it2 = mBookmarks.begin();
+ for ( ; it2 != mBookmarks.end(); ++it2 )
+ bookmarks.append( (*it2).name + "=" + (*it2).file );
+
+ QFile f2( Global::applicationFileName("helpbrowser", "bookmarks") );
+ if ( f2.open( IO_WriteOnly ) ) {
+ QDataStream s2( &f2 );
+ s2 << bookmarks;
+ f2.close();
+ }
+}
+
+void HelpBrowser::pathSelected( const QString &_path )
+{
+ browser->setSource( _path );
+}
+
+void HelpBrowser::readBookmarks()
+{
+ QString file = Global::applicationFileName("helpbrowser", "bookmarks");
+ if ( QFile::exists( file ) ) {
+ QStringList bookmarks;
+ QFile f( file );
+ if ( f.open( IO_ReadOnly ) ) {
+ QDataStream s( &f );
+ s >> bookmarks;
+ f.close();
+ }
+ QStringList::Iterator it = bookmarks.begin();
+ for ( ; it != bookmarks.end(); ++it ) {
+ Bookmark b;
+ QString current = *it;
+ int equal = current.find( "=" );
+ if ( equal < 1 || equal == (int)current.length() - 1 )
+ continue;
+ b.name = current.left( equal );
+ b.file = current.mid( equal + 1 );
+ mBookmarks[ bookm->insertItem( b.name ) ] = b;
+ }
+ }
+}
+
+void HelpBrowser::bookmChosen( int i )
+{
+ if ( mBookmarks.contains( i ) )
+ browser->setSource( mBookmarks[ i ].file );
+}
+
+void HelpBrowser::addBookmark()
+{
+ Bookmark b;
+ b.name = browser->documentTitle();
+ b.file = browser->source();
+ if (b.name.isEmpty() ) {
+ b.name = b.file.left( b.file.length() - 5 ); // remove .html
+ }
+ QMap<int, Bookmark>::Iterator it;
+ for( it = mBookmarks.begin(); it != mBookmarks.end(); ++it )
+ if ( (*it).file == b.file ) return;
+ mBookmarks[ bookm->insertItem( b.name ) ] = b;
+}
+
+void HelpBrowser::removeBookmark()
+{
+ QString file = browser->source();
+ QMap<int, Bookmark>::Iterator it = mBookmarks.begin();
+ for( ; it != mBookmarks.end(); ++it )
+ if ( (*it).file == file ) {
+ bookm->removeItem( it.key() );
+ mBookmarks.remove( it );
+ break;
+ }
+}