#4949 Summary Curve Filter Toolbar : Store recently used strings to registry

This commit is contained in:
Magne Sjaastad
2019-10-29 14:17:24 +01:00
parent ba89a60e8d
commit facfd062dc
5 changed files with 130 additions and 10 deletions

View File

@@ -17,6 +17,7 @@ ${CMAKE_CURRENT_LIST_DIR}/RiaMemoryCleanup.h
${CMAKE_CURRENT_LIST_DIR}/RiaFontCache.h ${CMAKE_CURRENT_LIST_DIR}/RiaFontCache.h
${CMAKE_CURRENT_LIST_DIR}/RiaEclipseFileNameTools.h ${CMAKE_CURRENT_LIST_DIR}/RiaEclipseFileNameTools.h
${CMAKE_CURRENT_LIST_DIR}/RiaFeatureCommandContext.h ${CMAKE_CURRENT_LIST_DIR}/RiaFeatureCommandContext.h
${CMAKE_CURRENT_LIST_DIR}/RiaStringListSerializer.h
) )
set (SOURCE_GROUP_SOURCE_FILES set (SOURCE_GROUP_SOURCE_FILES
@@ -38,6 +39,7 @@ ${CMAKE_CURRENT_LIST_DIR}/RiaMemoryCleanup.cpp
${CMAKE_CURRENT_LIST_DIR}/RiaFontCache.cpp ${CMAKE_CURRENT_LIST_DIR}/RiaFontCache.cpp
${CMAKE_CURRENT_LIST_DIR}/RiaEclipseFileNameTools.cpp ${CMAKE_CURRENT_LIST_DIR}/RiaEclipseFileNameTools.cpp
${CMAKE_CURRENT_LIST_DIR}/RiaFeatureCommandContext.cpp ${CMAKE_CURRENT_LIST_DIR}/RiaFeatureCommandContext.cpp
${CMAKE_CURRENT_LIST_DIR}/RiaStringListSerializer.cpp
) )
list(APPEND CODE_HEADER_FILES list(APPEND CODE_HEADER_FILES

View File

@@ -0,0 +1,69 @@
/////////////////////////////////////////////////////////////////////////////////
//
// Copyright (C) 2019- Equinor ASA
//
// ResInsight 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.
//
// ResInsight 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 at <http://www.gnu.org/licenses/gpl.html>
// for more details.
//
/////////////////////////////////////////////////////////////////////////////////
#include "RiaStringListSerializer.h"
#include <QSettings>
#include <QStringList>
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RiaStringListSerializer::RiaStringListSerializer( const QString& key )
: m_key( key )
{
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RiaStringListSerializer::addString( const QString& textString, int maxStringCount )
{
QSettings settings;
QStringList stringList = settings.value( m_key ).toStringList();
stringList.removeAll( textString );
stringList.prepend( textString );
while ( stringList.size() > maxStringCount )
stringList.removeLast();
settings.setValue( m_key, stringList );
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RiaStringListSerializer::removeString( const QString& textString )
{
QSettings settings;
QStringList files = settings.value( m_key ).toStringList();
files.removeAll( textString );
settings.setValue( m_key, files );
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
QStringList RiaStringListSerializer::textStrings()
{
QSettings settings;
QStringList stringList = settings.value( m_key ).toStringList();
return stringList;
}

View File

@@ -0,0 +1,40 @@
/////////////////////////////////////////////////////////////////////////////////
//
// Copyright (C) 2019- Equinor ASA
//
// ResInsight 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.
//
// ResInsight 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 at <http://www.gnu.org/licenses/gpl.html>
// for more details.
//
/////////////////////////////////////////////////////////////////////////////////
#pragma once
#include <QString>
class QStringList;
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
class RiaStringListSerializer
{
public:
RiaStringListSerializer( const QString& key );
void addString( const QString& textString, int maxStringCount );
void removeString( const QString& textString );
QStringList textStrings();
private:
QString m_key;
};

View File

@@ -21,6 +21,7 @@
#include "RiaApplication.h" #include "RiaApplication.h"
#include "RiaGuiApplication.h" #include "RiaGuiApplication.h"
#include "RiaLogging.h" #include "RiaLogging.h"
#include "RiaStringListSerializer.h"
#include "RiaSummaryCurveDefinition.h" #include "RiaSummaryCurveDefinition.h"
#include "RifSummaryReaderInterface.h" #include "RifSummaryReaderInterface.h"
@@ -384,14 +385,10 @@ void RimSummaryPlotFilterTextCurveSetEditor::fieldChangedByUi( const caf::PdmFie
m_curveFilterText = curveFilterTextWithoutOutdatedLabel(); m_curveFilterText = curveFilterTextWithoutOutdatedLabel();
{ {
if ( m_historyItems.indexOf( m_curveFilterText ) == -1 ) RiaStringListSerializer stringListSerializer( curveFilterRecentlyUsedRegistryKey() );
{
m_historyItems.push_front( m_curveFilterText ); int maxItemCount = 10;
while ( m_historyItems.size() > 10 ) stringListSerializer.addString( m_curveFilterText, maxItemCount );
{
m_historyItems.pop_back();
}
}
} }
m_curveFilterText.uiCapability()->updateConnectedEditors(); m_curveFilterText.uiCapability()->updateConnectedEditors();
@@ -485,7 +482,9 @@ QList<caf::PdmOptionItemInfo>
if ( fieldNeedingOptions == &m_curveFilterText ) if ( fieldNeedingOptions == &m_curveFilterText )
{ {
for ( const auto& s : m_historyItems ) RiaStringListSerializer stringListSerializer( curveFilterRecentlyUsedRegistryKey() );
for ( const auto& s : stringListSerializer.textStrings() )
{ {
options.push_back( caf::PdmOptionItemInfo( s, s ) ); options.push_back( caf::PdmOptionItemInfo( s, s ) );
} }
@@ -607,3 +606,11 @@ QString RimSummaryPlotFilterTextCurveSetEditor::curveFilterTextWithoutOutdatedLa
return filterText; return filterText;
} }
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
QString RimSummaryPlotFilterTextCurveSetEditor::curveFilterRecentlyUsedRegistryKey()
{
return "curveFilterRecentlyUsedStrings";
}

View File

@@ -57,11 +57,13 @@ private:
std::vector<SummarySource*> selectedSummarySources() const; std::vector<SummarySource*> selectedSummarySources() const;
QString curveFilterTextWithoutOutdatedLabel() const; QString curveFilterTextWithoutOutdatedLabel() const;
static QString curveFilterRecentlyUsedRegistryKey();
private:
caf::PdmPtrArrayField<SummarySource*> m_selectedSources; caf::PdmPtrArrayField<SummarySource*> m_selectedSources;
caf::PdmField<QString> m_curveFilterLabelText; caf::PdmField<QString> m_curveFilterLabelText;
caf::PdmField<QString> m_curveFilterText; caf::PdmField<QString> m_curveFilterText;
QStringList m_historyItems;
bool m_isFieldRecentlyChangedFromGui; bool m_isFieldRecentlyChangedFromGui;
}; };