summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLostDragonist <lost.dragonist@gmail.com>2019-01-01 17:07:52 -0600
committerLostDragonist <lost.dragonist@gmail.com>2019-01-01 17:07:52 -0600
commit15e47114175d7dd86cd6e774aff1d7872e87a647 (patch)
tree6bb64a158b56717ba4b5aaccc64108bffce00102 /src
parentd8396bfa2cde422c7522b0e6a78b0d5ab2e218ac (diff)
parent5ad411cd47fc3193c6c87a745e41bd6c09b687ab (diff)
Merge remote-tracking branch 'remotes/origin/Develop' into archive_conflicts_2
Diffstat (limited to 'src')
-rw-r--r--src/CMakeLists.txt4
-rw-r--r--src/aboutdialog.ui31
-rw-r--r--src/downloadlist.cpp100
-rw-r--r--src/downloadlist.h9
-rw-r--r--src/downloadlistsortproxy.cpp27
-rw-r--r--src/downloadlistwidget.cpp436
-rw-r--r--src/downloadlistwidget.h69
-rw-r--r--src/downloadlistwidget.ui140
-rw-r--r--src/downloadlistwidgetcompact.cpp413
-rw-r--r--src/downloadlistwidgetcompact.h131
-rw-r--r--src/downloadlistwidgetcompact.ui168
-rw-r--r--src/downloadmanager.cpp30
-rw-r--r--src/mainwindow.cpp97
-rw-r--r--src/mainwindow.h3
-rw-r--r--src/mainwindow.ui49
-rw-r--r--src/organizer.pro4
-rw-r--r--src/organizer_en.ts1495
-rw-r--r--src/profile.h7
-rw-r--r--src/stylesheets/Night Eyes.qss24
-rw-r--r--src/stylesheets/Paper Automata.qss27
-rw-r--r--src/stylesheets/Paper Dark by 6788.qss35
-rw-r--r--src/stylesheets/Paper Light by 6788.qss38
-rw-r--r--src/stylesheets/dark.qss9
-rw-r--r--src/stylesheets/dracula.qss30
-rw-r--r--src/stylesheets/skyrim.qss10
-rw-r--r--src/stylesheets/vs15 Dark-Green.qss14
-rw-r--r--src/stylesheets/vs15 Dark-Orange.qss14
-rw-r--r--src/stylesheets/vs15 Dark-Purple.qss14
-rw-r--r--src/stylesheets/vs15 Dark-Red.qss14
-rw-r--r--src/stylesheets/vs15 Dark-Yellow.qss14
-rw-r--r--src/stylesheets/vs15 Dark.qss14
31 files changed, 1259 insertions, 2211 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index a084bae0..4c883cf5 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -54,7 +54,6 @@ SET(organizer_SRCS
executableslist.cpp
editexecutablesdialog.cpp
downloadmanager.cpp
- downloadlistwidgetcompact.cpp
downloadlistwidget.cpp
downloadlistsortproxy.cpp
downloadlist.cpp
@@ -147,7 +146,6 @@ SET(organizer_HDRS
executableslist.h
editexecutablesdialog.h
downloadmanager.h
- downloadlistwidgetcompact.h
downloadlistwidget.h
downloadlistsortproxy.h
downloadlist.h
@@ -218,8 +216,6 @@ SET(organizer_UIS
installdialog.ui
finddialog.ui
editexecutablesdialog.ui
- downloadlistwidgetcompact.ui
- downloadlistwidget.ui
credentialsdialog.ui
categoriesdialog.ui
activatemodsdialog.ui
diff --git a/src/aboutdialog.ui b/src/aboutdialog.ui
index 3a6daa82..6bc51726 100644
--- a/src/aboutdialog.ui
+++ b/src/aboutdialog.ui
@@ -157,7 +157,7 @@
<item row="0" column="0">
<widget class="QGroupBox" name="groupBox">
<property name="title">
- <string>Current Maintainers</string>
+ <string>Lead Developers/ Maintainers</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_6">
<item>
@@ -177,11 +177,6 @@
</item>
<item>
<property name="text">
- <string notr="true">Diana</string>
- </property>
- </item>
- <item>
- <property name="text">
<string notr="true">erasmux</string>
</property>
</item>
@@ -190,7 +185,7 @@
<string notr="true">Silarn</string>
</property>
</item>
- <item>
+ <item>
<property name="text">
<string notr="true">LostDragonist</string>
</property>
@@ -203,7 +198,7 @@
<item row="1" column="0">
<widget class="QGroupBox" name="groupBox_2">
<property name="title">
- <string>Major Contributors</string>
+ <string>Mo2 devs and Contributors</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_7" stretch="0">
<item>
@@ -216,6 +211,16 @@
<string notr="true">AnyOldName3</string>
</property>
</item>
+ <item>
+ <property name="text">
+ <string>Project579</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>przester</string>
+ </property>
+ </item>
</widget>
</item>
</layout>
@@ -312,6 +317,11 @@
</item>
<item>
<property name="text">
+ <string>zDas (Portuguese)</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
<string notr="true">tokcdk (Russian)</string>
</property>
</item>
@@ -332,6 +342,11 @@
</item>
<item>
<property name="text">
+ <string>yohru (Japanese)</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
<string>...and all other Transifex contributors!</string>
</property>
<property name="toolTip">
diff --git a/src/downloadlist.cpp b/src/downloadlist.cpp
index 77c5973b..922de748 100644
--- a/src/downloadlist.cpp
+++ b/src/downloadlist.cpp
@@ -20,6 +20,8 @@ along with Mod Organizer. If not, see <http://www.gnu.org/licenses/>.
#include "downloadlist.h"
#include "downloadmanager.h"
#include <QEvent>
+#include <QColor>
+#include <QIcon>
#include <QSortFilterProxyModel>
@@ -31,6 +33,11 @@ DownloadList::DownloadList(DownloadManager *manager, QObject *parent)
connect(m_Manager, SIGNAL(aboutToUpdate()), this, SLOT(aboutToUpdate()));
}
+void DownloadList::setMetaDisplay(bool metaDisplay)
+{
+ m_MetaDisplay = metaDisplay;
+}
+
int DownloadList::rowCount(const QModelIndex&) const
{
@@ -62,22 +69,65 @@ QVariant DownloadList::headerData(int section, Qt::Orientation orientation, int
(orientation == Qt::Horizontal)) {
switch (section) {
case COL_NAME: return tr("Name");
- case COL_FILETIME: return tr("Filetime");
case COL_SIZE: return tr("Size");
- default: return tr("Done");
+ case COL_STATUS: return tr("Status");
+ case COL_FILETIME: return tr("Filetime");
+ default: return QVariant();
}
} else {
return QAbstractItemModel::headerData(section, orientation, role);
}
}
-
QVariant DownloadList::data(const QModelIndex &index, int role) const
{
+ bool pendingDownload = index.row() >= m_Manager->numTotalDownloads();
if (role == Qt::DisplayRole) {
- return index.row();
+ if (pendingDownload) {
+ std::tuple<QString, int, int> nexusids = m_Manager->getPendingDownload(index.row() - m_Manager->numTotalDownloads());
+ switch (index.column()) {
+ case COL_NAME: return tr("< game %1 mod %2 file %3 >").arg(std::get<0>(nexusids)).arg(std::get<1>(nexusids)).arg(std::get<2>(nexusids));
+ case COL_SIZE: return tr("Unknown");
+ case COL_STATUS: return tr("Pending");
+ }
+ } else {
+ switch (index.column()) {
+ case COL_NAME: return m_MetaDisplay ? m_Manager->getDisplayName(index.row()) : m_Manager->getFileName(index.row());
+ case COL_SIZE: return sizeFormat(m_Manager->getFileSize(index.row()));
+ case COL_FILETIME: return m_Manager->getFileTime(index.row());
+ case COL_STATUS:
+ switch (m_Manager->getState(index.row())) {
+ // STATE_DOWNLOADING handled by DownloadProgressDelegate
+ case DownloadManager::STATE_STARTED: return tr("Started");
+ case DownloadManager::STATE_CANCELING: return tr("Canceling");
+ case DownloadManager::STATE_PAUSING: return tr("Pausing");
+ case DownloadManager::STATE_CANCELED: return tr("Canceled");
+ case DownloadManager::STATE_PAUSED: return tr("Paused");
+ case DownloadManager::STATE_ERROR: return tr("Error");
+ case DownloadManager::STATE_FETCHINGMODINFO: return tr("Fetching Info 1");
+ case DownloadManager::STATE_FETCHINGFILEINFO: return tr("Fetching Info 2");
+ case DownloadManager::STATE_READY: return tr("Downloaded");
+ case DownloadManager::STATE_INSTALLED: return tr("Installed");
+ case DownloadManager::STATE_UNINSTALLED: return tr("Uninstalled");
+ }
+ }
+ }
+ } else if (role == Qt::ForegroundRole && index.column() == COL_STATUS) {
+ if (pendingDownload) {
+ return QColor(Qt::darkBlue);
+ } else {
+ DownloadManager::DownloadState state = m_Manager->getState(index.row());
+ if (state == DownloadManager::STATE_READY)
+ return QColor(Qt::darkGreen);
+ else if (state == DownloadManager::STATE_UNINSTALLED)
+ return QColor(Qt::darkYellow);
+ else if (state == DownloadManager::STATE_PAUSED)
+ return QColor(Qt::darkRed);
+ }
} else if (role == Qt::ToolTipRole) {
- if (index.row() < m_Manager->numTotalDownloads()) {
+ if (pendingDownload) {
+ return tr("Pending download");
+ } else {
QString text = m_Manager->getFileName(index.row()) + "\n";
if (m_Manager->isInfoIncomplete(index.row())) {
text += tr("Information missing, please select \"Query Info\" from the context menu to re-retrieve.");
@@ -86,12 +136,18 @@ QVariant DownloadList::data(const QModelIndex &index, int role) const
return QString("%1 (ID %2) %3<br><span>%4</span>").arg(info->modName).arg(m_Manager->getModID(index.row())).arg(info->version.canonicalString()).arg(info->description);
}
return text;
- } else {
- return tr("pending download");
}
- } else {
- return QVariant();
+ } else if (role == Qt::DecorationRole && index.column() == COL_NAME) {
+ if (!pendingDownload && m_Manager->getState(index.row()) >= DownloadManager::STATE_READY
+ && m_Manager->isInfoIncomplete(index.row()))
+ return QIcon(":/MO/gui/warning_16");
+ } else if (role == Qt::TextAlignmentRole) {
+ if (index.column() == COL_NAME)
+ return QVariant(Qt::AlignVCenter | Qt::AlignLeft);
+ else
+ return QVariant(Qt::AlignVCenter | Qt::AlignRight);
}
+ return QVariant();
}
@@ -103,12 +159,28 @@ void DownloadList::aboutToUpdate()
void DownloadList::update(int row)
{
- if (row < 0) {
+ if (row < 0)
emit endResetModel();
- } else if (row < this->rowCount()) {
- emit dataChanged(this->index(row, 0, QModelIndex()), this->index(row, this->columnCount(QModelIndex())-1, QModelIndex()));
- } else {
+ else if (row < this->rowCount())
+ emit dataChanged(this->index(row, 0, QModelIndex()), this->index(row, this->columnCount(QModelIndex())-1, QModelIndex()));
+ else
qCritical("invalid row %d in download list, update failed", row);
- }
}
+QString DownloadList::sizeFormat(quint64 size) const
+{
+ qreal calc = size;
+ QStringList list;
+ list << "MB" << "GB" << "TB";
+
+ QStringListIterator i(list);
+ QString unit("KB");
+
+ calc /= 1024.0;
+ while (calc >= 1024.0 && i.hasNext()) {
+ unit = i.next();
+ calc /= 1024.0;
+ }
+
+ return QString().setNum(calc, 'f', 2) + " " + unit;
+}
diff --git a/src/downloadlist.h b/src/downloadlist.h
index e8833f0f..bf0cdc37 100644
--- a/src/downloadlist.h
+++ b/src/downloadlist.h
@@ -22,7 +22,6 @@ along with Mod Organizer. If not, see <http://www.gnu.org/licenses/>.
#include <QAbstractTableModel>
-
class DownloadManager;
@@ -38,9 +37,9 @@ public:
enum EColumn {
COL_NAME = 0,
- COL_FILETIME,
COL_STATUS,
- COL_SIZE
+ COL_SIZE,
+ COL_FILETIME
};
public:
@@ -53,6 +52,8 @@ public:
**/
explicit DownloadList(DownloadManager *manager, QObject *parent = 0);
+ void setMetaDisplay(bool metaDisplay);
+
/**
* @brief retrieve the number of rows to display. Invoked by Qt
*
@@ -91,7 +92,9 @@ public slots:
private:
DownloadManager *m_Manager;
+ bool m_MetaDisplay;
+ QString sizeFormat(quint64 size) const;
};
#endif // DOWNLOADLIST_H
diff --git a/src/downloadlistsortproxy.cpp b/src/downloadlistsortproxy.cpp
index f791617a..dc97dc3e 100644
--- a/src/downloadlistsortproxy.cpp
+++ b/src/downloadlistsortproxy.cpp
@@ -37,18 +37,23 @@ void DownloadListSortProxy::updateFilter(const QString &filter)
bool DownloadListSortProxy::lessThan(const QModelIndex &left,
const QModelIndex &right) const
{
- int leftIndex = left.data().toInt();
- int rightIndex = right.data().toInt();
+ int leftIndex = left.row();
+ int rightIndex = right.row();
if ((leftIndex < m_Manager->numTotalDownloads())
&& (rightIndex < m_Manager->numTotalDownloads())) {
if (left.column() == DownloadList::COL_NAME) {
- return m_Manager->getFileName(leftIndex).compare(m_Manager->getFileName(rightIndex), Qt::CaseInsensitive) < 0;
- } else if (left.column() == DownloadList::COL_FILETIME) {
- return m_Manager->getFileTime(leftIndex) < m_Manager->getFileTime(rightIndex);
+ return m_Manager->getFileName(left.row()).compare(m_Manager->getFileName(right.row()), Qt::CaseInsensitive) < 0;
} else if (left.column() == DownloadList::COL_STATUS) {
- return m_Manager->getState(leftIndex) < m_Manager->getState(rightIndex);
- } else if(left.column() == DownloadList::COL_SIZE){
- return m_Manager->getFileSize(leftIndex) < m_Manager->getFileSize(rightIndex);
+ DownloadManager::DownloadState leftState = m_Manager->getState(left.row());
+ DownloadManager::DownloadState rightState = m_Manager->getState(right.row());
+ if (leftState == rightState)
+ return m_Manager->getFileTime(left.row()) < m_Manager->getFileTime(right.row());
+ else
+ return leftState > rightState;
+ } else if (left.column() == DownloadList::COL_SIZE) {
+ return m_Manager->getFileSize(left.row()) < m_Manager->getFileSize(right.row());
+ } else if (left.column() == DownloadList::COL_FILETIME) {
+ return m_Manager->getFileTime(left.row()) < m_Manager->getFileTime(right.row());
} else {
return leftIndex < rightIndex;
}
@@ -63,11 +68,9 @@ bool DownloadListSortProxy::filterAcceptsRow(int sourceRow, const QModelIndex&)
if (m_CurrentFilter.length() == 0) {
return true;
} else if (sourceRow < m_Manager->numTotalDownloads()) {
- int downloadIndex = sourceModel()->index(sourceRow, 0).data().toInt();
-
QString displayedName = Settings::instance().metaDownloads()
- ? m_Manager->getDisplayName(downloadIndex)
- : m_Manager->getFileName(downloadIndex);
+ ? m_Manager->getDisplayName(sourceRow)
+ : m_Manager->getFileName(sourceRow);
return displayedName.contains(m_CurrentFilter, Qt::CaseInsensitive);
} else {
return false;
diff --git a/src/downloadlistwidget.cpp b/src/downloadlistwidget.cpp
index c62d774c..24695032 100644
--- a/src/downloadlistwidget.cpp
+++ b/src/downloadlistwidget.cpp
@@ -17,287 +17,254 @@ 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 "downloadlist.h"
#include "downloadlistwidget.h"
-#include "ui_downloadlistwidget.h"
#include <QPainter>
#include <QMouseEvent>
#include <QMenu>
#include <QMessageBox>
#include <QSortFilterProxyModel>
+#include <QApplication>
+#include <QHeaderView>
+#include <QCheckBox>
+#include <QWidgetAction>
-
-DownloadListWidget::DownloadListWidget(QWidget *parent)
- : QWidget(parent), ui(new Ui::DownloadListWidget)
+void DownloadProgressDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const
{
- ui->setupUi(this);
-}
+ QModelIndex sourceIndex = m_SortProxy->mapToSource(index);
+ if (sourceIndex.column() == DownloadList::COL_STATUS && sourceIndex.row() < m_Manager->numTotalDownloads()
+ && m_Manager->getState(sourceIndex.row()) == DownloadManager::STATE_DOWNLOADING) {
+ bool pendingDownload = sourceIndex.row() >= m_Manager->numTotalDownloads();
+ QProgressBar progressBar;
+ progressBar.setProperty("downloadView", option.widget->property("downloadView"));
+ progressBar.setProperty("downloadProgress", true);
+ progressBar.resize(option.rect.width(), option.rect.height());
+ progressBar.setTextVisible(true);
+ progressBar.setAlignment(Qt::AlignCenter);
+ progressBar.setMinimum(0);
+ progressBar.setMaximum(100);
+ progressBar.setValue(m_Manager->getProgress(sourceIndex.row()).first);
+ progressBar.setFormat(m_Manager->getProgress(sourceIndex.row()).second);
+ progressBar.setStyle(QApplication::style());
+ /*
+ QLabel progressText;
+ progressText.setProperty("downloadView", option.widget->property("downloadView"));
+ progressText.setProperty("downloadProgress", true);
+ progressText.resize(option.rect.width(), option.rect.height());
+ progressText.setAttribute(Qt::WA_TranslucentBackground);
+ progressText.setAlignment(Qt::AlignCenter);
+ progressText.setText(m_Manager->getProgress(sourceIndex.row()).second);
+ progressText.setStyle(QApplication::style());
+ */
-DownloadListWidget::~DownloadListWidget()
-{
- delete ui;
-}
+ // paint the background with default delegate first to preserve table cell styling
+ QStyledItemDelegate::paint(painter, option, index);
+ painter->save();
+ painter->translate(option.rect.topLeft());
+ progressBar.render(painter);
+ //progressText.render(painter);
+ painter->restore();
+ } else {
+ QStyledItemDelegate::paint(painter, option, index);
+ }
+}
-DownloadListWidgetDelegate::DownloadListWidgetDelegate(DownloadManager *manager, bool metaDisplay, QTreeView *view, QObject *parent)
- : QItemDelegate(parent)
- , m_Manager(manager)
- , m_MetaDisplay(metaDisplay)
- , m_ItemWidget(new DownloadListWidget)
- , m_ContextRow(0)
- , m_View(view)
+DownloadListWidget::DownloadListWidget(QWidget *parent)
+ : QTreeView(parent)
{
- m_NameLabel = m_ItemWidget->findChild<QLabel*>("nameLabel");
- m_SizeLabel = m_ItemWidget->findChild<QLabel*>("sizeLabel");
- m_Progress = m_ItemWidget->findChild<QProgressBar*>("downloadProgress");
- m_InstallLabel = m_ItemWidget->findChild<QLabel*>("installLabel");
-
- m_InstallLabel->setVisible(false);
- m_Progress->setTextVisible(true);
+ connect(this, SIGNAL(doubleClicked(QModelIndex)), this, SLOT(onDoubleClick(QModelIndex)));
+ connect(this, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(onCustomContextMenu(QPoint)));
- connect(manager, SIGNAL(stateChanged(int,DownloadManager::DownloadState)), this, SLOT(stateChanged(int,DownloadManager::DownloadState)));
- connect(manager, SIGNAL(downloadRemoved(int)), this, SLOT(resetCache(int)));
+ header()->setContextMenuPolicy(Qt::CustomContextMenu);
+ connect(header(), SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(onHeaderCustomContextMenu(QPoint)));
}
-
-DownloadListWidgetDelegate::~DownloadListWidgetDelegate()
+DownloadListWidget::~DownloadListWidget()
{
- delete m_ItemWidget;
}
-
-void DownloadListWidgetDelegate::stateChanged(int row,DownloadManager::DownloadState)
+void DownloadListWidget::setManager(DownloadManager *manager)
{
- m_Cache.remove(row);
+ m_Manager = manager;
}
-
-void DownloadListWidgetDelegate::resetCache(int)
+void DownloadListWidget::setSourceModel(DownloadList *sourceModel)
{
- m_Cache.clear();
+ m_SourceModel = sourceModel;
}
-
-void DownloadListWidgetDelegate::drawCache(QPainter *painter, const QStyleOptionViewItem &option, const QPixmap &cache) const
+void DownloadListWidget::setMetaDisplay(bool metaDisplay)
{
- QRect rect = option.rect;
- rect.setLeft(0);
- rect.setWidth(m_View->columnWidth(0) + m_View->columnWidth(1) + m_View->columnWidth(2) + m_View->columnWidth(3));
- painter->drawPixmap(rect, cache);
+ if (m_SourceModel != nullptr)
+ m_SourceModel->setMetaDisplay(metaDisplay);
}
-
-QString DownloadListWidgetDelegate::sizeFormat(quint64 size) const
+void DownloadListWidget::onDoubleClick(const QModelIndex &index)
{
- qreal calc = size;
- QStringList list;
- list << "KB" << "MB" << "GB" << "TB";
-
- QStringListIterator i(list);
- QString unit("byte(s)");
-
- while (calc >= 1024.0 && i.hasNext())
- {
- unit = i.next();
- calc /= 1024.0;
- }
-
- return QString().setNum(calc, 'f', 2) + " " + unit;
+ QModelIndex sourceIndex = qobject_cast<QSortFilterProxyModel*>(model())->mapToSource(index);
+ if (m_Manager->getState(sourceIndex.row()) >= DownloadManager::STATE_READY)
+ emit installDownload(sourceIndex.row());
+ else if ((m_Manager->getState(sourceIndex.row()) >= DownloadManager::STATE_PAUSED)
+ || (m_Manager->getState(sourceIndex.row()) == DownloadManager::STATE_PAUSING))
+ emit resumeDownload(sourceIndex.row());
}
-
-void DownloadListWidgetDelegate::paintPendingDownload(int downloadIndex) const
+void DownloadListWidget::onHeaderCustomContextMenu(const QPoint &point)
{
- std::tuple<QString, int, int> nexusids = m_Manager->getPendingDownload(downloadIndex);
- m_NameLabel->setText(tr("< game %1 mod %2 file %3 >").arg(std::get<0>(nexusids)).arg(std::get<1>(nexusids)).arg(std::get<2>(nexusids)));
- m_SizeLabel->setText("???");
- m_InstallLabel->setVisible(true);
- m_InstallLabel->setText(tr("Pending"));
- m_Progress->setVisible(false);
-}
-
+ QMenu menu;
-void DownloadListWidgetDelegate::paintRegularDownload(int downloadIndex) const
-{
- QString name = m_MetaDisplay ? m_Manager->getDisplayName(downloadIndex) : m_Manager->getFileName(downloadIndex);
- if (name.length() > 120) {
- name.truncate(120);
- name.append("...");
+ // display a list of all headers as checkboxes
+ QAbstractItemModel *model = header()->model();
+ for (int i = 1; i < model->columnCount(); ++i) {
+ QString columnName = model->headerData(i, Qt::Horizontal).toString();
+ QCheckBox *checkBox = new QCheckBox(&menu);
+ checkBox->setText(columnName);
+ checkBox->setChecked(!header()->isSectionHidden(i));
+ QWidgetAction *checkableAction = new QWidgetAction(&menu);
+ checkableAction->setDefaultWidget(checkBox);
+ menu.addAction(checkableAction);
}
- m_NameLabel->setText(name);
- m_SizeLabel->setText(sizeFormat(m_Manager->getFileSize(downloadIndex) ));
- DownloadManager::DownloadState state = m_Manager->getState(downloadIndex);
- if ((state == DownloadManager::STATE_PAUSED) || (state == DownloadManager::STATE_ERROR) || (state == DownloadManager::STATE_PAUSING)) {
- QPalette labelPalette;
- m_InstallLabel->setVisible(true);
- m_Progress->setVisible(false);
-#if QT_VERSION >= QT_VERSION_CHECK(5,0,0)
- m_InstallLabel->setText(QApplication::translate("DownloadListWidget", "Paused - Double Click to resume", 0));
-#else
- m_InstallLabel->setText(QApplication::translate("DownloadListWidget", "Paused - Double Click to resume", 0, QApplication::UnicodeUTF8));
-#endif
- labelPalette.setColor(QPalette::WindowText, Qt::darkRed);
- m_InstallLabel->setPalette(labelPalette);
- } else if (state == DownloadManager::STATE_FETCHINGMODINFO) {
- m_InstallLabel->setText(tr("Fetching Info 1"));
- m_Progress->setVisible(false);
- } else if (state == DownloadManager::STATE_FETCHINGFILEINFO) {
- m_InstallLabel->setText(tr("Fetching Info 2"));
- m_Progress->setVisible(false);
- } else if (state >= DownloadManager::STATE_READY) {
- QPalette labelPalette;
- m_InstallLabel->setVisible(true);
- m_Progress->setVisible(false);
- if (state == DownloadManager::STATE_INSTALLED) {
- // the tr-macro doesn't work here, maybe because the translation is actually associated with DownloadListWidget instead
- // of DownloadListWidgetDelegate?
-#if QT_VERSION >= QT_VERSION_CHECK(5,0,0)
- m_InstallLabel->setText(QApplication::translate("DownloadListWidget", "Installed - Double Click to re-install", 0));
-#else
- m_InstallLabel->setText(QApplication::translate("DownloadListWidget", "Installed - Double Click to re-install", 0, QApplication::UnicodeUTF8));
-#endif
- labelPalette.setColor(QPalette::WindowText, Qt::darkGray);
- } else if (state == DownloadManager::STATE_UNINSTALLED) {
-#if QT_VERSION >= QT_VERSION_CHECK(5,0,0)
- m_InstallLabel->setText(QApplication::translate("DownloadListWidget", "Uninstalled - Double Click to re-install", 0));
-#else
- m_InstallLabel->setText(QApplication::translate("DownloadListWidget", "Uninstalled - Double Click to re-install", 0, QApplication::UnicodeUTF8));
-#endif
- labelPalette.setColor(QPalette::WindowText, Qt::lightGray);
- } else {
-#if QT_VERSION >= QT_VERSION_CHECK(5,0,0)
- m_InstallLabel->setText(QApplication::translate("DownloadListWidget", "Done - Double Click to install", 0));
-#else
- m_InstallLabel->setText(QApplication::translate("DownloadListWidget", "Done - Double Click to install", 0, QApplication::UnicodeUTF8));
-#endif
- labelPalette.setColor(QPalette::WindowText, Qt::darkGreen);
- }
- m_InstallLabel->setPalette(labelPalette);
- if (m_Manager->isInfoIncomplete(downloadIndex)) {
- m_NameLabel->setText("<img src=\":/MO/gui/warning_16\" /> " + m_NameLabel->text());
+
+ menu.exec(header()->viewport()->mapToGlobal(point));
+
+ // view/hide columns depending on check-state
+ int i = 1;
+ for (const QAction *action : menu.actions()) {
+ const QWidgetAction *widgetAction = qobject_cast<const QWidgetAction*>(action);
+ if (widgetAction != nullptr) {
+ const QCheckBox *checkBox = qobject_cast<const QCheckBox*>(widgetAction->defaultWidget());
+ if (checkBox != nullptr) {
+ header()->setSectionHidden(i, !checkBox->isChecked());
+ }
}
- } else {
- m_InstallLabel->setVisible(false);
- m_Progress->setVisible(true);
- m_Progress->setValue(m_Manager->getProgress(downloadIndex).first);
- m_Progress->setFormat(m_Manager->getProgress(downloadIndex).second);
+ ++i;
}
}
-void DownloadListWidgetDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const
+void DownloadListWidget::onCustomContextMenu(const QPoint &point)
{
- try {
- auto iter = m_Cache.find(index.row());
- if (iter != m_Cache.end()) {
- drawCache(painter, option, *iter);
- return;
- }
+ QMenu menu(this);
+ QModelIndex index = indexAt(point);
+ bool hidden = false;
- m_ItemWidget->resize(QSize(m_View->columnWidth(0) + m_View->columnWidth(1) + m_View->columnWidth(2) + m_View->columnWidth(3), option.rect.height()));
+ if (index.row() >= 0) {
+ m_ContextRow = qobject_cast<QSortFilterProxyModel*>(model())->mapToSource(index).row();
+ DownloadManager::DownloadState state = m_Manager->getState(m_ContextRow);
+ hidden = m_Manager->isHidden(m_ContextRow);
- int downloadIndex = index.data().toInt();
+ if (state >= DownloadManager::STATE_READY) {
+ menu.addAction(tr("Install"), this, SLOT(issueInstall()));
+ if (m_Manager->isInfoIncomplete(m_ContextRow))
+ menu.addAction(tr("Query Info"), this, SLOT(issueQueryInfo()));
+ else
+ menu.addAction(tr("Visit on Nexus"), this, SLOT(issueVisitOnNexus()));
+ menu.addAction(tr("Open File"), this, SLOT(issueOpenFile()));
+ menu.addAction(tr("Show in Folder"), this, SLOT(issueOpenInDownloadsFolder()));
- if (downloadIndex >= m_Manager->numTotalDownloads()) {
- paintPendingDownload(downloadIndex - m_Manager->numTotalDownloads());
- } else {
- paintRegularDownload(downloadIndex);
+ menu.addSeparator();
+
+ menu.addAction(tr("Delete"), this, SLOT(issueDelete()));
+ if (hidden)
+ menu.addAction(tr("Un-Hide"), this, SLOT(issueRestoreToView()));
+ else
+ menu.addAction(tr("Hide"), this, SLOT(issueRemoveFromView()));
+ } else if (state == DownloadManager::STATE_DOWNLOADING) {
+ menu.addAction(tr("Cancel"), this, SLOT(issueCancel()));
+ menu.addAction(tr("Pause"), this, SLOT(issuePause()));
+ menu.addAction(tr("Show in Folder"), this, SLOT(issueOpenInDownloadsFolder()));
+ } else if ((state == DownloadManager::STATE_PAUSED) || (state == DownloadManager::STATE_ERROR)
+ || (state == DownloadManager::STATE_PAUSING)) {
+ menu.addAction(tr("Delete"), this, SLOT(issueDelete()));
+ menu.addAction(tr("Resume"), this, SLOT(issueResume()));
+ menu.addAction(tr("Show in Folder"), this, SLOT(issueOpenInDownloadsFolder()));
}
-#pragma message("caching disabled because changes in the list (including resorting) doesn't work correctly")
-// if (state >= DownloadManager::STATE_READY) {
- if (false) {
-#if QT_VERSION >= QT_VERSION_CHECK(5,0,0)
- QPixmap cache = m_ItemWidget->grab();
-#else
- QPixmap cache = QPixmap::grabWidget(m_ItemWidget);
-#endif
- m_Cache[index.row()] = cache;
- drawCache(painter, option, cache);
- } else {
- painter->save();
- painter->translate(QPoint(0, option.rect.topLeft().y()));
+ menu.addSeparator();
+ }
+ menu.addAction(tr("Delete Installed..."), this, SLOT(issueDeleteCompleted()));
+ menu.addAction(tr("Delete Uninstalled..."), this, SLOT(issueDeleteUninstalled()));
+ menu.addAction(tr("Delete All..."), this, SLOT(issueDeleteAll()));
- m_ItemWidget->render(painter);
- painter->restore();
- }
- } catch (const std::exception &e) {
- qCritical("failed to paint download list: %s", e.what());
+ menu.addSeparator();
+ if (!hidden) {
+ menu.addAction(tr("Hide Installed..."), this, SLOT(issueRemoveFromViewCompleted()));
+ menu.addAction(tr("Hide Uninstalled..."), this, SLOT(issueRemoveFromViewUninstalled()));
+ menu.addAction(tr("Hide All..."), this, SLOT(issueRemoveFromViewAll()));
+ } else {
+ menu.addAction(tr("Un-Hide All..."), this, SLOT(issueRestoreToViewAll()));
}
-}
-QSize DownloadListWidgetDelegate::sizeHint(const QStyleOptionViewItem&, const QModelIndex&) const
-{
- const int width = m_ItemWidget->minimumWidth();
- const int height = m_ItemWidget->height();
- return QSize(width, height);
+ menu.exec(viewport()->mapToGlobal(point));
}
-
-void DownloadListWidgetDelegate::issueInstall()
+void DownloadListWidget::issueInstall()
{
emit installDownload(m_ContextRow);
}
-void DownloadListWidgetDelegate::issueQueryInfo()
+void DownloadListWidget::issueQueryInfo()
{
emit queryInfo(m_ContextRow);
}
-void DownloadListWidgetDelegate::issueDelete()
+void DownloadListWidget::issueDelete()
{
- if (QMessageBox::question(nullptr, tr("Delete Files?"),
- tr("This will permanently delete the selected download."),
- QMessageBox::Yes | QMessageBox::No) == QMessageBox::Yes) {
- emit removeDownload(m_ContextRow, true);
- }
+ if (QMessageBox::question(nullptr, tr("Delete Files?"),
+ tr("This will permanently delete the selected download."),
+ QMessageBox::Yes | QMessageBox::No) == QMessageBox::Yes) {
+ emit removeDownload(m_ContextRow, true);
+ }
}
-void DownloadListWidgetDelegate::issueRemoveFromView()
+void DownloadListWidget::issueRemoveFromView()
{
+ qDebug() << "removing from view: " << m_ContextRow;
emit removeDownload(m_ContextRow, false);
}
-void DownloadListWidgetDelegate::issueRestoreToView()
+void DownloadListWidget::issueRestoreToView()
{
- emit restoreDownload(m_ContextRow);
+ emit restoreDownload(m_ContextRow);
}
-void DownloadListWidgetDelegate::issueRestoreToViewAll()
+void DownloadListWidget::issueRestoreToViewAll()
{
emit restoreDownload(-1);
}
-void DownloadListWidgetDelegate::issueVisitOnNexus()
+void DownloadListWidget::issueVisitOnNexus()
{
emit visitOnNexus(m_ContextRow);
}
-void DownloadListWidgetDelegate::issueOpenFile()
+void DownloadListWidget::issueOpenFile()
{
emit openFile(m_ContextRow);
}
-void DownloadListWidgetDelegate::issueOpenInDownloadsFolder()
+void DownloadListWidget::issueOpenInDownloadsFolder()
{
emit openInDownloadsFolder(m_ContextRow);
}
-void DownloadListWidgetDelegate::issueCancel()
+void DownloadListWidget::issueCancel()
{
emit cancelDownload(m_ContextRow);
}
-void DownloadListWidgetDelegate::issuePause()
+void DownloadListWidget::issuePause()
{
emit pauseDownload(m_ContextRow);
}
-void DownloadListWidgetDelegate::issueResume()
+void DownloadListWidget::issueResume()
{
emit resumeDownload(m_ContextRow);
}
-void DownloadListWidgetDelegate::issueDeleteAll()
+void DownloadListWidget::issueDeleteAll()
{
if (QMessageBox::question(nullptr, tr("Delete Files?"),
tr("This will remove all finished downloads from this list and from disk."),
@@ -306,7 +273,7 @@ void DownloadListWidgetDelegate::issueDeleteAll()
}
}
-void DownloadListWidgetDelegate::issueDeleteCompleted()
+void DownloadListWidget::issueDeleteCompleted()
{
if (QMessageBox::question(nullptr, tr("Delete Files?"),
tr("This will remove all installed downloads from this list and from disk."),
@@ -315,16 +282,16 @@ void DownloadListWidgetDelegate::issueDeleteCompleted()
}
}
-void DownloadListWidgetDelegate::issueDeleteUninstalled()
+void DownloadListWidget::issueDeleteUninstalled()
{
if (QMessageBox::question(nullptr, tr("Delete Files?"),
- tr("This will remove all uninstalled downloads from this list and from disk."),
- QMessageBox::Yes | QMessageBox::No) == QMessageBox::Yes) {
+ tr("This will remove all uninstalled downloads from this list and from disk."),
+ QMessageBox::Yes | QMessageBox::No) == QMessageBox::Yes) {
emit removeDownload(-3, true);
}
}
-void DownloadListWidgetDelegate::issueRemoveFromViewAll()
+void DownloadListWidget::issueRemoveFromViewAll()
{
if (QMessageBox::question(nullptr, tr("Are you sure?"),
tr("This will remove all finished downloads from this list (but NOT from disk)."),
@@ -333,7 +300,7 @@ void DownloadListWidgetDelegate::issueRemoveFromViewAll()
}
}
-void DownloadListWidgetDelegate::issueRemoveFromViewCompleted()
+void DownloadListWidget::issueRemoveFromViewCompleted()
{
if (QMessageBox::question(nullptr, tr("Are you sure?"),
tr("This will remove all installed downloads from this list (but NOT from disk)."),
@@ -342,90 +309,11 @@ void DownloadListWidgetDelegate::issueRemoveFromViewCompleted()
}
}
-void DownloadListWidgetDelegate::issueRemoveFromViewUninstalled()
+void DownloadListWidget::issueRemoveFromViewUninstalled()
{
if (QMessageBox::question(nullptr, tr("Are you sure?"),
- tr("This will remove all uninstalled downloads from this list (but NOT from disk)."),
- QMessageBox::Yes | QMessageBox::No) == QMessageBox::Yes) {
+ tr("This will remove all uninstalled downloads from this list (but NOT from disk)."),
+ QMessageBox::Yes | QMessageBox::No) == QMessageBox::Yes) {
emit removeDownload(-3, false);
}
}
-
-bool DownloadListWidgetDelegate::editorEvent(QEvent *event, QAbstractItemModel *model,
- const QStyleOptionViewItem &option, const QModelIndex &index)
-{
- try {
- if (event->type() == QEvent::MouseButtonDblClick) {
- QModelIndex sourceIndex = qobject_cast<QSortFilterProxyModel*>(model)->mapToSource(index);
- if (m_Manager->getState(sourceIndex.row()) >= DownloadManager::STATE_READY) {
- emit installDownload(sourceIndex.row());
- } else if ((m_Manager->getState(sourceIndex.row()) >= DownloadManager::STATE_PAUSED) || (m_Manager->getState(sourceIndex.row()) == DownloadManager::STATE_PAUSING)) {
- emit resumeDownload(sourceIndex.row());
- }
- return true;
- } else if (event->type() == QEvent::MouseButtonRelease) {
- QMouseEvent *mouseEvent = static_cast<QMouseEvent*>(event);
- if (mouseEvent->button() == Qt::RightButton) {
- QMenu menu(m_View);
- bool hidden = false;
- m_ContextRow = qobject_cast<QSortFilterProxyModel*>(model)->mapToSource(index).row();
- if (m_ContextRow < m_Manager->numTotalDownloads()) {
- DownloadManager::DownloadState state = m_Manager->getState(m_ContextRow);
- hidden = m_Manager->isHidden(m_ContextRow);
- if (state >= DownloadManager::STATE_READY) {
- menu.addAction(tr("Install"), this, SLOT(issueInstall()));
- if (m_Manager->isInfoIncomplete(m_ContextRow)) {
- menu.addAction(tr("Query Info"), this, SLOT(issueQueryInfo()));
- }else {
- menu.addAction(tr("Visit on Nexus"), this,SLOT(issueVisitOnNexus()));
- }
-
- menu.addAction(tr("Open File"), this, SLOT(issueOpenFile()));
- menu.addAction(tr("Show in Folder"), this, SLOT(issueOpenInDownloadsFolder()));
-
- menu.addSeparator();
-
- menu.addAction(tr("Delete"), this, SLOT(issueDelete()));
- if (hidden) {
- menu.addAction(tr("Un-Hide"), this, SLOT(issueRestoreToView()));
- } else {
- menu.addAction(tr("Hide"), this, SLOT(issueRemoveFromView()));
- }
- } else if (state == DownloadManager::STATE_DOWNLOADING){
- menu.addAction(tr("Cancel"), this, SLOT(issueCancel()));
- menu.addAction(tr("Pause"), this, SLOT(issuePause()));
- menu.addAction(tr("Show in Folder"), this, SLOT(issueOpenInDownloadsFolder()));
- } else if ((state == DownloadManager::STATE_PAUSED) || (state == DownloadManager::STATE_ERROR) || (state == DownloadManager::STATE_PAUSING)) {
- menu.addAction(tr("Delete"), this, SLOT(issueDelete()));
- menu.addAction(tr("Resume"), this, SLOT(issueResume()));
- menu.addAction(tr("Show in Folder"), this, SLOT(issueOpenInDownloadsFolder()));
- }
-
- menu.addSeparator();
- }
- menu.addAction(tr("Delete Installed..."), this, SLOT(issueDeleteCompleted()));
- menu.addAction(tr("Delete Uninstalled..."), this, SLOT(issueDeleteUninstalled()));
- menu.addAction(tr("Delete All..."), this, SLOT(issueDeleteAll()));
-
- if (!hidden) {
- menu.addSeparator();
- menu.addAction(tr("Hide Installed..."), this, SLOT(issueRemoveFromViewCompleted()));
- menu.addAction(tr("Hide Uninstalled..."), this, SLOT(issueRemoveFromViewUninstalled()));
- menu.addAction(tr("Hide All..."), this, SLOT(issueRemoveFromViewAll()));
- }
- if (hidden) {
- menu.addSeparator();
- menu.addAction(tr("Un-Hide All..."), this, SLOT(issueRestoreToViewAll()));
- }
-
- menu.exec(mouseEvent->globalPos());
-
- event->accept();
- return true;
- }
- }
- } catch (const std::exception &e) {
- qCritical("failed to handle editor event: %s", e.what());
- }
- return QItemDelegate::editorEvent(event, model, option, index);
-}
diff --git a/src/downloadlistwidget.h b/src/downloadlistwidget.h
index fe7f3b22..0002e2b4 100644
--- a/src/downloadlistwidget.h
+++ b/src/downloadlistwidget.h
@@ -21,49 +21,48 @@ along with Mod Organizer. If not, see <http://www.gnu.org/licenses/>.
#define DOWNLOADLISTWIDGET_H
#include "downloadmanager.h"
+#include "downloadlist.h"
+#include "downloadlistsortproxy.h"
#include <QWidget>
#include <QItemDelegate>
#include <QLabel>
#include <QProgressBar>
#include <QTreeView>
+#include <QStyledItemDelegate>
+
namespace Ui {
- class DownloadListWidget;
+ class DownloadListWidget;
}
-class DownloadListWidget : public QWidget
+class DownloadProgressDelegate : public QStyledItemDelegate
{
- Q_OBJECT
+ Q_OBJECT
public:
- explicit DownloadListWidget(QWidget *parent = 0);
- ~DownloadListWidget();
+ DownloadProgressDelegate(DownloadManager *manager, DownloadListSortProxy *sortProxy, QWidget *parent = 0) : QStyledItemDelegate(parent), m_Manager(manager), m_SortProxy(sortProxy) {}
+ void paint(QPainter *painter, const QStyleOptionViewItem &option,
+ const QModelIndex &index) const override;
private:
- Ui::DownloadListWidget *ui;
+ DownloadManager *m_Manager;
+ DownloadListSortProxy *m_SortProxy;
};
-class DownloadManager;
-
-class DownloadListWidgetDelegate : public QItemDelegate
+class DownloadListWidget : public QTreeView
{
-
Q_OBJECT
public:
+ explicit DownloadListWidget(QWidget *parent = 0);
+ ~DownloadListWidget();
- DownloadListWidgetDelegate(DownloadManager *manager, bool metaDisplay, QTreeView *view, QObject *parent = 0);
- ~DownloadListWidgetDelegate();
-
- virtual void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const;
- virtual QSize sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const;
-
- void paintPendingDownload(int downloadIndex) const;
- void paintRegularDownload(int downloadIndex) const;
+ void setManager(DownloadManager *manager);
+ void setSourceModel(DownloadList *sourceModel);
+ void setMetaDisplay(bool metaDisplay);
signals:
-
void installDownload(int index);
void queryInfo(int index);
void removeDownload(int index, bool deleteFile);
@@ -75,19 +74,10 @@ signals:
void openFile(int index);
void openInDownloadsFolder(int index);
-protected:
-
- QString sizeFormat(quint64 size) const;
- bool editorEvent(QEvent *event, QAbstractItemModel *model,
- const QStyleOptionViewItem &option, const QModelIndex &index);
-
-private:
-
-
- void drawCache(QPainter *painter, const QStyleOptionViewItem &option, const QPixmap &cache) const;
-
private slots:
-
+ void onDoubleClick(const QModelIndex &index);
+ void onCustomContextMenu(const QPoint &point);
+ void onHeaderCustomContextMenu(const QPoint &point);
void issueInstall();
void issueDelete();
void issueRemoveFromView();
@@ -107,25 +97,10 @@ private slots:
void issueRemoveFromViewUninstalled();
void issueQueryInfo();
- void stateChanged(int row, DownloadManager::DownloadState);
- void resetCache(int);
-
private:
-
- DownloadListWidget *m_ItemWidget;
DownloadManager *m_Manager;
-
- bool m_MetaDisplay;
-
- QLabel *m_NameLabel;
- QLabel *m_SizeLabel;
- QProgressBar *m_Progress;
- QLabel *m_InstallLabel;
+ DownloadList *m_SourceModel = 0;
int m_ContextRow;
-
- QTreeView *m_View;
-
- mutable QMap<int, QPixmap> m_Cache;
};
#endif // DOWNLOADLISTWIDGET_H
diff --git a/src/downloadlistwidget.ui b/src/downloadlistwidget.ui
deleted file mode 100644
index 112ca231..00000000
--- a/src/downloadlistwidget.ui
+++ /dev/null
@@ -1,140 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<ui version="4.0">
- <class>DownloadListWidget</class>
- <widget class="QWidget" name="DownloadListWidget">
- <property name="geometry">
- <rect>
- <x>0</x>
- <y>0</y>
- <width>315</width>
- <height>81</height>
- </rect>
- </property>
- <property name="contextMenuPolicy">
- <enum>Qt::CustomContextMenu</enum>
- </property>
- <property name="windowTitle">
- <string>Placeholder</string>
- </property>
- <property name="autoFillBackground">
- <bool>false</bool>
- </property>
- <layout class="QVBoxLayout" name="verticalLayout">
- <property name="leftMargin">
- <number>0</number>
- </property>
- <property name="topMargin">
- <number>1</number>
- </property>
- <property name="rightMargin">
- <number>0</number>
- </property>
- <property name="bottomMargin">
- <number>1</number>
- </property>
- <item>
- <widget class="QFrame" name="frame">
- <property name="frameShape">
- <enum>QFrame::Box</enum>
- </property>
- <property name="frameShadow">
- <enum>QFrame::Raised</enum>
- </property>
- <layout class="QVBoxLayout" name="verticalLayout_2">
- <item>
- <layout class="QHBoxLayout" name="horizontalLayout_2">
- <item>
- <widget class="QLabel" name="nameLabel">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
- <horstretch>1</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="maximumSize">
- <size>
- <width>16777215</width>
- <height>16777215</height>
- </size>
- </property>
- <property name="text">
- <string>Placeholder</string>
- </property>
- </widget>
- </item>
- <item>
- <spacer name="horizontalSpacer">
- <property name="orientation">
- <enum>Qt::Horizontal</enum>
- </property>
- <property name="sizeHint" stdset="0">
- <size>
- <width>10</width>
- <height>20</height>
- </size>
- </property>
- </spacer>
- </item>
- <item>
- <widget class="QLabel" name="sizeLabel">
- <property name="text">
- <string notr="true">0</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QLabel" name="label_2">
- <property name="visible">
- <bool>false</bool>
- </property>
- <property name="text">
- <string notr="true">KB</string>
- </property>
- </widget>
- </item>
- </layout>
- </item>
- <item>
- <layout class="QHBoxLayout" name="horizontalLayout">
- <item>
- <widget class="QLabel" name="installLabel">
- <property name="text">
- <string>Done - Double Click to install</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QProgressBar" name="downloadProgress">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>0</width>
- <height>0</height>
- </size>
- </property>
- <property name="maximumSize">
- <size>
- <width>16777215</width>
- <height>16777215</height>
- </size>
- </property>
- <property name="value">
- <number>0</number>
- </property>
- </widget>
- </item>
- </layout>
- </item>
- </layout>
- </widget>
- </item>
- </layout>
- </widget>
- <resources/>
- <connections/>
-</ui>
diff --git a/src/downloadlistwidgetcompact.cpp b/src/downloadlistwidgetcompact.cpp
deleted file mode 100644
index b534b95b..00000000
--- a/src/downloadlistwidgetcompact.cpp
+++ /dev/null
@@ -1,413 +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 "downloadlistwidgetcompact.h"
-#include "ui_downloadlistwidgetcompact.h"
-#include <QPainter>
-#include <QMouseEvent>
-#include <QMenu>
-#include <QMessageBox>
-#include <QSortFilterProxyModel>
-
-
-DownloadListWidgetCompact::DownloadListWidgetCompact(QWidget *parent) :
- QWidget(parent),
- ui(new Ui::DownloadListWidgetCompact)
-{
- ui->setupUi(this);
-}
-
-DownloadListWidgetCompact::~DownloadListWidgetCompact()
-{
- delete ui;
-}
-
-
-DownloadListWidgetCompactDelegate::DownloadListWidgetCompactDelegate(DownloadManager *manager, bool metaDisplay, QTreeView *view, QObject *parent)
- : QItemDelegate(parent)
- , m_Manager(manager)
- , m_MetaDisplay(metaDisplay)
- , m_ItemWidget(new DownloadListWidgetCompact)
- , m_View(view)
-{
- m_NameLabel = m_ItemWidget->findChild<QLabel*>("nameLabel");
- m_SizeLabel = m_ItemWidget->findChild<QLabel*>("sizeLabel");
- m_Progress = m_ItemWidget->findChild<QProgressBar*>("downloadProgress");
- m_DoneLabel = m_ItemWidget->findChild<QLabel*>("doneLabel");
-
- m_DoneLabel->setVisible(false);
-
- connect(manager, SIGNAL(stateChanged(int,DownloadManager::DownloadState)),
- this, SLOT(stateChanged(int,DownloadManager::DownloadState)));
- connect(manager, SIGNAL(downloadRemoved(int)), this, SLOT(resetCache(int)));
-}
-
-
-DownloadListWidgetCompactDelegate::~DownloadListWidgetCompactDelegate()
-{
- delete m_ItemWidget;
-}
-
-
-void DownloadListWidgetCompactDelegate::stateChanged(int row,DownloadManager::DownloadState)
-{
- m_Cache.remove(row);
-}
-
-
-void DownloadListWidgetCompactDelegate::resetCache(int)
-{
- m_Cache.clear();
-}
-
-
-void DownloadListWidgetCompactDelegate::drawCache(QPainter *painter, const QStyleOptionViewItem &option, const QPixmap &cache) const
-{
- QRect rect = option.rect;
- rect.setLeft(0);
- rect.setWidth(m_View->columnWidth(0) + m_View->columnWidth(1) + m_View->columnWidth(2) + m_View->columnWidth(3));
- painter->drawPixmap(rect, cache);
-}
-
-QString DownloadListWidgetCompactDelegate::sizeFormat(quint64 size) const
-{
- qreal calc = size;
- QStringList list;
- list << "KB" << "MB" << "GB" << "TB";
-
- QStringListIterator i(list);
- QString unit("byte(s)");
-
- while (calc >= 1024.0 && i.hasNext())
- {
- unit = i.next();
- calc /= 1024.0;
- }
-
- return QString().setNum(calc, 'f', 2) + " " + unit;
-}
-
-void DownloadListWidgetCompactDelegate::paintPendingDownload(int downloadIndex) const
-{
- std::tuple<QString, int, int> nexusids = m_Manager->getPendingDownload(downloadIndex);
- m_NameLabel->setText(tr("< game %1 mod %2 file %3 >").arg(std::get<0>(nexusids)).arg(std::get<1>(nexusids)).arg(std::get<2>(nexusids)));
- //if (m_SizeLabel != nullptr) {
- // m_SizeLabel->setText("???");
- //}
- m_DoneLabel->setVisible(true);
- m_DoneLabel->setText(tr("Pending"));
- m_Progress->setVisible(false);
-}
-
-
-void DownloadListWidgetCompactDelegate::paintRegularDownload(int downloadIndex) const
-{
- QString name = m_MetaDisplay ? m_Manager->getDisplayName(downloadIndex) : m_Manager->getFileName(downloadIndex);
- if (name.length() > 60) {
- name.truncate(60);
- name.append("...");
- }
- m_NameLabel->setText(name);
-
- DownloadManager::DownloadState state = m_Manager->getState(downloadIndex);
-
- if (m_SizeLabel != nullptr) {
- m_SizeLabel->setText(sizeFormat(m_Manager->getFileSize(downloadIndex)) + " ");
- m_SizeLabel->setVisible(true);
- }
- //else {
- // m_SizeLabel->setVisible(false);
- //}
-
- if ((state == DownloadManager::STATE_PAUSED) || (state == DownloadManager::STATE_ERROR) || (state == DownloadManager::STATE_PAUSING)) {
- m_DoneLabel->setVisible(true);
- m_Progress->setVisible(false);
- m_DoneLabel->setText(QString("%1<img src=\":/MO/gui/inactive\">").arg(tr("Paused")));
- } else if (state == DownloadManager::STATE_FETCHINGMODINFO) {
- m_DoneLabel->setText(QString("%1").arg(tr("Fetching Info 1")));
- } else if (state == DownloadManager::STATE_FETCHINGFILEINFO) {
- m_DoneLabel->setText(QString("%1").arg(tr("Fetching Info 2")));
- } else if (state >= DownloadManager::STATE_READY) {
- m_DoneLabel->setVisible(true);
- m_Progress->setVisible(false);
- if (state == DownloadManager::STATE_INSTALLED) {
- m_DoneLabel->setText(QString("%1<img src=\":/MO/gui/check\">").arg(tr("Installed")));
- } else if (state == DownloadManager::STATE_UNINSTALLED) {
- m_DoneLabel->setText(QString("%1<img src=\":/MO/gui/awaiting\">").arg(tr("Uninstalled")));
- } else {
- m_DoneLabel->setText(QString("%1<img src=\":/MO/gui/active\">").arg(tr("Done")));
- }
- if (m_Manager->isInfoIncomplete(downloadIndex)) {
- m_NameLabel->setText("<img src=\":/MO/gui/warning_16\"/> " + m_NameLabel->text());
- }
- } else {
- m_DoneLabel->setVisible(false);
- m_Progress->setVisible(true);
- m_Progress->setValue(m_Manager->getProgress(downloadIndex).first);
- m_Progress->setFormat(m_Manager->getProgress(downloadIndex).second);
- }
-}
-
-void DownloadListWidgetCompactDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const
-{
-#pragma message("This is quite costy - room for optimization?")
- try {
- auto iter = m_Cache.find(index.row());
- if (iter != m_Cache.end()) {
- drawCache(painter, option, *iter);
- return;
- }
-
- m_ItemWidget->resize(QSize(m_View->columnWidth(0) + m_View->columnWidth(1) + m_View->columnWidth(2) + m_View->columnWidth(3), option.rect.height()));
- if (index.row() % 2 == 1) {
- m_ItemWidget->setBackgroundRole(QPalette::AlternateBase);
- } else {
- m_ItemWidget->setBackgroundRole(QPalette::Base);
- }
-
- int downloadIndex = index.data().toInt();
- if (downloadIndex >= m_Manager->numTotalDownloads()) {
- paintPendingDownload(downloadIndex - m_Manager->numTotalDownloads());
- } else {
- paintRegularDownload(downloadIndex);
- }
-
-#pragma message("caching disabled because changes in the list (including resorting) doesn't work correctly")
- if (false) {
-// if (state >= DownloadManager::STATE_READY) {
-#if QT_VERSION >= QT_VERSION_CHECK(5,0,0)
- QPixmap cache = m_ItemWidget->grab();
-#else
- QPixmap cache = QPixmap::grabWidget(m_ItemWidget);
-#endif
- m_Cache[index.row()] = cache;
- drawCache(painter, option, cache);
- } else {
- painter->save();
- painter->translate(QPoint(0, option.rect.topLeft().y()));
-
- m_ItemWidget->render(painter);
- painter->restore();
- }
- } catch (const std::exception &e) {
- qCritical("failed to paint download list item %d: %s", index.row(), e.what());
- }
-}
-
-QSize DownloadListWidgetCompactDelegate::sizeHint(const QStyleOptionViewItem&, const QModelIndex&) const
-{
- const int width = m_ItemWidget->minimumWidth();
- const int height = m_ItemWidget->height();
- return QSize(width, height);
-}
-
-
-void DownloadListWidgetCompactDelegate::issueInstall()
-{
- emit installDownload(m_ContextIndex.row());
-}
-
-void DownloadListWidgetCompactDelegate::issueQueryInfo()
-{
- emit queryInfo(m_ContextIndex.row());
-}
-
-void DownloadListWidgetCompactDelegate::issueDelete()
-{
- if (QMessageBox::question(nullptr, tr("Are you sure?"),
- tr("This will permanently delete the selected download."),
- QMessageBox::Yes | QMessageBox::No) == QMessageBox::Yes) {
- emit removeDownload(m_ContextIndex.row(), true);
- }
-}
-
-void DownloadListWidgetCompactDelegate::issueRemoveFromView()
-{
- emit removeDownload(m_ContextIndex.row(), false);
-}
-
-void DownloadListWidgetCompactDelegate::issueVisitOnNexus()
-{
- emit visitOnNexus(m_ContextIndex.row());
-}
-
-void DownloadListWidgetCompactDelegate::issueOpenFile()
-{
- emit openFile(m_ContextIndex.row());
-}
-
-void DownloadListWidgetCompactDelegate::issueOpenInDownloadsFolder()
-{
- emit openInDownloadsFolder(m_ContextIndex.row());
-}
-
-void DownloadListWidgetCompactDelegate::issueRestoreToView()
-{
- emit restoreDownload(m_ContextIndex.row());
-}
-
-void DownloadListWidgetCompactDelegate::issueRestoreToViewAll()
-{
- emit restoreDownload(-1);
-}
-
-
-void DownloadListWidgetCompactDelegate::issueCancel()
-{
- emit cancelDownload(m_ContextIndex.row());
-}
-
-void DownloadListWidgetCompactDelegate::issuePause()
-{
- emit pauseDownload(m_ContextIndex.row());
-}
-
-void DownloadListWidgetCompactDelegate::issueResume()
-{
- emit resumeDownload(m_ContextIndex.row());
-}
-
-void DownloadListWidgetCompactDelegate::issueDeleteAll()
-{
- if (QMessageBox::question(nullptr, tr("Are you sure?"),
- tr("This will remove all finished downloads from this list and from disk."),
- QMessageBox::Yes | QMessageBox::No) == QMessageBox::Yes) {
- emit removeDownload(-1, true);
- }
-}
-
-void DownloadListWidgetCompactDelegate::issueDeleteCompleted()
-{
- if (QMessageBox::question(nullptr, tr("Are you sure?"),
- tr("This will remove all installed downloads from this list and from disk."),
- QMessageBox::Yes | QMessageBox::No) == QMessageBox::Yes) {
- emit removeDownload(-2, true);
- }
-}
-
-void DownloadListWidgetCompactDelegate::issueDeleteUninstalled()
-{
- if (QMessageBox::question(nullptr, tr("Are you sure?"),
- tr("This will remove all uninstalled downloads from this list and from disk."),
- QMessageBox::Yes | QMessageBox::No) == QMessageBox::Yes) {
- emit removeDownload(-3, true);
- }
-}
-
-void DownloadListWidgetCompactDelegate::issueRemoveFromViewAll()
-{
- if (QMessageBox::question(nullptr, tr("Are you sure?"),
- tr("This will permanently remove all finished downloads from this list (but NOT from disk)."),
- QMessageBox::Yes | QMessageBox::No) == QMessageBox::Yes) {
- emit removeDownload(-1, false);
- }
-}
-
-void DownloadListWidgetCompactDelegate::issueRemoveFromViewCompleted()
-{
- if (QMessageBox::question(nullptr, tr("Are you sure?"),
- tr("This will permanently remove all installed downloads from this list (but NOT from disk)."),
- QMessageBox::Yes | QMessageBox::No) == QMessageBox::Yes) {
- emit removeDownload(-2, false);
- }
-}
-
-void DownloadListWidgetCompactDelegate::issueRemoveFromViewUninstalled()
-{
- if (QMessageBox::question(nullptr, tr("Are you sure?"),
- tr("This will permanently remove all uninstalled downloads from this list (but NOT from disk)."),
- QMessageBox::Yes | QMessageBox::No) == QMessageBox::Yes) {
- emit removeDownload(-3, false);
- }
-}
-
-
-bool DownloadListWidgetCompactDelegate::editorEvent(QEvent *event, QAbstractItemModel *model,
- const QStyleOptionViewItem &option, const QModelIndex &index)
-{
- try {
- if (event->type() == QEvent::MouseButtonDblClick) {
- QModelIndex sourceIndex = qobject_cast<QSortFilterProxyModel*>(model)->mapToSource(index);
- if (m_Manager->getState(sourceIndex.row()) >= DownloadManager::STATE_READY) {
- emit installDownload(sourceIndex.row());
- } else if ((m_Manager->getState(sourceIndex.row()) >= DownloadManager::STATE_PAUSED) || (m_Manager->getState(sourceIndex.row()) == DownloadManager::STATE_PAUSING)) {
- emit resumeDownload(sourceIndex.row());
- }
- return true;
- } else if (event->type() == QEvent::MouseButtonRelease) {
- QMouseEvent *mouseEvent = static_cast<QMouseEvent*>(event);
- if (mouseEvent->button() == Qt::RightButton) {
- QMenu menu;
- bool hidden = false;
- m_ContextIndex = qobject_cast<QSortFilterProxyModel*>(model)->mapToSource(index);
- if (m_ContextIndex.row() < m_Manager->numTotalDownloads()) {
- DownloadManager::DownloadState state = m_Manager->getState(m_ContextIndex.row());
- hidden = m_Manager->isHidden(m_ContextIndex.row());
- if (state >= DownloadManager::STATE_READY) {
- menu.addAction(tr("Install"), this, SLOT(issueInstall()));
- if (m_Manager->isInfoIncomplete(m_ContextIndex.row())) {
- menu.addAction(tr("Query Info"), this, SLOT(issueQueryInfo()));
- }else {
- menu.addAction(tr("Visit on Nexus"), this, SLOT(issueVisitOnNexus()));
- }
- menu.addAction(tr("Open File"), this, SLOT(issueOpenFile()));
- menu.addAction(tr("Show in Folder"), this, SLOT(issueOpenInDownloadsFolder()));
- menu.addSeparator();
- menu.addAction(tr("Delete"), this, SLOT(issueDelete()));
- if (hidden) {
- menu.addAction(tr("Un-Hide"), this, SLOT(issueRestoreToView()));
- } else {
- menu.addAction(tr("Hide"), this, SLOT(issueRemoveFromView()));
- }
- } else if (state == DownloadManager::STATE_DOWNLOADING){
- menu.addAction(tr("Cancel"), this, SLOT(issueCancel()));
- menu.addAction(tr("Pause"), this, SLOT(issuePause()));
- menu.addAction(tr("Show in Folder"), this, SLOT(issueOpenInDownloadsFolder()));
- } else if ((state == DownloadManager::STATE_PAUSED) || (state == DownloadManager::STATE_ERROR) || (state == DownloadManager::STATE_PAUSING)) {
- menu.addAction(tr("Remove"), this, SLOT(issueDelete()));
- menu.addAction(tr("Resume"), this, SLOT(issueResume()));
- menu.addAction(tr("Show in Folder"), this, SLOT(issueOpenInDownloadsFolder()));
- }
- menu.addSeparator();
- }
- menu.addAction(tr("Delete Installed..."), this, SLOT(issueDeleteCompleted()));
- menu.addAction(tr("Delete Uninstalled..."), this, SLOT(issueDeleteUninstalled()));
- menu.addAction(tr("Delete All..."), this, SLOT(issueDeleteAll()));
- if (!hidden) {
- menu.addSeparator();
- menu.addAction(tr("Hide Installed..."), this, SLOT(issueRemoveFromViewCompleted()));
- menu.addAction(tr("Hide Uninstalled..."), this, SLOT(issueRemoveFromViewUninstalled()));
- menu.addAction(tr("Hide All..."), this, SLOT(issueRemoveFromViewAll()));
- }
- if (hidden) {
- menu.addSeparator();
- menu.addAction(tr("Un-Hide All..."), this, SLOT(issueRestoreToViewAll()));
- }
- menu.exec(mouseEvent->globalPos());
-
- event->accept();
- return false;
- }
- }
- } catch (const std::exception &e) {
- qCritical("failed to handle editor event: %s", e.what());
- }
-
- return QItemDelegate::editorEvent(event, model, option, index);
-}
diff --git a/src/downloadlistwidgetcompact.h b/src/downloadlistwidgetcompact.h
deleted file mode 100644
index eb109f29..00000000
--- a/src/downloadlistwidgetcompact.h
+++ /dev/null
@@ -1,131 +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/>.
-*/
-
-#ifndef DOWNLOADLISTWIDGETCOMPACT_H
-#define DOWNLOADLISTWIDGETCOMPACT_H
-
-#include <QWidget>
-#include <QItemDelegate>
-#include <QLabel>
-#include <QProgressBar>
-#include <QTreeView>
-#include "downloadmanager.h"
-
-
-namespace Ui {
-class DownloadListWidgetCompact;
-}
-
-class DownloadListWidgetCompact : public QWidget
-{
- Q_OBJECT
-
-public:
- explicit DownloadListWidgetCompact(QWidget *parent = 0);
- ~DownloadListWidgetCompact();
-
-private:
- Ui::DownloadListWidgetCompact *ui;
- int m_ContextRow;
-};
-
-class DownloadManager;
-
-class DownloadListWidgetCompactDelegate : public QItemDelegate
-{
-
- Q_OBJECT
-
-public:
-
- DownloadListWidgetCompactDelegate(DownloadManager *manager, bool metaDisplay, QTreeView *view, QObject *parent = 0);
- ~DownloadListWidgetCompactDelegate();
-
- virtual void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const;
- virtual QSize sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const;
-
-signals:
-
- void installDownload(int index);
- void queryInfo(int index);
- void removeDownload(int index, bool deleteFile);
- void restoreDownload(int index);
- void cancelDownload(int index);
- void pauseDownload(int index);
- void resumeDownload(int index);
- void visitOnNexus(int index);
- void openFile(int index);
- void openInDownloadsFolder(int index);
-
-protected:
-
- QString sizeFormat(quint64 size) const;
- bool editorEvent(QEvent *event, QAbstractItemModel *model,
- const QStyleOptionViewItem &option, const QModelIndex &index);
-
-private:
-
- void drawCache(QPainter *painter, const QStyleOptionViewItem &option, const QPixmap &cache) const;
- void paintPendingDownload(int downloadIndex) const;
- void paintRegularDownload(int downloadIndex) const;
-
-private slots:
-
- void issueInstall();
- void issueDelete();
- void issueRemoveFromView();
- void issueRestoreToView();
- void issueRestoreToViewAll();
- void issueVisitOnNexus();
- void issueOpenFile();
- void issueOpenInDownloadsFolder();
- void issueCancel();
- void issuePause();
- void issueResume();
- void issueDeleteAll();
- void issueDeleteCompleted();
- void issueDeleteUninstalled();
- void issueRemoveFromViewAll();
- void issueRemoveFromViewCompleted();
- void issueRemoveFromViewUninstalled();
- void issueQueryInfo();
-
- void stateChanged(int row, DownloadManager::DownloadState);
- void resetCache(int);
-private:
-
- DownloadListWidgetCompact *m_ItemWidget;
- DownloadManager *m_Manager;
-
- bool m_MetaDisplay;
-
- QLabel *m_NameLabel;
- QLabel *m_SizeLabel;
- QProgressBar *m_Progress;
- QLabel *m_DoneLabel;
-
- QModelIndex m_ContextIndex;
-
- QTreeView *m_View;
-
- mutable QMap<int, QPixmap> m_Cache;
-
-};
-
-#endif // DOWNLOADLISTWIDGETCOMPACT_H
diff --git a/src/downloadlistwidgetcompact.ui b/src/downloadlistwidgetcompact.ui
deleted file mode 100644
index ab634fb5..00000000
--- a/src/downloadlistwidgetcompact.ui
+++ /dev/null
@@ -1,168 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<ui version="4.0">
- <class>DownloadListWidgetCompact</class>
- <widget class="QWidget" name="DownloadListWidgetCompact">
- <property name="geometry">
- <rect>
- <x>0</x>
- <y>0</y>
- <width>315</width>
- <height>24</height>
- </rect>
- </property>
- <property name="contextMenuPolicy">
- <enum>Qt::CustomContextMenu</enum>
- </property>
- <property name="windowTitle">
- <string>Placeholder</string>
- </property>
- <property name="autoFillBackground">
- <bool>true</bool>
- </property>
- <layout class="QHBoxLayout" name="horizontalLayout" stretch="0,0,0,0,0">
- <property name="spacing">
- <number>2</number>
- </property>
- <property name="leftMargin">
- <number>2</number>
- </property>
- <property name="topMargin">
- <number>2</number>
- </property>
- <property name="rightMargin">
- <number>2</number>
- </property>
- <property name="bottomMargin">
- <number>2</number>
- </property>
- <item>
- <widget class="QLabel" name="nameLabel">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="maximumSize">
- <size>
- <width>16777215</width>
- <height>16777215</height>
- </size>
- </property>
- <property name="contextMenuPolicy">
- <enum>Qt::NoContextMenu</enum>
- </property>
- <property name="text">
- <string>Placeholder</string>
- </property>
- </widget>
- </item>
- <item>
- <spacer name="horizontalSpacer_2">
- <property name="orientation">
- <enum>Qt::Horizontal</enum>
- </property>
- <property name="sizeHint" stdset="0">
- <size>
- <width>10</width>
- <height>20</height>
- </size>
- </property>
- </spacer>
- </item>
- <item>
- <widget class="QLabel" name="sizeLabel">
- <property name="text">
- <string/>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QLabel" name="doneLabel">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="palette">
- <palette>
- <active>
- <colorrole role="WindowText">
- <brush brushstyle="SolidPattern">
- <color alpha="255">
- <red>0</red>
- <green>118</green>
- <blue>0</blue>
- </color>
- </brush>
- </colorrole>
- </active>
- <inactive>
- <colorrole role="WindowText">
- <brush brushstyle="SolidPattern">
- <color alpha="255">
- <red>0</red>
- <green>118</green>
- <blue>0</blue>
- </color>
- </brush>
- </colorrole>
- </inactive>
- <disabled>
- <colorrole role="WindowText">
- <brush brushstyle="SolidPattern">
- <color alpha="255">
- <red>120</red>
- <green>120</green>
- <blue>120</blue>
- </color>
- </brush>
- </colorrole>
- </disabled>
- </palette>
- </property>
- <property name="contextMenuPolicy">
- <enum>Qt::NoContextMenu</enum>
- </property>
- <property name="text">
- <string>Done</string>
- </property>
- <property name="scaledContents">
- <bool>false</bool>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QProgressBar" name="downloadProgress">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
- <horstretch>1</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>0</width>
- <height>0</height>
- </size>
- </property>
- <property name="maximumSize">
- <size>
- <width>16777215</width>
- <height>16</height>
- </size>
- </property>
- <property name="contextMenuPolicy">
- <enum>Qt::NoContextMenu</enum>
- </property>
- <property name="value">
- <number>0</number>
- </property>
- </widget>
- </item>
- </layout>
- </widget>
- <resources/>
- <connections/>
-</ui>
diff --git a/src/downloadmanager.cpp b/src/downloadmanager.cpp
index f1cbf109..2784a8ce 100644
--- a/src/downloadmanager.cpp
+++ b/src/downloadmanager.cpp
@@ -64,7 +64,7 @@ DownloadManager::DownloadInfo *DownloadManager::DownloadInfo::createNew(const Mo
info->m_DownloadID = s_NextDownloadID++;
info->m_StartTime.start();
info->m_PreResumeSize = 0LL;
- info->m_Progress = std::make_pair<int, QString>(0, " 0.0 Bytes/s ");
+ info->m_Progress = std::make_pair<int, QString>(0, "0.0 B/s ");
info->m_ResumePos = 0;
info->m_FileInfo = new ModRepositoryFileInfo(*fileInfo);
info->m_Urls = URLs;
@@ -499,8 +499,8 @@ void DownloadManager::startDownload(QNetworkReply *reply, DownloadInfo *newDownl
if (QFile::exists(m_OutputDirectory + "/" + newDownload->m_FileName)) {
setState(newDownload, STATE_PAUSING);
QCoreApplication::processEvents();
- if (QMessageBox::question(nullptr, tr("Download again?"), tr("A file with the same name has already been downloaded. "
- "Do you want to download it again? The new file will receive a different name."),
+ if (QMessageBox::question(nullptr, tr("Download again?"), tr("A file with the same name \"%1\" has already been downloaded. "
+ "Do you want to download it again? The new file will receive a different name.").arg(newDownload->m_FileName),
QMessageBox::Yes | QMessageBox::No) == QMessageBox::No) {
if (reply->isFinished())
setState(newDownload, STATE_CANCELED);
@@ -700,22 +700,18 @@ void DownloadManager::removeDownload(int index, bool deleteFile)
emit aboutToUpdate();
if (index < 0) {
- DownloadState minState;
- if (index == -3) {
- minState = STATE_UNINSTALLED;
- }
- else
- minState = index == -1 ? STATE_READY : STATE_INSTALLED;
+ bool removeAll = (index == -1);
+ DownloadState removeState = (index == -2 ? STATE_INSTALLED : STATE_UNINSTALLED);
index = 0;
- for (QVector<DownloadInfo*>::iterator iter = m_ActiveDownloads.begin(); iter != m_ActiveDownloads.end();) {
- if ((*iter)->m_State >= minState) {
+ for (QVector<DownloadInfo*>::iterator iter = m_ActiveDownloads.begin(); iter != m_ActiveDownloads.end();) {
+ DownloadState downloadState = (*iter)->m_State;
+ if ((removeAll && (downloadState >= STATE_READY)) ||
+ (removeState == downloadState)) {
removeFile(index, deleteFile);
delete *iter;
iter = m_ActiveDownloads.erase(iter);
- //QCoreApplication::processEvents();
- }
- else {
+ } else {
++iter;
++index;
}
@@ -1338,7 +1334,7 @@ void DownloadManager::downloadProgress(qint64 bytesReceived, qint64 bytesTotal)
QString unit;
if (speed < 1000) {
- unit = "Bytes/s";
+ unit = "B/s";
}
else if (speed < 1000*1024) {
speed /= 1024;
@@ -1349,7 +1345,7 @@ void DownloadManager::downloadProgress(qint64 bytesReceived, qint64 bytesTotal)
unit = "MB/s";
}
- info->m_Progress.second = QString::fromLatin1("%1% - %2 %3").arg(info->m_Progress.first).arg(speed, 8, 'f', 1,' ').arg(unit, -8, ' ');
+ info->m_Progress.second = QString::fromLatin1("%1% - %2 %3").arg(info->m_Progress.first).arg(QString::number(speed, 'f', 1)).arg(unit);
TaskProgressManager::instance().updateProgress(info->m_TaskProgressId, bytesReceived, bytesTotal);
emit update(index);
@@ -1853,4 +1849,4 @@ void DownloadManager::writeData(DownloadInfo *info)
"Canceling download \"%2\"...").arg(ret).arg(fileName));
}
}
-} \ No newline at end of file
+}
diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp
index 6b07992f..a2696770 100644
--- a/src/mainwindow.cpp
+++ b/src/mainwindow.cpp
@@ -55,7 +55,6 @@ along with Mod Organizer. If not, see <http://www.gnu.org/licenses/>.
#include "activatemodsdialog.h"
#include "downloadlist.h"
#include "downloadlistwidget.h"
-#include "downloadlistwidgetcompact.h"
#include "messagedialog.h"
#include "installationmanager.h"
#include "lockeddialog.h"
@@ -320,6 +319,7 @@ MainWindow::MainWindow(QSettings &initSettings
ui->bsaList->setLocalMoveOnly(true);
+ initDownloadView();
bool pluginListAdjusted = registerWidgetState(ui->espList->objectName(), ui->espList->header(), "plugin_list_state");
registerWidgetState(ui->dataTree->objectName(), ui->dataTree->header());
registerWidgetState(ui->downloadView->objectName(),
@@ -341,8 +341,6 @@ MainWindow::MainWindow(QSettings &initSettings
ui->openFolderMenu->setMenu(openFolderMenu());
- updateDownloadListDelegate();
-
ui->savegameList->installEventFilter(this);
ui->savegameList->setMouseTracking(true);
@@ -472,8 +470,12 @@ MainWindow::MainWindow(QSettings &initSettings
for (QAction *action : ui->toolBar->actions()) {
// set the name of the widget to the name of the action to allow styling
- ui->toolBar->widgetForAction(action)->setObjectName(action->objectName());
+ QWidget *actionWidget = ui->toolBar->widgetForAction(action);
+ actionWidget->setObjectName(action->objectName());
+ actionWidget->style()->unpolish(actionWidget);
+ actionWidget->style()->polish(actionWidget);
}
+
emit updatePluginCount();
emit updateModCount();
}
@@ -4714,7 +4716,7 @@ void MainWindow::on_actionSettings_triggered()
NexusInterface::instance(&m_PluginContainer)->setNMMVersion(settings.getNMMVersion());
- updateDownloadListDelegate();
+ updateDownloadView();
m_OrganizerCore.updateVFSParams(settings.logLevel(), settings.crashDumpsType(), settings.executablesBlacklist());
m_OrganizerCore.cycleDiagnostics();
@@ -4770,13 +4772,12 @@ void MainWindow::languageChange(const QString &newLanguage)
createHelpWidget();
- updateDownloadListDelegate();
+ updateDownloadView();
updateProblemsButton();
ui->listOptionsBtn->setMenu(modListContextMenu());
ui->openFolderMenu->setMenu(openFolderMenu());
-
}
void MainWindow::writeDataToFile(QFile &file, const QString &directory, const DirectoryEntry &directoryEntry)
@@ -5207,43 +5208,58 @@ void MainWindow::on_actionEndorseMO_triggered()
}
-void MainWindow::updateDownloadListDelegate()
+void MainWindow::initDownloadView()
{
- if (m_OrganizerCore.settings().compactDownloads()) {
- ui->downloadView->setItemDelegate(
- new DownloadListWidgetCompactDelegate(m_OrganizerCore.downloadManager(),
- m_OrganizerCore.settings().metaDownloads(),
- ui->downloadView,
- ui->downloadView));
- } else {
- ui->downloadView->setItemDelegate(
- new DownloadListWidgetDelegate(m_OrganizerCore.downloadManager(),
- m_OrganizerCore.settings().metaDownloads(),
- ui->downloadView,
- ui->downloadView));
- }
-
+ DownloadList *sourceModel = new DownloadList(m_OrganizerCore.downloadManager(), ui->downloadView);
DownloadListSortProxy *sortProxy = new DownloadListSortProxy(m_OrganizerCore.downloadManager(), ui->downloadView);
- sortProxy->setSourceModel(new DownloadList(m_OrganizerCore.downloadManager(), ui->downloadView));
+ sortProxy->setSourceModel(sourceModel);
connect(ui->downloadFilterEdit, SIGNAL(textChanged(QString)), sortProxy, SLOT(updateFilter(QString)));
connect(ui->downloadFilterEdit, SIGNAL(textChanged(QString)), this, SLOT(downloadFilterChanged(QString)));
+ ui->downloadView->setSourceModel(sourceModel);
ui->downloadView->setModel(sortProxy);
- //ui->downloadView->sortByColumn(1, Qt::DescendingOrder);
- ui->downloadView->header()->resizeSections(QHeaderView::Stretch);
+ ui->downloadView->setManager(m_OrganizerCore.downloadManager());
+ ui->downloadView->setItemDelegate(new DownloadProgressDelegate(m_OrganizerCore.downloadManager(), sortProxy, ui->downloadView));
+ ui->downloadView->setUniformRowHeights(false);
+ ui->downloadView->header()->setStretchLastSection(false);
+ ui->downloadView->header()->setSectionResizeMode(QHeaderView::Interactive);
+ ui->downloadView->header()->setSectionResizeMode(0, QHeaderView::Stretch);
+ ui->downloadView->sortByColumn(1, Qt::DescendingOrder);
+ updateDownloadView();
- connect(ui->downloadView->itemDelegate(), SIGNAL(installDownload(int)), &m_OrganizerCore, SLOT(installDownload(int)));
- connect(ui->downloadView->itemDelegate(), SIGNAL(queryInfo(int)), m_OrganizerCore.downloadManager(), SLOT(queryInfo(int)));
- connect(ui->downloadView->itemDelegate(), SIGNAL(visitOnNexus(int)), m_OrganizerCore.downloadManager(), SLOT(visitOnNexus(int)));
- connect(ui->downloadView->itemDelegate(), SIGNAL(openFile(int)), m_OrganizerCore.downloadManager(), SLOT(openFile(int)));
- connect(ui->downloadView->itemDelegate(), SIGNAL(openInDownloadsFolder(int)), m_OrganizerCore.downloadManager(), SLOT(openInDownloadsFolder(int)));
- connect(ui->downloadView->itemDelegate(), SIGNAL(removeDownload(int, bool)), m_OrganizerCore.downloadManager(), SLOT(removeDownload(int, bool)));
- connect(ui->downloadView->itemDelegate(), SIGNAL(restoreDownload(int)), m_OrganizerCore.downloadManager(), SLOT(restoreDownload(int)));
- connect(ui->downloadView->itemDelegate(), SIGNAL(cancelDownload(int)), m_OrganizerCore.downloadManager(), SLOT(cancelDownload(int)));
- connect(ui->downloadView->itemDelegate(), SIGNAL(pauseDownload(int)), m_OrganizerCore.downloadManager(), SLOT(pauseDownload(int)));
- connect(ui->downloadView->itemDelegate(), SIGNAL(resumeDownload(int)), this, SLOT(resumeDownload(int)));
+ connect(ui->downloadView, SIGNAL(installDownload(int)), &m_OrganizerCore, SLOT(installDownload(int)));
+ connect(ui->downloadView, SIGNAL(queryInfo(int)), m_OrganizerCore.downloadManager(), SLOT(queryInfo(int)));
+ connect(ui->downloadView, SIGNAL(visitOnNexus(int)), m_OrganizerCore.downloadManager(), SLOT(visitOnNexus(int)));
+ connect(ui->downloadView, SIGNAL(openFile(int)), m_OrganizerCore.downloadManager(), SLOT(openFile(int)));
+ connect(ui->downloadView, SIGNAL(openInDownloadsFolder(int)), m_OrganizerCore.downloadManager(), SLOT(openInDownloadsFolder(int)));
+ connect(ui->downloadView, SIGNAL(removeDownload(int, bool)), m_OrganizerCore.downloadManager(), SLOT(removeDownload(int, bool)));
+ connect(ui->downloadView, SIGNAL(restoreDownload(int)), m_OrganizerCore.downloadManager(), SLOT(restoreDownload(int)));
+ connect(ui->downloadView, SIGNAL(cancelDownload(int)), m_OrganizerCore.downloadManager(), SLOT(cancelDownload(int)));
+ connect(ui->downloadView, SIGNAL(pauseDownload(int)), m_OrganizerCore.downloadManager(), SLOT(pauseDownload(int)));
+ connect(ui->downloadView, SIGNAL(resumeDownload(int)), this, SLOT(resumeDownload(int)));
}
+void MainWindow::updateDownloadView()
+{
+ // set the view attribute and default row sizes
+ if (m_OrganizerCore.settings().compactDownloads()) {
+ ui->downloadView->setProperty("downloadView", "compact");
+ setStyleSheet("DownloadListWidget::item { padding: 4px; }");
+ } else {
+ ui->downloadView->setProperty("downloadView", "standard");
+ setStyleSheet("DownloadListWidget::item { padding: 16px; }");
+ }
+ setStyleSheet("DownloadListWidget::item:hover { padding: 0px; }");
+ setStyleSheet("DownloadListWidget::item:selected { padding: 0px; }");
+
+ // reapply global stylesheet on the widget level (!) to override the defaults
+ ui->downloadView->setStyleSheet(styleSheet());
+
+ ui->downloadView->setMetaDisplay(m_OrganizerCore.settings().metaDownloads());
+ ui->downloadView->style()->unpolish(ui->downloadView);
+ ui->downloadView->style()->polish(ui->downloadView);
+ m_OrganizerCore.downloadManager()->refreshList();
+}
void MainWindow::modDetailsUpdated(bool)
{
@@ -6300,10 +6316,13 @@ void MainWindow::sendSelectedModsToPriority_clicked()
void MainWindow::sendSelectedModsToSeparator_clicked()
{
QStringList separators;
- for (auto mod : m_OrganizerCore.modList()->allMods()) {
- ModInfo::Ptr modInfo = ModInfo::getByIndex(ModInfo::getIndex(mod));
- if (modInfo->hasFlag(ModInfo::FLAG_SEPARATOR)) {
- separators << mod.chopped(10);
+ auto indexesByPriority = m_OrganizerCore.currentProfile()->getAllIndexesByPriority();
+ for (auto iter = indexesByPriority.begin(); iter != indexesByPriority.end(); iter++) {
+ if ((iter->second != UINT_MAX)) {
+ ModInfo::Ptr modInfo = ModInfo::getByIndex(iter->second);
+ if (modInfo->hasFlag(ModInfo::FLAG_SEPARATOR)) {
+ separators << modInfo->name().chopped(10);
+ }
}
}
diff --git a/src/mainwindow.h b/src/mainwindow.h
index 63d140e0..8b774c93 100644
--- a/src/mainwindow.h
+++ b/src/mainwindow.h
@@ -246,7 +246,8 @@ private:
bool populateMenuCategories(QMenu *menu, int targetID);
- void updateDownloadListDelegate();
+ void initDownloadView();
+ void updateDownloadView();
// remove invalid category-references from mods
void fixCategories();
diff --git a/src/mainwindow.ui b/src/mainwindow.ui
index 972d9513..d287b8bb 100644
--- a/src/mainwindow.ui
+++ b/src/mainwindow.ui
@@ -1326,7 +1326,7 @@ p, li { white-space: pre-wrap; }
<item>
<layout class="QVBoxLayout" name="downloadLayout">
<item>
- <widget class="QTreeView" name="downloadView">
+ <widget class="DownloadListWidget" name="downloadView" native="true">
<property name="minimumSize">
<size>
<width>320</width>
@@ -1334,7 +1334,7 @@ p, li { white-space: pre-wrap; }
</size>
</property>
<property name="contextMenuPolicy">
- <enum>Qt::PreventContextMenu</enum>
+ <enum>Qt::CustomContextMenu</enum>
</property>
<property name="acceptDrops">
<bool>true</bool>
@@ -1345,51 +1345,21 @@ p, li { white-space: pre-wrap; }
<property name="whatsThis">
<string>This is a list of mods you downloaded from Nexus. Double click one to install it. You can also drag an archive into here.</string>
</property>
- <property name="verticalScrollBarPolicy">
- <enum>Qt::ScrollBarAlwaysOn</enum>
- </property>
- <property name="horizontalScrollBarPolicy">
- <enum>Qt::ScrollBarAsNeeded</enum>
- </property>
- <property name="dragEnabled">
+ <property name="dragEnabled" stdset="0">
<bool>true</bool>
</property>
- <property name="dragDropMode">
- <enum>QAbstractItemView::DragDrop</enum>
- </property>
- <property name="defaultDropAction">
- <enum>Qt::MoveAction</enum>
- </property>
- <property name="alternatingRowColors">
+ <property name="alternatingRowColors" stdset="0">
<bool>true</bool>
</property>
- <property name="selectionMode">
- <enum>QAbstractItemView::SingleSelection</enum>
- </property>
- <property name="selectionBehavior">
- <enum>QAbstractItemView::SelectRows</enum>
- </property>
- <property name="verticalScrollMode">
- <enum>QAbstractItemView::ScrollPerPixel</enum>
- </property>
- <property name="indentation">
+ <property name="indentation" stdset="0">
<number>0</number>
</property>
- <property name="itemsExpandable">
+ <property name="itemsExpandable" stdset="0">
<bool>false</bool>
</property>
- <property name="sortingEnabled">
+ <property name="sortingEnabled" stdset="0">
<bool>true</bool>
</property>
- <attribute name="headerDefaultSectionSize">
- <number>50</number>
- </attribute>
- <attribute name="headerMinimumSectionSize">
- <number>15</number>
- </attribute>
- <attribute name="headerStretchLastSection">
- <bool>true</bool>
- </attribute>
</widget>
</item>
</layout>
@@ -1706,6 +1676,11 @@ Right now this has very limited functionality</string>
<extends>QLCDNumber</extends>
<header>lcdnumber.h</header>
</customwidget>
+ <customwidget>
+ <class>DownloadListWidget</class>
+ <extends>QWidget</extends>
+ <header>downloadlistwidget.h</header>
+ </customwidget>
</customwidgets>
<resources>
<include location="resources.qrc"/>
diff --git a/src/organizer.pro b/src/organizer.pro
index df42db40..b8e79e0c 100644
--- a/src/organizer.pro
+++ b/src/organizer.pro
@@ -53,7 +53,6 @@ SOURCES += \
executableslist.cpp \
editexecutablesdialog.cpp \
downloadmanager.cpp \
- downloadlistwidgetcompact.cpp \
downloadlistwidget.cpp \
downloadlistsortproxy.cpp \
downloadlist.cpp \
@@ -130,7 +129,6 @@ HEADERS += \
executableslist.h \
editexecutablesdialog.h \
downloadmanager.h \
- downloadlistwidgetcompact.h \
downloadlistwidget.h \
downloadlistsortproxy.h \
downloadlist.h \
@@ -190,8 +188,6 @@ FORMS += \
installdialog.ui \
finddialog.ui \
editexecutablesdialog.ui \
- downloadlistwidgetcompact.ui \
- downloadlistwidget.ui \
credentialsdialog.ui \
categoriesdialog.ui \
activatemodsdialog.ui \
diff --git a/src/organizer_en.ts b/src/organizer_en.ts
index c91a966b..9d891122 100644
--- a/src/organizer_en.ts
+++ b/src/organizer_en.ts
@@ -26,7 +26,7 @@
</message>
<message>
<location filename="aboutdialog.ui" line="160"/>
- <source>Current Maintainers</source>
+ <source>Lead Developers/ Maintainers</source>
<translation type="unfinished"></translation>
</message>
<message>
@@ -35,67 +35,87 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="aboutdialog.ui" line="206"/>
- <source>Major Contributors</source>
+ <location filename="aboutdialog.ui" line="201"/>
+ <source>Mo2 devs and Contributors</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="aboutdialog.ui" line="227"/>
+ <location filename="aboutdialog.ui" line="216"/>
+ <source>Project579</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="aboutdialog.ui" line="221"/>
+ <source>przester</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="aboutdialog.ui" line="232"/>
<source>Translators</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="aboutdialog.ui" line="252"/>
+ <location filename="aboutdialog.ui" line="257"/>
<source>Cyb3r (Dutch)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="aboutdialog.ui" line="262"/>
+ <location filename="aboutdialog.ui" line="267"/>
<source>fruttyx (French)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="aboutdialog.ui" line="277"/>
+ <location filename="aboutdialog.ui" line="282"/>
<source>Yoplala (French)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="aboutdialog.ui" line="282"/>
+ <location filename="aboutdialog.ui" line="287"/>
<source>Faron (German)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="aboutdialog.ui" line="292"/>
+ <location filename="aboutdialog.ui" line="297"/>
<source>Mordan (Greek)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="aboutdialog.ui" line="305"/>
+ <location filename="aboutdialog.ui" line="310"/>
<source>Yoosk (Polish)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="aboutdialog.ui" line="310"/>
+ <location filename="aboutdialog.ui" line="315"/>
<source>Brgodfx (Portuguese)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="aboutdialog.ui" line="330"/>
+ <location filename="aboutdialog.ui" line="320"/>
+ <source>zDas (Portuguese)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="aboutdialog.ui" line="340"/>
<source>Jax (Swedish)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="aboutdialog.ui" line="335"/>
+ <location filename="aboutdialog.ui" line="345"/>
+ <source>yohru (Japanese)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="aboutdialog.ui" line="350"/>
<source>...and all other Transifex contributors!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="aboutdialog.ui" line="349"/>
+ <location filename="aboutdialog.ui" line="364"/>
<source>Other Supporters &amp;&amp; Contributors</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="aboutdialog.ui" line="471"/>
+ <location filename="aboutdialog.ui" line="486"/>
<source>Close</source>
<translation type="unfinished"></translation>
</message>
@@ -292,435 +312,251 @@ p, li { white-space: pre-wrap; }
<context>
<name>DownloadList</name>
<message>
- <location filename="downloadlist.cpp" line="64"/>
+ <location filename="downloadlist.cpp" line="71"/>
<source>Name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="downloadlist.cpp" line="65"/>
- <source>Filetime</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="downloadlist.cpp" line="66"/>
+ <location filename="downloadlist.cpp" line="72"/>
<source>Size</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="downloadlist.cpp" line="67"/>
- <source>Done</source>
+ <location filename="downloadlist.cpp" line="73"/>
+ <source>Status</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="downloadlist.cpp" line="83"/>
- <source>Information missing, please select &quot;Query Info&quot; from the context menu to re-retrieve.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="downloadlist.cpp" line="90"/>
- <source>pending download</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>DownloadListWidget</name>
- <message>
- <location filename="downloadlistwidget.ui" line="17"/>
- <location filename="downloadlistwidget.ui" line="61"/>
- <source>Placeholder</source>
+ <location filename="downloadlist.cpp" line="74"/>
+ <source>Filetime</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="downloadlistwidget.ui" line="102"/>
- <location filename="downloadlistwidget.cpp" line="169"/>
- <location filename="downloadlistwidget.cpp" line="171"/>
- <source>Done - Double Click to install</source>
+ <location filename="downloadlist.cpp" line="89"/>
+ <source>&lt; game %1 mod %2 file %3 &gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="downloadlistwidget.cpp" line="135"/>
- <location filename="downloadlistwidget.cpp" line="137"/>
- <source>Paused - Double Click to resume</source>
+ <location filename="downloadlist.cpp" line="90"/>
+ <source>Unknown</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="downloadlistwidget.cpp" line="155"/>
- <location filename="downloadlistwidget.cpp" line="157"/>
- <source>Installed - Double Click to re-install</source>
+ <location filename="downloadlist.cpp" line="91"/>
+ <source>Pending</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="downloadlistwidget.cpp" line="162"/>
- <location filename="downloadlistwidget.cpp" line="164"/>
- <source>Uninstalled - Double Click to re-install</source>
+ <location filename="downloadlist.cpp" line="101"/>
+ <source>Started</source>
<translation type="unfinished"></translation>
</message>
-</context>
-<context>
- <name>DownloadListWidgetCompact</name>
<message>
- <location filename="downloadlistwidgetcompact.ui" line="17"/>
- <location filename="downloadlistwidgetcompact.ui" line="56"/>
- <source>Placeholder</source>
+ <location filename="downloadlist.cpp" line="102"/>
+ <source>Canceling</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="downloadlistwidgetcompact.ui" line="129"/>
- <source>Done</source>
+ <location filename="downloadlist.cpp" line="103"/>
+ <source>Pausing</source>
<translation type="unfinished"></translation>
</message>
-</context>
-<context>
- <name>DownloadListWidgetCompactDelegate</name>
<message>
- <location filename="downloadlistwidgetcompact.cpp" line="109"/>
- <source>&lt; game %1 mod %2 file %3 &gt;</source>
+ <location filename="downloadlist.cpp" line="104"/>
+ <source>Canceled</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="downloadlistwidgetcompact.cpp" line="114"/>
- <source>Pending</source>
+ <location filename="downloadlist.cpp" line="105"/>
+ <source>Paused</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="downloadlistwidgetcompact.cpp" line="141"/>
- <source>Paused</source>
+ <location filename="downloadlist.cpp" line="106"/>
+ <source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="downloadlistwidgetcompact.cpp" line="143"/>
+ <location filename="downloadlist.cpp" line="107"/>
<source>Fetching Info 1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="downloadlistwidgetcompact.cpp" line="145"/>
+ <location filename="downloadlist.cpp" line="108"/>
<source>Fetching Info 2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="downloadlistwidgetcompact.cpp" line="150"/>
- <source>Installed</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="downloadlistwidgetcompact.cpp" line="152"/>
- <source>Uninstalled</source>
+ <location filename="downloadlist.cpp" line="109"/>
+ <source>Downloaded</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="downloadlistwidgetcompact.cpp" line="154"/>
- <source>Done</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="downloadlistwidgetcompact.cpp" line="233"/>
- <location filename="downloadlistwidgetcompact.cpp" line="288"/>
- <location filename="downloadlistwidgetcompact.cpp" line="297"/>
- <location filename="downloadlistwidgetcompact.cpp" line="306"/>
- <location filename="downloadlistwidgetcompact.cpp" line="315"/>
- <location filename="downloadlistwidgetcompact.cpp" line="324"/>
- <location filename="downloadlistwidgetcompact.cpp" line="333"/>
- <source>Are you sure?</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="downloadlistwidgetcompact.cpp" line="234"/>
- <source>This will permanently delete the selected download.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="downloadlistwidgetcompact.cpp" line="289"/>
- <source>This will remove all finished downloads from this list and from disk.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="downloadlistwidgetcompact.cpp" line="298"/>
- <source>This will remove all installed downloads from this list and from disk.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="downloadlistwidgetcompact.cpp" line="307"/>
- <source>This will remove all uninstalled downloads from this list and from disk.</source>
+ <location filename="downloadlist.cpp" line="110"/>
+ <source>Installed</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="downloadlistwidgetcompact.cpp" line="316"/>
- <source>This will permanently remove all finished downloads from this list (but NOT from disk).</source>
+ <location filename="downloadlist.cpp" line="111"/>
+ <source>Uninstalled</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="downloadlistwidgetcompact.cpp" line="325"/>
- <source>This will permanently remove all installed downloads from this list (but NOT from disk).</source>
+ <location filename="downloadlist.cpp" line="129"/>
+ <source>Pending download</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="downloadlistwidgetcompact.cpp" line="334"/>
- <source>This will permanently remove all uninstalled downloads from this list (but NOT from disk).</source>
+ <location filename="downloadlist.cpp" line="133"/>
+ <source>Information missing, please select &quot;Query Info&quot; from the context menu to re-retrieve.</source>
<translation type="unfinished"></translation>
</message>
+</context>
+<context>
+ <name>DownloadListWidget</name>
<message>
- <location filename="downloadlistwidgetcompact.cpp" line="363"/>
+ <location filename="downloadlistwidget.cpp" line="158"/>
<source>Install</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="downloadlistwidgetcompact.cpp" line="365"/>
+ <location filename="downloadlistwidget.cpp" line="160"/>
<source>Query Info</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="downloadlistwidgetcompact.cpp" line="367"/>
+ <location filename="downloadlistwidget.cpp" line="162"/>
<source>Visit on Nexus</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="downloadlistwidgetcompact.cpp" line="369"/>
+ <location filename="downloadlistwidget.cpp" line="163"/>
<source>Open File</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="downloadlistwidgetcompact.cpp" line="370"/>
- <location filename="downloadlistwidgetcompact.cpp" line="381"/>
- <location filename="downloadlistwidgetcompact.cpp" line="385"/>
+ <location filename="downloadlistwidget.cpp" line="164"/>
+ <location filename="downloadlistwidget.cpp" line="176"/>
+ <location filename="downloadlistwidget.cpp" line="181"/>
<source>Show in Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="downloadlistwidgetcompact.cpp" line="372"/>
+ <location filename="downloadlistwidget.cpp" line="168"/>
+ <location filename="downloadlistwidget.cpp" line="179"/>
<source>Delete</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="downloadlistwidgetcompact.cpp" line="374"/>
+ <location filename="downloadlistwidget.cpp" line="170"/>
<source>Un-Hide</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="downloadlistwidgetcompact.cpp" line="376"/>
+ <location filename="downloadlistwidget.cpp" line="172"/>
<source>Hide</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="downloadlistwidgetcompact.cpp" line="379"/>
+ <location filename="downloadlistwidget.cpp" line="174"/>
<source>Cancel</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="downloadlistwidgetcompact.cpp" line="380"/>
+ <location filename="downloadlistwidget.cpp" line="175"/>
<source>Pause</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="downloadlistwidgetcompact.cpp" line="383"/>
- <source>Remove</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="downloadlistwidgetcompact.cpp" line="384"/>
+ <location filename="downloadlistwidget.cpp" line="180"/>
<source>Resume</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="downloadlistwidgetcompact.cpp" line="389"/>
+ <location filename="downloadlistwidget.cpp" line="186"/>
<source>Delete Installed...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="downloadlistwidgetcompact.cpp" line="390"/>
+ <location filename="downloadlistwidget.cpp" line="187"/>
<source>Delete Uninstalled...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="downloadlistwidgetcompact.cpp" line="391"/>
+ <location filename="downloadlistwidget.cpp" line="188"/>
<source>Delete All...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="downloadlistwidgetcompact.cpp" line="394"/>
+ <location filename="downloadlistwidget.cpp" line="192"/>
<source>Hide Installed...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="downloadlistwidgetcompact.cpp" line="395"/>
+ <location filename="downloadlistwidget.cpp" line="193"/>
<source>Hide Uninstalled...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="downloadlistwidgetcompact.cpp" line="396"/>
+ <location filename="downloadlistwidget.cpp" line="194"/>
<source>Hide All...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="downloadlistwidgetcompact.cpp" line="400"/>
+ <location filename="downloadlistwidget.cpp" line="196"/>
<source>Un-Hide All...</source>
<translation type="unfinished"></translation>
</message>
-</context>
-<context>
- <name>DownloadListWidgetDelegate</name>
- <message>
- <location filename="downloadlistwidget.cpp" line="112"/>
- <source>&lt; game %1 mod %2 file %3 &gt;</source>
- <translation type="unfinished"></translation>
- </message>
<message>
- <location filename="downloadlistwidget.cpp" line="115"/>
- <source>Pending</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="downloadlistwidget.cpp" line="142"/>
- <source>Fetching Info 1</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="downloadlistwidget.cpp" line="145"/>
- <source>Fetching Info 2</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="downloadlistwidget.cpp" line="248"/>
- <location filename="downloadlistwidget.cpp" line="302"/>
- <location filename="downloadlistwidget.cpp" line="311"/>
- <location filename="downloadlistwidget.cpp" line="320"/>
+ <location filename="downloadlistwidget.cpp" line="214"/>
+ <location filename="downloadlistwidget.cpp" line="269"/>
+ <location filename="downloadlistwidget.cpp" line="278"/>
+ <location filename="downloadlistwidget.cpp" line="287"/>
<source>Delete Files?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="downloadlistwidget.cpp" line="249"/>
+ <location filename="downloadlistwidget.cpp" line="215"/>
<source>This will permanently delete the selected download.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="downloadlistwidget.cpp" line="303"/>
+ <location filename="downloadlistwidget.cpp" line="270"/>
<source>This will remove all finished downloads from this list and from disk.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="downloadlistwidget.cpp" line="312"/>
+ <location filename="downloadlistwidget.cpp" line="279"/>
<source>This will remove all installed downloads from this list and from disk.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="downloadlistwidget.cpp" line="321"/>
+ <location filename="downloadlistwidget.cpp" line="288"/>
<source>This will remove all uninstalled downloads from this list and from disk.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="downloadlistwidget.cpp" line="329"/>
- <location filename="downloadlistwidget.cpp" line="338"/>
- <location filename="downloadlistwidget.cpp" line="347"/>
+ <location filename="downloadlistwidget.cpp" line="296"/>
+ <location filename="downloadlistwidget.cpp" line="305"/>
+ <location filename="downloadlistwidget.cpp" line="314"/>
<source>Are you sure?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="downloadlistwidget.cpp" line="330"/>
+ <location filename="downloadlistwidget.cpp" line="297"/>
<source>This will remove all finished downloads from this list (but NOT from disk).</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="downloadlistwidget.cpp" line="339"/>
+ <location filename="downloadlistwidget.cpp" line="306"/>
<source>This will remove all installed downloads from this list (but NOT from disk).</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="downloadlistwidget.cpp" line="348"/>
+ <location filename="downloadlistwidget.cpp" line="315"/>
<source>This will remove all uninstalled downloads from this list (but NOT from disk).</source>
<translation type="unfinished"></translation>
</message>
- <message>
- <location filename="downloadlistwidget.cpp" line="376"/>
- <source>Install</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="downloadlistwidget.cpp" line="378"/>
- <source>Query Info</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="downloadlistwidget.cpp" line="380"/>
- <source>Visit on Nexus</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="downloadlistwidget.cpp" line="383"/>
- <source>Open File</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="downloadlistwidget.cpp" line="384"/>
- <location filename="downloadlistwidget.cpp" line="397"/>
- <location filename="downloadlistwidget.cpp" line="401"/>
- <source>Show in Folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="downloadlistwidget.cpp" line="388"/>
- <location filename="downloadlistwidget.cpp" line="399"/>
- <source>Delete</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="downloadlistwidget.cpp" line="390"/>
- <source>Un-Hide</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="downloadlistwidget.cpp" line="392"/>
- <source>Hide</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="downloadlistwidget.cpp" line="395"/>
- <source>Cancel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="downloadlistwidget.cpp" line="396"/>
- <source>Pause</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="downloadlistwidget.cpp" line="400"/>
- <source>Resume</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="downloadlistwidget.cpp" line="406"/>
- <source>Delete Installed...</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="downloadlistwidget.cpp" line="407"/>
- <source>Delete Uninstalled...</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="downloadlistwidget.cpp" line="408"/>
- <source>Delete All...</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="downloadlistwidget.cpp" line="412"/>
- <source>Hide Installed...</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="downloadlistwidget.cpp" line="413"/>
- <source>Hide Uninstalled...</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="downloadlistwidget.cpp" line="414"/>
- <source>Hide All...</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="downloadlistwidget.cpp" line="418"/>
- <source>Un-Hide All...</source>
- <translation type="unfinished"></translation>
- </message>
</context>
<context>
<name>DownloadManager</name>
@@ -746,7 +582,7 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="downloadmanager.cpp" line="502"/>
- <source>A file with the same name has already been downloaded. Do you want to download it again? The new file will receive a different name.</source>
+ <source>A file with the same name &quot;%1&quot; has already been downloaded. Do you want to download it again? The new file will receive a different name.</source>
<translation type="unfinished"></translation>
</message>
<message>
@@ -777,7 +613,7 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="downloadmanager.cpp" line="588"/>
- <location filename="downloadmanager.cpp" line="725"/>
+ <location filename="downloadmanager.cpp" line="721"/>
<source>remove: invalid download index %1</source>
<translation type="unfinished"></translation>
</message>
@@ -797,234 +633,234 @@ p, li { white-space: pre-wrap; }
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="downloadmanager.cpp" line="747"/>
+ <location filename="downloadmanager.cpp" line="743"/>
<source>cancel: invalid download index %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="downloadmanager.cpp" line="760"/>
+ <location filename="downloadmanager.cpp" line="756"/>
<source>pause: invalid download index %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="downloadmanager.cpp" line="780"/>
+ <location filename="downloadmanager.cpp" line="776"/>
<source>resume: invalid download index %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="downloadmanager.cpp" line="791"/>
+ <location filename="downloadmanager.cpp" line="787"/>
<source>resume (int): invalid download index %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="downloadmanager.cpp" line="815"/>
+ <location filename="downloadmanager.cpp" line="811"/>
<source>No known download urls. Sorry, this download can&apos;t be resumed.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="downloadmanager.cpp" line="856"/>
+ <location filename="downloadmanager.cpp" line="852"/>
<source>query: invalid download index %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="downloadmanager.cpp" line="878"/>
+ <location filename="downloadmanager.cpp" line="874"/>
<source>Please enter the nexus mod id</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="downloadmanager.cpp" line="878"/>
+ <location filename="downloadmanager.cpp" line="874"/>
<source>Mod ID:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="downloadmanager.cpp" line="888"/>
+ <location filename="downloadmanager.cpp" line="884"/>
<source>Please select the source game code for %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="downloadmanager.cpp" line="907"/>
+ <location filename="downloadmanager.cpp" line="903"/>
<source>VisitNexus: invalid download index %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="downloadmanager.cpp" line="928"/>
+ <location filename="downloadmanager.cpp" line="924"/>
<source>Nexus ID for this Mod is unknown</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="downloadmanager.cpp" line="935"/>
+ <location filename="downloadmanager.cpp" line="931"/>
<source>OpenFile: invalid download index %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="downloadmanager.cpp" line="952"/>
+ <location filename="downloadmanager.cpp" line="948"/>
<source>OpenFileInDownloadsFolder: invalid download index %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="downloadmanager.cpp" line="988"/>
+ <location filename="downloadmanager.cpp" line="984"/>
<source>get pending: invalid download index %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="downloadmanager.cpp" line="997"/>
+ <location filename="downloadmanager.cpp" line="993"/>
<source>get path: invalid download index %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="downloadmanager.cpp" line="1006"/>
+ <location filename="downloadmanager.cpp" line="1002"/>
<source>Main</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="downloadmanager.cpp" line="1007"/>
+ <location filename="downloadmanager.cpp" line="1003"/>
<source>Update</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="downloadmanager.cpp" line="1008"/>
+ <location filename="downloadmanager.cpp" line="1004"/>
<source>Optional</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="downloadmanager.cpp" line="1009"/>
+ <location filename="downloadmanager.cpp" line="1005"/>
<source>Old</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="downloadmanager.cpp" line="1010"/>
+ <location filename="downloadmanager.cpp" line="1006"/>
<source>Misc</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="downloadmanager.cpp" line="1011"/>
+ <location filename="downloadmanager.cpp" line="1007"/>
<source>Unknown</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="downloadmanager.cpp" line="1018"/>
+ <location filename="downloadmanager.cpp" line="1014"/>
<source>display name: invalid download index %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="downloadmanager.cpp" line="1038"/>
+ <location filename="downloadmanager.cpp" line="1034"/>
<source>file name: invalid download index %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="downloadmanager.cpp" line="1047"/>
+ <location filename="downloadmanager.cpp" line="1043"/>
<source>file time: invalid download index %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="downloadmanager.cpp" line="1061"/>
+ <location filename="downloadmanager.cpp" line="1057"/>
<source>file size: invalid download index %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="downloadmanager.cpp" line="1071"/>
+ <location filename="downloadmanager.cpp" line="1067"/>
<source>progress: invalid download index %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="downloadmanager.cpp" line="1081"/>
+ <location filename="downloadmanager.cpp" line="1077"/>
<source>state: invalid download index %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="downloadmanager.cpp" line="1091"/>
+ <location filename="downloadmanager.cpp" line="1087"/>
<source>infocomplete: invalid download index %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="downloadmanager.cpp" line="1106"/>
- <location filename="downloadmanager.cpp" line="1114"/>
+ <location filename="downloadmanager.cpp" line="1102"/>
+ <location filename="downloadmanager.cpp" line="1110"/>
<source>mod id: invalid download index %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="downloadmanager.cpp" line="1122"/>
+ <location filename="downloadmanager.cpp" line="1118"/>
<source>ishidden: invalid download index %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="downloadmanager.cpp" line="1131"/>
+ <location filename="downloadmanager.cpp" line="1127"/>
<source>file info: invalid download index %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="downloadmanager.cpp" line="1141"/>
+ <location filename="downloadmanager.cpp" line="1137"/>
<source>mark installed: invalid download index %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="downloadmanager.cpp" line="1186"/>
+ <location filename="downloadmanager.cpp" line="1182"/>
<source>mark uninstalled: invalid download index %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="downloadmanager.cpp" line="1359"/>
+ <location filename="downloadmanager.cpp" line="1355"/>
<source>Memory allocation error (in processing progress event).</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="downloadmanager.cpp" line="1369"/>
+ <location filename="downloadmanager.cpp" line="1365"/>
<source>Memory allocation error (in processing downloaded data).</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="downloadmanager.cpp" line="1495"/>
+ <location filename="downloadmanager.cpp" line="1491"/>
<source>Information updated</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="downloadmanager.cpp" line="1497"/>
- <location filename="downloadmanager.cpp" line="1511"/>
+ <location filename="downloadmanager.cpp" line="1493"/>
+ <location filename="downloadmanager.cpp" line="1507"/>
<source>No matching file found on Nexus! Maybe this file is no longer available or it was renamed?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="downloadmanager.cpp" line="1499"/>
+ <location filename="downloadmanager.cpp" line="1495"/>
<source>No file on Nexus matches the selected file by name. Please manually choose the correct one.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="downloadmanager.cpp" line="1628"/>
+ <location filename="downloadmanager.cpp" line="1624"/>
<source>No download server available. Please try again later.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="downloadmanager.cpp" line="1671"/>
+ <location filename="downloadmanager.cpp" line="1667"/>
<source>Failed to request file info from nexus: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="downloadmanager.cpp" line="1698"/>
+ <location filename="downloadmanager.cpp" line="1694"/>
<source>Warning: Content type is: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="downloadmanager.cpp" line="1703"/>
+ <location filename="downloadmanager.cpp" line="1699"/>
<source>Download header content length: %1 downloaded file size: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="downloadmanager.cpp" line="1705"/>
+ <location filename="downloadmanager.cpp" line="1701"/>
<source>Download failed: %1 (%2)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="downloadmanager.cpp" line="1727"/>
+ <location filename="downloadmanager.cpp" line="1723"/>
<source>We were unable to download the file due to errors after four retries. There may be an issue with the Nexus servers.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="downloadmanager.cpp" line="1810"/>
+ <location filename="downloadmanager.cpp" line="1806"/>
<source>failed to re-open %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="downloadmanager.cpp" line="1851"/>
+ <location filename="downloadmanager.cpp" line="1847"/>
<source>Unable to write download to drive (return %1).
Check the drive&apos;s available storage.
@@ -1620,7 +1456,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="mainwindow.ui" line="287"/>
<location filename="mainwindow.ui" line="911"/>
- <location filename="mainwindow.cpp" line="4372"/>
+ <location filename="mainwindow.cpp" line="4375"/>
<source>Create Backup</source>
<translation type="unfinished"></translation>
</message>
@@ -1649,7 +1485,7 @@ p, li { white-space: pre-wrap; }
<location filename="mainwindow.ui" line="523"/>
<location filename="mainwindow.ui" line="644"/>
<location filename="mainwindow.ui" line="1063"/>
- <location filename="mainwindow.ui" line="1422"/>
+ <location filename="mainwindow.ui" line="1392"/>
<source>Filter</source>
<translation type="unfinished"></translation>
</message>
@@ -1796,8 +1632,8 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="mainwindow.ui" line="1175"/>
<location filename="mainwindow.ui" line="1318"/>
- <location filename="mainwindow.cpp" line="4247"/>
- <location filename="mainwindow.cpp" line="5176"/>
+ <location filename="mainwindow.cpp" line="4250"/>
+ <location filename="mainwindow.cpp" line="5178"/>
<source>Refresh</source>
<translation type="unfinished"></translation>
</message>
@@ -1870,145 +1706,145 @@ p, li { white-space: pre-wrap; }
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.ui" line="1402"/>
+ <location filename="mainwindow.ui" line="1372"/>
<source>Show Hidden</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.ui" line="1467"/>
+ <location filename="mainwindow.ui" line="1437"/>
<source>Tool Bar</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.ui" line="1510"/>
+ <location filename="mainwindow.ui" line="1480"/>
<source>Install Mod</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.ui" line="1513"/>
+ <location filename="mainwindow.ui" line="1483"/>
<source>Install &amp;Mod</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.ui" line="1516"/>
+ <location filename="mainwindow.ui" line="1486"/>
<source>Install a new mod from an archive</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.ui" line="1519"/>
+ <location filename="mainwindow.ui" line="1489"/>
<source>Ctrl+M</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.ui" line="1528"/>
+ <location filename="mainwindow.ui" line="1498"/>
<source>Profiles</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.ui" line="1531"/>
+ <location filename="mainwindow.ui" line="1501"/>
<source>&amp;Profiles</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.ui" line="1534"/>
+ <location filename="mainwindow.ui" line="1504"/>
<source>Configure Profiles</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.ui" line="1537"/>
+ <location filename="mainwindow.ui" line="1507"/>
<source>Ctrl+P</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.ui" line="1546"/>
+ <location filename="mainwindow.ui" line="1516"/>
<source>Executables</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.ui" line="1549"/>
+ <location filename="mainwindow.ui" line="1519"/>
<source>&amp;Executables</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.ui" line="1552"/>
+ <location filename="mainwindow.ui" line="1522"/>
<source>Configure the executables that can be started through Mod Organizer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.ui" line="1555"/>
+ <location filename="mainwindow.ui" line="1525"/>
<source>Ctrl+E</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.ui" line="1564"/>
- <location filename="mainwindow.ui" line="1570"/>
+ <location filename="mainwindow.ui" line="1534"/>
+ <location filename="mainwindow.ui" line="1540"/>
<source>Tools</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.ui" line="1567"/>
+ <location filename="mainwindow.ui" line="1537"/>
<source>&amp;Tools</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.ui" line="1573"/>
+ <location filename="mainwindow.ui" line="1543"/>
<source>Ctrl+I</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.ui" line="1582"/>
+ <location filename="mainwindow.ui" line="1552"/>
<source>Settings</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.ui" line="1585"/>
+ <location filename="mainwindow.ui" line="1555"/>
<source>&amp;Settings</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.ui" line="1588"/>
+ <location filename="mainwindow.ui" line="1558"/>
<source>Configure settings and workarounds</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.ui" line="1591"/>
+ <location filename="mainwindow.ui" line="1561"/>
<source>Ctrl+S</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.ui" line="1600"/>
+ <location filename="mainwindow.ui" line="1570"/>
<source>Nexus</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.ui" line="1603"/>
+ <location filename="mainwindow.ui" line="1573"/>
<source>Search nexus network for more mods</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.ui" line="1606"/>
+ <location filename="mainwindow.ui" line="1576"/>
<source>Ctrl+N</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.ui" line="1618"/>
- <location filename="mainwindow.cpp" line="5107"/>
+ <location filename="mainwindow.ui" line="1588"/>
+ <location filename="mainwindow.cpp" line="5109"/>
<source>Update</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.ui" line="1621"/>
+ <location filename="mainwindow.ui" line="1591"/>
<source>Mod Organizer is up-to-date</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.ui" line="1633"/>
- <location filename="mainwindow.cpp" line="672"/>
+ <location filename="mainwindow.ui" line="1603"/>
+ <location filename="mainwindow.cpp" line="674"/>
<source>No Problems</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.ui" line="1636"/>
+ <location filename="mainwindow.ui" line="1606"/>
<source>This button will be highlighted if MO discovered potential problems in your setup and provide tips on how to fix them.
!Work in progress!
@@ -2016,39 +1852,39 @@ Right now this has very limited functionality</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.ui" line="1648"/>
- <location filename="mainwindow.ui" line="1651"/>
+ <location filename="mainwindow.ui" line="1618"/>
+ <location filename="mainwindow.ui" line="1621"/>
<source>Help</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.ui" line="1654"/>
+ <location filename="mainwindow.ui" line="1624"/>
<source>Ctrl+H</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.ui" line="1663"/>
+ <location filename="mainwindow.ui" line="1633"/>
<source>Endorse MO</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.ui" line="1666"/>
- <location filename="mainwindow.cpp" line="5199"/>
+ <location filename="mainwindow.ui" line="1636"/>
+ <location filename="mainwindow.cpp" line="5201"/>
<source>Endorse Mod Organizer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.ui" line="1671"/>
+ <location filename="mainwindow.ui" line="1641"/>
<source>Copy Log to Clipboard</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.ui" line="1680"/>
+ <location filename="mainwindow.ui" line="1650"/>
<source>Change Game</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.ui" line="1683"/>
+ <location filename="mainwindow.ui" line="1653"/>
<source>Open the Instance selection dialog to manage a different Game</source>
<translation type="unfinished"></translation>
</message>
@@ -2068,835 +1904,835 @@ Right now this has very limited functionality</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="361"/>
+ <location filename="mainwindow.cpp" line="359"/>
<source>There is no supported sort mechanism for this game. You will probably have to use a third-party tool.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="492"/>
+ <location filename="mainwindow.cpp" line="494"/>
<source>Crash on exit</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="493"/>
+ <location filename="mainwindow.cpp" line="495"/>
<source>MO crashed while exiting. Some settings may not be saved.
Error: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="660"/>
+ <location filename="mainwindow.cpp" line="662"/>
<source>Problems</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="661"/>
+ <location filename="mainwindow.cpp" line="663"/>
<source>There are potential problems with your setup</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="673"/>
+ <location filename="mainwindow.cpp" line="675"/>
<source>Everything seems to be in order</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="739"/>
+ <location filename="mainwindow.cpp" line="737"/>
+ <location filename="mainwindow.cpp" line="4385"/>
+ <location filename="mainwindow.cpp" line="4389"/>
+ <source>Endorse</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="mainwindow.cpp" line="741"/>
<source>Won&apos;t Endorse</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="754"/>
+ <location filename="mainwindow.cpp" line="756"/>
<source>Help on UI</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="758"/>
+ <location filename="mainwindow.cpp" line="760"/>
<source>Documentation Wiki</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="762"/>
+ <location filename="mainwindow.cpp" line="764"/>
<source>Report Issue</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="766"/>
+ <location filename="mainwindow.cpp" line="768"/>
<source>Tutorials</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="805"/>
+ <location filename="mainwindow.cpp" line="807"/>
<source>About</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="806"/>
+ <location filename="mainwindow.cpp" line="808"/>
<source>About Qt</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="865"/>
+ <location filename="mainwindow.cpp" line="867"/>
<source>Name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="866"/>
+ <location filename="mainwindow.cpp" line="868"/>
<source>Please enter a name for the new profile</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="874"/>
+ <location filename="mainwindow.cpp" line="876"/>
<source>failed to create profile: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="918"/>
+ <location filename="mainwindow.cpp" line="920"/>
<source>Show tutorial?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="919"/>
+ <location filename="mainwindow.cpp" line="921"/>
<source>You are starting Mod Organizer for the first time. Do you want to show a tutorial of its basic features? If you choose no you can always start the tutorial from the &quot;Help&quot;-menu.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="955"/>
+ <location filename="mainwindow.cpp" line="957"/>
<source>Downloads in progress</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="956"/>
+ <location filename="mainwindow.cpp" line="958"/>
<source>There are still downloads in progress, do you really want to quit?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="1073"/>
+ <location filename="mainwindow.cpp" line="1075"/>
<source>Plugin &quot;%1&quot; failed: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="1075"/>
+ <location filename="mainwindow.cpp" line="1077"/>
<source>Plugin &quot;%1&quot; failed</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="1153"/>
+ <location filename="mainwindow.cpp" line="1155"/>
<source>Browse Mod Page</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="1355"/>
+ <location filename="mainwindow.cpp" line="1357"/>
<source>Also in: &lt;br&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="1366"/>
+ <location filename="mainwindow.cpp" line="1368"/>
<source>No conflict</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="1451"/>
+ <location filename="mainwindow.cpp" line="1453"/>
<source>&lt;Edit...&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="1729"/>
+ <location filename="mainwindow.cpp" line="1731"/>
<source>This bsa is enabled in the ini file so it may be required!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="1791"/>
+ <location filename="mainwindow.cpp" line="1793"/>
<source>Activating Network Proxy</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="1852"/>
+ <location filename="mainwindow.cpp" line="1854"/>
<source>Notice: Your current MO version (%1) is lower than the previous version (%2).&lt;br&gt;The GUI may not downgrade gracefully, so you may experience oddities.&lt;br&gt;However, there should be no serious issues.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="1956"/>
+ <location filename="mainwindow.cpp" line="1958"/>
<source>Choose Mod</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="1957"/>
+ <location filename="mainwindow.cpp" line="1959"/>
<source>Mod Archive</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2132"/>
+ <location filename="mainwindow.cpp" line="2134"/>
<source>Start Tutorial?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2133"/>
+ <location filename="mainwindow.cpp" line="2135"/>
<source>You&apos;re about to start a tutorial. For technical reasons it&apos;s not possible to end the tutorial early. Continue?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2306"/>
+ <location filename="mainwindow.cpp" line="2308"/>
<source>failed to spawn notepad.exe: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2346"/>
+ <location filename="mainwindow.cpp" line="2348"/>
<source>failed to change origin name: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2370"/>
+ <location filename="mainwindow.cpp" line="2372"/>
<source>failed to move &quot;%1&quot; from mod &quot;%2&quot; to &quot;%3&quot;: %4</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2394"/>
+ <location filename="mainwindow.cpp" line="2396"/>
<source>&lt;Contains %1&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2429"/>
+ <location filename="mainwindow.cpp" line="2431"/>
<source>&lt;Checked&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2430"/>
+ <location filename="mainwindow.cpp" line="2432"/>
<source>&lt;Unchecked&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2431"/>
+ <location filename="mainwindow.cpp" line="2433"/>
<source>&lt;Update&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2432"/>
+ <location filename="mainwindow.cpp" line="2434"/>
<source>&lt;Mod Backup&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2433"/>
+ <location filename="mainwindow.cpp" line="2435"/>
<source>&lt;Managed by MO&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2434"/>
+ <location filename="mainwindow.cpp" line="2436"/>
<source>&lt;Managed outside MO&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2435"/>
+ <location filename="mainwindow.cpp" line="2437"/>
<source>&lt;No category&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2436"/>
+ <location filename="mainwindow.cpp" line="2438"/>
<source>&lt;Conflicted&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2437"/>
+ <location filename="mainwindow.cpp" line="2439"/>
<source>&lt;Not Endorsed&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2483"/>
+ <location filename="mainwindow.cpp" line="2485"/>
<source>failed to rename mod: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2496"/>
+ <location filename="mainwindow.cpp" line="2498"/>
<source>Overwrite?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2497"/>
+ <location filename="mainwindow.cpp" line="2499"/>
<source>This will replace the existing mod &quot;%1&quot;. Continue?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2500"/>
+ <location filename="mainwindow.cpp" line="2502"/>
<source>failed to remove mod &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2504"/>
- <location filename="mainwindow.cpp" line="4939"/>
- <location filename="mainwindow.cpp" line="4963"/>
+ <location filename="mainwindow.cpp" line="2506"/>
+ <location filename="mainwindow.cpp" line="4941"/>
+ <location filename="mainwindow.cpp" line="4965"/>
<source>failed to rename &quot;%1&quot; to &quot;%2&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2575"/>
- <location filename="mainwindow.cpp" line="3951"/>
- <location filename="mainwindow.cpp" line="3959"/>
- <location filename="mainwindow.cpp" line="4495"/>
+ <location filename="mainwindow.cpp" line="2577"/>
+ <location filename="mainwindow.cpp" line="3954"/>
+ <location filename="mainwindow.cpp" line="3962"/>
+ <location filename="mainwindow.cpp" line="4498"/>
<source>Confirm</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2576"/>
+ <location filename="mainwindow.cpp" line="2578"/>
<source>Remove the following mods?&lt;br&gt;&lt;ul&gt;%1&lt;/ul&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2589"/>
+ <location filename="mainwindow.cpp" line="2591"/>
<source>failed to remove mod: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2621"/>
- <location filename="mainwindow.cpp" line="2624"/>
- <location filename="mainwindow.cpp" line="2634"/>
+ <location filename="mainwindow.cpp" line="2623"/>
+ <location filename="mainwindow.cpp" line="2626"/>
+ <location filename="mainwindow.cpp" line="2636"/>
<source>Failed</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2621"/>
+ <location filename="mainwindow.cpp" line="2623"/>
<source>Installation file no longer exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2625"/>
+ <location filename="mainwindow.cpp" line="2627"/>
<source>Mods installed with old versions of MO can&apos;t be reinstalled in this way.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2635"/>
+ <location filename="mainwindow.cpp" line="2637"/>
<source>Failed to create backup.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2652"/>
+ <location filename="mainwindow.cpp" line="2654"/>
<source>You need to be logged in with Nexus to resume a download</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2668"/>
- <location filename="mainwindow.cpp" line="2694"/>
- <location filename="mainwindow.cpp" line="2728"/>
- <location filename="mainwindow.cpp" line="2754"/>
+ <location filename="mainwindow.cpp" line="2670"/>
+ <location filename="mainwindow.cpp" line="2696"/>
+ <location filename="mainwindow.cpp" line="2730"/>
+ <location filename="mainwindow.cpp" line="2756"/>
<source>You need to be logged in with Nexus to endorse</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2679"/>
- <location filename="mainwindow.cpp" line="2687"/>
+ <location filename="mainwindow.cpp" line="2681"/>
+ <location filename="mainwindow.cpp" line="2689"/>
<source>Endorsing multiple mods will take a while. Please wait...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2739"/>
- <location filename="mainwindow.cpp" line="2747"/>
+ <location filename="mainwindow.cpp" line="2741"/>
+ <location filename="mainwindow.cpp" line="2749"/>
<source>Unendorsing multiple mods will take a while. Please wait...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2815"/>
+ <location filename="mainwindow.cpp" line="2817"/>
<source>Failed to display overwrite dialog: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="3002"/>
+ <location filename="mainwindow.cpp" line="3004"/>
<source>Opening Nexus Links</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="3003"/>
+ <location filename="mainwindow.cpp" line="3005"/>
<source>You are trying to open %1 links to Nexus Mods. Are you sure you want to do this?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="3023"/>
+ <location filename="mainwindow.cpp" line="3025"/>
<source>Nexus ID for this Mod is unknown</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="3034"/>
+ <location filename="mainwindow.cpp" line="3036"/>
<source>Web page for this mod is unknown</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="3216"/>
+ <location filename="mainwindow.cpp" line="3218"/>
<source>&lt;table cellspacing=&quot;5&quot;&gt;&lt;tr&gt;&lt;th&gt;Type&lt;/th&gt;&lt;th&gt;All&lt;/th&gt;&lt;th&gt;Visible&lt;/th&gt;&lt;tr&gt;&lt;td&gt;Enabled mods:&amp;emsp;&lt;/td&gt;&lt;td align=right&gt;%1 / %2&lt;/td&gt;&lt;td align=right&gt;%3 / %4&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Unmanaged/DLCs:&amp;emsp;&lt;/td&gt;&lt;td align=right&gt;%5&lt;/td&gt;&lt;td align=right&gt;%6&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Mod backups:&amp;emsp;&lt;/td&gt;&lt;td align=right&gt;%7&lt;/td&gt;&lt;td align=right&gt;%8&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Separators:&amp;emsp;&lt;/td&gt;&lt;td align=right&gt;%9&lt;/td&gt;&lt;td align=right&gt;%10&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="3271"/>
+ <location filename="mainwindow.cpp" line="3273"/>
<source>&lt;table cellspacing=&quot;4&quot;&gt;&lt;tr&gt;&lt;th&gt;Type&lt;/th&gt;&lt;th&gt;Active&lt;/th&gt;&lt;th&gt;Total&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Active plugins:&lt;/td&gt;&lt;td align=right&gt;%1&lt;/td&gt;&lt;td align=right&gt;%2&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Active ESMs:&lt;/td&gt;&lt;td align=right&gt;%3&lt;/td&gt;&lt;td align=right&gt;%4&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Active ESPs:&lt;/td&gt;&lt;td align=right&gt;%7&lt;/td&gt;&lt;td align=right&gt;%8&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Active ESMs+ESPs:&lt;/td&gt;&lt;td align=right&gt;%9&lt;/td&gt;&lt;td align=right&gt;%10&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Active ESLs:&lt;/td&gt;&lt;td align=right&gt;%5&lt;/td&gt;&lt;td align=right&gt;%6&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="3303"/>
- <location filename="mainwindow.cpp" line="3440"/>
- <location filename="mainwindow.cpp" line="4309"/>
+ <location filename="mainwindow.cpp" line="3305"/>
+ <location filename="mainwindow.cpp" line="3443"/>
+ <location filename="mainwindow.cpp" line="4312"/>
<source>Create Mod...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="3304"/>
+ <location filename="mainwindow.cpp" line="3306"/>
<source>This will create an empty mod.
Please enter a name:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="3313"/>
- <location filename="mainwindow.cpp" line="3450"/>
+ <location filename="mainwindow.cpp" line="3315"/>
+ <location filename="mainwindow.cpp" line="3453"/>
<source>A mod with this name already exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="3341"/>
+ <location filename="mainwindow.cpp" line="3343"/>
<source>Create Separator...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="3342"/>
+ <location filename="mainwindow.cpp" line="3344"/>
<source>This will create a new separator.
Please enter a name:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="3349"/>
+ <location filename="mainwindow.cpp" line="3351"/>
<source>A separator with this name already exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="3441"/>
+ <location filename="mainwindow.cpp" line="3444"/>
<source>This will move all files from overwrite into a new, regular mod.
Please enter a name:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="3482"/>
- <location filename="mainwindow.cpp" line="5519"/>
+ <location filename="mainwindow.cpp" line="3485"/>
+ <location filename="mainwindow.cpp" line="5536"/>
<source>Are you sure?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="3483"/>
+ <location filename="mainwindow.cpp" line="3486"/>
<source>About to recursively delete:
</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="3845"/>
+ <location filename="mainwindow.cpp" line="3848"/>
<source>Not logged in, endorsement information will be wrong</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="3853"/>
+ <location filename="mainwindow.cpp" line="3856"/>
<source>Continue?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="3854"/>
+ <location filename="mainwindow.cpp" line="3857"/>
<source>The versioning scheme decides which version is considered newer than another.
This function will guess the versioning scheme under the assumption that the installed version is outdated.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="3874"/>
- <location filename="mainwindow.cpp" line="5075"/>
+ <location filename="mainwindow.cpp" line="3877"/>
+ <location filename="mainwindow.cpp" line="5077"/>
<source>Sorry</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="3875"/>
+ <location filename="mainwindow.cpp" line="3878"/>
<source>I don&apos;t know a versioning scheme where %1 is newer than %2.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="3951"/>
+ <location filename="mainwindow.cpp" line="3954"/>
<source>Really enable all visible mods?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="3959"/>
+ <location filename="mainwindow.cpp" line="3962"/>
<source>Really disable all visible mods?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4039"/>
+ <location filename="mainwindow.cpp" line="4042"/>
<source>Export to csv</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4042"/>
+ <location filename="mainwindow.cpp" line="4045"/>
<source>CSV (Comma Separated Values) is a format that can be imported in programs like Excel to create a spreadsheet.
You can also use online editors and converters instead.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4045"/>
+ <location filename="mainwindow.cpp" line="4048"/>
<source>Select what mods you want export:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4046"/>
+ <location filename="mainwindow.cpp" line="4049"/>
<source>All installed mods</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4047"/>
+ <location filename="mainwindow.cpp" line="4050"/>
<source>Only active (checked) mods from your current profile</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4048"/>
+ <location filename="mainwindow.cpp" line="4051"/>
<source>All currently visible mods in the mod list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4069"/>
+ <location filename="mainwindow.cpp" line="4072"/>
<source>Choose what Columns to export:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4072"/>
+ <location filename="mainwindow.cpp" line="4075"/>
<source>Mod_Priority</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4074"/>
+ <location filename="mainwindow.cpp" line="4077"/>
<source>Mod_Name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4076"/>
+ <location filename="mainwindow.cpp" line="4079"/>
<source>Mod_Status</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4077"/>
+ <location filename="mainwindow.cpp" line="4080"/>
<source>Primary_Category</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4078"/>
+ <location filename="mainwindow.cpp" line="4081"/>
<source>Nexus_ID</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4079"/>
+ <location filename="mainwindow.cpp" line="4082"/>
<source>Mod_Nexus_URL</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4080"/>
+ <location filename="mainwindow.cpp" line="4083"/>
<source>Mod_Version</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4081"/>
+ <location filename="mainwindow.cpp" line="4084"/>
<source>Install_Date</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4082"/>
+ <location filename="mainwindow.cpp" line="4085"/>
<source>Download_File_Name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4184"/>
+ <location filename="mainwindow.cpp" line="4187"/>
<source>export failed: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4203"/>
+ <location filename="mainwindow.cpp" line="4206"/>
<source>Open Game folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4205"/>
+ <location filename="mainwindow.cpp" line="4208"/>
<source>Open MyGames folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4207"/>
+ <location filename="mainwindow.cpp" line="4210"/>
<source>Open INIs folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4211"/>
+ <location filename="mainwindow.cpp" line="4214"/>
<source>Open Instance folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4213"/>
+ <location filename="mainwindow.cpp" line="4216"/>
<source>Open Mods folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4215"/>
+ <location filename="mainwindow.cpp" line="4218"/>
<source>Open Profile folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4217"/>
+ <location filename="mainwindow.cpp" line="4220"/>
<source>Open Downloads folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4221"/>
+ <location filename="mainwindow.cpp" line="4224"/>
<source>Open MO2 Install folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4223"/>
+ <location filename="mainwindow.cpp" line="4226"/>
<source>Open MO2 Plugins folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4225"/>
+ <location filename="mainwindow.cpp" line="4228"/>
<source>Open MO2 Logs folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4234"/>
+ <location filename="mainwindow.cpp" line="4237"/>
<source>Install Mod...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4236"/>
+ <location filename="mainwindow.cpp" line="4239"/>
<source>Create empty mod</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4238"/>
+ <location filename="mainwindow.cpp" line="4241"/>
<source>Create Separator</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4242"/>
+ <location filename="mainwindow.cpp" line="4245"/>
<source>Enable all visible</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4243"/>
+ <location filename="mainwindow.cpp" line="4246"/>
<source>Disable all visible</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4245"/>
+ <location filename="mainwindow.cpp" line="4248"/>
<source>Check all for update</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4249"/>
+ <location filename="mainwindow.cpp" line="4252"/>
<source>Export to csv...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4261"/>
- <location filename="mainwindow.cpp" line="4277"/>
+ <location filename="mainwindow.cpp" line="4264"/>
+ <location filename="mainwindow.cpp" line="4280"/>
<source>Send to</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4262"/>
- <location filename="mainwindow.cpp" line="4278"/>
+ <location filename="mainwindow.cpp" line="4265"/>
+ <location filename="mainwindow.cpp" line="4281"/>
<source>Top</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4263"/>
- <location filename="mainwindow.cpp" line="4279"/>
+ <location filename="mainwindow.cpp" line="4266"/>
+ <location filename="mainwindow.cpp" line="4282"/>
<source>Bottom</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4264"/>
- <location filename="mainwindow.cpp" line="4280"/>
+ <location filename="mainwindow.cpp" line="4267"/>
+ <location filename="mainwindow.cpp" line="4283"/>
<source>Priority...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4265"/>
+ <location filename="mainwindow.cpp" line="4268"/>
<source>Separator...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4301"/>
+ <location filename="mainwindow.cpp" line="4304"/>
<source>All Mods</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4308"/>
+ <location filename="mainwindow.cpp" line="4311"/>
<source>Sync to Mods...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4310"/>
+ <location filename="mainwindow.cpp" line="4313"/>
<source>Clear Overwrite...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4312"/>
- <location filename="mainwindow.cpp" line="4413"/>
+ <location filename="mainwindow.cpp" line="4315"/>
+ <location filename="mainwindow.cpp" line="4416"/>
<source>Open in Explorer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4314"/>
+ <location filename="mainwindow.cpp" line="4317"/>
<source>Restore Backup</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4315"/>
+ <location filename="mainwindow.cpp" line="4318"/>
<source>Remove Backup...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4318"/>
- <location filename="mainwindow.cpp" line="4337"/>
+ <location filename="mainwindow.cpp" line="4321"/>
+ <location filename="mainwindow.cpp" line="4340"/>
<source>Change Categories</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4322"/>
- <location filename="mainwindow.cpp" line="4342"/>
+ <location filename="mainwindow.cpp" line="4325"/>
+ <location filename="mainwindow.cpp" line="4345"/>
<source>Primary Category</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4326"/>
+ <location filename="mainwindow.cpp" line="4329"/>
<source>Rename Separator...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4327"/>
+ <location filename="mainwindow.cpp" line="4330"/>
<source>Remove Separator...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4330"/>
+ <location filename="mainwindow.cpp" line="4333"/>
<source>Select Color...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4332"/>
+ <location filename="mainwindow.cpp" line="4335"/>
<source>Reset Color</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4349"/>
+ <location filename="mainwindow.cpp" line="4352"/>
<source>Change versioning scheme</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4353"/>
+ <location filename="mainwindow.cpp" line="4356"/>
<source>Un-ignore update</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4357"/>
+ <location filename="mainwindow.cpp" line="4360"/>
<source>Ignore update</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4362"/>
- <location filename="mainwindow.cpp" line="5630"/>
+ <location filename="mainwindow.cpp" line="4365"/>
+ <location filename="mainwindow.cpp" line="5647"/>
<source>Enable selected</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4363"/>
- <location filename="mainwindow.cpp" line="5631"/>
+ <location filename="mainwindow.cpp" line="4366"/>
+ <location filename="mainwindow.cpp" line="5648"/>
<source>Disable selected</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4369"/>
+ <location filename="mainwindow.cpp" line="4372"/>
<source>Rename Mod...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4370"/>
+ <location filename="mainwindow.cpp" line="4373"/>
<source>Reinstall Mod</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4371"/>
+ <location filename="mainwindow.cpp" line="4374"/>
<source>Remove Mod...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4379"/>
+ <location filename="mainwindow.cpp" line="4382"/>
<source>Un-Endorse</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="735"/>
- <location filename="mainwindow.cpp" line="4382"/>
<location filename="mainwindow.cpp" line="4386"/>
- <source>Endorse</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="mainwindow.cpp" line="4383"/>
<source>Won&apos;t endorse</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4389"/>
+ <location filename="mainwindow.cpp" line="4392"/>
<source>Endorsement state unknown</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4400"/>
+ <location filename="mainwindow.cpp" line="4403"/>
<source>Ignore missing data</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4404"/>
+ <location filename="mainwindow.cpp" line="4407"/>
<source>Mark as converted/working</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4408"/>
+ <location filename="mainwindow.cpp" line="4411"/>
<source>Visit on Nexus</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4410"/>
+ <location filename="mainwindow.cpp" line="4413"/>
<source>Visit web page</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4417"/>
+ <location filename="mainwindow.cpp" line="4420"/>
<source>Information...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4424"/>
- <location filename="mainwindow.cpp" line="5678"/>
+ <location filename="mainwindow.cpp" line="4427"/>
+ <location filename="mainwindow.cpp" line="5695"/>
<source>Exception: </source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4426"/>
- <location filename="mainwindow.cpp" line="5680"/>
+ <location filename="mainwindow.cpp" line="4429"/>
+ <location filename="mainwindow.cpp" line="5697"/>
<source>Unknown exception</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4455"/>
+ <location filename="mainwindow.cpp" line="4458"/>
<source>&lt;All&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4457"/>
+ <location filename="mainwindow.cpp" line="4460"/>
<source>&lt;Multiple&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4492"/>
+ <location filename="mainwindow.cpp" line="4495"/>
<source>%1 more</source>
<translation type="unfinished"></translation>
</message>
<message numerus="yes">
- <location filename="mainwindow.cpp" line="4496"/>
+ <location filename="mainwindow.cpp" line="4499"/>
<source>Are you sure you want to remove the following %n save(s)?&lt;br&gt;&lt;ul&gt;%1&lt;/ul&gt;&lt;br&gt;Removed saves will be sent to the Recycle Bin.</source>
<translation type="unfinished">
<numerusform></numerusform>
@@ -2904,12 +2740,12 @@ You can also use online editors and converters instead.</source>
</translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4541"/>
+ <location filename="mainwindow.cpp" line="4544"/>
<source>Enable Mods...</source>
<translation type="unfinished"></translation>
</message>
<message numerus="yes">
- <location filename="mainwindow.cpp" line="4556"/>
+ <location filename="mainwindow.cpp" line="4559"/>
<source>Delete %n save(s)</source>
<translation type="unfinished">
<numerusform></numerusform>
@@ -2917,22 +2753,22 @@ You can also use online editors and converters instead.</source>
</translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4598"/>
+ <location filename="mainwindow.cpp" line="4601"/>
<source>failed to remove %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4620"/>
+ <location filename="mainwindow.cpp" line="4623"/>
<source>failed to create %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4650"/>
+ <location filename="mainwindow.cpp" line="4653"/>
<source>Restarting MO</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4651"/>
+ <location filename="mainwindow.cpp" line="4654"/>
<source>Changing the managed game directory requires restarting MO.
Any pending downloads will be paused.
@@ -2940,335 +2776,335 @@ Click OK to restart MO now.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4671"/>
+ <location filename="mainwindow.cpp" line="4674"/>
<source>Can&apos;t change download directory while downloads are in progress!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4811"/>
+ <location filename="mainwindow.cpp" line="4813"/>
<source>failed to write to file %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4817"/>
+ <location filename="mainwindow.cpp" line="4819"/>
<source>%1 written</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4858"/>
+ <location filename="mainwindow.cpp" line="4860"/>
<source>Select binary</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4858"/>
+ <location filename="mainwindow.cpp" line="4860"/>
<source>Binary</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4884"/>
+ <location filename="mainwindow.cpp" line="4886"/>
<source>Enter Name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4885"/>
+ <location filename="mainwindow.cpp" line="4887"/>
<source>Please enter a name for the executable</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4899"/>
+ <location filename="mainwindow.cpp" line="4901"/>
<source>Not an executable</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4899"/>
+ <location filename="mainwindow.cpp" line="4901"/>
<source>This is not a recognized executable.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4924"/>
- <location filename="mainwindow.cpp" line="4949"/>
+ <location filename="mainwindow.cpp" line="4926"/>
+ <location filename="mainwindow.cpp" line="4951"/>
<source>Replace file?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4924"/>
+ <location filename="mainwindow.cpp" line="4926"/>
<source>There already is a hidden version of this file. Replace it?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4927"/>
- <location filename="mainwindow.cpp" line="4952"/>
+ <location filename="mainwindow.cpp" line="4929"/>
+ <location filename="mainwindow.cpp" line="4954"/>
<source>File operation failed</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4927"/>
- <location filename="mainwindow.cpp" line="4952"/>
+ <location filename="mainwindow.cpp" line="4929"/>
+ <location filename="mainwindow.cpp" line="4954"/>
<source>Failed to remove &quot;%1&quot;. Maybe you lack the required file permissions?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4949"/>
+ <location filename="mainwindow.cpp" line="4951"/>
<source>There already is a visible version of this file. Replace it?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4993"/>
- <location filename="mainwindow.cpp" line="6292"/>
+ <location filename="mainwindow.cpp" line="4995"/>
+ <location filename="mainwindow.cpp" line="6309"/>
<source>Set Priority</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4993"/>
+ <location filename="mainwindow.cpp" line="4995"/>
<source>Set the priority of the selected plugins</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="5042"/>
+ <location filename="mainwindow.cpp" line="5044"/>
<source>file not found: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="5055"/>
+ <location filename="mainwindow.cpp" line="5057"/>
<source>failed to generate preview for %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="5075"/>
+ <location filename="mainwindow.cpp" line="5077"/>
<source>Sorry, can&apos;t preview anything. This function currently does not support extracting from bsas.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="5109"/>
+ <location filename="mainwindow.cpp" line="5111"/>
<source>Update available</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="5156"/>
+ <location filename="mainwindow.cpp" line="5158"/>
<source>Open/Execute</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="5157"/>
+ <location filename="mainwindow.cpp" line="5159"/>
<source>Add as Executable</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="5161"/>
+ <location filename="mainwindow.cpp" line="5163"/>
<source>Preview</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="5167"/>
+ <location filename="mainwindow.cpp" line="5169"/>
<source>Un-Hide</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="5169"/>
+ <location filename="mainwindow.cpp" line="5171"/>
<source>Hide</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="5175"/>
+ <location filename="mainwindow.cpp" line="5177"/>
<source>Write To File...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="5200"/>
+ <location filename="mainwindow.cpp" line="5202"/>
<source>Do you want to endorse Mod Organizer on %1 now?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="5328"/>
+ <location filename="mainwindow.cpp" line="5345"/>
<source>Thank you!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="5328"/>
+ <location filename="mainwindow.cpp" line="5345"/>
<source>Thank you for your endorsement!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="5363"/>
+ <location filename="mainwindow.cpp" line="5380"/>
<source>Request to Nexus failed: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="5378"/>
- <location filename="mainwindow.cpp" line="5440"/>
+ <location filename="mainwindow.cpp" line="5395"/>
+ <location filename="mainwindow.cpp" line="5457"/>
<source>failed to read %1: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="5390"/>
- <location filename="mainwindow.cpp" line="5868"/>
+ <location filename="mainwindow.cpp" line="5407"/>
+ <location filename="mainwindow.cpp" line="5885"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="5390"/>
+ <location filename="mainwindow.cpp" line="5407"/>
<source>failed to extract %1 (errorcode %2)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="5422"/>
+ <location filename="mainwindow.cpp" line="5439"/>
<source>Extract BSA</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="5451"/>
+ <location filename="mainwindow.cpp" line="5468"/>
<source>This archive contains invalid hashes. Some files may be broken.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="5497"/>
+ <location filename="mainwindow.cpp" line="5514"/>
<source>Extract...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="5520"/>
+ <location filename="mainwindow.cpp" line="5537"/>
<source>This will restart MO, continue?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="5567"/>
+ <location filename="mainwindow.cpp" line="5584"/>
<source>Edit Categories...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="5568"/>
+ <location filename="mainwindow.cpp" line="5585"/>
<source>Deselect filter</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="5619"/>
+ <location filename="mainwindow.cpp" line="5636"/>
<source>Remove</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="5635"/>
+ <location filename="mainwindow.cpp" line="5652"/>
<source>Enable all</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="5636"/>
+ <location filename="mainwindow.cpp" line="5653"/>
<source>Disable all</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="5657"/>
+ <location filename="mainwindow.cpp" line="5674"/>
<source>Unlock load order</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="5660"/>
+ <location filename="mainwindow.cpp" line="5677"/>
<source>Lock load order</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="5664"/>
+ <location filename="mainwindow.cpp" line="5681"/>
<source>Open Origin in Explorer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="5671"/>
+ <location filename="mainwindow.cpp" line="5688"/>
<source>Open Origin Info...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="5814"/>
+ <location filename="mainwindow.cpp" line="5831"/>
<source>depends on missing &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="5818"/>
+ <location filename="mainwindow.cpp" line="5835"/>
<source>incompatible with &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="5844"/>
+ <location filename="mainwindow.cpp" line="5861"/>
<source>Please wait while LOOT is running</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="5941"/>
+ <location filename="mainwindow.cpp" line="5958"/>
<source>loot failed. Exit code was: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="5963"/>
+ <location filename="mainwindow.cpp" line="5980"/>
<source>failed to start loot</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="5966"/>
+ <location filename="mainwindow.cpp" line="5983"/>
<source>failed to run loot: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="5970"/>
+ <location filename="mainwindow.cpp" line="5987"/>
<source>Errors occured</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="6017"/>
+ <location filename="mainwindow.cpp" line="6034"/>
<source>Backup of load order created</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="6027"/>
+ <location filename="mainwindow.cpp" line="6044"/>
<source>Choose backup to restore</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="6040"/>
+ <location filename="mainwindow.cpp" line="6057"/>
<source>No Backups</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="6040"/>
+ <location filename="mainwindow.cpp" line="6057"/>
<source>There are no backups to restore</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="6061"/>
- <location filename="mainwindow.cpp" line="6083"/>
+ <location filename="mainwindow.cpp" line="6078"/>
+ <location filename="mainwindow.cpp" line="6100"/>
<source>Restore failed</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="6062"/>
- <location filename="mainwindow.cpp" line="6084"/>
+ <location filename="mainwindow.cpp" line="6079"/>
+ <location filename="mainwindow.cpp" line="6101"/>
<source>Failed to restore the backup. Errorcode: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="6073"/>
+ <location filename="mainwindow.cpp" line="6090"/>
<source>Backup of modlist created</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="6179"/>
+ <location filename="mainwindow.cpp" line="6196"/>
<source>A file with the same name has already been downloaded. What would you like to do?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="6181"/>
+ <location filename="mainwindow.cpp" line="6198"/>
<source>Overwrite</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="6182"/>
+ <location filename="mainwindow.cpp" line="6199"/>
<source>Rename new file</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="6183"/>
+ <location filename="mainwindow.cpp" line="6200"/>
<source>Ignore file</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="6292"/>
+ <location filename="mainwindow.cpp" line="6309"/>
<source>Set the priority of the selected mods</source>
<translation type="unfinished"></translation>
</message>
@@ -4123,7 +3959,6 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="modlist.cpp" line="162"/>
<source>Overwritten loose files</source>
- <oldsource>Loose files overwrite another archive</oldsource>
<translation type="unfinished"></translation>
</message>
<message>
@@ -4177,148 +4012,148 @@ p, li { white-space: pre-wrap; }
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="modlist.cpp" line="456"/>
+ <location filename="modlist.cpp" line="451"/>
<source>installed version: &quot;%1&quot;, newest version: &quot;%2&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="modlist.cpp" line="458"/>
+ <location filename="modlist.cpp" line="453"/>
<source>The newest version on Nexus seems to be older than the one you have installed. This could either mean the version you have has been withdrawn (i.e. due to a bug) or the author uses a non-standard versioning scheme and that newest version is actually newer. Either way you may want to &quot;upgrade&quot;.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="modlist.cpp" line="466"/>
+ <location filename="modlist.cpp" line="461"/>
<source>Categories: &lt;br&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="modlist.cpp" line="497"/>
+ <location filename="modlist.cpp" line="492"/>
<source>Invalid name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="modlist.cpp" line="502"/>
+ <location filename="modlist.cpp" line="497"/>
<source>Name is already in use by another mod</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="modlist.cpp" line="1058"/>
+ <location filename="modlist.cpp" line="1053"/>
<source>drag&amp;drop failed: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="modlist.cpp" line="1137"/>
+ <location filename="modlist.cpp" line="1132"/>
<source>Confirm</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="modlist.cpp" line="1138"/>
+ <location filename="modlist.cpp" line="1133"/>
<source>Are you sure you want to remove &quot;%1&quot;?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="modlist.cpp" line="1203"/>
+ <location filename="modlist.cpp" line="1200"/>
<source>Flags</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="modlist.cpp" line="1204"/>
+ <location filename="modlist.cpp" line="1201"/>
<source>Content</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="modlist.cpp" line="1205"/>
+ <location filename="modlist.cpp" line="1202"/>
<source>Mod Name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="modlist.cpp" line="1206"/>
+ <location filename="modlist.cpp" line="1203"/>
<source>Version</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="modlist.cpp" line="1207"/>
+ <location filename="modlist.cpp" line="1204"/>
<source>Priority</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="modlist.cpp" line="1208"/>
+ <location filename="modlist.cpp" line="1205"/>
<source>Category</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="modlist.cpp" line="1209"/>
+ <location filename="modlist.cpp" line="1206"/>
<source>Source Game</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="modlist.cpp" line="1210"/>
+ <location filename="modlist.cpp" line="1207"/>
<source>Nexus ID</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="modlist.cpp" line="1211"/>
+ <location filename="modlist.cpp" line="1208"/>
<source>Installation</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="modlist.cpp" line="1212"/>
+ <location filename="modlist.cpp" line="1209"/>
<source>Notes</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="modlist.cpp" line="1213"/>
- <location filename="modlist.cpp" line="1249"/>
+ <location filename="modlist.cpp" line="1210"/>
+ <location filename="modlist.cpp" line="1246"/>
<source>unknown</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="modlist.cpp" line="1221"/>
+ <location filename="modlist.cpp" line="1218"/>
<source>Name of your mods</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="modlist.cpp" line="1222"/>
+ <location filename="modlist.cpp" line="1219"/>
<source>Version of the mod (if available)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="modlist.cpp" line="1223"/>
+ <location filename="modlist.cpp" line="1220"/>
<source>Installation priority of your mod. The higher, the more &quot;important&quot; it is and thus overwrites files from mods with lower priority.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="modlist.cpp" line="1225"/>
+ <location filename="modlist.cpp" line="1222"/>
<source>Category of the mod.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="modlist.cpp" line="1226"/>
+ <location filename="modlist.cpp" line="1223"/>
<source>The source game which was the origin of this mod.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="modlist.cpp" line="1227"/>
+ <location filename="modlist.cpp" line="1224"/>
<source>Id of the mod as used on Nexus.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="modlist.cpp" line="1228"/>
+ <location filename="modlist.cpp" line="1225"/>
<source>Emblemes to highlight things that might require attention.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="modlist.cpp" line="1229"/>
+ <location filename="modlist.cpp" line="1226"/>
<source>Depicts the content of the mod:&lt;br&gt;&lt;table cellspacing=7&gt;&lt;tr&gt;&lt;td&gt;&lt;img src=&quot;:/MO/gui/content/plugin&quot; width=32/&gt;&lt;/td&gt;&lt;td&gt;Game plugins (esp/esm/esl)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;img src=&quot;:/MO/gui/content/interface&quot; width=32/&gt;&lt;/td&gt;&lt;td&gt;Interface&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;img src=&quot;:/MO/gui/content/mesh&quot; width=32/&gt;&lt;/td&gt;&lt;td&gt;Meshes&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;img src=&quot;:/MO/gui/content/bsa&quot; width=32/&gt;&lt;/td&gt;&lt;td&gt;BSA&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;img src=&quot;:/MO/gui/content/texture&quot; width=32/&gt;&lt;/td&gt;&lt;td&gt;Textures&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;img src=&quot;:/MO/gui/content/sound&quot; width=32/&gt;&lt;/td&gt;&lt;td&gt;Sounds&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;img src=&quot;:/MO/gui/content/music&quot; width=32/&gt;&lt;/td&gt;&lt;td&gt;Music&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;img src=&quot;:/MO/gui/content/string&quot; width=32/&gt;&lt;/td&gt;&lt;td&gt;Strings&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;img src=&quot;:/MO/gui/content/script&quot; width=32/&gt;&lt;/td&gt;&lt;td&gt;Scripts (Papyrus)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;img src=&quot;:/MO/gui/content/skse&quot; width=32/&gt;&lt;/td&gt;&lt;td&gt;Script Extender plugins&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;img src=&quot;:/MO/gui/content/skyproc&quot; width=32/&gt;&lt;/td&gt;&lt;td&gt;SkyProc Patcher&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;img src=&quot;:/MO/gui/content/menu&quot; width=32/&gt;&lt;/td&gt;&lt;td&gt;Mod Configuration Menu&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;img src=&quot;:/MO/gui/content/inifile&quot; width=32/&gt;&lt;/td&gt;&lt;td&gt;INI files&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;img src=&quot;:/MO/gui/content/modgroup&quot; width=32/&gt;&lt;/td&gt;&lt;td&gt;ModGroup files&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="modlist.cpp" line="1247"/>
+ <location filename="modlist.cpp" line="1244"/>
<source>Time this mod was installed</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="modlist.cpp" line="1248"/>
+ <location filename="modlist.cpp" line="1245"/>
<source>User notes about the mod</source>
<translation type="unfinished"></translation>
</message>
@@ -4972,13 +4807,11 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="profile.cpp" line="753"/>
<source>Delete profile-specific save games?</source>
- <oldsource>Delete savegames?</oldsource>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="profile.cpp" line="754"/>
<source>Do you want to delete the profile-specific save games? (If you select &quot;No&quot;, the save games will show up again if you re-enable profile-specific save games)</source>
- <oldsource>Do you want to delete local savegames? (If you select &quot;No&quot;, the save games will show up again if you re-enable local savegames)</oldsource>
<translation type="unfinished"></translation>
</message>
<message>
@@ -5056,19 +4889,16 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="profilesdialog.ui" line="38"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;If checked, save games are stored locally to this profile and will not appear when starting with a different profile.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
- <oldsource>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;If checked, savegames are stored locally to this profile and will not appear when starting with a different profile.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</oldsource>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="profilesdialog.ui" line="41"/>
<source>If checked, save games are local to this profile and will not appear when starting with a different profile.</source>
- <oldsource>If checked, savegames are local to this profile and will not appear when starting with a different profile.</oldsource>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="profilesdialog.ui" line="44"/>
<source>Use profile-specific Save Games</source>
- <oldsource>Use profile-specific Savegames</oldsource>
<translation type="unfinished"></translation>
</message>
<message>
@@ -5641,7 +5471,7 @@ If the folder was still in use, restart MO and try again.</source>
</message>
<message>
<location filename="main.cpp" line="682"/>
- <location filename="settings.cpp" line="1109"/>
+ <location filename="settings.cpp" line="1122"/>
<source>Mod Organizer</source>
<translation type="unfinished"></translation>
</message>
@@ -5656,18 +5486,18 @@ If the folder was still in use, restart MO and try again.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="931"/>
+ <location filename="mainwindow.cpp" line="933"/>
<source>Please use &quot;Help&quot; from the toolbar to get usage instructions to all elements</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="1415"/>
- <location filename="mainwindow.cpp" line="4768"/>
+ <location filename="mainwindow.cpp" line="1417"/>
+ <location filename="mainwindow.cpp" line="4771"/>
<source>&lt;Manage...&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="1427"/>
+ <location filename="mainwindow.cpp" line="1429"/>
<source>failed to parse profile %1: %2</source>
<translation type="unfinished"></translation>
</message>
@@ -5718,12 +5548,12 @@ If the folder was still in use, restart MO and try again.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settings.cpp" line="1116"/>
+ <location filename="settings.cpp" line="1129"/>
<source>Script Extender</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settings.cpp" line="1123"/>
+ <location filename="settings.cpp" line="1136"/>
<source>Proxy DLL</source>
<translation type="unfinished"></translation>
</message>
@@ -5939,28 +5769,28 @@ Select Show Details option to see the full change-log.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settings.cpp" line="505"/>
- <location filename="settings.cpp" line="524"/>
+ <location filename="settings.cpp" line="518"/>
+ <location filename="settings.cpp" line="537"/>
<source>attempt to store setting for unknown plugin &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settings.cpp" line="887"/>
+ <location filename="settings.cpp" line="900"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settings.cpp" line="888"/>
+ <location filename="settings.cpp" line="901"/>
<source>Failed to create &quot;%1&quot;, you may not have the necessary permission. path remains unchanged.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settings.cpp" line="1162"/>
+ <location filename="settings.cpp" line="1175"/>
<source>Restart Mod Organizer?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settings.cpp" line="1163"/>
+ <location filename="settings.cpp" line="1176"/>
<source>In order to reset the window geometries, MO must be restarted.
Restart it now?</source>
<translation type="unfinished"></translation>
@@ -6043,173 +5873,183 @@ If you use pre-releases, never contact me directly by e-mail or via private mess
</message>
<message>
<location filename="settingsdialog.ui" line="105"/>
- <source>Reset Colors</source>
+ <location filename="settingsdialog.ui" line="108"/>
+ <source>When this is enabled, the color defined for a separator will be shown on the mod list scrollbar at the location of the separator. This can be useful for quick navigation between separator sections or to a specific separator section.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="112"/>
- <source>Is overwritten (loose files)</source>
+ <location filename="settingsdialog.ui" line="111"/>
+ <source>Show mod list separator colors on the scrollbar</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="119"/>
- <source>Mod Contains selected Plugin</source>
+ <location filename="settingsdialog.ui" line="121"/>
+ <source>Plugin is Contained in selected Mod</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="126"/>
- <source>Plugin is Contained in selected Mod</source>
+ <location filename="settingsdialog.ui" line="128"/>
+ <source>Is overwritten (loose files)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="133"/>
+ <location filename="settingsdialog.ui" line="135"/>
<source>Is overwriting (loose files)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="140"/>
- <location filename="settingsdialog.ui" line="143"/>
- <source>When this is enabled, the color defined for a separator will be shown on the mod list scrollbar at the location of the separator. This can be useful for quick navigation between separator sections or to a specific separator section.</source>
+ <location filename="settingsdialog.ui" line="142"/>
+ <source>Reset Colors</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="146"/>
- <source>Show mod list separator colors on the scrollbar</source>
+ <location filename="settingsdialog.ui" line="149"/>
+ <source>Mod Contains selected Plugin</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="settingsdialog.ui" line="156"/>
+ <source>Is overwritten (archive files)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="159"/>
- <location filename="settingsdialog.ui" line="162"/>
+ <location filename="settingsdialog.ui" line="163"/>
+ <source>Is overwriting (archive files)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="settingsdialog.ui" line="173"/>
+ <location filename="settingsdialog.ui" line="176"/>
<source>Modify the categories available to arrange your mods.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="165"/>
+ <location filename="settingsdialog.ui" line="179"/>
<source>Configure Mod Categories</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="178"/>
+ <location filename="settingsdialog.ui" line="192"/>
<source>Reset stored information from dialogs.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="181"/>
+ <location filename="settingsdialog.ui" line="195"/>
<source>This will make all dialogs show up again where you checked the &quot;Remember selection&quot;-box.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="184"/>
+ <location filename="settingsdialog.ui" line="198"/>
<source>Reset Dialogs</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="191"/>
+ <location filename="settingsdialog.ui" line="205"/>
<source>If checked, the download interface will be more compact.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="194"/>
+ <location filename="settingsdialog.ui" line="208"/>
<source>Compact Download Interface</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="214"/>
+ <location filename="settingsdialog.ui" line="228"/>
<source>If checked, the download list will display meta information instead of file names.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="217"/>
+ <location filename="settingsdialog.ui" line="231"/>
<source>Download Meta Information</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="228"/>
+ <location filename="settingsdialog.ui" line="242"/>
<source>Paths</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="236"/>
- <location filename="settingsdialog.ui" line="253"/>
- <location filename="settingsdialog.ui" line="350"/>
- <location filename="settingsdialog.ui" line="408"/>
+ <location filename="settingsdialog.ui" line="250"/>
+ <location filename="settingsdialog.ui" line="267"/>
+ <location filename="settingsdialog.ui" line="364"/>
+ <location filename="settingsdialog.ui" line="422"/>
<source>...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="263"/>
+ <location filename="settingsdialog.ui" line="277"/>
<source>Caches</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="270"/>
+ <location filename="settingsdialog.ui" line="284"/>
<source>Overwrite</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="277"/>
- <location filename="settingsdialog.ui" line="280"/>
+ <location filename="settingsdialog.ui" line="291"/>
+ <location filename="settingsdialog.ui" line="294"/>
<source>Directory where downloads are stored.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="297"/>
+ <location filename="settingsdialog.ui" line="311"/>
<source>Downloads</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="317"/>
+ <location filename="settingsdialog.ui" line="331"/>
<source>Profiles</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="340"/>
+ <location filename="settingsdialog.ui" line="354"/>
<source>Directory where mods are stored.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="343"/>
+ <location filename="settingsdialog.ui" line="357"/>
<source>Directory where mods are stored. Please note that changing this will break all associations of profiles with mods that don&apos;t exist in the new location (with the same name).</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="367"/>
+ <location filename="settingsdialog.ui" line="381"/>
<source>Mods</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="387"/>
+ <location filename="settingsdialog.ui" line="401"/>
<source>Managed Game</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="394"/>
+ <location filename="settingsdialog.ui" line="408"/>
<source>Base Directory</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="401"/>
+ <location filename="settingsdialog.ui" line="415"/>
<source>Use %BASE_DIR% to refer to the Base Directory.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="430"/>
+ <location filename="settingsdialog.ui" line="444"/>
<source>Important: All directories have to be writeable!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="438"/>
- <location filename="settingsdialog.ui" line="454"/>
+ <location filename="settingsdialog.ui" line="452"/>
+ <location filename="settingsdialog.ui" line="468"/>
<source>Nexus</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="444"/>
+ <location filename="settingsdialog.ui" line="458"/>
<source>Allows automatic log-in when the Nexus-Page for the game is clicked.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="447"/>
+ <location filename="settingsdialog.ui" line="461"/>
<source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
@@ -6218,149 +6058,149 @@ p, li { white-space: pre-wrap; }
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="463"/>
+ <location filename="settingsdialog.ui" line="477"/>
<source>If checked and if correct credentials are entered below, log-in to Nexus (for browsing and downloading) is automatic.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="466"/>
+ <location filename="settingsdialog.ui" line="480"/>
<source>Automatically Log-In to Nexus</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="475"/>
- <location filename="settingsdialog.ui" line="675"/>
+ <location filename="settingsdialog.ui" line="489"/>
+ <location filename="settingsdialog.ui" line="689"/>
<source>Username</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="489"/>
- <location filename="settingsdialog.ui" line="685"/>
+ <location filename="settingsdialog.ui" line="503"/>
+ <location filename="settingsdialog.ui" line="699"/>
<source>Password</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="510"/>
+ <location filename="settingsdialog.ui" line="524"/>
<source>Remove cache and cookies. Forces a new login.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="513"/>
+ <location filename="settingsdialog.ui" line="527"/>
<source>Clear Cache</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="544"/>
+ <location filename="settingsdialog.ui" line="558"/>
<source>Disable automatic internet features</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="547"/>
+ <location filename="settingsdialog.ui" line="561"/>
<source>Disable automatic internet features. This does not affect features that are explicitly invoked by the user (like checking mods for updates, endorsing, opening the web browser)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="550"/>
+ <location filename="settingsdialog.ui" line="564"/>
<source>Offline Mode</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="557"/>
+ <location filename="settingsdialog.ui" line="571"/>
<source>Use a proxy for network connections.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="560"/>
+ <location filename="settingsdialog.ui" line="574"/>
<source>Use a proxy for network connections. This uses the system-wide settings which can be configured in Internet Explorer. Please note that MO will start up a few seconds slower on some systems when using a proxy.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="563"/>
+ <location filename="settingsdialog.ui" line="577"/>
<source>Use HTTP Proxy (Uses System Settings)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="570"/>
+ <location filename="settingsdialog.ui" line="584"/>
<source>Endorsement Integration</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="584"/>
+ <location filename="settingsdialog.ui" line="598"/>
<source>Associate with &quot;Download with manager&quot; links</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="613"/>
+ <location filename="settingsdialog.ui" line="627"/>
<source>Known Servers (updated on download)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="634"/>
+ <location filename="settingsdialog.ui" line="648"/>
<source>Preferred Servers (Drag &amp; Drop)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="669"/>
+ <location filename="settingsdialog.ui" line="683"/>
<source>Steam</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="715"/>
+ <location filename="settingsdialog.ui" line="729"/>
<source>If you save your steam user ID and password here, they will be used when logging into steam. Note, however, your password will be stored unencrypted, so make sure your computer is secure.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="742"/>
+ <location filename="settingsdialog.ui" line="756"/>
<source>Plugins</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="767"/>
+ <location filename="settingsdialog.ui" line="781"/>
<source>Author:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="781"/>
+ <location filename="settingsdialog.ui" line="795"/>
<source>Version:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="795"/>
+ <location filename="settingsdialog.ui" line="809"/>
<source>Description:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="833"/>
+ <location filename="settingsdialog.ui" line="847"/>
<source>Key</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="838"/>
+ <location filename="settingsdialog.ui" line="852"/>
<source>Value</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="850"/>
+ <location filename="settingsdialog.ui" line="864"/>
<source>Blacklisted Plugins (use &lt;del&gt; to remove):</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="861"/>
+ <location filename="settingsdialog.ui" line="875"/>
<source>Workarounds</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="869"/>
+ <location filename="settingsdialog.ui" line="883"/>
<source>Steam App ID</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="889"/>
+ <location filename="settingsdialog.ui" line="903"/>
<source>The Steam AppID for your game</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="892"/>
+ <location filename="settingsdialog.ui" line="906"/>
<source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
@@ -6376,17 +6216,17 @@ p, li { white-space: pre-wrap; }
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="923"/>
+ <location filename="settingsdialog.ui" line="937"/>
<source>Load Mechanism</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="943"/>
+ <location filename="settingsdialog.ui" line="957"/>
<source>Select loading mechanism. See help for details.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="946"/>
+ <location filename="settingsdialog.ui" line="960"/>
<source>Mod Organizer needs a dll to be injected into the game so all mods are visible to it.
There are several means to do this:
*Mod Organizer* (default) In this mode the Mod Organizer itself injects the dll. The disadvantage is that you always have to start the game through MO or a link created by it.
@@ -6397,17 +6237,17 @@ If you use the Steam version of Oblivion the default will NOT work. In this case
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="963"/>
+ <location filename="settingsdialog.ui" line="977"/>
<source>NMM Version</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="983"/>
+ <location filename="settingsdialog.ui" line="997"/>
<source>The Version of Nexus Mod Manager to impersonate.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="986"/>
+ <location filename="settingsdialog.ui" line="1000"/>
<source>Mod Organizer uses an API provided by the Nexus to provide features like checking for updates and downloading files. Unfortunately this API has not been made available officially to third party tools like MO so we have to impersonate the Nexus Mod Manager to be allowed in.
On top of this Nexus has used the client identification to lock out outdated versions of NMM to force users to update. This means that MO also needs to impersonate the new version of NMM even if MO doesn&apos;t need an update. Therefore you can configure the version to identify as here.
Please note that MO does identify itself as MO to the webserver, it&apos;s not lying about what it is. It is merely adding a &quot;compatible&quot; NMM version to the user agent.
@@ -6416,28 +6256,28 @@ tl;dr-version: If Nexus-features don&apos;t work, insert the current version num
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="1010"/>
+ <location filename="settingsdialog.ui" line="1024"/>
<source>If checked, files (i.e. esps, esms and bsas) belonging to the core game can not be disabled in the UI. (default: on)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="1013"/>
+ <location filename="settingsdialog.ui" line="1027"/>
<source>If checked, files (i.e. esps, esms and bsas) belonging to the core game can not be disabled in the UI. (default: on)
Uncheck this if you want to use Mod Organizer with total conversions (like Nehrim) but be aware that the game will crash if required files are not enabled.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="1017"/>
+ <location filename="settingsdialog.ui" line="1031"/>
<source>Force-enable game files</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="1027"/>
+ <location filename="settingsdialog.ui" line="1041"/>
<source>Disable this to no longer display mods installed outside MO in the mod list (left pane). Assets from those mods will then be treated as having lowest mod priority together with the original game content.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="1030"/>
+ <location filename="settingsdialog.ui" line="1044"/>
<source>By default Mod Organizer will display esp+bsa bundles installed with foreign tools as mods (left pane). This allows you to control their priority in relation to other mods. This is particularly useful if you also use Steam Workshop to install mods.
However, if you installed loose file mods outside MO which conflict with BSAs also installed outside MO those conflicts can&apos;t be resolved correctly.
@@ -6445,51 +6285,51 @@ If you disable this feature, MO will only display official DLCs this way. Please
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="1036"/>
+ <location filename="settingsdialog.ui" line="1050"/>
<source>Display mods installed outside MO</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="1049"/>
+ <location filename="settingsdialog.ui" line="1063"/>
<source>Enforces that inactive ESPs and ESMs are never loaded.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="1052"/>
+ <location filename="settingsdialog.ui" line="1066"/>
<source>It seems that the Games occasionally load ESP or ESM files even if they haven&apos;t been activated as plugins.
I don&apos;t yet know what the circumstances are, but user reports imply it is in some cases unwanted. If this is checked, ESPs and ESMs not checked in the List are invisible to the game and can not be loaded.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="1056"/>
+ <location filename="settingsdialog.ui" line="1070"/>
<source>Hide inactive ESPs/ESMs</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="1063"/>
- <location filename="settingsdialog.ui" line="1066"/>
+ <location filename="settingsdialog.ui" line="1077"/>
+ <location filename="settingsdialog.ui" line="1080"/>
<source>Disable this to prevent the GUI from being locked when running an executable. This may result in abnormal behavior.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="1069"/>
+ <location filename="settingsdialog.ui" line="1083"/>
<source>Lock GUI when running executable</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="1081"/>
- <location filename="settingsdialog.ui" line="1085"/>
+ <location filename="settingsdialog.ui" line="1095"/>
+ <location filename="settingsdialog.ui" line="1099"/>
<source>For Skyrim, this can be used instead of Archive Invalidation. It should make AI redundant for all Profiles.
For the other games this is not a sufficient replacement for AI!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="1089"/>
+ <location filename="settingsdialog.ui" line="1103"/>
<source>Back-date BSAs</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="1100"/>
+ <location filename="settingsdialog.ui" line="1114"/>
<source>Add executables to the blacklist to prevent them from
accessing the virtual file system. This is useful to prevent
unintended programs from being hooked. Hooking unintended
@@ -6498,22 +6338,22 @@ programs you are intentionally running.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="1107"/>
+ <location filename="settingsdialog.ui" line="1121"/>
<source>Add executables to the blacklist to prevent them from accessing the virtual file system. This is useful to prevent unintended programs from being hooked. Hooking unintended programs may affect the execution of these programs or the programs you are intentionally running.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="1110"/>
+ <location filename="settingsdialog.ui" line="1124"/>
<source>Configure Executables Blacklist</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="1120"/>
+ <location filename="settingsdialog.ui" line="1134"/>
<source>Enable parsing of Archives Archives, has effects on perfromance.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="1123"/>
+ <location filename="settingsdialog.ui" line="1137"/>
<source>
By default Mod Organizer will parse Archive files to calculate conflicts between themselves and loose files, this process has a noticeable cost in performance.
This feature should not be confused from the one offered by ModOrganizer 1, ModOrganizer 2 will only show conflicts with archives NOT load them into the game or program.
@@ -6523,43 +6363,43 @@ programs you are intentionally running.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="1131"/>
+ <location filename="settingsdialog.ui" line="1145"/>
<source>Enable parsing of Archives</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="1141"/>
- <location filename="settingsdialog.ui" line="1144"/>
+ <location filename="settingsdialog.ui" line="1155"/>
+ <location filename="settingsdialog.ui" line="1158"/>
<source>Resets the window geometries for all windows. This can be useful if a window becomes too small or too large, if a column becomes too thin or too wide, and in similar situations.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="1147"/>
+ <location filename="settingsdialog.ui" line="1161"/>
<source>Reset Window Geometries</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="1170"/>
+ <location filename="settingsdialog.ui" line="1184"/>
<source>These are workarounds for problems with Mod Organizer. Please make sure you read the help text before changing anything here.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="1181"/>
+ <location filename="settingsdialog.ui" line="1195"/>
<source>Diagnostics</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="1189"/>
+ <location filename="settingsdialog.ui" line="1203"/>
<source>Max Dumps To Keep</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="1209"/>
+ <location filename="settingsdialog.ui" line="1223"/>
<source>Maximum number of crash dumps to keep on disk. Use 0 for unlimited.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="1212"/>
+ <location filename="settingsdialog.ui" line="1226"/>
<source>
Maximum number of crash dumps to keep on disk. Use 0 for unlimited.
Set &quot;Crash Dumps&quot; above to None to disable crash dump collection.
@@ -6567,12 +6407,12 @@ programs you are intentionally running.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="1224"/>
+ <location filename="settingsdialog.ui" line="1238"/>
<source>Hint: right click link and copy link location</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="1227"/>
+ <location filename="settingsdialog.ui" line="1241"/>
<source>
Logs and crash dumps are stored under your current instance in the &lt;a href=&quot;LOGS_FULL_PATH&quot;&gt;LOGS_DIR&lt;/a&gt;
and &lt;a href=&quot;DUMPS_FULL_PATH&quot;&gt;DUMPS_DIR&lt;/a&gt; folders.
@@ -6582,17 +6422,17 @@ programs you are intentionally running.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="1244"/>
+ <location filename="settingsdialog.ui" line="1258"/>
<source>Crash Dumps</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="1251"/>
+ <location filename="settingsdialog.ui" line="1265"/>
<source>Decides which type of crash dumps are collected when injected processes crash.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="1254"/>
+ <location filename="settingsdialog.ui" line="1268"/>
<source>
Decides which type of crash dumps are collected when injected processes crash.
&quot;None&quot; Disables the generation of crash dumps by MO.
@@ -6603,37 +6443,37 @@ programs you are intentionally running.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="1264"/>
+ <location filename="settingsdialog.ui" line="1278"/>
<source>None</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="1269"/>
+ <location filename="settingsdialog.ui" line="1283"/>
<source>Mini (recommended)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="1274"/>
+ <location filename="settingsdialog.ui" line="1288"/>
<source>Data</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="1279"/>
+ <location filename="settingsdialog.ui" line="1293"/>
<source>Full</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="1307"/>
+ <location filename="settingsdialog.ui" line="1321"/>
<source>Log Level</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="1314"/>
+ <location filename="settingsdialog.ui" line="1328"/>
<source>Decides the amount of data printed to &quot;ModOrganizer.log&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="1317"/>
+ <location filename="settingsdialog.ui" line="1331"/>
<source>
Decides the amount of data printed to &quot;ModOrganizer.log&quot;.
&quot;Debug&quot; produces very useful information for finding problems. There is usually no noteworthy performance impact but the file may become rather large. If this is a problem you may prefer the &quot;Info&quot; level for regluar use. On the &quot;Error&quot; level the log file usually remains empty.
@@ -6641,42 +6481,42 @@ programs you are intentionally running.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="1324"/>
+ <location filename="settingsdialog.ui" line="1338"/>
<source>Debug</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="1329"/>
+ <location filename="settingsdialog.ui" line="1343"/>
<source>Info (recommended)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="1334"/>
+ <location filename="settingsdialog.ui" line="1348"/>
<source>Warning</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="1339"/>
+ <location filename="settingsdialog.ui" line="1353"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.cpp" line="83"/>
+ <location filename="settingsdialog.cpp" line="99"/>
<source>Confirm</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.cpp" line="84"/>
+ <location filename="settingsdialog.cpp" line="100"/>
<source>Changing the mod directory affects all your profiles! Mods not present (or named differently) in the new location will be disabled in all profiles. There is no way to undo this unless you backed up your profiles manually. Proceed?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.cpp" line="128"/>
+ <location filename="settingsdialog.cpp" line="144"/>
<source>Executables Blacklist</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.cpp" line="129"/>
+ <location filename="settingsdialog.cpp" line="145"/>
<source>Enter one executable per line to be blacklisted from the virtual file system.
Mods and other virtualized files will not be visible to these executables and
any executables launched by them.
@@ -6687,47 +6527,47 @@ Example:
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.cpp" line="162"/>
+ <location filename="settingsdialog.cpp" line="178"/>
<source>Select base directory</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.cpp" line="173"/>
+ <location filename="settingsdialog.cpp" line="189"/>
<source>Select download directory</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.cpp" line="184"/>
+ <location filename="settingsdialog.cpp" line="200"/>
<source>Select mod directory</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.cpp" line="195"/>
+ <location filename="settingsdialog.cpp" line="211"/>
<source>Select cache directory</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.cpp" line="206"/>
+ <location filename="settingsdialog.cpp" line="222"/>
<source>Select profiles directory</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.cpp" line="217"/>
+ <location filename="settingsdialog.cpp" line="233"/>
<source>Select overwrite directory</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.cpp" line="227"/>
+ <location filename="settingsdialog.cpp" line="243"/>
<source>Select game executable</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.cpp" line="332"/>
+ <location filename="settingsdialog.cpp" line="322"/>
<source>Confirm?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.cpp" line="333"/>
+ <location filename="settingsdialog.cpp" line="323"/>
<source>This will make all dialogs show up again where you checked the &quot;Remember selection&quot;-box. Continue?</source>
<translation type="unfinished"></translation>
</message>
@@ -6840,7 +6680,6 @@ Example:
<message>
<location filename="transfersavesdialog.ui" line="14"/>
<source>Transfer Save Games</source>
- <oldsource>Transfer Savegames</oldsource>
<translation type="unfinished"></translation>
</message>
<message>
diff --git a/src/profile.h b/src/profile.h
index a9d68062..95a5c59d 100644
--- a/src/profile.h
+++ b/src/profile.h
@@ -234,6 +234,13 @@ public:
std::vector<std::tuple<QString, QString, int> > getActiveMods();
/**
+ * @brief retrieve a mod of the indexes ordered by priority
+ *
+ * @return map of indexes by priority
+ **/
+ std::map<int, unsigned int> getAllIndexesByPriority() { return m_ModIndexByPriority; }
+
+ /**
* retrieve the number of mods for which this object has status information.
* This is usually the same as ModInfo::getNumMods() except between
* calls to ModInfo::updateFromDisc() and the Profile::refreshModStatus()
diff --git a/src/stylesheets/Night Eyes.qss b/src/stylesheets/Night Eyes.qss
index e9bb6c44..6c6b0629 100644
--- a/src/stylesheets/Night Eyes.qss
+++ b/src/stylesheets/Night Eyes.qss
@@ -648,3 +648,27 @@ DownloadListWidgetCompact QLabel
background: #141414;
padding: 4px;
}
+
+DownloadListWidget[downloadView=standard]::item {
+ padding: 16px;
+}
+
+DownloadListWidget[downloadView=compact]::item {
+ padding: 4px;
+}
+
+DownloadListWidget::item:hover {
+ padding: 0px;
+}
+
+DownloadListWidget::item:selected {
+ padding: 0px;
+}
+
+QProgressBar
+{
+ border: 2px solid grey;
+ border-radius: 5px;
+ text-align: center;
+ margin: 0px;
+} \ No newline at end of file
diff --git a/src/stylesheets/Paper Automata.qss b/src/stylesheets/Paper Automata.qss
index 748e589e..572d3313 100644
--- a/src/stylesheets/Paper Automata.qss
+++ b/src/stylesheets/Paper Automata.qss
@@ -893,29 +893,28 @@ DownloadListWidget {
background: transparent;
}
-DownloadListWidget QFrame,
-DownloadListWidgetCompact,
-DownloadListWidgetCompact QLabel {
- /* an entry on the Downloads tab */
+DownloadListWidget::item:!selected {
background: #DAD4BB;
}
-DownloadListWidget QFrame#frame {
- /* outer box of an entry on the Downloads tab */
- border: 2px solid #DAD4BB;
+DownloadListWidget[downloadView=standard]::item {
+ padding: 15px;
+ margin-bottom: 2px;
}
-DownloadListWidget QLabel#installLabel {
- /* installed/done label */
- color: none;
+QProgressBar[downloadView=standard] {
+ margin: 4px 0px 6px 0px;
}
/* Compact Downloads View */
-DownloadListWidgetCompact,
-DownloadListWidgetCompact QLabel {
- /* an entry on the Downloads tab */
- background: #DAD4BB;
+DownloadListWidget[downloadView=compact]::item {
+ padding: 4px 4px 6px 4px;
+ margin-bottom: 2px;
+}
+
+QProgressBar[downloadView=compact] {
+ margin: 1px 0px 3px 0px;
}
/* Categories Filter */
diff --git a/src/stylesheets/Paper Dark by 6788.qss b/src/stylesheets/Paper Dark by 6788.qss
index 9f4db66f..ae6ea77b 100644
--- a/src/stylesheets/Paper Dark by 6788.qss
+++ b/src/stylesheets/Paper Dark by 6788.qss
@@ -919,29 +919,30 @@ QSlider::handle:hover {
background: #242424;
}
-DownloadListWidget QFrame,
-DownloadListWidgetCompact,
-DownloadListWidgetCompact QLabel {
- /* an entry on the Downloads tab */
- background: #141414;
+DownloadListWidget[downloadView=standard]::item {
+ padding: 15px;
+ border-bottom: 2px solid #666666;
}
-DownloadListWidget#frame {
- /* outer box of an entry on the Downloads tab */
- border: none;
-}
-
-#installLabel {
- /* installed/done label */
- color: none;
+QProgressBar[downloadView=standard] {
+ background: transparent;
+ border: 2px solid #666666;
+ border-radius: 8px;
+ margin: 4px 0px 6px 0px;
}
/* Compact Downloads View */
-DownloadListWidgetCompact,
-DownloadListWidgetCompact QLabel {
- /* an entry on the Downloads tab */
- background: #141414;
+DownloadListWidget[downloadView=compact]::item {
+ padding: 3px;
+ border-bottom: 2px solid #666666;
+}
+
+QProgressBar[downloadView=compact] {
+ background: transparent;
+ border: 2px solid gray;
+ border-radius: 8px;
+ margin: 1px 0px 3px 0px;
}
/* Categories Filter */
diff --git a/src/stylesheets/Paper Light by 6788.qss b/src/stylesheets/Paper Light by 6788.qss
index 36585291..5e69b79d 100644
--- a/src/stylesheets/Paper Light by 6788.qss
+++ b/src/stylesheets/Paper Light by 6788.qss
@@ -680,10 +680,9 @@ QToolTip {
border-radius: 6px;
}
-/* Progress Bars (Downloads) */
+/* Progress Bars */
QProgressBar {
- /* progress bars when downloading */
background: #FFFFFF;
text-align: center;
border: 0px;
@@ -929,29 +928,30 @@ QSlider::handle:hover {
background: #EBEBEB;
}
-DownloadListWidget QFrame,
-DownloadListWidgetCompact,
-DownloadListWidgetCompact QLabel {
- /* an entry on the Downloads tab */
- background: #FFFFFF;
+DownloadListWidget[downloadView=standard]::item {
+ padding: 15px;
+ border-bottom: 2px solid #BBBBBB;
}
-DownloadListWidget #frame {
- /* outer box of an entry on the Downloads tab */
- border: none;
-}
-
-#installLabel {
- /* installed/done label */
- color: none;
+QProgressBar[downloadView=standard] {
+ background: transparent;
+ border: 2px solid gray;
+ border-radius: 8px;
+ margin: 4px 0px 6px 0px;
}
/* Compact Downloads View */
-DownloadListWidgetCompact,
-DownloadListWidgetCompact QLabel {
- /* an entry on the Downloads tab */
- background: #FFFFFF;
+DownloadListWidget[downloadView=compact]::item {
+ padding: 3px;
+ border-bottom: 2px solid #BBBBBB;
+}
+
+QProgressBar[downloadView=compact] {
+ background: transparent;
+ border: 2px solid gray;
+ border-radius: 8px;
+ margin: 1px 0px 3px 0px;
}
/* Categories Filter */
diff --git a/src/stylesheets/dark.qss b/src/stylesheets/dark.qss
index d5a7aedf..5bbb0f0c 100644
--- a/src/stylesheets/dark.qss
+++ b/src/stylesheets/dark.qss
@@ -257,7 +257,6 @@ QProgressBar
QProgressBar::chunk
{
background-color: #427683;
- width: 20px;
}
QTabBar::tab
@@ -366,4 +365,12 @@ QTreeView::branch:open:has-children:has-siblings
DownloadListWidget QLabel#installLabel {
color: none;
+}
+
+DownloadListWidget[downloadView=standard]::item {
+ padding: 16px;
+}
+
+DownloadListWidget[downloadView=compact]::item {
+ padding: 4px;
} \ No newline at end of file
diff --git a/src/stylesheets/dracula.qss b/src/stylesheets/dracula.qss
index 99cf918d..385fca16 100644
--- a/src/stylesheets/dracula.qss
+++ b/src/stylesheets/dracula.qss
@@ -394,4 +394,32 @@ SaveGameInfoWidget {
DownloadListWidget QLabel#installLabel {
color: none;
-} \ No newline at end of file
+}
+
+DownloadListWidget[downloadView=standard]::item {
+ padding: 16px;
+}
+
+DownloadListWidget[downloadView=compact]::item {
+ padding: 4px;
+}
+
+DownloadListWidget::item:hover {
+ padding: 0px;
+}
+
+DownloadListWidget::item:selected {
+ padding: 0px;
+}
+
+QProgressBar
+{
+ border: 2px solid grey;
+ border-radius: 5px;
+ text-align: center;
+}
+
+QProgressBar::chunk
+{
+ background-color: #427683;
+}
diff --git a/src/stylesheets/skyrim.qss b/src/stylesheets/skyrim.qss
index e4d87499..d36eac57 100644
--- a/src/stylesheets/skyrim.qss
+++ b/src/stylesheets/skyrim.qss
@@ -534,7 +534,7 @@ QProgressBar {
background-color: transparent;
color: transparent;
height: 14px;
- margin: 0 10px;
+ margin: 0 0px;
border-width: 4px 21px;
border-style: solid;
border-color: transparent;
@@ -542,6 +542,14 @@ QProgressBar {
QProgressBar::chunk {
background: url(./skyrim/progress-bar-chunk.png) center center repeat-x qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 #95BED9, stop:0.78781 #6EB9CE); }
+DownloadListWidget[downloadView=standard]::item {
+ padding: 15px;
+}
+
+DownloadListWidget[downloadView=compact]::item {
+ padding: 4px;
+}
+
/* Right Pane and Tab Bars #QTabWidget, #QTabBar */
QTabWidget::pane {
border: none;
diff --git a/src/stylesheets/vs15 Dark-Green.qss b/src/stylesheets/vs15 Dark-Green.qss
index 5427b38a..10f923cb 100644
--- a/src/stylesheets/vs15 Dark-Green.qss
+++ b/src/stylesheets/vs15 Dark-Green.qss
@@ -532,8 +532,8 @@ QHeaderView::up-arrow {
image: url(./vs15/sort-asc.png);
margin-bottom: -37px; }
-QTreeView#downloadView QHeaderView::up-arrow {
- margin-bottom: -32px; }
+DownloadListWidget QHeaderView::up-arrow {
+ margin-bottom: -47px; }
QHeaderView::down-arrow {
image: url(./vs15/sort-desc.png);
@@ -599,11 +599,19 @@ QProgressBar {
text-align: center;
border-style: solid;
border-width: 1px;
- margin: 0 10px; }
+ margin: 0 0px; }
QProgressBar::chunk {
background: #06B025; }
+DownloadListWidget[downloadView=standard]::item {
+ padding: 16px;
+}
+
+DownloadListWidget[downloadView=compact]::item {
+ padding: 4px;
+}
+
/* Right Pane and Tab Bars #QTabWidget, #QTabBar */
QTabWidget::pane {
border-color: #3F3F46;
diff --git a/src/stylesheets/vs15 Dark-Orange.qss b/src/stylesheets/vs15 Dark-Orange.qss
index fe65ece0..bbde1f82 100644
--- a/src/stylesheets/vs15 Dark-Orange.qss
+++ b/src/stylesheets/vs15 Dark-Orange.qss
@@ -533,8 +533,8 @@ QHeaderView::up-arrow {
image: url(./vs15/sort-asc.png);
margin-bottom: -37px; }
-QTreeView#downloadView QHeaderView::up-arrow {
- margin-bottom: -32px; }
+DownloadListWidget QHeaderView::up-arrow {
+ margin-bottom: -47px; }
QHeaderView::down-arrow {
image: url(./vs15/sort-desc.png);
@@ -600,11 +600,19 @@ QProgressBar {
text-align: center;
border-style: solid;
border-width: 1px;
- margin: 0 10px; }
+ margin: 0 0px; }
QProgressBar::chunk {
background: #06B025; }
+DownloadListWidget[downloadView=standard]::item {
+ padding: 16px;
+}
+
+DownloadListWidget[downloadView=compact]::item {
+ padding: 4px;
+}
+
/* Right Pane and Tab Bars #QTabWidget, #QTabBar */
QTabWidget::pane {
border-color: #3F3F46;
diff --git a/src/stylesheets/vs15 Dark-Purple.qss b/src/stylesheets/vs15 Dark-Purple.qss
index eb2e8b82..faad7297 100644
--- a/src/stylesheets/vs15 Dark-Purple.qss
+++ b/src/stylesheets/vs15 Dark-Purple.qss
@@ -533,8 +533,8 @@ QHeaderView::up-arrow {
image: url(./vs15/sort-asc.png);
margin-bottom: -37px; }
-QTreeView#downloadView QHeaderView::up-arrow {
- margin-bottom: -32px; }
+DownloadListWidget QHeaderView::up-arrow {
+ margin-bottom: -47px; }
QHeaderView::down-arrow {
image: url(./vs15/sort-desc.png);
@@ -600,11 +600,19 @@ QProgressBar {
text-align: center;
border-style: solid;
border-width: 1px;
- margin: 0 10px; }
+ margin: 0px 0px; }
QProgressBar::chunk {
background: #06B025; }
+DownloadListWidget[downloadView=standard]::item {
+ padding: 16px;
+}
+
+DownloadListWidget[downloadView=compact]::item {
+ padding: 4px;
+}
+
/* Right Pane and Tab Bars #QTabWidget, #QTabBar */
QTabWidget::pane {
border-color: #3F3F46;
diff --git a/src/stylesheets/vs15 Dark-Red.qss b/src/stylesheets/vs15 Dark-Red.qss
index ee363e0b..2ffcff68 100644
--- a/src/stylesheets/vs15 Dark-Red.qss
+++ b/src/stylesheets/vs15 Dark-Red.qss
@@ -533,8 +533,8 @@ QHeaderView::up-arrow {
image: url(./vs15/sort-asc.png);
margin-bottom: -37px; }
-QTreeView#downloadView QHeaderView::up-arrow {
- margin-bottom: -32px; }
+DownloadListWidget QHeaderView::up-arrow {
+ margin-bottom: -47px; }
QHeaderView::down-arrow {
image: url(./vs15/sort-desc.png);
@@ -600,11 +600,19 @@ QProgressBar {
text-align: center;
border-style: solid;
border-width: 1px;
- margin: 0 10px; }
+ margin: 0 0px; }
QProgressBar::chunk {
background: #06B025; }
+DownloadListWidget[downloadView=standard]::item {
+ padding: 16px;
+}
+
+DownloadListWidget[downloadView=compact]::item {
+ padding: 4px;
+}
+
/* Right Pane and Tab Bars #QTabWidget, #QTabBar */
QTabWidget::pane {
border-color: #3F3F46;
diff --git a/src/stylesheets/vs15 Dark-Yellow.qss b/src/stylesheets/vs15 Dark-Yellow.qss
index 08dbe758..24afe005 100644
--- a/src/stylesheets/vs15 Dark-Yellow.qss
+++ b/src/stylesheets/vs15 Dark-Yellow.qss
@@ -533,8 +533,8 @@ QHeaderView::up-arrow {
image: url(./vs15/sort-asc.png);
margin-bottom: -37px; }
-QTreeView#downloadView QHeaderView::up-arrow {
- margin-bottom: -32px; }
+DownloadListWidget QHeaderView::up-arrow {
+ margin-bottom: -47px; }
QHeaderView::down-arrow {
image: url(./vs15/sort-desc.png);
@@ -600,11 +600,19 @@ QProgressBar {
text-align: center;
border-style: solid;
border-width: 1px;
- margin: 0 10px; }
+ margin: 0 0px; }
QProgressBar::chunk {
background: #06B025; }
+DownloadListWidget[downloadView=standard]::item {
+ padding: 16px;
+}
+
+DownloadListWidget[downloadView=compact]::item {
+ padding: 4px;
+}
+
/* Right Pane and Tab Bars #QTabWidget, #QTabBar */
QTabWidget::pane {
border-color: #3F3F46;
diff --git a/src/stylesheets/vs15 Dark.qss b/src/stylesheets/vs15 Dark.qss
index 8c4d354e..6a551775 100644
--- a/src/stylesheets/vs15 Dark.qss
+++ b/src/stylesheets/vs15 Dark.qss
@@ -532,8 +532,8 @@ QHeaderView::up-arrow {
image: url(./vs15/sort-asc.png);
margin-bottom: -37px; }
-QTreeView#downloadView QHeaderView::up-arrow {
- margin-bottom: -32px; }
+DownloadListWidget QHeaderView::up-arrow {
+ margin-bottom: -47px; }
QHeaderView::down-arrow {
image: url(./vs15/sort-desc.png);
@@ -599,11 +599,19 @@ QProgressBar {
text-align: center;
border-style: solid;
border-width: 1px;
- margin: 0 10px; }
+ margin: 0 0px; }
QProgressBar::chunk {
background: #06B025; }
+DownloadListWidget[downloadView=standard]::item {
+ padding: 16px;
+}
+
+DownloadListWidget[downloadView=compact]::item {
+ padding: 4px;
+}
+
/* Right Pane and Tab Bars #QTabWidget, #QTabBar */
QTabWidget::pane {
border-color: #3F3F46;