/*
* Copyright (C) 2011 Nicolas Bonnefon and other contributors
*
* This file is part of glogg.
*
* glogg is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* glogg is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with glogg. If not, see .
*/
// This file implements class RecentFiles
#include
#include
#include "log.h"
#include "recentfiles.h"
const int RecentFiles::RECENTFILES_VERSION = 1;
const int RecentFiles::MAX_NUMBER_OF_FILES = 10;
RecentFiles::RecentFiles() : recentFiles_()
{
}
void RecentFiles::addRecent( const QString& text )
{
// First prune non existent files
QMutableStringListIterator i(recentFiles_);
while ( i.hasNext() ) {
if ( !QFile::exists(i.next()) )
i.remove();
}
// Remove any copy of the about to be added filename
recentFiles_.removeAll( text );
// Add at the front
recentFiles_.push_front( text );
// Trim the list if it's too long
while ( recentFiles_.size() > MAX_NUMBER_OF_FILES )
recentFiles_.pop_back();
}
QStringList RecentFiles::recentFiles() const
{
return recentFiles_;
}
//
// Persistable virtual functions implementation
//
void RecentFiles::saveToStorage( QSettings& settings ) const
{
LOG(logDEBUG) << "RecentFiles::saveToStorage";
settings.beginGroup( "RecentFiles" );
settings.setValue( "version", RECENTFILES_VERSION );
settings.beginWriteArray( "filesHistory" );
for (int i = 0; i < recentFiles_.size(); ++i) {
settings.setArrayIndex( i );
settings.setValue( "name", recentFiles_.at( i ) );
}
settings.endArray();
settings.endGroup();
}
void RecentFiles::retrieveFromStorage( QSettings& settings )
{
LOG(logDEBUG) << "RecentFiles::retrieveFromStorage";
recentFiles_.clear();
if ( settings.contains( "RecentFiles/version" ) ) {
// Unserialise the "new style" stored history
settings.beginGroup( "RecentFiles" );
if ( settings.value( "version" ) == RECENTFILES_VERSION ) {
int size = settings.beginReadArray( "filesHistory" );
for (int i = 0; i < size; ++i) {
settings.setArrayIndex(i);
QString search = settings.value( "name" ).toString();
recentFiles_.append( search );
}
settings.endArray();
}
else {
LOG(logERROR) << "Unknown version of FilterSet, ignoring it...";
}
settings.endGroup();
}
}