diff options
| author | Al <gabriel.cortesi@outlook.com> | 2019-01-01 22:10:56 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-01-01 22:10:56 +0100 |
| commit | 523cb203ce5da9d70cafe9d00e3e48d62c066755 (patch) | |
| tree | 2d255de69f5c09b4ede269f16adec2bfcc7821d5 /src | |
| parent | 619a0887d8ce109f384690317adbd253e3ad6ae6 (diff) | |
| parent | 6fa416fc52f21ddb3eebcd1568baf8394e89ef6b (diff) | |
Merge pull request #606 from przester/download-tab
Revamp the downloads tab, fix some UI bugs
Diffstat (limited to 'src')
29 files changed, 1063 insertions, 2065 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/downloadlist.cpp b/src/downloadlist.cpp index f470e57b..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()) {
+ else if (row < this->rowCount())
emit dataChanged(this->index(row, 0, QModelIndex()), this->index(row, this->columnCount(QModelIndex())-1, QModelIndex()));
- } else {
+ 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 f2206062..224ce0a9 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);
@@ -459,8 +457,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();
}
@@ -4658,7 +4660,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();
@@ -4714,13 +4716,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)
@@ -5151,43 +5152,56 @@ 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; }");
+ }
+
+ // 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)
{
diff --git a/src/mainwindow.h b/src/mainwindow.h index d19cd6a4..a419b797 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 b1ed8e5a..547faaa9 100644 --- a/src/mainwindow.ui +++ b/src/mainwindow.ui @@ -1303,7 +1303,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>
@@ -1311,7 +1311,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>
@@ -1322,51 +1322,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>
@@ -1683,6 +1653,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 46bb42cf..4c6eb51b 100644 --- a/src/organizer_en.ts +++ b/src/organizer_en.ts @@ -292,435 +292,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> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="downloadlist.cpp" line="83"/> - <source>Information missing, please select "Query Info" from the context menu to re-retrieve.</source> + <location filename="downloadlist.cpp" line="73"/> + <source>Status</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>< game %1 mod %2 file %3 ></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>< game %1 mod %2 file %3 ></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> - <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> + <location filename="downloadlist.cpp" line="109"/> + <source>Downloaded</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 "Query Info" 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>< game %1 mod %2 file %3 ></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 +562,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 "%1" 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 +593,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 +613,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'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's available storage. @@ -1620,7 +1436,7 @@ p, li { white-space: pre-wrap; } <message> <location filename="mainwindow.ui" line="287"/> <location filename="mainwindow.ui" line="908"/> - <location filename="mainwindow.cpp" line="4335"/> + <location filename="mainwindow.cpp" line="4340"/> <source>Create Backup</source> <translation type="unfinished"></translation> </message> @@ -1649,7 +1465,7 @@ p, li { white-space: pre-wrap; } <location filename="mainwindow.ui" line="523"/> <location filename="mainwindow.ui" line="644"/> <location filename="mainwindow.ui" line="1060"/> - <location filename="mainwindow.ui" line="1399"/> + <location filename="mainwindow.ui" line="1369"/> <source>Filter</source> <translation type="unfinished"></translation> </message> @@ -1796,8 +1612,8 @@ p, li { white-space: pre-wrap; } <message> <location filename="mainwindow.ui" line="1172"/> <location filename="mainwindow.ui" line="1295"/> - <location filename="mainwindow.cpp" line="4210"/> - <location filename="mainwindow.cpp" line="5113"/> + <location filename="mainwindow.cpp" line="4215"/> + <location filename="mainwindow.cpp" line="5122"/> <source>Refresh</source> <translation type="unfinished"></translation> </message> @@ -1859,145 +1675,145 @@ p, li { white-space: pre-wrap; } <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="1379"/> + <location filename="mainwindow.ui" line="1349"/> <source>Show Hidden</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="1444"/> + <location filename="mainwindow.ui" line="1414"/> <source>Tool Bar</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="1487"/> + <location filename="mainwindow.ui" line="1457"/> <source>Install Mod</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="1490"/> + <location filename="mainwindow.ui" line="1460"/> <source>Install &Mod</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="1493"/> + <location filename="mainwindow.ui" line="1463"/> <source>Install a new mod from an archive</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="1496"/> + <location filename="mainwindow.ui" line="1466"/> <source>Ctrl+M</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="1505"/> + <location filename="mainwindow.ui" line="1475"/> <source>Profiles</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="1508"/> + <location filename="mainwindow.ui" line="1478"/> <source>&Profiles</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="1511"/> + <location filename="mainwindow.ui" line="1481"/> <source>Configure Profiles</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="1514"/> + <location filename="mainwindow.ui" line="1484"/> <source>Ctrl+P</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="1523"/> + <location filename="mainwindow.ui" line="1493"/> <source>Executables</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="1526"/> + <location filename="mainwindow.ui" line="1496"/> <source>&Executables</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="1529"/> + <location filename="mainwindow.ui" line="1499"/> <source>Configure the executables that can be started through Mod Organizer</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="1532"/> + <location filename="mainwindow.ui" line="1502"/> <source>Ctrl+E</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="1541"/> - <location filename="mainwindow.ui" line="1547"/> + <location filename="mainwindow.ui" line="1511"/> + <location filename="mainwindow.ui" line="1517"/> <source>Tools</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="1544"/> + <location filename="mainwindow.ui" line="1514"/> <source>&Tools</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="1550"/> + <location filename="mainwindow.ui" line="1520"/> <source>Ctrl+I</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="1559"/> + <location filename="mainwindow.ui" line="1529"/> <source>Settings</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="1562"/> + <location filename="mainwindow.ui" line="1532"/> <source>&Settings</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="1565"/> + <location filename="mainwindow.ui" line="1535"/> <source>Configure settings and workarounds</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="1568"/> + <location filename="mainwindow.ui" line="1538"/> <source>Ctrl+S</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="1577"/> + <location filename="mainwindow.ui" line="1547"/> <source>Nexus</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="1580"/> + <location filename="mainwindow.ui" line="1550"/> <source>Search nexus network for more mods</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="1583"/> + <location filename="mainwindow.ui" line="1553"/> <source>Ctrl+N</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="1595"/> - <location filename="mainwindow.cpp" line="5051"/> + <location filename="mainwindow.ui" line="1565"/> + <location filename="mainwindow.cpp" line="5053"/> <source>Update</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="1598"/> + <location filename="mainwindow.ui" line="1568"/> <source>Mod Organizer is up-to-date</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="1610"/> - <location filename="mainwindow.cpp" line="659"/> + <location filename="mainwindow.ui" line="1580"/> + <location filename="mainwindow.cpp" line="661"/> <source>No Problems</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="1613"/> + <location filename="mainwindow.ui" line="1583"/> <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! @@ -2005,39 +1821,39 @@ Right now this has very limited functionality</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="1625"/> - <location filename="mainwindow.ui" line="1628"/> + <location filename="mainwindow.ui" line="1595"/> + <location filename="mainwindow.ui" line="1598"/> <source>Help</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="1631"/> + <location filename="mainwindow.ui" line="1601"/> <source>Ctrl+H</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="1640"/> + <location filename="mainwindow.ui" line="1610"/> <source>Endorse MO</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="1643"/> - <location filename="mainwindow.cpp" line="5136"/> + <location filename="mainwindow.ui" line="1613"/> + <location filename="mainwindow.cpp" line="5145"/> <source>Endorse Mod Organizer</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="1648"/> + <location filename="mainwindow.ui" line="1618"/> <source>Copy Log to Clipboard</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="1657"/> + <location filename="mainwindow.ui" line="1627"/> <source>Change Game</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.ui" line="1660"/> + <location filename="mainwindow.ui" line="1630"/> <source>Open the Instance selection dialog to manage a different Game</source> <translation type="unfinished"></translation> </message> @@ -2057,835 +1873,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="479"/> + <location filename="mainwindow.cpp" line="481"/> <source>Crash on exit</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="480"/> + <location filename="mainwindow.cpp" line="482"/> <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="647"/> + <location filename="mainwindow.cpp" line="649"/> <source>Problems</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="648"/> + <location filename="mainwindow.cpp" line="650"/> <source>There are potential problems with your setup</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="660"/> + <location filename="mainwindow.cpp" line="662"/> <source>Everything seems to be in order</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="722"/> - <location filename="mainwindow.cpp" line="4345"/> - <location filename="mainwindow.cpp" line="4349"/> + <location filename="mainwindow.cpp" line="724"/> + <location filename="mainwindow.cpp" line="4350"/> + <location filename="mainwindow.cpp" line="4354"/> <source>Endorse</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="726"/> + <location filename="mainwindow.cpp" line="728"/> <source>Won't Endorse</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="741"/> + <location filename="mainwindow.cpp" line="743"/> <source>Help on UI</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="745"/> + <location filename="mainwindow.cpp" line="747"/> <source>Documentation Wiki</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="749"/> + <location filename="mainwindow.cpp" line="751"/> <source>Report Issue</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="753"/> + <location filename="mainwindow.cpp" line="755"/> <source>Tutorials</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="792"/> + <location filename="mainwindow.cpp" line="794"/> <source>About</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="793"/> + <location filename="mainwindow.cpp" line="795"/> <source>About Qt</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="852"/> + <location filename="mainwindow.cpp" line="854"/> <source>Name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="853"/> + <location filename="mainwindow.cpp" line="855"/> <source>Please enter a name for the new profile</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="861"/> + <location filename="mainwindow.cpp" line="863"/> <source>failed to create profile: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="905"/> + <location filename="mainwindow.cpp" line="907"/> <source>Show tutorial?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="906"/> + <location filename="mainwindow.cpp" line="908"/> <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 "Help"-menu.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="942"/> + <location filename="mainwindow.cpp" line="944"/> <source>Downloads in progress</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="943"/> + <location filename="mainwindow.cpp" line="945"/> <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="1060"/> + <location filename="mainwindow.cpp" line="1062"/> <source>Plugin "%1" failed: %2</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="1062"/> + <location filename="mainwindow.cpp" line="1064"/> <source>Plugin "%1" failed</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="1140"/> + <location filename="mainwindow.cpp" line="1142"/> <source>Browse Mod Page</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="1336"/> + <location filename="mainwindow.cpp" line="1340"/> <source>Also in: <br></source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="1347"/> + <location filename="mainwindow.cpp" line="1351"/> <source>No conflict</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="1432"/> + <location filename="mainwindow.cpp" line="1436"/> <source><Edit...></source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="1710"/> + <location filename="mainwindow.cpp" line="1714"/> <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="1772"/> + <location filename="mainwindow.cpp" line="1776"/> <source>Activating Network Proxy</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="1833"/> + <location filename="mainwindow.cpp" line="1837"/> <source>Notice: Your current MO version (%1) is lower than the previous version (%2).<br>The GUI may not downgrade gracefully, so you may experience oddities.<br>However, there should be no serious issues.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="1937"/> + <location filename="mainwindow.cpp" line="1941"/> <source>Choose Mod</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="1938"/> + <location filename="mainwindow.cpp" line="1942"/> <source>Mod Archive</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="2113"/> + <location filename="mainwindow.cpp" line="2117"/> <source>Start Tutorial?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="2114"/> + <location filename="mainwindow.cpp" line="2118"/> <source>You're about to start a tutorial. For technical reasons it's not possible to end the tutorial early. Continue?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="2273"/> + <location filename="mainwindow.cpp" line="2277"/> <source>failed to spawn notepad.exe: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="2313"/> + <location filename="mainwindow.cpp" line="2317"/> <source>failed to change origin name: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="2337"/> + <location filename="mainwindow.cpp" line="2341"/> <source>failed to move "%1" from mod "%2" to "%3": %4</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="2361"/> + <location filename="mainwindow.cpp" line="2365"/> <source><Contains %1></source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="2396"/> + <location filename="mainwindow.cpp" line="2400"/> <source><Checked></source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="2397"/> + <location filename="mainwindow.cpp" line="2401"/> <source><Unchecked></source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="2398"/> + <location filename="mainwindow.cpp" line="2402"/> <source><Update></source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="2399"/> + <location filename="mainwindow.cpp" line="2403"/> <source><Mod Backup></source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="2400"/> + <location filename="mainwindow.cpp" line="2404"/> <source><Managed by MO></source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="2401"/> + <location filename="mainwindow.cpp" line="2405"/> <source><Managed outside MO></source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="2402"/> + <location filename="mainwindow.cpp" line="2406"/> <source><No category></source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="2403"/> + <location filename="mainwindow.cpp" line="2407"/> <source><Conflicted></source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="2404"/> + <location filename="mainwindow.cpp" line="2408"/> <source><Not Endorsed></source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="2450"/> + <location filename="mainwindow.cpp" line="2454"/> <source>failed to rename mod: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="2463"/> + <location filename="mainwindow.cpp" line="2467"/> <source>Overwrite?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="2464"/> + <location filename="mainwindow.cpp" line="2468"/> <source>This will replace the existing mod "%1". Continue?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="2467"/> + <location filename="mainwindow.cpp" line="2471"/> <source>failed to remove mod "%1"</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="2471"/> - <location filename="mainwindow.cpp" line="4883"/> - <location filename="mainwindow.cpp" line="4907"/> + <location filename="mainwindow.cpp" line="2475"/> + <location filename="mainwindow.cpp" line="4885"/> + <location filename="mainwindow.cpp" line="4909"/> <source>failed to rename "%1" to "%2"</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="2538"/> - <location filename="mainwindow.cpp" line="3914"/> - <location filename="mainwindow.cpp" line="3922"/> - <location filename="mainwindow.cpp" line="4458"/> + <location filename="mainwindow.cpp" line="2542"/> + <location filename="mainwindow.cpp" line="3919"/> + <location filename="mainwindow.cpp" line="3927"/> + <location filename="mainwindow.cpp" line="4463"/> <source>Confirm</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="2539"/> + <location filename="mainwindow.cpp" line="2543"/> <source>Remove the following mods?<br><ul>%1</ul></source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="2552"/> + <location filename="mainwindow.cpp" line="2556"/> <source>failed to remove mod: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="2584"/> - <location filename="mainwindow.cpp" line="2587"/> - <location filename="mainwindow.cpp" line="2597"/> + <location filename="mainwindow.cpp" line="2588"/> + <location filename="mainwindow.cpp" line="2591"/> + <location filename="mainwindow.cpp" line="2601"/> <source>Failed</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="2584"/> + <location filename="mainwindow.cpp" line="2588"/> <source>Installation file no longer exists</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="2588"/> + <location filename="mainwindow.cpp" line="2592"/> <source>Mods installed with old versions of MO can't be reinstalled in this way.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="2598"/> + <location filename="mainwindow.cpp" line="2602"/> <source>Failed to create backup.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="2615"/> + <location filename="mainwindow.cpp" line="2619"/> <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="2631"/> - <location filename="mainwindow.cpp" line="2657"/> - <location filename="mainwindow.cpp" line="2691"/> - <location filename="mainwindow.cpp" line="2717"/> + <location filename="mainwindow.cpp" line="2635"/> + <location filename="mainwindow.cpp" line="2661"/> + <location filename="mainwindow.cpp" line="2695"/> + <location filename="mainwindow.cpp" line="2721"/> <source>You need to be logged in with Nexus to endorse</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="2642"/> - <location filename="mainwindow.cpp" line="2650"/> + <location filename="mainwindow.cpp" line="2646"/> + <location filename="mainwindow.cpp" line="2654"/> <source>Endorsing multiple mods will take a while. Please wait...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="2702"/> - <location filename="mainwindow.cpp" line="2710"/> + <location filename="mainwindow.cpp" line="2706"/> + <location filename="mainwindow.cpp" line="2714"/> <source>Unendorsing multiple mods will take a while. Please wait...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="2778"/> + <location filename="mainwindow.cpp" line="2782"/> <source>Failed to display overwrite dialog: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="2965"/> + <location filename="mainwindow.cpp" line="2969"/> <source>Opening Nexus Links</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="2966"/> + <location filename="mainwindow.cpp" line="2970"/> <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="2986"/> + <location filename="mainwindow.cpp" line="2990"/> <source>Nexus ID for this Mod is unknown</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="2997"/> + <location filename="mainwindow.cpp" line="3001"/> <source>Web page for this mod is unknown</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="3179"/> + <location filename="mainwindow.cpp" line="3183"/> <source><table cellspacing="5"><tr><th>Type</th><th>All</th><th>Visible</th><tr><td>Enabled mods:&emsp;</td><td align=right>%1 / %2</td><td align=right>%3 / %4</td></tr><tr><td>Unmanaged/DLCs:&emsp;</td><td align=right>%5</td><td align=right>%6</td></tr><tr><td>Mod backups:&emsp;</td><td align=right>%7</td><td align=right>%8</td></tr><tr><td>Separators:&emsp;</td><td align=right>%9</td><td align=right>%10</td></tr></table></source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="3234"/> + <location filename="mainwindow.cpp" line="3238"/> <source><table cellspacing="4"><tr><th>Type</th><th>Active</th><th>Total</th></tr><tr><td>Active plugins:</td><td align=right>%1</td><td align=right>%2</td></tr><tr><td>Active ESMs:</td><td align=right>%3</td><td align=right>%4</td></tr><tr><td>Active ESPs:</td><td align=right>%7</td><td align=right>%8</td></tr><tr><td>Active ESMs+ESPs:</td><td align=right>%9</td><td align=right>%10</td></tr><tr><td>Active ESLs:</td><td align=right>%5</td><td align=right>%6</td></tr></table></source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="3266"/> - <location filename="mainwindow.cpp" line="3403"/> - <location filename="mainwindow.cpp" line="4272"/> + <location filename="mainwindow.cpp" line="3270"/> + <location filename="mainwindow.cpp" line="3408"/> + <location filename="mainwindow.cpp" line="4277"/> <source>Create Mod...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="3267"/> + <location filename="mainwindow.cpp" line="3271"/> <source>This will create an empty mod. Please enter a name:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="3276"/> - <location filename="mainwindow.cpp" line="3413"/> + <location filename="mainwindow.cpp" line="3280"/> + <location filename="mainwindow.cpp" line="3418"/> <source>A mod with this name already exists</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="3304"/> + <location filename="mainwindow.cpp" line="3308"/> <source>Create Separator...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="3305"/> + <location filename="mainwindow.cpp" line="3309"/> <source>This will create a new separator. Please enter a name:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="3312"/> + <location filename="mainwindow.cpp" line="3316"/> <source>A separator with this name already exists</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="3404"/> + <location filename="mainwindow.cpp" line="3409"/> <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="3445"/> - <location filename="mainwindow.cpp" line="5463"/> + <location filename="mainwindow.cpp" line="3450"/> + <location filename="mainwindow.cpp" line="5478"/> <source>Are you sure?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="3446"/> + <location filename="mainwindow.cpp" line="3451"/> <source>About to recursively delete: </source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="3808"/> + <location filename="mainwindow.cpp" line="3813"/> <source>Not logged in, endorsement information will be wrong</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="3816"/> + <location filename="mainwindow.cpp" line="3821"/> <source>Continue?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="3817"/> + <location filename="mainwindow.cpp" line="3822"/> <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="3837"/> - <location filename="mainwindow.cpp" line="5019"/> + <location filename="mainwindow.cpp" line="3842"/> + <location filename="mainwindow.cpp" line="5021"/> <source>Sorry</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="3838"/> + <location filename="mainwindow.cpp" line="3843"/> <source>I don't know a versioning scheme where %1 is newer than %2.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="3914"/> + <location filename="mainwindow.cpp" line="3919"/> <source>Really enable all visible mods?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="3922"/> + <location filename="mainwindow.cpp" line="3927"/> <source>Really disable all visible mods?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4002"/> + <location filename="mainwindow.cpp" line="4007"/> <source>Export to csv</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4005"/> + <location filename="mainwindow.cpp" line="4010"/> <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="4008"/> + <location filename="mainwindow.cpp" line="4013"/> <source>Select what mods you want export:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4009"/> + <location filename="mainwindow.cpp" line="4014"/> <source>All installed mods</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4010"/> + <location filename="mainwindow.cpp" line="4015"/> <source>Only active (checked) mods from your current profile</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4011"/> + <location filename="mainwindow.cpp" line="4016"/> <source>All currently visible mods in the mod list</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4032"/> + <location filename="mainwindow.cpp" line="4037"/> <source>Choose what Columns to export:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4035"/> + <location filename="mainwindow.cpp" line="4040"/> <source>Mod_Priority</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4037"/> + <location filename="mainwindow.cpp" line="4042"/> <source>Mod_Name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4039"/> + <location filename="mainwindow.cpp" line="4044"/> <source>Mod_Status</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4040"/> + <location filename="mainwindow.cpp" line="4045"/> <source>Primary_Category</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4041"/> + <location filename="mainwindow.cpp" line="4046"/> <source>Nexus_ID</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4042"/> + <location filename="mainwindow.cpp" line="4047"/> <source>Mod_Nexus_URL</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4043"/> + <location filename="mainwindow.cpp" line="4048"/> <source>Mod_Version</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4044"/> + <location filename="mainwindow.cpp" line="4049"/> <source>Install_Date</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4045"/> + <location filename="mainwindow.cpp" line="4050"/> <source>Download_File_Name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4147"/> + <location filename="mainwindow.cpp" line="4152"/> <source>export failed: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4166"/> + <location filename="mainwindow.cpp" line="4171"/> <source>Open Game folder</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4168"/> + <location filename="mainwindow.cpp" line="4173"/> <source>Open MyGames folder</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4170"/> + <location filename="mainwindow.cpp" line="4175"/> <source>Open INIs folder</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4174"/> + <location filename="mainwindow.cpp" line="4179"/> <source>Open Instance folder</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4176"/> + <location filename="mainwindow.cpp" line="4181"/> <source>Open Mods folder</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4178"/> + <location filename="mainwindow.cpp" line="4183"/> <source>Open Profile folder</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4180"/> + <location filename="mainwindow.cpp" line="4185"/> <source>Open Downloads folder</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4184"/> + <location filename="mainwindow.cpp" line="4189"/> <source>Open MO2 Install folder</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4186"/> + <location filename="mainwindow.cpp" line="4191"/> <source>Open MO2 Plugins folder</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4188"/> + <location filename="mainwindow.cpp" line="4193"/> <source>Open MO2 Logs folder</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4197"/> + <location filename="mainwindow.cpp" line="4202"/> <source>Install Mod...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4199"/> + <location filename="mainwindow.cpp" line="4204"/> <source>Create empty mod</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4201"/> + <location filename="mainwindow.cpp" line="4206"/> <source>Create Separator</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4205"/> + <location filename="mainwindow.cpp" line="4210"/> <source>Enable all visible</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4206"/> + <location filename="mainwindow.cpp" line="4211"/> <source>Disable all visible</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4208"/> + <location filename="mainwindow.cpp" line="4213"/> <source>Check all for update</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4212"/> + <location filename="mainwindow.cpp" line="4217"/> <source>Export to csv...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4224"/> - <location filename="mainwindow.cpp" line="4240"/> + <location filename="mainwindow.cpp" line="4229"/> + <location filename="mainwindow.cpp" line="4245"/> <source>Send to</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4225"/> - <location filename="mainwindow.cpp" line="4241"/> + <location filename="mainwindow.cpp" line="4230"/> + <location filename="mainwindow.cpp" line="4246"/> <source>Top</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4226"/> - <location filename="mainwindow.cpp" line="4242"/> + <location filename="mainwindow.cpp" line="4231"/> + <location filename="mainwindow.cpp" line="4247"/> <source>Bottom</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4227"/> - <location filename="mainwindow.cpp" line="4243"/> + <location filename="mainwindow.cpp" line="4232"/> + <location filename="mainwindow.cpp" line="4248"/> <source>Priority...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4228"/> + <location filename="mainwindow.cpp" line="4233"/> <source>Separator...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4264"/> + <location filename="mainwindow.cpp" line="4269"/> <source>All Mods</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4271"/> + <location filename="mainwindow.cpp" line="4276"/> <source>Sync to Mods...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4273"/> + <location filename="mainwindow.cpp" line="4278"/> <source>Clear Overwrite...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4275"/> - <location filename="mainwindow.cpp" line="4376"/> + <location filename="mainwindow.cpp" line="4280"/> + <location filename="mainwindow.cpp" line="4381"/> <source>Open in Explorer</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4277"/> + <location filename="mainwindow.cpp" line="4282"/> <source>Restore Backup</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4278"/> + <location filename="mainwindow.cpp" line="4283"/> <source>Remove Backup...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4281"/> - <location filename="mainwindow.cpp" line="4300"/> + <location filename="mainwindow.cpp" line="4286"/> + <location filename="mainwindow.cpp" line="4305"/> <source>Change Categories</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4285"/> - <location filename="mainwindow.cpp" line="4305"/> + <location filename="mainwindow.cpp" line="4290"/> + <location filename="mainwindow.cpp" line="4310"/> <source>Primary Category</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4289"/> + <location filename="mainwindow.cpp" line="4294"/> <source>Rename Separator...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4290"/> + <location filename="mainwindow.cpp" line="4295"/> <source>Remove Separator...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4293"/> + <location filename="mainwindow.cpp" line="4298"/> <source>Select Color...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4295"/> + <location filename="mainwindow.cpp" line="4300"/> <source>Reset Color</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4312"/> + <location filename="mainwindow.cpp" line="4317"/> <source>Change versioning scheme</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4316"/> + <location filename="mainwindow.cpp" line="4321"/> <source>Un-ignore update</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4320"/> + <location filename="mainwindow.cpp" line="4325"/> <source>Ignore update</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4325"/> - <location filename="mainwindow.cpp" line="5574"/> + <location filename="mainwindow.cpp" line="4330"/> + <location filename="mainwindow.cpp" line="5589"/> <source>Enable selected</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4326"/> - <location filename="mainwindow.cpp" line="5575"/> + <location filename="mainwindow.cpp" line="4331"/> + <location filename="mainwindow.cpp" line="5590"/> <source>Disable selected</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4332"/> + <location filename="mainwindow.cpp" line="4337"/> <source>Rename Mod...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4333"/> + <location filename="mainwindow.cpp" line="4338"/> <source>Reinstall Mod</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4334"/> + <location filename="mainwindow.cpp" line="4339"/> <source>Remove Mod...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4342"/> + <location filename="mainwindow.cpp" line="4347"/> <source>Un-Endorse</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4346"/> + <location filename="mainwindow.cpp" line="4351"/> <source>Won't endorse</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4352"/> + <location filename="mainwindow.cpp" line="4357"/> <source>Endorsement state unknown</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4363"/> + <location filename="mainwindow.cpp" line="4368"/> <source>Ignore missing data</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4367"/> + <location filename="mainwindow.cpp" line="4372"/> <source>Mark as converted/working</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4371"/> + <location filename="mainwindow.cpp" line="4376"/> <source>Visit on Nexus</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4373"/> + <location filename="mainwindow.cpp" line="4378"/> <source>Visit web page</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4380"/> + <location filename="mainwindow.cpp" line="4385"/> <source>Information...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4387"/> - <location filename="mainwindow.cpp" line="5622"/> + <location filename="mainwindow.cpp" line="4392"/> + <location filename="mainwindow.cpp" line="5637"/> <source>Exception: </source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4389"/> - <location filename="mainwindow.cpp" line="5624"/> + <location filename="mainwindow.cpp" line="4394"/> + <location filename="mainwindow.cpp" line="5639"/> <source>Unknown exception</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4418"/> + <location filename="mainwindow.cpp" line="4423"/> <source><All></source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4420"/> + <location filename="mainwindow.cpp" line="4425"/> <source><Multiple></source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4455"/> + <location filename="mainwindow.cpp" line="4460"/> <source>%1 more</source> <translation type="unfinished"></translation> </message> <message numerus="yes"> - <location filename="mainwindow.cpp" line="4459"/> + <location filename="mainwindow.cpp" line="4464"/> <source>Are you sure you want to remove the following %n save(s)?<br><ul>%1</ul><br>Removed saves will be sent to the Recycle Bin.</source> <translation type="unfinished"> <numerusform></numerusform> @@ -2893,12 +2709,12 @@ You can also use online editors and converters instead.</source> </translation> </message> <message> - <location filename="mainwindow.cpp" line="4504"/> + <location filename="mainwindow.cpp" line="4509"/> <source>Enable Mods...</source> <translation type="unfinished"></translation> </message> <message numerus="yes"> - <location filename="mainwindow.cpp" line="4519"/> + <location filename="mainwindow.cpp" line="4524"/> <source>Delete %n save(s)</source> <translation type="unfinished"> <numerusform></numerusform> @@ -2906,22 +2722,22 @@ You can also use online editors and converters instead.</source> </translation> </message> <message> - <location filename="mainwindow.cpp" line="4561"/> + <location filename="mainwindow.cpp" line="4566"/> <source>failed to remove %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4583"/> + <location filename="mainwindow.cpp" line="4588"/> <source>failed to create %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4613"/> + <location filename="mainwindow.cpp" line="4618"/> <source>Restarting MO</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4614"/> + <location filename="mainwindow.cpp" line="4619"/> <source>Changing the managed game directory requires restarting MO. Any pending downloads will be paused. @@ -2929,335 +2745,335 @@ Click OK to restart MO now.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4634"/> + <location filename="mainwindow.cpp" line="4639"/> <source>Can't change download directory while downloads are in progress!</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4755"/> + <location filename="mainwindow.cpp" line="4757"/> <source>failed to write to file %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4761"/> + <location filename="mainwindow.cpp" line="4763"/> <source>%1 written</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4802"/> + <location filename="mainwindow.cpp" line="4804"/> <source>Select binary</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4802"/> + <location filename="mainwindow.cpp" line="4804"/> <source>Binary</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4828"/> + <location filename="mainwindow.cpp" line="4830"/> <source>Enter Name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4829"/> + <location filename="mainwindow.cpp" line="4831"/> <source>Please enter a name for the executable</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4843"/> + <location filename="mainwindow.cpp" line="4845"/> <source>Not an executable</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4843"/> + <location filename="mainwindow.cpp" line="4845"/> <source>This is not a recognized executable.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4868"/> - <location filename="mainwindow.cpp" line="4893"/> + <location filename="mainwindow.cpp" line="4870"/> + <location filename="mainwindow.cpp" line="4895"/> <source>Replace file?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4868"/> + <location filename="mainwindow.cpp" line="4870"/> <source>There already is a hidden version of this file. Replace it?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4871"/> - <location filename="mainwindow.cpp" line="4896"/> + <location filename="mainwindow.cpp" line="4873"/> + <location filename="mainwindow.cpp" line="4898"/> <source>File operation failed</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4871"/> - <location filename="mainwindow.cpp" line="4896"/> + <location filename="mainwindow.cpp" line="4873"/> + <location filename="mainwindow.cpp" line="4898"/> <source>Failed to remove "%1". Maybe you lack the required file permissions?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4893"/> + <location filename="mainwindow.cpp" line="4895"/> <source>There already is a visible version of this file. Replace it?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4937"/> - <location filename="mainwindow.cpp" line="6236"/> + <location filename="mainwindow.cpp" line="4939"/> + <location filename="mainwindow.cpp" line="6251"/> <source>Set Priority</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4937"/> + <location filename="mainwindow.cpp" line="4939"/> <source>Set the priority of the selected plugins</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4986"/> + <location filename="mainwindow.cpp" line="4988"/> <source>file not found: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="4999"/> + <location filename="mainwindow.cpp" line="5001"/> <source>failed to generate preview for %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="5019"/> + <location filename="mainwindow.cpp" line="5021"/> <source>Sorry, can't preview anything. This function currently does not support extracting from bsas.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="5053"/> + <location filename="mainwindow.cpp" line="5055"/> <source>Update available</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="5093"/> + <location filename="mainwindow.cpp" line="5102"/> <source>Open/Execute</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="5094"/> + <location filename="mainwindow.cpp" line="5103"/> <source>Add as Executable</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="5098"/> + <location filename="mainwindow.cpp" line="5107"/> <source>Preview</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="5104"/> + <location filename="mainwindow.cpp" line="5113"/> <source>Un-Hide</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="5106"/> + <location filename="mainwindow.cpp" line="5115"/> <source>Hide</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="5112"/> + <location filename="mainwindow.cpp" line="5121"/> <source>Write To File...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="5137"/> + <location filename="mainwindow.cpp" line="5146"/> <source>Do you want to endorse Mod Organizer on %1 now?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="5272"/> + <location filename="mainwindow.cpp" line="5287"/> <source>Thank you!</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="5272"/> + <location filename="mainwindow.cpp" line="5287"/> <source>Thank you for your endorsement!</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="5307"/> + <location filename="mainwindow.cpp" line="5322"/> <source>Request to Nexus failed: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="5322"/> - <location filename="mainwindow.cpp" line="5384"/> + <location filename="mainwindow.cpp" line="5337"/> + <location filename="mainwindow.cpp" line="5399"/> <source>failed to read %1: %2</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="5334"/> - <location filename="mainwindow.cpp" line="5812"/> + <location filename="mainwindow.cpp" line="5349"/> + <location filename="mainwindow.cpp" line="5827"/> <source>Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="5334"/> + <location filename="mainwindow.cpp" line="5349"/> <source>failed to extract %1 (errorcode %2)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="5366"/> + <location filename="mainwindow.cpp" line="5381"/> <source>Extract BSA</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="5395"/> + <location filename="mainwindow.cpp" line="5410"/> <source>This archive contains invalid hashes. Some files may be broken.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="5441"/> + <location filename="mainwindow.cpp" line="5456"/> <source>Extract...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="5464"/> + <location filename="mainwindow.cpp" line="5479"/> <source>This will restart MO, continue?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="5511"/> + <location filename="mainwindow.cpp" line="5526"/> <source>Edit Categories...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="5512"/> + <location filename="mainwindow.cpp" line="5527"/> <source>Deselect filter</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="5563"/> + <location filename="mainwindow.cpp" line="5578"/> <source>Remove</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="5579"/> + <location filename="mainwindow.cpp" line="5594"/> <source>Enable all</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="5580"/> + <location filename="mainwindow.cpp" line="5595"/> <source>Disable all</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="5601"/> + <location filename="mainwindow.cpp" line="5616"/> <source>Unlock load order</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="5604"/> + <location filename="mainwindow.cpp" line="5619"/> <source>Lock load order</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="5608"/> + <location filename="mainwindow.cpp" line="5623"/> <source>Open Origin in Explorer</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="5615"/> + <location filename="mainwindow.cpp" line="5630"/> <source>Open Origin Info...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="5758"/> + <location filename="mainwindow.cpp" line="5773"/> <source>depends on missing "%1"</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="5762"/> + <location filename="mainwindow.cpp" line="5777"/> <source>incompatible with "%1"</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="5788"/> + <location filename="mainwindow.cpp" line="5803"/> <source>Please wait while LOOT is running</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="5885"/> + <location filename="mainwindow.cpp" line="5900"/> <source>loot failed. Exit code was: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="5907"/> + <location filename="mainwindow.cpp" line="5922"/> <source>failed to start loot</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="5910"/> + <location filename="mainwindow.cpp" line="5925"/> <source>failed to run loot: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="5914"/> + <location filename="mainwindow.cpp" line="5929"/> <source>Errors occured</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="5961"/> + <location filename="mainwindow.cpp" line="5976"/> <source>Backup of load order created</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="5971"/> + <location filename="mainwindow.cpp" line="5986"/> <source>Choose backup to restore</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="5984"/> + <location filename="mainwindow.cpp" line="5999"/> <source>No Backups</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="5984"/> + <location filename="mainwindow.cpp" line="5999"/> <source>There are no backups to restore</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="6005"/> - <location filename="mainwindow.cpp" line="6027"/> + <location filename="mainwindow.cpp" line="6020"/> + <location filename="mainwindow.cpp" line="6042"/> <source>Restore failed</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="6006"/> - <location filename="mainwindow.cpp" line="6028"/> + <location filename="mainwindow.cpp" line="6021"/> + <location filename="mainwindow.cpp" line="6043"/> <source>Failed to restore the backup. Errorcode: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="6017"/> + <location filename="mainwindow.cpp" line="6032"/> <source>Backup of modlist created</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="6123"/> + <location filename="mainwindow.cpp" line="6138"/> <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="6125"/> + <location filename="mainwindow.cpp" line="6140"/> <source>Overwrite</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="6126"/> + <location filename="mainwindow.cpp" line="6141"/> <source>Rename new file</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="6127"/> + <location filename="mainwindow.cpp" line="6142"/> <source>Ignore file</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="6236"/> + <location filename="mainwindow.cpp" line="6251"/> <source>Set the priority of the selected mods</source> <translation type="unfinished"></translation> </message> @@ -4455,135 +4271,135 @@ p, li { white-space: pre-wrap; } <translation type="unfinished"></translation> </message> <message> - <location filename="organizercore.cpp" line="1270"/> + <location filename="organizercore.cpp" line="1273"/> <source>Executable "%1" not found</source> <translation type="unfinished"></translation> </message> <message> - <location filename="organizercore.cpp" line="1298"/> + <location filename="organizercore.cpp" line="1301"/> <source>Start Steam?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="organizercore.cpp" line="1299"/> + <location filename="organizercore.cpp" line="1302"/> <source>Steam is required to be running already to correctly start the game. Should MO try to start steam now?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="organizercore.cpp" line="1328"/> + <location filename="organizercore.cpp" line="1331"/> <source>Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="organizercore.cpp" line="1336"/> + <location filename="organizercore.cpp" line="1339"/> <source>Windows Event Log Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="organizercore.cpp" line="1337"/> + <location filename="organizercore.cpp" line="1340"/> <source>The Windows Event Log service is disabled and/or not running. This prevents USVFS from running properly. Your mods may not be working in the executable that you are launching. Note that you may have to restart MO and/or your PC after the service is fixed. Continue launching %1?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="organizercore.cpp" line="1349"/> + <location filename="organizercore.cpp" line="1352"/> <source>Blacklisted Executable</source> <translation type="unfinished"></translation> </message> <message> - <location filename="organizercore.cpp" line="1350"/> + <location filename="organizercore.cpp" line="1353"/> <source>The executable you are attempted to launch is blacklisted in the virtual file system. This will likely prevent the executable, and any executables that are launched by this one, from seeing any mods. This could extend to INI files, save games and any other virtualized files. Continue launching %1?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="organizercore.cpp" line="1439"/> + <location filename="organizercore.cpp" line="1442"/> <source>No profile set</source> <translation type="unfinished"></translation> </message> <message> - <location filename="organizercore.cpp" line="1728"/> + <location filename="organizercore.cpp" line="1731"/> <source>Failed to refresh list of esps: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="organizercore.cpp" line="1821"/> + <location filename="organizercore.cpp" line="1824"/> <source>Multiple esps/esls activated, please check that they don't conflict.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="organizercore.cpp" line="1896"/> + <location filename="organizercore.cpp" line="1899"/> <source>Download?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="organizercore.cpp" line="1897"/> + <location filename="organizercore.cpp" line="1900"/> <source>A download has been started but no installed page plugin recognizes it. If you download anyway no information (i.e. version) will be associated with the download. Continue?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="organizercore.cpp" line="2031"/> + <location filename="organizercore.cpp" line="2034"/> <source>failed to update mod list: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="organizercore.cpp" line="2038"/> - <location filename="organizercore.cpp" line="2055"/> + <location filename="organizercore.cpp" line="2041"/> + <location filename="organizercore.cpp" line="2058"/> <source>login successful</source> <translation type="unfinished"></translation> </message> <message> - <location filename="organizercore.cpp" line="2062"/> + <location filename="organizercore.cpp" line="2065"/> <source>Login failed</source> <translation type="unfinished"></translation> </message> <message> - <location filename="organizercore.cpp" line="2063"/> + <location filename="organizercore.cpp" line="2066"/> <source>Login failed, try again?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="organizercore.cpp" line="2072"/> + <location filename="organizercore.cpp" line="2075"/> <source>login failed: %1. Download will not be associated with an account</source> <translation type="unfinished"></translation> </message> <message> - <location filename="organizercore.cpp" line="2080"/> + <location filename="organizercore.cpp" line="2083"/> <source>login failed: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="organizercore.cpp" line="2090"/> + <location filename="organizercore.cpp" line="2093"/> <source>login failed: %1. You need to log-in with Nexus to update MO.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="organizercore.cpp" line="2143"/> + <location filename="organizercore.cpp" line="2146"/> <source>MO1 "Script Extender" load mechanism has left hook.dll in your game folder</source> <translation type="unfinished"></translation> </message> <message> - <location filename="organizercore.cpp" line="2146"/> - <location filename="organizercore.cpp" line="2162"/> + <location filename="organizercore.cpp" line="2149"/> + <location filename="organizercore.cpp" line="2165"/> <source>Description missing</source> <translation type="unfinished"></translation> </message> <message> - <location filename="organizercore.cpp" line="2155"/> + <location filename="organizercore.cpp" line="2158"/> <source><a href="%1">hook.dll</a> has been found in your game folder (right click to copy the full path). This is most likely a leftover of setting the ModOrganizer 1 load mechanism to "Script Extender", in which case you must remove this file either by changing the load mechanism in ModOrganizer 1 or manually removing the file, otherwise the game is likely to crash and burn.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="organizercore.cpp" line="2189"/> + <location filename="organizercore.cpp" line="2192"/> <source>failed to save load order: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="organizercore.cpp" line="2261"/> + <location filename="organizercore.cpp" line="2264"/> <source>The designated write target "%1" is not enabled.</source> <translation type="unfinished"></translation> </message> @@ -4730,94 +4546,94 @@ Continue?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="pluginlist.cpp" line="221"/> + <location filename="pluginlist.cpp" line="224"/> <source>failed to update esp info for file %1 (source id: %2), error: %3</source> <translation type="unfinished"></translation> </message> <message> - <location filename="pluginlist.cpp" line="294"/> + <location filename="pluginlist.cpp" line="297"/> <source>esp not found: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="pluginlist.cpp" line="342"/> - <location filename="pluginlist.cpp" line="354"/> + <location filename="pluginlist.cpp" line="345"/> + <location filename="pluginlist.cpp" line="357"/> <source>Confirm</source> <translation type="unfinished"></translation> </message> <message> - <location filename="pluginlist.cpp" line="342"/> + <location filename="pluginlist.cpp" line="345"/> <source>Really enable all plugins?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="pluginlist.cpp" line="354"/> + <location filename="pluginlist.cpp" line="357"/> <source>Really disable all plugins?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="pluginlist.cpp" line="459"/> + <location filename="pluginlist.cpp" line="462"/> <source>The file containing locked plugin indices is broken</source> <translation type="unfinished"></translation> </message> <message> - <location filename="pluginlist.cpp" line="956"/> - <location filename="pluginlist.cpp" line="960"/> + <location filename="pluginlist.cpp" line="959"/> + <location filename="pluginlist.cpp" line="963"/> <source><b>Origin</b>: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="pluginlist.cpp" line="957"/> + <location filename="pluginlist.cpp" line="960"/> <source><br><b><i>This plugin can't be disabled (enforced by the game).</i></b></source> <translation type="unfinished"></translation> </message> <message> - <location filename="pluginlist.cpp" line="962"/> + <location filename="pluginlist.cpp" line="965"/> <source>Author</source> <translation type="unfinished"></translation> </message> <message> - <location filename="pluginlist.cpp" line="965"/> + <location filename="pluginlist.cpp" line="968"/> <source>Description</source> <translation type="unfinished"></translation> </message> <message> - <location filename="pluginlist.cpp" line="968"/> + <location filename="pluginlist.cpp" line="971"/> <source>Missing Masters</source> <translation type="unfinished"></translation> </message> <message> - <location filename="pluginlist.cpp" line="975"/> + <location filename="pluginlist.cpp" line="978"/> <source>Enabled Masters</source> <translation type="unfinished"></translation> </message> <message> - <location filename="pluginlist.cpp" line="978"/> + <location filename="pluginlist.cpp" line="981"/> <source>Loads Archives</source> <translation type="unfinished"></translation> </message> <message> - <location filename="pluginlist.cpp" line="979"/> + <location filename="pluginlist.cpp" line="982"/> <source>There are Archives connected to this plugin. Their assets will be added to your game, overwriting in case of conflicts following the plugin order. Loose files will always overwrite assets from Archives. (This flag only checks for Archives from the same mod as the plugin)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="pluginlist.cpp" line="984"/> + <location filename="pluginlist.cpp" line="987"/> <source>Loads INI settings</source> <translation type="unfinished"></translation> </message> <message> - <location filename="pluginlist.cpp" line="985"/> + <location filename="pluginlist.cpp" line="988"/> <source>There is an ini file connected to this plugin. Its settings will be added to your game settings, overwriting in case of conflicts.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="pluginlist.cpp" line="989"/> + <location filename="pluginlist.cpp" line="992"/> <source>This ESP is flagged as an ESL. It will adhere to the ESP load order but the records will be loaded in ESL space.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="pluginlist.cpp" line="1164"/> + <location filename="pluginlist.cpp" line="1167"/> <source>failed to restore load order for %1</source> <translation type="unfinished"></translation> </message> @@ -5599,7 +5415,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="1103"/> + <location filename="settings.cpp" line="1098"/> <source>Mod Organizer</source> <translation type="unfinished"></translation> </message> @@ -5614,18 +5430,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="918"/> + <location filename="mainwindow.cpp" line="920"/> <source>Please use "Help" from the toolbar to get usage instructions to all elements</source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="1396"/> - <location filename="mainwindow.cpp" line="4712"/> + <location filename="mainwindow.cpp" line="1400"/> + <location filename="mainwindow.cpp" line="4715"/> <source><Manage...></source> <translation type="unfinished"></translation> </message> <message> - <location filename="mainwindow.cpp" line="1408"/> + <location filename="mainwindow.cpp" line="1412"/> <source>failed to parse profile %1: %2</source> <translation type="unfinished"></translation> </message> @@ -5661,12 +5477,12 @@ If the folder was still in use, restart MO and try again.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="pluginlist.cpp" line="535"/> + <location filename="pluginlist.cpp" line="538"/> <source>failed to access %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="pluginlist.cpp" line="549"/> + <location filename="pluginlist.cpp" line="552"/> <source>failed to set file time %1</source> <translation type="unfinished"></translation> </message> @@ -5676,12 +5492,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="1110"/> + <location filename="settings.cpp" line="1105"/> <source>Script Extender</source> <translation type="unfinished"></translation> </message> <message> - <location filename="settings.cpp" line="1117"/> + <location filename="settings.cpp" line="1112"/> <source>Proxy DLL</source> <translation type="unfinished"></translation> </message> @@ -5897,28 +5713,28 @@ Select Show Details option to see the full change-log.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="settings.cpp" line="500"/> - <location filename="settings.cpp" line="519"/> + <location filename="settings.cpp" line="503"/> + <location filename="settings.cpp" line="522"/> <source>attempt to store setting for unknown plugin "%1"</source> <translation type="unfinished"></translation> </message> <message> - <location filename="settings.cpp" line="882"/> + <location filename="settings.cpp" line="877"/> <source>Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="settings.cpp" line="883"/> + <location filename="settings.cpp" line="878"/> <source>Failed to create "%1", you may not have the necessary permission. path remains unchanged.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="settings.cpp" line="1154"/> + <location filename="settings.cpp" line="1149"/> <source>Restart Mod Organizer?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="settings.cpp" line="1155"/> + <location filename="settings.cpp" line="1150"/> <source>In order to reset the window geometries, MO must be restarted. Restart it now?</source> <translation type="unfinished"></translation> @@ -6599,22 +6415,22 @@ programs you are intentionally running.</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. @@ -6625,47 +6441,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="300"/> <source>Confirm?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="settingsdialog.cpp" line="333"/> + <location filename="settingsdialog.cpp" line="301"/> <source>This will make all dialogs show up again where you checked the "Remember selection"-box. Continue?</source> <translation type="unfinished"></translation> </message> 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; |
