修复多个预览插件切换目录时会相互影响的问题

This commit is contained in:
Qxiangwenjie 2022-05-17 11:09:17 +08:00 committed by Yue-Lan
parent 1b76374844
commit 2da8319656
2 changed files with 23 additions and 7 deletions

View File

@ -175,7 +175,16 @@ TabWidget::TabWidget(QWidget *parent) : QMainWindow(parent)
auto plugin = Peony::PreviewPageFactoryManager::getInstance()->getPlugin(id);
setPreviewPage(plugin->createPreviewPage());
} else {
setPreviewPage(nullptr);
bool isSetPreviewPageNull = true;
for(auto action : m_preview_action_group->actions()){
if(action->isChecked() && action->isVisible()){
isSetPreviewPageNull = false;
break;
}
}
if(isSetPreviewPageNull){
setPreviewPage(nullptr);
}
}
});
@ -259,6 +268,7 @@ TabWidget::TabWidget(QWidget *parent) : QMainWindow(parent)
});
}
previewButtons->addActions(group->actions());
m_preview_action_group = group;
for (auto action : group->actions()) {
auto button = qobject_cast<QToolButton *>(previewButtons->widgetForAction(action));
button->setFixedSize(26, 26);
@ -792,19 +802,23 @@ void TabWidget::updatePreviewPageVisible()
{
auto currentUri = getCurrentUri();
if(currentUri.startsWith("computer://")){
m_preview_action->setVisible(false);
m_preview_action_group->setVisible(false);
}else{
m_preview_action->setVisible(true);
m_preview_action_group->setVisible(true);
}
auto manager = Peony::PreviewPageFactoryManager::getInstance();
auto pluginNames = manager->getPluginNames();
for (auto name : pluginNames) {
auto factory = manager->getPlugin(name);
if(m_preview_action->isChecked() && m_preview_action->isVisible()){
Q_EMIT m_buttons->previewPageButtonTrigger(true, factory->name());
}else{
Q_EMIT m_buttons->previewPageButtonTrigger(false, factory->name());
for (auto action : m_preview_action_group->actions()){
if(!action->text().compare(name)){
if(action->isChecked() && action->isVisible()){
Q_EMIT m_buttons->previewPageButtonTrigger(true, factory->name());
}else{
Q_EMIT m_buttons->previewPageButtonTrigger(false, factory->name());
}
}
}
}
}

View File

@ -32,6 +32,7 @@
#include <QList>
#include <QLineEdit>
#include <QSignalMapper>
#include <QActionGroup>
#include "navigation-tab-bar.h"
#include "file-info.h"
#include "tab-status-bar.h"
@ -225,6 +226,7 @@ private:
QAction *m_current_preview_action = nullptr;
QAction *m_preview_action = nullptr;
QActionGroup *m_preview_action_group = nullptr;
QToolBar *m_trash_bar;
QToolBar *m_search_bar;