mirror of
https://github.com/qelectrotech/qelectrotech-source-mirror.git
synced 2026-09-26 03:44:14 +02:00
3a45625d69
The root of a project's embedded collection showed "Projet sans titre" whenever the project had no title, while the project panel shows the file name. Fall back to the file name the same way, and only use "Projet sans titre" for a project that has neither. The name was also computed once, so changing the project title or saving it under a new name left the pane stale until the collections were reloaded. Update it on projectTitleChanged and projectFilePathChanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
87 lines
3.1 KiB
C++
87 lines
3.1 KiB
C++
/*
|
|
Copyright 2006-2026 The QElectroTech Team
|
|
This file is part of QElectroTech.
|
|
|
|
QElectroTech 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 2 of the License, or
|
|
(at your option) any later version.
|
|
|
|
QElectroTech 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 for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with QElectroTech. If not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
#ifndef ELEMENTSCOLLECTIONMODEL2_H
|
|
#define ELEMENTSCOLLECTIONMODEL2_H
|
|
|
|
#include <QStandardItemModel>
|
|
#include <QHash>
|
|
#include "elementslocation.h"
|
|
|
|
class XmlProjectElementCollectionItem;
|
|
class ElementCollectionItem;
|
|
template<> class QList<QETProject>;
|
|
template<> class QHash<QETProject, XmlProjectElementCollectionItem>;
|
|
template<> class QList<ElementCollectionItem>;
|
|
|
|
|
|
class ElementsCollectionModel : public QStandardItemModel
|
|
{
|
|
Q_OBJECT
|
|
|
|
public:
|
|
ElementsCollectionModel(QObject *parent = Q_NULLPTR);
|
|
~ElementsCollectionModel() override;
|
|
|
|
QVariant data(const QModelIndex &index, int role) const override;
|
|
QMimeData *mimeData(const QModelIndexList &indexes) const override;
|
|
QStringList mimeTypes() const override;
|
|
bool canDropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) const override;
|
|
bool dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) override;
|
|
|
|
void loadCollections(bool common_collection, bool company_collection, bool custom_collection, QList<QETProject *> projects);
|
|
|
|
void addCommonCollection(bool set_data = true);
|
|
void addCompanyCollection(bool set_data = true);
|
|
void addCustomCollection(bool set_data = true);
|
|
void addMacrosCollection(bool set_data = true);
|
|
void loadMacrosCollection();
|
|
void addLocation(const ElementsLocation& location);
|
|
|
|
void addProject(QETProject *project, bool set_data = true);
|
|
void removeProject(QETProject *project);
|
|
QList<QETProject *> project() const;
|
|
void highlightUnusedElement();
|
|
|
|
|
|
QList <ElementCollectionItem *> items() const;
|
|
QList <ElementCollectionItem *> projectItems(QETProject *project) const;
|
|
void hideElement();
|
|
bool isHideElement() {return m_hide_element;}
|
|
QModelIndex indexFromLocation(const ElementsLocation &location);
|
|
|
|
signals:
|
|
void loadingProgressValueChanged(int);
|
|
void loadingProgressRangeChanged(int, int);
|
|
void loadingFinished();
|
|
|
|
private:
|
|
void elementIntegratedToCollection (const QString& path);
|
|
void itemRemovedFromCollection (const QString& path);
|
|
void updateItem (const QString& path);
|
|
void projectNameChanged (QETProject *project);
|
|
|
|
private:
|
|
QList <QETProject *> m_project_list;
|
|
QHash <QETProject *, XmlProjectElementCollectionItem *> m_project_hash;
|
|
bool m_hide_element = false;
|
|
QFuture<void> m_future;
|
|
QList <ElementCollectionItem *> m_items_list_to_setUp;
|
|
};
|
|
|
|
#endif // ELEMENTSCOLLECTIONMODEL2_H
|