summaryrefslogtreecommitdiff
path: root/src/nexusview.cpp
diff options
context:
space:
mode:
authorTannin <devnull@localhost>2013-06-20 21:55:37 +0200
committerTannin <devnull@localhost>2013-06-20 21:55:37 +0200
commitf8c683f700a3fff30540ff343df2bfba15080e86 (patch)
tree248b6dcea1f45449675c05d4e64ed4b76e976919 /src/nexusview.cpp
parent49cbe0349184419530d22782cc670946b61c9f01 (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.cpp121
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()));
- }
-}