summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorisanae <14251494+isanae@users.noreply.github.com>2019-06-25 12:26:25 -0400
committerisanae <14251494+isanae@users.noreply.github.com>2019-07-02 10:10:19 -0400
commit2b57172eb8ab23f2fab580be73c570f44500ed8d (patch)
tree84a6c79ac3763f16b8ac9840c5727369dfe9589f
parent139c33ccc4f529083b0288907caad2946a3f5a8f (diff)
added path and explore button to images tab
-rw-r--r--src/modinfodialog.h14
-rw-r--r--src/modinfodialog.ui44
-rw-r--r--src/modinfodialogconflicts.cpp18
-rw-r--r--src/modinfodialogimages.cpp39
-rw-r--r--src/modinfodialogimages.h3
5 files changed, 97 insertions, 21 deletions
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 @@
</item>
</layout>
</widget>
- <widget class="QWidget" name="imagesImage" native="true">
- <layout class="QVBoxLayout" name="verticalLayout_18">
+ <widget class="QWidget" name="imagesContainer" native="true">
+ <layout class="QVBoxLayout" name="verticalLayout_18" stretch="0,1">
+ <property name="spacing">
+ <number>3</number>
+ </property>
<property name="leftMargin">
<number>0</number>
</property>
@@ -206,6 +209,41 @@
<property name="bottomMargin">
<number>0</number>
</property>
+ <item>
+ <widget class="QWidget" name="widget_12" native="true">
+ <layout class="QHBoxLayout" name="horizontalLayout_3">
+ <property name="leftMargin">
+ <number>0</number>
+ </property>
+ <property name="topMargin">
+ <number>0</number>
+ </property>
+ <property name="rightMargin">
+ <number>0</number>
+ </property>
+ <property name="bottomMargin">
+ <number>0</number>
+ </property>
+ <item>
+ <widget class="QToolButton" name="imagesExplore">
+ <property name="text">
+ <string>Open in Explorer</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLineEdit" name="imagesPath">
+ <property name="readOnly">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item>
+ <widget class="QWidget" name="imagesImage" native="true"/>
+ </item>
</layout>
</widget>
</widget>
@@ -403,7 +441,7 @@ Most mods do not have optional esps, so chances are good you are looking at an e
<item>
<widget class="QTabWidget" name="tabConflictsTabs">
<property name="currentIndex">
- <number>0</number>
+ <number>1</number>
</property>
<widget class="QWidget" name="tab">
<attribute name="title">
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<File> m_files;
std::vector<QString> 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;