forked from qt-creator/qt-creator
Fix: Recents don't show up for Custom presets
In the New Project dialog for QDS, if the user had created a project from a User-defined (i.e. Custom) preset, this preset did not appear under the Recents tab. Task-number: QDS-4989 Change-Id: Ib1f5e772fc9a45ad727627152f292f6e1178ee8c Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io> Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
This commit is contained in:
@@ -199,7 +199,7 @@ ScrollView {
|
|||||||
anchors.margins: 4
|
anchors.margins: 4
|
||||||
visible: isUserPreset === true
|
visible: isUserPreset === true
|
||||||
&& delegate.hover
|
&& delegate.hover
|
||||||
&& scrollView.currentTabName !== "Recents"
|
&& scrollView.currentTabName !== BackendApi.recentsTabName()
|
||||||
|
|
||||||
Text {
|
Text {
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
|
@@ -39,6 +39,12 @@ static const QString CustomTabName = QObject::tr("Custom");
|
|||||||
|
|
||||||
/****************** PresetData ******************/
|
/****************** PresetData ******************/
|
||||||
|
|
||||||
|
|
||||||
|
QString PresetData::recentsTabName()
|
||||||
|
{
|
||||||
|
return RecentsTabName;
|
||||||
|
}
|
||||||
|
|
||||||
void PresetData::setData(const PresetsByCategory &presetsByCategory,
|
void PresetData::setData(const PresetsByCategory &presetsByCategory,
|
||||||
const std::vector<UserPresetData> &userPresetsData,
|
const std::vector<UserPresetData> &userPresetsData,
|
||||||
const std::vector<RecentPresetData> &loadedRecentsData)
|
const std::vector<RecentPresetData> &loadedRecentsData)
|
||||||
@@ -47,11 +53,6 @@ void PresetData::setData(const PresetsByCategory &presetsByCategory,
|
|||||||
m_recents = loadedRecentsData;
|
m_recents = loadedRecentsData;
|
||||||
m_userPresets = userPresetsData;
|
m_userPresets = userPresetsData;
|
||||||
|
|
||||||
if (!m_recents.empty()) {
|
|
||||||
m_categories.push_back(RecentsTabName);
|
|
||||||
m_presets.push_back({});
|
|
||||||
}
|
|
||||||
|
|
||||||
for (auto &[id, category] : presetsByCategory) {
|
for (auto &[id, category] : presetsByCategory) {
|
||||||
m_categories.push_back(category.name);
|
m_categories.push_back(category.name);
|
||||||
m_presets.push_back(category.items);
|
m_presets.push_back(category.items);
|
||||||
@@ -59,17 +60,21 @@ void PresetData::setData(const PresetsByCategory &presetsByCategory,
|
|||||||
|
|
||||||
PresetItems wizardPresets = Utils::flatten(m_presets);
|
PresetItems wizardPresets = Utils::flatten(m_presets);
|
||||||
|
|
||||||
PresetItems recentPresets = makeRecentPresets(wizardPresets);
|
|
||||||
if (!m_recents.empty()) {
|
|
||||||
m_presets[0] = recentPresets;
|
|
||||||
}
|
|
||||||
|
|
||||||
PresetItems userPresetItems = makeUserPresets(wizardPresets);
|
PresetItems userPresetItems = makeUserPresets(wizardPresets);
|
||||||
if (!userPresetItems.empty()) {
|
if (!userPresetItems.empty()) {
|
||||||
m_categories.push_back(CustomTabName);
|
m_categories.push_back(CustomTabName);
|
||||||
m_presets.push_back(userPresetItems);
|
m_presets.push_back(userPresetItems);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
PresetItems allWizardPresets = std::move(wizardPresets);
|
||||||
|
Utils::concat(allWizardPresets, userPresetItems);
|
||||||
|
|
||||||
|
PresetItems recentPresets = makeRecentPresets(allWizardPresets);
|
||||||
|
if (!recentPresets.empty()) {
|
||||||
|
Utils::prepend(m_categories, RecentsTabName);
|
||||||
|
Utils::prepend(m_presets, recentPresets);
|
||||||
|
}
|
||||||
|
|
||||||
m_presetsByCategory = presetsByCategory;
|
m_presetsByCategory = presetsByCategory;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -115,7 +115,7 @@ inline QDebug &operator<<(QDebug &d, const PresetItem &item)
|
|||||||
d << "; size = " << item.screenSizeName;
|
d << "; size = " << item.screenSizeName;
|
||||||
|
|
||||||
if (item.isUserPreset())
|
if (item.isUserPreset())
|
||||||
d << (UserPresetItem &) item;
|
d << "; " << (UserPresetItem &) item;
|
||||||
|
|
||||||
return d;
|
return d;
|
||||||
}
|
}
|
||||||
@@ -177,6 +177,8 @@ public:
|
|||||||
const std::vector<PresetItems> &presets() const { return m_presets; }
|
const std::vector<PresetItems> &presets() const { return m_presets; }
|
||||||
const Categories &categories() const { return m_categories; }
|
const Categories &categories() const { return m_categories; }
|
||||||
|
|
||||||
|
static QString recentsTabName();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
PresetItems makeRecentPresets(const PresetItems &wizardPresets);
|
PresetItems makeRecentPresets(const PresetItems &wizardPresets);
|
||||||
PresetItems makeUserPresets(const PresetItems &wizardPresets);
|
PresetItems makeUserPresets(const PresetItems &wizardPresets);
|
||||||
|
@@ -376,6 +376,11 @@ void QdsNewDialog::setWizardFactories(QList<Core::IWizardFactory *> factories_,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QString QdsNewDialog::recentsTabName() const
|
||||||
|
{
|
||||||
|
return PresetData::recentsTabName();
|
||||||
|
}
|
||||||
|
|
||||||
QString QdsNewDialog::qmlPath() const
|
QString QdsNewDialog::qmlPath() const
|
||||||
{
|
{
|
||||||
return Core::ICore::resourcePath("qmldesigner/newprojectdialog/NewProjectDialog.qml").toString();
|
return Core::ICore::resourcePath("qmldesigner/newprojectdialog/NewProjectDialog.qml").toString();
|
||||||
|
@@ -74,6 +74,7 @@ public:
|
|||||||
Q_INVOKABLE int screenSizeIndex() const;
|
Q_INVOKABLE int screenSizeIndex() const;
|
||||||
|
|
||||||
Q_INVOKABLE QString chooseProjectLocation();
|
Q_INVOKABLE QString chooseProjectLocation();
|
||||||
|
Q_INVOKABLE QString recentsTabName() const;
|
||||||
|
|
||||||
Q_PROPERTY(QAbstractListModel *categoryModel MEMBER m_categoryModel CONSTANT);
|
Q_PROPERTY(QAbstractListModel *categoryModel MEMBER m_categoryModel CONSTANT);
|
||||||
Q_PROPERTY(QAbstractListModel *presetModel MEMBER m_presetModel CONSTANT);
|
Q_PROPERTY(QAbstractListModel *presetModel MEMBER m_presetModel CONSTANT);
|
||||||
|
@@ -326,6 +326,79 @@ TEST(QdsPresetModel, userPresetWithSameNameAsWizardPreset)
|
|||||||
ElementsAre(UserPresetIs("A.categ", "Desktop", "Desktop"))));
|
ElementsAre(UserPresetIs("A.categ", "Desktop", "Desktop"))));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST(QdsPresetModel, recentOfUserPresetReferringToExistingWizardPreset)
|
||||||
|
{
|
||||||
|
// Given
|
||||||
|
PresetData data;
|
||||||
|
|
||||||
|
// When
|
||||||
|
data.setData(
|
||||||
|
/*wizard presets*/
|
||||||
|
{
|
||||||
|
aCategory("A.categ", "A", {"Desktop"}),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
aUserPreset("A.categ", "Desktop", "Windows 7"),
|
||||||
|
},
|
||||||
|
/*recents*/
|
||||||
|
{
|
||||||
|
{"A.categ", "Windows 7", "200 x 300", /*is user*/true}
|
||||||
|
});
|
||||||
|
|
||||||
|
// Then
|
||||||
|
ASSERT_THAT(data.categories(), ElementsAre("Recents", "A", "Custom"));
|
||||||
|
ASSERT_THAT(data.presets(),
|
||||||
|
ElementsAre(ElementsAre(UserPresetIs("A.categ", "Desktop", "Windows 7")),
|
||||||
|
ElementsAre(PresetIs("A.categ", "Desktop")),
|
||||||
|
ElementsAre(UserPresetIs("A.categ", "Desktop", "Windows 7"))));
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST(QdsPresetModel, recentOfUserPresetReferringToNonexistingWizardPreset)
|
||||||
|
{
|
||||||
|
// Given
|
||||||
|
PresetData data;
|
||||||
|
|
||||||
|
// When
|
||||||
|
data.setData(
|
||||||
|
/*wizard presets*/
|
||||||
|
{
|
||||||
|
aCategory("A.categ", "A", {"Desktop"}),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
aUserPreset("A.categ", "Not-Desktop", "Windows 7"), // Non-existing Wizard Preset
|
||||||
|
},
|
||||||
|
/*recents*/
|
||||||
|
{
|
||||||
|
{"A.categ", "Windows 7", "200 x 300", /*is user*/true}
|
||||||
|
});
|
||||||
|
|
||||||
|
// Then
|
||||||
|
ASSERT_THAT(data.categories(), ElementsAre("A"));
|
||||||
|
ASSERT_THAT(data.presets(), ElementsAre(ElementsAre(PresetIs("A.categ", "Desktop"))));
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST(QdsPresetModel, recentOfNonExistentUserPreset)
|
||||||
|
{
|
||||||
|
// Given
|
||||||
|
PresetData data;
|
||||||
|
|
||||||
|
// When
|
||||||
|
data.setData(
|
||||||
|
/*wizard presets*/
|
||||||
|
{
|
||||||
|
aCategory("A.categ", "A", {"Desktop"}),
|
||||||
|
},
|
||||||
|
{/*user presets*/},
|
||||||
|
/*recents*/
|
||||||
|
{
|
||||||
|
{"A.categ", "Windows 7", "200 x 300", /*is user*/true}
|
||||||
|
});
|
||||||
|
|
||||||
|
// Then
|
||||||
|
ASSERT_THAT(data.categories(), ElementsAre("A"));
|
||||||
|
ASSERT_THAT(data.presets(), ElementsAre(ElementsAre(PresetIs("A.categ", "Desktop"))));
|
||||||
|
}
|
||||||
|
|
||||||
TEST(QdsPresetModel, recentsShouldNotBeSorted)
|
TEST(QdsPresetModel, recentsShouldNotBeSorted)
|
||||||
{
|
{
|
||||||
// Given
|
// Given
|
||||||
|
Reference in New Issue
Block a user