void TemplatesViewActionHandler::updateActions() { aAdd->setEnabled(!m_IsLocked); aEdit->setEnabled(!m_IsLocked); aRemove->setEnabled(!m_IsLocked); Core::Command *cmd = actionManager()->command(Core::Constants::A_TEMPLATE_LOCK); if (!m_IsLocked) { cmd->setTranslations(Trans::Constants::UNLOCKED_TEXT, Trans::Constants::UNLOCKED_TEXT); cmd->action()->setIcon(theme()->icon(Core::Constants::ICONUNLOCK)); } else { cmd->setTranslations(Trans::Constants::LOCKED_TEXT, Trans::Constants::LOCKED_TEXT); cmd->action()->setIcon(theme()->icon(Core::Constants::ICONLOCK)); } cmd->retranslate(); }
/////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////// ACTION HANDLER /////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////// // Actions : // Toggle search patient view // Search method ? // Limit database usage ? // View patients information // Patient selection history PatientActionHandler::PatientActionHandler(QObject *parent) : QObject(parent), m_RecentPatients(0), aSearchName(0), aSearchFirstname(0), aSearchNameFirstname(0), aSearchDob(0), aViewPatientInformation(0), aPrintPatientInformation(0), aShowPatientDatabaseInformation(0), aViewCurrentPatientData(0), aExportPatientFile(0), gSearchMethod(0) { setObjectName("PatientActionHandler"); m_RecentPatients = new Core::FileManager(this); Core::ITheme *th = Core::ICore::instance()->theme(); QAction *a = 0; Core::Command *cmd = 0; Core::Context ctx(Patients::Constants::C_PATIENTS); Core::Context searchcontext(Patients::Constants::C_PATIENTS_SEARCH, Core::Constants::C_GLOBAL); Core::Context globalcontext(Core::Constants::C_GLOBAL); Core::ActionContainer *menu = actionManager()->actionContainer(Core::Id(Core::Constants::M_PATIENTS)); if (!menu) { Utils::warningMessageBox(tr("Fatal Error"), tr("%1: Unable to retrieve patients menu.").arg(objectName())); return; } Q_ASSERT(menu); if (!menu) return; menu->appendGroup(Core::Id(Constants::G_PATIENTS)); menu->appendGroup(Core::Id(Constants::G_PATIENTS_NEW)); menu->appendGroup(Core::Id(Constants::G_PATIENTS_SEARCH)); menu->appendGroup(Core::Id(Constants::G_PATIENTS_HISTORY)); menu->appendGroup(Core::Id(Constants::G_PATIENTS_INFORMATION)); // actionManager()->actionContainer(Core::Constants::M_PATIENTS)->addMenu(menu, Core::Constants::G_PATIENTS); connect(actionManager()->command(Core::Constants::A_PATIENT_REMOVE)->action(), SIGNAL(triggered()), this, SLOT(removePatient())); // Search method menu Core::ActionContainer *searchmenu = actionManager()->actionContainer(Core::Id(Constants::M_PATIENTS_SEARCH)); if (!searchmenu) { searchmenu = actionManager()->createMenu(Constants::M_PATIENTS_SEARCH); searchmenu->appendGroup(Core::Id(Constants::G_PATIENTS_SEARCH)); searchmenu->setTranslations(Trans::Constants::SEARCHMENU_TEXT); menu->addMenu(searchmenu, Core::Id(Constants::G_PATIENTS_SEARCH)); } Q_ASSERT(searchmenu); // TODO: create search icons gSearchMethod = new QActionGroup(this); a = aSearchName = new QAction(this); a->setObjectName("aSearchName"); a->setCheckable(true); a->setChecked(false); a->setIcon(th->icon(Core::Constants::ICONSEARCH)); cmd = actionManager()->registerAction(a, Core::Id(Constants::A_SEARCH_PATIENTS_BY_NAME), searchcontext); cmd->setTranslations(Constants::SEARCHBYNAME_TEXT, Constants::SEARCHBYNAME_TOOLTIP, Constants::TRANS_CONTEXT); searchmenu->addAction(cmd, Core::Id(Constants::G_PATIENTS_SEARCH)); gSearchMethod->addAction(a); a = aSearchFirstname = new QAction(this); a->setObjectName("aSearchFirstname"); a->setCheckable(true); a->setChecked(false); a->setIcon(th->icon(Core::Constants::ICONSEARCH)); cmd = actionManager()->registerAction(a, Core::Id(Constants::A_SEARCH_PATIENTS_BY_FIRSTNAME), searchcontext); cmd->setTranslations(Constants::SEARCHBYFIRSTNAME_TEXT, Constants::SEARCHBYFIRSTNAME_TOOLTIP, Constants::TRANS_CONTEXT); searchmenu->addAction(cmd, Core::Id(Constants::G_PATIENTS_SEARCH)); gSearchMethod->addAction(a); a = aSearchNameFirstname = new QAction(this); a->setObjectName("aSearchNameFirstname"); a->setCheckable(true); a->setChecked(false); a->setIcon(th->icon(Core::Constants::ICONSEARCH)); cmd = actionManager()->registerAction(a, Core::Id(Constants::A_SEARCH_PATIENTS_BY_NAMEFIRSTNAME), searchcontext); cmd->setTranslations(Constants::SEARCHBYNAMEFIRSTNAME_TEXT, Constants::SEARCHBYNAMEFIRSTNAME_TOOLTIP, Constants::TRANS_CONTEXT); searchmenu->addAction(cmd, Core::Id(Constants::G_PATIENTS_SEARCH)); gSearchMethod->addAction(a); a = aSearchDob = new QAction(this); a->setObjectName("aSearchDob"); a->setCheckable(true); a->setChecked(false); a->setIcon(th->icon(Core::Constants::ICONSEARCH)); cmd = actionManager()->registerAction(a, Core::Id(Constants::A_SEARCH_PATIENTS_BY_DOB), searchcontext); cmd->setTranslations(Constants::SEARCHBYDOB_TEXT, Constants::SEARCHBYDOB_TOOLTIP, Constants::TRANS_CONTEXT); searchmenu->addAction(cmd, Core::Id(Constants::G_PATIENTS_SEARCH)); gSearchMethod->addAction(a); connect(gSearchMethod, SIGNAL(triggered(QAction*)), this, SLOT(searchActionChanged(QAction*))); // a = aViewPatientInformation = new QAction(this); // a->setObjectName("aViewPatientInformation"); //// a->setIcon(th->icon(Core::Constants::ICONCLEAR)); // cmd = actionManager()->registerAction(a, Constants::A_VIEWPATIENT_INFOS, globalcontext); // cmd->setTranslations(Trans::Constants::PATIENT_INFORMATION); // menu->addAction(cmd, Constants::G_PATIENTS_INFORMATION); //// connect(a, SIGNAL(triggered()), this, SLOT(clear())); // Export patient file a = aExportPatientFile = new QAction(this); a->setObjectName("aExportPatientFile"); a->setIcon(th->icon(Core::Constants::ICONEXPORTPATIENTFILE)); cmd = actionManager()->registerAction(a, Core::Id(Constants::A_EXPORTPATIENTFILE), ctx); cmd->setTranslations(Trans::Constants::EXPORTPATIENTFILE); cmd->retranslate(); menu->addAction(cmd, Core::Id(Constants::G_PATIENTS_INFORMATION)); connect(aExportPatientFile, SIGNAL(triggered()), this, SLOT(onExportPatientFileRequested())); // Databases information Core::ActionContainer *hmenu = actionManager()->actionContainer(Core::Id(Core::Constants::M_HELP_DATABASES)); if (!hmenu) return; a = aShowPatientDatabaseInformation = new QAction(this); a->setObjectName("aShowPatientDatabaseInformation"); a->setIcon(th->icon(Core::Constants::ICONHELP)); cmd = actionManager()->registerAction(a, Core::Id(Constants::A_VIEWPATIENTDATABASE_INFOS), globalcontext); cmd->setTranslations(Trans::Constants::PATIENT_DATABASE_INFORMATION); cmd->retranslate(); hmenu->addAction(cmd, Core::Id(Core::Constants::G_HELP_DATABASES)); connect(aShowPatientDatabaseInformation,SIGNAL(triggered()), this, SLOT(showPatientDatabaseInformation())); if (!Utils::isReleaseCompilation()) { a = aViewCurrentPatientData = new QAction(this); a->setObjectName("aViewCurrentPatientData"); a->setIcon(th->icon(Core::Constants::ICONPATIENTHISTORY)); cmd = actionManager()->registerAction(a, Core::Id(Constants::A_VIEWCURRENTPATIENTDATA), globalcontext); cmd->setTranslations(Trans::Constants::PATIENT_OVERVIEW); cmd->retranslate(); menu->addAction(cmd, Core::Id(Constants::G_PATIENTS_HISTORY)); connect(aViewCurrentPatientData,SIGNAL(triggered()), this, SLOT(viewCurrentPatientData())); } Core::ActionContainer *recentsMenu = actionManager()->actionContainer(Core::Constants::M_PATIENTS_NAVIGATION); if (!recentsMenu) return; if (!recentsMenu->menu()) return; connect(recentsMenu->menu(), SIGNAL(aboutToShow()), this, SLOT(aboutToShowRecentPatients())); refreshSettings(); connect(patient(), SIGNAL(currentPatientChanged()), this, SLOT(onCurrentPatientChanged())); connect(user(), SIGNAL(userChanged()), this, SLOT(refreshSettings())); }
/////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////// ACTION HANDLER /////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////// FormActionHandler::FormActionHandler(QObject *parent) : QObject(parent), aClear(0), aShowDatabaseInformation(0), aCreateEpisode(0), aValidateEpisode(0), aRenewEpisode(0), aRemoveEpisode(0), aSaveEpisode(0), aTakeScreenshot(0), aAddForm(0), aRemoveSubForm(0), aPrintForm(0), m_CurrentView(0) { setObjectName("FormActionHandler"); QAction *a = 0; Core::Command *cmd = 0; Core::Context ctx(Form::Constants::C_FORM_PLUGINS); // Create the plugin specific menu Core::ActionContainer *menu = actionManager()->actionContainer(Core::Id(Form::Constants::M_PLUGIN_FORM)); if (!menu) { menu = actionManager()->createMenu(Form::Constants::M_PLUGIN_FORM); // menu->appendGroup(Core::Id(Form::Constants::G_PLUGINS_VIEWS)); // menu->appendGroup(Core::Id(Form::Constants::G_PLUGINS_MODES)); // menu->appendGroup(Core::Id(Form::Constants::G_PLUGINS_SEARCH)); // menu->appendGroup(Core::Id(Form::Constants::G_PLUGINS_DRUGS)); // menu->appendGroup(Core::Id(Form::Constants::G_PLUGINS_INTERACTIONS)); menu->setTranslations(Form::Constants::M_FORM_TEXT); // Add the menu to the menubar or to the plugin menu #ifdef FREEMEDFORMS actionManager()->actionContainer(Core::Id(Core::Constants::M_PLUGINS))->addMenu(menu, Core::Constants::G_PLUGINS_FORM); #else actionManager()->actionContainer(Core::Id(Core::Constants::MENUBAR))->addMenu(menu, Core::Constants::G_PLUGINS); #endif } Q_ASSERT(menu); // Create local actions // Example: register existing Core actions aClear = registerAction(Core::Constants::A_LIST_CLEAR, ctx, this); connect(aClear, SIGNAL(triggered()), this, SLOT(onClearRequested())); aSaveEpisode = registerAction(Core::Constants::A_FILE_SAVE, ctx, this); connect(aSaveEpisode, SIGNAL(triggered()), this, SLOT(onSaveEpisodeRequested())); aCreateEpisode = createAction(this, "aCreateEpisode", Core::Constants::ICONADD, Constants::A_ADDEPISODE, ctx, Constants::ADDEPISODE_TEXT, Constants::FORM_TR_CONTEXT, cmd, 0, "", QKeySequence::UnknownKey, false); connect(aCreateEpisode, SIGNAL(triggered()), this, SLOT(onCreateEpisodeRequested())); a = aValidateEpisode = new QAction(this); a->setObjectName("aValidateEpisode"); a->setIcon(theme()->icon(Core::Constants::ICONVALIDATEDARK)); cmd = actionManager()->registerAction(a, Constants::A_VALIDATEEPISODE, ctx); cmd->setTranslations(Constants::VALIDATEEPISODE_TEXT, Constants::VALIDATEEPISODE_TEXT, Constants::FORM_TR_CONTEXT); // cmenu->addAction(cmd, Core::Constants::G_EDIT_LIST); connect(aValidateEpisode, SIGNAL(triggered()), this, SLOT(onValidateEpisodeRequested())); aRenewEpisode = createAction(this, "aRenewEpisode", Core::Constants::ICONRENEW, Constants::A_RENEWEPISODE, ctx, Trans::Constants::RENEW_EPISODE, "", cmd, 0, "", QKeySequence::UnknownKey, false); connect(aRenewEpisode, SIGNAL(triggered()), this, SLOT(onRenewEpisodeRequested())); #ifdef WITH_EPISODE_REMOVAL aRemoveEpisode = createAction(this, "aRemoveEpisode", Core::Constants::ICONREMOVE, Constants::A_REMOVEEPISODE, ctx, Trans::Constants::REMOVE_EPISODE, "", cmd, 0, "", QKeySequence::UnknownKey, false); connect(aRemoveEpisode, SIGNAL(triggered()), this, SLOT(onRemoveEpisodeRequested())); #endif aTakeScreenshot = createAction(this, "aTakeScreenshot", Core::Constants::ICONTAKESCREENSHOT, Constants::A_TAKESCREENSHOT, ctx, Trans::Constants::TAKE_SCREENSHOT, "", cmd, 0, "", QKeySequence::UnknownKey, false); connect(aTakeScreenshot, SIGNAL(triggered()), this, SLOT(onTakeScreenshotRequested())); a = aAddForm = new QAction(this); a->setObjectName("aAddForm"); a->setIcon(theme()->icon(Core::Constants::ICONADD)); cmd = actionManager()->registerAction(a, Constants::A_ADDFORM, ctx); cmd->setTranslations(Constants::ADDFORM_TEXT, Constants::ADDFORM_TEXT, Constants::FORM_TR_CONTEXT); // cmenu->addAction(cmd, Core::Constants::G_EDIT_LIST); connect(aAddForm, SIGNAL(triggered()), this, SLOT(onAddFormRequested())); a = aRemoveSubForm = new QAction(this); a->setObjectName("aRemoveSubForm"); a->setIcon(theme()->icon(Core::Constants::ICONREMOVE)); cmd = actionManager()->registerAction(a, Constants::A_REMOVEFORM, ctx); cmd->setTranslations(Constants::REMOVEFORM_TEXT, Constants::REMOVEFORM_TEXT, Constants::FORM_TR_CONTEXT); // cmenu->addAction(cmd, Core::Constants::G_EDIT_LIST); connect(aRemoveSubForm, SIGNAL(triggered()), this, SLOT(onRemoveFormRequested())); aPrintForm = registerAction(Core::Constants::A_FILE_PRINT, ctx, this); connect(aPrintForm, SIGNAL(triggered()), this, SLOT(onPrintFormRequested())); // Databases information Core::ActionContainer *hmenu = actionManager()->actionContainer(Core::Constants::M_HELP_DATABASES); aShowDatabaseInformation = createAction(this, "aShowDatabaseInformation", Core::Constants::ICONHELP, Constants::A_DATABASE_INFORMATION, Core::Context(Core::Constants::C_GLOBAL), Trans::Constants::FORM_DATABASE_INFORMATION, "", cmd, hmenu, Core::Constants::G_HELP_DATABASES, QKeySequence::UnknownKey, false); connect(aShowDatabaseInformation,SIGNAL(triggered()), this, SLOT(showDatabaseInformation())); contextManager()->updateContext(); actionManager()->retranslateMenusAndActions(); // connect(patient(), SIGNAL(currentPatientChanged()), this, SLOT(updateActions())); // That's done internally in the FormPlaceHolder }
/** * Initialize the main window: * - creates global menus and actions * - connect actions to default slots * Returns \e true if all goes fine. * \sa Core::IMainWindow, Core::MainWindowActions, Core::MainWindowActionHandler */ bool MainWindow::initialize(const QStringList &arguments, QString *errorString) { Q_UNUSED(arguments); Q_UNUSED(errorString); // create menus createFileMenu(); createEditMenu(); createFormatMenu(); createConfigurationMenu(); createHelpMenu(); Core::MainWindowActions actions; actions.setFileActions( Core::MainWindowActions::A_FileOpen | Core::MainWindowActions::A_FileSave | // Core::MainWindowActions::A_FileSaveAs | Core::MainWindowActions::A_FilePrint | // Core::MainWindowActions::A_FilePrintPreview | Core::MainWindowActions::A_FileQuit); actions.setConfigurationActions( Core::MainWindowActions::A_AppPreferences | Core::MainWindowActions::A_LanguageChange //| ); actions.setHelpActions( Core::MainWindowActions::A_AppAbout | Core::MainWindowActions::A_PluginsAbout | Core::MainWindowActions::A_AppHelp | Core::MainWindowActions::A_DebugDialog | Core::MainWindowActions::A_CheckUpdate ); actions.createEditActions(false); createActions(actions); connectFileActions(); connectConfigurationActions(); connectHelpActions(); // Create Mode stack m_modeStack = new Utils::FancyTabWidget(this); modeManager()->init(m_modeStack); // Create some specific actions QAction *a = 0; Core::Command *cmd = 0; Core::Context ctx(Core::Constants::C_GLOBAL); Core::ActionContainer *menu = actionManager()->actionContainer(Core::Constants::M_FILE); Q_ASSERT(menu); if (menu) { // View database report a = new QAction(this); a->setObjectName("aMainWinViewDatabaseReport"); a->setIcon(theme()->icon(Core::Constants::ICONINFORMATION)); cmd = actionManager()->registerAction(a, "aMainWinViewDatabaseReport", ctx); cmd->setTranslations(Trans::Constants::DATABASE_INFORMATION); menu->addAction(cmd, Core::Id(Core::Constants::G_FILE_PROJECT)); connect(cmd->action(), SIGNAL(triggered()), this, SLOT(onDatabaseReportRequested())); modeManager()->addAction(cmd->action(), 10); // Create a backup of the current database a = new QAction(this); a->setObjectName("aMainWinBackUpDatabase"); a->setIcon(theme()->icon(Core::Constants::ICONDATABASE)); cmd = actionManager()->registerAction(a, "aMainWinBackUpDatabase", ctx); cmd->setTranslations(Trans::Constants::BACKUP_DATABASE); menu->addAction(cmd, Core::Id(Core::Constants::G_FILE_SAVE)); connect(cmd->action(), SIGNAL(triggered()), this, SLOT(onBackupDatabaseRequested())); modeManager()->addAction(cmd->action(), 20); } // TODO: action = upload updates to server return true; }
/////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////// ACTION HANDLER /////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////// PmhActionHandler::PmhActionHandler(QObject *parent) : QObject(parent), aAddPmh(0),aRemovePmh(0), aAddCat(0), aCategoryManager(0), aPmhDatabaseInformation(0), m_CurrentView(0) { setObjectName("PmhActionHandler"); Core::ITheme *th = Core::ICore::instance()->theme(); QAction *a = 0; Core::Command *cmd = 0; Core::Context ctx(Constants::C_PMH_PLUGINS); Core::Context globalcontext(Core::Constants::C_GLOBAL); Core::ActionContainer *menu = actionManager()->actionContainer(Core::Id(Core::Constants::M_PATIENTS)); Core::ActionContainer *newmenu = actionManager()->actionContainer(Core::Id(Core::Constants::M_GENERAL_NEW)); Core::ActionContainer *pmhMenu = actionManager()->createMenu(Constants::M_PMH); Q_ASSERT(menu); if (!menu) { LOG_ERROR("Menu Patient not created"); return; } else { // menu->appendGroup(Core::Constants::G_PATIENTS_NAVIGATION); pmhMenu->appendGroup(Core::Id(Constants::G_PMH_NEW)); pmhMenu->appendGroup(Core::Id(Constants::G_PMH_EDITION)); pmhMenu->setTranslations(Trans::Constants::PMHMENU_TEXT); menu->addMenu(pmhMenu, Core::Id(Core::Constants::G_PATIENTS)); } // Create local actions a = aAddPmh = new QAction(this); aAddPmh->setEnabled(false); a->setObjectName("aAddPmh"); a->setIcon(th->icon(Core::Constants::ICONADD)); cmd = actionManager()->registerAction(a, Core::Id(Constants::A_PMH_NEW), globalcontext); cmd->setTranslations(Constants::CREATEPMH_TEXT, Constants::CREATEPMH_TEXT, Constants::PMHCONSTANTS_TR_CONTEXT); pmhMenu->addAction(cmd, Core::Id(Constants::G_PMH_NEW)); if (newmenu) newmenu->addAction(cmd, Core::Id(Core::Constants::G_GENERAL_NEW)); // connect(a, SIGNAL(triggered()), this, SLOT(createPmh())); a = aRemovePmh= new QAction(this); a->setObjectName("aRemovePmh"); a->setIcon(th->icon(Core::Constants::ICONREMOVE)); cmd = actionManager()->registerAction(a, Core::Id(Constants::A_PMH_REMOVE), ctx); cmd->setTranslations(Constants::REMOVEPMH_TEXT, Constants::REMOVEPMH_TEXT, Constants::PMHCONSTANTS_TR_CONTEXT); pmhMenu->addAction(cmd, Core::Id(Constants::G_PMH_NEW)); // connect(a, SIGNAL(triggered()), this, SLOT(createPmh())); a = aAddCat = new QAction(this); a->setObjectName("aAddCat"); a->setIcon(th->icon(Core::Constants::ICONCATEGORY_ADD)); cmd = actionManager()->registerAction(a, Core::Id(Constants::A_PMH_NEWCATEGORY), ctx); cmd->setTranslations(Constants::CREATECATEGORY_TEXT, Constants::CREATECATEGORY_TEXT, Constants::PMHCONSTANTS_TR_CONTEXT); pmhMenu->addAction(cmd, Core::Id(Constants::G_PMH_NEW)); // connect(a, SIGNAL(triggered()), this, SLOT(createPmh())); a = aCategoryManager= new QAction(this); a->setObjectName("aCategoryManager"); a->setIcon(th->icon(Core::Constants::ICONCATEGORY_MANAGER)); cmd = actionManager()->registerAction(a, Core::Id(Constants::A_PMH_CATEGORYMANAGER), globalcontext); cmd->setTranslations(Constants::CATEGORYMANAGER_TEXT, Constants::CATEGORYMANAGER_TEXT, Constants::PMHCONSTANTS_TR_CONTEXT); pmhMenu->addAction(cmd, Core::Id(Constants::G_PMH_EDITION)); connect(a, SIGNAL(triggered()), this, SLOT(categoryManager())); Core::ActionContainer *hmenu = actionManager()->actionContainer(Core::Id(Core::Constants::M_HELP_DATABASES)); a = aPmhDatabaseInformation = new QAction(this); a->setObjectName("aPmhDatabaseInformation"); a->setIcon(th->icon(Core::Constants::ICONHELP)); cmd = actionManager()->registerAction(a, Core::Id(Constants::A_PMH_SHOWDBINFOS), globalcontext); cmd->setTranslations(Trans::Constants::PMH_DATABASE_INFORMATION); cmd->retranslate(); if (hmenu) { hmenu->addAction(cmd, Core::Id(Core::Constants::G_HELP_DATABASES)); } connect(aPmhDatabaseInformation, SIGNAL(triggered()), this, SLOT(showPmhDatabaseInformation())); contextManager()->updateContext(); actionManager()->retranslateMenusAndActions(); connect(patient(), SIGNAL(currentPatientChanged()), this, SLOT(onCurrentPatientChanged())); }