void FePresent::set_filter_index( int idx ) { int new_offset = idx - get_filter_index(); if ( new_offset != 0 ) { if ( m_feSettings->navigate_filter( new_offset ) ) load_layout(); else update_to_new_list( new_offset ); } }
void FePresent::load_layout( bool initial_load ) { int var = ( m_feSettings->get_present_state() == FeSettings::ScreenSaver_Showing ) ? FromToScreenSaver : FromToNoValue; if ( !initial_load ) on_transition( EndLayout, FromToNoValue ); else var = FromToFrontend; clear(); m_baseRotation = FeSettings::RotateNone; set_transforms(); m_feSettings->set_present_state( FeSettings::Layout_Showing ); if ( m_feSettings->displays_count() < 1 ) return; // // Run the script which actually sets up the layout // m_layoutTimer.restart(); on_new_layout(); // make things usable if the layout is empty // bool empty_layout=true; for ( std::vector<FeBasePresentable *>::iterator itr=m_mon[0].elements.begin(); itr!=m_mon[0].elements.end(); ++itr ) { if ( (*itr)->get_visible() ) { empty_layout=false; break; } } if ( empty_layout ) { std::cout << " - Layout is empty, initializing with the default layout settings" << std::endl; init_with_default_layout(); } update_to_new_list( FromToNoValue, true ); on_transition( StartLayout, var ); }
bool FePresent::handle_event( FeInputMap::Command c ) { if ( reset_screen_saver() ) return true; switch( c ) { case FeInputMap::Down: change_selection( 1, false ); break; case FeInputMap::Up: change_selection( -1, false ); break; case FeInputMap::PageDown: change_selection( get_page_size(), false ); break; case FeInputMap::PageUp: change_selection( -get_page_size(), false ); break; case FeInputMap::RandomGame: { int ls = m_feSettings->get_filter_size( m_feSettings->get_current_filter_index() ); if ( ls > 0 ) { int step = rand() % ls; if ( step != 0 ) change_selection( step ); } } break; case FeInputMap::ToggleRotateRight: toggle_rotate( FeSettings::RotateRight ); break; case FeInputMap::ToggleFlip: toggle_rotate( FeSettings::RotateFlip ); break; case FeInputMap::ToggleRotateLeft: toggle_rotate( FeSettings::RotateLeft ); break; case FeInputMap::ToggleMovie: toggle_movie(); break; case FeInputMap::NextDisplay: case FeInputMap::PrevDisplay: if ( m_feSettings->navigate_display( ( c == FeInputMap::NextDisplay ) ? 1 : -1 ) ) load_layout(); else update_to_new_list( 0, true ); break; case FeInputMap::NextFilter: case FeInputMap::PrevFilter: { int offset = ( c == FeInputMap::NextFilter ) ? 1 : -1; if ( m_feSettings->navigate_filter( offset ) ) load_layout(); else update_to_new_list( offset ); } break; case FeInputMap::ToggleLayout: m_feSettings->toggle_layout(); load_layout(); break; case FeInputMap::PrevFavourite: case FeInputMap::NextFavourite: case FeInputMap::PrevLetter: case FeInputMap::NextLetter: { int step( 0 ); switch ( c ) { case FeInputMap::PrevFavourite: step = m_feSettings->get_prev_fav_offset(); break; case FeInputMap::NextFavourite: step = m_feSettings->get_next_fav_offset(); break; case FeInputMap::PrevLetter: step = m_feSettings->get_next_letter_offset( -1 ); break; case FeInputMap::NextLetter: step = m_feSettings->get_next_letter_offset( 1 ); break; default: break; } if ( step != 0 ) change_selection( step, false ); } break; case FeInputMap::ScreenSaver: load_screensaver(); break; case FeInputMap::Intro: if ( !load_intro() ) load_layout(); break; case FeInputMap::LAST_COMMAND: default: // Not handled by us, return false so calling function knows // return false; } return true; }
void FePresent::set_search_rule( const char *s ) { m_feSettings->set_search_rule( s ); update_to_new_list( 0 ); }