diff options
| author | Tannin <devnull@localhost> | 2013-06-20 21:55:37 +0200 |
|---|---|---|
| committer | Tannin <devnull@localhost> | 2013-06-20 21:55:37 +0200 |
| commit | f8c683f700a3fff30540ff343df2bfba15080e86 (patch) | |
| tree | 248b6dcea1f45449675c05d4e64ed4b76e976919 /src/nexusview.cpp | |
| parent | 49cbe0349184419530d22782cc670946b61c9f01 (diff) | |
- some fixes for qt5 compatibility
- hook.dll no longer creates a dump and uninstalls it if an exception is reported that doesn't originate from it
- NCC used read-only transactions again because otherwise solid archives become unusably slow.
- removed the integrated nexus browser
- the mod description and motd are now rendered in QTextBrowser. This (and the above) eliminates the dependency on qtwebkit
- removed the direct file download for mod files
- reduced CPU usage during downloads by invalidating only one column of the download list. This widget still needs to be replaced
- added the complete filename as an option for the modname
- applications that require elevation can now be started by invoking an elevated secondary ModOrganizer instance
- MO will now register nexus file servers and provides a settings dialog to pick preferred servers. (This preference is not used yet)
- worked around 1-2 bugs in QSortFilterProxy
- handling of nxm links is now done by an external application. This allows the registration of different applications depending on the game
- integrated fomod installer now displays the screenshot in a scalable view
- bugfix: integrated fomod installer didn't name output files correctly if the name differs from the source name
- bugfix: a successful login to nexus was (sometimes?) not correctly detected as a success
- bugfix: top-level entries in QtGroupingProxy were sometimes incorrectly displayed as groups
- bugfix: GetPrivateProfile... optimization could cause null-pointer indirection
- bugfix: GetCurrentWorkingDirectory caused buffer overflow in case of pre-flighting (buffer size 0)
- bugfix: configurator plugin now also uses qt5 (it's currently broken though)
Diffstat (limited to 'src/nexusview.cpp')
| -rw-r--r-- | src/nexusview.cpp | 121 |
1 files changed, 0 insertions, 121 deletions
diff --git a/src/nexusview.cpp b/src/nexusview.cpp deleted file mode 100644 index 6d70d830..00000000 --- a/src/nexusview.cpp +++ /dev/null @@ -1,121 +0,0 @@ -/* -Copyright (C) 2012 Sebastian Herbord. All rights reserved. - -This file is part of Mod Organizer. - -Mod Organizer 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 3 of the License, or -(at your option) any later version. - -Mod Organizer 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 Mod Organizer. If not, see <http://www.gnu.org/licenses/>. -*/ - -#include "nexusview.h" - -#include <QEvent> -#include <QKeyEvent> -#include <QWebFrame> -#include <QWebElement> -#include <QNetworkDiskCache> -#include <QMenu> -#include <Shlwapi.h> -#include "utility.h" - - -using namespace MOBase; - - -NexusView::NexusView(QWidget *parent) - : QWebView(parent), m_LastSeenModID(0) -{ - installEventFilter(this); - connect(this, SIGNAL(urlChanged(QUrl)), this, SLOT(urlChanged(QUrl))); - - page()->settings()->setMaximumPagesInCache(10); -} - - -void NexusView::urlChanged(const QUrl &url) -{ - QRegExp modidExp(QString("http://([a-zA-Z0-9]*).nexusmods.com/downloads/file.php\\?id=(\\d+)"), Qt::CaseInsensitive); - if (modidExp.indexIn(url.toString()) != -1) { - m_LastSeenModID = modidExp.cap(2).toInt(); - } -} - -void NexusView::openPageExternal() -{ - ::ShellExecuteW(NULL, L"open", ToWString(url().toString()).c_str(), NULL, NULL, SW_SHOWNORMAL); -} - -void NexusView::openLinkExternal() -{ - ::ShellExecuteW(NULL, L"open", ToWString(m_ContextURL.toString()).c_str(), NULL, NULL, SW_SHOWNORMAL); -} - - -QWebView *NexusView::createWindow(QWebPage::WebWindowType) -{ - NexusView *newView = new NexusView(parentWidget()); - emit initTab(newView); - return newView; -} - - -bool NexusView::eventFilter(QObject *obj, QEvent *event) -{ - if (event->type() == QEvent::ShortcutOverride) { - QKeyEvent *keyEvent = static_cast<QKeyEvent*>(event); - if (keyEvent->matches(QKeySequence::Find)) { - emit startFind(); - } else if (keyEvent->matches(QKeySequence::FindNext)) { - emit findAgain(); - } - } else if (event->type() == QEvent::MouseButtonPress) { - QMouseEvent *mouseEvent = static_cast<QMouseEvent*>(event); - if (mouseEvent->button() == Qt::MidButton) { - mouseEvent->ignore(); - return true; - } - } else if (event->type() == QEvent::MouseButtonRelease) { - QMouseEvent *mouseEvent = static_cast<QMouseEvent*>(event); - if (mouseEvent->button() == Qt::MidButton) { - QWebHitTestResult hitTest = page()->frameAt(mouseEvent->pos())->hitTestContent(mouseEvent->pos()); - if (hitTest.linkUrl().isValid()) { - emit openUrlInNewTab(hitTest.linkUrl()); - } - mouseEvent->ignore(); - - return true; - } - } - return QWebView::eventFilter(obj, event); -} - - -void NexusView::contextMenuEvent(QContextMenuEvent *event) -{ - if (!page()->swallowContextMenuEvent(event)) { - QWebHitTestResult r = page()->mainFrame()->hitTestContent(event->pos()); - - QMenu *menu = page()->createStandardContextMenu(); - QAction *openExternalAction = new QAction("Open in external browser", menu); - if (r.linkUrl().isEmpty()) { - connect(openExternalAction, SIGNAL(triggered()), this, SLOT(openPageExternal())); - } else { - m_ContextURL = r.linkUrl(); - connect(openExternalAction, SIGNAL(triggered()), this, SLOT(openLinkExternal())); - } - - menu->addSeparator(); - menu->addAction(openExternalAction); - menu->exec(mapToGlobal(event->pos())); - } -} |
