[ create a new paste ] login | about

Link: http://codepad.org/bFTYI2z1    [ raw code | fork ]

C++, pasted on Jul 26:
	void Account::handleFileList (const QList<DriveItem>& items)
	{
		QList<QList<QStandardItem*>> treeItems;

		QHash<QString, QStandardItem*> id2ItemDir;
		QHash<QString, DriveItem> trashedItems;
		QList<DriveItem> othersItems;

		Q_FOREACH (const DriveItem& item, items)
		{
			if (item.Labels_ & DriveItem::ILRemoved)
			{
				trashedItems [item.Id_] = item;
				continue;
			}

			if (item.ParentIsRoot_)
				treeItems << CreateNewItem (item, id2ItemDir);
			else
				othersItems << item;
		}

		int i = 0;
		while (!othersItems.isEmpty ())
		{
			if (othersItems.count () == i)
				break;

			DriveItem item = othersItems.at (i++);
			if (id2ItemDir.contains (item.ParentId_))
			{
				auto row = CreateNewItem (item, id2ItemDir);
				id2ItemDir [item.ParentId_]->appendRow (row);
				othersItems.removeAt (i - 1);
				i = 0;
			}
		}

		QList<DriveItem> result;
		QStringList removedKeys;
		Q_FOREACH (const auto& key, trashedItems.keys ())
		{
			const auto& item = trashedItems [key];
			if (!trashedItems.contains (item.ParentId_))
			{
				treeItems << CreateNewItem (trashedItems [key], id2ItemDir);
				removedKeys << key;
			}
		}

		for (const auto& key : removedKeys)
			trashedItems.remove (key);

		i = 0;
		while (!trashedItems.isEmpty ())
		{
			if (trashedItems.count () == i)
				break;

			auto key = trashedItems.keys ().at (i++);
			DriveItem item = trashedItems [key];
			if (id2ItemDir.contains (item.ParentId_))
			{
				auto row = CreateNewItem (item, id2ItemDir);
				id2ItemDir [item.ParentId_]->appendRow (row);
				trashedItems.remove (key);
				i = 0;
			}
		}

		emit gotListing (QList<QList<QStandardItem*>> ());
		emit gotListing (treeItems);
	}


Create a new paste based on this one


Comments: