示例#1
0
void Folder::addFolder(Folder& f, bool copy)
{
	int position = containsFolder(f);
	if(position != -1)
	{
		cout<<"The folder '"<<f.getName()<<"' already exists in the current folder.";
		system("pause");
	}
	else
	{
		if(folderCount == folderCapacity)
		{
			increaseFolderCapacity();
		}
		if(copy)
		{
			*nestedFolders[folderCount] = f;
			nestedFolders[folderCount]->parentFolder = this;
		}
		else
		{
			f.parentFolder = this;
			nestedFolders[folderCount] = &f;
		}
		folderCount++;
	}
}
示例#2
0
void Synchro::FirstSynchro()
{
	GetJSON();
	std::map<int, Folder *> FolderMap = myparse.getFoldermap();
	typedef std::map<int, Folder *>::iterator it_type2;
	for (it_type2 iterator = FolderMap.begin(); iterator != FolderMap.end(); iterator++) {
		Folder *fold = iterator->second;
		std::string str = this->folder + fold->getChosenPath() + "/" + fold->getName();
		char *cstr = new char[str.length() + 1];
		strcpy(cstr, str.c_str());
		if (QDir(cstr).exists() == true)
			return;
		else
			QDir().mkdir(cstr);
		delete[] cstr;
	}

	std::map<int, File *> fileMap = myparse.getFileMap();
	std::string StrignUpload = "uploads/";
	typedef std::map<int, File *>::iterator it_type;
	for (it_type iterator = fileMap.begin(); iterator != fileMap.end(); iterator++) {
		File *test = iterator->second;
		std::string urltodown = this->URL + StrignUpload + test->getPseudoOwner() + "/" + test->getRealPath() + test->getPath();
		while (urltodown.find('\\') != std::string::npos)
			replace(urltodown, "\\", "/");
		char *cstr1 = new char[urltodown.length() + 1];
		strcpy(cstr1, urltodown.c_str());

		std::string str = test->getName() + "." + test->getMimeType();
		char *cstr = new char[str.length() + 1];
		strcpy(cstr, str.c_str());

		str = this->folder + test->getChosenPath() + "/";
		char *pathDisk = new char[str.length() + 1];
		strcpy(pathDisk, str.c_str());

		std::string ty = pathDisk + str;
		QString URI(ty.c_str());
		DownloadFile(cstr1, URI);

		delete[] cstr;
		delete[] cstr1;
	}

	char acsjson[1024];
	strcpy(acsjson, this->folder);
	strcat(acsjson, ".acsilserver");
	QFile txt(acsjson);

	txt.open(QIODevice::ReadWrite | QIODevice::Text);
	txt.write(myparse.getJSON().c_str());
	txt.close();
}
示例#3
0
void LibSpotifyPlaybackHandler::playFolder(const Folder& folder)
{
    mtx_.lock();
    playQueue_.clear();
    currentlyPlayingFromName_ = folder.getName();
    currentlyPlayingFromUri_ = ""; //Unknown so far as how to get the folder link..
    currentlyPlayingFromType_ = FOLDER;
    folder.getAllTracks(playQueue_);
    playQueueIter_ = playQueue_.begin();
    if(enquedQueue_.empty())libSpotifyIf_.playTrack(playQueue_.front());
    mtx_.unlock();
}
示例#4
0
int Folder::containsFolder(const Folder& f) const
{
	int contains = -1;
	for(int i = 0; i < folderCount; i++)
	{
		if(!strcmp(nestedFolders[i]->getName(), f.getName()))
		{
			contains = i;
			break;
		}
	}
	return contains;
}
示例#5
0
bool Folder::removeFolderPointer(Folder& f)
{
	bool removed = false;
	int position = containsFolder(f);
	if(position == -1)
	{
		cout<<"The folder '"<<f.getName()<<"' you are trying to delete does not exist in the current location.\n";
		system("pause");
	}
	else
	{
		if(folderCount == folderCapacity / 4)
		{
			decreaseFolderCapacity();
		}
		for(int i = position; i < folderCount - 1; i++)
		{
			nestedFolders[i] = nestedFolders[i + 1];
		}
		folderCount--;
		removed = true;
	}
	return removed;
}
示例#6
0
void Synchro::ComparatifRenameFodler(QDateTime delta)
{
	qDebug() << delta.toString();
	std::map<int, Folder *> FolderMap = myparse.getFoldermap();
	typedef std::map<int, Folder *>::iterator it_type2;

	std::map<int, Folder *> OldFolderMap = oldparse.getFoldermap();
	typedef std::map<int, Folder *>::iterator it_type;

	QStringList ListNew, ListOld;

	for (it_type2 iterator = FolderMap.begin(); iterator != FolderMap.end(); iterator++) {

		Folder *fold = iterator->second;
		ListNew.push_back((this->folder + fold->getChosenPath() + fold->getName()).c_str());
		QString d = QString::fromStdString(fold->getLastModifDate());
		long long r = QDateTime::fromString(d, "yyyy:MM:dd hh:mm:ss").msecsTo(delta);
		if (r < 0)
		{
			std::string tmppath = this->folder + fold->getChosenPath() + fold->getName();
			QString path(tmppath.c_str());

			qDebug() << "Directory updated: " << path;

			for (it_type iterator2 = OldFolderMap.begin(); iterator2 != OldFolderMap.end(); iterator2++) {
				Folder *oldfold = iterator2->second;

				if (oldfold->getId() == fold->getId())
				{
					std::string oldpath = this->folder + oldfold->getChosenPath() + oldfold->getName();
					qDebug() << "Directory Old: " << oldpath.c_str();
					if ((oldfold->getName() != fold->getName()) || (oldpath != path.toStdString()))
					{
						QString original = (this->folder + oldfold->getChosenPath() + oldfold->getName()).c_str();
						QString dest = (this->folder + fold->getChosenPath() + fold->getName()).c_str();
						QDir dir;
						if (!dir.rename(original, dest)){
							qDebug() << "OOOOOOO SECOURSSSSSSSS";

						}
					}
				}
			}
		}
		else
		{

		}
	}
	for (it_type iterator2 = OldFolderMap.begin(); iterator2 != OldFolderMap.end(); iterator2++) {
		Folder *oldfold = iterator2->second;
		ListOld.push_back((this->folder + oldfold->getChosenPath() + oldfold->getName()).c_str());
	}

	QStringList currEntryList = ListNew;

	QStringList newEntryList = ListOld;
	QSet<QString> newDirSet = QSet<QString>::fromList(newEntryList);
	QSet<QString> currentDirSet = QSet<QString>::fromList(currEntryList);
	// Files that have been added
	QSet<QString> newFiles = newDirSet - currentDirSet;
	QStringList newFile = newFiles.toList();
	// Files that have been removed
	QSet<QString> deletedFiles = currentDirSet - newDirSet;
	QStringList deleteFile = deletedFiles.toList();
	if (!deleteFile.isEmpty())
	{
		qDebug() << "Files/Dirs deleted: " << deleteFile;
		foreach(QString file, deleteFile)
		{
			if (QDir(file).exists() == true)
				return;
			else
				QDir().mkdir(file);
		}
	}