Let users configure the number of recent files shown

Fixes: QTCREATORBUG-21898
Change-Id: Ie804e722f9bb88762da57f157833e4dc43d8ccbf
Reviewed-by: hjk <hjk@qt.io>
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
Christian Kandeler
2019-06-24 15:09:03 +02:00
parent 0715917414
commit bf0d84074f
5 changed files with 180 additions and 131 deletions

View File

@@ -153,7 +153,6 @@ public:
QSet<QString> m_expectedFileNames; // set of file names without normalization QSet<QString> m_expectedFileNames; // set of file names without normalization
QList<DocumentManager::RecentFile> m_recentFiles; QList<DocumentManager::RecentFile> m_recentFiles;
static const int m_maxRecentFiles = 8;
bool m_postponeAutoReload = false; bool m_postponeAutoReload = false;
bool m_blockActivated = false; bool m_blockActivated = false;
@@ -1278,7 +1277,7 @@ void DocumentManager::addToRecentFiles(const QString &fileName, Id editorId)
if (fileKey == recentFileKey) if (fileKey == recentFileKey)
it.remove(); it.remove();
} }
if (d->m_recentFiles.count() == d->m_maxRecentFiles) while (d->m_recentFiles.count() >= EditorManagerPrivate::maxRecentFiles())
d->m_recentFiles.removeLast(); d->m_recentFiles.removeLast();
d->m_recentFiles.prepend(RecentFile(fileName, editorId)); d->m_recentFiles.prepend(RecentFile(fileName, editorId));
} }

View File

@@ -121,6 +121,7 @@ static const char autoSuspendEnabledKey[] = "EditorManager/AutoSuspendEnabled";
static const char autoSuspendMinDocumentCountKey[] = "EditorManager/AutoSuspendMinDocuments"; static const char autoSuspendMinDocumentCountKey[] = "EditorManager/AutoSuspendMinDocuments";
static const char warnBeforeOpeningBigTextFilesKey[] = "EditorManager/WarnBeforeOpeningBigTextFiles"; static const char warnBeforeOpeningBigTextFilesKey[] = "EditorManager/WarnBeforeOpeningBigTextFiles";
static const char bigTextFileSizeLimitKey[] = "EditorManager/BigTextFileSizeLimitInMB"; static const char bigTextFileSizeLimitKey[] = "EditorManager/BigTextFileSizeLimitInMB";
static const char maxRecentFilesKey[] = "EditorManager/MaxRecentFiles";
static const char fileSystemCaseSensitivityKey[] = "Core/FileSystemCaseSensitivity"; static const char fileSystemCaseSensitivityKey[] = "Core/FileSystemCaseSensitivity";
static const char preferredEditorFactoriesKey[] = "EditorManager/PreferredEditorFactories"; static const char preferredEditorFactoriesKey[] = "EditorManager/PreferredEditorFactories";
@@ -1020,6 +1021,7 @@ void EditorManagerPrivate::saveSettings()
qsettings->setValue(warnBeforeOpeningBigTextFilesKey, qsettings->setValue(warnBeforeOpeningBigTextFilesKey,
d->m_warnBeforeOpeningBigFilesEnabled); d->m_warnBeforeOpeningBigFilesEnabled);
qsettings->setValue(bigTextFileSizeLimitKey, d->m_bigFileSizeLimitInMB); qsettings->setValue(bigTextFileSizeLimitKey, d->m_bigFileSizeLimitInMB);
qsettings->setValue(maxRecentFilesKey, d->m_maxRecentFiles);
Qt::CaseSensitivity defaultSensitivity Qt::CaseSensitivity defaultSensitivity
= OsSpecificAspects::fileNameCaseSensitivity(HostOsInfo::hostOs()); = OsSpecificAspects::fileNameCaseSensitivity(HostOsInfo::hostOs());
@@ -1040,6 +1042,10 @@ void EditorManagerPrivate::readSettings()
d->m_bigFileSizeLimitInMB = qs->value(bigTextFileSizeLimitKey).toInt(); d->m_bigFileSizeLimitInMB = qs->value(bigTextFileSizeLimitKey).toInt();
} }
const int maxRecentFiles = qs->value(maxRecentFilesKey).toInt();
if (maxRecentFiles > 0)
d->m_maxRecentFiles = maxRecentFiles;
if (qs->contains(fileSystemCaseSensitivityKey)) { if (qs->contains(fileSystemCaseSensitivityKey)) {
Qt::CaseSensitivity defaultSensitivity Qt::CaseSensitivity defaultSensitivity
= OsSpecificAspects::fileNameCaseSensitivity(HostOsInfo::hostOs()); = OsSpecificAspects::fileNameCaseSensitivity(HostOsInfo::hostOs());
@@ -1155,6 +1161,16 @@ int EditorManagerPrivate::bigFileSizeLimit()
return d->m_bigFileSizeLimitInMB; return d->m_bigFileSizeLimitInMB;
} }
void EditorManagerPrivate::setMaxRecentFiles(int count)
{
d->m_maxRecentFiles = count;
}
int EditorManagerPrivate::maxRecentFiles()
{
return d->m_maxRecentFiles;
}
void EditorManagerPrivate::setBigFileSizeLimit(int limitInMB) void EditorManagerPrivate::setBigFileSizeLimit(int limitInMB)
{ {
d->m_bigFileSizeLimitInMB = limitInMB; d->m_bigFileSizeLimitInMB = limitInMB;

View File

@@ -124,6 +124,8 @@ public:
static bool warnBeforeOpeningBigFilesEnabled(); static bool warnBeforeOpeningBigFilesEnabled();
static void setBigFileSizeLimit(int limitInMB); static void setBigFileSizeLimit(int limitInMB);
static int bigFileSizeLimit(); static int bigFileSizeLimit();
static void setMaxRecentFiles(int count);
static int maxRecentFiles();
static EditorWindow *createEditorWindow(); static EditorWindow *createEditorWindow();
static void splitNewWindow(Internal::EditorView *view); static void splitNewWindow(Internal::EditorView *view);
@@ -276,6 +278,7 @@ private:
bool m_warnBeforeOpeningBigFilesEnabled = true; bool m_warnBeforeOpeningBigFilesEnabled = true;
int m_bigFileSizeLimitInMB = 5; int m_bigFileSizeLimitInMB = 5;
int m_maxRecentFiles = 8;
QString m_placeholderText; QString m_placeholderText;
QList<std::function<bool(IEditor *)>> m_closeEditorListeners; QList<std::function<bool(IEditor *)>> m_closeEditorListeners;

View File

@@ -118,6 +118,9 @@ QWidget *SystemSettings::widget()
m_page->warnBeforeOpeningBigFiles->setChecked( m_page->warnBeforeOpeningBigFiles->setChecked(
EditorManagerPrivate::warnBeforeOpeningBigFilesEnabled()); EditorManagerPrivate::warnBeforeOpeningBigFilesEnabled());
m_page->bigFilesLimitSpinBox->setValue(EditorManagerPrivate::bigFileSizeLimit()); m_page->bigFilesLimitSpinBox->setValue(EditorManagerPrivate::bigFileSizeLimit());
m_page->maxRecentFilesSpinBox->setMinimum(1);
m_page->maxRecentFilesSpinBox->setMaximum(99);
m_page->maxRecentFilesSpinBox->setValue(EditorManagerPrivate::maxRecentFiles());
if (HostOsInfo::isAnyUnixHost()) { if (HostOsInfo::isAnyUnixHost()) {
connect(m_page->resetTerminalButton, &QAbstractButton::clicked, connect(m_page->resetTerminalButton, &QAbstractButton::clicked,
@@ -183,6 +186,7 @@ void SystemSettings::apply()
EditorManagerPrivate::setWarnBeforeOpeningBigFilesEnabled( EditorManagerPrivate::setWarnBeforeOpeningBigFilesEnabled(
m_page->warnBeforeOpeningBigFiles->isChecked()); m_page->warnBeforeOpeningBigFiles->isChecked());
EditorManagerPrivate::setBigFileSizeLimit(m_page->bigFilesLimitSpinBox->value()); EditorManagerPrivate::setBigFileSizeLimit(m_page->bigFilesLimitSpinBox->value());
EditorManagerPrivate::setMaxRecentFiles(m_page->maxRecentFilesSpinBox->value());
if (HostOsInfo::isMacHost()) { if (HostOsInfo::isMacHost()) {
Qt::CaseSensitivity defaultSensitivity Qt::CaseSensitivity defaultSensitivity

View File

@@ -6,8 +6,8 @@
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>527</width> <width>599</width>
<height>469</height> <height>545</height>
</rect> </rect>
</property> </property>
<layout class="QVBoxLayout" name="verticalLayout"> <layout class="QVBoxLayout" name="verticalLayout">
@@ -17,7 +17,138 @@
<string>System</string> <string>System</string>
</property> </property>
<layout class="QGridLayout" name="gridLayout"> <layout class="QGridLayout" name="gridLayout">
<item row="5" column="0" colspan="4"> <item row="0" column="0">
<widget class="QLabel" name="terminalLabel">
<property name="text">
<string>Terminal:</string>
</property>
</widget>
</item>
<item row="0" column="1">
<layout class="QHBoxLayout" name="horizontalLayout_8">
<item>
<widget class="QComboBox" name="terminalComboBox">
<property name="sizePolicy">
<sizepolicy hsizetype="Ignored" vsizetype="Fixed">
<horstretch>3</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>100</width>
<height>0</height>
</size>
</property>
<property name="editable">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="terminalOpenArgs"/>
</item>
<item>
<widget class="QLineEdit" name="terminalExecuteArgs">
<property name="toolTip">
<string>Command line arguments used for &quot;Run in terminal&quot;.</string>
</property>
</widget>
</item>
</layout>
</item>
<item row="0" column="2">
<widget class="QPushButton" name="resetTerminalButton">
<property name="toolTip">
<string comment="Terminal">Reset to default.</string>
</property>
<property name="text">
<string>Reset</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="externalFileBrowserLabel">
<property name="text">
<string>External file browser:</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QLineEdit" name="externalFileBrowserEdit"/>
</item>
<item row="1" column="2">
<widget class="QPushButton" name="resetFileBrowserButton">
<property name="toolTip">
<string comment="File Browser">Reset to default.</string>
</property>
<property name="text">
<string>Reset</string>
</property>
</widget>
</item>
<item row="1" column="3">
<widget class="QToolButton" name="helpExternalFileBrowserButton">
<property name="text">
<string>?</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="patchCommandLabel">
<property name="text">
<string>Patch command:</string>
</property>
</widget>
</item>
<item row="2" column="1" colspan="2">
<widget class="Utils::PathChooser" name="patchChooser" native="true"/>
</item>
<item row="3" column="0" colspan="2">
<widget class="QWidget" name="fileSystemCaseSensitivityWidget" native="true">
<layout class="QHBoxLayout" name="horizontalLayout">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QLabel" name="label">
<property name="toolTip">
<string>Influences how file names are matched to decide if they are the same.</string>
</property>
<property name="text">
<string>File system case sensitivity:</string>
</property>
</widget>
</item>
<item>
<widget class="QComboBox" name="fileSystemCaseSensitivityChooser"/>
</item>
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</item>
<item row="4" column="0" colspan="4">
<layout class="QHBoxLayout" name="horizontalLayout_2"> <layout class="QHBoxLayout" name="horizontalLayout_2">
<item> <item>
<widget class="QLabel" name="modifiedLabel"> <widget class="QLabel" name="modifiedLabel">
@@ -63,21 +194,7 @@
</item> </item>
</layout> </layout>
</item> </item>
<item row="2" column="0"> <item row="5" column="0" colspan="3">
<widget class="QLabel" name="externalFileBrowserLabel">
<property name="text">
<string>External file browser:</string>
</property>
</widget>
</item>
<item row="2" column="3">
<widget class="QToolButton" name="helpExternalFileBrowserButton">
<property name="text">
<string>?</string>
</property>
</widget>
</item>
<item row="6" column="0" colspan="4">
<layout class="QHBoxLayout" name="horizontalLayout_5"> <layout class="QHBoxLayout" name="horizontalLayout_5">
<item> <item>
<widget class="QCheckBox" name="autoSaveCheckBox"> <widget class="QCheckBox" name="autoSaveCheckBox">
@@ -137,17 +254,7 @@
</item> </item>
</layout> </layout>
</item> </item>
<item row="3" column="0"> <item row="6" column="0" colspan="4">
<widget class="QLabel" name="patchCommandLabel">
<property name="text">
<string>Patch command:</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QLineEdit" name="externalFileBrowserEdit"/>
</item>
<item row="7" column="0" colspan="4">
<layout class="QHBoxLayout" name="horizontalLayout_3"> <layout class="QHBoxLayout" name="horizontalLayout_3">
<item> <item>
<widget class="QCheckBox" name="autoSuspendCheckBox"> <widget class="QCheckBox" name="autoSuspendCheckBox">
@@ -213,17 +320,7 @@
</item> </item>
</layout> </layout>
</item> </item>
<item row="2" column="2"> <item row="7" column="0" colspan="3">
<widget class="QPushButton" name="resetFileBrowserButton">
<property name="toolTip">
<string comment="File Browser">Reset to default.</string>
</property>
<property name="text">
<string>Reset</string>
</property>
</widget>
</item>
<item row="8" column="0" colspan="4">
<layout class="QHBoxLayout" name="horizontalLayout_4"> <layout class="QHBoxLayout" name="horizontalLayout_4">
<item> <item>
<widget class="QCheckBox" name="warnBeforeOpeningBigFiles"> <widget class="QCheckBox" name="warnBeforeOpeningBigFiles">
@@ -266,100 +363,30 @@
</item> </item>
</layout> </layout>
</item> </item>
<item row="3" column="1" colspan="2"> <item row="8" column="0" colspan="3">
<widget class="Utils::PathChooser" name="patchChooser" native="true"/> <layout class="QHBoxLayout" name="horizontalLayout_6">
</item>
<item row="0" column="2">
<widget class="QPushButton" name="resetTerminalButton">
<property name="toolTip">
<string comment="Terminal">Reset to default.</string>
</property>
<property name="text">
<string>Reset</string>
</property>
</widget>
</item>
<item row="4" column="0" colspan="4">
<widget class="QWidget" name="fileSystemCaseSensitivityWidget" native="true">
<layout class="QHBoxLayout" name="horizontalLayout">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QLabel" name="label">
<property name="toolTip">
<string>Influences how file names are matched to decide if they are the same.</string>
</property>
<property name="text">
<string>File system case sensitivity:</string>
</property>
</widget>
</item>
<item>
<widget class="QComboBox" name="fileSystemCaseSensitivityChooser"/>
</item>
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</item>
<item row="0" column="0">
<widget class="QLabel" name="terminalLabel">
<property name="text">
<string>Terminal:</string>
</property>
</widget>
</item>
<item row="0" column="1">
<layout class="QHBoxLayout" name="horizontalLayout_8">
<item> <item>
<widget class="QComboBox" name="terminalComboBox"> <widget class="QLabel" name="maxRecentFilesLabel">
<property name="sizePolicy"> <property name="text">
<sizepolicy hsizetype="Ignored" vsizetype="Fixed"> <string>Maximum number of entries in &quot;Recent Files&quot;:</string>
<horstretch>3</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property> </property>
<property name="minimumSize"> </widget>
</item>
<item>
<widget class="QSpinBox" name="maxRecentFilesSpinBox"/>
</item>
<item>
<spacer name="horizontalSpacer_8">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size> <size>
<width>100</width> <width>40</width>
<height>0</height> <height>20</height>
</size> </size>
</property> </property>
<property name="editable"> </spacer>
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="terminalOpenArgs"/>
</item>
<item>
<widget class="QLineEdit" name="terminalExecuteArgs">
<property name="toolTip">
<string>Command line arguments used for &quot;Run in terminal&quot;.</string>
</property>
</widget>
</item> </item>
</layout> </layout>
</item> </item>