bool EventPlugin::closeEvent() { qfLogFuncFrame(); m_classNameCache.clear(); setEventName(QString()); QF_SAFE_DELETE(m_eventConfig); emit eventOpened(eventName()); //comment it till QE can load event with invalid name return true; }
InteractionChangeStateToFromManipulationEvent::InteractionChangeStateToFromManipulationEvent( std::vector<PICKEDENTITY>* pickedEntitiesList, bool toManipulation, StateActionModel* previousStateActionModel, StateActionModel* nextStateActionModel) : InteractionChangeStateEvent(pickedEntitiesList, toManipulation ? Interaction::STATE_SELECTION : Interaction::STATE_MANIPULATION, toManipulation ? Interaction::STATE_MANIPULATION : Interaction::STATE_IDLE, previousStateActionModel, nextStateActionModel) { setEventName("InteractionChangeStateToFromManipulationEvent"); this->toManipulation = toManipulation ? 1 : 0; }
bool EventPlugin::openEvent(const QString &_event_name) { closeEvent(); //return true; qff::MainWindow *fwk = qff::MainWindow::frameWork(); QString event_name = _event_name; ConnectionSettings connection_settings; ConnectionType connection_type = connection_settings.connectionType(); //console.debug("openEvent()", "event_name:", event_name, "connection_type:", connection_type); bool ok = false; if(connection_type == ConnectionType::SqlServer) { //console.debug(db); QStringList event_names = existingSqlEventNames(); if(!event_names.contains(event_name)) event_name = QString(); ok = !event_name.isEmpty(); if(!ok) { event_name = QInputDialog::getItem(fwk, tr("Query"), tr("Open event"), event_names, 0, false, &ok); } //Log.info(event_name, typeof event_name, (event_name)? "T": "F"); ok = ok && !event_name.isEmpty(); if(ok) { qfs::Connection conn(QSqlDatabase::database()); if(conn.setCurrentSchema(event_name)) { ConnectionSettings settings; settings.setEventName(event_name); ok = true; } } } else if(connection_type == ConnectionType::SingleFile) { QString event_fn; if(!event_name.isEmpty()) { event_fn = eventNameToFileName(event_name); if(!QFile::exists(event_fn)) { event_fn = event_name = QString(); } } if(event_name.isEmpty()) { QStringList event_names = existingFileEventNames(connection_settings.singleWorkingDir()); event_name = QInputDialog::getItem(fwk, tr("Query"), tr("Open event"), event_names, 0, false, &ok); //event_fn = qfd::FileDialog::getOpenFileName(fwk, tr("Select event"), connection_settings.singleWorkingDir(), tr("Quick Event files (*%1)").arg(qbe_ext)); if(ok && !event_name.isEmpty()) { event_fn = eventNameToFileName(event_name); } } //Log.info(event_name, typeof event_name, (event_name)? "T": "F"); { QString conn_name; { qfs::Connection conn(QSqlDatabase::database()); conn_name = conn.connectionName(); conn.close(); } qfInfo() << "removing database:" << conn_name; QSqlDatabase::removeDatabase(conn_name); QSqlDatabase::addDatabase("QSQLITE"); } if(event_fn.isEmpty()) { ok = false; } else { if(QFile::exists(event_fn)) { qfs::Connection conn(QSqlDatabase::database()); conn.setDatabaseName(event_fn); qfInfo() << "Opening database file" << event_fn; if(conn.open()) { qfs::Query q(conn); ok = q.exec("PRAGMA foreign_keys=ON"); } else { qfd::MessageBox::showError(fwk, tr("Open Database Error: %1").arg(conn.errorString())); } } else { qfd::MessageBox::showError(fwk, tr("Database file %1 doesn't exist.").arg(event_fn)); } } } else { qfError() << "Invalid connection type:" << static_cast<int>(connection_type); } if(ok) { eventConfig(true); connection_settings.setEventName(event_name); setEventName(event_name); emit eventOpened(eventName()); //emit reloadDataRequest(); } return ok; }
void EventPlugin::onInstalled() { qff::MainWindow *fwk = qff::MainWindow::frameWork(); m_actConnectDb = new qfw::Action(tr("&Connect to database")); //a->setShortcut("ctrl+L"); connect(m_actConnectDb, SIGNAL(triggered()), this, SLOT(connectToSqlServer())); m_actOpenEvent = new qfw::Action(tr("&Open event")); //m_actOpenEvent->setShortcut("Ctrl+O"); m_actOpenEvent->setEnabled(false); connect(m_actOpenEvent, SIGNAL(triggered()), this, SLOT(openEvent())); m_actCreateEvent = new qfw::Action(tr("Create eve&nt")); //m_actCreateEvent->setShortcut("Ctrl+N"); m_actCreateEvent->setEnabled(false); connect(m_actCreateEvent, SIGNAL(triggered()), this, SLOT(createEvent())); m_actEditEvent = new qfw::Action(tr("E&dit event")); m_actEditEvent->setEnabled(false); connect(m_actEditEvent, SIGNAL(triggered()), this, SLOT(editEvent())); connect(this, &EventPlugin::eventNameChanged, [this](const QString &event_name) { this->m_actEditEvent->setEnabled(!event_name.isEmpty()); }); m_actExportEvent = new qfw::Action(tr("E&xport event")); m_actExportEvent->setEnabled(false); connect(m_actExportEvent, &QAction::triggered, this, &EventPlugin::exportEvent); m_actImportEvent = new qfw::Action(tr("I&mport event")); m_actImportEvent->setEnabled(false); connect(m_actImportEvent, &QAction::triggered, this, &EventPlugin::importEvent_qbe); connect(this, SIGNAL(eventNameChanged(QString)), fwk->statusBar(), SLOT(setEventName(QString))); connect(this, SIGNAL(currentStageIdChanged(int)), fwk->statusBar(), SLOT(setStageNo(int))); connect(fwk, &qff::MainWindow::pluginsLoaded, this, &EventPlugin::connectToSqlServer); connect(this, &EventPlugin::eventOpened, this, &EventPlugin::onEventOpened); qfw::Action *a_quit = fwk->menuBar()->actionForPath("file/import", false); a_quit->addActionBefore(m_actConnectDb); a_quit->addSeparatorBefore(); m_actEvent = m_actConnectDb->addMenuAfter("file.event", tr("&Event")); m_actEvent->addActionInto(m_actCreateEvent); m_actEvent->addActionInto(m_actOpenEvent); m_actEvent->addActionInto(m_actEditEvent); m_actEvent->addActionInto(m_actExportEvent); m_actEvent->addActionInto(m_actImportEvent); qfw::ToolBar *tb = fwk->toolBar("Event", true); tb->setObjectName("EventToolbar"); { QToolButton *bt_stage = new QToolButton(); //bt_stage->setFlat(true); bt_stage->setAutoRaise(true); bt_stage->setCheckable(true); tb->addWidget(bt_stage); m_cbxStage = new QComboBox(); connect(m_cbxStage, SIGNAL(activated(int)), this, SLOT(onCbxStageActivated(int))); connect(this, &EventPlugin::currentStageIdChanged, [bt_stage](int stage_id) { bt_stage->setText(tr("Current stage E%1").arg(stage_id)); }); QAction *act_stage = tb->addWidget(m_cbxStage); act_stage->setVisible(false); auto *style = qf::qmlwidgets::Style::instance(); QIcon ico(style->icon("settings")); m_actEditStage = new qfw::Action(ico, "Stage settings"); m_actEditStage->setVisible(false); connect(m_actEditStage, SIGNAL(triggered()), this, SLOT(editStage())); tb->addAction(m_actEditStage); connect(bt_stage, &QPushButton::clicked, [this, act_stage](bool checked) { act_stage->setVisible(checked); m_actEditStage->setVisible(checked); }); } }