| |
| |
|
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| void activateWidget(QWidget *w) |
| { |
| QDesktopWidget *desktop = qApp->desktop(); |
| QRect screenRect = desktop->screenGeometry(w); |
| |
| QPoint p((screenRect.width() - w->width()) / 2, (screenRect.height() - w->height()) / 2); |
| w->setGeometry(QRect(p, w->size())); |
| w->activateWindow(); |
| } |
| |
| |
| |
| |
| |
| OpenFloatingPanel::OpenFloatingPanel( |
| CommandId id, |
| const std::string &panelType, |
| QString title) |
| : MenuItemHandler(id), m_title(title), m_panelType(panelType) |
| { |
| } |
| |
| |
| |
| void OpenFloatingPanel::execute() |
| { |
| |
| if (m_panelType == "FlipBook") { |
| FlipBookPool::instance()->pop(); |
| return; |
| } |
| |
| getOrOpenFloatingPanel(m_panelType); |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| } |
| |
| TPanel *OpenFloatingPanel::getOrOpenFloatingPanel(const std::string &panelType) |
| { |
| TMainWindow *currentRoom = TApp::instance()->getCurrentRoom(); |
| QList<TPanel *> list = currentRoom->findChildren<TPanel *>(); |
| QPoint lastFloatingPos = QPoint(0, 0); |
| for (int i = 0; i < list.size(); i++) { |
| TPanel *panel = list.at(i); |
| |
| |
| if (panel->getPanelType() == panelType && panel->isFloating()) { |
| |
| |
| |
| if (!panel->areMultipleInstancesAllowed() && !panel->isHidden()) { |
| activateWidget(panel); |
| return panel; |
| } |
| |
| |
| if (panel->isHidden()) { |
| |
| panel->reset(); |
| |
| currentRoom->addDockWidget(panel); |
| panel->show(); |
| panel->raise(); |
| return panel; |
| } else |
| lastFloatingPos = panel->pos(); |
| } |
| } |
| |
| |
| TPanel *panel = TPanelFactory::createPanel( |
| currentRoom, |
| QString::fromStdString(panelType)); |
| if (!panel) |
| return 0; |
| |
| panel->setFloating(true); |
| panel->show(); |
| panel->raise(); |
| if (!lastFloatingPos.isNull()) |
| panel->move(QPoint(lastFloatingPos.x() + 30, lastFloatingPos.y() + 30)); |
| |
| return panel; |
| } |
| |