| 1223 | } |
| 1224 | |
| 1225 | void App::updateRecentFolders() { |
| 1226 | UINode* node = nullptr; |
| 1227 | updateOpenRecentFolderBtn(); |
| 1228 | if ( mSettings && mSettings->getSettingsMenu() && |
| 1229 | ( node = mSettings->getSettingsMenu()->getItemId( "recent-folders" ) ) ) { |
| 1230 | UIMenuSubMenu* uiMenuSubMenu = static_cast<UIMenuSubMenu*>( node ); |
| 1231 | UIMenu* menu = uiMenuSubMenu->getSubMenu(); |
| 1232 | uiMenuSubMenu->setEnabled( !mRecentFolders.empty() ); |
| 1233 | menu->removeAll(); |
| 1234 | menu->removeEventsOfType( Event::OnItemClicked ); |
| 1235 | if ( mRecentFolders.empty() ) |
| 1236 | return; |
| 1237 | for ( const auto& file : mRecentFolders ) { |
| 1238 | if ( FileSystem::fileExists( file ) && FileSystem::isDirectory( file ) ) |
| 1239 | menu->add( file ); |
| 1240 | } |
| 1241 | menu->addSeparator(); |
| 1242 | menu->add( i18n( "clear_menu", "Clear Menu" ) )->setId( "clear-menu" ); |
| 1243 | menu->addCheckBox( |
| 1244 | i18n( "restore_last_session_at_startup", "Restart last session at startup" ) ) |
| 1245 | ->setActive( mConfig.workspace.restoreLastSession ) |
| 1246 | ->setId( "restore-last-session-at-startup" ); |
| 1247 | menu->on( Event::OnItemClicked, [this]( const Event* event ) { |
| 1248 | if ( !event->getNode()->isType( UI_TYPE_MENUITEM ) ) |
| 1249 | return; |
| 1250 | const std::string& id = event->getNode()->asType<UIMenuItem>()->getId(); |
| 1251 | if ( id == "clear-menu" ) { |
| 1252 | mRecentFolders.clear(); |
| 1253 | updateRecentFolders(); |
| 1254 | updateRecentButtons(); |
| 1255 | } else if ( id == "restore-last-session-at-startup" ) { |
| 1256 | mConfig.workspace.restoreLastSession = |
| 1257 | event->getNode()->asType<UIMenuCheckBox>()->isActive(); |
| 1258 | } else { |
| 1259 | UIMenuItem* item = event->getNode()->asType<UIMenuItem>(); |
| 1260 | const String& txt = item->getText(); |
| 1261 | loadFolder( txt, |
| 1262 | item->getUISceneNode()->getWindow()->getInput()->isShiftPressed() ); |
| 1263 | } |
| 1264 | } ); |
| 1265 | } |
| 1266 | } |
| 1267 | |
| 1268 | void App::showSidePanel( bool show ) { |
| 1269 | if ( show == mSidePanel->isVisible() ) |
no test coverage detected