Improve loading time

This commit is contained in:
Claveau Joshua
2020-01-23 10:45:14 +01:00
parent f297e28b64
commit f8dcdec735
2 changed files with 31 additions and 12 deletions

View File

@@ -43,7 +43,6 @@ bool FileElementCollectionItem::setRootPath(const QString& path, bool set_data,
if (dir.exists())
{
m_path = path;
m_location.setPath(collectionPath());
populate(set_data, hide_element);
return true;
}
@@ -138,7 +137,29 @@ QString FileElementCollectionItem::localName()
}
}
else if (isElement()) {
setText(m_location.name());
ElementsLocation loc(collectionPath());
setText(loc.name());
}
return text();
}
/**
* @brief FileElementCollectionItem::localName
* Surcharged method, unlike the default method, avoid to create an elementLocation and so, gain time.
* @param location
* @return
*/
QString FileElementCollectionItem::localName(const ElementsLocation &location)
{
if (!text().isNull())
return text();
else if (isDir()) {
localName();
}
else if (isElement()) {
setText(location.name());
}
return text();
@@ -242,12 +263,13 @@ void FileElementCollectionItem::setUpData()
//Set the local name and all informations of the element
//in the data Qt::UserRole+1, these data will be use for search.
DiagramContext context = m_location.elementInformations();
ElementsLocation loc(collectionPath());
DiagramContext context = loc.elementInformations();
QStringList search_list;
for (QString key : context.keys()) {
search_list.append(context.value(key).toString());
}
search_list.append(localName());
search_list.append(localName(loc));
setData(search_list.join(" "));
}
@@ -275,7 +297,8 @@ void FileElementCollectionItem::setUpIcon()
if (isDir()) {
setIcon(QET::Icons::Folder);
} else {
setIcon(m_location.icon());
ElementsLocation loc(collectionPath());
setIcon(loc.icon());
}
}
}
@@ -290,7 +313,6 @@ void FileElementCollectionItem::setUpIcon()
void FileElementCollectionItem::setPathName(const QString& path_name, bool set_data, bool hide_element)
{
m_path = path_name;
m_location.setPath(collectionPath());
//This isn't an element, we create the childs
if (!path_name.endsWith(".elmt"))
@@ -307,7 +329,7 @@ void FileElementCollectionItem::populate(bool set_data, bool hide_element)
QDir dir (fileSystemPath());
//Get all directory in this directory.
foreach(QString str, dir.entryList(QDir::Dirs | QDir::NoDotAndDotDot, QDir::Name))
for(auto str : dir.entryList(QDir::Dirs | QDir::NoDotAndDotDot, QDir::Name))
{
FileElementCollectionItem *feci = new FileElementCollectionItem();
appendRow(feci);
@@ -321,7 +343,7 @@ void FileElementCollectionItem::populate(bool set_data, bool hide_element)
//Get all elmt file in this directory
dir.setNameFilters(QStringList() << "*.elmt");
foreach(QString str, dir.entryList(QDir::Files | QDir::NoDotAndDotDot, QDir::Name))
for(auto str : dir.entryList(QDir::Files | QDir::NoDotAndDotDot, QDir::Name))
{
FileElementCollectionItem *feci = new FileElementCollectionItem();
appendRow(feci);

View File

@@ -41,6 +41,7 @@ class FileElementCollectionItem : public ElementCollectionItem
bool isDir() const override;
bool isElement() const override;
QString localName() override;
QString localName(const ElementsLocation &location);
QString name() const override;
QString collectionPath() const override;
bool isCollectionRoot() const override;
@@ -51,16 +52,12 @@ class FileElementCollectionItem : public ElementCollectionItem
void setUpData() override;
void setUpIcon() override;
void hire();
private:
void setPathName(const QString& path_name, bool set_data = true, bool hide_element = false);
void populate(bool set_data = true, bool hide_element = false);
private:
QString m_path;
ElementsLocation m_location;
};
#endif // FILEELEMENTCOLLECTIONITEM2_H