From 76d71d9067060b963002bdf0b24f69dbaaca566f Mon Sep 17 00:00:00 2001 From: boutinb Date: Sat, 11 Nov 2023 15:34:11 +0100 Subject: [PATCH] Recent files should remember also Data library files --- Desktop/components/JASP/Widgets/FileMenu/ListItem.qml | 2 +- Desktop/widgets/filemenu/filemenu.cpp | 8 +++++--- Desktop/widgets/filemenu/filemenubasiclistmodel.cpp | 5 +++++ Desktop/widgets/filemenu/filemenulistitem.h | 2 ++ 4 files changed, 13 insertions(+), 4 deletions(-) diff --git a/Desktop/components/JASP/Widgets/FileMenu/ListItem.qml b/Desktop/components/JASP/Widgets/FileMenu/ListItem.qml index 62c62e3d118..42d7f2d53f2 100644 --- a/Desktop/components/JASP/Widgets/FileMenu/ListItem.qml +++ b/Desktop/components/JASP/Widgets/FileMenu/ListItem.qml @@ -214,7 +214,7 @@ FocusScope anchors.left: rectTitleAndDataFile.left anchors.right: parent.right anchors.leftMargin: (10 * preferencesModel.uiScale) + associatedDatafileImage.width - text: model.dirpath + text: model.displayedpath color: jaspTheme.textEnabled horizontalAlignment: Text.AlignLeft verticalAlignment: Text.AlignVCenter diff --git a/Desktop/widgets/filemenu/filemenu.cpp b/Desktop/widgets/filemenu/filemenu.cpp index b04f5ea524e..2d2bbc3524c 100644 --- a/Desktop/widgets/filemenu/filemenu.cpp +++ b/Desktop/widgets/filemenu/filemenu.cpp @@ -24,6 +24,7 @@ #include "log.h" #include "data/datasetpackage.h" #include "mainwindow.h" +#include "utilities/appdirs.h" FileMenu::FileMenu(QObject *parent) : QObject(parent) { @@ -255,11 +256,12 @@ void FileMenu::dataSetIOCompleted(FileEvent *event) { if (event->isSuccessful()) { - // don't add examples to the recent list - if (!event->isReadOnly()) + // don't add database to the recent list + if (!event->isDatabase()) { _recentFiles->pushRecentFilePath(event->path()); - _computer->addRecentFolder(event->path()); + if (!event->path().startsWith(AppDirs::examples())) + _computer->addRecentFolder(event->path()); } if(event->operation() == FileEvent::FileSave || (event->operation() == FileEvent::FileOpen && !event->isReadOnly())) diff --git a/Desktop/widgets/filemenu/filemenubasiclistmodel.cpp b/Desktop/widgets/filemenu/filemenubasiclistmodel.cpp index 4cca76fe0d9..ed727f6b129 100644 --- a/Desktop/widgets/filemenu/filemenubasiclistmodel.cpp +++ b/Desktop/widgets/filemenu/filemenubasiclistmodel.cpp @@ -4,6 +4,7 @@ #include #include "log.h" #include "jasptheme.h" +#include "utilities/appdirs.h" FileMenuBasicListModel::FileMenuBasicListModel(QObject *parent, FileSystem * model) : QAbstractListModel(parent), _model(model) { @@ -41,12 +42,15 @@ QVariant FileMenuBasicListModel::data(const QModelIndex &index, int role) const case IconSourceRole: return JaspTheme::currentIconPath() + FileSystemEntry::sourcesIcons()[item.entryType]; case DataIconSourceRole: return JaspTheme::currentIconPath() + FileSystemEntry::sourcesIcons()[FileSystemEntry::CSV]; case DirRole: + case DisplayedPathRole: { if (QFileInfo(item.path).path().toLower().startsWith("http:") || QFileInfo(item.path).path().toLower().startsWith("https:")) return QFileInfo (item.path).path(); else { QString location = QDir::toNativeSeparators(QFileInfo (item.path).path()) ; + if (role == DisplayedPathRole && location.startsWith(AppDirs::examples())) + location = location.mid(AppDirs::examples().length() + 1); while (location.endsWith(QDir::separator())) location.chop(1); return location + QDir::separator(); } @@ -76,6 +80,7 @@ bool FileMenuBasicListModel::setData(const QModelIndex &index, const QVariant &v case AssociatedDataFileRole: item.associatedDataFile = value.toString(); break; case IconSourceRole: //Do nothing case DataIconSourceRole: + case DisplayedPathRole: case DirRole: break; } diff --git a/Desktop/widgets/filemenu/filemenulistitem.h b/Desktop/widgets/filemenu/filemenulistitem.h index 6bacf3b9553..d92bfff5b01 100644 --- a/Desktop/widgets/filemenu/filemenulistitem.h +++ b/Desktop/widgets/filemenu/filemenulistitem.h @@ -13,6 +13,7 @@ enum FileMenuListItemType { IconSourceRole, DataIconSourceRole, DirRole, + DisplayedPathRole, ActionRole }; @@ -25,6 +26,7 @@ const QHash FileMenuListItemTypeRoleNames = { { IconSourceRole, "iconsource" }, { DataIconSourceRole, "dataiconsource" }, { DirRole, "dirpath" }, + { DisplayedPathRole, "displayedpath" }, { ActionRole, "action" } };