Skip to content

Commit

Permalink
refactor: hide codeporting ui when no used
Browse files Browse the repository at this point in the history
Log:
Change-Id: I2393e9805597c5fec52b26e391f846ff44c53241
  • Loading branch information
deepin-mozart committed Nov 29, 2023
1 parent 9f03925 commit 6201720
Show file tree
Hide file tree
Showing 6 changed files with 33 additions and 6 deletions.
3 changes: 3 additions & 0 deletions src/plugins/codeeditor/codeeditor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,9 @@ bool CodeEditor::start()
if (!windowService->addContextWidget) {
windowService->addContextWidget = std::bind(&NavEditMainWindow::addContextWidget, navEditWindow, _1, _2, _3);
}
if (!windowService->hasContextWidget) {
windowService->hasContextWidget = std::bind(&NavEditMainWindow::hasContextWidget, navEditWindow, _1);
}

if (!windowService->removeContextWidget) {
windowService->removeContextWidget = std::bind(&NavEditMainWindow::removeContextWidget, navEditWindow, _1);
Expand Down
11 changes: 11 additions & 0 deletions src/plugins/codeeditor/mainframe/naveditmainwindow.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -208,6 +208,17 @@ void NavEditMainWindow::addContextWidget(const QString &title, AbstractWidget *c
qTabWidgetContext->insertTab(index, qWidget, title);
}

bool NavEditMainWindow::hasContextWidget(const QString &title)
{
QMutexLocker locker(&mutex);
int count = qTabWidgetContext->count();
for (int i = 0; i < count; ++i) {
if (qTabWidgetContext->tabText(i) == title)
return true;
}
return false;
}

void NavEditMainWindow::removeContextWidget(AbstractWidget *contextWidget)
{
DWidget *qWidget = static_cast<DWidget*>(contextWidget->qWidget());
Expand Down
1 change: 1 addition & 0 deletions src/plugins/codeeditor/mainframe/naveditmainwindow.h
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ class NavEditMainWindow : public DMainWindow
// return old watch widget
DWidget *setWidgetWatch(AbstractWidget *watchWidget);
void addContextWidget(const QString &title, AbstractWidget *contextWidget, const QString &group);
bool hasContextWidget(const QString &title);
// the page widget itself is not deleted.
void removeContextWidget(AbstractWidget *contextWidget);
bool switchWidgetWorkspace(const QString &title);
Expand Down
16 changes: 16 additions & 0 deletions src/plugins/codeporting/codeportingmanager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
#include "codeportingmanager.h"
#include "configwidget.h"
#include "common/widget/outputpane.h"
#include "base/abstractwidget.h"
#include "services/window/windowservice.h"
#include "services/project/projectservice.h"
#include "reportpane.h"
Expand Down Expand Up @@ -145,6 +146,21 @@ CodePortingManager::~CodePortingManager()

void CodePortingManager::resetUI()
{
auto &ctx = dpfInstance.serviceContext();
auto windowService = ctx.service<WindowService>(WindowService::name());

QString group = "Porting";

if (!windowService->hasContextWidget(tr("C&ode Porting"))) {
// Add output pane
windowService->addContextWidget(tr("C&ode Porting"), new AbstractWidget(CodePortingManager::instance()->getOutputPane()), group);
}

if (!windowService->hasContextWidget(tr("Porting &Report"))) {
// Add report pane
windowService->addContextWidget(tr("Porting &Report"), new AbstractWidget(CodePortingManager::instance()->getReportPane()), group);
}

outputPane->clearContents();
editor.switchContext(tr("C&ode Porting"));
}
6 changes: 0 additions & 6 deletions src/plugins/codeporting/codeportingplugin.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -36,12 +36,6 @@ bool CodePortingPlugin::start()
AbstractAction *actionImpl = new AbstractAction(action);
windowService->addAction(MWM_TOOLS, actionImpl);

// Add output pane
windowService->addContextWidget(tr("C&ode Porting"), new AbstractWidget(CodePortingManager::instance()->getOutputPane()), "Porting");

// Add report pane
windowService->addContextWidget(tr("Porting &Report"), new AbstractWidget(CodePortingManager::instance()->getReportPane()), "Porting");

return true;
}

Expand Down
2 changes: 2 additions & 0 deletions src/services/window/windowservice.h
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,8 @@ class WindowService final : public dpf::PluginService, dpf::AutoServiceRegister<
*/
DPF_INTERFACE(void, addContextWidget, const QString &contextTab, AbstractWidget *contextWidget, const QString &group);

DPF_INTERFACE(bool, hasContextWidget, const QString &title);

/**
* @brief DPF_INTERFACE
* @param contextWidget
Expand Down

0 comments on commit 6201720

Please sign in to comment.