-
Notifications
You must be signed in to change notification settings - Fork 56
/
Copy pathhelpwindow.cpp
104 lines (89 loc) · 3.5 KB
/
helpwindow.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
/****************************************************************************
**
** Copyright (C) 2006-2008 Urs Wolfer <uwolfer @ fwo.ch>
**
** This file is part of QtEmu.
**
** 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.
**
** 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 Library General Public License
** along with this library; see the file COPYING.LIB. If not, write to
** the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
** Boston, MA 02110-1301, USA.
**
****************************************************************************/
#include "helpwindow.h"
#include <QFile>
#include <QCoreApplication>
#include <QMessageBox>
#include <QSettings>
#include <QVBoxLayout>
#include <QTextBrowser>
#include <QTimer>
#include <QPushButton>
#include <QLocale>
HelpWindow::HelpWindow(QWidget *parent)
: QDialog(parent)
{
setWindowTitle(tr("QtEmu Help"));
resize(850, 600);
setSizeGripEnabled(true);
QTextBrowser *textBrowser = new QTextBrowser(this);
QUrl url = getHelpFile();
if (!url.isEmpty())
textBrowser->setSource(url);
else //there is no help available
QTimer::singleShot(0, this, SLOT(close()));
textBrowser->scroll(0, 0);
QPushButton *closeButton = new QPushButton(tr("Close"));
connect(closeButton, SIGNAL(clicked()), this, SLOT(close()));
QHBoxLayout *buttonsLayout = new QHBoxLayout;
buttonsLayout->addStretch(1);
buttonsLayout->addWidget(closeButton);
QVBoxLayout *mainLayout = new QVBoxLayout;
mainLayout->addWidget(textBrowser);
mainLayout->addLayout(buttonsLayout);
setLayout(mainLayout);
}
QUrl HelpWindow::getHelpFile()
{
QUrl url = QUrl(getHelpLocation().toString() + "main.htm");
if(url.isEmpty())
QMessageBox::critical(this, tr("Help not found"),
tr("Help not found. It is probably not installed."));
return url;
}
QUrl HelpWindow::getHelpLocation()
{
QSettings settings("QtEmu", "QtEmu");
QString locale = settings.value("language", QString(QLocale::system().name())).toString();
if (locale != "en")
{
//check for case when qtemu executable is in same dir (linux / win)
QUrl testUrl = QUrl(QCoreApplication::applicationDirPath() + "/help/" + locale);
if (QFile::exists(testUrl.toString()))
return testUrl;
//check for case when qtemu executable is in bin/ (installed on linux)
testUrl = QUrl(QCoreApplication::applicationDirPath() + "/../share/qtemu/help/" + locale);
if (QFile::exists(testUrl.toString()))
return testUrl;
}
//check for case when qtemu executable is in same dir (linux / win)
QUrl testUrl = QUrl(QCoreApplication::applicationDirPath() + "/help/");
if (QFile::exists(testUrl.toString()))
return testUrl;
//check for case when qtemu executable is in bin/ (installed on linux)
testUrl = QUrl(QCoreApplication::applicationDirPath() + "/../share/qtemu/help/");
if (QFile::exists(testUrl.toString()))
return testUrl;
//qDebug(testUrl.toString().toLocal8Bit().constData());
return QUrl();
}