Restore feature I accidentally erased in modellist update.

This commit is contained in:
Adam Treat 2023-06-26 17:50:11 -04:00
parent b19a3e5b2c
commit d0a3e82ffc
3 changed files with 37 additions and 4 deletions

View File

@ -343,6 +343,15 @@ void Download::parseModelsJsonFile(const QByteArray &jsonData)
ModelList::globalInstance()->updateData(modelFilename, ModelList::QuantRole, "NA"); ModelList::globalInstance()->updateData(modelFilename, ModelList::QuantRole, "NA");
ModelList::globalInstance()->updateData(modelFilename, ModelList::TypeRole, "GPT"); ModelList::globalInstance()->updateData(modelFilename, ModelList::TypeRole, "GPT");
} }
if (ModelList::globalInstance()->installedModels()->count()) {
const QString firstModel =
ModelList::globalInstance()->installedModels()->firstFilename();
QSettings settings;
settings.sync();
settings.setValue("defaultModel", firstModel);
settings.sync();
}
} }
void Download::handleReleaseJsonDownloadFinished() void Download::handleReleaseJsonDownloadFinished()

View File

@ -24,6 +24,16 @@ int InstalledModels::count() const
return rowCount(); return rowCount();
} }
QString InstalledModels::firstFilename() const
{
if (rowCount() > 0) {
QModelIndex firstIndex = index(0, 0);
return sourceModel()->data(firstIndex, ModelList::FilenameRole).toString();
} else {
return QString();
}
}
DownloadableModels::DownloadableModels(QObject *parent) DownloadableModels::DownloadableModels(QObject *parent)
: QSortFilterProxyModel(parent) : QSortFilterProxyModel(parent)
, m_expanded(false) , m_expanded(false)
@ -141,15 +151,28 @@ ModelInfo ModelList::defaultModelInfo() const
// The user default model can be set by the user in the settings dialog. The "default" user // The user default model can be set by the user in the settings dialog. The "default" user
// default model is "Application default" which signals we should use the default model that was // default model is "Application default" which signals we should use the default model that was
// specified by the models.json file. // specified by the models.json file.
const QString defaultModelName = settings.value("userDefaultModel").toString(); const QString userDefaultModelName = settings.value("userDefaultModel").toString();
const bool hasDefaultName = !defaultModelName.isEmpty() && defaultModelName != "Application default"; const bool hasUserDefaultName = !userDefaultModelName.isEmpty() && userDefaultModelName != "Application default";
const QString defaultModelName = settings.value("defaultModel").toString();
const bool hasDefaultName = hasUserDefaultName ? false : !defaultModelName.isEmpty();
ModelInfo *defaultModel = nullptr; ModelInfo *defaultModel = nullptr;
for (ModelInfo *info : m_models) { for (ModelInfo *info : m_models) {
if (!info->installed) if (!info->installed)
continue; continue;
defaultModel = info; defaultModel = info;
if (!hasDefaultName) break;
if (hasDefaultName && (defaultModel->name == defaultModelName || defaultModel->filename == defaultModelName)) break; // If we don't have either setting, then just use the first model that is installed
if (!hasUserDefaultName && !hasDefaultName)
break;
// If we don't have a user specified default, but *do* have a default setting and match, then use it
if (!hasUserDefaultName && hasDefaultName && (defaultModel->name == defaultModelName || defaultModel->filename == defaultModelName))
break;
// If we have a user specified default and match, then use it
if (hasUserDefaultName && (defaultModel->name == userDefaultModelName || defaultModel->filename == userDefaultModelName))
break;
} }
if (defaultModel) if (defaultModel)
return *defaultModel; return *defaultModel;

View File

@ -73,6 +73,7 @@ class InstalledModels : public QSortFilterProxyModel
public: public:
explicit InstalledModels(QObject *parent); explicit InstalledModels(QObject *parent);
int count() const; int count() const;
QString firstFilename() const;
Q_SIGNALS: Q_SIGNALS:
void countChanged(); void countChanged();