diff --git a/cdatabase.cpp b/cdatabase.cpp index 06e8351..c6ab747 100644 --- a/cdatabase.cpp +++ b/cdatabase.cpp @@ -33,104 +33,126 @@ void cDatabase::init() m_DB.setDatabaseName(szDB); m_DB.open(); - QSqlQuery version("select version from version", m_DB); + initDB(); + QSqlQuery version("SELECT version FROM version", m_DB); if(!version.exec()) - m_iVersion = createDB(); + return; else { version.first(); - m_iVersion = version.value(0).toInt(); + m_iVersion = version.value("version").toInt(); } } -int cDatabase::createDB() +int cDatabase::initDB() { QSqlQuery query(m_DB); - if(!query.exec("CREATE TABLE version\n" - "(version integer)")) + if(!m_DB.tables().contains("version")) { - myDebug << query.lastError().text(); - return(0); + if(!query.exec("CREATE TABLE version\n" + "(version integer)")) + { + myDebug << query.lastError().text(); + return(0); + } + + if(!query.exec("INSERT INTO version (version) VALUES (1)")) + { + myDebug << query.lastError().text(); + return(0); + } } - if(!query.exec("INSERT INTO version (version) VALUES (1)")) + if(!m_DB.tables().contains("file")) { - myDebug << query.lastError().text(); - return(0); + if(!query.exec("CREATE TABLE file " + "(id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, " + " fileName TEXT, " + " fileSize INTEGER, " + " fileDate DATE, " + " fileType1 INTEGER, " + " fileType TEXT, " + " length1 INTEGER, " + " length INTEGER, " + " bitrate INTEGER, " + " sampleRate INTEGER, " + " channels INTEGER, " + " bitsPerSample INTEGER, " + " layer INTEGER, " + " version INTEGER, " + " sampleWidth INTEGER, " + " sampleFrames INTEGER, " + " isEncrypted BOOL, " + " trackGain INTEGER, " + " albumGain INTEGER, " + " trackPeak INTEGER, " + " albumPeak INTEGER, " + " protectionEnabled BOOL, " + " channelMode INTEGER, " + " isCopyrighted BOOL, " + " isOriginal BOOL, " + " album TEXT, " + " title TEXT, " + " copyright TEXT, " + " tracknumber TEXT, " + " contentGroupDescription TEXT, " + " subTitle TEXT, " + " originalAlbum TEXT, " + " partOfSet TEXT, " + " subTitleOfSet TEXT, " + " internationalStandardRecordingCode TEXT, " + " leadArtist TEXT, " + " band TEXT, " + " conductor TEXT, " + " interpret TEXT, " + " originalArtist TEXT, " + " textWriter TEXT, " + " originalTextWriter TEXT, " + " composer TEXT, " + " encodedBy TEXT, " + " beatsPerMinute INTEGER, " + " language TEXT, " + " contentType TEXT, " + " mediaType TEXT, " + " mood TEXT, " + " producedNotice TEXT, " + " publisher TEXT, " + " fileOwner TEXT, " + " internetRadioStationName TEXT, " + " internetRadioStationOwner TEXT, " + " originalFilename TEXT, " + " playlistDelay TEXT, " + " encodingTime INTEGER, " + " originalReleaseTime DATE, " + " recordingTime DATE, " + " releaseTime DATE, " + " taggingTime DATE, " + " swhwSettings TEXT, " + " albumSortOrder TEXT, " + " performerSortOrder TEXT, " + " titleSortOrder TEXT, " + " synchronizedLyrics TEXT, " + " unsynchronizedLyrics TEXT)")) + { + myDebug << query.lastError().text(); + return(0); + } } - if(!query.exec("CREATE TABLE file " - "(id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, " - " fileName TEXT, " - " fileSize INTEGER, " - " fileDate DATE, " - " fileType1 INTEGER, " - " fileType TEXT, " - " length1 INTEGER, " - " length INTEGER, " - " bitrate INTEGER, " - " sampleRate INTEGER, " - " channels INTEGER, " - " bitsPerSample INTEGER, " - " layer INTEGER, " - " version INTEGER, " - " sampleWidth INTEGER, " - " sampleFrames INTEGER, " - " isEncrypted BOOL, " - " trackGain INTEGER, " - " albumGain INTEGER, " - " trackPeak INTEGER, " - " albumPeak INTEGER, " - " protectionEnabled BOOL, " - " channelMode INTEGER, " - " isCopyrighted BOOL, " - " isOriginal BOOL, " - " album TEXT, " - " title TEXT, " - " copyright TEXT, " - " tracknumber TEXT, " - " contentGroupDescription TEXT, " - " subTitle TEXT, " - " originalAlbum TEXT, " - " partOfSet TEXT, " - " subTitleOfSet TEXT, " - " internationalStandardRecordingCode TEXT, " - " leadArtist TEXT, " - " band TEXT, " - " conductor TEXT, " - " interpret TEXT, " - " originalArtist TEXT, " - " textWriter TEXT, " - " originalTextWriter TEXT, " - " composer TEXT, " - " encodedBy TEXT, " - " beatsPerMinute INTEGER, " - " language TEXT, " - " contentType TEXT, " - " mediaType TEXT, " - " mood TEXT, " - " producedNotice TEXT, " - " publisher TEXT, " - " fileOwner TEXT, " - " internetRadioStationName TEXT, " - " internetRadioStationOwner TEXT, " - " originalFilename TEXT, " - " playlistDelay TEXT, " - " encodingTime INTEGER, " - " originalReleaseTime DATE, " - " recordingTime DATE, " - " releaseTime DATE, " - " taggingTime DATE, " - " swhwSettings TEXT, " - " albumSortOrder TEXT, " - " performerSortOrder TEXT, " - " titleSortOrder TEXT, " - " synchronizedLyrics TEXT, " - " unsynchronizedLyrics TEXT)")) + if(!m_DB.tables().contains("image")) { - myDebug << query.lastError().text(); - return(0); + if(!query.exec("CREATE TABLE image (" + " id INTEGER PRIMARY KEY," + " fileID INTEGER REFERENCES file(id)," + " fileName STRING," + " imageType INTEGER," + " description STRING," + " image BLOB);")) + { + myDebug << query.lastError().text(); + return(0); + } } return(1); diff --git a/cdatabase.h b/cdatabase.h index ddc227c..3880511 100644 --- a/cdatabase.h +++ b/cdatabase.h @@ -25,7 +25,7 @@ protected: qint16 m_iVersion; void init(); - int createDB(); + int initDB(); }; #endif // CDATABASE_H diff --git a/cimage.cpp b/cimage.cpp deleted file mode 100644 index 3976192..0000000 --- a/cimage.cpp +++ /dev/null @@ -1,27 +0,0 @@ -#include "cimage.h" -#include "common.h" - - -cImage::cImage() : - QImage() -{ -} - -cImage::cImage(const QByteArray& array, const QString& szFileName, const cImage::ImageType& imageType, const QString& szDescription) : - QImage(QImage::fromData(array)), - m_szFileName(szFileName), - m_ImageType(imageType), - m_szDescription(szDescription) -{ -} - -cImageList::cImageList() -{ -} - -cImage* cImageList::add(const QByteArray &array, const QString& szFileName, const cImage::ImageType& imageType, const QString& szDescription) -{ - cImage image(array, szFileName, imageType, szDescription); - append(image); - return(&image); -} diff --git a/cmainwindow.cpp b/cmainwindow.cpp index 323c6a4..d346b72 100644 --- a/cmainwindow.cpp +++ b/cmainwindow.cpp @@ -3,11 +3,12 @@ #include "cmainwindow.h" #include "ui_cmainwindow.h" -#include "cdatabase.h" #include "cmediainfo.h" +#include -void addFile(const QString& szFile) + +void cMainWindow::addFile(const QString& szFile) { if(szFile.isEmpty()) return; @@ -15,11 +16,15 @@ void addFile(const QString& szFile) cMediaInfo* lpMediaInfo = new cMediaInfo; lpMediaInfo->readFromFile(szFile); if(lpMediaInfo->isValid()) + { + m_lpDB->getDB().transaction(); lpMediaInfo->writeToDB(); + m_lpDB->getDB().commit(); + } delete lpMediaInfo; } -void addPath(const QString& szPath) +void cMainWindow::addPath(const QString& szPath) { QDir Dir(szPath); QStringList Dirs = Dir.entryList(QDir::Dirs); @@ -51,22 +56,27 @@ cMainWindow::cMainWindow(QWidget *parent) : if(settings.value("application/version", QVariant(0.0)).toDouble() == 0.0) initSettings(); - cDatabase* lpDatabase; - lpDatabase = new cDatabase(this); + m_lpDB = new cDatabase(this); + + QTime t; + // bool bRet; // bRet = lpDatabase->getDB().transaction(); -// addPath("C:/Users/vet0572/Music"); - addPath("C:/Users/birkeh/Music"); + t.start(); + addPath("C:/Users/vet0572/Music"); + qDebug() << t.elapsed(); +// addPath("C:/Users/birkeh/Music"); // bRet = lpDatabase->getDB().commit(); - ui->setupUi(this); +// addFile("C:/Users/vet0572/Music/Amy MacDonald/Under Stars (Deluxe)/01 - Dream On.mp3"); - delete (lpDatabase); + ui->setupUi(this); } cMainWindow::~cMainWindow() { + delete m_lpDB; delete ui; } diff --git a/cmainwindow.h b/cmainwindow.h index 7b76e8b..59a3859 100644 --- a/cmainwindow.h +++ b/cmainwindow.h @@ -3,6 +3,8 @@ #include +#include "cdatabase.h" + namespace Ui { @@ -18,8 +20,11 @@ public: ~cMainWindow(); private: - Ui::cMainWindow *ui; + Ui::cMainWindow* ui; + cDatabase* m_lpDB; + void addFile(const QString& szFile); + void addPath(const QString& szPath); protected: void initSettings(); }; diff --git a/cmediainfo.cpp b/cmediainfo.cpp index 305bf27..f8ba38c 100644 --- a/cmediainfo.cpp +++ b/cmediainfo.cpp @@ -11,6 +11,7 @@ #include #include #include +#include #include @@ -109,8 +110,6 @@ void cMediaInfo::clear() m_szUnsynchronizedLyricsLanguage = ""; m_szUnsynchronizedLyricsDescription = ""; - m_imageList.clear(); - m_szAlbum = ""; m_szArtistList.clear(); m_szAlbumArtistList.clear(); @@ -130,8 +129,7 @@ void cMediaInfo::clear() m_TAGAPEList.clear(); m_TAGPropertiesList.clear(); - m_imageList.clear(); - m_images.clear(); + m_pixmapList.clear(); } bool cMediaInfo::readFromFile(const QString& szFileName) @@ -205,12 +203,12 @@ bool cMediaInfo::readFromFile(const QString& szFileName) if(lpAudioProperties) { - m_iLength = lpAudioProperties->length(); - m_iBitrate = lpAudioProperties->bitrate(); - m_iSampleRate = lpAudioProperties->sampleRate(); - m_iChannels = lpAudioProperties->channels(); - m_iBitsPerSample = lpAudioProperties->bitsPerSample(); - m_iVersion = lpAudioProperties->version(); + m_iLength = lpAudioProperties->length(); + m_iBitrate = lpAudioProperties->bitrate(); + m_iSampleRate = lpAudioProperties->sampleRate(); + m_iChannels = lpAudioProperties->channels(); + m_iBitsPerSample = lpAudioProperties->bitsPerSample(); + m_iVersion = lpAudioProperties->version(); } break; } @@ -218,17 +216,17 @@ bool cMediaInfo::readFromFile(const QString& szFileName) { lpASF = new ASF::File(m_szFileName.toLocal8Bit().data()); TagLib::ASF::Tag* lpTag = lpASF->tag(); - m_szTitle = QString(lpTag->title().toCString()); - szTmp = QString(lpTag->artist().toCString()); + m_szTitle = QString::fromStdWString(lpTag->title().toWString()); + szTmp = QString::fromStdWString(lpTag->artist().toWString()); if(!szTmp.isEmpty() && m_bID3V1) m_szArtistList = szTmp.split("\n"); - m_szAlbum = QString(lpTag->album().toCString()); - m_szComment = QString(lpTag->comment().toCString()); - szTmp = QString(lpTag->genre().toCString()); + m_szAlbum = QString::fromStdWString(lpTag->album().toWString()); + m_szComment = QString::fromStdWString(lpTag->comment().toWString()); + szTmp = QString::fromStdWString(lpTag->genre().toWString()); if(!szTmp.isEmpty() && m_bID3V1) m_szGenreList = szTmp.split("\n"); - m_szRating = QString(lpTag->genre().toCString()); - m_szCopyright = QString(lpTag->copyright().toCString()); + m_szRating = QString::fromStdWString(lpTag->genre().toWString()); + m_szCopyright = QString::fromStdWString(lpTag->copyright().toWString()); m_iYear = lpTag->year(); m_szTrackNumber = QString("%1").arg(lpTag->track()); @@ -238,11 +236,11 @@ bool cMediaInfo::readFromFile(const QString& szFileName) if(lpAudioProperties) { - m_iLength = lpAudioProperties->length(); - m_iBitrate = lpAudioProperties->bitrate(); - m_iSampleRate = lpAudioProperties->sampleRate(); - m_iChannels = lpAudioProperties->channels(); - m_bIsEncrypted = lpAudioProperties->isEncrypted(); + m_iLength = lpAudioProperties->length(); + m_iBitrate = lpAudioProperties->bitrate(); + m_iSampleRate = lpAudioProperties->sampleRate(); + m_iChannels = lpAudioProperties->channels(); + m_bIsEncrypted = lpAudioProperties->isEncrypted(); } break; } @@ -257,12 +255,12 @@ bool cMediaInfo::readFromFile(const QString& szFileName) if(lpAudioProperties) { - m_iLength = lpAudioProperties->length(); - m_iBitrate = lpAudioProperties->bitrate(); - m_iSampleRate = lpAudioProperties->sampleRate(); - m_iChannels = lpAudioProperties->channels(); - m_iSampleWidth = lpAudioProperties->sampleWidth(); - m_ullSampleFrames = lpAudioProperties->sampleFrames(); + m_iLength = lpAudioProperties->length(); + m_iBitrate = lpAudioProperties->bitrate(); + m_iSampleRate = lpAudioProperties->sampleRate(); + m_iChannels = lpAudioProperties->channels(); + m_iSampleWidth = lpAudioProperties->sampleWidth(); + m_ullSampleFrames = lpAudioProperties->sampleFrames(); } break; } @@ -270,13 +268,13 @@ bool cMediaInfo::readFromFile(const QString& szFileName) { lpMP4 = new MP4::File(m_szFileName.toLocal8Bit().data()); TagLib::MP4::Tag* lpTag = lpMP4->tag(); - m_szTitle = QString(lpTag->title().toCString()); - szTmp = QString(lpTag->artist().toCString()); + m_szTitle = QString::fromStdWString(lpTag->title().toWString()); + szTmp = QString::fromStdWString(lpTag->artist().toWString()); if(!szTmp.isEmpty() && m_bID3V1) m_szArtistList = szTmp.split("\n"); - m_szAlbum = QString(lpTag->album().toCString()); - m_szComment = QString(lpTag->comment().toCString()); - szTmp = QString(lpTag->genre().toCString()); + m_szAlbum = QString::fromStdWString(lpTag->album().toWString()); + m_szComment = QString::fromStdWString(lpTag->comment().toWString()); + szTmp = QString::fromStdWString(lpTag->genre().toWString()); if(!szTmp.isEmpty() && m_bID3V1) m_szGenreList = szTmp.split("\n"); m_iYear = lpTag->year(); @@ -288,12 +286,12 @@ bool cMediaInfo::readFromFile(const QString& szFileName) if(lpAudioProperties) { - m_iLength = lpAudioProperties->length(); - m_iBitrate = lpAudioProperties->bitrate(); - m_iSampleRate = lpAudioProperties->sampleRate(); - m_iChannels = lpAudioProperties->channels(); - m_iBitsPerSample = lpAudioProperties->bitsPerSample(); - m_bIsEncrypted = lpAudioProperties->isEncrypted(); + m_iLength = lpAudioProperties->length(); + m_iBitrate = lpAudioProperties->bitrate(); + m_iSampleRate = lpAudioProperties->sampleRate(); + m_iChannels = lpAudioProperties->channels(); + m_iBitsPerSample = lpAudioProperties->bitsPerSample(); + m_bIsEncrypted = lpAudioProperties->isEncrypted(); } break; } @@ -308,16 +306,16 @@ bool cMediaInfo::readFromFile(const QString& szFileName) if(lpAudioProperties) { - m_iLength = lpAudioProperties->length(); - m_iBitrate = lpAudioProperties->bitrate(); - m_iSampleRate = lpAudioProperties->sampleRate(); - m_iChannels = lpAudioProperties->channels(); - m_iVersion = lpAudioProperties->mpcVersion(); - m_ullSampleFrames = lpAudioProperties->sampleFrames(); - m_iTrackGain = lpAudioProperties->trackGain(); - m_iAlbumGain = lpAudioProperties->albumGain(); - m_iTrackPeak = lpAudioProperties->trackPeak(); - m_iAlbumPeak = lpAudioProperties->albumPeak(); + m_iLength = lpAudioProperties->length(); + m_iBitrate = lpAudioProperties->bitrate(); + m_iSampleRate = lpAudioProperties->sampleRate(); + m_iChannels = lpAudioProperties->channels(); + m_iVersion = lpAudioProperties->mpcVersion(); + m_ullSampleFrames = lpAudioProperties->sampleFrames(); + m_iTrackGain = lpAudioProperties->trackGain(); + m_iAlbumGain = lpAudioProperties->albumGain(); + m_iTrackPeak = lpAudioProperties->trackPeak(); + m_iAlbumPeak = lpAudioProperties->albumPeak(); } break; } @@ -334,11 +332,11 @@ bool cMediaInfo::readFromFile(const QString& szFileName) if(lpAudioProperties) { - m_iLength = lpAudioProperties->length(); - m_iBitrate = lpAudioProperties->bitrate(); - m_iSampleRate = lpAudioProperties->sampleRate(); - m_iChannels = lpAudioProperties->channels(); - m_iLayer = lpAudioProperties->layer(); + m_iLength = lpAudioProperties->length(); + m_iBitrate = lpAudioProperties->bitrate(); + m_iSampleRate = lpAudioProperties->sampleRate(); + m_iChannels = lpAudioProperties->channels(); + m_iLayer = lpAudioProperties->layer(); switch(lpAudioProperties->version()) { case MPEG::Header::Version1: @@ -351,24 +349,24 @@ bool cMediaInfo::readFromFile(const QString& szFileName) m_iVersion = 25; break; } - m_bProtectionEnabled = lpAudioProperties->protectionEnabled(); + m_bProtectionEnabled = lpAudioProperties->protectionEnabled(); switch(lpAudioProperties->channelMode()) { case MPEG::Header::Stereo: - m_channelMode = CHANNEL_MODE_STEREO; + m_channelMode = CHANNEL_MODE_STEREO; break; case MPEG::Header::JointStereo: - m_channelMode = CHANNEL_MODE_JOINTSTEREO; + m_channelMode = CHANNEL_MODE_JOINTSTEREO; break; case MPEG::Header::DualChannel: - m_channelMode = CHANNEL_MODE_DUALMONO; + m_channelMode = CHANNEL_MODE_DUALMONO; break; case MPEG::Header::SingleChannel: - m_channelMode = CHANNEL_MODE_MONO; + m_channelMode = CHANNEL_MODE_MONO; break; } - m_bIsCopyrighted = lpAudioProperties->isCopyrighted(); - m_bIsOriginal = lpAudioProperties->isOriginal(); + m_bIsCopyrighted = lpAudioProperties->isCopyrighted(); + m_bIsOriginal = lpAudioProperties->isOriginal(); } break; } @@ -383,12 +381,12 @@ bool cMediaInfo::readFromFile(const QString& szFileName) if(lpAudioProperties) { - m_iLength = lpAudioProperties->length(); - m_iBitrate = lpAudioProperties->bitrate(); - m_iSampleRate = lpAudioProperties->sampleRate(); - m_iChannels = lpAudioProperties->channels(); - m_iBitsPerSample = lpAudioProperties->bitsPerSample(); - m_iVersion = lpAudioProperties->ttaVersion(); + m_iLength = lpAudioProperties->length(); + m_iBitrate = lpAudioProperties->bitrate(); + m_iSampleRate = lpAudioProperties->sampleRate(); + m_iChannels = lpAudioProperties->channels(); + m_iBitsPerSample = lpAudioProperties->bitsPerSample(); + m_iVersion = lpAudioProperties->ttaVersion(); } break; } @@ -403,13 +401,13 @@ bool cMediaInfo::readFromFile(const QString& szFileName) if(lpAudioProperties) { - m_iLength = lpAudioProperties->length(); - m_iBitrate = lpAudioProperties->bitrate(); - m_iSampleRate = lpAudioProperties->sampleRate(); - m_iChannels = lpAudioProperties->channels(); - m_iBitsPerSample = lpAudioProperties->bitsPerSample(); - m_ullSampleFrames = lpAudioProperties->sampleFrames(); - m_iVersion = lpAudioProperties->version(); + m_iLength = lpAudioProperties->length(); + m_iBitrate = lpAudioProperties->bitrate(); + m_iSampleRate = lpAudioProperties->sampleRate(); + m_iChannels = lpAudioProperties->channels(); + m_iBitsPerSample = lpAudioProperties->bitsPerSample(); + m_ullSampleFrames = lpAudioProperties->sampleFrames(); + m_iVersion = lpAudioProperties->version(); } break; } @@ -423,12 +421,12 @@ bool cMediaInfo::readFromFile(const QString& szFileName) if(lpAudioProperties) { - m_iLength = lpAudioProperties->length(); - m_iBitrate = lpAudioProperties->bitrate(); - m_iSampleRate = lpAudioProperties->sampleRate(); - m_iChannels = lpAudioProperties->channels(); - m_iSampleWidth = lpAudioProperties->sampleWidth(); - m_ullSampleFrames = lpAudioProperties->sampleFrames(); + m_iLength = lpAudioProperties->length(); + m_iBitrate = lpAudioProperties->bitrate(); + m_iSampleRate = lpAudioProperties->sampleRate(); + m_iChannels = lpAudioProperties->channels(); + m_iSampleWidth = lpAudioProperties->sampleWidth(); + m_ullSampleFrames = lpAudioProperties->sampleFrames(); } break; } @@ -581,30 +579,65 @@ qint32 cMediaInfo::writeFilename() return(query.value("id").toInt()); return(-1); - -// cImageList images(); } bool cMediaInfo::writeToDB() { + QSqlQuery query; qint32 idFile = writeFilename(); + if(idFile == -1) + return(false); + + query.prepare("DELETE FROM image WHERE fileID=:fileID;"); + query.bindValue(":fileID", idFile); + + if(!query.exec()) + { + myDebug << query.lastError().text(); + return(false); + } + + for(int x = 0;x < m_pixmapList.count();x++) + { + cPixmap pixmap = m_pixmapList.at(x); + + query.prepare("INSERT INTO image (fileID, fileName, imageType, image) VALUES (:fileID, :fileName, :imageType, :image);"); + + query.bindValue(":fileID", idFile); + query.bindValue(":fileName", pixmap.fileName()); + query.bindValue(":imageType", (qint16)pixmap.imageType()); + query.bindValue(":description", pixmap.description()); + + QByteArray baImage; + QBuffer buffer(&baImage); + buffer.open(QIODevice::WriteOnly); + m_pixmapList.at(x).save(&buffer, "JPG"); + query.bindValue(":image", baImage); + + if(!query.exec()) + { + myDebug << query.lastError().text(); + return(false); + } + } + return(true); } void cMediaInfo::readTagV1(ID3v1::Tag* lpTag) { QString szTmp; - m_szAlbum = QString(lpTag->album().toCString()); - szTmp = QString(lpTag->artist().toCString()); + m_szAlbum = QString::fromStdWString(lpTag->album().toWString()); + szTmp = QString::fromStdWString(lpTag->artist().toWString()); if(!szTmp.isEmpty()) m_szArtistList = szTmp.split("\n"); - m_szAlbum = QString(lpTag->album().toCString()); - m_szComment = QString(lpTag->comment().toCString()); - szTmp = QString(lpTag->genre().toCString()); + m_szAlbum = QString::fromStdWString(lpTag->album().toWString()); + m_szComment = QString::fromStdWString(lpTag->comment().toWString()); + szTmp = QString::fromStdWString(lpTag->genre().toWString()); if(!szTmp.isEmpty()) m_szGenreList = szTmp.split("\n"); - m_szTitle = QString(lpTag->title().toCString()); + m_szTitle = QString::fromStdWString(lpTag->title().toWString()); m_szTrackNumber = QString("%1").arg(lpTag->track()); m_iYear = lpTag->year(); } @@ -620,103 +653,103 @@ void cMediaInfo::readTagV2(ID3v2::Tag* lpTag) QString szID = QString("%1").arg((*it)->frameID().data()).left(4); if(!szID.compare("TIT1")) - m_szContentGroupDescription = (*it)->toString().toCString(); + m_szContentGroupDescription = QString::fromStdWString((*it)->toString().toWString()); else if(!szID.compare("TIT2")) - m_szTitle = (*it)->toString().toCString(); + m_szTitle = QString::fromStdWString((*it)->toString().toWString()); else if(!szID.compare("TIT3")) - m_szSubTitle = (*it)->toString().toCString(); + m_szSubTitle = QString::fromStdWString((*it)->toString().toWString()); else if(!szID.compare("TALB")) - m_szAlbum = (*it)->toString().toCString(); + m_szAlbum = QString::fromStdWString((*it)->toString().toWString()); else if(!szID.compare("TOAL")) - m_szOriginalAlbum = (*it)->toString().toCString(); + m_szOriginalAlbum = QString::fromStdWString((*it)->toString().toWString()); else if(!szID.compare("TRCK")) - m_szTrackNumber = (*it)->toString().toCString(); + m_szTrackNumber = QString::fromStdWString((*it)->toString().toWString()); else if(!szID.compare("TPOS")) - m_szPartOfSet = (*it)->toString().toCString(); + m_szPartOfSet = QString::fromStdWString((*it)->toString().toWString()); else if(!szID.compare("TSST")) - m_szSubTitleOfSet = (*it)->toString().toCString(); + m_szSubTitleOfSet = QString::fromStdWString((*it)->toString().toWString()); else if(!szID.compare("TSRC")) - m_szInternationalStandardRecordingCode = (*it)->toString().toCString(); + m_szInternationalStandardRecordingCode = QString::fromStdWString((*it)->toString().toWString()); else if(!szID.compare("TPE1")) - m_szLeadArtist = (*it)->toString().toCString(); + m_szLeadArtist = QString::fromStdWString((*it)->toString().toWString()); else if(!szID.compare("TPE2")) - m_szBand = (*it)->toString().toCString(); + m_szBand = QString::fromStdWString((*it)->toString().toWString()); else if(!szID.compare("TPE3")) - m_szConductor = (*it)->toString().toCString(); + m_szConductor = QString::fromStdWString((*it)->toString().toWString()); else if(!szID.compare("TPE4")) - m_szInterpret = QString((*it)->toString().toCString()).split("\r\n"); + m_szInterpret = QString::fromStdWString((*it)->toString().toWString()).split("\r\n"); else if(!szID.compare("TOPE")) - m_szOriginalArtist = (*it)->toString().toCString(); + m_szOriginalArtist = QString::fromStdWString((*it)->toString().toWString()); else if(!szID.compare("TEXT")) - m_szTextWriter = (*it)->toString().toCString(); + m_szTextWriter = QString::fromStdWString((*it)->toString().toWString()); else if(!szID.compare("TOLY")) - m_szOriginalTextWriter = (*it)->toString().toCString(); + m_szOriginalTextWriter = QString::fromStdWString((*it)->toString().toWString()); else if(!szID.compare("TCOM")) - m_szComposer = (*it)->toString().toCString(); + m_szComposer = QString::fromStdWString((*it)->toString().toWString()); else if(!szID.compare("TENC")) - m_szEncodedBy = (*it)->toString().toCString(); + m_szEncodedBy = QString::fromStdWString((*it)->toString().toWString()); else if(!szID.compare("TBPM")) - m_iBeatsPerMinute = QString((*it)->toString().toCString()).toInt(); + m_iBeatsPerMinute = QString::fromStdWString((*it)->toString().toWString()).toInt(); else if(!szID.compare("TLEN") && m_iLength == 0) - m_iLength = QString((*it)->toString().toCString()).toInt(); + m_iLength = QString::fromStdWString((*it)->toString().toWString()).toInt(); else if(!szID.compare("TLAN")) - m_szLanguage = QString((*it)->toString().toCString()).split("\r\n"); + m_szLanguage = QString::fromStdWString((*it)->toString().toWString()).split("\r\n"); else if(!szID.compare("TCON")) - m_szContentType = QString((*it)->toString().toCString()).split("\r\n"); + m_szContentType = QString::fromStdWString((*it)->toString().toWString()).split("\r\n"); else if(!szID.compare("TFLT")) - m_szFileType = (*it)->toString().toCString(); + m_szFileType = QString::fromStdWString((*it)->toString().toWString()); else if(!szID.compare("TMED")) - m_szMediaType = QString((*it)->toString().toCString()).split("\r\n"); + m_szMediaType = QString::fromStdWString((*it)->toString().toWString()).split("\r\n"); else if(!szID.compare("TMOO")) - m_szMood = (*it)->toString().toCString(); + m_szMood = QString::fromStdWString((*it)->toString().toWString()); else if(!szID.compare("TCOP")) - m_szCopyright = (*it)->toString().toCString(); + m_szCopyright = QString::fromStdWString((*it)->toString().toWString()); else if(!szID.compare("TPRO")) - m_szProducedNotice = (*it)->toString().toCString(); + m_szProducedNotice = QString::fromStdWString((*it)->toString().toWString()); else if(!szID.compare("TPUB")) - m_szPublisher = (*it)->toString().toCString(); + m_szPublisher = QString::fromStdWString((*it)->toString().toWString()); else if(!szID.compare("TOWN")) - m_szFileOwner = (*it)->toString().toCString(); + m_szFileOwner = QString::fromStdWString((*it)->toString().toWString()); else if(!szID.compare("TRSN")) - m_szInternetRadioStationName = (*it)->toString().toCString(); + m_szInternetRadioStationName = QString::fromStdWString((*it)->toString().toWString()); else if(!szID.compare("TRSO")) - m_szInternetRadioStationOwner = (*it)->toString().toCString(); + m_szInternetRadioStationOwner = QString::fromStdWString((*it)->toString().toWString()); else if(!szID.compare("TOFN")) - m_szOriginalFilename = (*it)->toString().toCString(); + m_szOriginalFilename = QString::fromStdWString((*it)->toString().toWString()); else if(!szID.compare("TDLY")) - m_iPlaylistDelay = QString((*it)->toString().toCString()).toInt(); + m_iPlaylistDelay = QString::fromStdWString((*it)->toString().toWString()).toInt(); else if(!szID.compare("TDEN")) - m_encodingTime = str2TS((*it)->toString().toCString()); + m_encodingTime = str2TS(QString::fromStdWString((*it)->toString().toWString())); else if(!szID.compare("TDOR")) - m_originalReleaseTime = str2TS((*it)->toString().toCString()); + m_originalReleaseTime = str2TS(QString::fromStdWString((*it)->toString().toWString())); else if(!szID.compare("TDRC")) - m_recordingTime = str2TS((*it)->toString().toCString()); + m_recordingTime = str2TS(QString::fromStdWString((*it)->toString().toWString())); else if(!szID.compare("TDRL")) - m_releaseTime = str2TS((*it)->toString().toCString()); + m_releaseTime = str2TS(QString::fromStdWString((*it)->toString().toWString())); else if(!szID.compare("TDTG")) - m_taggingTime = str2TS((*it)->toString().toCString()); + m_taggingTime = str2TS(QString::fromStdWString((*it)->toString().toWString())); else if(!szID.compare("TSSE")) - m_szswhwSettings = QString((*it)->toString().toCString()).split("\r\n"); + m_szswhwSettings = QString(QString::fromStdWString((*it)->toString().toWString())).split("\r\n"); else if(!szID.compare("TSOA")) - m_szAlbumSortOrder = (*it)->toString().toCString(); + m_szAlbumSortOrder = QString::fromStdWString((*it)->toString().toWString()); else if(!szID.compare("TSOP")) - m_szPerformerSortOrder = (*it)->toString().toCString(); + m_szPerformerSortOrder = QString::fromStdWString((*it)->toString().toWString()); else if(!szID.compare("TSOT")) - m_szTitleSortOrder = (*it)->toString().toCString(); + m_szTitleSortOrder = QString::fromStdWString((*it)->toString().toWString()); else if(!szID.compare("SYLT")) { TagLib::ID3v2::SynchronizedLyricsFrame* lpLyrics = static_cast (*it); m_szSynchronizedLyricsLanguage = QString(lpLyrics->language().data()).left(3); String::Type type = lpLyrics->textEncoding(); - m_szSynchronizedLyricsDescription = lpLyrics->description().toCString(); + m_szSynchronizedLyricsDescription = QString::fromStdWString(lpLyrics->description().toWString()); TagLib::ID3v2::SynchronizedLyricsFrame::SynchedTextList list = lpLyrics->synchedText(); for(ID3v2::SynchronizedLyricsFrame::SynchedTextList::ConstIterator it1 = list.begin(); it1 != list.end();it1++) { ID3v2::SynchronizedLyricsFrame::SynchedText t = *(it1); - m_szSynchronizedLyrics.add(t.time, QString(t.text.toCString())); + m_szSynchronizedLyrics.add(t.time, QString::fromStdWString(t.text.toWString())); } } else if(!szID.compare("USLT")) @@ -725,8 +758,8 @@ void cMediaInfo::readTagV2(ID3v2::Tag* lpTag) m_szUnsynchronizedLyricsLanguage = QString(lpLyrics->language().data()).left(3); String::Type type = lpLyrics->textEncoding(); - m_szUnsynchronizedLyricsDescription = lpLyrics->description().toCString(); - QString szText = lpLyrics->text().toCString(); + m_szUnsynchronizedLyricsDescription = QString::fromStdWString(lpLyrics->description().toWString()); + QString szText = QString::fromStdWString(lpLyrics->text().toWString()); if(szText.contains("\r\n")) m_szUnsynchronizedLyrics = szText.split("\r\n"); else if(szText.contains("\r")) @@ -741,10 +774,10 @@ void cMediaInfo::readTagV2(ID3v2::Tag* lpTag) TagLib::ID3v2::AttachedPictureFrame* lpPicture = static_cast (*it); TagLib::ID3v2::AttachedPictureFrame::Type t = lpPicture->type(); QString szDescription; - szDescription = lpPicture->description().toCString(); + szDescription = QString::fromStdWString(lpPicture->description().toWString()); QByteArray pictureData = QByteArray(lpPicture->picture().data(), lpPicture->picture().size()); - m_imageList.add(pictureData, m_szFileName, (cImage::ImageType)t, szDescription); + m_pixmapList.add(pictureData, m_szFileName, (cPixmap::ImageType)t, szDescription); } } } @@ -753,8 +786,8 @@ void cMediaInfo::readTagAPE(APE::Tag* lpTag) { for(APE::ItemListMap::ConstIterator it = lpTag->itemListMap().begin();it != lpTag->itemListMap().end();++it) { - QString szID = (*it).first.toCString(); - QString szVal = (*it).second.toString().toCString(); + QString szID = QString::fromStdWString((*it).first.toWString()); + QString szVal = QString::fromStdWString((*it).second.toString().toWString()); if(!szID.isEmpty() && !szVal.isEmpty()) m_TAGAPEList.add(szID.left(4), szVal); } @@ -767,12 +800,12 @@ void cMediaInfo::readTagProperties(TagLib::PropertyMap& tags) for(TagLib::PropertyMap::ConstIterator i = tags.begin(); i != tags.end(); ++i) { QStringList szValue; - szID = i->first.toCString(); + szID = QString::fromStdWString(i->first.toWString()); if(!szID.isEmpty()) { for(TagLib::StringList::ConstIterator j = i->second.begin(); j != i->second.end(); ++j) { - QString sz = QString((*j).toCString()); + QString sz = QString::fromStdWString((*j).toWString()); if(!sz.isEmpty()) { if(!szID.compare("LYRICS")) @@ -1247,9 +1280,9 @@ QStringList cMediaInfo::unsynchronizedLyrics() return(m_szUnsynchronizedLyrics); } -cImageList cMediaInfo::images() +cPixmapList cMediaInfo::pixmaps() { - return(m_imageList); + return(m_pixmapList); } /* diff --git a/cmediainfo.h b/cmediainfo.h index 6c85ed2..096b706 100644 --- a/cmediainfo.h +++ b/cmediainfo.h @@ -34,7 +34,7 @@ #include "ctag.h" #include "cstring.h" -#include "cimage.h" +#include "cpixmap.h" using namespace TagLib; @@ -169,7 +169,7 @@ public: cStringTimeList synchronizedLyrics(); // SYLT QStringList unsynchronizedLyrics(); // USLT - cImageList images(); // APIC + cPixmapList pixmaps(); // APIC signals: public slots: @@ -279,8 +279,7 @@ protected: cTAGList m_TAGAPEList; cTAGList m_TAGPropertiesList; - cImageList m_imageList; - QList m_images; + cPixmapList m_pixmapList; void clear(); diff --git a/cpixmap.cpp b/cpixmap.cpp new file mode 100644 index 0000000..40b31c9 --- /dev/null +++ b/cpixmap.cpp @@ -0,0 +1,45 @@ +#include "cpixmap.h" +#include "common.h" + +#include + + +cPixmap::cPixmap() : + QPixmap() +{ +} + +cPixmap::cPixmap(const QByteArray& array, const QString& szFileName, const cPixmap::ImageType& imageType, const QString& szDescription) : +// QPixmap(QPixmap::loadFromData(array)), + m_szFileName(szFileName), + m_ImageType(imageType), + m_szDescription(szDescription) +{ + loadFromData(array); +} + +QString cPixmap::fileName() +{ + return(m_szFileName); +} + +cPixmap::ImageType cPixmap::imageType() +{ + return(m_ImageType); +} + +QString cPixmap::description() +{ + return(m_szDescription); +} + +cPixmapList::cPixmapList() +{ +} + +cPixmap cPixmapList::add(const QByteArray &array, const QString& szFileName, const cPixmap::ImageType& imageType, const QString& szDescription) +{ + cPixmap image(array, szFileName, imageType, szDescription); + append(image); + return(image); +} diff --git a/cimage.h b/cpixmap.h similarity index 56% rename from cimage.h rename to cpixmap.h index 4fb2811..b514b3b 100644 --- a/cimage.h +++ b/cpixmap.h @@ -1,12 +1,12 @@ -#ifndef CIMAGE_H -#define CIMAGE_H +#ifndef CPIXMAP_H +#define CPIXMAP_H -#include +#include #include #include -class cImage : public QImage +class cPixmap : public QPixmap { public: enum ImageType @@ -33,8 +33,12 @@ public: BandLogo = 0x13, PublisherLogo = 0x14 }; - cImage(); - cImage(const QByteArray& array, const QString& szFileName, const cImage::ImageType& imageType, const QString& szDescription); + cPixmap(); + cPixmap(const QByteArray& array, const QString& szFileName, const cPixmap::ImageType& imageType, const QString& szDescription); + + QString fileName(); + ImageType imageType(); + QString description(); protected: QString m_szFileName; ImageType m_ImageType; @@ -46,13 +50,13 @@ public slots: }; -Q_DECLARE_METATYPE(cImage) +Q_DECLARE_METATYPE(cPixmap) -class cImageList : public QList +class cPixmapList : public QList { public: - cImageList(); - cImage* add(const QByteArray& array, const QString& szFileName, const cImage::ImageType& imageType, const QString& szDescription); + cPixmapList(); + cPixmap add(const QByteArray& array, const QString& szFileName, const cPixmap::ImageType& imageType, const QString& szDescription); }; -#endif // CIMAGE_H +#endif // CPIXMAP_H diff --git a/qtJukeBox.pro b/qtJukeBox.pro index 69ec4f7..f98a2d7 100644 --- a/qtJukeBox.pro +++ b/qtJukeBox.pro @@ -22,16 +22,16 @@ SOURCES += main.cpp\ ctag.cpp \ cdatabase.cpp \ cstring.cpp \ - cimage.cpp \ - common.cpp + common.cpp \ + cpixmap.cpp HEADERS += cmainwindow.h \ cmediainfo.h \ ctag.h \ cdatabase.h \ cstring.h \ - cimage.h \ - common.h + common.h \ + cpixmap.h FORMS += cmainwindow.ui