mirror of
https://github.com/RetroShare/RetroShare.git
synced 2025-05-25 09:11:06 -04:00
added a Help Dialog to can make translated html Help/Faq/ pages for RetroShare for each language a own html page.
git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@662 b45a01b8-16f6-495d-af2f-9b41ad6348cc
This commit is contained in:
parent
4c840b5c7e
commit
e92080789a
28 changed files with 2080 additions and 146 deletions
110
retroshare-gui/src/gui/help/browser/helptextbrowser.cpp
Normal file
110
retroshare-gui/src/gui/help/browser/helptextbrowser.cpp
Normal file
|
@ -0,0 +1,110 @@
|
|||
/****************************************************************
|
||||
* This file is distributed under the following license:
|
||||
*
|
||||
* Copyright (c) 2008, defnax
|
||||
* Copyright (c) 2008, Matt Edman, Justin Hipple
|
||||
*
|
||||
* 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 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.
|
||||
****************************************************************/
|
||||
|
||||
/*
|
||||
** \file helptextbrowser.cpp
|
||||
** \version $Id: helptextbrowser.cpp 2679 2008-06-10 03:07:10Z edmanm $
|
||||
** \brief Displays an HTML-based help document
|
||||
*/
|
||||
|
||||
#include <QDir>
|
||||
#include <QFile>
|
||||
#include <QDesktopServices>
|
||||
#include "gui/common/vmessagebox.h"
|
||||
#include "gui/common/html.h"
|
||||
#include <rshare.h>
|
||||
|
||||
#include "helptextbrowser.h"
|
||||
|
||||
|
||||
/** Default constructor. */
|
||||
HelpTextBrowser::HelpTextBrowser(QWidget *parent)
|
||||
: QTextBrowser(parent)
|
||||
{
|
||||
setOpenExternalLinks(false);
|
||||
}
|
||||
|
||||
/** Loads a resource into the browser. If it is an HTML resource, we'll load
|
||||
* it as UTF-8, so the special characters in our translations appear properly. */
|
||||
QVariant
|
||||
HelpTextBrowser::loadResource(int type, const QUrl &name)
|
||||
{
|
||||
/* If it's an HTML file, we'll handle it ourselves */
|
||||
if (type == QTextDocument::HtmlResource) {
|
||||
QString helpPath = ":/help/";
|
||||
|
||||
/* Fall back to English if there is no translation of the specified help
|
||||
* page in the current language. */
|
||||
if (!name.path().contains("/")) {
|
||||
QString language = Rshare::language();
|
||||
if (!QDir(":/help/" + language).exists())
|
||||
language = "en";
|
||||
helpPath += language + "/";
|
||||
}
|
||||
|
||||
QFile file(helpPath + name.path());
|
||||
if (!file.open(QIODevice::ReadOnly)) {
|
||||
return tr("Error opening help file: ") + name.path();
|
||||
}
|
||||
return QString::fromUtf8(file.readAll());
|
||||
}
|
||||
/* Everything else, just let QTextBrowser take care of it. */
|
||||
return QTextBrowser::loadResource(type, name);
|
||||
}
|
||||
|
||||
|
||||
/** Called when the displayed document is changed. If <b>url</b> specifies
|
||||
* an external link, then the user will be prompted for whether they want to
|
||||
* open the link in their default browser or not. */
|
||||
void
|
||||
HelpTextBrowser::setSource(const QUrl &url)
|
||||
{
|
||||
if (url.scheme() != "qrc" && !url.isRelative()) {
|
||||
/* External link. Prompt the user for a response. */
|
||||
int ret = VMessageBox::question(this,
|
||||
tr("Opening External Link"),
|
||||
p(tr("Vidalia can open the link you selected in your default "
|
||||
"Web browser. If your browser is not currently "
|
||||
"configured to use Tor then the request will not be "
|
||||
"anonymous.")) +
|
||||
p(tr("Do you want Vidalia to open the link in your Web "
|
||||
"browser?")),
|
||||
VMessageBox::Yes|VMessageBox::Default,
|
||||
VMessageBox::Cancel|VMessageBox::Cancel);
|
||||
|
||||
if (ret == VMessageBox::Cancel)
|
||||
return;
|
||||
|
||||
bool ok = QDesktopServices::openUrl(url);
|
||||
if (!ok) {
|
||||
VMessageBox::information(this,
|
||||
tr("Unable to Open Link"),
|
||||
tr("Vidalia was unable to open the selected link in your Web browser. "
|
||||
"You can still copy the URL and paste it into your browser."),
|
||||
VMessageBox::Ok);
|
||||
}
|
||||
} else {
|
||||
/* Internal link. Just load it like normal. */
|
||||
QTextBrowser::setSource(url);
|
||||
}
|
||||
}
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue