Skip to content

Commit

Permalink
更新清空布局的算法,添加更改图片参考宽度的设置
Browse files Browse the repository at this point in the history
  • Loading branch information
cathaysia committed May 26, 2021
1 parent 63b66a6 commit dc41731
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 13 deletions.
30 changes: 19 additions & 11 deletions src/PicFlowView.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,9 @@
#include <QApplication>
#include <QDialog>
#include <QDir>
#include <QDoubleSpinBox>
#include <QHBoxLayout>
#include <QInputDialog>
#include <QLabel>
#include <QList>
#include <QMenu>
Expand Down Expand Up @@ -36,8 +38,6 @@ PicFlowView::PicFlowView(QObject* const parent)

scrollWidget->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
scrollWidget->setWidget(box);
// 设置图片的理想宽度
content_->setWidgetWidth(300);
}

PicFlowView::~PicFlowView() noexcept {
Expand Down Expand Up @@ -89,21 +89,29 @@ void PicFlowView::setup(QObject* const parent) {
ac->setObjectName(QLatin1String("PiclLowView"));
ac->setActionCategory(DPluginAction::ActionCategory::GenericView);
ac->setText("PicFlowView");
// 添加菜单项
auto setting = new QMenu;
auto widthAction = setting->addAction(tr("设置参考宽度"));
widthAction->setWhatsThis(tr("设置图片的参考宽度,图片的宽度会在更<b>倾向于</b>选择此宽度"));
// 添加设置
connect(widthAction, &QAction::triggered, [this]() {
bool ok = false;
auto result = QInputDialog::getDouble(nullptr, tr("输入参考宽度"), tr("参考宽度"), 300, 10, 9999, 1, &ok);
if(ok) this->width_ = result;
});
ac->setMenu(setting);
connect(ac, &DPluginAction::triggered, this, &PicFlowView::flowView);
addAction(ac);

}

void PicFlowView::flowView() {
auto* const iface = infoIface(sender());
// 首先清空容器内
if(content_){
auto parent = content_->parentWidget();
parent->setLayout(nullptr);
delete content_;
content_ = new Z::FlowLayout;
content_->setWidgetWidth(300);
parent->setLayout(content_);
// 设置图片的参考宽度
content_->setWidgetWidth(width_);
// 首先清空容器内的元素
while(content_->list().length()) {
// 若容器内的元素不为零
content_->takeAt(0);
}
for(auto& item: iface->currentAlbumItems()) {
QString imgPath = item.toString().replace("file://", "");
Expand Down
8 changes: 6 additions & 2 deletions src/PicFlowView.h
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
#ifndef DIGIKAMFLOWPLUGIN_DIGIKAMFLOWPLUGIN
#define DIGIKAMFLOWPLUGIN_DIGIKAMFLOWPLUGIN

#include <digikam/dplugingeneric.h>
#include <digikam/coredbaccess.h>

#include <digikam/dplugingeneric.h>

#include <flowlayout.h>

Expand Down Expand Up @@ -37,6 +36,11 @@ class PicFlowView : public DPluginGeneric {
bool eventFilter(QObject* watched, QEvent* event) override;

private:
/**
* @brief 图片的参考宽度
*
*/
qreal width_ = 300;
QDialog* main_dialog_;
Z::FlowLayout* content_;
};
Expand Down

0 comments on commit dc41731

Please sign in to comment.