当前位置: 首页>>代码示例>>C++>>正文


C++ MediaInfo::clear方法代码示例

本文整理汇总了C++中MediaInfo::clear方法的典型用法代码示例。如果您正苦于以下问题:C++ MediaInfo::clear方法的具体用法?C++ MediaInfo::clear怎么用?C++ MediaInfo::clear使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在MediaInfo的用法示例。


在下文中一共展示了MediaInfo::clear方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: rx_extinf

void M3UParser::load() {
	QTime timeElapsed;
	timeElapsed.start();

	_stop = false;

	QList<MediaInfo> files;

	qDebug() << __FUNCTION__ << "Playlist:" << _filename;

	//See http://regexlib.com/DisplayPatterns.aspx

	//#EXTM3U
	static QRegExp rx_extm3u("^#EXTM3U$|^#M3U$");
	//#EXTINF:123,Sample title
	static QRegExp rx_extinf("^#EXTINF:([-+]?\\d+),(.*)$");
	//#EXTINF:Sample title
	static QRegExp rx_extinf_title("^#EXTINF:(.*)$");
	//#Just a comment
	static QRegExp rx_comment("^#.*$");

	QFile file(_filename);
	if (file.open(QIODevice::ReadOnly)) {
		QString path(QFileInfo(_filename).path());

		QTextStream stream(&file);

		if (isUtf8()) {
			stream.setCodec("UTF-8");
		} else {
			stream.setCodec(QTextCodec::codecForLocale());
		}

		MediaInfo mediaInfo;

		while (!stream.atEnd() && !_stop) {
			//Line of text excluding '\n'
			QString line(stream.readLine().trimmed());

			if (line.isEmpty()) {
				//Do nothing
			}

			else if (rx_extm3u.indexIn(line) != -1) {
				//#EXTM3U line, ignored
			}

			else if (rx_extinf.indexIn(line) != -1) {
				//#EXTINF line
				QString length(rx_extinf.cap(1));
				if (!length.isEmpty()) {
					mediaInfo.setLength(length.toInt());
				}
				QString title(rx_extinf.cap(2));
				if (!title.isEmpty()) {
					mediaInfo.insertMetadata(MediaInfo::Title, title);
				}
			}

			else if (rx_extinf_title.indexIn(line) != -1) {
				QString title(rx_extinf_title.cap(1));
				if (!title.isEmpty()) {
					mediaInfo.insertMetadata(MediaInfo::Title, title);
				}
			}

			else if (rx_comment.indexIn(line) != -1) {
				//# line, comment, ignored
			}

			else {
				bool isUrl = MediaInfo::isUrl(line);
				mediaInfo.setUrl(isUrl);
				if (isUrl) {
					mediaInfo.setFileName(line);
				} else {
					mediaInfo.setFileName(Util::canonicalFilePath(path, line));
				}

				//Add file to the list of files
				files << mediaInfo;

				//Clear the MediaInfo for the next 2 lines from the m3u playlist
				mediaInfo.clear();

				if (files.size() > FILES_FOUND_LIMIT) {
					//Emits the signal every FILES_FOUND_LIMIT files found
					emit filesFound(files);
					files.clear();
				}
			}
		}
	}

	file.close();

	if (!files.isEmpty()) {
		//Emits the signal for the remaining files found (< FILES_FOUND_LIMIT)
		emit filesFound(files);
	}
//.........这里部分代码省略.........
开发者ID:vilkov,项目名称:phonon-vlc-mplayer,代码行数:101,代码来源:M3UParser.cpp

示例2: load


//.........这里部分代码省略.........
		QString filename;

		while (!stream.atEnd() && !_stop) {
			//Line of text, don't use trimmed()
			//since CUE sheet files contain indentation spaces
			QString line(stream.readLine());

			if (line.isEmpty()) {
				//Do nothing
			}

			else if (rx_genre.indexIn(line) != -1) {
				genre = rx_genre.cap(1);
			}

			else if (rx_date.indexIn(line) != -1) {
				date = rx_date.cap(1);
			}

			else if (rx_root_performer.indexIn(line) != -1) {
				albumArtist = rx_root_performer.cap(1);
			}

			else if (rx_root_title.indexIn(line) != -1) {
				album = rx_root_title.cap(1);
			}

			else if (rx_file.indexIn(line) != -1) {
				filename = rx_file.cap(1);
			}

			else if (rx_track.indexIn(line) != -1) {
				QString track(rx_track.cap(1));
				mediaInfo.insertMetadata(MediaInfo::TrackNumber, track);
			}

			else if (rx_title.indexIn(line) != -1) {
				QString title(rx_title.cap(1));
				mediaInfo.insertMetadata(MediaInfo::Title, title);
			}

			else if (rx_performer.indexIn(line) != -1) {
				QString performer(rx_performer.cap(1));
				mediaInfo.insertMetadata(MediaInfo::Artist, performer);
			}

			else if (rx_index.indexIn(line) != -1) {
				QString index(rx_index.cap(1));
				mediaInfo.setCueStartIndex(index);

				if (!files.isEmpty()) {
					//Now we know the CUE end index from the previous media
					files.last().setCueEndIndex(index);
				}

				mediaInfo.insertMetadata(MediaInfo::Genre, genre);
				mediaInfo.insertMetadata(MediaInfo::Year, date);
				mediaInfo.insertMetadata(MediaInfo::AlbumArtist, albumArtist);
				mediaInfo.insertMetadata(MediaInfo::Album, album);

				bool isUrl = MediaInfo::isUrl(filename);
				mediaInfo.setUrl(isUrl);
				if (isUrl) {
					mediaInfo.setFileName(filename);
				} else {
					mediaInfo.setFileName(Util::canonicalFilePath(path, filename));
				}

				if (!mediaInfo.fileName().isEmpty()) {
					//Add file to the list of files
					files << mediaInfo;

					//Clear the MediaInfo for the next lines
					mediaInfo.clear();

					if (files.size() > FILES_FOUND_LIMIT) {
						//Emits the signal every FILES_FOUND_LIMIT files found
						emit filesFound(files);
						files.clear();
					}
				}

			}

			else {
				//Syntax error
			}
		}
	}

	file.close();

	if (!files.isEmpty()) {
		//Emits the signal for the remaining files found (< FILES_FOUND_LIMIT)
		emit filesFound(files);
	}

	//Emits the last signal
	emit finished(timeElapsed.elapsed());
}
开发者ID:vilkov,项目名称:phonon-vlc-mplayer,代码行数:101,代码来源:CUEParser.cpp

示例3: load

void XSPFParser::load() {
	QTime timeElapsed;
	timeElapsed.start();

	_stop = false;

	QList<MediaInfo> files;

	qDebug() << __FUNCTION__ << "Playlist:" << _filename;

	QFile file(_filename);
	if (file.open(QIODevice::ReadOnly)) {
		MediaInfo mediaInfo;

		QXmlStreamReader xml(&file);
		while (!xml.atEnd() && !_stop) {
			xml.readNext();

			switch (xml.tokenType()) {

			case QXmlStreamReader::StartElement: {
				QString element(xml.name().toString());

				if (element == XSPF_TRACK) {
					readTrack(xml, mediaInfo);

					if (!mediaInfo.fileName().isEmpty()) {
						//Add file to the list of files
						files << mediaInfo;

						//Clear the MediaInfo
						mediaInfo.clear();

						if (files.size() > FILES_FOUND_LIMIT) {
							//Emits the signal every FILES_FOUND_LIMIT files found
							emit filesFound(files);
							files.clear();
						}
					}
				}

				//Otherwise won't read the track end element
				break;
			}

			}
		}

		if (xml.hasError()) {
			qCritical() << __FUNCTION__ << "Error:" << xml.errorString()
				<< "line:" << xml.lineNumber()
				<< "column:" << xml.columnNumber();
		}
	}

	file.close();

	if (!files.isEmpty()) {
		//Emits the signal for the remaining files found (< FILES_FOUND_LIMIT)
		emit filesFound(files);
	}

	//Emits the last signal
	emit finished(timeElapsed.elapsed());
}
开发者ID:vilkov,项目名称:phonon-vlc-mplayer,代码行数:65,代码来源:XSPFParser.cpp


注:本文中的MediaInfo::clear方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。