From 2b57172eb8ab23f2fab580be73c570f44500ed8d Mon Sep 17 00:00:00 2001
From: isanae <14251494+isanae@users.noreply.github.com>
Date: Tue, 25 Jun 2019 12:26:25 -0400
Subject: added path and explore button to images tab
---
src/modinfodialog.h | 14 ++++++++++++++
src/modinfodialog.ui | 44 +++++++++++++++++++++++++++++++++++++++---
src/modinfodialogconflicts.cpp | 18 ++++-------------
src/modinfodialogimages.cpp | 39 +++++++++++++++++++++++++++++++++----
src/modinfodialogimages.h | 3 +++
5 files changed, 97 insertions(+), 21 deletions(-)
(limited to 'src')
diff --git a/src/modinfodialog.h b/src/modinfodialog.h
index e814dcf4..8ddaf86c 100644
--- a/src/modinfodialog.h
+++ b/src/modinfodialog.h
@@ -45,6 +45,20 @@ FileRenamer::RenameResults unhideFile(FileRenamer& renamer, const QString &oldNa
int naturalCompare(const QString& a, const QString& b);
+class ElideLeftDelegate : public QStyledItemDelegate
+{
+public:
+ using QStyledItemDelegate::QStyledItemDelegate;
+
+protected:
+ void initStyleOption(QStyleOptionViewItem* o, const QModelIndex& i) const
+ {
+ QStyledItemDelegate::initStyleOption(o, i);
+ o->textElideMode = Qt::ElideLeft;
+ }
+};
+
+
/**
* this is a larger dialog used to visualise information about the mod.
* @todo this would probably a good place for a plugin-system
diff --git a/src/modinfodialog.ui b/src/modinfodialog.ui
index a152c292..9f4ae873 100644
--- a/src/modinfodialog.ui
+++ b/src/modinfodialog.ui
@@ -192,8 +192,11 @@
-
-
+
+
+
+ 3
+
0
@@ -206,6 +209,41 @@
0
+ -
+
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
-
+
+
+ Open in Explorer
+
+
+
+ -
+
+
+ true
+
+
+
+
+
+
+ -
+
+
@@ -403,7 +441,7 @@ Most mods do not have optional esps, so chances are good you are looking at an e
-
- 0
+ 1
diff --git a/src/modinfodialogconflicts.cpp b/src/modinfodialogconflicts.cpp
index 52d25954..c053e64c 100644
--- a/src/modinfodialogconflicts.cpp
+++ b/src/modinfodialogconflicts.cpp
@@ -13,20 +13,6 @@ using namespace MOBase;
const std::size_t max_small_selection = 50;
-class ElideLeftDelegate : public QStyledItemDelegate
-{
-public:
- using QStyledItemDelegate::QStyledItemDelegate;
-
-protected:
- void initStyleOption(QStyleOptionViewItem* o, const QModelIndex& i) const
- {
- QStyledItemDelegate::initStyleOption(o, i);
- o->textElideMode = Qt::ElideLeft;
- }
-};
-
-
class ConflictItem
{
public:
@@ -263,6 +249,10 @@ private:
void doSort()
{
+ if (m_items.empty()) {
+ return;
+ }
+
if (m_sortColumn < 0) {
return;
}
diff --git a/src/modinfodialogimages.cpp b/src/modinfodialogimages.cpp
index 5b35a9b1..22c004e6 100644
--- a/src/modinfodialogimages.cpp
+++ b/src/modinfodialogimages.cpp
@@ -1,13 +1,18 @@
#include "modinfodialogimages.h"
#include "ui_modinfodialog.h"
+#include "utility.h"
ImagesTab::ImagesTab(
OrganizerCore& oc, PluginContainer& plugin,
QWidget* parent, Ui::ModInfoDialog* ui, int id) :
ModInfoDialogTab(oc, plugin, parent, ui, id),
- m_image(new ScalableImage), m_margins(3), m_padding(5), m_border(1)
+ m_image(new ScalableImage), m_margins(3), m_padding(5), m_border(1),
+ m_selection(nullptr)
{
- ui->imagesImage->layout()->addWidget(m_image);
+ auto* ly = new QVBoxLayout(ui->imagesImage);
+ ly->setContentsMargins({0, 0, 0, 0});
+ ly->addWidget(m_image);
+
delete ui->imagesThumbnails->layout();
ui->tabImagesSplitter->setSizes({128, 1});
@@ -18,13 +23,15 @@ ImagesTab::ImagesTab(
ui->imagesScrollArea->setTab(this);
ui->imagesThumbnails->setTab(this);
+ connect(ui->imagesExplore, &QAbstractButton::clicked, [&]{ onExplore(); });
+
getSupportedFormats();
}
void ImagesTab::clear()
{
- m_image->clear();
m_files.clear();
+ select(nullptr);
setHasData(false);
}
@@ -64,6 +71,21 @@ void ImagesTab::getSupportedFormats()
}
}
+void ImagesTab::select(const File* f)
+{
+ if (f) {
+ ui->imagesPath->setText(f->path);
+ ui->imagesExplore->setEnabled(true);
+ m_image->setImage(f->original);
+ } else {
+ ui->imagesPath->clear();
+ ui->imagesExplore->setEnabled(false);
+ m_image->clear();
+ }
+
+ m_selection = f;
+}
+
int ImagesTab::calcThumbSize(int availableWidth) const
{
return availableWidth - (m_margins * 2);
@@ -227,10 +249,19 @@ void ImagesTab::thumbnailsMouseEvent(QMouseEvent* e)
}
if (const auto* file=fileAtPos(e->pos())) {
- m_image->setImage(file->original);
+ select(file);
}
}
+void ImagesTab::onExplore()
+{
+ if (!m_selection) {
+ return;
+ }
+
+ MOBase::shell::ExploreFile(m_selection->path);
+}
+
bool ImagesTab::needsReload(const File& file, const QSize& imageSize) const
{
if (file.failed) {
diff --git a/src/modinfodialogimages.h b/src/modinfodialogimages.h
index 9c3e5746..cb9a2d67 100644
--- a/src/modinfodialogimages.h
+++ b/src/modinfodialogimages.h
@@ -107,12 +107,15 @@ private:
std::vector m_files;
std::vector m_supportedFormats;
int m_margins, m_padding, m_border;
+ const File* m_selection;
void getSupportedFormats();
+ void select(const File* file);
void scrollAreaResized(const QSize& s);
void paintThumbnails(QPaintEvent* e);
void thumbnailsMouseEvent(QMouseEvent* e);
+ void onExplore();
int calcThumbSize(int availableWidth) const;
int calcWidgetHeight(int availableWidth) const;
--
cgit v1.3.1