00001 #include "helpbrowserdialog.h"
00002 #include "../Help/help.h"
00003 #include "../Models/helpsortfilterproxymodel.h"
00004 #include "../Dialogs/aboutdialog.h"
00005 #include "../Data/aboutdata.h"
00006 #include <QSortFilterProxyModel>
00007 #include <QHelpContentItem>
00008 #include <QMessageBox>
00009 #include <QDebug>
00010 #include <QTimer>
00011
00012 HelpBrowserDialog::HelpBrowserDialog(AboutData *data, QWidget *parent) : QMainWindow(parent)
00013 {
00014 setupUi(this);
00015 intialize();
00016 createActions();
00017
00018 this->data = data;
00019
00020 setAttribute(Qt::WA_DeleteOnClose, true);
00021
00022
00023
00024
00025
00026 QTimer::singleShot(500, this, SLOT(showOverview()));
00027 }
00028
00029 void HelpBrowserDialog::intialize()
00030 {
00031 help = new Help(this);
00032 helpContentModel = help->m_engine.contentModel();
00033 proxyModel = new HelpSortFilterProxyModel(this);
00034 proxyModel->setSourceModel(helpContentModel);
00035 proxyModel->setDynamicSortFilter(true);
00036 proxyModel->setFilterCaseSensitivity(Qt::CaseInsensitive);
00037
00038 treeContent->setModel(proxyModel);
00039 }
00040
00041 void HelpBrowserDialog::createActions()
00042 {
00043 connect(treeContent, SIGNAL(clicked(QModelIndex)), this, SLOT(displayedFileChanged(QModelIndex)));
00044 connect(textHelpFilter, SIGNAL(textChanged(QString)), proxyModel, SLOT(setFilterFixedString(QString)));
00045 connect(actionAboutAllevo, SIGNAL(triggered()), this, SLOT(about()));
00046 connect(actionOverview, SIGNAL(triggered()), this, SLOT(showOverview()));
00047 connect(actionExit, SIGNAL(triggered()), this, SLOT(close()));
00048 }
00049
00050 void HelpBrowserDialog::displayedFileChanged(QModelIndex index)
00051 {
00052 QHelpContentItem *item = helpContentModel->contentItemAt(proxyModel->mapToSource(index));
00053 helpView->setContent(help->m_engine.fileData(item->url()));
00054 }
00055
00056 void HelpBrowserDialog::about()
00057 {
00058 AboutDialog *about = new AboutDialog(data, this);
00059 about->show();
00060 }
00061
00062 void HelpBrowserDialog::showOverview()
00063 {
00064 QModelIndex index = helpContentModel->index(0, 0, QModelIndex());
00065 if(index.isValid())
00066 {
00067 QHelpContentItem *item = helpContentModel->contentItemAt(index);
00068 if(item)
00069 {
00070 helpView->setContent(help->m_engine.fileData(item->url()));
00071 }
00072 }
00073 }
00074
00075 HelpBrowserDialog::~HelpBrowserDialog()
00076 {
00077 proxyModel->deleteLater();
00078 helpContentModel->deleteLater();
00079 delete help;
00080 }