| 27 | Q_PROPERTY_CREATE_Q_CPP(ElaWindow, ElaWindowType::StackSwitchMode, StackSwitchMode) |
| 28 | Q_TAKEOVER_NATIVEEVENT_CPP(ElaWindow, d_func()->_appBar); |
| 29 | ElaWindow::ElaWindow(QWidget* parent) |
| 30 | : QMainWindow{parent}, d_ptr(new ElaWindowPrivate()) |
| 31 | { |
| 32 | Q_D(ElaWindow); |
| 33 | d->q_ptr = this; |
| 34 | d->_pStackSwitchMode = ElaWindowType::StackSwitchMode::Popup; |
| 35 | setProperty("ElaBaseClassName", "ElaWindow"); |
| 36 | resize(1020, 680); // 默认宽高 |
| 37 | |
| 38 | d->_pThemeChangeTime = 700; |
| 39 | d->_pNavigationBarDisplayMode = ElaNavigationType::NavigationDisplayMode::Auto; |
| 40 | |
| 41 | // 自定义AppBar |
| 42 | d->_appBar = new ElaAppBar(this); |
| 43 | d->_appBar->setWindowButtonFlag(ElaAppBarType::NavigationButtonHint); |
| 44 | connect(d->_appBar, &ElaAppBar::routeBackButtonClicked, this, []() { |
| 45 | ElaActionCommander::getInstance()->undoCommand("ElaWidgetToolsAction"); |
| 46 | }); |
| 47 | connect(d->_appBar, &ElaAppBar::routeForwardButtonClicked, this, []() { |
| 48 | ElaActionCommander::getInstance()->redoCommand("ElaWidgetToolsAction"); |
| 49 | }); |
| 50 | connect(d->_appBar, &ElaAppBar::closeButtonClicked, this, &ElaWindow::closeButtonClicked); |
| 51 | // 导航栏 |
| 52 | d->_navigationBar = new ElaNavigationBar(this); |
| 53 | // 返回按钮状态变更 |
| 54 | connect(ElaActionCommander::getInstance(), &ElaActionCommander::commanderStateChanged, d, &ElaWindowPrivate::onNavigationRouterStateChanged); |
| 55 | |
| 56 | // 转发用户卡片点击信号 |
| 57 | connect(d->_navigationBar, &ElaNavigationBar::userInfoCardClicked, this, &ElaWindow::userInfoCardClicked); |
| 58 | // 转发点击信号 |
| 59 | connect(d->_navigationBar, &ElaNavigationBar::navigationNodeClicked, this, &ElaWindow::navigationNodeClicked); |
| 60 | // 跳转处理 |
| 61 | connect(d->_navigationBar, &ElaNavigationBar::navigationNodeClicked, d, &ElaWindowPrivate::onNavigationNodeClicked); |
| 62 | // 新增窗口 |
| 63 | connect(d->_navigationBar, &ElaNavigationBar::navigationNodeAdded, d, &ElaWindowPrivate::onNavigationNodeAdded); |
| 64 | // 移除窗口 |
| 65 | connect(d->_navigationBar, &ElaNavigationBar::navigationNodeRemoved, d, &ElaWindowPrivate::onNavigationNodeRemoved); |
| 66 | // 在新窗口打开 |
| 67 | connect(d->_navigationBar, &ElaNavigationBar::pageOpenInNewWindow, this, &ElaWindow::pageOpenInNewWindow); |
| 68 | |
| 69 | // 导航中心堆栈窗口 |
| 70 | d->_navigationCenterStackedWidget = new ElaCentralStackedWidget(this); |
| 71 | d->_navigationCenterStackedWidget->setContentsMargins(0, 0, 0, 0); |
| 72 | QWidget* navigationCentralWidget = new QWidget(this); |
| 73 | navigationCentralWidget->setObjectName("ElaWindowNavigationCentralWidget"); |
| 74 | navigationCentralWidget->setStyleSheet("#ElaWindowNavigationCentralWidget{background-color:transparent;}"); |
| 75 | navigationCentralWidget->installEventFilter(this); |
| 76 | d->_centerLayout = new QHBoxLayout(navigationCentralWidget); |
| 77 | d->_centerLayout->setSpacing(5); |
| 78 | d->_centerLayout->addWidget(d->_navigationBar); |
| 79 | d->_centerLayout->addWidget(d->_navigationCenterStackedWidget); |
| 80 | d->_centerLayout->setContentsMargins(d->_contentsMargins, 0, 0, 0); |
| 81 | |
| 82 | // 事件总线 |
| 83 | d->_focusEvent = new ElaEvent("WMWindowClicked", "onWMWindowClickedEvent", d); |
| 84 | d->_focusEvent->registerAndInit(); |
| 85 | |
| 86 | // 导航栏操作 |
nothing calls this directly
no test coverage detected