void FindPlugin::setupMenu() { Core::ActionContainer *medit = Core::ActionManager::actionContainer(Core::Constants::M_EDIT); Core::ActionContainer *mfind = Core::ActionManager::createMenu(Constants::M_FIND); medit->addMenu(mfind, Core::Constants::G_EDIT_FIND); mfind->menu()->setTitle(tr("&Find/Replace")); mfind->appendGroup(Constants::G_FIND_CURRENTDOCUMENT); mfind->appendGroup(Constants::G_FIND_FILTERS); mfind->appendGroup(Constants::G_FIND_FLAGS); mfind->appendGroup(Constants::G_FIND_ACTIONS); Core::Context globalcontext(Core::Constants::C_GLOBAL); Core::Command *cmd; mfind->addSeparator(globalcontext, Constants::G_FIND_FLAGS); mfind->addSeparator(globalcontext, Constants::G_FIND_ACTIONS); Core::ActionContainer *mfindadvanced = Core::ActionManager::createMenu(Constants::M_FIND_ADVANCED); mfindadvanced->menu()->setTitle(tr("Advanced Find")); mfind->addMenu(mfindadvanced, Constants::G_FIND_FILTERS); d->m_openFindDialog = new QAction(tr("Open Advanced Find..."), this); d->m_openFindDialog->setIconText(tr("Advanced...")); cmd = Core::ActionManager::registerAction(d->m_openFindDialog, Constants::ADVANCED_FIND, globalcontext); cmd->setDefaultKeySequence(QKeySequence(tr("Ctrl+Shift+F"))); mfindadvanced->addAction(cmd); connect(d->m_openFindDialog, SIGNAL(triggered()), this, SLOT(openFindFilter())); }
/** * Add Logging plugin to File menu */ bool LoggingPlugin::initialize(const QStringList& args, QString *errMsg) { Q_UNUSED(args); Q_UNUSED(errMsg); loggingThread = NULL; // Add Menu entry Core::ActionManager* am = Core::ICore::instance()->actionManager(); Core::ActionContainer* ac = am->actionContainer(Core::Constants::M_TOOLS); // Command to start logging Core::Command* cmd = am->registerAction(new QAction(this), "LoggingPlugin.Logging", QList<int>() << Core::Constants::C_GLOBAL_ID); cmd->setDefaultKeySequence(QKeySequence("Ctrl+L")); cmd->action()->setText("Start logging..."); ac->menu()->addSeparator(); ac->appendGroup("Logging"); ac->addAction(cmd, "Logging"); connect(cmd->action(), SIGNAL(triggered(bool)), this, SLOT(toggleLogging())); mf = new LoggingGadgetFactory(this); addAutoReleasedObject(mf); // Map signal from end of replay to replay stopped connect(getLogfile(),SIGNAL(replayFinished()), this, SLOT(replayStopped())); return true; }
/** * Add KmlExport option to the tools menu */ bool KmlExportPlugin::initialize(const QStringList& args, QString *errMsg) { Q_UNUSED(args); Q_UNUSED(errMsg); // Add Menu entry Core::ActionManager* am = Core::ICore::instance()->actionManager(); Core::ActionContainer* ac = am->actionContainer(Core::Constants::M_TOOLS); // Command to convert log file to KML exportToKmlCmd = am->registerAction(new QAction(this), "KmlExport.ExportToKML", QList<int>() << Core::Constants::C_GLOBAL_ID); exportToKmlCmd->action()->setText("Export logfile to KML"); ac->menu()->addSeparator(); ac->appendGroup("KML Export"); ac->addAction(exportToKmlCmd, "KML Export"); connect(exportToKmlCmd->action(), SIGNAL(triggered(bool)), this, SLOT(exportToKML())); return true; }
Core::IUAVGadget* ConfigGadgetFactory::createGadget(QWidget *parent) { gadgetWidget = new ConfigGadgetWidget(parent); // Add Menu entry Core::ActionManager* am = Core::ICore::instance()->actionManager(); Core::ActionContainer* ac = am->actionContainer(Core::Constants::M_TOOLS); Core::Command* cmd = am->registerAction(new QAction(this), "ConfigPlugin.ShowInputWizard", QList<int>() << Core::Constants::C_GLOBAL_ID); cmd->action()->setText(tr("Radio Setup Wizard")); Core::ModeManager::instance()->addAction(cmd, 1); ac->appendGroup("Wizard"); ac->addAction(cmd, "Wizard"); connect(cmd->action(), SIGNAL(triggered(bool)), this, SLOT(startInputWizard())); return new ConfigGadget(QString("ConfigGadget"), gadgetWidget, parent); }
bool ConfigPlugin::initialize(const QStringList& args, QString *errMsg) { Q_UNUSED(args); Q_UNUSED(errMsg); cf = new ConfigGadgetFactory(this); addAutoReleasedObject(cf); // Add Menu entry to erase all settings Core::ActionManager* am = Core::ICore::instance()->actionManager(); Core::ActionContainer* ac = am->actionContainer(Core::Constants::M_TOOLS); // Command to erase all settings from the board cmd = am->registerAction(new QAction(this), "ConfigPlugin.EraseAll", QList<int>() << Core::Constants::C_GLOBAL_ID); cmd->action()->setText(tr("Erase all settings from board...")); ac->menu()->addSeparator(); ac->appendGroup("Utilities"); ac->addAction(cmd, "Utilities"); connect(cmd->action(), SIGNAL(triggered(bool)), this, SLOT(eraseAllSettings())); // ********************* // Listen to autopilot connection events ExtensionSystem::PluginManager *pm = ExtensionSystem::PluginManager::instance(); TelemetryManager* telMngr = pm->getObject<TelemetryManager>(); connect(telMngr, SIGNAL(connected()), this, SLOT(onAutopilotConnect())); connect(telMngr, SIGNAL(disconnected()), this, SLOT(onAutopilotDisconnect())); // And check whether by any chance we are not already connected if (telMngr->isConnected()) onAutopilotConnect(); return true; }
bool RfmBindWizardPlugin::initialize(const QStringList & args, QString *errMsg) { Q_UNUSED(args); Q_UNUSED(errMsg); // Add Menu entry Core::ActionManager *am = Core::ICore::instance()->actionManager(); Core::ActionContainer *ac = am->actionContainer(Core::Constants::M_TOOLS); Core::Command *cmd = am->registerAction(new QAction(this), "RfmBindWizardPlugin.ShowBindWizard", QList<int>() << Core::Constants::C_GLOBAL_ID); cmd->action()->setText(tr("Rfm Bind Wizard")); Core::ModeManager::instance()->addAction(cmd, 1); ac->menu()->addSeparator(); ac->appendGroup("Bind Wizard"); ac->addAction(cmd, "Bind Wizard"); connect(cmd->action(), SIGNAL(triggered(bool)), this, SLOT(showBindWizard())); return true; }
/////////////////////////////////////////////////////////////////////////// Action Handler TemplatesViewActionHandler::TemplatesViewActionHandler(QObject *parent) : QObject(parent), aAdd(0), aRemove(0), aEdit(0), aPrint(0), aSave(0), aLocker(0), aDatabaseInfos(0), m_CurrentView(0), m_IsLocked(settings()->value(Constants::S_LOCKCATEGORYVIEW).toBool()) { if (!actionManager()) return; Core::Context editContext(::C_BASIC_EDIT); Core::Context lockContext(::C_BASIC_LOCK); Core::Context addContext(::C_BASIC_ADD); Core::Context removeContext(::C_BASIC_REMOVE); Core::Context saveContext(::C_BASIC_SAVE); Core::Context printContext(::C_BASIC_PRINT); // Edit Menu and Contextual Menu Core::ActionContainer *editMenu = actionManager()->actionContainer(Core::Constants::M_EDIT); Core::ActionContainer *cmenu = actionManager()->actionContainer(Core::Constants::M_EDIT_TEMPLATES); if (!cmenu) { cmenu = actionManager()->createMenu(Core::Constants::M_EDIT_TEMPLATES); cmenu->appendGroup(Core::Id(Core::Constants::G_EDIT_TEMPLATES)); cmenu->appendGroup(Core::Id(Core::Constants::G_EDIT_CATEGORIES)); cmenu->setTranslations(Trans::Constants::M_EDIT_TEMPLATES_TEXT); if (editMenu) editMenu->addMenu(cmenu, Core::Constants::G_EDIT_TEMPLATES); } // Add aAdd = registerAction("TemplatesView.aAdd", cmenu, Core::Constants::ICONADD, Core::Constants::A_TEMPLATE_ADD, Core::Constants::G_EDIT_TEMPLATES, Trans::Constants::ADDCATEGORY_TEXT, addContext, this); connect(aAdd, SIGNAL(triggered()), this, SLOT(addCategory())); // Remove aRemove = registerAction("TemplatesView.aRemove", cmenu, Core::Constants::ICONREMOVE, Core::Constants::A_TEMPLATE_REMOVE, Core::Constants::G_EDIT_TEMPLATES, Trans::Constants::REMOVE_TEXT, removeContext, this); connect(aRemove, SIGNAL(triggered()), this, SLOT(removeItem())); // Edit aEdit = registerAction("TemplatesView.aEdit", cmenu, Core::Constants::ICONEDIT, Core::Constants::A_TEMPLATE_EDIT, Core::Constants::G_EDIT_TEMPLATES, Trans::Constants::M_EDIT_TEXT, editContext, this); connect(aEdit, SIGNAL(triggered()), this, SLOT(editCurrentItem())); // Edit aPrint = registerAction("TemplatesView.aPrint", cmenu, Core::Constants::ICONPRINT, Core::Constants::A_TEMPLATE_PRINT, Core::Constants::G_EDIT_TEMPLATES, Trans::Constants::FILEPRINT_TEXT, printContext, this); connect(aPrint, SIGNAL(triggered()), this, SLOT(print())); // Save aSave = registerAction("TemplatesView.aSave", cmenu, Core::Constants::ICONSAVE, Core::Constants::A_TEMPLATE_SAVE, Core::Constants::G_EDIT_TEMPLATES, Trans::Constants::FILESAVE_TEXT, saveContext, this); connect(aSave, SIGNAL(triggered()), this, SLOT(saveModel())); // Locker aLocker = registerAction("TemplatesView.aLocker", cmenu, Core::Constants::ICONUNLOCK, Core::Constants::A_TEMPLATE_LOCK, Core::Constants::G_EDIT_TEMPLATES, Trans::Constants::UNLOCKED_TEXT, lockContext, this); connect(aLocker, SIGNAL(triggered()), this, SLOT(lock())); // Database information Core::ActionContainer *hmenu = actionManager()->actionContainer(Core::Constants::M_HELP_DATABASES); if (hmenu) { aDatabaseInfos = registerAction("TemplatesView.aDbInfos", hmenu, Core::Constants::ICONABOUT, Core::Constants::A_TEMPLATE_DATABASEINFORMATION, Core::Constants::G_HELP_DATABASES, Trans::Constants::TEMPLATES_DATABASE_INFORMATION_TEXT, Core::Context(Core::Constants::C_GLOBAL), this); connect(aDatabaseInfos, SIGNAL(triggered()), this, SLOT(databaseInformation())); // contextManager()->updateContext(); } updateActions(); }
/////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////// 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 /////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////// 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())); }