// Write settings to permanent storage void MainWindow::writeSettings() { // Save the session SessionInfo& session = Persistent<SessionInfo>( "session" ); session.setGeometry( saveGeometry() ); session.setCrawlerState( crawlerWidget->saveState() ); session.setCurrentFile( currentFile ); GetPersistentInfo().save( QString( "session" ) ); // User settings GetPersistentInfo().save( QString( "settings" ) ); }
void Session::save( std::vector< std::tuple<const ViewInterface*, uint64_t, std::shared_ptr<const ViewContextInterface>> > view_list, const QByteArray& geometry ) { LOG(logDEBUG) << "Session::save"; std::vector<SessionInfo::OpenFile> session_files; for ( auto view: view_list ) { const ViewInterface* view_object; uint64_t top_line; std::shared_ptr<const ViewContextInterface> view_context; std::tie( view_object, top_line, view_context ) = view; const OpenFile* file = findOpenFileFromView( view_object ); assert( file ); LOG(logDEBUG) << "Saving " << file->fileName.toLocal8Bit().data() << " in session."; session_files.push_back( { file->fileName, top_line, view_context->toString() } ); } std::shared_ptr<SessionInfo> session = Persistent<SessionInfo>( "session" ); session->setOpenFiles( session_files ); session->setGeometry( geometry ); GetPersistentInfo().save( QString( "session" ) ); }
// Read settings from permanent storage void MainWindow::readSettings() { // Get and restore the session GetPersistentInfo().retrieve( QString( "session" ) ); SessionInfo session = Persistent<SessionInfo>( "session" ); restoreGeometry( session.geometry() ); crawlerWidget->restoreState( session.crawlerState() ); previousFile = session.currentFile(); // History of recent files GetPersistentInfo().retrieve( QString( "recentFiles" ) ); updateRecentFileActions(); GetPersistentInfo().retrieve( QString( "savedSearches" ) ); GetPersistentInfo().retrieve( QString( "settings" ) ); GetPersistentInfo().retrieve( QString( "filterSet" ) ); }
void Session::storedGeometry( QByteArray* geometry ) const { GetPersistentInfo().retrieve( QString( "session" ) ); std::shared_ptr<SessionInfo> session = Persistent<SessionInfo>( "session" ); *geometry = session->geometry(); }
Session::Session() { GetPersistentInfo().retrieve( QString( "savedSearches" ) ); // Get the global search history (it remains the property // of the Persistent) savedSearches_ = Persistent<SavedSearches>( "savedSearches" ); quickFindPattern_ = std::make_shared<QuickFindPattern>(); }
// Add the filename to the recent files list and update the title bar. void MainWindow::setCurrentFile( const QString& fileName ) { // Change the current file currentFile = fileName; QString shownName = tr( "Untitled" ); if ( !currentFile.isEmpty() ) { // (reload the list first in case another glogg changed it) GetPersistentInfo().retrieve( "recentFiles" ); recentFiles.addRecent( currentFile ); GetPersistentInfo().save( "recentFiles" ); updateRecentFileActions(); shownName = strippedName( currentFile ); } setWindowTitle( tr("%1 - %2").arg(shownName).arg(tr("glogg")) #ifdef GLOGG_COMMIT + " (dev build " GLOGG_VERSION ")" #endif ); }
std::vector<std::pair<QString, ViewInterface*>> Session::restore( std::function<ViewInterface*()> view_factory, int *current_file_index ) { GetPersistentInfo().retrieve( QString( "session" ) ); std::shared_ptr<SessionInfo> session = Persistent<SessionInfo>( "session" ); std::vector<SessionInfo::OpenFile> session_files = session->openFiles(); LOG(logDEBUG) << "Session returned " << session_files.size(); std::vector<std::pair<QString, ViewInterface*>> result; for ( auto file: session_files ) { LOG(logDEBUG) << "Create view for " << file.fileName.toLocal8Bit().data(); ViewInterface* view = openAlways( file.fileName, view_factory, file.viewContext ); result.push_back( { file.fileName, view } ); } *current_file_index = -1; return result; }