本文整理汇总了C++中MusicMetadata::Title方法的典型用法代码示例。如果您正苦于以下问题:C++ MusicMetadata::Title方法的具体用法?C++ MusicMetadata::Title怎么用?C++ MusicMetadata::Title使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类MusicMetadata
的用法示例。
在下文中一共展示了MusicMetadata::Title方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: switchTitlesAndArtists
void Ripper::switchTitlesAndArtists()
{
if (!m_compilationCheck->GetBooleanCheckState())
return;
MusicMetadata *data;
// Switch title and artist for each track
QString tmp;
if (m_tracks->size() > 0)
{
for (int track = 0; track < m_tracks->size(); ++track)
{
data = m_tracks->at(track)->metadata;
if (data)
{
tmp = data->Artist();
data->setArtist(data->Title());
data->setTitle(tmp);
}
}
updateTrackList();
}
}
示例2: updateTrackList
void Ripper::updateTrackList(void)
{
if (m_tracks->isEmpty())
return;
if (m_trackList)
{
m_trackList->Reset();
int i;
for (i = 0; i < (int)m_tracks->size(); i++)
{
if (i >= m_tracks->size())
break;
RipTrack *track = m_tracks->at(i);
MusicMetadata *metadata = track->metadata;
MythUIButtonListItem *item = new MythUIButtonListItem(m_trackList,"");
item->setCheckable(true);
item->SetData(qVariantFromValue(track));
if (track->isNew)
item->DisplayState("new", "yes");
else
item->DisplayState("new", "no");
if (track->active)
item->setChecked(MythUIButtonListItem::FullChecked);
else
item->setChecked(MythUIButtonListItem::NotChecked);
item->SetText(QString::number(metadata->Track()), "track");
item->SetText(metadata->Title(), "title");
item->SetText(metadata->Artist(), "artist");
int length = track->length / 1000;
if (length > 0)
{
int min, sec;
min = length / 60;
sec = length % 60;
QString s;
s.sprintf("%02d:%02d", min, sec);
item->SetText(s, "length");
}
else
item->SetText("", "length");
// if (i == m_currentTrack)
// m_trackList->SetItemCurrent(i);
}
}
}
示例3: fillWidgets
void ImportMusicDialog::fillWidgets()
{
if (!m_tracks->empty())
{
// update current
//: %1 is the current track,
//: %2 is the number of tracks
m_currentText->SetText(tr("%1 of %2", "Current track position")
.arg(m_currentTrack + 1).arg(m_tracks->size()));
MusicMetadata *meta = m_tracks->at(m_currentTrack)->metadata;
m_filenameText->SetText(meta->Filename());
m_compilationCheck->SetCheckState(meta->Compilation());
m_compartistText->SetText(meta->CompilationArtist());
m_artistText->SetText(meta->Artist());
m_albumText->SetText(meta->Album());
m_titleText->SetText(meta->Title());
m_genreText->SetText(meta->Genre());
m_yearText->SetText(QString::number(meta->Year()));
m_trackText->SetText(QString::number(meta->Track()));
if (m_tracks->at(m_currentTrack)->isNewTune)
{
m_coverartButton->SetVisible(false);
m_statusText->SetText(tr("New File"));
}
else
{
m_coverartButton->SetVisible(true);
m_statusText->SetText(tr("Already in Database"));
}
}
else
{
// update current
m_currentText->SetText(tr("Not found"));
m_filenameText->Reset();
m_compilationCheck->SetCheckState(false);
m_compartistText->Reset();
m_artistText->Reset();
m_albumText->Reset();
m_titleText->Reset();
m_genreText->Reset();
m_yearText->Reset();
m_trackText->Reset();
m_statusText->Reset();
m_coverartButton->SetVisible(false);
}
}
示例4: deleteExistingTrack
bool Ripper::deleteExistingTrack(RipTrack *track)
{
if (!track)
return false;
MusicMetadata *metadata = track->metadata;
if (!metadata)
return false;
QString artist = metadata->Artist();
QString album = metadata->Album();
QString title = metadata->Title();
MSqlQuery query(MSqlQuery::InitCon());
QString queryString("SELECT song_id, "
"CONCAT_WS('/', music_directories.path, music_songs.filename) AS filename "
"FROM music_songs "
"LEFT JOIN music_artists"
" ON music_songs.artist_id=music_artists.artist_id "
"LEFT JOIN music_albums"
" ON music_songs.album_id=music_albums.album_id "
"LEFT JOIN music_directories "
" ON music_songs.directory_id=music_directories.directory_id "
"WHERE artist_name REGEXP \'");
QString token = artist;
token.replace(QRegExp("(/|\\\\|:|\'|\\,|\\!|\\(|\\)|\"|\\?|\\|)"),
QString("."));
queryString += token + "\' AND " + "album_name REGEXP \'";
token = album;
token.replace(QRegExp("(/|\\\\|:|\'|\\,|\\!|\\(|\\)|\"|\\?|\\|)"),
QString("."));
queryString += token + "\' AND " + "name REGEXP \'";
token = title;
token.replace(QRegExp("(/|\\\\|:|\'|\\,|\\!|\\(|\\)|\"|\\?|\\|)"),
QString("."));
queryString += token + "\' ORDER BY artist_name, album_name,"
" name, song_id, filename LIMIT 1";
query.prepare(queryString);
if (!query.exec() || !query.isActive())
{
MythDB::DBError("Search music database", query);
return false;
}
if (query.next())
{
int trackID = query.value(0).toInt();
QString filename = query.value(1).toString();
QUrl url(m_musicStorageDir);
filename = gCoreContext->GenMythURL(url.host(), 0, filename, "Music");
// delete file
// FIXME: RemoteFile::DeleteFile will only work with files on the master BE
if (!RemoteFile::DeleteFile(filename))
{
LOG(VB_GENERAL, LOG_NOTICE, QString("Ripper::deleteExistingTrack() "
"Could not delete %1")
.arg(filename));
return false;
}
// remove database entry
MSqlQuery deleteQuery(MSqlQuery::InitCon());
deleteQuery.prepare("DELETE FROM music_songs"
" WHERE song_id = :SONG_ID");
deleteQuery.bindValue(":SONG_ID", trackID);
if (!deleteQuery.exec())
{
MythDB::DBError("Delete Track", deleteQuery);
return false;
}
return true;
}
return false;
}
示例5: ScanFinished
void Ripper::ScanFinished()
{
delete m_scanThread;
m_scanThread = nullptr;
m_tracks->clear();
if (m_decoder)
{
MusicMetadata *metadata;
bool isCompilation = false;
m_artistName.clear();
m_albumName.clear();
m_genreName.clear();
m_year.clear();
for (int trackno = 0; trackno < m_decoder->getNumTracks(); trackno++)
{
RipTrack *ripTrack = new RipTrack;
metadata = m_decoder->getMetadata(trackno + 1);
if (metadata)
{
ripTrack->metadata = metadata;
ripTrack->length = metadata->Length();
if (metadata->Compilation())
{
isCompilation = true;
m_artistName = metadata->CompilationArtist();
}
else if (m_artistName.isEmpty())
{
m_artistName = metadata->Artist();
}
if (m_albumName.isEmpty())
m_albumName = metadata->Album();
if (m_genreName.isEmpty() && !metadata->Genre().isEmpty())
m_genreName = metadata->Genre();
if (m_year.isEmpty() && metadata->Year() > 0)
m_year = QString::number(metadata->Year());
QString title = metadata->Title();
ripTrack->isNew = isNewTune(m_artistName, m_albumName, title);
ripTrack->active = ripTrack->isNew;
m_tracks->push_back(ripTrack);
}
else
delete ripTrack;
}
m_artistEdit->SetText(m_artistName);
m_albumEdit->SetText(m_albumName);
m_genreEdit->SetText(m_genreName);
m_yearEdit->SetText(m_year);
m_compilationCheck->SetCheckState(isCompilation);
if (!isCompilation)
m_switchTitleArtist->SetVisible(false);
else
m_switchTitleArtist->SetVisible(true);
}
BuildFocusList();
updateTrackList();
CloseBusyPopup();
}
示例6: run
void CDRipperThread::run(void)
{
RunProlog();
if (m_tracks->size() <= 0)
{
RunEpilog();
return;
}
m_totalSectors = 0;
m_totalSectorsDone = 0;
for (int trackno = 0; trackno < m_tracks->size(); trackno++)
{
m_totalSectors += getSectorCount(m_CDdevice, trackno + 1);
}
if (!m_totalSectors)
{
RunEpilog();
return;
}
MusicMetadata *track = m_tracks->at(0)->metadata;
QString tots;
if (track->Compilation())
{
tots = track->CompilationArtist() + " ~ " + track->Album();
}
else
{
tots = track->Artist() + " ~ " + track->Album();
}
QApplication::postEvent(
m_parent,
new RipStatusEvent(RipStatusEvent::kOverallTextEvent, tots));
QApplication::postEvent(
m_parent,
new RipStatusEvent(RipStatusEvent::kOverallProgressEvent, 0));
QApplication::postEvent(
m_parent,
new RipStatusEvent(RipStatusEvent::kTrackProgressEvent, 0));
QString textstatus;
QString encodertype = gCoreContext->GetSetting("EncoderType");
bool mp3usevbr = gCoreContext->GetNumSetting("Mp3UseVBR", 0);
QApplication::postEvent(m_parent,
new RipStatusEvent(RipStatusEvent::kOverallStartEvent, m_totalSectors));
if (LCD *lcd = LCD::Get())
{
QString lcd_tots = tr("Importing %1").arg(tots);
QList<LCDTextItem> textItems;
textItems.append(LCDTextItem(1, ALIGN_CENTERED,
lcd_tots, "Generic", false));
lcd->switchToGeneric(textItems);
}
MusicMetadata *titleTrack = nullptr;
QString saveDir = GetConfDir() + "/tmp/RipTemp/";
QString outfile;
std::unique_ptr<Encoder> encoder;
for (int trackno = 0; trackno < m_tracks->size(); trackno++)
{
if (isCancelled())
break;
QApplication::postEvent(
m_parent,
new RipStatusEvent(RipStatusEvent::kStatusTextEvent,
QString("Track %1 of %2")
.arg(trackno + 1).arg(m_tracks->size())));
QApplication::postEvent(
m_parent,
new RipStatusEvent(RipStatusEvent::kTrackProgressEvent, 0));
track = m_tracks->at(trackno)->metadata;
if (track)
{
textstatus = track->Title();
QApplication::postEvent(
m_parent,
new RipStatusEvent(
RipStatusEvent::kTrackTextEvent, textstatus));
QApplication::postEvent(
m_parent,
new RipStatusEvent(RipStatusEvent::kTrackProgressEvent, 0));
QApplication::postEvent(
m_parent,
new RipStatusEvent(RipStatusEvent::kTrackPercentEvent, 0));
// do we need to start a new file?
if (m_tracks->at(trackno)->active)
//.........这里部分代码省略.........
示例7: shuffleTracks
//.........这里部分代码省略.........
{
album_order = Ialbum->second * 1000;
}
album_order += mdata->Track();
songMap.insert(album_order, *it);
}
}
// copy the shuffled tracks to the shuffled song list
QMultiMap<int, MusicMetadata*>::const_iterator i = songMap.constBegin();
while (i != songMap.constEnd())
{
m_shuffledSongs.append(i.value());
++i;
}
break;
}
case MusicPlayer::SHUFFLE_ARTIST:
{
// "intellegent/album" order
typedef map<QString, uint32_t> ArtistMap;
ArtistMap artist_map;
ArtistMap::iterator Iartist;
QString artist;
// pre-fill the album-map with the album name.
// This allows us to do artist mode in artist order
SongList::const_iterator it = m_songs.begin();
for (; it != m_songs.end(); ++it)
{
MusicMetadata *mdata = (*it);
artist = mdata->Artist() + " ~ " + mdata->Title();
if ((Iartist = artist_map.find(artist)) == artist_map.end())
artist_map.insert(ArtistMap::value_type(artist,0));
}
// populate the sort id into the artist map
uint32_t artist_count = 1;
for (Iartist = artist_map.begin(); Iartist != artist_map.end(); ++Iartist)
{
Iartist->second = artist_count;
artist_count++;
}
// create a map of tracks sorted by the computed order
QMultiMap<int, MusicMetadata*> songMap;
it = m_songs.begin();
for (; it != m_songs.end(); ++it)
{
uint32_t artist_order;
MusicMetadata *mdata = (*it);
if (mdata)
{
artist = mdata->Artist() + " ~ " + mdata->Title();
if ((Iartist = artist_map.find(artist)) == artist_map.end())
{
// we didn't find this artist in the map,
// yet we pre-loaded them all. we are broken,
// but we just set the track order to 1, since there
// is no real point in reporting an error
artist_order = 1;
}
else
{
artist_order = Iartist->second * 1000;
}
artist_order += mdata->Track();
songMap.insert(artist_order, *it);
}
}
// copy the shuffled tracks to the shuffled song list
QMultiMap<int, MusicMetadata*>::const_iterator i = songMap.constBegin();
while (i != songMap.constEnd())
{
m_shuffledSongs.append(i.value());
++i;
}
break;
}
default:
{
// copy the raw song list to the shuffled track list
SongList::const_iterator it = m_songs.begin();
for (; it != m_songs.end(); ++it)
{
m_shuffledSongs.append(*it);
}
break;
}
}
}