summaryrefslogtreecommitdiffstats
path: root/src/modules/help/helpwidget.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/modules/help/helpwidget.cpp')
-rw-r--r--src/modules/help/helpwidget.cpp154
1 files changed, 154 insertions, 0 deletions
diff --git a/src/modules/help/helpwidget.cpp b/src/modules/help/helpwidget.cpp
new file mode 100644
index 00000000..4036a0dd
--- /dev/null
+++ b/src/modules/help/helpwidget.cpp
@@ -0,0 +1,154 @@
+//
+// File : helpwidget.cpp
+// Creation date : Thu Aug 10 2000 17:42:12 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// 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 opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, write to the Free Software Foundation,
+// Inc. ,51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+//
+
+#include "helpwidget.h"
+
+#include "kvi_frame.h"
+#include "kvi_iconmanager.h"
+#include "kvi_locale.h"
+#include "kvi_app.h"
+#include "kvi_msgbox.h"
+#include "kvi_module.h"
+#include "kvi_styled_controls.h"
+#include "helpwindow.h"
+#include "kvi_fileutils.h"
+
+#include <qtoolbutton.h>
+#include <qlineedit.h>
+#include <qtooltip.h>
+#include <qtimer.h>
+#include <qclipboard.h>
+
+extern Index * g_pDocIndex;
+extern KviPointerList<KviHelpWindow> * g_pHelpWindowList;
+extern KviPointerList<KviHelpWidget> * g_pHelpWidgetList;
+
+KviHelpWidget::KviHelpWidget(QWidget * par,KviFrame * lpFrm,bool bIsStandalone)
+: QWidget(par,"help_widget")
+{
+
+ if(bIsStandalone)g_pHelpWidgetList->append(this);
+ m_bIsStandalone = bIsStandalone;
+
+//#warning "Re enable this when using Qt 3.0 : QProcess "
+ m_pTextBrowser = new QTextBrowser(this,"text_browser");
+ m_pTextBrowser->setFrameStyle(QFrame::StyledPanel|QFrame::Sunken);
+#ifndef COMPILE_USE_QT4
+ m_pTextBrowser->setFocusPolicy(QWidget::NoFocus);
+#endif
+ m_pToolBar = new KviTalHBox(this);
+
+ m_pBtnIndex = new KviStyledToolButton(m_pToolBar);
+ m_pBtnIndex->setIconSet(*g_pIconManager->getBigIcon(KVI_BIGICON_HELPINDEX));
+ connect(m_pBtnIndex,SIGNAL(clicked()),this,SLOT(showIndex()));
+ //m_pBtnIndex->setUsesBigPixmap(true);
+
+ m_pBtnBackward = new KviStyledToolButton(m_pToolBar);
+ m_pBtnBackward->setIconSet(*g_pIconManager->getBigIcon(KVI_BIGICON_HELPBACK));
+ connect(m_pBtnBackward,SIGNAL(clicked()),m_pTextBrowser,SLOT(backward()));
+ m_pBtnBackward->setEnabled(false);
+ //m_pBtnBackward->setUsesBigPixmap(true);
+
+ m_pBtnForward = new KviStyledToolButton(m_pToolBar);
+ m_pBtnForward->setIconSet(*g_pIconManager->getBigIcon(KVI_BIGICON_HELPFORWARD));
+ connect(m_pBtnForward,SIGNAL(clicked()),m_pTextBrowser,SLOT(forward()));
+ m_pBtnForward->setEnabled(false);
+ //m_pBtnForward->setUsesBigPixmap(true);
+
+ QWidget* pSpacer=new QWidget(m_pToolBar);
+
+ if(bIsStandalone)
+ {
+ QToolButton * b = new KviStyledToolButton(m_pToolBar);
+ b->setIconSet(*g_pIconManager->getBigIcon(KVI_BIGICON_HELPCLOSE));
+ connect(b,SIGNAL(clicked()),this,SLOT(doClose()));
+ //b->setUsesBigPixmap(true);
+ }
+
+ m_pToolBar->setStretchFactor(pSpacer,1);
+ connect(m_pTextBrowser,SIGNAL(backwardAvailable(bool)),m_pBtnBackward,SLOT(setEnabled(bool)));
+ connect(m_pTextBrowser,SIGNAL(forwardAvailable(bool)),m_pBtnForward,SLOT(setEnabled(bool)));
+
+ m_pTextBrowser->viewport()->installEventFilter(this);
+
+}
+
+KviHelpWidget::~KviHelpWidget()
+{
+ if(m_bIsStandalone)g_pHelpWidgetList->removeRef(this);
+}
+
+void KviHelpWidget::showIndex()
+{
+#ifdef COMPILE_USE_QT4
+ m_pTextBrowser->setSource(QUrl("index.html"));
+#else
+ m_pTextBrowser->setSource("index.html");
+#endif
+}
+
+void KviHelpWidget::resizeEvent(QResizeEvent *e)
+{
+ int hght = m_pToolBar->sizeHint().height();
+ if(hght < 40)hght = 40;
+ m_pToolBar->setGeometry(0,0,width(),hght);
+ m_pTextBrowser->setGeometry(0,hght,width(),height() - hght);
+}
+
+void KviHelpWidget::doClose()
+{
+ // hack needed to workaround "QToolBar::emulateButtonClicked()"
+ // that refers to the "this" pointer after this slot has been
+ // called (from the "too-small-toolbar-for-all-items-popup")
+ QTimer::singleShot(0,this,SLOT(suicide()));
+}
+
+void KviHelpWidget::suicide()
+{
+ // goodbye cruel wolrd
+ delete this;
+}
+
+QSize KviHelpWidget::sizeHint() const
+{
+ int wdth = m_pTextBrowser->sizeHint().width();
+ if(m_pToolBar->sizeHint().width() > wdth)wdth = m_pToolBar->sizeHint().width();
+ QSize s(wdth,m_pTextBrowser->sizeHint().height() + m_pToolBar->sizeHint().height());
+ return s;
+}
+
+bool KviHelpWidget::eventFilter(QObject * o, QEvent *e)
+{
+ QClipboard *cb = QApplication::clipboard();
+
+ if(e->type() == QEvent::MouseButtonRelease) {
+ if(m_pTextBrowser->hasSelectedText()) {
+ cb->setText(m_pTextBrowser->selectedText());
+ }
+ }
+
+ return QWidget::eventFilter(o,e);
+}
+
+
+
+#include "helpwidget.moc"