├── Readme.md ├── Source_Code ├── AnimationWidget.cpp ├── AnimationWidget.h ├── BottomWidget.cpp ├── BottomWidget.h ├── ClickLabel.cpp ├── ClickLabel.h ├── CloudMusic.pro ├── CloudMusic.pro.user ├── Desktopico.ico ├── FramelessWidget.cpp ├── FramelessWidget.h ├── ListWidgetFindMusic.cpp ├── ListWidgetFindMusic.h ├── ListWidgetLocalMusic.cpp ├── ListWidgetLocalMusic.h ├── MainWidget.cpp ├── MainWidget.h ├── MiddleWidget.cpp ├── MiddleWidget.h ├── MiddleWidgetLeftList.cpp ├── MiddleWidgetLeftList.h ├── MiddleWidgetRightStack.cpp ├── MiddleWidgetRightStack.h ├── PlayListItemStyle.cpp ├── PlayListItemStyle.h ├── PlaySongInfoWidget.cpp ├── PlaySongInfoWidget.h ├── SelectDirFrame.cpp ├── SelectDirFrame.h ├── SkinWidget.cpp ├── SkinWidget.h ├── SongListFrame.cpp ├── SongListFrame.h ├── TitleBar.cpp ├── TitleBar.h ├── TrayIconMenu.cpp ├── TrayIconMenu.h ├── TurntableWidget.cpp ├── TurntableWidget.h ├── images │ ├── 1.png │ ├── 2.png │ ├── 3.png │ ├── 4.png │ ├── 5.png │ ├── 6.png │ ├── BottomPlay │ │ ├── BottomRight.png │ │ ├── CurrentItemInLoop.png │ │ ├── Loop.png │ │ ├── Random.png │ │ ├── Sequential.png │ │ ├── curTimeHandle.png │ │ ├── currentList.png │ │ ├── last.png │ │ ├── lyric.png │ │ ├── next.png │ │ ├── pause.png │ │ ├── play.png │ │ ├── volume.png │ │ ├── volumeHandle.png │ │ └── volumeSilence.png │ ├── LeftList │ │ ├── download.png │ │ ├── findMusic.png │ │ ├── findMusic12.png │ │ ├── fm.png │ │ ├── friend.png │ │ ├── local.png │ │ ├── mv.png │ │ ├── single.png │ │ └── yun.png │ ├── RightStack │ │ ├── 0 │ │ │ ├── btn_mask.png │ │ │ └── btn_normal_mask.png │ │ └── 4 │ │ │ ├── Add.png │ │ │ ├── Match.png │ │ │ ├── PlayAll.png │ │ │ ├── cd.png │ │ │ ├── cd_checked.png │ │ │ ├── close.png │ │ │ ├── dir.png │ │ │ ├── dir_checked.png │ │ │ ├── list.png │ │ │ ├── list_checked.png │ │ │ ├── search.png │ │ │ ├── singal.png │ │ │ └── singal_checked.png │ ├── SearchStack │ │ ├── download.png │ │ ├── download_hover.png │ │ ├── left.png │ │ ├── left_hover.png │ │ ├── love.png │ │ ├── love_hover.png │ │ ├── progressbar.gif │ │ ├── right.png │ │ └── right_hover.png │ ├── SongInfo │ │ ├── cdCover.png │ │ ├── love.png │ │ ├── love_checked.png │ │ ├── share.png │ │ └── shrink.png │ ├── SongList │ │ ├── Collect.png │ │ ├── Empty.png │ │ ├── closeList.png │ │ ├── pauseLabel.png │ │ ├── playLabel.png │ │ └── source.png │ ├── TitleBar │ │ ├── close.png │ │ ├── close_hover.png │ │ ├── leftArrow.png │ │ ├── line.png │ │ ├── mail.png │ │ ├── mail_hover.png │ │ ├── maximum.png │ │ ├── maximum_cancel.png │ │ ├── maximum_cancel_hover.png │ │ ├── maximum_hover.png │ │ ├── mini.png │ │ ├── mini_hover.png │ │ ├── minimum.png │ │ ├── minimum_hover.png │ │ ├── rightArrow.png │ │ ├── search.png │ │ ├── search_hover.png │ │ ├── set.png │ │ ├── set_hover.png │ │ ├── skin.png │ │ ├── skin_hover.png │ │ ├── titleIcon.png │ │ └── userIcon.png │ ├── TrayIcon │ │ ├── curPlaySong.png │ │ ├── last.png │ │ ├── lockLyric.png │ │ ├── logoTrayIcon.png │ │ ├── mini.png │ │ ├── next.png │ │ ├── openLyric.png │ │ ├── pause.png │ │ ├── play.png │ │ ├── quit.png │ │ └── set.png │ ├── Turntable │ │ ├── cdCover.png │ │ ├── hide.png │ │ ├── record.png │ │ └── stylus.png │ ├── closedialog.png │ ├── line.png │ ├── lineChose.png │ ├── logo.png │ ├── logoIcon.png │ └── mini │ │ ├── close.png │ │ ├── last.png │ │ ├── list.png │ │ ├── love.png │ │ ├── next.png │ │ ├── pause.png │ │ ├── photo.png │ │ ├── redLove.png │ │ ├── silence.png │ │ ├── start.png │ │ ├── vol.png │ │ └── winMode.png ├── main.cpp ├── miniWidget.cpp ├── miniWidget.h ├── res.qrc └── taglib │ ├── CMakeLists.txt │ ├── ape │ ├── ape-tag-format.txt │ ├── apefile.cpp │ ├── apefile.h │ ├── apefooter.cpp │ ├── apefooter.h │ ├── apeitem.cpp │ ├── apeitem.h │ ├── apeproperties.cpp │ ├── apeproperties.h │ ├── apetag.cpp │ └── apetag.h │ ├── asf │ ├── asfattribute.cpp │ ├── asfattribute.h │ ├── asffile.cpp │ ├── asffile.h │ ├── asfpicture.cpp │ ├── asfpicture.h │ ├── asfproperties.cpp │ ├── asfproperties.h │ ├── asftag.cpp │ ├── asftag.h │ └── asfutils.h │ ├── audioproperties.cpp │ ├── audioproperties.h │ ├── cmake │ ├── CMakeCache.txt │ └── CMakeFiles │ │ ├── 3.8.0-rc2 │ │ ├── CMakeCCompiler.cmake │ │ ├── CMakeCXXCompiler.cmake │ │ ├── CMakeDetermineCompilerABI_C.bin │ │ ├── CMakeDetermineCompilerABI_CXX.bin │ │ ├── CMakeRCCompiler.cmake │ │ ├── CMakeSystem.cmake │ │ ├── CompilerIdC │ │ │ ├── CMakeCCompilerId.c │ │ │ ├── CompilerIdC.exe │ │ │ ├── CompilerIdC.vcxproj │ │ │ └── Debug │ │ │ │ ├── CMakeCCompilerId.obj │ │ │ │ └── CompilerIdC.tlog │ │ │ │ ├── CL.read.1.tlog │ │ │ │ ├── CL.write.1.tlog │ │ │ │ ├── CompilerIdC.lastbuildstate │ │ │ │ ├── cl.command.1.tlog │ │ │ │ ├── link.command.1.tlog │ │ │ │ ├── link.read.1.tlog │ │ │ │ └── link.write.1.tlog │ │ └── CompilerIdCXX │ │ │ ├── CMakeCXXCompilerId.cpp │ │ │ ├── CompilerIdCXX.exe │ │ │ ├── CompilerIdCXX.vcxproj │ │ │ └── Debug │ │ │ ├── CMakeCXXCompilerId.obj │ │ │ └── CompilerIdCXX.tlog │ │ │ ├── CL.read.1.tlog │ │ │ ├── CL.write.1.tlog │ │ │ ├── CompilerIdCXX.lastbuildstate │ │ │ ├── cl.command.1.tlog │ │ │ ├── link.command.1.tlog │ │ │ ├── link.read.1.tlog │ │ │ └── link.write.1.tlog │ │ ├── CMakeOutput.log │ │ ├── cmake.check_cache │ │ ├── feature_tests.bin │ │ └── feature_tests.cxx │ ├── fileref.cpp │ ├── fileref.h │ ├── flac │ ├── flacfile.cpp │ ├── flacfile.h │ ├── flacmetadatablock.cpp │ ├── flacmetadatablock.h │ ├── flacpicture.cpp │ ├── flacpicture.h │ ├── flacproperties.cpp │ ├── flacproperties.h │ ├── flacunknownmetadatablock.cpp │ └── flacunknownmetadatablock.h │ ├── include │ └── taglib │ │ ├── aifffile.h │ │ ├── aiffproperties.h │ │ ├── apefile.h │ │ ├── apefooter.h │ │ ├── apeitem.h │ │ ├── apeproperties.h │ │ ├── apetag.h │ │ ├── asfattribute.h │ │ ├── asffile.h │ │ ├── asfpicture.h │ │ ├── asfproperties.h │ │ ├── asftag.h │ │ ├── attachedpictureframe.h │ │ ├── audioproperties.h │ │ ├── chapterframe.h │ │ ├── commentsframe.h │ │ ├── eventtimingcodesframe.h │ │ ├── fileref.h │ │ ├── flacfile.h │ │ ├── flacmetadatablock.h │ │ ├── flacpicture.h │ │ ├── flacproperties.h │ │ ├── generalencapsulatedobjectframe.h │ │ ├── id3v1genres.h │ │ ├── id3v1tag.h │ │ ├── id3v2extendedheader.h │ │ ├── id3v2footer.h │ │ ├── id3v2frame.h │ │ ├── id3v2framefactory.h │ │ ├── id3v2header.h │ │ ├── id3v2synchdata.h │ │ ├── id3v2tag.h │ │ ├── infotag.h │ │ ├── itfile.h │ │ ├── itproperties.h │ │ ├── modfile.h │ │ ├── modfilebase.h │ │ ├── modproperties.h │ │ ├── modtag.h │ │ ├── mp4atom.h │ │ ├── mp4coverart.h │ │ ├── mp4file.h │ │ ├── mp4item.h │ │ ├── mp4properties.h │ │ ├── mp4tag.h │ │ ├── mpcfile.h │ │ ├── mpcproperties.h │ │ ├── mpegfile.h │ │ ├── mpegheader.h │ │ ├── mpegproperties.h │ │ ├── oggfile.h │ │ ├── oggflacfile.h │ │ ├── oggpage.h │ │ ├── oggpageheader.h │ │ ├── opusfile.h │ │ ├── opusproperties.h │ │ ├── ownershipframe.h │ │ ├── podcastframe.h │ │ ├── popularimeterframe.h │ │ ├── privateframe.h │ │ ├── relativevolumeframe.h │ │ ├── rifffile.h │ │ ├── s3mfile.h │ │ ├── s3mproperties.h │ │ ├── speexfile.h │ │ ├── speexproperties.h │ │ ├── synchronizedlyricsframe.h │ │ ├── tableofcontentsframe.h │ │ ├── tag.h │ │ ├── tag_c.h │ │ ├── taglib.h │ │ ├── taglib_config.h │ │ ├── taglib_export.h │ │ ├── tbytevector.h │ │ ├── tbytevectorlist.h │ │ ├── tbytevectorstream.h │ │ ├── tdebuglistener.h │ │ ├── textidentificationframe.h │ │ ├── tfile.h │ │ ├── tfilestream.h │ │ ├── tiostream.h │ │ ├── tlist.h │ │ ├── tlist.tcc │ │ ├── tmap.h │ │ ├── tmap.tcc │ │ ├── tpropertymap.h │ │ ├── trefcounter.h │ │ ├── trueaudiofile.h │ │ ├── trueaudioproperties.h │ │ ├── tstring.h │ │ ├── tstringlist.h │ │ ├── uniquefileidentifierframe.h │ │ ├── unknownframe.h │ │ ├── unsynchronizedlyricsframe.h │ │ ├── urllinkframe.h │ │ ├── vorbisfile.h │ │ ├── vorbisproperties.h │ │ ├── wavfile.h │ │ ├── wavpackfile.h │ │ ├── wavpackproperties.h │ │ ├── wavproperties.h │ │ ├── xingheader.h │ │ ├── xiphcomment.h │ │ ├── xmfile.h │ │ └── xmproperties.h │ ├── it │ ├── itfile.cpp │ ├── itfile.h │ ├── itproperties.cpp │ └── itproperties.h │ ├── lib │ ├── libtag.so │ ├── libtag.so.1 │ ├── libtag.so.1.17.0 │ ├── libtag_c.so │ ├── libtag_c.so.0 │ ├── libtag_c.so.0.0.0 │ └── pkgconfig │ │ ├── taglib.pc │ │ └── taglib_c.pc │ ├── mod │ ├── modfile.cpp │ ├── modfile.h │ ├── modfilebase.cpp │ ├── modfilebase.h │ ├── modfileprivate.h │ ├── modproperties.cpp │ ├── modproperties.h │ ├── modtag.cpp │ └── modtag.h │ ├── mp4 │ ├── mp4atom.cpp │ ├── mp4atom.h │ ├── mp4coverart.cpp │ ├── mp4coverart.h │ ├── mp4file.cpp │ ├── mp4file.h │ ├── mp4item.cpp │ ├── mp4item.h │ ├── mp4properties.cpp │ ├── mp4properties.h │ ├── mp4tag.cpp │ └── mp4tag.h │ ├── mpc │ ├── mpcfile.cpp │ ├── mpcfile.h │ ├── mpcproperties.cpp │ └── mpcproperties.h │ ├── mpeg │ ├── id3v1 │ │ ├── id3v1genres.cpp │ │ ├── id3v1genres.h │ │ ├── id3v1tag.cpp │ │ └── id3v1tag.h │ ├── id3v2 │ │ ├── frames │ │ │ ├── attachedpictureframe.cpp │ │ │ ├── attachedpictureframe.h │ │ │ ├── chapterframe.cpp │ │ │ ├── chapterframe.h │ │ │ ├── commentsframe.cpp │ │ │ ├── commentsframe.h │ │ │ ├── eventtimingcodesframe.cpp │ │ │ ├── eventtimingcodesframe.h │ │ │ ├── generalencapsulatedobjectframe.cpp │ │ │ ├── generalencapsulatedobjectframe.h │ │ │ ├── ownershipframe.cpp │ │ │ ├── ownershipframe.h │ │ │ ├── podcastframe.cpp │ │ │ ├── podcastframe.h │ │ │ ├── popularimeterframe.cpp │ │ │ ├── popularimeterframe.h │ │ │ ├── privateframe.cpp │ │ │ ├── privateframe.h │ │ │ ├── relativevolumeframe.cpp │ │ │ ├── relativevolumeframe.h │ │ │ ├── synchronizedlyricsframe.cpp │ │ │ ├── synchronizedlyricsframe.h │ │ │ ├── tableofcontentsframe.cpp │ │ │ ├── tableofcontentsframe.h │ │ │ ├── textidentificationframe.cpp │ │ │ ├── textidentificationframe.h │ │ │ ├── uniquefileidentifierframe.cpp │ │ │ ├── uniquefileidentifierframe.h │ │ │ ├── unknownframe.cpp │ │ │ ├── unknownframe.h │ │ │ ├── unsynchronizedlyricsframe.cpp │ │ │ ├── unsynchronizedlyricsframe.h │ │ │ ├── urllinkframe.cpp │ │ │ └── urllinkframe.h │ │ ├── id3v2.2.0.txt │ │ ├── id3v2.3.0.txt │ │ ├── id3v2.4.0-frames.txt │ │ ├── id3v2.4.0-structure.txt │ │ ├── id3v2extendedheader.cpp │ │ ├── id3v2extendedheader.h │ │ ├── id3v2footer.cpp │ │ ├── id3v2footer.h │ │ ├── id3v2frame.cpp │ │ ├── id3v2frame.h │ │ ├── id3v2framefactory.cpp │ │ ├── id3v2framefactory.h │ │ ├── id3v2header.cpp │ │ ├── id3v2header.h │ │ ├── id3v2synchdata.cpp │ │ ├── id3v2synchdata.h │ │ ├── id3v2tag.cpp │ │ └── id3v2tag.h │ ├── mpegfile.cpp │ ├── mpegfile.h │ ├── mpegheader.cpp │ ├── mpegheader.h │ ├── mpegproperties.cpp │ ├── mpegproperties.h │ ├── mpegutils.h │ ├── xingheader.cpp │ └── xingheader.h │ ├── ogg │ ├── flac │ │ ├── oggflacfile.cpp │ │ └── oggflacfile.h │ ├── oggfile.cpp │ ├── oggfile.h │ ├── oggpage.cpp │ ├── oggpage.h │ ├── oggpageheader.cpp │ ├── oggpageheader.h │ ├── opus │ │ ├── opusfile.cpp │ │ ├── opusfile.h │ │ ├── opusproperties.cpp │ │ └── opusproperties.h │ ├── speex │ │ ├── speexfile.cpp │ │ ├── speexfile.h │ │ ├── speexproperties.cpp │ │ └── speexproperties.h │ ├── vorbis │ │ ├── vorbisfile.cpp │ │ ├── vorbisfile.h │ │ ├── vorbisproperties.cpp │ │ └── vorbisproperties.h │ ├── xiphcomment.cpp │ └── xiphcomment.h │ ├── riff │ ├── aiff │ │ ├── aifffile.cpp │ │ ├── aifffile.h │ │ ├── aiffproperties.cpp │ │ └── aiffproperties.h │ ├── rifffile.cpp │ ├── rifffile.h │ ├── riffutils.h │ └── wav │ │ ├── infotag.cpp │ │ ├── infotag.h │ │ ├── wavfile.cpp │ │ ├── wavfile.h │ │ ├── wavproperties.cpp │ │ └── wavproperties.h │ ├── s3m │ ├── s3mfile.cpp │ ├── s3mfile.h │ ├── s3mproperties.cpp │ └── s3mproperties.h │ ├── tag.cpp │ ├── tag.h │ ├── taglib_config.h.cmake │ ├── taglib_export.h │ ├── tagunion.cpp │ ├── tagunion.h │ ├── tagutils.cpp │ ├── tagutils.h │ ├── toolkit │ ├── taglib.h │ ├── taglib_config.h │ ├── tbytevector.cpp │ ├── tbytevector.h │ ├── tbytevectorlist.cpp │ ├── tbytevectorlist.h │ ├── tbytevectorstream.cpp │ ├── tbytevectorstream.h │ ├── tdebug.cpp │ ├── tdebug.h │ ├── tdebuglistener.cpp │ ├── tdebuglistener.h │ ├── tfile.cpp │ ├── tfile.h │ ├── tfilestream.cpp │ ├── tfilestream.h │ ├── tiostream.cpp │ ├── tiostream.h │ ├── tlist.h │ ├── tlist.tcc │ ├── tmap.h │ ├── tmap.tcc │ ├── tpropertymap.cpp │ ├── tpropertymap.h │ ├── trefcounter.cpp │ ├── trefcounter.h │ ├── tstring.cpp │ ├── tstring.h │ ├── tstringlist.cpp │ ├── tstringlist.h │ ├── tutils.h │ ├── tzlib.cpp │ ├── tzlib.h │ ├── unicode.cpp │ └── unicode.h │ ├── trueaudio │ ├── trueaudiofile.cpp │ ├── trueaudiofile.h │ ├── trueaudioproperties.cpp │ └── trueaudioproperties.h │ ├── wavpack │ ├── wavpackfile.cpp │ ├── wavpackfile.h │ ├── wavpackproperties.cpp │ └── wavpackproperties.h │ └── xm │ ├── xmfile.cpp │ ├── xmfile.h │ ├── xmproperties.cpp │ └── xmproperties.h └── screenshoot ├── 1.png ├── 2.png ├── 3.png ├── 4.png ├── 5.png └── 6.png /Readme.md: -------------------------------------------------------------------------------- 1 | ## CloudMusic made by Qt 2 | 3 | 由于taglib的原因,window版和linux版有些许不同,就是动态库的问题 4 | windows上采用taglib1.10 5 | windows上编译步骤: 6 | 1、 cmake -G "MinGW Makefiles" -DBUILD_SHARED_LIB=ON -DHAVE_ZLIB=0 -DW 7 | ITH_MP4=1 -DMAKE_TAGLIB_LIB=1 8 | 2、 make 9 | 3、 make install (需要admin权限 所有步骤在cmd或powershell执行,不能在unix shell 里执行) 10 | 11 | 上述已经编译好了在Source_Code/taglib里了 运行编译后的软件需要libtag.dll在taglib/bin文件夹里 12 | 13 | 简单点说就是下载源码 编译 然后将Source_Code/taglib/libtag.dll置于软件同一目录下即可 14 | 具体改动在branch---win里查看 15 | 16 | 17 | 18 | 19 | 这个小demo是模仿网易云音乐的界面做的音乐播放器,开发环境是ubuntu18+Qt5; 20 | 21 | 还有一点 由于程序里设置了1920*1080; 所以大于这个分辨率后的窗口就不是很理想了:) 22 | 23 | 起因是:网易云音乐播放器在ubuntu18上有莫名奇妙的bug 只适配到ubuntu16,于是想着自己动手 24 | 25 | :)------------------------------------------------------------------------------------------------ 26 | 27 | 28 | 29 | #### 先上效果图: 30 | 31 | ![](./screenshoot/1.png) 32 | 33 | ![](./screenshoot/2.png) 34 | 35 | ![](./screenshoot/3.png) 36 | 37 | ![](./screenshoot/4.png) 38 | 39 | ![](./screenshoot/5.png) 40 | 41 | ![](./screenshoot/6.png) 42 | 43 | 44 | 45 | 目前只做了这么多,本地播放的功能有了,网络播放的功能还未实现;近期会去研究下网易云音乐的网络接口 46 | 47 | 争取尽快把网络部分弄出来 48 | 49 | 50 | 51 | |--------------------------------------------------------------------------------------------------------------------- 52 | 53 | 最后最后,如果觉得还行请Star!!! 54 | 55 | ORZ ORZ -------------------------------------------------------------------------------- /Source_Code/AnimationWidget.h: -------------------------------------------------------------------------------- 1 | #ifndef ANIMATIONWIDGET_H 2 | #define ANIMATIONWIDGET_H 3 | 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include 9 | #include 10 | 11 | const int image_count = 6; 12 | const int center_width = 542; 13 | const int center_hieght = 200; 14 | const int margin_height = 188; 15 | 16 | class AnimationWidget : public QFrame 17 | { 18 | Q_OBJECT 19 | 20 | private: 21 | int margin_width = 110; 22 | int default_choose = 0; 23 | 24 | public: 25 | AnimationWidget(QWidget *parent = nullptr); 26 | ~AnimationWidget(); 27 | 28 | protected slots: 29 | void onHoverAction(); 30 | private: 31 | void moveLeft(); 32 | void moveRight(); 33 | 34 | QRect center_rect; 35 | QRect left_rect; 36 | QRect right_rect; 37 | 38 | QLabel *center_label; 39 | QLabel *left_label; 40 | QLabel *right_label; 41 | 42 | QPropertyAnimation *moveAnimation; 43 | QPropertyAnimation *moveAnimation_left; 44 | QPropertyAnimation *moveAnimation_right; 45 | 46 | QToolBar *transferBar; 47 | QVector label_group; 48 | QAction *lineAction[image_count]; 49 | 50 | 51 | void resizeEvent(QResizeEvent*); 52 | }; 53 | 54 | #endif // ANIMATIONWIDGET_H 55 | -------------------------------------------------------------------------------- /Source_Code/BottomWidget.h: -------------------------------------------------------------------------------- 1 | #ifndef BOTTOMWIDGET_H 2 | #define BOTTOMWIDGET_H 3 | 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include 9 | #include 10 | #include 11 | 12 | class BottomWidget : public QFrame 13 | { 14 | Q_OBJECT 15 | public: 16 | explicit BottomWidget(QWidget *parent = nullptr); 17 | 18 | 19 | protected: 20 | void paintEvent(QPaintEvent *); 21 | bool eventFilter(QObject *obj, QEvent *event); 22 | 23 | private: 24 | void initWidget(); 25 | QHBoxLayout *h_mainLayout,*m_hControlLayout; 26 | 27 | public: 28 | QFrame *m_controlFrame; 29 | QPushButton *lastBtn, *playBtn, *nextBtn, *volumeBtn, *playModeBtn, *lyricBtn, *listBtn; 30 | QLabel *startTimeLabel, *endTimeLabel, *bottomRightLabel; 31 | QSlider *playTimeSlider, *volumeSlider; 32 | }; 33 | 34 | #endif // BOTTOMWIDGET_H 35 | -------------------------------------------------------------------------------- /Source_Code/ClickLabel.cpp: -------------------------------------------------------------------------------- 1 | #include "ClickLabel.h" 2 | 3 | ClickLabel::ClickLabel(QWidget *parent) 4 | : QLabel (parent) 5 | { 6 | 7 | } 8 | 9 | ClickLabel::~ClickLabel() 10 | { 11 | 12 | } 13 | 14 | void ClickLabel::mousePressEvent(QMouseEvent *event) 15 | { 16 | if(event->button() == Qt::LeftButton) 17 | emit clicked(); 18 | 19 | QLabel::mousePressEvent(event); 20 | } 21 | -------------------------------------------------------------------------------- /Source_Code/ClickLabel.h: -------------------------------------------------------------------------------- 1 | #ifndef CLICKLABEL_H 2 | #define CLICKLABEL_H 3 | 4 | #include 5 | #include 6 | 7 | class ClickLabel : public QLabel 8 | { 9 | Q_OBJECT 10 | public: 11 | explicit ClickLabel(QWidget *parent = nullptr); 12 | ~ClickLabel(); 13 | 14 | signals: 15 | void clicked(); 16 | 17 | protected: 18 | virtual void mousePressEvent(QMouseEvent *); 19 | }; 20 | 21 | #endif // CLICKLABEL_H 22 | -------------------------------------------------------------------------------- /Source_Code/CloudMusic.pro: -------------------------------------------------------------------------------- 1 | QT += core gui multimedia sql 2 | 3 | greaterThan(QT_MAJOR_VERSION, 4): QT += widgets 4 | 5 | TARGET = CloudMusic 6 | TEMPLATE = app 7 | 8 | RC_ICONS = Desktopico.ico 9 | 10 | LIBS += ../taglib/lib/libtag.so 11 | 12 | LIBS += ../taglib/lib/libtag_c.so 13 | 14 | INCLUDEPATH += ./taglib/include/taglib 15 | 16 | # The following define makes your compiler emit warnings if you use 17 | # any feature of Qt which as been marked as deprecated (the exact warnings 18 | # depend on your compiler). Please consult the documentation of the 19 | # deprecated API in order to know how to port your code away from it. 20 | DEFINES += QT_DEPRECATED_WARNINGS 21 | 22 | # You can also make your code fail to compile if you use deprecated APIs. 23 | # In order to do so, uncomment the following line. 24 | # You can also select to disable deprecated APIs only up to a certain version of Qt. 25 | #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0 26 | 27 | 28 | SOURCES += main.cpp\ 29 | MainWidget.cpp \ 30 | TitleBar.cpp \ 31 | FramelessWidget.cpp \ 32 | miniWidget.cpp \ 33 | TrayIconMenu.cpp \ 34 | BottomWidget.cpp \ 35 | MiddleWidget.cpp \ 36 | MiddleWidgetLeftList.cpp \ 37 | MiddleWidgetRightStack.cpp \ 38 | ListWidgetFindMusic.cpp \ 39 | AnimationWidget.cpp \ 40 | ListWidgetLocalMusic.cpp \ 41 | SelectDirFrame.cpp \ 42 | PlaySongInfoWidget.cpp \ 43 | SongListFrame.cpp \ 44 | PlayListItemStyle.cpp \ 45 | SkinWidget.cpp \ 46 | ClickLabel.cpp \ 47 | TurntableWidget.cpp 48 | 49 | HEADERS += \ 50 | MainWidget.h \ 51 | TitleBar.h \ 52 | FramelessWidget.h \ 53 | miniWidget.h \ 54 | TrayIconMenu.h \ 55 | BottomWidget.h \ 56 | MiddleWidget.h \ 57 | MiddleWidgetLeftList.h \ 58 | MiddleWidgetRightStack.h \ 59 | ListWidgetFindMusic.h \ 60 | AnimationWidget.h \ 61 | ListWidgetLocalMusic.h \ 62 | SelectDirFrame.h \ 63 | PlaySongInfoWidget.h \ 64 | SongListFrame.h \ 65 | PlayListItemStyle.h \ 66 | SkinWidget.h \ 67 | ClickLabel.h \ 68 | TurntableWidget.h 69 | 70 | RESOURCES += \ 71 | res.qrc 72 | 73 | DISTFILES += 74 | -------------------------------------------------------------------------------- /Source_Code/Desktopico.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/Desktopico.ico -------------------------------------------------------------------------------- /Source_Code/FramelessWidget.cpp: -------------------------------------------------------------------------------- 1 | #include "FramelessWidget.h" 2 | 3 | FramelessWidget::FramelessWidget(QWidget *parent) : QWidget(parent) 4 | { 5 | m_border=18; 6 | m_state.MousePressed=false; 7 | m_state.IsPressBorder=false; 8 | 9 | setMouseTracking(true); 10 | setWindowFlags(Qt::FramelessWindowHint); 11 | setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding); 12 | } 13 | 14 | void FramelessWidget::mouseMoveRect(const QPoint &p) 15 | { 16 | if(!m_state.IsPressBorder) 17 | { 18 | if((p.x()>width()-m_border) && (p.y()>height()-m_border)) 19 | { 20 | setCursor(Qt::SizeFDiagCursor); 21 | m_curPos=CursorPos::BottomRight; 22 | } 23 | else 24 | { 25 | setCursor(Qt::ArrowCursor); 26 | } 27 | } 28 | else 29 | { 30 | switch (m_curPos) 31 | { 32 | case CursorPos::BottomRight: 33 | { 34 | int setW=QCursor::pos().x()-x(); 35 | int setH=QCursor::pos().y()-y(); 36 | setGeometry(m_state.WindowPos.x(),m_state.WindowPos.y(),setW,setH); 37 | emit sig_PosChange(setW,setH); 38 | break; 39 | } 40 | default: 41 | break; 42 | } 43 | } 44 | } 45 | 46 | void FramelessWidget::mousePressEvent(QMouseEvent *event) 47 | { 48 | setFocus(); 49 | if (event->button() == Qt::LeftButton) 50 | { 51 | m_state.WindowPos = this->pos(); 52 | if( QRect(0,0,width(),height()-m_border*2).contains(event->pos()) 53 | || QRect(0,height()-m_border*2,width()-2*m_border,m_border*2).contains(event->pos()) 54 | ) 55 | { 56 | m_state.MousePos = event->globalPos(); 57 | m_state.MousePressed = true; 58 | } 59 | else if(QRect(width()-m_border*2,height()-m_border*2,m_border*2,m_border*2).contains(event->pos())) 60 | { 61 | m_state.IsPressBorder=true; 62 | } 63 | } 64 | } 65 | 66 | void FramelessWidget::mouseReleaseEvent(QMouseEvent *event) 67 | { 68 | if (event->button() == Qt::LeftButton) 69 | { 70 | m_state.IsPressBorder=false; 71 | m_state.MousePressed=false; 72 | } 73 | } 74 | 75 | void FramelessWidget::mouseMoveEvent(QMouseEvent *event) 76 | { 77 | mouseMoveRect(mapFromGlobal(QCursor::pos())); 78 | if (m_state.MousePressed) 79 | { 80 | this->move(m_state.WindowPos + (event->globalPos() - m_state.MousePos)); 81 | } 82 | } 83 | -------------------------------------------------------------------------------- /Source_Code/FramelessWidget.h: -------------------------------------------------------------------------------- 1 | #ifndef FRAMELESSWIDGET_H 2 | #define FRAMELESSWIDGET_H 3 | 4 | 5 | #include 6 | #include 7 | 8 | //cursor type 9 | enum class CursorPos : char 10 | { 11 | Default, 12 | Right, 13 | Left, 14 | Bottom, 15 | Top, 16 | TopRight, 17 | TopLeft, 18 | BottomRight, 19 | BottomLeft 20 | }; 21 | 22 | #pragma pack(push) 23 | #pragma pack(1) 24 | 25 | //window status 26 | struct pressWindowsState final 27 | { 28 | bool MousePressed; 29 | bool IsPressBorder; 30 | QPoint MousePos; 31 | QPoint WindowPos; 32 | }; 33 | 34 | class FramelessWidget : public QWidget 35 | { 36 | Q_OBJECT 37 | public: 38 | explicit FramelessWidget(QWidget *parent = nullptr); 39 | ~FramelessWidget(){} 40 | 41 | void mouseMoveRect(const QPoint &p); 42 | 43 | signals: 44 | void sig_PosChange(int,int); 45 | 46 | protected: 47 | virtual void mousePressEvent(QMouseEvent *event); 48 | virtual void mouseReleaseEvent(QMouseEvent *); 49 | virtual void mouseMoveEvent(QMouseEvent *); 50 | 51 | pressWindowsState m_state; 52 | int m_border; //right_bottom rect 53 | CursorPos m_curPos; 54 | }; 55 | 56 | #pragma pack(pop) 57 | 58 | #endif // FRAMELESSANDAUTOSIZE_H 59 | -------------------------------------------------------------------------------- /Source_Code/ListWidgetFindMusic.h: -------------------------------------------------------------------------------- 1 | #ifndef LISTWIDGETFINDMUSIC_H 2 | #define LISTWIDGETFINDMUSIC_H 3 | 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include 9 | #include 10 | #include 11 | #include 12 | #include 13 | 14 | #include "AnimationWidget.h" 15 | 16 | class ListWidgetFindMusic : public QWidget 17 | { 18 | Q_OBJECT 19 | public: 20 | explicit ListWidgetFindMusic(QWidget *parent = nullptr); 21 | 22 | protected: 23 | void paintEvent(QPaintEvent *); 24 | 25 | public: 26 | QStackedWidget *findMusicStack; 27 | QPushButton *recommendBtn, *songListBtn, *radioBtn, *rankBtn, *singleBtn, *newMusicBtn; 28 | QButtonGroup *mutexBtnGroupFindMusic; 29 | QVector m_btnVec_FindMusic; 30 | QHBoxLayout *h_btnBarLayout; 31 | QVBoxLayout *v_mainLayout; 32 | 33 | QWidget *personal_widget; 34 | AnimationWidget *m_animationFrame1; 35 | AnimationWidget *m_animationFrame2; 36 | 37 | private: 38 | void init(); 39 | }; 40 | 41 | #endif // LISTWIDGETFINDMUSIC_H 42 | -------------------------------------------------------------------------------- /Source_Code/ListWidgetLocalMusic.h: -------------------------------------------------------------------------------- 1 | #ifndef LISTWIDGETLOCALMUSIC_H 2 | #define LISTWIDGETLOCALMUSIC_H 3 | 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include 9 | #include 10 | #include 11 | #include 12 | #include 13 | #include 14 | #include 15 | #include 16 | 17 | class ListWidgetLocalMusic : public QWidget 18 | { 19 | Q_OBJECT 20 | public: 21 | explicit ListWidgetLocalMusic(QWidget *parent = nullptr); 22 | 23 | public: 24 | QVBoxLayout *m_MainLayout; 25 | 26 | //main title 27 | QMediaPlaylist *localPlayList; 28 | QFrame *titleFrame; 29 | QHBoxLayout *hTitleLayout; 30 | QLabel *m_localLabel; 31 | QLabel *m_CountLabel; 32 | QPushButton *m_selectBtn; 33 | QPushButton *m_listBtn; 34 | QPushButton *m_singalBtn; 35 | QPushButton *m_cdBtn; 36 | QPushButton *m_dirBtn; 37 | 38 | QButtonGroup *mutexBtnGroupLocalMusic; 39 | QVector m_btnVec_LocalMusic; 40 | QStackedWidget *localMusicStack; 41 | 42 | 43 | //stack1 44 | QFrame *stackFrame1; 45 | QFrame *stackFrame1Title; 46 | QHBoxLayout *hStackFrame1TitleLayout; 47 | QPushButton *m_playAllBtn; 48 | QPushButton *m_addBtn; 49 | QPushButton *m_matchMusicBtn; 50 | QLineEdit *m_searchEdit; 51 | QLabel *m_searchLabel; 52 | QTableWidget *m_StackFrame1TableWidget; 53 | 54 | private: 55 | void initTitle(); 56 | void initStack(); 57 | }; 58 | 59 | #endif // LISTWIDGETLOCALMUSIC_H 60 | -------------------------------------------------------------------------------- /Source_Code/MiddleWidget.cpp: -------------------------------------------------------------------------------- 1 | #include "MiddleWidget.h" 2 | 3 | MiddleWidget::MiddleWidget(QWidget *parent) : QWidget(parent) 4 | { 5 | m_hmainLayout = new QHBoxLayout(this); 6 | m_vListLayout = new QVBoxLayout; 7 | 8 | m_List = new MiddleWidgetLeftList(this); 9 | m_PlaySongInfoWidget = new PlaySongInfoWidget(this); 10 | 11 | m_vListLayout->addWidget(m_List); 12 | m_vListLayout->addWidget(m_PlaySongInfoWidget); 13 | m_vListLayout->setSpacing(0); 14 | 15 | m_Stack = new MiddleWidgetRightStack(this); 16 | for(int i=0; im_btnVec.size(); ++i) 17 | connect(m_List->m_btnVec.at(i),&QPushButton::clicked,m_Stack,[=](){m_Stack->setCurrentIndex(i);}); 18 | 19 | m_hmainLayout->addLayout(m_vListLayout); 20 | m_hmainLayout->addWidget(m_Stack); 21 | m_hmainLayout->setMargin(0); 22 | m_hmainLayout->setSpacing(0); 23 | 24 | 25 | m_SelectDirFrame = new SelectDirFrame; 26 | 27 | QSettings settings; 28 | int size = settings.beginReadArray("music_path"); 29 | for (int i = 0; i < size; ++i) 30 | { 31 | settings.setArrayIndex(i); 32 | MusicPath path; 33 | path.path = settings.value("path").toString(); 34 | path.ischecked = settings.value("ischecked").toBool(); 35 | 36 | QListWidgetItem *item = new QListWidgetItem; 37 | QCheckBox *checkBox = new QCheckBox; 38 | checkBox->setText(path.path); 39 | checkBox->setToolTip(path.path); 40 | m_SelectDirFrame->checkList->addItem(item); 41 | m_SelectDirFrame->checkList->setItemWidget(item,checkBox); 42 | checkBox->setChecked(path.ischecked); 43 | } 44 | settings.endArray(); 45 | m_SelectDirFrame->getCheckedState(); 46 | m_Stack->SongDirPath = m_SelectDirFrame->DirList; 47 | m_Stack->slot_widget4MatchSong(); 48 | 49 | 50 | connect(m_Stack->localMusic_BaseStack->m_selectBtn,&QPushButton::clicked,this,[=](){m_SelectDirFrame->show();}); 51 | connect(m_SelectDirFrame->m_ackBtn,&QPushButton::clicked,this,&MiddleWidget::slot_ackDir); 52 | 53 | 54 | } 55 | 56 | void MiddleWidget::slot_ackDir() 57 | { 58 | 59 | m_SelectDirFrame->getCheckedState(); 60 | //when clicked ok just start once matching; not wait 61 | m_Stack->SongDirPath = m_SelectDirFrame->DirList; 62 | m_Stack->slot_widget4MatchSong(); 63 | m_SelectDirFrame->close(); 64 | } 65 | -------------------------------------------------------------------------------- /Source_Code/MiddleWidget.h: -------------------------------------------------------------------------------- 1 | #ifndef MIDDLEWIDGET_H 2 | #define MIDDLEWIDGET_H 3 | 4 | #include 5 | #include 6 | #include 7 | 8 | #include "MiddleWidgetLeftList.h" 9 | #include "MiddleWidgetRightStack.h" 10 | #include "SelectDirFrame.h" 11 | #include "PlaySongInfoWidget.h" 12 | 13 | class MiddleWidget : public QWidget 14 | { 15 | Q_OBJECT 16 | public: 17 | explicit MiddleWidget(QWidget *parent = nullptr); 18 | 19 | MiddleWidgetLeftList *m_List; 20 | MiddleWidgetRightStack *m_Stack; 21 | PlaySongInfoWidget *m_PlaySongInfoWidget; 22 | SelectDirFrame *m_SelectDirFrame; 23 | 24 | private: 25 | QHBoxLayout *m_hmainLayout; 26 | QVBoxLayout *m_vListLayout; 27 | 28 | private slots: 29 | void slot_ackDir(); 30 | 31 | }; 32 | 33 | #endif // MIDDLEWIDGET_H 34 | -------------------------------------------------------------------------------- /Source_Code/MiddleWidgetLeftList.h: -------------------------------------------------------------------------------- 1 | #ifndef MIDDLEWIDGETLEFTLIST_H 2 | #define MIDDLEWIDGETLEFTLIST_H 3 | 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include 9 | #include 10 | 11 | class MiddleWidgetLeftList : public QFrame 12 | { 13 | Q_OBJECT 14 | public: 15 | explicit MiddleWidgetLeftList(QWidget *parent = nullptr); 16 | 17 | QPushButton *findMusicBtn, *privateFMBtn, *mvBtn, *friendBtn; 18 | QPushButton *localMusicBtn, *downManageBtn, *myMusicBoxBtn, *mySingerBtn; 19 | QVector m_btnVec; 20 | private: 21 | void initTopWidget(); 22 | void initBtnVec(); 23 | 24 | QLabel *recommendLabel, *myMusicLabel; 25 | 26 | QButtonGroup *mutexBtnGroup; 27 | 28 | }; 29 | 30 | #endif // MIDDLEWIDGETLEFTLIST_H 31 | -------------------------------------------------------------------------------- /Source_Code/MiddleWidgetRightStack.h: -------------------------------------------------------------------------------- 1 | #ifndef MIDDLEWIDGETRIGHTSTACK_H 2 | #define MIDDLEWIDGETRIGHTSTACK_H 3 | 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include 9 | #include 10 | #include 11 | #include 12 | #include 13 | #include 14 | #include 15 | #include 16 | #include 17 | #include 18 | #include 19 | #include 20 | //#include 21 | #include 22 | #include 23 | 24 | //TagLib 25 | #include 26 | #include 27 | #include 28 | 29 | #include "ListWidgetFindMusic.h" 30 | #include "ListWidgetLocalMusic.h" 31 | 32 | 33 | class MiddleWidgetRightStack : public QStackedWidget 34 | { 35 | Q_OBJECT 36 | public: 37 | explicit MiddleWidgetRightStack(QWidget *parent = nullptr); 38 | ~MiddleWidgetRightStack(); 39 | 40 | public slots: 41 | void slot_widget4MatchSong(); 42 | 43 | private: 44 | void setTableItem(int rownum, QString title, QString singal, QString cd, QString time, QString size); 45 | 46 | 47 | public: 48 | ListWidgetFindMusic *findMusic_BaseStack; 49 | ListWidgetLocalMusic *localMusic_BaseStack; 50 | 51 | int rowcount; 52 | QStringList SongDirPath; 53 | QDir matchDir; 54 | QStringList matchMp3Files; 55 | QString mp3Name; 56 | 57 | QFileInfo fileInfo; 58 | QByteArray bytes; 59 | QString titleStr; 60 | QString artistStr; 61 | QString albumStr; 62 | QString timeStr; 63 | QString mp3Size; 64 | 65 | QString MD5Str; 66 | QStringList MD5List; 67 | 68 | //local music list 69 | QMediaPlaylist *localPlayList; 70 | }; 71 | 72 | #endif // MIDDLEWIDGETRIGHTSTACK_H 73 | -------------------------------------------------------------------------------- /Source_Code/PlayListItemStyle.cpp: -------------------------------------------------------------------------------- 1 | #include "PlayListItemStyle.h" 2 | #include 3 | 4 | PlayListItemStyle::PlayListItemStyle(QString songName, QString singerName, QString songTime, QWidget *parent):QFrame(parent) 5 | { 6 | setFixedHeight(35); 7 | 8 | m_playStatus = new QLabel(this); 9 | m_playStatus->setGeometry(13,15,6,10); 10 | m_playStatus->setToolTip(m_playStatus->text()); 11 | m_playStatus->setStyleSheet("QLabel{background:transparent;border-image:url(:/images/SongList/playLabel.png)}"); 12 | 13 | QString show_songname = ""; 14 | if(songName.length() > 15) 15 | { 16 | show_songname = songName.mid(0,14); 17 | show_songname.append("..."); 18 | m_songName = new QLabel(show_songname,this); 19 | m_songName->adjustSize(); 20 | m_songName->setGeometry(31,9,m_songName->width(),18); 21 | m_songName->setToolTip(songName); 22 | m_songName->setStyleSheet("QLabel{border:none}"); 23 | } 24 | else 25 | { 26 | m_songName = new QLabel(songName,this); 27 | m_songName->adjustSize(); 28 | m_songName->setGeometry(31,9,m_songName->width(),18); 29 | m_songName->setToolTip(m_songName->text()); 30 | m_songName->setStyleSheet("QLabel{border:none}"); 31 | } 32 | 33 | m_singerBtn = new QPushButton(singerName,this); 34 | m_singerBtn->adjustSize(); 35 | m_singerBtn->setGeometry(373,9,m_singerBtn->width(),18); 36 | m_singerBtn->setCursor(Qt::PointingHandCursor); 37 | m_singerBtn->setToolTip(m_singerBtn->text()); 38 | m_singerBtn->setStyleSheet("QPushButton{background:transparent;color:#888888;border:none}"); 39 | 40 | m_sourceBtn = new QPushButton(this); 41 | m_sourceBtn->setGeometry(482,15,13,13); 42 | m_sourceBtn->setCursor(Qt::PointingHandCursor); 43 | m_sourceBtn->setToolTip("来源:"); 44 | m_sourceBtn->setStyleSheet("QPushButton{background:transparent;border-image:url(:/images/SongList/source.png)}"); 45 | 46 | m_songTime = new QLabel(songTime,this); 47 | m_songTime->adjustSize(); 48 | m_songTime->setGeometry(514,9,m_songTime->width(),m_songTime->height()); 49 | m_songTime->setStyleSheet("QLabel{border:none}"); 50 | } 51 | -------------------------------------------------------------------------------- /Source_Code/PlayListItemStyle.h: -------------------------------------------------------------------------------- 1 | #ifndef PLAYLISTITEMSTYLE_H 2 | #define PLAYLISTITEMSTYLE_H 3 | 4 | #include 5 | #include 6 | #include 7 | 8 | class PlayListItemStyle : public QFrame 9 | { 10 | Q_OBJECT 11 | public: 12 | PlayListItemStyle(QString songName, QString singerName, QString songTime, QWidget *parent = nullptr); 13 | 14 | QLabel *m_playStatus, *m_songName, *m_songTime; 15 | QPushButton *m_singerBtn, *m_sourceBtn; 16 | }; 17 | 18 | #endif // PLAYLISTITEMSTYLE_H 19 | -------------------------------------------------------------------------------- /Source_Code/PlaySongInfoWidget.h: -------------------------------------------------------------------------------- 1 | #ifndef PLAYSONGINFOWIDGET_H 2 | #define PLAYSONGINFOWIDGET_H 3 | 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include 9 | #include "ClickLabel.h" 10 | 11 | class PlaySongInfoWidget : public QFrame 12 | { 13 | Q_OBJECT 14 | public: 15 | explicit PlaySongInfoWidget(QWidget *parent = nullptr); 16 | ~PlaySongInfoWidget(); 17 | 18 | QPushButton *songNameBtn, *singleNameBtn, *loveBtn, *shareBtn; 19 | ClickLabel *cdLabel; 20 | 21 | void setSongText(QString,QString); 22 | 23 | private: 24 | void initWidget(); 25 | 26 | QHBoxLayout *h_mainLayout; 27 | QVBoxLayout *v_initLayout1, *v_initLayout2; 28 | }; 29 | 30 | #endif // PLAYSONGINFOWIDGET_H 31 | -------------------------------------------------------------------------------- /Source_Code/SelectDirFrame.h: -------------------------------------------------------------------------------- 1 | #ifndef SELECTDIRFRAME_H 2 | #define SELECTDIRFRAME_H 3 | 4 | 5 | #include "FramelessWidget.h" 6 | #include 7 | #include 8 | #include 9 | #include 10 | #include 11 | #include 12 | #include 13 | #include 14 | #include 15 | #include 16 | 17 | //for setting to write 18 | struct MusicPath 19 | { 20 | QString path; 21 | bool ischecked; 22 | }; 23 | 24 | #pragma pack(push) 25 | #pragma pack(1) 26 | class SelectDirFrame : public FramelessWidget 27 | { 28 | Q_OBJECT 29 | public: 30 | explicit SelectDirFrame(QWidget *parent = nullptr); 31 | 32 | void mousePressEvent(QMouseEvent *); 33 | 34 | QStringList DirList; // all checked dir 35 | QList MusicPathList; //all dir with checkable info 36 | QStringList AllDirList; //all dir without checkable info 37 | 38 | void getCheckedState(); 39 | 40 | QPushButton *m_ackBtn;//确认按钮 41 | 42 | private slots: 43 | void slot_addDir(); 44 | 45 | protected: 46 | void closeEvent(QCloseEvent *event); 47 | 48 | public: 49 | QListWidget *checkList; 50 | private: 51 | QFrame *m_Title; 52 | QLabel *seleLocalDir; 53 | QPushButton *m_closeBtn; 54 | QHBoxLayout *title_Layout; 55 | 56 | QFrame *m_Content; 57 | QLabel *description; 58 | QVBoxLayout *content_Layout; 59 | 60 | QFrame *m_Buttom; 61 | QPushButton *m_addDirBtn; 62 | QHBoxLayout *buttom_Layout; 63 | 64 | QVBoxLayout *mainLayout; 65 | 66 | 67 | //write conf in ~/.config 68 | void writeSettings(); 69 | void readSettings(); 70 | 71 | }; 72 | 73 | #pragma pack(pop) 74 | 75 | #endif // SELECTDIRFRAME_H 76 | -------------------------------------------------------------------------------- /Source_Code/SkinWidget.h: -------------------------------------------------------------------------------- 1 | #ifndef SKINWIDGET_H 2 | #define SKINWIDGET_H 3 | 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include 9 | #include "ClickLabel.h" 10 | 11 | class SkinWidget: public QWidget 12 | { 13 | Q_OBJECT 14 | public: 15 | explicit SkinWidget(QWidget *parent = nullptr); 16 | private: 17 | void paintEvent(QPaintEvent *event); 18 | public: 19 | QLabel *textLabel; 20 | ClickLabel *color_label1, *color_label2, *color_label3, *color_label4, *color_label5, *color_label6; 21 | ClickLabel *color_label7, *color_label8, *color_label9, *color_label10, *color_label11, *color_label12; 22 | QVector m_ClickLabelVec; 23 | 24 | QStringList color1_list = {}; //for normal 25 | QStringList color2_list = {}; //for search edit 26 | 27 | }; 28 | 29 | #endif // SKINWIDGET_H 30 | -------------------------------------------------------------------------------- /Source_Code/SongListFrame.h: -------------------------------------------------------------------------------- 1 | #ifndef SONGLISTFRAME_H 2 | #define SONGLISTFRAME_H 3 | 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include 9 | #include 10 | #include 11 | #include 12 | #include 13 | 14 | class SongListFrame : public QFrame 15 | { 16 | Q_OBJECT 17 | public: 18 | explicit SongListFrame(QWidget *parent = nullptr); 19 | 20 | void focusOutEvent(QFocusEvent *); 21 | 22 | QLabel* getCountLabel(){return m_CountLabel;} 23 | 24 | private slots: 25 | void slot_ShowHideBtn(); 26 | 27 | private: 28 | void initFrame(); 29 | void initPlayList(); 30 | void initConnect(); 31 | 32 | QStackedWidget *m_StackWin; 33 | QFrame *m_BtnFrame, *m_StatusFrmae; 34 | QPushButton *m_PlayingBtn, *m_PlaysBtn, *m_CollectBtn, *m_EmptyBtn, *m_CloseBtn; 35 | QLabel *m_CountLabel, *m_LineLabel; 36 | QVBoxLayout *m_vMainLayout; 37 | 38 | QButtonGroup *mutexBtnGroup; 39 | QSignalMapper *m_signalMapper; 40 | 41 | public: 42 | QListWidget *m_PlayingList, *m_PlaysList; 43 | }; 44 | 45 | #endif // SONGLISTFRAME_H 46 | -------------------------------------------------------------------------------- /Source_Code/TitleBar.h: -------------------------------------------------------------------------------- 1 | #ifndef TITLEBAR_H 2 | #define TITLEBAR_H 3 | 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include 9 | 10 | const QString main_style = "QFrame{background:rgb(102,183,255);}"; 11 | 12 | #pragma pack(push) 13 | #pragma pack(1) 14 | 15 | class TitleBar : public QFrame 16 | { 17 | Q_OBJECT 18 | public: 19 | explicit TitleBar(QWidget *parent = nullptr); 20 | ~TitleBar(){} 21 | 22 | QLabel *titleIconLabel; 23 | QLabel *nullLabel; 24 | 25 | QPushButton *leftBtn; 26 | QPushButton *rightBtn; 27 | QPushButton *searchBtn; 28 | 29 | QLineEdit *searchEdit; 30 | 31 | QPushButton *userIconBtn; 32 | QPushButton *loginBtn; 33 | QPushButton *skinBtn; 34 | QPushButton *mailBtn; 35 | QPushButton *setBtn; 36 | QPushButton *miniBtn; 37 | QPushButton *minimumBtn; 38 | QPushButton *maximumBtn; 39 | QPushButton *closeBtn; 40 | 41 | 42 | private: 43 | void initTitle(); 44 | 45 | QHBoxLayout *titleLayout; 46 | QHBoxLayout *searchLayout; 47 | QHBoxLayout *LayoutLeft; 48 | QHBoxLayout *LayoutRight; 49 | 50 | }; 51 | 52 | #pragma pack(pop) 53 | 54 | 55 | #endif // TITLEBAR_H 56 | 57 | -------------------------------------------------------------------------------- /Source_Code/TrayIconMenu.cpp: -------------------------------------------------------------------------------- 1 | #include "TrayIconMenu.h" 2 | 3 | TrayIconMenu::TrayIconMenu(QWidget *parent) : QMenu(parent) 4 | { 5 | setFixedWidth(212); 6 | 7 | initAction(); 8 | } 9 | 10 | void TrayIconMenu::initAction() 11 | { 12 | setStyleSheet("QMenu{background:#fafafc;}" 13 | "QMenu::item{height: 28px;padding: 0px 20px 0px 40px;font-size : 12px}" 14 | "QMenu::item:hover{background:#ededef}" 15 | "QMenu::icon{position: absolute;left: 12px;}" 16 | "QMenu::separator{height:1px;background: #ededef;margin:5px 0px 5px 0px;}"); 17 | 18 | curPlaySongAction = new QAction(QIcon(":/images/TrayIcon/curPlaySong.png"), "未知 - 未知", this); 19 | pauseAction = new QAction(QIcon(":/images/TrayIcon/play.png"), "播放", this); 20 | lastAction = new QAction(QIcon(":/images/TrayIcon/last.png"), "上一首", this); 21 | nextAction = new QAction(QIcon(":/images/TrayIcon/next.png"), "下一首", this); 22 | 23 | playModeMenu = new QMenu("顺序播放",this); 24 | playMode_Sequential_Action = new QAction(QIcon(":/images/BottomPlay/Sequential.png"), "顺序播放", playModeMenu); 25 | playMode_Loop_Action = new QAction(QIcon(":/images/BottomPlay/Loop.png"), "列表循环", playModeMenu); 26 | playMode_CurrentItemInLoop_Action = new QAction(QIcon(":/images/BottomPlay/CurrentItemInLoop.png"), "单曲循环", playModeMenu); 27 | playMode_Random_Action = new QAction(QIcon(":/images/BottomPlay/Random.png"), "随机播放", playModeMenu); 28 | playModeMenu->addAction(playMode_Sequential_Action); 29 | playModeMenu->addAction(playMode_Loop_Action); 30 | playModeMenu->addAction(playMode_CurrentItemInLoop_Action); 31 | playModeMenu->addAction(playMode_Random_Action); 32 | 33 | windowStyleMenu = new QMenu("完整模式",this); 34 | complete_Window_Action = new QAction("完整模式",windowStyleMenu); 35 | mini_Window_Action = new QAction(QIcon(":/images/TrayIcon/mini.png"), "mini模式", windowStyleMenu); 36 | windowStyleMenu->addAction(complete_Window_Action); 37 | windowStyleMenu->addAction(mini_Window_Action); 38 | 39 | openLyricAction = new QAction(QIcon(":/images/TrayIcon/openLyric.png"), "打开桌面歌词", this); 40 | lockLyricAction = new QAction(QIcon(":/images/TrayIcon/lockLyric.png"), "锁定桌面歌词", this); 41 | setAction = new QAction(QIcon(":/images/TrayIcon/set.png"), "设置", this); 42 | quitAction = new QAction(QIcon(":/images/TrayIcon/quit.png"), "退出", this); 43 | 44 | addAction(curPlaySongAction); 45 | addAction(pauseAction); 46 | addAction(lastAction); 47 | addAction(nextAction); 48 | addSeparator(); 49 | addMenu(playModeMenu); 50 | addMenu(windowStyleMenu); 51 | addAction(openLyricAction); 52 | addAction(lockLyricAction); 53 | addSeparator(); 54 | addAction(setAction); 55 | addSeparator(); 56 | addAction(quitAction); 57 | } 58 | -------------------------------------------------------------------------------- /Source_Code/TrayIconMenu.h: -------------------------------------------------------------------------------- 1 | #ifndef TRAYICONMENU_H 2 | #define TRAYICONMENU_H 3 | 4 | #include 5 | #include 6 | 7 | class TrayIconMenu : public QMenu 8 | { 9 | Q_OBJECT 10 | public: 11 | explicit TrayIconMenu(QWidget *parent = nullptr); 12 | 13 | signals: 14 | 15 | 16 | private: 17 | void initAction(); 18 | 19 | public: 20 | QAction *curPlaySongAction; 21 | QAction *pauseAction; 22 | QAction *lastAction; 23 | QAction *nextAction; 24 | 25 | QMenu *playModeMenu; 26 | QAction *playMode_Sequential_Action; 27 | QAction *playMode_Loop_Action; 28 | QAction *playMode_CurrentItemInLoop_Action; 29 | QAction *playMode_Random_Action; 30 | 31 | QMenu *windowStyleMenu; 32 | QAction *complete_Window_Action; 33 | QAction *mini_Window_Action; 34 | 35 | QAction *openLyricAction; 36 | QAction *lockLyricAction; 37 | QAction *setAction; 38 | QAction *quitAction; 39 | }; 40 | 41 | #endif // TRAYICONMENU_H 42 | -------------------------------------------------------------------------------- /Source_Code/TurntableWidget.h: -------------------------------------------------------------------------------- 1 | #ifndef TURNTABLEWIDGET_H 2 | #define TURNTABLEWIDGET_H 3 | 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include 9 | #include 10 | #include 11 | #include 12 | 13 | class TurntableWidget : public QWidget 14 | { 15 | Q_OBJECT 16 | public: 17 | explicit TurntableWidget(QWidget *parent = nullptr); 18 | QPushButton *hideButton; 19 | QColor backgroud_color; 20 | 21 | QTimer *record_timer; 22 | QTimer *stylus_in_timer; 23 | 24 | int record_angle = 0; 25 | int stylus_angle = 0; 26 | 27 | QLabel *music_titelLabel; 28 | QLabel *music_erLabel; 29 | QLabel *special_Label; 30 | 31 | QPixmap pix_cd; 32 | 33 | private: 34 | void paintEvent(QPaintEvent *event); 35 | 36 | public slots: 37 | void update_record(); 38 | 39 | void update_stylus_in(); 40 | void update_stylus_out(); 41 | }; 42 | 43 | #endif // LEFT_MUSICSHOWWIDGET_H 44 | -------------------------------------------------------------------------------- /Source_Code/images/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/1.png -------------------------------------------------------------------------------- /Source_Code/images/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/2.png -------------------------------------------------------------------------------- /Source_Code/images/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/3.png -------------------------------------------------------------------------------- /Source_Code/images/4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/4.png -------------------------------------------------------------------------------- /Source_Code/images/5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/5.png -------------------------------------------------------------------------------- /Source_Code/images/6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/6.png -------------------------------------------------------------------------------- /Source_Code/images/BottomPlay/BottomRight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/BottomPlay/BottomRight.png -------------------------------------------------------------------------------- /Source_Code/images/BottomPlay/CurrentItemInLoop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/BottomPlay/CurrentItemInLoop.png -------------------------------------------------------------------------------- /Source_Code/images/BottomPlay/Loop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/BottomPlay/Loop.png -------------------------------------------------------------------------------- /Source_Code/images/BottomPlay/Random.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/BottomPlay/Random.png -------------------------------------------------------------------------------- /Source_Code/images/BottomPlay/Sequential.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/BottomPlay/Sequential.png -------------------------------------------------------------------------------- /Source_Code/images/BottomPlay/curTimeHandle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/BottomPlay/curTimeHandle.png -------------------------------------------------------------------------------- /Source_Code/images/BottomPlay/currentList.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/BottomPlay/currentList.png -------------------------------------------------------------------------------- /Source_Code/images/BottomPlay/last.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/BottomPlay/last.png -------------------------------------------------------------------------------- /Source_Code/images/BottomPlay/lyric.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/BottomPlay/lyric.png -------------------------------------------------------------------------------- /Source_Code/images/BottomPlay/next.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/BottomPlay/next.png -------------------------------------------------------------------------------- /Source_Code/images/BottomPlay/pause.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/BottomPlay/pause.png -------------------------------------------------------------------------------- /Source_Code/images/BottomPlay/play.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/BottomPlay/play.png -------------------------------------------------------------------------------- /Source_Code/images/BottomPlay/volume.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/BottomPlay/volume.png -------------------------------------------------------------------------------- /Source_Code/images/BottomPlay/volumeHandle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/BottomPlay/volumeHandle.png -------------------------------------------------------------------------------- /Source_Code/images/BottomPlay/volumeSilence.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/BottomPlay/volumeSilence.png -------------------------------------------------------------------------------- /Source_Code/images/LeftList/download.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/LeftList/download.png -------------------------------------------------------------------------------- /Source_Code/images/LeftList/findMusic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/LeftList/findMusic.png -------------------------------------------------------------------------------- /Source_Code/images/LeftList/findMusic12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/LeftList/findMusic12.png -------------------------------------------------------------------------------- /Source_Code/images/LeftList/fm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/LeftList/fm.png -------------------------------------------------------------------------------- /Source_Code/images/LeftList/friend.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/LeftList/friend.png -------------------------------------------------------------------------------- /Source_Code/images/LeftList/local.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/LeftList/local.png -------------------------------------------------------------------------------- /Source_Code/images/LeftList/mv.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/LeftList/mv.png -------------------------------------------------------------------------------- /Source_Code/images/LeftList/single.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/LeftList/single.png -------------------------------------------------------------------------------- /Source_Code/images/LeftList/yun.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/LeftList/yun.png -------------------------------------------------------------------------------- /Source_Code/images/RightStack/0/btn_mask.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/RightStack/0/btn_mask.png -------------------------------------------------------------------------------- /Source_Code/images/RightStack/0/btn_normal_mask.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/RightStack/0/btn_normal_mask.png -------------------------------------------------------------------------------- /Source_Code/images/RightStack/4/Add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/RightStack/4/Add.png -------------------------------------------------------------------------------- /Source_Code/images/RightStack/4/Match.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/RightStack/4/Match.png -------------------------------------------------------------------------------- /Source_Code/images/RightStack/4/PlayAll.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/RightStack/4/PlayAll.png -------------------------------------------------------------------------------- /Source_Code/images/RightStack/4/cd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/RightStack/4/cd.png -------------------------------------------------------------------------------- /Source_Code/images/RightStack/4/cd_checked.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/RightStack/4/cd_checked.png -------------------------------------------------------------------------------- /Source_Code/images/RightStack/4/close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/RightStack/4/close.png -------------------------------------------------------------------------------- /Source_Code/images/RightStack/4/dir.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/RightStack/4/dir.png -------------------------------------------------------------------------------- /Source_Code/images/RightStack/4/dir_checked.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/RightStack/4/dir_checked.png -------------------------------------------------------------------------------- /Source_Code/images/RightStack/4/list.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/RightStack/4/list.png -------------------------------------------------------------------------------- /Source_Code/images/RightStack/4/list_checked.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/RightStack/4/list_checked.png -------------------------------------------------------------------------------- /Source_Code/images/RightStack/4/search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/RightStack/4/search.png -------------------------------------------------------------------------------- /Source_Code/images/RightStack/4/singal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/RightStack/4/singal.png -------------------------------------------------------------------------------- /Source_Code/images/RightStack/4/singal_checked.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/RightStack/4/singal_checked.png -------------------------------------------------------------------------------- /Source_Code/images/SearchStack/download.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/SearchStack/download.png -------------------------------------------------------------------------------- /Source_Code/images/SearchStack/download_hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/SearchStack/download_hover.png -------------------------------------------------------------------------------- /Source_Code/images/SearchStack/left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/SearchStack/left.png -------------------------------------------------------------------------------- /Source_Code/images/SearchStack/left_hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/SearchStack/left_hover.png -------------------------------------------------------------------------------- /Source_Code/images/SearchStack/love.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/SearchStack/love.png -------------------------------------------------------------------------------- /Source_Code/images/SearchStack/love_hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/SearchStack/love_hover.png -------------------------------------------------------------------------------- /Source_Code/images/SearchStack/progressbar.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/SearchStack/progressbar.gif -------------------------------------------------------------------------------- /Source_Code/images/SearchStack/right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/SearchStack/right.png -------------------------------------------------------------------------------- /Source_Code/images/SearchStack/right_hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/SearchStack/right_hover.png -------------------------------------------------------------------------------- /Source_Code/images/SongInfo/cdCover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/SongInfo/cdCover.png -------------------------------------------------------------------------------- /Source_Code/images/SongInfo/love.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/SongInfo/love.png -------------------------------------------------------------------------------- /Source_Code/images/SongInfo/love_checked.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/SongInfo/love_checked.png -------------------------------------------------------------------------------- /Source_Code/images/SongInfo/share.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/SongInfo/share.png -------------------------------------------------------------------------------- /Source_Code/images/SongInfo/shrink.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/SongInfo/shrink.png -------------------------------------------------------------------------------- /Source_Code/images/SongList/Collect.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/SongList/Collect.png -------------------------------------------------------------------------------- /Source_Code/images/SongList/Empty.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/SongList/Empty.png -------------------------------------------------------------------------------- /Source_Code/images/SongList/closeList.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/SongList/closeList.png -------------------------------------------------------------------------------- /Source_Code/images/SongList/pauseLabel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/SongList/pauseLabel.png -------------------------------------------------------------------------------- /Source_Code/images/SongList/playLabel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/SongList/playLabel.png -------------------------------------------------------------------------------- /Source_Code/images/SongList/source.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/SongList/source.png -------------------------------------------------------------------------------- /Source_Code/images/TitleBar/close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/TitleBar/close.png -------------------------------------------------------------------------------- /Source_Code/images/TitleBar/close_hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/TitleBar/close_hover.png -------------------------------------------------------------------------------- /Source_Code/images/TitleBar/leftArrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/TitleBar/leftArrow.png -------------------------------------------------------------------------------- /Source_Code/images/TitleBar/line.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/TitleBar/line.png -------------------------------------------------------------------------------- /Source_Code/images/TitleBar/mail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/TitleBar/mail.png -------------------------------------------------------------------------------- /Source_Code/images/TitleBar/mail_hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/TitleBar/mail_hover.png -------------------------------------------------------------------------------- /Source_Code/images/TitleBar/maximum.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/TitleBar/maximum.png -------------------------------------------------------------------------------- /Source_Code/images/TitleBar/maximum_cancel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/TitleBar/maximum_cancel.png -------------------------------------------------------------------------------- /Source_Code/images/TitleBar/maximum_cancel_hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/TitleBar/maximum_cancel_hover.png -------------------------------------------------------------------------------- /Source_Code/images/TitleBar/maximum_hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/TitleBar/maximum_hover.png -------------------------------------------------------------------------------- /Source_Code/images/TitleBar/mini.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/TitleBar/mini.png -------------------------------------------------------------------------------- /Source_Code/images/TitleBar/mini_hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/TitleBar/mini_hover.png -------------------------------------------------------------------------------- /Source_Code/images/TitleBar/minimum.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/TitleBar/minimum.png -------------------------------------------------------------------------------- /Source_Code/images/TitleBar/minimum_hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/TitleBar/minimum_hover.png -------------------------------------------------------------------------------- /Source_Code/images/TitleBar/rightArrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/TitleBar/rightArrow.png -------------------------------------------------------------------------------- /Source_Code/images/TitleBar/search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/TitleBar/search.png -------------------------------------------------------------------------------- /Source_Code/images/TitleBar/search_hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/TitleBar/search_hover.png -------------------------------------------------------------------------------- /Source_Code/images/TitleBar/set.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/TitleBar/set.png -------------------------------------------------------------------------------- /Source_Code/images/TitleBar/set_hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/TitleBar/set_hover.png -------------------------------------------------------------------------------- /Source_Code/images/TitleBar/skin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/TitleBar/skin.png -------------------------------------------------------------------------------- /Source_Code/images/TitleBar/skin_hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/TitleBar/skin_hover.png -------------------------------------------------------------------------------- /Source_Code/images/TitleBar/titleIcon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/TitleBar/titleIcon.png -------------------------------------------------------------------------------- /Source_Code/images/TitleBar/userIcon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/TitleBar/userIcon.png -------------------------------------------------------------------------------- /Source_Code/images/TrayIcon/curPlaySong.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/TrayIcon/curPlaySong.png -------------------------------------------------------------------------------- /Source_Code/images/TrayIcon/last.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/TrayIcon/last.png -------------------------------------------------------------------------------- /Source_Code/images/TrayIcon/lockLyric.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/TrayIcon/lockLyric.png -------------------------------------------------------------------------------- /Source_Code/images/TrayIcon/logoTrayIcon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/TrayIcon/logoTrayIcon.png -------------------------------------------------------------------------------- /Source_Code/images/TrayIcon/mini.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/TrayIcon/mini.png -------------------------------------------------------------------------------- /Source_Code/images/TrayIcon/next.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/TrayIcon/next.png -------------------------------------------------------------------------------- /Source_Code/images/TrayIcon/openLyric.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/TrayIcon/openLyric.png -------------------------------------------------------------------------------- /Source_Code/images/TrayIcon/pause.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/TrayIcon/pause.png -------------------------------------------------------------------------------- /Source_Code/images/TrayIcon/play.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/TrayIcon/play.png -------------------------------------------------------------------------------- /Source_Code/images/TrayIcon/quit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/TrayIcon/quit.png -------------------------------------------------------------------------------- /Source_Code/images/TrayIcon/set.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/TrayIcon/set.png -------------------------------------------------------------------------------- /Source_Code/images/Turntable/cdCover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/Turntable/cdCover.png -------------------------------------------------------------------------------- /Source_Code/images/Turntable/hide.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/Turntable/hide.png -------------------------------------------------------------------------------- /Source_Code/images/Turntable/record.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/Turntable/record.png -------------------------------------------------------------------------------- /Source_Code/images/Turntable/stylus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/Turntable/stylus.png -------------------------------------------------------------------------------- /Source_Code/images/closedialog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/closedialog.png -------------------------------------------------------------------------------- /Source_Code/images/line.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/line.png -------------------------------------------------------------------------------- /Source_Code/images/lineChose.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/lineChose.png -------------------------------------------------------------------------------- /Source_Code/images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/logo.png -------------------------------------------------------------------------------- /Source_Code/images/logoIcon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/logoIcon.png -------------------------------------------------------------------------------- /Source_Code/images/mini/close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/mini/close.png -------------------------------------------------------------------------------- /Source_Code/images/mini/last.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/mini/last.png -------------------------------------------------------------------------------- /Source_Code/images/mini/list.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/mini/list.png -------------------------------------------------------------------------------- /Source_Code/images/mini/love.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/mini/love.png -------------------------------------------------------------------------------- /Source_Code/images/mini/next.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/mini/next.png -------------------------------------------------------------------------------- /Source_Code/images/mini/pause.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/mini/pause.png -------------------------------------------------------------------------------- /Source_Code/images/mini/photo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/mini/photo.png -------------------------------------------------------------------------------- /Source_Code/images/mini/redLove.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/mini/redLove.png -------------------------------------------------------------------------------- /Source_Code/images/mini/silence.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/mini/silence.png -------------------------------------------------------------------------------- /Source_Code/images/mini/start.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/mini/start.png -------------------------------------------------------------------------------- /Source_Code/images/mini/vol.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/mini/vol.png -------------------------------------------------------------------------------- /Source_Code/images/mini/winMode.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/images/mini/winMode.png -------------------------------------------------------------------------------- /Source_Code/main.cpp: -------------------------------------------------------------------------------- 1 | #include "MainWidget.h" 2 | #include 3 | 4 | 5 | int main(int argc, char *argv[]) 6 | { 7 | QApplication app(argc, argv); 8 | app.setApplicationName("CloudMusic"); 9 | app.setOrganizationName("CloudMusic"); 10 | app.setOrganizationDomain("github.com/bottod"); 11 | app.setWindowIcon(QIcon(":/images/logoIcon.png")); 12 | 13 | MainWidget w; 14 | 15 | w.show(); 16 | 17 | return app.exec(); 18 | } 19 | -------------------------------------------------------------------------------- /Source_Code/miniWidget.h: -------------------------------------------------------------------------------- 1 | #ifndef MINIWIDGET_H 2 | #define MINIWIDGET_H 3 | 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include 9 | #include 10 | #include 11 | 12 | const QString miniMainColor = "QFrame{background:rgb(102,183,255)}"; 13 | 14 | #pragma pack(push) 15 | #pragma pack(1) 16 | 17 | class miniWidget : public QFrame 18 | { 19 | Q_OBJECT 20 | public: 21 | explicit miniWidget(QWidget *parent = nullptr); 22 | 23 | void mousePressEvent(QMouseEvent *); 24 | void mouseMoveEvent(QMouseEvent *); 25 | void mouseReleaseEvent(QMouseEvent *); 26 | void enterEvent(QEvent*); 27 | void leaveEvent(QEvent*); 28 | 29 | public: 30 | QFrame *m_mainFrame; 31 | 32 | QLabel *m_photoLabel; 33 | QPushButton *m_loveBtn; 34 | QPushButton *m_volBtn; 35 | QPushButton *m_listBtn; 36 | 37 | QPushButton *m_closeBtn; 38 | QPushButton *m_recoveryWinBtn; 39 | 40 | QPushButton *m_preBtn; 41 | QPushButton *m_playStateBtn; 42 | QPushButton *m_nextBtn; 43 | 44 | QLabel *m_songNameLab; 45 | QLabel *m_singleLab; 46 | 47 | private: 48 | void init_miniWidget(); 49 | bool m_mouseState; 50 | 51 | QPoint m_WindowPos; 52 | QPoint m_MousePos; 53 | 54 | QHBoxLayout *m_hMainLayout; 55 | QHBoxLayout *m_hPlayLayout; 56 | 57 | QFrame *m_palyFrame; 58 | 59 | QVBoxLayout *m_vMainLayout; 60 | QVBoxLayout *m_vInfoLayout; 61 | QVBoxLayout *m_vSysLayout; 62 | }; 63 | 64 | #pragma pack(pop) 65 | 66 | #endif // MINIWIDGET_H 67 | -------------------------------------------------------------------------------- /Source_Code/taglib/cmake/CMakeFiles/3.8.0-rc2/CMakeCCompiler.cmake: -------------------------------------------------------------------------------- 1 | set(CMAKE_C_COMPILER "C:/Program Files (x86)/Microsoft Visual Studio 12.0/VC/bin/cl.exe") 2 | set(CMAKE_C_COMPILER_ARG1 "") 3 | set(CMAKE_C_COMPILER_ID "MSVC") 4 | set(CMAKE_C_COMPILER_VERSION "18.0.31101.0") 5 | set(CMAKE_C_COMPILER_WRAPPER "") 6 | set(CMAKE_C_STANDARD_COMPUTED_DEFAULT "90") 7 | set(CMAKE_C_COMPILE_FEATURES "") 8 | set(CMAKE_C90_COMPILE_FEATURES "") 9 | set(CMAKE_C99_COMPILE_FEATURES "") 10 | set(CMAKE_C11_COMPILE_FEATURES "") 11 | 12 | set(CMAKE_C_PLATFORM_ID "Windows") 13 | set(CMAKE_C_SIMULATE_ID "") 14 | set(CMAKE_C_SIMULATE_VERSION "") 15 | set(MSVC_C_ARCHITECTURE_ID X86) 16 | set(CMAKE_AR "") 17 | set(CMAKE_RANLIB "") 18 | set(CMAKE_LINKER "C:/Program Files (x86)/Microsoft Visual Studio 12.0/VC/bin/link.exe") 19 | set(CMAKE_COMPILER_IS_GNUCC ) 20 | set(CMAKE_C_COMPILER_LOADED 1) 21 | set(CMAKE_C_COMPILER_WORKS TRUE) 22 | set(CMAKE_C_ABI_COMPILED TRUE) 23 | set(CMAKE_COMPILER_IS_MINGW ) 24 | set(CMAKE_COMPILER_IS_CYGWIN ) 25 | if(CMAKE_COMPILER_IS_CYGWIN) 26 | set(CYGWIN 1) 27 | set(UNIX 1) 28 | endif() 29 | 30 | set(CMAKE_C_COMPILER_ENV_VAR "CC") 31 | 32 | if(CMAKE_COMPILER_IS_MINGW) 33 | set(MINGW 1) 34 | endif() 35 | set(CMAKE_C_COMPILER_ID_RUN 1) 36 | set(CMAKE_C_SOURCE_FILE_EXTENSIONS c;m) 37 | set(CMAKE_C_IGNORE_EXTENSIONS h;H;o;O;obj;OBJ;def;DEF;rc;RC) 38 | set(CMAKE_C_LINKER_PREFERENCE 10) 39 | 40 | # Save compiler ABI information. 41 | set(CMAKE_C_SIZEOF_DATA_PTR "4") 42 | set(CMAKE_C_COMPILER_ABI "") 43 | set(CMAKE_C_LIBRARY_ARCHITECTURE "") 44 | 45 | if(CMAKE_C_SIZEOF_DATA_PTR) 46 | set(CMAKE_SIZEOF_VOID_P "${CMAKE_C_SIZEOF_DATA_PTR}") 47 | endif() 48 | 49 | if(CMAKE_C_COMPILER_ABI) 50 | set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_C_COMPILER_ABI}") 51 | endif() 52 | 53 | if(CMAKE_C_LIBRARY_ARCHITECTURE) 54 | set(CMAKE_LIBRARY_ARCHITECTURE "") 55 | endif() 56 | 57 | set(CMAKE_C_CL_SHOWINCLUDES_PREFIX "") 58 | if(CMAKE_C_CL_SHOWINCLUDES_PREFIX) 59 | set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_C_CL_SHOWINCLUDES_PREFIX}") 60 | endif() 61 | 62 | 63 | 64 | 65 | 66 | set(CMAKE_C_IMPLICIT_LINK_LIBRARIES "") 67 | set(CMAKE_C_IMPLICIT_LINK_DIRECTORIES "") 68 | set(CMAKE_C_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "") 69 | -------------------------------------------------------------------------------- /Source_Code/taglib/cmake/CMakeFiles/3.8.0-rc2/CMakeCXXCompiler.cmake: -------------------------------------------------------------------------------- 1 | set(CMAKE_CXX_COMPILER "C:/Program Files (x86)/Microsoft Visual Studio 12.0/VC/bin/cl.exe") 2 | set(CMAKE_CXX_COMPILER_ARG1 "") 3 | set(CMAKE_CXX_COMPILER_ID "MSVC") 4 | set(CMAKE_CXX_COMPILER_VERSION "18.0.31101.0") 5 | set(CMAKE_CXX_COMPILER_WRAPPER "") 6 | set(CMAKE_CXX_STANDARD_COMPUTED_DEFAULT "98") 7 | set(CMAKE_CXX_COMPILE_FEATURES "cxx_std_98;cxx_std_11;cxx_std_14;cxx_std_17;cxx_alias_templates;cxx_auto_type;cxx_contextual_conversions;cxx_decltype;cxx_default_function_template_args;cxx_defaulted_functions;cxx_delegating_constructors;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_generalized_initializers;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_right_angle_brackets;cxx_rvalue_references;cxx_static_assert;cxx_strong_enums;cxx_template_template_parameters;cxx_trailing_return_types;cxx_uniform_initialization;cxx_variadic_macros;cxx_variadic_templates") 8 | set(CMAKE_CXX98_COMPILE_FEATURES "") 9 | set(CMAKE_CXX11_COMPILE_FEATURES "") 10 | set(CMAKE_CXX14_COMPILE_FEATURES "") 11 | set(CMAKE_CXX17_COMPILE_FEATURES "") 12 | 13 | set(CMAKE_CXX_PLATFORM_ID "Windows") 14 | set(CMAKE_CXX_SIMULATE_ID "") 15 | set(CMAKE_CXX_SIMULATE_VERSION "") 16 | set(MSVC_CXX_ARCHITECTURE_ID X86) 17 | set(CMAKE_AR "") 18 | set(CMAKE_RANLIB "") 19 | set(CMAKE_LINKER "C:/Program Files (x86)/Microsoft Visual Studio 12.0/VC/bin/link.exe") 20 | set(CMAKE_COMPILER_IS_GNUCXX ) 21 | set(CMAKE_CXX_COMPILER_LOADED 1) 22 | set(CMAKE_CXX_COMPILER_WORKS TRUE) 23 | set(CMAKE_CXX_ABI_COMPILED TRUE) 24 | set(CMAKE_COMPILER_IS_MINGW ) 25 | set(CMAKE_COMPILER_IS_CYGWIN ) 26 | if(CMAKE_COMPILER_IS_CYGWIN) 27 | set(CYGWIN 1) 28 | set(UNIX 1) 29 | endif() 30 | 31 | set(CMAKE_CXX_COMPILER_ENV_VAR "CXX") 32 | 33 | if(CMAKE_COMPILER_IS_MINGW) 34 | set(MINGW 1) 35 | endif() 36 | set(CMAKE_CXX_COMPILER_ID_RUN 1) 37 | set(CMAKE_CXX_IGNORE_EXTENSIONS inl;h;hpp;HPP;H;o;O;obj;OBJ;def;DEF;rc;RC) 38 | set(CMAKE_CXX_SOURCE_FILE_EXTENSIONS C;M;c++;cc;cpp;cxx;mm;CPP) 39 | set(CMAKE_CXX_LINKER_PREFERENCE 30) 40 | set(CMAKE_CXX_LINKER_PREFERENCE_PROPAGATES 1) 41 | 42 | # Save compiler ABI information. 43 | set(CMAKE_CXX_SIZEOF_DATA_PTR "4") 44 | set(CMAKE_CXX_COMPILER_ABI "") 45 | set(CMAKE_CXX_LIBRARY_ARCHITECTURE "") 46 | 47 | if(CMAKE_CXX_SIZEOF_DATA_PTR) 48 | set(CMAKE_SIZEOF_VOID_P "${CMAKE_CXX_SIZEOF_DATA_PTR}") 49 | endif() 50 | 51 | if(CMAKE_CXX_COMPILER_ABI) 52 | set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_CXX_COMPILER_ABI}") 53 | endif() 54 | 55 | if(CMAKE_CXX_LIBRARY_ARCHITECTURE) 56 | set(CMAKE_LIBRARY_ARCHITECTURE "") 57 | endif() 58 | 59 | set(CMAKE_CXX_CL_SHOWINCLUDES_PREFIX "") 60 | if(CMAKE_CXX_CL_SHOWINCLUDES_PREFIX) 61 | set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_CXX_CL_SHOWINCLUDES_PREFIX}") 62 | endif() 63 | 64 | 65 | 66 | 67 | 68 | set(CMAKE_CXX_IMPLICIT_LINK_LIBRARIES "") 69 | set(CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES "") 70 | set(CMAKE_CXX_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "") 71 | -------------------------------------------------------------------------------- /Source_Code/taglib/cmake/CMakeFiles/3.8.0-rc2/CMakeDetermineCompilerABI_C.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/taglib/cmake/CMakeFiles/3.8.0-rc2/CMakeDetermineCompilerABI_C.bin -------------------------------------------------------------------------------- /Source_Code/taglib/cmake/CMakeFiles/3.8.0-rc2/CMakeDetermineCompilerABI_CXX.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/taglib/cmake/CMakeFiles/3.8.0-rc2/CMakeDetermineCompilerABI_CXX.bin -------------------------------------------------------------------------------- /Source_Code/taglib/cmake/CMakeFiles/3.8.0-rc2/CMakeRCCompiler.cmake: -------------------------------------------------------------------------------- 1 | set(CMAKE_RC_COMPILER "rc") 2 | set(CMAKE_RC_COMPILER_ARG1 "") 3 | set(CMAKE_RC_COMPILER_LOADED 1) 4 | set(CMAKE_RC_SOURCE_FILE_EXTENSIONS rc;RC) 5 | set(CMAKE_RC_OUTPUT_EXTENSION .res) 6 | set(CMAKE_RC_COMPILER_ENV_VAR "RC") 7 | -------------------------------------------------------------------------------- /Source_Code/taglib/cmake/CMakeFiles/3.8.0-rc2/CMakeSystem.cmake: -------------------------------------------------------------------------------- 1 | set(CMAKE_HOST_SYSTEM "Windows-10.0.14393") 2 | set(CMAKE_HOST_SYSTEM_NAME "Windows") 3 | set(CMAKE_HOST_SYSTEM_VERSION "10.0.14393") 4 | set(CMAKE_HOST_SYSTEM_PROCESSOR "AMD64") 5 | 6 | 7 | 8 | set(CMAKE_SYSTEM "Windows-10.0.14393") 9 | set(CMAKE_SYSTEM_NAME "Windows") 10 | set(CMAKE_SYSTEM_VERSION "10.0.14393") 11 | set(CMAKE_SYSTEM_PROCESSOR "AMD64") 12 | 13 | set(CMAKE_CROSSCOMPILING "FALSE") 14 | 15 | set(CMAKE_SYSTEM_LOADED 1) 16 | -------------------------------------------------------------------------------- /Source_Code/taglib/cmake/CMakeFiles/3.8.0-rc2/CompilerIdC/CompilerIdC.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/taglib/cmake/CMakeFiles/3.8.0-rc2/CompilerIdC/CompilerIdC.exe -------------------------------------------------------------------------------- /Source_Code/taglib/cmake/CMakeFiles/3.8.0-rc2/CompilerIdC/CompilerIdC.vcxproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Debug 6 | Win32 7 | 8 | 9 | 10 | {CAE07175-D007-4FC3-BFE8-47B392814159} 11 | CompilerIdC 12 | Win32Proj 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | Application 24 | v120 25 | MultiByte 26 | 27 | 28 | 29 | <_ProjectFileVersion>10.0.30319.1 30 | .\ 31 | $(Configuration)\ 32 | false 33 | 34 | 35 | 36 | Disabled 37 | %(PreprocessorDefinitions) 38 | false 39 | EnableFastChecks 40 | MultiThreadedDebugDLL 41 | 42 | 43 | TurnOffAllWarnings 44 | 45 | 46 | 47 | 48 | false 49 | Console 50 | 51 | 52 | for %%i in (cl.exe) do %40echo CMAKE_C_COMPILER=%%~$PATH:i 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | -------------------------------------------------------------------------------- /Source_Code/taglib/cmake/CMakeFiles/3.8.0-rc2/CompilerIdC/Debug/CMakeCCompilerId.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/taglib/cmake/CMakeFiles/3.8.0-rc2/CompilerIdC/Debug/CMakeCCompilerId.obj -------------------------------------------------------------------------------- /Source_Code/taglib/cmake/CMakeFiles/3.8.0-rc2/CompilerIdC/Debug/CompilerIdC.tlog/CL.read.1.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/taglib/cmake/CMakeFiles/3.8.0-rc2/CompilerIdC/Debug/CompilerIdC.tlog/CL.read.1.tlog -------------------------------------------------------------------------------- /Source_Code/taglib/cmake/CMakeFiles/3.8.0-rc2/CompilerIdC/Debug/CompilerIdC.tlog/CL.write.1.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/taglib/cmake/CMakeFiles/3.8.0-rc2/CompilerIdC/Debug/CompilerIdC.tlog/CL.write.1.tlog -------------------------------------------------------------------------------- /Source_Code/taglib/cmake/CMakeFiles/3.8.0-rc2/CompilerIdC/Debug/CompilerIdC.tlog/CompilerIdC.lastbuildstate: -------------------------------------------------------------------------------- 1 | #TargetFrameworkVersion=v4.0:PlatformToolSet=v120:EnableManagedIncrementalBuild=false:VCToolArchitecture=Native32Bit 2 | Debug|Win32|D:\IDM下载\taglib-1.11.1\taglib\cmake\CMakeFiles\3.8.0-rc2\CompilerIdC\| 3 | -------------------------------------------------------------------------------- /Source_Code/taglib/cmake/CMakeFiles/3.8.0-rc2/CompilerIdC/Debug/CompilerIdC.tlog/cl.command.1.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/taglib/cmake/CMakeFiles/3.8.0-rc2/CompilerIdC/Debug/CompilerIdC.tlog/cl.command.1.tlog -------------------------------------------------------------------------------- /Source_Code/taglib/cmake/CMakeFiles/3.8.0-rc2/CompilerIdC/Debug/CompilerIdC.tlog/link.command.1.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/taglib/cmake/CMakeFiles/3.8.0-rc2/CompilerIdC/Debug/CompilerIdC.tlog/link.command.1.tlog -------------------------------------------------------------------------------- /Source_Code/taglib/cmake/CMakeFiles/3.8.0-rc2/CompilerIdC/Debug/CompilerIdC.tlog/link.read.1.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/taglib/cmake/CMakeFiles/3.8.0-rc2/CompilerIdC/Debug/CompilerIdC.tlog/link.read.1.tlog -------------------------------------------------------------------------------- /Source_Code/taglib/cmake/CMakeFiles/3.8.0-rc2/CompilerIdC/Debug/CompilerIdC.tlog/link.write.1.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/taglib/cmake/CMakeFiles/3.8.0-rc2/CompilerIdC/Debug/CompilerIdC.tlog/link.write.1.tlog -------------------------------------------------------------------------------- /Source_Code/taglib/cmake/CMakeFiles/3.8.0-rc2/CompilerIdCXX/CompilerIdCXX.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/taglib/cmake/CMakeFiles/3.8.0-rc2/CompilerIdCXX/CompilerIdCXX.exe -------------------------------------------------------------------------------- /Source_Code/taglib/cmake/CMakeFiles/3.8.0-rc2/CompilerIdCXX/CompilerIdCXX.vcxproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Debug 6 | Win32 7 | 8 | 9 | 10 | {CAE07175-D007-4FC3-BFE8-47B392814159} 11 | CompilerIdCXX 12 | Win32Proj 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | Application 24 | v120 25 | MultiByte 26 | 27 | 28 | 29 | <_ProjectFileVersion>10.0.30319.1 30 | .\ 31 | $(Configuration)\ 32 | false 33 | 34 | 35 | 36 | Disabled 37 | %(PreprocessorDefinitions) 38 | false 39 | EnableFastChecks 40 | MultiThreadedDebugDLL 41 | 42 | 43 | TurnOffAllWarnings 44 | 45 | 46 | 47 | 48 | false 49 | Console 50 | 51 | 52 | for %%i in (cl.exe) do %40echo CMAKE_CXX_COMPILER=%%~$PATH:i 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | -------------------------------------------------------------------------------- /Source_Code/taglib/cmake/CMakeFiles/3.8.0-rc2/CompilerIdCXX/Debug/CMakeCXXCompilerId.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/taglib/cmake/CMakeFiles/3.8.0-rc2/CompilerIdCXX/Debug/CMakeCXXCompilerId.obj -------------------------------------------------------------------------------- /Source_Code/taglib/cmake/CMakeFiles/3.8.0-rc2/CompilerIdCXX/Debug/CompilerIdCXX.tlog/CL.read.1.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/taglib/cmake/CMakeFiles/3.8.0-rc2/CompilerIdCXX/Debug/CompilerIdCXX.tlog/CL.read.1.tlog -------------------------------------------------------------------------------- /Source_Code/taglib/cmake/CMakeFiles/3.8.0-rc2/CompilerIdCXX/Debug/CompilerIdCXX.tlog/CL.write.1.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/taglib/cmake/CMakeFiles/3.8.0-rc2/CompilerIdCXX/Debug/CompilerIdCXX.tlog/CL.write.1.tlog -------------------------------------------------------------------------------- /Source_Code/taglib/cmake/CMakeFiles/3.8.0-rc2/CompilerIdCXX/Debug/CompilerIdCXX.tlog/CompilerIdCXX.lastbuildstate: -------------------------------------------------------------------------------- 1 | #TargetFrameworkVersion=v4.0:PlatformToolSet=v120:EnableManagedIncrementalBuild=false:VCToolArchitecture=Native32Bit 2 | Debug|Win32|D:\IDM下载\taglib-1.11.1\taglib\cmake\CMakeFiles\3.8.0-rc2\CompilerIdCXX\| 3 | -------------------------------------------------------------------------------- /Source_Code/taglib/cmake/CMakeFiles/3.8.0-rc2/CompilerIdCXX/Debug/CompilerIdCXX.tlog/cl.command.1.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/taglib/cmake/CMakeFiles/3.8.0-rc2/CompilerIdCXX/Debug/CompilerIdCXX.tlog/cl.command.1.tlog -------------------------------------------------------------------------------- /Source_Code/taglib/cmake/CMakeFiles/3.8.0-rc2/CompilerIdCXX/Debug/CompilerIdCXX.tlog/link.command.1.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/taglib/cmake/CMakeFiles/3.8.0-rc2/CompilerIdCXX/Debug/CompilerIdCXX.tlog/link.command.1.tlog -------------------------------------------------------------------------------- /Source_Code/taglib/cmake/CMakeFiles/3.8.0-rc2/CompilerIdCXX/Debug/CompilerIdCXX.tlog/link.read.1.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/taglib/cmake/CMakeFiles/3.8.0-rc2/CompilerIdCXX/Debug/CompilerIdCXX.tlog/link.read.1.tlog -------------------------------------------------------------------------------- /Source_Code/taglib/cmake/CMakeFiles/3.8.0-rc2/CompilerIdCXX/Debug/CompilerIdCXX.tlog/link.write.1.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/taglib/cmake/CMakeFiles/3.8.0-rc2/CompilerIdCXX/Debug/CompilerIdCXX.tlog/link.write.1.tlog -------------------------------------------------------------------------------- /Source_Code/taglib/cmake/CMakeFiles/CMakeOutput.log: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/taglib/cmake/CMakeFiles/CMakeOutput.log -------------------------------------------------------------------------------- /Source_Code/taglib/cmake/CMakeFiles/cmake.check_cache: -------------------------------------------------------------------------------- 1 | # This file is generated by cmake for dependency checking of the CMakeCache.txt file 2 | -------------------------------------------------------------------------------- /Source_Code/taglib/cmake/CMakeFiles/feature_tests.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/taglib/cmake/CMakeFiles/feature_tests.bin -------------------------------------------------------------------------------- /Source_Code/taglib/flac/flacmetadatablock.cpp: -------------------------------------------------------------------------------- 1 | /************************************************************************** 2 | copyright : (C) 2010 by Lukáš Lalinský 3 | email : lalinsky@gmail.com 4 | **************************************************************************/ 5 | 6 | /*************************************************************************** 7 | * This library is free software; you can redistribute it and/or modify * 8 | * it under the terms of the GNU Lesser General Public License version * 9 | * 2.1 as published by the Free Software Foundation. * 10 | * * 11 | * This library is distributed in the hope that it will be useful, but * 12 | * WITHOUT ANY WARRANTY; without even the implied warranty of * 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * 14 | * Lesser General Public License for more details. * 15 | * * 16 | * You should have received a copy of the GNU Lesser General Public * 17 | * License along with this library; if not, write to the Free Software * 18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 19 | * 02110-1301 USA * 20 | * * 21 | * Alternatively, this file is available under the Mozilla Public * 22 | * License Version 1.1. You may obtain a copy of the License at * 23 | * http://www.mozilla.org/MPL/ * 24 | ***************************************************************************/ 25 | 26 | #include 27 | #include 28 | #include "flacmetadatablock.h" 29 | 30 | using namespace TagLib; 31 | 32 | class FLAC::MetadataBlock::MetadataBlockPrivate 33 | { 34 | public: 35 | MetadataBlockPrivate() {} 36 | 37 | }; 38 | 39 | FLAC::MetadataBlock::MetadataBlock() 40 | { 41 | d = 0; 42 | } 43 | 44 | FLAC::MetadataBlock::~MetadataBlock() 45 | { 46 | } 47 | 48 | -------------------------------------------------------------------------------- /Source_Code/taglib/flac/flacmetadatablock.h: -------------------------------------------------------------------------------- 1 | /************************************************************************** 2 | copyright : (C) 2010 by Lukáš Lalinský 3 | email : lalinsky@gmail.com 4 | **************************************************************************/ 5 | 6 | /*************************************************************************** 7 | * This library is free software; you can redistribute it and/or modify * 8 | * it under the terms of the GNU Lesser General Public License version * 9 | * 2.1 as published by the Free Software Foundation. * 10 | * * 11 | * This library is distributed in the hope that it will be useful, but * 12 | * WITHOUT ANY WARRANTY; without even the implied warranty of * 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * 14 | * Lesser General Public License for more details. * 15 | * * 16 | * You should have received a copy of the GNU Lesser General Public * 17 | * License along with this library; if not, write to the Free Software * 18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 19 | * 02110-1301 USA * 20 | * * 21 | * Alternatively, this file is available under the Mozilla Public * 22 | * License Version 1.1. You may obtain a copy of the License at * 23 | * http://www.mozilla.org/MPL/ * 24 | ***************************************************************************/ 25 | 26 | #ifndef TAGLIB_FLACMETADATABLOCK_H 27 | #define TAGLIB_FLACMETADATABLOCK_H 28 | 29 | #include "tlist.h" 30 | #include "tbytevector.h" 31 | #include "taglib_export.h" 32 | 33 | namespace TagLib { 34 | 35 | namespace FLAC { 36 | 37 | class TAGLIB_EXPORT MetadataBlock 38 | { 39 | public: 40 | MetadataBlock(); 41 | virtual ~MetadataBlock(); 42 | 43 | enum BlockType { 44 | StreamInfo = 0, 45 | Padding, 46 | Application, 47 | SeekTable, 48 | VorbisComment, 49 | CueSheet, 50 | Picture 51 | }; 52 | 53 | /*! 54 | * Returns the FLAC metadata block type. 55 | */ 56 | virtual int code() const = 0; 57 | 58 | /*! 59 | * Render the content of the block. 60 | */ 61 | virtual ByteVector render() const = 0; 62 | 63 | private: 64 | MetadataBlock(const MetadataBlock &item); 65 | MetadataBlock &operator=(const MetadataBlock &item); 66 | 67 | class MetadataBlockPrivate; 68 | MetadataBlockPrivate *d; 69 | }; 70 | 71 | } 72 | 73 | } 74 | 75 | #endif 76 | -------------------------------------------------------------------------------- /Source_Code/taglib/flac/flacunknownmetadatablock.cpp: -------------------------------------------------------------------------------- 1 | /************************************************************************** 2 | copyright : (C) 2010 by Lukáš Lalinský 3 | email : lalinsky@gmail.com 4 | **************************************************************************/ 5 | 6 | /*************************************************************************** 7 | * This library is free software; you can redistribute it and/or modify * 8 | * it under the terms of the GNU Lesser General Public License version * 9 | * 2.1 as published by the Free Software Foundation. * 10 | * * 11 | * This library is distributed in the hope that it will be useful, but * 12 | * WITHOUT ANY WARRANTY; without even the implied warranty of * 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * 14 | * Lesser General Public License for more details. * 15 | * * 16 | * You should have received a copy of the GNU Lesser General Public * 17 | * License along with this library; if not, write to the Free Software * 18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 19 | * 02110-1301 USA * 20 | * * 21 | * Alternatively, this file is available under the Mozilla Public * 22 | * License Version 1.1. You may obtain a copy of the License at * 23 | * http://www.mozilla.org/MPL/ * 24 | ***************************************************************************/ 25 | 26 | #include 27 | #include 28 | #include 29 | #include "flacunknownmetadatablock.h" 30 | 31 | using namespace TagLib; 32 | 33 | class FLAC::UnknownMetadataBlock::UnknownMetadataBlockPrivate 34 | { 35 | public: 36 | UnknownMetadataBlockPrivate() : code(0) {} 37 | 38 | int code; 39 | ByteVector data; 40 | }; 41 | 42 | FLAC::UnknownMetadataBlock::UnknownMetadataBlock(int code, const ByteVector &data) 43 | { 44 | d = new UnknownMetadataBlockPrivate; 45 | d->code = code; 46 | //debug(String(data.toHex())); 47 | d->data = data; 48 | } 49 | 50 | FLAC::UnknownMetadataBlock::~UnknownMetadataBlock() 51 | { 52 | delete d; 53 | } 54 | 55 | int FLAC::UnknownMetadataBlock::code() const 56 | { 57 | return d->code; 58 | } 59 | 60 | void FLAC::UnknownMetadataBlock::setCode(int code) 61 | { 62 | d->code = code; 63 | } 64 | 65 | ByteVector FLAC::UnknownMetadataBlock::data() const 66 | { 67 | return d->data; 68 | } 69 | 70 | void FLAC::UnknownMetadataBlock::setData(const ByteVector &data) 71 | { 72 | d->data = data; 73 | } 74 | 75 | ByteVector FLAC::UnknownMetadataBlock::render() const 76 | { 77 | return d->data; 78 | } 79 | 80 | -------------------------------------------------------------------------------- /Source_Code/taglib/flac/flacunknownmetadatablock.h: -------------------------------------------------------------------------------- 1 | /************************************************************************** 2 | copyright : (C) 2010 by Lukáš Lalinský 3 | email : lalinsky@gmail.com 4 | **************************************************************************/ 5 | 6 | /*************************************************************************** 7 | * This library is free software; you can redistribute it and/or modify * 8 | * it under the terms of the GNU Lesser General Public License version * 9 | * 2.1 as published by the Free Software Foundation. * 10 | * * 11 | * This library is distributed in the hope that it will be useful, but * 12 | * WITHOUT ANY WARRANTY; without even the implied warranty of * 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * 14 | * Lesser General Public License for more details. * 15 | * * 16 | * You should have received a copy of the GNU Lesser General Public * 17 | * License along with this library; if not, write to the Free Software * 18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 19 | * 02110-1301 USA * 20 | * * 21 | * Alternatively, this file is available under the Mozilla Public * 22 | * License Version 1.1. You may obtain a copy of the License at * 23 | * http://www.mozilla.org/MPL/ * 24 | ***************************************************************************/ 25 | 26 | #ifndef TAGLIB_FLACUNKNOWNMETADATABLOCK_H 27 | #define TAGLIB_FLACUNKNOWNMETADATABLOCK_H 28 | 29 | #include "tlist.h" 30 | #include "tbytevector.h" 31 | #include "taglib_export.h" 32 | #include "flacmetadatablock.h" 33 | 34 | namespace TagLib { 35 | 36 | namespace FLAC { 37 | 38 | class TAGLIB_EXPORT UnknownMetadataBlock : public MetadataBlock 39 | { 40 | public: 41 | UnknownMetadataBlock(int blockType, const ByteVector &data); 42 | ~UnknownMetadataBlock(); 43 | 44 | /*! 45 | * Returns the FLAC metadata block type. 46 | */ 47 | int code() const; 48 | 49 | /*! 50 | * Sets the FLAC metadata block type. 51 | */ 52 | void setCode(int code); 53 | 54 | /*! 55 | * Returns the FLAC metadata block type. 56 | */ 57 | ByteVector data() const; 58 | 59 | /*! 60 | * Sets the FLAC metadata block type. 61 | */ 62 | void setData(const ByteVector &data); 63 | 64 | /*! 65 | * Render the content of the block. 66 | */ 67 | ByteVector render() const; 68 | 69 | private: 70 | UnknownMetadataBlock(const MetadataBlock &item); 71 | UnknownMetadataBlock &operator=(const MetadataBlock &item); 72 | 73 | class UnknownMetadataBlockPrivate; 74 | UnknownMetadataBlockPrivate *d; 75 | }; 76 | 77 | } 78 | 79 | } 80 | 81 | #endif 82 | -------------------------------------------------------------------------------- /Source_Code/taglib/include/taglib/flacmetadatablock.h: -------------------------------------------------------------------------------- 1 | /************************************************************************** 2 | copyright : (C) 2010 by Lukáš Lalinský 3 | email : lalinsky@gmail.com 4 | **************************************************************************/ 5 | 6 | /*************************************************************************** 7 | * This library is free software; you can redistribute it and/or modify * 8 | * it under the terms of the GNU Lesser General Public License version * 9 | * 2.1 as published by the Free Software Foundation. * 10 | * * 11 | * This library is distributed in the hope that it will be useful, but * 12 | * WITHOUT ANY WARRANTY; without even the implied warranty of * 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * 14 | * Lesser General Public License for more details. * 15 | * * 16 | * You should have received a copy of the GNU Lesser General Public * 17 | * License along with this library; if not, write to the Free Software * 18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 19 | * 02110-1301 USA * 20 | * * 21 | * Alternatively, this file is available under the Mozilla Public * 22 | * License Version 1.1. You may obtain a copy of the License at * 23 | * http://www.mozilla.org/MPL/ * 24 | ***************************************************************************/ 25 | 26 | #ifndef TAGLIB_FLACMETADATABLOCK_H 27 | #define TAGLIB_FLACMETADATABLOCK_H 28 | 29 | #include "tlist.h" 30 | #include "tbytevector.h" 31 | #include "taglib_export.h" 32 | 33 | namespace TagLib { 34 | 35 | namespace FLAC { 36 | 37 | class TAGLIB_EXPORT MetadataBlock 38 | { 39 | public: 40 | MetadataBlock(); 41 | virtual ~MetadataBlock(); 42 | 43 | enum BlockType { 44 | StreamInfo = 0, 45 | Padding, 46 | Application, 47 | SeekTable, 48 | VorbisComment, 49 | CueSheet, 50 | Picture 51 | }; 52 | 53 | /*! 54 | * Returns the FLAC metadata block type. 55 | */ 56 | virtual int code() const = 0; 57 | 58 | /*! 59 | * Render the content of the block. 60 | */ 61 | virtual ByteVector render() const = 0; 62 | 63 | private: 64 | MetadataBlock(const MetadataBlock &item); 65 | MetadataBlock &operator=(const MetadataBlock &item); 66 | 67 | class MetadataBlockPrivate; 68 | MetadataBlockPrivate *d; 69 | }; 70 | 71 | } 72 | 73 | } 74 | 75 | #endif 76 | -------------------------------------------------------------------------------- /Source_Code/taglib/include/taglib/id3v1genres.h: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | copyright : (C) 2002 - 2008 by Scott Wheeler 3 | email : wheeler@kde.org 4 | ***************************************************************************/ 5 | 6 | /*************************************************************************** 7 | * This library is free software; you can redistribute it and/or modify * 8 | * it under the terms of the GNU Lesser General Public License version * 9 | * 2.1 as published by the Free Software Foundation. * 10 | * * 11 | * This library is distributed in the hope that it will be useful, but * 12 | * WITHOUT ANY WARRANTY; without even the implied warranty of * 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * 14 | * Lesser General Public License for more details. * 15 | * * 16 | * You should have received a copy of the GNU Lesser General Public * 17 | * License along with this library; if not, write to the Free Software * 18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 19 | * 02110-1301 USA * 20 | * * 21 | * Alternatively, this file is available under the Mozilla Public * 22 | * License Version 1.1. You may obtain a copy of the License at * 23 | * http://www.mozilla.org/MPL/ * 24 | ***************************************************************************/ 25 | 26 | #ifndef TAGLIB_ID3V1GENRE_H 27 | #define TAGLIB_ID3V1GENRE_H 28 | 29 | #include "tmap.h" 30 | #include "tstringlist.h" 31 | #include "taglib_export.h" 32 | 33 | namespace TagLib { 34 | namespace ID3v1 { 35 | 36 | typedef Map GenreMap; 37 | 38 | /*! 39 | * Returns the list of canonical ID3v1 genre names in the order that they 40 | * are listed in the standard. 41 | */ 42 | StringList TAGLIB_EXPORT genreList(); 43 | 44 | /*! 45 | * A "reverse mapping" that goes from the canonical ID3v1 genre name to the 46 | * respective genre number. genreMap()["Rock"] == 47 | */ 48 | GenreMap TAGLIB_EXPORT genreMap(); 49 | 50 | /*! 51 | * Returns the name of the genre at \a index in the ID3v1 genre list. If 52 | * \a index is out of range -- less than zero or greater than 191 -- a null 53 | * string will be returned. 54 | */ 55 | String TAGLIB_EXPORT genre(int index); 56 | 57 | /*! 58 | * Returns the genre index for the (case sensitive) genre \a name. If the 59 | * genre is not in the list 255 (which signifies an unknown genre in ID3v1) 60 | * will be returned. 61 | */ 62 | int TAGLIB_EXPORT genreIndex(const String &name); 63 | } 64 | } 65 | 66 | #endif 67 | -------------------------------------------------------------------------------- /Source_Code/taglib/include/taglib/id3v2footer.h: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | copyright : (C) 2002 - 2008 by Scott Wheeler 3 | email : wheeler@kde.org 4 | ***************************************************************************/ 5 | 6 | /*************************************************************************** 7 | * This library is free software; you can redistribute it and/or modify * 8 | * it under the terms of the GNU Lesser General Public License version * 9 | * 2.1 as published by the Free Software Foundation. * 10 | * * 11 | * This library is distributed in the hope that it will be useful, but * 12 | * WITHOUT ANY WARRANTY; without even the implied warranty of * 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * 14 | * Lesser General Public License for more details. * 15 | * * 16 | * You should have received a copy of the GNU Lesser General Public * 17 | * License along with this library; if not, write to the Free Software * 18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 19 | * 02110-1301 USA * 20 | * * 21 | * Alternatively, this file is available under the Mozilla Public * 22 | * License Version 1.1. You may obtain a copy of the License at * 23 | * http://www.mozilla.org/MPL/ * 24 | ***************************************************************************/ 25 | 26 | #ifndef TAGLIB_ID3V2FOOTER_H 27 | #define TAGLIB_ID3V2FOOTER_H 28 | 29 | #include "taglib_export.h" 30 | #include "tbytevector.h" 31 | 32 | namespace TagLib { 33 | 34 | namespace ID3v2 { 35 | 36 | class Header; 37 | 38 | //! ID3v2 footer implementation 39 | 40 | /*! 41 | * Per the ID3v2 specification, the tag's footer is just a copy of the 42 | * information in the header. As such there is no API for reading the 43 | * data from the header, it can just as easily be done from the header. 44 | * 45 | * In fact, at this point, TagLib does not even parse the footer since 46 | * it is not useful internally. However, if the flag to include a footer 47 | * has been set in the ID3v2::Tag, TagLib will render a footer. 48 | */ 49 | 50 | class TAGLIB_EXPORT Footer 51 | { 52 | public: 53 | /*! 54 | * Constructs an empty ID3v2 footer. 55 | */ 56 | Footer(); 57 | /*! 58 | * Destroys the footer. 59 | */ 60 | virtual ~Footer(); 61 | 62 | /*! 63 | * Returns the size of the footer. Presently this is always 10 bytes. 64 | */ 65 | static unsigned int size(); 66 | 67 | /*! 68 | * Renders the footer based on the data in \a header. 69 | */ 70 | ByteVector render(const Header *header) const; 71 | 72 | private: 73 | Footer(const Footer &); 74 | Footer &operator=(const Footer &); 75 | 76 | class FooterPrivate; 77 | FooterPrivate *d; 78 | }; 79 | 80 | } 81 | } 82 | #endif 83 | -------------------------------------------------------------------------------- /Source_Code/taglib/include/taglib/id3v2synchdata.h: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | copyright : (C) 2002 - 2008 by Scott Wheeler 3 | email : wheeler@kde.org 4 | ***************************************************************************/ 5 | 6 | /*************************************************************************** 7 | * This library is free software; you can redistribute it and/or modify * 8 | * it under the terms of the GNU Lesser General Public License version * 9 | * 2.1 as published by the Free Software Foundation. * 10 | * * 11 | * This library is distributed in the hope that it will be useful, but * 12 | * WITHOUT ANY WARRANTY; without even the implied warranty of * 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * 14 | * Lesser General Public License for more details. * 15 | * * 16 | * You should have received a copy of the GNU Lesser General Public * 17 | * License along with this library; if not, write to the Free Software * 18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 19 | * 02110-1301 USA * 20 | * * 21 | * Alternatively, this file is available under the Mozilla Public * 22 | * License Version 1.1. You may obtain a copy of the License at * 23 | * http://www.mozilla.org/MPL/ * 24 | ***************************************************************************/ 25 | 26 | #ifndef TAGLIB_ID3V2SYNCHDATA_H 27 | #define TAGLIB_ID3V2SYNCHDATA_H 28 | 29 | #include "tbytevector.h" 30 | #include "taglib.h" 31 | 32 | namespace TagLib { 33 | 34 | namespace ID3v2 { 35 | 36 | //! A few functions for ID3v2 synch safe integer conversion 37 | 38 | /*! 39 | * In the ID3v2.4 standard most integer values are encoded as "synch safe" 40 | * integers which are encoded in such a way that they will not give false 41 | * MPEG syncs and confuse MPEG decoders. This namespace provides some 42 | * methods for converting to and from these values to ByteVectors for 43 | * things rendering and parsing ID3v2 data. 44 | */ 45 | 46 | namespace SynchData 47 | { 48 | /*! 49 | * This returns the unsigned integer value of \a data where \a data is a 50 | * ByteVector that contains a \e synchsafe integer (Structure, 51 | * 6.2). The default \a length of 52 | * 4 is used if another value is not specified. 53 | */ 54 | TAGLIB_EXPORT unsigned int toUInt(const ByteVector &data); 55 | 56 | /*! 57 | * Returns a 4 byte (32 bit) synchsafe integer based on \a value. 58 | */ 59 | TAGLIB_EXPORT ByteVector fromUInt(unsigned int value); 60 | 61 | /*! 62 | * Convert the data from unsynchronized data to its original format. 63 | */ 64 | TAGLIB_EXPORT ByteVector decode(const ByteVector &input); 65 | } 66 | 67 | } 68 | } 69 | 70 | #endif 71 | -------------------------------------------------------------------------------- /Source_Code/taglib/include/taglib/modfilebase.h: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | copyright : (C) 2011 by Mathias Panzenböck 3 | email : grosser.meister.morti@gmx.net 4 | ***************************************************************************/ 5 | 6 | /*************************************************************************** 7 | * This library is free software; you can redistribute it and/or modify * 8 | * it under the terms of the GNU Lesser General Public License version * 9 | * 2.1 as published by the Free Software Foundation. * 10 | * * 11 | * This library is distributed in the hope that it will be useful, but * 12 | * WITHOUT ANY WARRANTY; without even the implied warranty of * 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * 14 | * Lesser General Public License for more details. * 15 | * * 16 | * You should have received a copy of the GNU Lesser General Public * 17 | * License along with this library; if not, write to the Free Software * 18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 19 | * 02110-1301 USA * 20 | * * 21 | * Alternatively, this file is available under the Mozilla Public * 22 | * License Version 1.1. You may obtain a copy of the License at * 23 | * http://www.mozilla.org/MPL/ * 24 | ***************************************************************************/ 25 | 26 | #ifndef TAGLIB_MODFILEBASE_H 27 | #define TAGLIB_MODFILEBASE_H 28 | 29 | #include "taglib.h" 30 | #include "tfile.h" 31 | #include "tstring.h" 32 | #include "tlist.h" 33 | #include "taglib_export.h" 34 | 35 | #include 36 | 37 | namespace TagLib { 38 | 39 | namespace Mod { 40 | 41 | class TAGLIB_EXPORT FileBase : public TagLib::File 42 | { 43 | protected: 44 | FileBase(FileName file); 45 | FileBase(IOStream *stream); 46 | 47 | void writeString(const String &s, unsigned long size, char padding = 0); 48 | void writeByte(unsigned char byte); 49 | void writeU16L(unsigned short number); 50 | void writeU32L(unsigned long number); 51 | void writeU16B(unsigned short number); 52 | void writeU32B(unsigned long number); 53 | 54 | bool readString(String &s, unsigned long size); 55 | bool readByte(unsigned char &byte); 56 | bool readU16L(unsigned short &number); 57 | bool readU32L(unsigned long &number); 58 | bool readU16B(unsigned short &number); 59 | bool readU32B(unsigned long &number); 60 | }; 61 | 62 | } 63 | 64 | } 65 | 66 | #endif 67 | -------------------------------------------------------------------------------- /Source_Code/taglib/include/taglib/modproperties.h: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | copyright : (C) 2011 by Mathias Panzenböck 3 | email : grosser.meister.morti@gmx.net 4 | ***************************************************************************/ 5 | 6 | /*************************************************************************** 7 | * This library is free software; you can redistribute it and/or modify * 8 | * it under the terms of the GNU Lesser General Public License version * 9 | * 2.1 as published by the Free Software Foundation. * 10 | * * 11 | * This library is distributed in the hope that it will be useful, but * 12 | * WITHOUT ANY WARRANTY; without even the implied warranty of * 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * 14 | * Lesser General Public License for more details. * 15 | * * 16 | * You should have received a copy of the GNU Lesser General Public * 17 | * License along with this library; if not, write to the Free Software * 18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 19 | * 02110-1301 USA * 20 | * * 21 | * Alternatively, this file is available under the Mozilla Public * 22 | * License Version 1.1. You may obtain a copy of the License at * 23 | * http://www.mozilla.org/MPL/ * 24 | ***************************************************************************/ 25 | 26 | #ifndef TAGLIB_MODPROPERTIES_H 27 | #define TAGLIB_MODPROPERTIES_H 28 | 29 | #include "taglib.h" 30 | #include "audioproperties.h" 31 | 32 | namespace TagLib { 33 | 34 | namespace Mod { 35 | 36 | class TAGLIB_EXPORT Properties : public AudioProperties 37 | { 38 | public: 39 | Properties(AudioProperties::ReadStyle propertiesStyle); 40 | virtual ~Properties(); 41 | 42 | int length() const; 43 | int lengthInSeconds() const; 44 | int lengthInMilliseconds() const; 45 | int bitrate() const; 46 | int sampleRate() const; 47 | int channels() const; 48 | 49 | unsigned int instrumentCount() const; 50 | unsigned char lengthInPatterns() const; 51 | 52 | void setChannels(int channels); 53 | 54 | void setInstrumentCount(unsigned int sampleCount); 55 | void setLengthInPatterns(unsigned char lengthInPatterns); 56 | 57 | private: 58 | friend class File; 59 | 60 | Properties(const Properties&); 61 | Properties &operator=(const Properties&); 62 | 63 | class PropertiesPrivate; 64 | PropertiesPrivate *d; 65 | }; 66 | 67 | } 68 | 69 | } 70 | 71 | #endif 72 | -------------------------------------------------------------------------------- /Source_Code/taglib/include/taglib/mp4coverart.h: -------------------------------------------------------------------------------- 1 | /************************************************************************** 2 | copyright : (C) 2009 by Lukáš Lalinský 3 | email : lalinsky@gmail.com 4 | **************************************************************************/ 5 | 6 | /*************************************************************************** 7 | * This library is free software; you can redistribute it and/or modify * 8 | * it under the terms of the GNU Lesser General Public License version * 9 | * 2.1 as published by the Free Software Foundation. * 10 | * * 11 | * This library is distributed in the hope that it will be useful, but * 12 | * WITHOUT ANY WARRANTY; without even the implied warranty of * 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * 14 | * Lesser General Public License for more details. * 15 | * * 16 | * You should have received a copy of the GNU Lesser General Public * 17 | * License along with this library; if not, write to the Free Software * 18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 19 | * 02110-1301 USA * 20 | * * 21 | * Alternatively, this file is available under the Mozilla Public * 22 | * License Version 1.1. You may obtain a copy of the License at * 23 | * http://www.mozilla.org/MPL/ * 24 | ***************************************************************************/ 25 | 26 | #ifndef TAGLIB_MP4COVERART_H 27 | #define TAGLIB_MP4COVERART_H 28 | 29 | #include "tlist.h" 30 | #include "tbytevector.h" 31 | #include "taglib_export.h" 32 | #include "mp4atom.h" 33 | 34 | namespace TagLib { 35 | 36 | namespace MP4 { 37 | 38 | class TAGLIB_EXPORT CoverArt 39 | { 40 | public: 41 | /*! 42 | * This describes the image type. 43 | */ 44 | enum Format { 45 | JPEG = TypeJPEG, 46 | PNG = TypePNG, 47 | BMP = TypeBMP, 48 | GIF = TypeGIF, 49 | Unknown = TypeImplicit, 50 | }; 51 | 52 | CoverArt(Format format, const ByteVector &data); 53 | ~CoverArt(); 54 | 55 | CoverArt(const CoverArt &item); 56 | 57 | /*! 58 | * Copies the contents of \a item into this CoverArt. 59 | */ 60 | CoverArt &operator=(const CoverArt &item); 61 | 62 | /*! 63 | * Exchanges the content of the CoverArt by the content of \a item. 64 | */ 65 | void swap(CoverArt &item); 66 | 67 | //! Format of the image 68 | Format format() const; 69 | 70 | //! The image data 71 | ByteVector data() const; 72 | 73 | private: 74 | class CoverArtPrivate; 75 | CoverArtPrivate *d; 76 | }; 77 | 78 | typedef List CoverArtList; 79 | 80 | } 81 | 82 | } 83 | 84 | #endif 85 | -------------------------------------------------------------------------------- /Source_Code/taglib/include/taglib/mp4item.h: -------------------------------------------------------------------------------- 1 | /************************************************************************** 2 | copyright : (C) 2007 by Lukáš Lalinský 3 | email : lalinsky@gmail.com 4 | **************************************************************************/ 5 | 6 | /*************************************************************************** 7 | * This library is free software; you can redistribute it and/or modify * 8 | * it under the terms of the GNU Lesser General Public License version * 9 | * 2.1 as published by the Free Software Foundation. * 10 | * * 11 | * This library is distributed in the hope that it will be useful, but * 12 | * WITHOUT ANY WARRANTY; without even the implied warranty of * 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * 14 | * Lesser General Public License for more details. * 15 | * * 16 | * You should have received a copy of the GNU Lesser General Public * 17 | * License along with this library; if not, write to the Free Software * 18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 19 | * 02110-1301 USA * 20 | * * 21 | * Alternatively, this file is available under the Mozilla Public * 22 | * License Version 1.1. You may obtain a copy of the License at * 23 | * http://www.mozilla.org/MPL/ * 24 | ***************************************************************************/ 25 | 26 | #ifndef TAGLIB_MP4ITEM_H 27 | #define TAGLIB_MP4ITEM_H 28 | 29 | #include "tstringlist.h" 30 | #include "mp4coverart.h" 31 | #include "taglib_export.h" 32 | 33 | namespace TagLib { 34 | 35 | namespace MP4 { 36 | 37 | class TAGLIB_EXPORT Item 38 | { 39 | public: 40 | struct IntPair { 41 | int first, second; 42 | }; 43 | 44 | Item(); 45 | Item(const Item &item); 46 | 47 | /*! 48 | * Copies the contents of \a item into this Item. 49 | */ 50 | Item &operator=(const Item &item); 51 | 52 | /*! 53 | * Exchanges the content of the Item by the content of \a item. 54 | */ 55 | void swap(Item &item); 56 | 57 | ~Item(); 58 | 59 | Item(int value); 60 | Item(unsigned char value); 61 | Item(unsigned int value); 62 | Item(long long value); 63 | Item(bool value); 64 | Item(int first, int second); 65 | Item(const StringList &value); 66 | Item(const ByteVectorList &value); 67 | Item(const CoverArtList &value); 68 | 69 | void setAtomDataType(AtomDataType type); 70 | AtomDataType atomDataType() const; 71 | 72 | int toInt() const; 73 | unsigned char toByte() const; 74 | unsigned int toUInt() const; 75 | long long toLongLong() const; 76 | bool toBool() const; 77 | IntPair toIntPair() const; 78 | StringList toStringList() const; 79 | ByteVectorList toByteVectorList() const; 80 | CoverArtList toCoverArtList() const; 81 | 82 | bool isValid() const; 83 | 84 | private: 85 | class ItemPrivate; 86 | ItemPrivate *d; 87 | }; 88 | 89 | } 90 | 91 | } 92 | 93 | #endif 94 | -------------------------------------------------------------------------------- /Source_Code/taglib/include/taglib/podcastframe.h: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | copyright : (C) 2015 by Urs Fleisch 3 | email : ufleisch@users.sourceforge.net 4 | ***************************************************************************/ 5 | 6 | /*************************************************************************** 7 | * This library is free software; you can redistribute it and/or modify * 8 | * it under the terms of the GNU Lesser General Public License version * 9 | * 2.1 as published by the Free Software Foundation. * 10 | * * 11 | * This library is distributed in the hope that it will be useful, but * 12 | * WITHOUT ANY WARRANTY; without even the implied warranty of * 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * 14 | * Lesser General Public License for more details. * 15 | * * 16 | * You should have received a copy of the GNU Lesser General Public * 17 | * License along with this library; if not, write to the Free Software * 18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 19 | * 02110-1301 USA * 20 | * * 21 | * Alternatively, this file is available under the Mozilla Public * 22 | * License Version 1.1. You may obtain a copy of the License at * 23 | * http://www.mozilla.org/MPL/ * 24 | ***************************************************************************/ 25 | 26 | #ifndef TAGLIB_PODCASTFRAME_H 27 | #define TAGLIB_PODCASTFRAME_H 28 | 29 | #include "id3v2frame.h" 30 | #include "taglib_export.h" 31 | 32 | namespace TagLib { 33 | 34 | namespace ID3v2 { 35 | 36 | //! ID3v2 podcast frame 37 | /*! 38 | * An implementation of ID3v2 podcast flag, a frame with four zero bytes. 39 | */ 40 | class TAGLIB_EXPORT PodcastFrame : public Frame 41 | { 42 | friend class FrameFactory; 43 | 44 | public: 45 | /*! 46 | * Construct a podcast frame. 47 | */ 48 | PodcastFrame(); 49 | 50 | /*! 51 | * Destroys this PodcastFrame instance. 52 | */ 53 | virtual ~PodcastFrame(); 54 | 55 | /*! 56 | * Returns a null string. 57 | */ 58 | virtual String toString() const; 59 | 60 | protected: 61 | // Reimplementations. 62 | 63 | virtual void parseFields(const ByteVector &data); 64 | virtual ByteVector renderFields() const; 65 | 66 | private: 67 | /*! 68 | * The constructor used by the FrameFactory. 69 | */ 70 | PodcastFrame(const ByteVector &data, Header *h); 71 | PodcastFrame(const PodcastFrame &); 72 | PodcastFrame &operator=(const PodcastFrame &); 73 | 74 | class PodcastFramePrivate; 75 | PodcastFramePrivate *d; 76 | }; 77 | 78 | } 79 | } 80 | #endif 81 | -------------------------------------------------------------------------------- /Source_Code/taglib/include/taglib/taglib_config.h: -------------------------------------------------------------------------------- 1 | /* taglib_config.h. Generated by cmake from taglib_config.h.cmake */ 2 | 3 | /* These values are no longer used. This file is present only for compatibility reasons. */ 4 | 5 | #define TAGLIB_WITH_ASF 1 6 | #define TAGLIB_WITH_MP4 1 7 | -------------------------------------------------------------------------------- /Source_Code/taglib/include/taglib/taglib_export.h: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | copyright : (C) 2002 - 2008 by Scott Wheeler 3 | email : wheeler@kde.org 4 | ***************************************************************************/ 5 | 6 | /*************************************************************************** 7 | * This library is free software; you can redistribute it and/or modify * 8 | * it under the terms of the GNU Lesser General Public License version * 9 | * 2.1 as published by the Free Software Foundation. * 10 | * * 11 | * This library is distributed in the hope that it will be useful, but * 12 | * WITHOUT ANY WARRANTY; without even the implied warranty of * 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * 14 | * Lesser General Public License for more details. * 15 | * * 16 | * You should have received a copy of the GNU Lesser General Public * 17 | * License along with this library; if not, write to the Free Software * 18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 19 | * 02110-1301 USA * 20 | * * 21 | * Alternatively, this file is available under the Mozilla Public * 22 | * License Version 1.1. You may obtain a copy of the License at * 23 | * http://www.mozilla.org/MPL/ * 24 | ***************************************************************************/ 25 | 26 | #ifndef TAGLIB_EXPORT_H 27 | #define TAGLIB_EXPORT_H 28 | 29 | #if defined(TAGLIB_STATIC) 30 | #define TAGLIB_EXPORT 31 | #elif (defined(_WIN32) || defined(_WIN64)) 32 | #ifdef MAKE_TAGLIB_LIB 33 | #define TAGLIB_EXPORT __declspec(dllexport) 34 | #else 35 | #define TAGLIB_EXPORT __declspec(dllimport) 36 | #endif 37 | #elif defined(__GNUC__) && (__GNUC__ > 4 || __GNUC__ == 4 && __GNUC_MINOR__ >= 1) 38 | #define TAGLIB_EXPORT __attribute__ ((visibility("default"))) 39 | #else 40 | #define TAGLIB_EXPORT 41 | #endif 42 | 43 | #endif 44 | -------------------------------------------------------------------------------- /Source_Code/taglib/include/taglib/tdebuglistener.h: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | copyright : (C) 2013 by Tsuda Kageyu 3 | email : tsuda.kageyu@gmail.com 4 | ***************************************************************************/ 5 | 6 | /*************************************************************************** 7 | * This library is free software; you can redistribute it and/or modify * 8 | * it under the terms of the GNU Lesser General Public License version * 9 | * 2.1 as published by the Free Software Foundation. * 10 | * * 11 | * This library is distributed in the hope that it will be useful, but * 12 | * WITHOUT ANY WARRANTY; without even the implied warranty of * 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * 14 | * Lesser General Public License for more details. * 15 | * * 16 | * You should have received a copy of the GNU Lesser General Public * 17 | * License along with this library; if not, write to the Free Software * 18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 19 | * 02110-1301 USA * 20 | * * 21 | * Alternatively, this file is available under the Mozilla Public * 22 | * License Version 1.1. You may obtain a copy of the License at * 23 | * http://www.mozilla.org/MPL/ * 24 | ***************************************************************************/ 25 | 26 | #ifndef TAGLIB_DEBUGLISTENER_H 27 | #define TAGLIB_DEBUGLISTENER_H 28 | 29 | #include "taglib_export.h" 30 | #include "tstring.h" 31 | 32 | namespace TagLib 33 | { 34 | //! An abstraction for the listener to the debug messages. 35 | 36 | /*! 37 | * This class enables you to handle the debug messages in your preferred 38 | * way by subclassing this class, reimplementing printMessage() and setting 39 | * your reimplementation as the default with setDebugListener(). 40 | * 41 | * \see setDebugListener() 42 | */ 43 | class TAGLIB_EXPORT DebugListener 44 | { 45 | public: 46 | DebugListener(); 47 | virtual ~DebugListener(); 48 | 49 | /*! 50 | * When overridden in a derived class, redirects \a msg to your preferred 51 | * channel such as stderr, Windows debugger or so forth. 52 | */ 53 | virtual void printMessage(const String &msg) = 0; 54 | 55 | private: 56 | // Noncopyable 57 | DebugListener(const DebugListener &); 58 | DebugListener &operator=(const DebugListener &); 59 | }; 60 | 61 | /*! 62 | * Sets the listener that decides how the debug messages are redirected. 63 | * If the parameter \a listener is null, the previous listener is released 64 | * and default stderr listener is restored. 65 | * 66 | * \note The caller is responsible for deleting the previous listener 67 | * as needed after it is released. 68 | * 69 | * \see DebugListener 70 | */ 71 | TAGLIB_EXPORT void setDebugListener(DebugListener *listener); 72 | } 73 | 74 | #endif 75 | -------------------------------------------------------------------------------- /Source_Code/taglib/include/taglib/unknownframe.h: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | copyright : (C) 2002 - 2008 by Scott Wheeler 3 | email : wheeler@kde.org 4 | ***************************************************************************/ 5 | 6 | /*************************************************************************** 7 | * This library is free software; you can redistribute it and/or modify * 8 | * it under the terms of the GNU Lesser General Public License version * 9 | * 2.1 as published by the Free Software Foundation. * 10 | * * 11 | * This library is distributed in the hope that it will be useful, but * 12 | * WITHOUT ANY WARRANTY; without even the implied warranty of * 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * 14 | * Lesser General Public License for more details. * 15 | * * 16 | * You should have received a copy of the GNU Lesser General Public * 17 | * License along with this library; if not, write to the Free Software * 18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 19 | * 02110-1301 USA * 20 | * * 21 | * Alternatively, this file is available under the Mozilla Public * 22 | * License Version 1.1. You may obtain a copy of the License at * 23 | * http://www.mozilla.org/MPL/ * 24 | ***************************************************************************/ 25 | 26 | #ifndef TAGLIB_UNKNOWNFRAME_H 27 | #define TAGLIB_UNKNOWNFRAME_H 28 | 29 | #include "id3v2frame.h" 30 | #include "taglib_export.h" 31 | 32 | namespace TagLib { 33 | 34 | namespace ID3v2 { 35 | 36 | //! A frame type \e unknown to TagLib. 37 | 38 | /*! 39 | * This class represents a frame type not known (or more often simply 40 | * unimplemented) in TagLib. This is here provide a basic API for 41 | * manipulating the binary data of unknown frames and to provide a means 42 | * of rendering such \e unknown frames. 43 | * 44 | * Please note that a cleaner way of handling frame types that TagLib 45 | * does not understand is to subclass ID3v2::Frame and ID3v2::FrameFactory 46 | * to have your frame type supported through the standard ID3v2 mechanism. 47 | */ 48 | 49 | class TAGLIB_EXPORT UnknownFrame : public Frame 50 | { 51 | friend class FrameFactory; 52 | 53 | public: 54 | UnknownFrame(const ByteVector &data); 55 | virtual ~UnknownFrame(); 56 | 57 | virtual String toString() const; 58 | 59 | /*! 60 | * Returns the field data (everything but the header) for this frame. 61 | */ 62 | ByteVector data() const; 63 | 64 | protected: 65 | virtual void parseFields(const ByteVector &data); 66 | virtual ByteVector renderFields() const; 67 | 68 | private: 69 | UnknownFrame(const ByteVector &data, Header *h); 70 | UnknownFrame(const UnknownFrame &); 71 | UnknownFrame &operator=(const UnknownFrame &); 72 | 73 | class UnknownFramePrivate; 74 | UnknownFramePrivate *d; 75 | }; 76 | 77 | } 78 | } 79 | #endif 80 | -------------------------------------------------------------------------------- /Source_Code/taglib/lib/libtag.so: -------------------------------------------------------------------------------- 1 | libtag.so.1 -------------------------------------------------------------------------------- /Source_Code/taglib/lib/libtag.so.1: -------------------------------------------------------------------------------- 1 | libtag.so.1.17.0 -------------------------------------------------------------------------------- /Source_Code/taglib/lib/libtag.so.1.17.0: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/taglib/lib/libtag.so.1.17.0 -------------------------------------------------------------------------------- /Source_Code/taglib/lib/libtag_c.so: -------------------------------------------------------------------------------- 1 | libtag_c.so.0 -------------------------------------------------------------------------------- /Source_Code/taglib/lib/libtag_c.so.0: -------------------------------------------------------------------------------- 1 | libtag_c.so.0.0.0 -------------------------------------------------------------------------------- /Source_Code/taglib/lib/libtag_c.so.0.0.0: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/taglib/lib/libtag_c.so.0.0.0 -------------------------------------------------------------------------------- /Source_Code/taglib/lib/pkgconfig/taglib.pc: -------------------------------------------------------------------------------- 1 | prefix=/usr/local/taglib_1_11_1 2 | exec_prefix=/usr/local/taglib_1_11_1 3 | libdir=/usr/local/taglib_1_11_1/lib 4 | includedir=/usr/local/taglib_1_11_1/include 5 | 6 | Name: TagLib 7 | Description: Audio meta-data library 8 | Requires: 9 | Version: 1.11.1 10 | Libs: -L${libdir} -ltag 11 | Cflags: -I${includedir}/taglib 12 | -------------------------------------------------------------------------------- /Source_Code/taglib/lib/pkgconfig/taglib_c.pc: -------------------------------------------------------------------------------- 1 | prefix=/usr/local/taglib_1_11_1 2 | exec_prefix=/usr/local/taglib_1_11_1 3 | libdir=/usr/local/taglib_1_11_1/lib 4 | includedir=/usr/local/taglib_1_11_1/include 5 | 6 | 7 | Name: TagLib C Bindings 8 | Description: Audio meta-data library (C bindings) 9 | Requires: taglib 10 | Version: 1.11.1 11 | Libs: -L/usr/local/taglib_1_11_1/lib -ltag_c 12 | Cflags: -I/usr/local/taglib_1_11_1/include/taglib 13 | -------------------------------------------------------------------------------- /Source_Code/taglib/mod/modfilebase.h: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | copyright : (C) 2011 by Mathias Panzenböck 3 | email : grosser.meister.morti@gmx.net 4 | ***************************************************************************/ 5 | 6 | /*************************************************************************** 7 | * This library is free software; you can redistribute it and/or modify * 8 | * it under the terms of the GNU Lesser General Public License version * 9 | * 2.1 as published by the Free Software Foundation. * 10 | * * 11 | * This library is distributed in the hope that it will be useful, but * 12 | * WITHOUT ANY WARRANTY; without even the implied warranty of * 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * 14 | * Lesser General Public License for more details. * 15 | * * 16 | * You should have received a copy of the GNU Lesser General Public * 17 | * License along with this library; if not, write to the Free Software * 18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 19 | * 02110-1301 USA * 20 | * * 21 | * Alternatively, this file is available under the Mozilla Public * 22 | * License Version 1.1. You may obtain a copy of the License at * 23 | * http://www.mozilla.org/MPL/ * 24 | ***************************************************************************/ 25 | 26 | #ifndef TAGLIB_MODFILEBASE_H 27 | #define TAGLIB_MODFILEBASE_H 28 | 29 | #include "taglib.h" 30 | #include "tfile.h" 31 | #include "tstring.h" 32 | #include "tlist.h" 33 | #include "taglib_export.h" 34 | 35 | #include 36 | 37 | namespace TagLib { 38 | 39 | namespace Mod { 40 | 41 | class TAGLIB_EXPORT FileBase : public TagLib::File 42 | { 43 | protected: 44 | FileBase(FileName file); 45 | FileBase(IOStream *stream); 46 | 47 | void writeString(const String &s, unsigned long size, char padding = 0); 48 | void writeByte(unsigned char byte); 49 | void writeU16L(unsigned short number); 50 | void writeU32L(unsigned long number); 51 | void writeU16B(unsigned short number); 52 | void writeU32B(unsigned long number); 53 | 54 | bool readString(String &s, unsigned long size); 55 | bool readByte(unsigned char &byte); 56 | bool readU16L(unsigned short &number); 57 | bool readU32L(unsigned long &number); 58 | bool readU16B(unsigned short &number); 59 | bool readU32B(unsigned long &number); 60 | }; 61 | 62 | } 63 | 64 | } 65 | 66 | #endif 67 | -------------------------------------------------------------------------------- /Source_Code/taglib/mod/modfileprivate.h: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | copyright : (C) 2011 by Mathias Panzenböck 3 | email : grosser.meister.morti@gmx.net 4 | ***************************************************************************/ 5 | 6 | /*************************************************************************** 7 | * This library is free software; you can redistribute it and/or modify * 8 | * it under the terms of the GNU Lesser General Public License version * 9 | * 2.1 as published by the Free Software Foundation. * 10 | * * 11 | * This library is distributed in the hope that it will be useful, but * 12 | * WITHOUT ANY WARRANTY; without even the implied warranty of * 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * 14 | * Lesser General Public License for more details. * 15 | * * 16 | * You should have received a copy of the GNU Lesser General Public * 17 | * License along with this library; if not, write to the Free Software * 18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * 19 | * MA 02110-1301 USA * 20 | ***************************************************************************/ 21 | 22 | #ifndef TAGLIB_MODFILEPRIVATE_H 23 | #define TAGLIB_MODFILEPRIVATE_H 24 | 25 | // some helper-macros only used internally by (s3m|it|xm)file.cpp 26 | #define READ_ASSERT(cond) \ 27 | if(!(cond)) \ 28 | { \ 29 | setValid(false); \ 30 | return; \ 31 | } 32 | 33 | #define READ(setter,type,read) \ 34 | { \ 35 | type number; \ 36 | READ_ASSERT(read(number)); \ 37 | setter(number); \ 38 | } 39 | 40 | #define READ_BYTE(setter) READ(setter,unsigned char,readByte) 41 | #define READ_U16L(setter) READ(setter,unsigned short,readU16L) 42 | #define READ_U32L(setter) READ(setter,unsigned long,readU32L) 43 | #define READ_U16B(setter) READ(setter,unsigned short,readU16B) 44 | #define READ_U32B(setter) READ(setter,unsigned long,readU32B) 45 | 46 | #define READ_STRING(setter,size) \ 47 | { \ 48 | String s; \ 49 | READ_ASSERT(readString(s, size)); \ 50 | setter(s); \ 51 | } 52 | 53 | #define READ_AS(type,name,read) \ 54 | type name = 0; \ 55 | READ_ASSERT(read(name)); 56 | 57 | #define READ_BYTE_AS(name) READ_AS(unsigned char,name,readByte) 58 | #define READ_U16L_AS(name) READ_AS(unsigned short,name,readU16L) 59 | #define READ_U32L_AS(name) READ_AS(unsigned long,name,readU32L) 60 | #define READ_U16B_AS(name) READ_AS(unsigned short,name,readU16B) 61 | #define READ_U32B_AS(name) READ_AS(unsigned long,name,readU32B) 62 | 63 | #define READ_STRING_AS(name,size) \ 64 | String name; \ 65 | READ_ASSERT(readString(name, size)); 66 | 67 | #endif 68 | -------------------------------------------------------------------------------- /Source_Code/taglib/mod/modproperties.h: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | copyright : (C) 2011 by Mathias Panzenböck 3 | email : grosser.meister.morti@gmx.net 4 | ***************************************************************************/ 5 | 6 | /*************************************************************************** 7 | * This library is free software; you can redistribute it and/or modify * 8 | * it under the terms of the GNU Lesser General Public License version * 9 | * 2.1 as published by the Free Software Foundation. * 10 | * * 11 | * This library is distributed in the hope that it will be useful, but * 12 | * WITHOUT ANY WARRANTY; without even the implied warranty of * 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * 14 | * Lesser General Public License for more details. * 15 | * * 16 | * You should have received a copy of the GNU Lesser General Public * 17 | * License along with this library; if not, write to the Free Software * 18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 19 | * 02110-1301 USA * 20 | * * 21 | * Alternatively, this file is available under the Mozilla Public * 22 | * License Version 1.1. You may obtain a copy of the License at * 23 | * http://www.mozilla.org/MPL/ * 24 | ***************************************************************************/ 25 | 26 | #ifndef TAGLIB_MODPROPERTIES_H 27 | #define TAGLIB_MODPROPERTIES_H 28 | 29 | #include "taglib.h" 30 | #include "audioproperties.h" 31 | 32 | namespace TagLib { 33 | 34 | namespace Mod { 35 | 36 | class TAGLIB_EXPORT Properties : public AudioProperties 37 | { 38 | public: 39 | Properties(AudioProperties::ReadStyle propertiesStyle); 40 | virtual ~Properties(); 41 | 42 | int length() const; 43 | int lengthInSeconds() const; 44 | int lengthInMilliseconds() const; 45 | int bitrate() const; 46 | int sampleRate() const; 47 | int channels() const; 48 | 49 | unsigned int instrumentCount() const; 50 | unsigned char lengthInPatterns() const; 51 | 52 | void setChannels(int channels); 53 | 54 | void setInstrumentCount(unsigned int sampleCount); 55 | void setLengthInPatterns(unsigned char lengthInPatterns); 56 | 57 | private: 58 | friend class File; 59 | 60 | Properties(const Properties&); 61 | Properties &operator=(const Properties&); 62 | 63 | class PropertiesPrivate; 64 | PropertiesPrivate *d; 65 | }; 66 | 67 | } 68 | 69 | } 70 | 71 | #endif 72 | -------------------------------------------------------------------------------- /Source_Code/taglib/mp4/mp4coverart.cpp: -------------------------------------------------------------------------------- 1 | /************************************************************************** 2 | copyright : (C) 2009 by Lukáš Lalinský 3 | email : lalinsky@gmail.com 4 | **************************************************************************/ 5 | 6 | /*************************************************************************** 7 | * This library is free software; you can redistribute it and/or modify * 8 | * it under the terms of the GNU Lesser General Public License version * 9 | * 2.1 as published by the Free Software Foundation. * 10 | * * 11 | * This library is distributed in the hope that it will be useful, but * 12 | * WITHOUT ANY WARRANTY; without even the implied warranty of * 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * 14 | * Lesser General Public License for more details. * 15 | * * 16 | * You should have received a copy of the GNU Lesser General Public * 17 | * License along with this library; if not, write to the Free Software * 18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 19 | * 02110-1301 USA * 20 | * * 21 | * Alternatively, this file is available under the Mozilla Public * 22 | * License Version 1.1. You may obtain a copy of the License at * 23 | * http://www.mozilla.org/MPL/ * 24 | ***************************************************************************/ 25 | 26 | #include 27 | #include 28 | #include "trefcounter.h" 29 | #include "mp4coverart.h" 30 | 31 | using namespace TagLib; 32 | 33 | class MP4::CoverArt::CoverArtPrivate : public RefCounter 34 | { 35 | public: 36 | CoverArtPrivate() : 37 | RefCounter(), 38 | format(MP4::CoverArt::JPEG) {} 39 | 40 | Format format; 41 | ByteVector data; 42 | }; 43 | 44 | //////////////////////////////////////////////////////////////////////////////// 45 | // public members 46 | //////////////////////////////////////////////////////////////////////////////// 47 | 48 | MP4::CoverArt::CoverArt(Format format, const ByteVector &data) : 49 | d(new CoverArtPrivate()) 50 | { 51 | d->format = format; 52 | d->data = data; 53 | } 54 | 55 | MP4::CoverArt::CoverArt(const CoverArt &item) : 56 | d(item.d) 57 | { 58 | d->ref(); 59 | } 60 | 61 | MP4::CoverArt & 62 | MP4::CoverArt::operator=(const CoverArt &item) 63 | { 64 | CoverArt(item).swap(*this); 65 | return *this; 66 | } 67 | 68 | void 69 | MP4::CoverArt::swap(CoverArt &item) 70 | { 71 | using std::swap; 72 | 73 | swap(d, item.d); 74 | } 75 | 76 | MP4::CoverArt::~CoverArt() 77 | { 78 | if(d->deref()) { 79 | delete d; 80 | } 81 | } 82 | 83 | MP4::CoverArt::Format 84 | MP4::CoverArt::format() const 85 | { 86 | return d->format; 87 | } 88 | 89 | ByteVector 90 | MP4::CoverArt::data() const 91 | { 92 | return d->data; 93 | } 94 | -------------------------------------------------------------------------------- /Source_Code/taglib/mp4/mp4coverart.h: -------------------------------------------------------------------------------- 1 | /************************************************************************** 2 | copyright : (C) 2009 by Lukáš Lalinský 3 | email : lalinsky@gmail.com 4 | **************************************************************************/ 5 | 6 | /*************************************************************************** 7 | * This library is free software; you can redistribute it and/or modify * 8 | * it under the terms of the GNU Lesser General Public License version * 9 | * 2.1 as published by the Free Software Foundation. * 10 | * * 11 | * This library is distributed in the hope that it will be useful, but * 12 | * WITHOUT ANY WARRANTY; without even the implied warranty of * 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * 14 | * Lesser General Public License for more details. * 15 | * * 16 | * You should have received a copy of the GNU Lesser General Public * 17 | * License along with this library; if not, write to the Free Software * 18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 19 | * 02110-1301 USA * 20 | * * 21 | * Alternatively, this file is available under the Mozilla Public * 22 | * License Version 1.1. You may obtain a copy of the License at * 23 | * http://www.mozilla.org/MPL/ * 24 | ***************************************************************************/ 25 | 26 | #ifndef TAGLIB_MP4COVERART_H 27 | #define TAGLIB_MP4COVERART_H 28 | 29 | #include "tlist.h" 30 | #include "tbytevector.h" 31 | #include "taglib_export.h" 32 | #include "mp4atom.h" 33 | 34 | namespace TagLib { 35 | 36 | namespace MP4 { 37 | 38 | class TAGLIB_EXPORT CoverArt 39 | { 40 | public: 41 | /*! 42 | * This describes the image type. 43 | */ 44 | enum Format { 45 | JPEG = TypeJPEG, 46 | PNG = TypePNG, 47 | BMP = TypeBMP, 48 | GIF = TypeGIF, 49 | Unknown = TypeImplicit, 50 | }; 51 | 52 | CoverArt(Format format, const ByteVector &data); 53 | ~CoverArt(); 54 | 55 | CoverArt(const CoverArt &item); 56 | 57 | /*! 58 | * Copies the contents of \a item into this CoverArt. 59 | */ 60 | CoverArt &operator=(const CoverArt &item); 61 | 62 | /*! 63 | * Exchanges the content of the CoverArt by the content of \a item. 64 | */ 65 | void swap(CoverArt &item); 66 | 67 | //! Format of the image 68 | Format format() const; 69 | 70 | //! The image data 71 | ByteVector data() const; 72 | 73 | private: 74 | class CoverArtPrivate; 75 | CoverArtPrivate *d; 76 | }; 77 | 78 | typedef List CoverArtList; 79 | 80 | } 81 | 82 | } 83 | 84 | #endif 85 | -------------------------------------------------------------------------------- /Source_Code/taglib/mp4/mp4item.h: -------------------------------------------------------------------------------- 1 | /************************************************************************** 2 | copyright : (C) 2007 by Lukáš Lalinský 3 | email : lalinsky@gmail.com 4 | **************************************************************************/ 5 | 6 | /*************************************************************************** 7 | * This library is free software; you can redistribute it and/or modify * 8 | * it under the terms of the GNU Lesser General Public License version * 9 | * 2.1 as published by the Free Software Foundation. * 10 | * * 11 | * This library is distributed in the hope that it will be useful, but * 12 | * WITHOUT ANY WARRANTY; without even the implied warranty of * 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * 14 | * Lesser General Public License for more details. * 15 | * * 16 | * You should have received a copy of the GNU Lesser General Public * 17 | * License along with this library; if not, write to the Free Software * 18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 19 | * 02110-1301 USA * 20 | * * 21 | * Alternatively, this file is available under the Mozilla Public * 22 | * License Version 1.1. You may obtain a copy of the License at * 23 | * http://www.mozilla.org/MPL/ * 24 | ***************************************************************************/ 25 | 26 | #ifndef TAGLIB_MP4ITEM_H 27 | #define TAGLIB_MP4ITEM_H 28 | 29 | #include "tstringlist.h" 30 | #include "mp4coverart.h" 31 | #include "taglib_export.h" 32 | 33 | namespace TagLib { 34 | 35 | namespace MP4 { 36 | 37 | class TAGLIB_EXPORT Item 38 | { 39 | public: 40 | struct IntPair { 41 | int first, second; 42 | }; 43 | 44 | Item(); 45 | Item(const Item &item); 46 | 47 | /*! 48 | * Copies the contents of \a item into this Item. 49 | */ 50 | Item &operator=(const Item &item); 51 | 52 | /*! 53 | * Exchanges the content of the Item by the content of \a item. 54 | */ 55 | void swap(Item &item); 56 | 57 | ~Item(); 58 | 59 | Item(int value); 60 | Item(unsigned char value); 61 | Item(unsigned int value); 62 | Item(long long value); 63 | Item(bool value); 64 | Item(int first, int second); 65 | Item(const StringList &value); 66 | Item(const ByteVectorList &value); 67 | Item(const CoverArtList &value); 68 | 69 | void setAtomDataType(AtomDataType type); 70 | AtomDataType atomDataType() const; 71 | 72 | int toInt() const; 73 | unsigned char toByte() const; 74 | unsigned int toUInt() const; 75 | long long toLongLong() const; 76 | bool toBool() const; 77 | IntPair toIntPair() const; 78 | StringList toStringList() const; 79 | ByteVectorList toByteVectorList() const; 80 | CoverArtList toCoverArtList() const; 81 | 82 | bool isValid() const; 83 | 84 | private: 85 | class ItemPrivate; 86 | ItemPrivate *d; 87 | }; 88 | 89 | } 90 | 91 | } 92 | 93 | #endif 94 | -------------------------------------------------------------------------------- /Source_Code/taglib/mpeg/id3v1/id3v1genres.h: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | copyright : (C) 2002 - 2008 by Scott Wheeler 3 | email : wheeler@kde.org 4 | ***************************************************************************/ 5 | 6 | /*************************************************************************** 7 | * This library is free software; you can redistribute it and/or modify * 8 | * it under the terms of the GNU Lesser General Public License version * 9 | * 2.1 as published by the Free Software Foundation. * 10 | * * 11 | * This library is distributed in the hope that it will be useful, but * 12 | * WITHOUT ANY WARRANTY; without even the implied warranty of * 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * 14 | * Lesser General Public License for more details. * 15 | * * 16 | * You should have received a copy of the GNU Lesser General Public * 17 | * License along with this library; if not, write to the Free Software * 18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 19 | * 02110-1301 USA * 20 | * * 21 | * Alternatively, this file is available under the Mozilla Public * 22 | * License Version 1.1. You may obtain a copy of the License at * 23 | * http://www.mozilla.org/MPL/ * 24 | ***************************************************************************/ 25 | 26 | #ifndef TAGLIB_ID3V1GENRE_H 27 | #define TAGLIB_ID3V1GENRE_H 28 | 29 | #include "tmap.h" 30 | #include "tstringlist.h" 31 | #include "taglib_export.h" 32 | 33 | namespace TagLib { 34 | namespace ID3v1 { 35 | 36 | typedef Map GenreMap; 37 | 38 | /*! 39 | * Returns the list of canonical ID3v1 genre names in the order that they 40 | * are listed in the standard. 41 | */ 42 | StringList TAGLIB_EXPORT genreList(); 43 | 44 | /*! 45 | * A "reverse mapping" that goes from the canonical ID3v1 genre name to the 46 | * respective genre number. genreMap()["Rock"] == 47 | */ 48 | GenreMap TAGLIB_EXPORT genreMap(); 49 | 50 | /*! 51 | * Returns the name of the genre at \a index in the ID3v1 genre list. If 52 | * \a index is out of range -- less than zero or greater than 191 -- a null 53 | * string will be returned. 54 | */ 55 | String TAGLIB_EXPORT genre(int index); 56 | 57 | /*! 58 | * Returns the genre index for the (case sensitive) genre \a name. If the 59 | * genre is not in the list 255 (which signifies an unknown genre in ID3v1) 60 | * will be returned. 61 | */ 62 | int TAGLIB_EXPORT genreIndex(const String &name); 63 | } 64 | } 65 | 66 | #endif 67 | -------------------------------------------------------------------------------- /Source_Code/taglib/mpeg/id3v2/frames/podcastframe.cpp: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | copyright : (C) 2015 by Urs Fleisch 3 | email : ufleisch@users.sourceforge.net 4 | ***************************************************************************/ 5 | 6 | /*************************************************************************** 7 | * This library is free software; you can redistribute it and/or modify * 8 | * it under the terms of the GNU Lesser General Public License version * 9 | * 2.1 as published by the Free Software Foundation. * 10 | * * 11 | * This library is distributed in the hope that it will be useful, but * 12 | * WITHOUT ANY WARRANTY; without even the implied warranty of * 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * 14 | * Lesser General Public License for more details. * 15 | * * 16 | * You should have received a copy of the GNU Lesser General Public * 17 | * License along with this library; if not, write to the Free Software * 18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 19 | * 02110-1301 USA * 20 | * * 21 | * Alternatively, this file is available under the Mozilla Public * 22 | * License Version 1.1. You may obtain a copy of the License at * 23 | * http://www.mozilla.org/MPL/ * 24 | ***************************************************************************/ 25 | 26 | #include "podcastframe.h" 27 | 28 | using namespace TagLib; 29 | using namespace ID3v2; 30 | 31 | class PodcastFrame::PodcastFramePrivate 32 | { 33 | public: 34 | ByteVector fieldData; 35 | }; 36 | 37 | //////////////////////////////////////////////////////////////////////////////// 38 | // public members 39 | //////////////////////////////////////////////////////////////////////////////// 40 | 41 | PodcastFrame::PodcastFrame() : Frame("PCST") 42 | { 43 | d = new PodcastFramePrivate; 44 | d->fieldData = ByteVector(4, '\0'); 45 | } 46 | 47 | PodcastFrame::~PodcastFrame() 48 | { 49 | delete d; 50 | } 51 | 52 | String PodcastFrame::toString() const 53 | { 54 | return String(); 55 | } 56 | 57 | //////////////////////////////////////////////////////////////////////////////// 58 | // protected members 59 | //////////////////////////////////////////////////////////////////////////////// 60 | 61 | void PodcastFrame::parseFields(const ByteVector &data) 62 | { 63 | d->fieldData = data; 64 | } 65 | 66 | ByteVector PodcastFrame::renderFields() const 67 | { 68 | return d->fieldData; 69 | } 70 | 71 | //////////////////////////////////////////////////////////////////////////////// 72 | // private members 73 | //////////////////////////////////////////////////////////////////////////////// 74 | 75 | PodcastFrame::PodcastFrame(const ByteVector &data, Header *h) : Frame(h) 76 | { 77 | d = new PodcastFramePrivate; 78 | parseFields(fieldData(data)); 79 | } 80 | -------------------------------------------------------------------------------- /Source_Code/taglib/mpeg/id3v2/frames/podcastframe.h: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | copyright : (C) 2015 by Urs Fleisch 3 | email : ufleisch@users.sourceforge.net 4 | ***************************************************************************/ 5 | 6 | /*************************************************************************** 7 | * This library is free software; you can redistribute it and/or modify * 8 | * it under the terms of the GNU Lesser General Public License version * 9 | * 2.1 as published by the Free Software Foundation. * 10 | * * 11 | * This library is distributed in the hope that it will be useful, but * 12 | * WITHOUT ANY WARRANTY; without even the implied warranty of * 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * 14 | * Lesser General Public License for more details. * 15 | * * 16 | * You should have received a copy of the GNU Lesser General Public * 17 | * License along with this library; if not, write to the Free Software * 18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 19 | * 02110-1301 USA * 20 | * * 21 | * Alternatively, this file is available under the Mozilla Public * 22 | * License Version 1.1. You may obtain a copy of the License at * 23 | * http://www.mozilla.org/MPL/ * 24 | ***************************************************************************/ 25 | 26 | #ifndef TAGLIB_PODCASTFRAME_H 27 | #define TAGLIB_PODCASTFRAME_H 28 | 29 | #include "id3v2frame.h" 30 | #include "taglib_export.h" 31 | 32 | namespace TagLib { 33 | 34 | namespace ID3v2 { 35 | 36 | //! ID3v2 podcast frame 37 | /*! 38 | * An implementation of ID3v2 podcast flag, a frame with four zero bytes. 39 | */ 40 | class TAGLIB_EXPORT PodcastFrame : public Frame 41 | { 42 | friend class FrameFactory; 43 | 44 | public: 45 | /*! 46 | * Construct a podcast frame. 47 | */ 48 | PodcastFrame(); 49 | 50 | /*! 51 | * Destroys this PodcastFrame instance. 52 | */ 53 | virtual ~PodcastFrame(); 54 | 55 | /*! 56 | * Returns a null string. 57 | */ 58 | virtual String toString() const; 59 | 60 | protected: 61 | // Reimplementations. 62 | 63 | virtual void parseFields(const ByteVector &data); 64 | virtual ByteVector renderFields() const; 65 | 66 | private: 67 | /*! 68 | * The constructor used by the FrameFactory. 69 | */ 70 | PodcastFrame(const ByteVector &data, Header *h); 71 | PodcastFrame(const PodcastFrame &); 72 | PodcastFrame &operator=(const PodcastFrame &); 73 | 74 | class PodcastFramePrivate; 75 | PodcastFramePrivate *d; 76 | }; 77 | 78 | } 79 | } 80 | #endif 81 | -------------------------------------------------------------------------------- /Source_Code/taglib/mpeg/id3v2/frames/unknownframe.cpp: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | copyright : (C) 2002 - 2008 by Scott Wheeler 3 | email : wheeler@kde.org 4 | ***************************************************************************/ 5 | 6 | /*************************************************************************** 7 | * This library is free software; you can redistribute it and/or modify * 8 | * it under the terms of the GNU Lesser General Public License version * 9 | * 2.1 as published by the Free Software Foundation. * 10 | * * 11 | * This library is distributed in the hope that it will be useful, but * 12 | * WITHOUT ANY WARRANTY; without even the implied warranty of * 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * 14 | * Lesser General Public License for more details. * 15 | * * 16 | * You should have received a copy of the GNU Lesser General Public * 17 | * License along with this library; if not, write to the Free Software * 18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 19 | * 02110-1301 USA * 20 | * * 21 | * Alternatively, this file is available under the Mozilla Public * 22 | * License Version 1.1. You may obtain a copy of the License at * 23 | * http://www.mozilla.org/MPL/ * 24 | ***************************************************************************/ 25 | 26 | #include "unknownframe.h" 27 | 28 | using namespace TagLib; 29 | using namespace ID3v2; 30 | 31 | class UnknownFrame::UnknownFramePrivate 32 | { 33 | public: 34 | ByteVector fieldData; 35 | }; 36 | 37 | //////////////////////////////////////////////////////////////////////////////// 38 | // public members 39 | //////////////////////////////////////////////////////////////////////////////// 40 | 41 | UnknownFrame::UnknownFrame(const ByteVector &data) : Frame(data) 42 | { 43 | d = new UnknownFramePrivate; 44 | setData(data); 45 | } 46 | 47 | UnknownFrame::~UnknownFrame() 48 | { 49 | delete d; 50 | } 51 | 52 | String UnknownFrame::toString() const 53 | { 54 | return String(); 55 | } 56 | 57 | ByteVector UnknownFrame::data() const 58 | { 59 | return d->fieldData; 60 | } 61 | 62 | //////////////////////////////////////////////////////////////////////////////// 63 | // protected members 64 | //////////////////////////////////////////////////////////////////////////////// 65 | 66 | void UnknownFrame::parseFields(const ByteVector &data) 67 | { 68 | d->fieldData = data; 69 | } 70 | 71 | ByteVector UnknownFrame::renderFields() const 72 | { 73 | return d->fieldData; 74 | } 75 | 76 | //////////////////////////////////////////////////////////////////////////////// 77 | // private members 78 | //////////////////////////////////////////////////////////////////////////////// 79 | 80 | UnknownFrame::UnknownFrame(const ByteVector &data, Header *h) : Frame(h) 81 | { 82 | d = new UnknownFramePrivate; 83 | parseFields(fieldData(data)); 84 | } 85 | -------------------------------------------------------------------------------- /Source_Code/taglib/mpeg/id3v2/frames/unknownframe.h: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | copyright : (C) 2002 - 2008 by Scott Wheeler 3 | email : wheeler@kde.org 4 | ***************************************************************************/ 5 | 6 | /*************************************************************************** 7 | * This library is free software; you can redistribute it and/or modify * 8 | * it under the terms of the GNU Lesser General Public License version * 9 | * 2.1 as published by the Free Software Foundation. * 10 | * * 11 | * This library is distributed in the hope that it will be useful, but * 12 | * WITHOUT ANY WARRANTY; without even the implied warranty of * 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * 14 | * Lesser General Public License for more details. * 15 | * * 16 | * You should have received a copy of the GNU Lesser General Public * 17 | * License along with this library; if not, write to the Free Software * 18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 19 | * 02110-1301 USA * 20 | * * 21 | * Alternatively, this file is available under the Mozilla Public * 22 | * License Version 1.1. You may obtain a copy of the License at * 23 | * http://www.mozilla.org/MPL/ * 24 | ***************************************************************************/ 25 | 26 | #ifndef TAGLIB_UNKNOWNFRAME_H 27 | #define TAGLIB_UNKNOWNFRAME_H 28 | 29 | #include "id3v2frame.h" 30 | #include "taglib_export.h" 31 | 32 | namespace TagLib { 33 | 34 | namespace ID3v2 { 35 | 36 | //! A frame type \e unknown to TagLib. 37 | 38 | /*! 39 | * This class represents a frame type not known (or more often simply 40 | * unimplemented) in TagLib. This is here provide a basic API for 41 | * manipulating the binary data of unknown frames and to provide a means 42 | * of rendering such \e unknown frames. 43 | * 44 | * Please note that a cleaner way of handling frame types that TagLib 45 | * does not understand is to subclass ID3v2::Frame and ID3v2::FrameFactory 46 | * to have your frame type supported through the standard ID3v2 mechanism. 47 | */ 48 | 49 | class TAGLIB_EXPORT UnknownFrame : public Frame 50 | { 51 | friend class FrameFactory; 52 | 53 | public: 54 | UnknownFrame(const ByteVector &data); 55 | virtual ~UnknownFrame(); 56 | 57 | virtual String toString() const; 58 | 59 | /*! 60 | * Returns the field data (everything but the header) for this frame. 61 | */ 62 | ByteVector data() const; 63 | 64 | protected: 65 | virtual void parseFields(const ByteVector &data); 66 | virtual ByteVector renderFields() const; 67 | 68 | private: 69 | UnknownFrame(const ByteVector &data, Header *h); 70 | UnknownFrame(const UnknownFrame &); 71 | UnknownFrame &operator=(const UnknownFrame &); 72 | 73 | class UnknownFramePrivate; 74 | UnknownFramePrivate *d; 75 | }; 76 | 77 | } 78 | } 79 | #endif 80 | -------------------------------------------------------------------------------- /Source_Code/taglib/mpeg/id3v2/id3v2.2.0.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/taglib/mpeg/id3v2/id3v2.2.0.txt -------------------------------------------------------------------------------- /Source_Code/taglib/mpeg/id3v2/id3v2.3.0.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/taglib/mpeg/id3v2/id3v2.3.0.txt -------------------------------------------------------------------------------- /Source_Code/taglib/mpeg/id3v2/id3v2.4.0-frames.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/taglib/mpeg/id3v2/id3v2.4.0-frames.txt -------------------------------------------------------------------------------- /Source_Code/taglib/mpeg/id3v2/id3v2.4.0-structure.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/Source_Code/taglib/mpeg/id3v2/id3v2.4.0-structure.txt -------------------------------------------------------------------------------- /Source_Code/taglib/mpeg/id3v2/id3v2extendedheader.cpp: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | copyright : (C) 2002 - 2008 by Scott Wheeler 3 | email : wheeler@kde.org 4 | ***************************************************************************/ 5 | 6 | /*************************************************************************** 7 | * This library is free software; you can redistribute it and/or modify * 8 | * it under the terms of the GNU Lesser General Public License version * 9 | * 2.1 as published by the Free Software Foundation. * 10 | * * 11 | * This library is distributed in the hope that it will be useful, but * 12 | * WITHOUT ANY WARRANTY; without even the implied warranty of * 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * 14 | * Lesser General Public License for more details. * 15 | * * 16 | * You should have received a copy of the GNU Lesser General Public * 17 | * License along with this library; if not, write to the Free Software * 18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 19 | * 02110-1301 USA * 20 | * * 21 | * Alternatively, this file is available under the Mozilla Public * 22 | * License Version 1.1. You may obtain a copy of the License at * 23 | * http://www.mozilla.org/MPL/ * 24 | ***************************************************************************/ 25 | 26 | #include "id3v2extendedheader.h" 27 | #include "id3v2synchdata.h" 28 | 29 | using namespace TagLib; 30 | using namespace ID3v2; 31 | 32 | class ExtendedHeader::ExtendedHeaderPrivate 33 | { 34 | public: 35 | ExtendedHeaderPrivate() : size(0) {} 36 | 37 | unsigned int size; 38 | }; 39 | 40 | //////////////////////////////////////////////////////////////////////////////// 41 | // public methods 42 | //////////////////////////////////////////////////////////////////////////////// 43 | 44 | ExtendedHeader::ExtendedHeader() 45 | { 46 | d = new ExtendedHeaderPrivate(); 47 | } 48 | 49 | ExtendedHeader::~ExtendedHeader() 50 | { 51 | delete d; 52 | } 53 | 54 | unsigned int ExtendedHeader::size() const 55 | { 56 | return d->size; 57 | } 58 | 59 | void ExtendedHeader::setData(const ByteVector &data) 60 | { 61 | parse(data); 62 | } 63 | 64 | //////////////////////////////////////////////////////////////////////////////// 65 | // protected members 66 | //////////////////////////////////////////////////////////////////////////////// 67 | 68 | void ExtendedHeader::parse(const ByteVector &data) 69 | { 70 | d->size = SynchData::toUInt(data.mid(0, 4)); // (structure 3.2 "Extended header size") 71 | } 72 | -------------------------------------------------------------------------------- /Source_Code/taglib/mpeg/id3v2/id3v2footer.cpp: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | copyright : (C) 2002 - 2008 by Scott Wheeler 3 | email : wheeler@kde.org 4 | ***************************************************************************/ 5 | 6 | /*************************************************************************** 7 | * This library is free software; you can redistribute it and/or modify * 8 | * it under the terms of the GNU Lesser General Public License version * 9 | * 2.1 as published by the Free Software Foundation. * 10 | * * 11 | * This library is distributed in the hope that it will be useful, but * 12 | * WITHOUT ANY WARRANTY; without even the implied warranty of * 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * 14 | * Lesser General Public License for more details. * 15 | * * 16 | * You should have received a copy of the GNU Lesser General Public * 17 | * License along with this library; if not, write to the Free Software * 18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 19 | * 02110-1301 USA * 20 | * * 21 | * Alternatively, this file is available under the Mozilla Public * 22 | * License Version 1.1. You may obtain a copy of the License at * 23 | * http://www.mozilla.org/MPL/ * 24 | ***************************************************************************/ 25 | 26 | #include "id3v2footer.h" 27 | #include "id3v2header.h" 28 | 29 | using namespace TagLib; 30 | using namespace ID3v2; 31 | 32 | class Footer::FooterPrivate 33 | { 34 | }; 35 | 36 | Footer::Footer() : 37 | d(0) 38 | { 39 | } 40 | 41 | Footer::~Footer() 42 | { 43 | } 44 | 45 | unsigned int Footer::size() 46 | { 47 | return 10; 48 | } 49 | 50 | ByteVector Footer::render(const Header *header) const 51 | { 52 | ByteVector headerData = header->render(); 53 | headerData[0] = '3'; 54 | headerData[1] = 'D'; 55 | headerData[2] = 'I'; 56 | return headerData; 57 | } 58 | -------------------------------------------------------------------------------- /Source_Code/taglib/mpeg/id3v2/id3v2footer.h: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | copyright : (C) 2002 - 2008 by Scott Wheeler 3 | email : wheeler@kde.org 4 | ***************************************************************************/ 5 | 6 | /*************************************************************************** 7 | * This library is free software; you can redistribute it and/or modify * 8 | * it under the terms of the GNU Lesser General Public License version * 9 | * 2.1 as published by the Free Software Foundation. * 10 | * * 11 | * This library is distributed in the hope that it will be useful, but * 12 | * WITHOUT ANY WARRANTY; without even the implied warranty of * 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * 14 | * Lesser General Public License for more details. * 15 | * * 16 | * You should have received a copy of the GNU Lesser General Public * 17 | * License along with this library; if not, write to the Free Software * 18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 19 | * 02110-1301 USA * 20 | * * 21 | * Alternatively, this file is available under the Mozilla Public * 22 | * License Version 1.1. You may obtain a copy of the License at * 23 | * http://www.mozilla.org/MPL/ * 24 | ***************************************************************************/ 25 | 26 | #ifndef TAGLIB_ID3V2FOOTER_H 27 | #define TAGLIB_ID3V2FOOTER_H 28 | 29 | #include "taglib_export.h" 30 | #include "tbytevector.h" 31 | 32 | namespace TagLib { 33 | 34 | namespace ID3v2 { 35 | 36 | class Header; 37 | 38 | //! ID3v2 footer implementation 39 | 40 | /*! 41 | * Per the ID3v2 specification, the tag's footer is just a copy of the 42 | * information in the header. As such there is no API for reading the 43 | * data from the header, it can just as easily be done from the header. 44 | * 45 | * In fact, at this point, TagLib does not even parse the footer since 46 | * it is not useful internally. However, if the flag to include a footer 47 | * has been set in the ID3v2::Tag, TagLib will render a footer. 48 | */ 49 | 50 | class TAGLIB_EXPORT Footer 51 | { 52 | public: 53 | /*! 54 | * Constructs an empty ID3v2 footer. 55 | */ 56 | Footer(); 57 | /*! 58 | * Destroys the footer. 59 | */ 60 | virtual ~Footer(); 61 | 62 | /*! 63 | * Returns the size of the footer. Presently this is always 10 bytes. 64 | */ 65 | static unsigned int size(); 66 | 67 | /*! 68 | * Renders the footer based on the data in \a header. 69 | */ 70 | ByteVector render(const Header *header) const; 71 | 72 | private: 73 | Footer(const Footer &); 74 | Footer &operator=(const Footer &); 75 | 76 | class FooterPrivate; 77 | FooterPrivate *d; 78 | }; 79 | 80 | } 81 | } 82 | #endif 83 | -------------------------------------------------------------------------------- /Source_Code/taglib/mpeg/id3v2/id3v2synchdata.h: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | copyright : (C) 2002 - 2008 by Scott Wheeler 3 | email : wheeler@kde.org 4 | ***************************************************************************/ 5 | 6 | /*************************************************************************** 7 | * This library is free software; you can redistribute it and/or modify * 8 | * it under the terms of the GNU Lesser General Public License version * 9 | * 2.1 as published by the Free Software Foundation. * 10 | * * 11 | * This library is distributed in the hope that it will be useful, but * 12 | * WITHOUT ANY WARRANTY; without even the implied warranty of * 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * 14 | * Lesser General Public License for more details. * 15 | * * 16 | * You should have received a copy of the GNU Lesser General Public * 17 | * License along with this library; if not, write to the Free Software * 18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 19 | * 02110-1301 USA * 20 | * * 21 | * Alternatively, this file is available under the Mozilla Public * 22 | * License Version 1.1. You may obtain a copy of the License at * 23 | * http://www.mozilla.org/MPL/ * 24 | ***************************************************************************/ 25 | 26 | #ifndef TAGLIB_ID3V2SYNCHDATA_H 27 | #define TAGLIB_ID3V2SYNCHDATA_H 28 | 29 | #include "tbytevector.h" 30 | #include "taglib.h" 31 | 32 | namespace TagLib { 33 | 34 | namespace ID3v2 { 35 | 36 | //! A few functions for ID3v2 synch safe integer conversion 37 | 38 | /*! 39 | * In the ID3v2.4 standard most integer values are encoded as "synch safe" 40 | * integers which are encoded in such a way that they will not give false 41 | * MPEG syncs and confuse MPEG decoders. This namespace provides some 42 | * methods for converting to and from these values to ByteVectors for 43 | * things rendering and parsing ID3v2 data. 44 | */ 45 | 46 | namespace SynchData 47 | { 48 | /*! 49 | * This returns the unsigned integer value of \a data where \a data is a 50 | * ByteVector that contains a \e synchsafe integer (Structure, 51 | * 6.2). The default \a length of 52 | * 4 is used if another value is not specified. 53 | */ 54 | TAGLIB_EXPORT unsigned int toUInt(const ByteVector &data); 55 | 56 | /*! 57 | * Returns a 4 byte (32 bit) synchsafe integer based on \a value. 58 | */ 59 | TAGLIB_EXPORT ByteVector fromUInt(unsigned int value); 60 | 61 | /*! 62 | * Convert the data from unsynchronized data to its original format. 63 | */ 64 | TAGLIB_EXPORT ByteVector decode(const ByteVector &input); 65 | } 66 | 67 | } 68 | } 69 | 70 | #endif 71 | -------------------------------------------------------------------------------- /Source_Code/taglib/mpeg/mpegutils.h: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | copyright : (C) 2015 by Tsuda Kageyu 3 | email : tsuda.kageyu@gmail.com 4 | ***************************************************************************/ 5 | 6 | /*************************************************************************** 7 | * This library is free software; you can redistribute it and/or modify * 8 | * it under the terms of the GNU Lesser General Public License version * 9 | * 2.1 as published by the Free Software Foundation. * 10 | * * 11 | * This library is distributed in the hope that it will be useful, but * 12 | * WITHOUT ANY WARRANTY; without even the implied warranty of * 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * 14 | * Lesser General Public License for more details. * 15 | * * 16 | * You should have received a copy of the GNU Lesser General Public * 17 | * License along with this library; if not, write to the Free Software * 18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 19 | * 02110-1301 USA * 20 | * * 21 | * Alternatively, this file is available under the Mozilla Public * 22 | * License Version 1.1. You may obtain a copy of the License at * 23 | * http://www.mozilla.org/MPL/ * 24 | ***************************************************************************/ 25 | 26 | #ifndef TAGLIB_MPEGUTILS_H 27 | #define TAGLIB_MPEGUTILS_H 28 | 29 | // THIS FILE IS NOT A PART OF THE TAGLIB API 30 | 31 | #ifndef DO_NOT_DOCUMENT // tell Doxygen not to document this header 32 | 33 | namespace TagLib 34 | { 35 | namespace MPEG 36 | { 37 | namespace 38 | { 39 | 40 | /*! 41 | * MPEG frames can be recognized by the bit pattern 11111111 111, so the 42 | * first byte is easy to check for, however checking to see if the second byte 43 | * starts with \e 111 is a bit more tricky, hence these functions. 44 | */ 45 | inline bool firstSyncByte(unsigned char byte) 46 | { 47 | return (byte == 0xFF); 48 | } 49 | 50 | inline bool secondSynchByte(unsigned char byte) 51 | { 52 | // 0xFF is possible in theory, but it's very unlikely be a header. 53 | 54 | return (byte != 0xFF && ((byte & 0xE0) == 0xE0)); 55 | } 56 | 57 | } 58 | } 59 | } 60 | 61 | #endif 62 | 63 | #endif 64 | -------------------------------------------------------------------------------- /Source_Code/taglib/riff/riffutils.h: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | copyright : (C) 2015 by Tsuda Kageyu 3 | email : tsuda.kageyu@gmail.com 4 | ***************************************************************************/ 5 | 6 | /*************************************************************************** 7 | * This library is free software; you can redistribute it and/or modify * 8 | * it under the terms of the GNU Lesser General Public License version * 9 | * 2.1 as published by the Free Software Foundation. * 10 | * * 11 | * This library is distributed in the hope that it will be useful, but * 12 | * WITHOUT ANY WARRANTY; without even the implied warranty of * 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * 14 | * Lesser General Public License for more details. * 15 | * * 16 | * You should have received a copy of the GNU Lesser General Public * 17 | * License along with this library; if not, write to the Free Software * 18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 19 | * 02110-1301 USA * 20 | * * 21 | * Alternatively, this file is available under the Mozilla Public * 22 | * License Version 1.1. You may obtain a copy of the License at * 23 | * http://www.mozilla.org/MPL/ * 24 | ***************************************************************************/ 25 | 26 | #ifndef TAGLIB_RIFFUTILS_H 27 | #define TAGLIB_RIFFUTILS_H 28 | 29 | // THIS FILE IS NOT A PART OF THE TAGLIB API 30 | 31 | #ifndef DO_NOT_DOCUMENT // tell Doxygen not to document this header 32 | 33 | namespace TagLib 34 | { 35 | namespace RIFF 36 | { 37 | namespace 38 | { 39 | 40 | inline bool isValidChunkName(const ByteVector &name) 41 | { 42 | if(name.size() != 4) 43 | return false; 44 | 45 | for(ByteVector::ConstIterator it = name.begin(); it != name.end(); ++it) { 46 | const int c = static_cast(*it); 47 | if(c < 32 || 127 < c) 48 | return false; 49 | } 50 | 51 | return true; 52 | } 53 | 54 | } 55 | } 56 | } 57 | 58 | #endif 59 | 60 | #endif 61 | -------------------------------------------------------------------------------- /Source_Code/taglib/taglib_config.h.cmake: -------------------------------------------------------------------------------- 1 | /* taglib_config.h. Generated by cmake from taglib_config.h.cmake */ 2 | 3 | /* These values are no longer used. This file is present only for compatibility reasons. */ 4 | 5 | #define TAGLIB_WITH_ASF 1 6 | #define TAGLIB_WITH_MP4 1 7 | -------------------------------------------------------------------------------- /Source_Code/taglib/taglib_export.h: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | copyright : (C) 2002 - 2008 by Scott Wheeler 3 | email : wheeler@kde.org 4 | ***************************************************************************/ 5 | 6 | /*************************************************************************** 7 | * This library is free software; you can redistribute it and/or modify * 8 | * it under the terms of the GNU Lesser General Public License version * 9 | * 2.1 as published by the Free Software Foundation. * 10 | * * 11 | * This library is distributed in the hope that it will be useful, but * 12 | * WITHOUT ANY WARRANTY; without even the implied warranty of * 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * 14 | * Lesser General Public License for more details. * 15 | * * 16 | * You should have received a copy of the GNU Lesser General Public * 17 | * License along with this library; if not, write to the Free Software * 18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 19 | * 02110-1301 USA * 20 | * * 21 | * Alternatively, this file is available under the Mozilla Public * 22 | * License Version 1.1. You may obtain a copy of the License at * 23 | * http://www.mozilla.org/MPL/ * 24 | ***************************************************************************/ 25 | 26 | #ifndef TAGLIB_EXPORT_H 27 | #define TAGLIB_EXPORT_H 28 | 29 | #if defined(TAGLIB_STATIC) 30 | #define TAGLIB_EXPORT 31 | #elif (defined(_WIN32) || defined(_WIN64)) 32 | #ifdef MAKE_TAGLIB_LIB 33 | #define TAGLIB_EXPORT __declspec(dllexport) 34 | #else 35 | #define TAGLIB_EXPORT __declspec(dllimport) 36 | #endif 37 | #elif defined(__GNUC__) && (__GNUC__ > 4 || __GNUC__ == 4 && __GNUC_MINOR__ >= 1) 38 | #define TAGLIB_EXPORT __attribute__ ((visibility("default"))) 39 | #else 40 | #define TAGLIB_EXPORT 41 | #endif 42 | 43 | #endif 44 | -------------------------------------------------------------------------------- /Source_Code/taglib/tagutils.cpp: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | copyright : (C) 2015 by Tsuda Kageyu 3 | email : tsuda.kageyu@gmail.com 4 | ***************************************************************************/ 5 | 6 | /*************************************************************************** 7 | * This library is free software; you can redistribute it and/or modify * 8 | * it under the terms of the GNU Lesser General Public License version * 9 | * 2.1 as published by the Free Software Foundation. * 10 | * * 11 | * This library is distributed in the hope that it will be useful, but * 12 | * WITHOUT ANY WARRANTY; without even the implied warranty of * 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * 14 | * Lesser General Public License for more details. * 15 | * * 16 | * You should have received a copy of the GNU Lesser General Public * 17 | * License along with this library; if not, write to the Free Software * 18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 19 | * 02110-1301 USA * 20 | * * 21 | * Alternatively, this file is available under the Mozilla Public * 22 | * License Version 1.1. You may obtain a copy of the License at * 23 | * http://www.mozilla.org/MPL/ * 24 | ***************************************************************************/ 25 | 26 | #include 27 | 28 | #include "id3v1tag.h" 29 | #include "id3v2header.h" 30 | #include "apetag.h" 31 | 32 | #include "tagutils.h" 33 | 34 | using namespace TagLib; 35 | 36 | long Utils::findID3v1(File *file) 37 | { 38 | if(!file->isValid()) 39 | return -1; 40 | 41 | file->seek(-128, File::End); 42 | const long p = file->tell(); 43 | 44 | if(file->readBlock(3) == ID3v1::Tag::fileIdentifier()) 45 | return p; 46 | 47 | return -1; 48 | } 49 | 50 | long Utils::findID3v2(File *file) 51 | { 52 | if(!file->isValid()) 53 | return -1; 54 | 55 | file->seek(0); 56 | 57 | if(file->readBlock(3) == ID3v2::Header::fileIdentifier()) 58 | return 0; 59 | 60 | return -1; 61 | } 62 | 63 | long Utils::findAPE(File *file, long id3v1Location) 64 | { 65 | if(!file->isValid()) 66 | return -1; 67 | 68 | if(id3v1Location >= 0) 69 | file->seek(id3v1Location - 32, File::Beginning); 70 | else 71 | file->seek(-32, File::End); 72 | 73 | const long p = file->tell(); 74 | 75 | if(file->readBlock(8) == APE::Tag::fileIdentifier()) 76 | return p; 77 | 78 | return -1; 79 | } 80 | -------------------------------------------------------------------------------- /Source_Code/taglib/tagutils.h: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | copyright : (C) 2015 by Tsuda Kageyu 3 | email : tsuda.kageyu@gmail.com 4 | ***************************************************************************/ 5 | 6 | /*************************************************************************** 7 | * This library is free software; you can redistribute it and/or modify * 8 | * it under the terms of the GNU Lesser General Public License version * 9 | * 2.1 as published by the Free Software Foundation. * 10 | * * 11 | * This library is distributed in the hope that it will be useful, but * 12 | * WITHOUT ANY WARRANTY; without even the implied warranty of * 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * 14 | * Lesser General Public License for more details. * 15 | * * 16 | * You should have received a copy of the GNU Lesser General Public * 17 | * License along with this library; if not, write to the Free Software * 18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 19 | * 02110-1301 USA * 20 | * * 21 | * Alternatively, this file is available under the Mozilla Public * 22 | * License Version 1.1. You may obtain a copy of the License at * 23 | * http://www.mozilla.org/MPL/ * 24 | ***************************************************************************/ 25 | 26 | #ifndef TAGLIB_TAGUTILS_H 27 | #define TAGLIB_TAGUTILS_H 28 | 29 | // THIS FILE IS NOT A PART OF THE TAGLIB API 30 | 31 | #ifndef DO_NOT_DOCUMENT // tell Doxygen not to document this header 32 | 33 | namespace TagLib { 34 | 35 | class File; 36 | 37 | namespace Utils { 38 | 39 | long findID3v1(File *file); 40 | 41 | long findID3v2(File *file); 42 | 43 | long findAPE(File *file, long id3v1Location); 44 | } 45 | } 46 | 47 | #endif 48 | 49 | #endif 50 | -------------------------------------------------------------------------------- /Source_Code/taglib/toolkit/taglib_config.h: -------------------------------------------------------------------------------- 1 | /* taglib_config.h. Generated by cmake from taglib_config.h.cmake */ 2 | 3 | /* These values are no longer used. This file is present only for compatibility reasons. */ 4 | 5 | #define TAGLIB_WITH_ASF 1 6 | #define TAGLIB_WITH_MP4 1 7 | -------------------------------------------------------------------------------- /Source_Code/taglib/toolkit/tdebug.cpp: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | copyright : (C) 2002 - 2008 by Scott Wheeler 3 | email : wheeler@kde.org 4 | ***************************************************************************/ 5 | 6 | /*************************************************************************** 7 | * This library is free software; you can redistribute it and/or modify * 8 | * it under the terms of the GNU Lesser General Public License version * 9 | * 2.1 as published by the Free Software Foundation. * 10 | * * 11 | * This library is distributed in the hope that it will be useful, but * 12 | * WITHOUT ANY WARRANTY; without even the implied warranty of * 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * 14 | * Lesser General Public License for more details. * 15 | * * 16 | * You should have received a copy of the GNU Lesser General Public * 17 | * License along with this library; if not, write to the Free Software * 18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 19 | * 02110-1301 USA * 20 | * * 21 | * Alternatively, this file is available under the Mozilla Public * 22 | * License Version 1.1. You may obtain a copy of the License at * 23 | * http://www.mozilla.org/MPL/ * 24 | ***************************************************************************/ 25 | 26 | #ifdef HAVE_CONFIG_H 27 | #include 28 | #endif 29 | 30 | #include "tdebug.h" 31 | #include "tstring.h" 32 | #include "tdebuglistener.h" 33 | #include "tutils.h" 34 | 35 | #include 36 | #include 37 | #include 38 | 39 | namespace TagLib 40 | { 41 | // The instance is defined in tdebuglistener.cpp. 42 | extern DebugListener *debugListener; 43 | 44 | void debug(const String &s) 45 | { 46 | #if !defined(NDEBUG) || defined(TRACE_IN_RELEASE) 47 | 48 | debugListener->printMessage("TagLib: " + s + "\n"); 49 | 50 | #endif 51 | } 52 | 53 | void debugData(const ByteVector &v) 54 | { 55 | #if !defined(NDEBUG) || defined(TRACE_IN_RELEASE) 56 | 57 | for(size_t i = 0; i < v.size(); ++i) 58 | { 59 | std::string bits = std::bitset<8>(v[i]).to_string(); 60 | String msg = Utils::formatString( 61 | "*** [%d] - char '%c' - int %d, 0x%02x, 0b%s\n", 62 | i, v[i], v[i], v[i], bits.c_str()); 63 | 64 | debugListener->printMessage(msg); 65 | } 66 | 67 | #endif 68 | } 69 | } 70 | -------------------------------------------------------------------------------- /Source_Code/taglib/toolkit/tdebug.h: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | copyright : (C) 2002 - 2008 by Scott Wheeler 3 | email : wheeler@kde.org 4 | ***************************************************************************/ 5 | 6 | /*************************************************************************** 7 | * This library is free software; you can redistribute it and/or modify * 8 | * it under the terms of the GNU Lesser General Public License version * 9 | * 2.1 as published by the Free Software Foundation. * 10 | * * 11 | * This library is distributed in the hope that it will be useful, but * 12 | * WITHOUT ANY WARRANTY; without even the implied warranty of * 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * 14 | * Lesser General Public License for more details. * 15 | * * 16 | * You should have received a copy of the GNU Lesser General Public * 17 | * License along with this library; if not, write to the Free Software * 18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 19 | * 02110-1301 USA * 20 | * * 21 | * Alternatively, this file is available under the Mozilla Public * 22 | * License Version 1.1. You may obtain a copy of the License at * 23 | * http://www.mozilla.org/MPL/ * 24 | ***************************************************************************/ 25 | 26 | #ifndef TAGLIB_DEBUG_H 27 | #define TAGLIB_DEBUG_H 28 | 29 | namespace TagLib { 30 | 31 | class String; 32 | class ByteVector; 33 | 34 | #ifndef DO_NOT_DOCUMENT 35 | 36 | /*! 37 | * A simple function that outputs the debug messages to the listener. 38 | * The default listener redirects the messages to \a stderr when NDEBUG is 39 | * not defined. 40 | * 41 | * \warning Do not use this outside of TagLib, it could lead to undefined 42 | * symbols in your build if TagLib is built with NDEBUG defined and your 43 | * application is not. 44 | * 45 | * \internal 46 | */ 47 | void debug(const String &s); 48 | 49 | /*! 50 | * For debugging binary data. 51 | * 52 | * \warning Do not use this outside of TagLib, it could lead to undefined 53 | * symbols in your build if TagLib is built with NDEBUG defined and your 54 | * application is not. 55 | * 56 | * \internal 57 | */ 58 | void debugData(const ByteVector &v); 59 | } 60 | 61 | #endif 62 | #endif 63 | -------------------------------------------------------------------------------- /Source_Code/taglib/toolkit/tdebuglistener.cpp: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | copyright : (C) 2013 by Tsuda Kageyu 3 | email : tsuda.kageyu@gmail.com 4 | ***************************************************************************/ 5 | 6 | /*************************************************************************** 7 | * This library is free software; you can redistribute it and/or modify * 8 | * it under the terms of the GNU Lesser General Public License version * 9 | * 2.1 as published by the Free Software Foundation. * 10 | * * 11 | * This library is distributed in the hope that it will be useful, but * 12 | * WITHOUT ANY WARRANTY; without even the implied warranty of * 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * 14 | * Lesser General Public License for more details. * 15 | * * 16 | * You should have received a copy of the GNU Lesser General Public * 17 | * License along with this library; if not, write to the Free Software * 18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 19 | * 02110-1301 USA * 20 | * * 21 | * Alternatively, this file is available under the Mozilla Public * 22 | * License Version 1.1. You may obtain a copy of the License at * 23 | * http://www.mozilla.org/MPL/ * 24 | ***************************************************************************/ 25 | 26 | #include "tdebuglistener.h" 27 | 28 | #include 29 | #include 30 | 31 | #ifdef _WIN32 32 | # include 33 | #endif 34 | 35 | using namespace TagLib; 36 | 37 | namespace 38 | { 39 | class DefaultListener : public DebugListener 40 | { 41 | public: 42 | virtual void printMessage(const String &msg) 43 | { 44 | #ifdef _WIN32 45 | 46 | const wstring wstr = msg.toWString(); 47 | const int len = WideCharToMultiByte(CP_ACP, 0, wstr.c_str(), -1, NULL, 0, NULL, NULL); 48 | if(len != 0) { 49 | std::vector buf(len); 50 | WideCharToMultiByte(CP_ACP, 0, wstr.c_str(), -1, &buf[0], len, NULL, NULL); 51 | 52 | std::cerr << std::string(&buf[0]); 53 | } 54 | 55 | #else 56 | 57 | std::cerr << msg; 58 | 59 | #endif 60 | } 61 | }; 62 | 63 | DefaultListener defaultListener; 64 | } 65 | 66 | namespace TagLib 67 | { 68 | DebugListener *debugListener = &defaultListener; 69 | 70 | DebugListener::DebugListener() 71 | { 72 | } 73 | 74 | DebugListener::~DebugListener() 75 | { 76 | } 77 | 78 | void setDebugListener(DebugListener *listener) 79 | { 80 | if(listener) 81 | debugListener = listener; 82 | else 83 | debugListener = &defaultListener; 84 | } 85 | } 86 | -------------------------------------------------------------------------------- /Source_Code/taglib/toolkit/tdebuglistener.h: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | copyright : (C) 2013 by Tsuda Kageyu 3 | email : tsuda.kageyu@gmail.com 4 | ***************************************************************************/ 5 | 6 | /*************************************************************************** 7 | * This library is free software; you can redistribute it and/or modify * 8 | * it under the terms of the GNU Lesser General Public License version * 9 | * 2.1 as published by the Free Software Foundation. * 10 | * * 11 | * This library is distributed in the hope that it will be useful, but * 12 | * WITHOUT ANY WARRANTY; without even the implied warranty of * 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * 14 | * Lesser General Public License for more details. * 15 | * * 16 | * You should have received a copy of the GNU Lesser General Public * 17 | * License along with this library; if not, write to the Free Software * 18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 19 | * 02110-1301 USA * 20 | * * 21 | * Alternatively, this file is available under the Mozilla Public * 22 | * License Version 1.1. You may obtain a copy of the License at * 23 | * http://www.mozilla.org/MPL/ * 24 | ***************************************************************************/ 25 | 26 | #ifndef TAGLIB_DEBUGLISTENER_H 27 | #define TAGLIB_DEBUGLISTENER_H 28 | 29 | #include "taglib_export.h" 30 | #include "tstring.h" 31 | 32 | namespace TagLib 33 | { 34 | //! An abstraction for the listener to the debug messages. 35 | 36 | /*! 37 | * This class enables you to handle the debug messages in your preferred 38 | * way by subclassing this class, reimplementing printMessage() and setting 39 | * your reimplementation as the default with setDebugListener(). 40 | * 41 | * \see setDebugListener() 42 | */ 43 | class TAGLIB_EXPORT DebugListener 44 | { 45 | public: 46 | DebugListener(); 47 | virtual ~DebugListener(); 48 | 49 | /*! 50 | * When overridden in a derived class, redirects \a msg to your preferred 51 | * channel such as stderr, Windows debugger or so forth. 52 | */ 53 | virtual void printMessage(const String &msg) = 0; 54 | 55 | private: 56 | // Noncopyable 57 | DebugListener(const DebugListener &); 58 | DebugListener &operator=(const DebugListener &); 59 | }; 60 | 61 | /*! 62 | * Sets the listener that decides how the debug messages are redirected. 63 | * If the parameter \a listener is null, the previous listener is released 64 | * and default stderr listener is restored. 65 | * 66 | * \note The caller is responsible for deleting the previous listener 67 | * as needed after it is released. 68 | * 69 | * \see DebugListener 70 | */ 71 | TAGLIB_EXPORT void setDebugListener(DebugListener *listener); 72 | } 73 | 74 | #endif 75 | -------------------------------------------------------------------------------- /Source_Code/taglib/toolkit/tzlib.h: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | copyright : (C) 2016 by Tsuda Kageyu 3 | email : tsuda.kageyu@gmail.com 4 | ***************************************************************************/ 5 | 6 | /*************************************************************************** 7 | * This library is free software; you can redistribute it and/or modify * 8 | * it under the terms of the GNU Lesser General Public License version * 9 | * 2.1 as published by the Free Software Foundation. * 10 | * * 11 | * This library is distributed in the hope that it will be useful, but * 12 | * WITHOUT ANY WARRANTY; without even the implied warranty of * 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * 14 | * Lesser General Public License for more details. * 15 | * * 16 | * You should have received a copy of the GNU Lesser General Public * 17 | * License along with this library; if not, write to the Free Software * 18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 19 | * 02110-1301 USA * 20 | * * 21 | * Alternatively, this file is available under the Mozilla Public * 22 | * License Version 1.1. You may obtain a copy of the License at * 23 | * http://www.mozilla.org/MPL/ * 24 | ***************************************************************************/ 25 | 26 | #ifndef TAGLIB_TZLIB_H 27 | #define TAGLIB_TZLIB_H 28 | 29 | #include 30 | 31 | // THIS FILE IS NOT A PART OF THE TAGLIB API 32 | 33 | #ifndef DO_NOT_DOCUMENT // tell Doxygen not to document this header 34 | 35 | namespace TagLib { 36 | 37 | namespace zlib { 38 | 39 | /*! 40 | * Returns whether or not zlib is installed and ready to use. 41 | */ 42 | bool isAvailable(); 43 | 44 | /*! 45 | * Decompress \a data by zlib. 46 | */ 47 | ByteVector decompress(const ByteVector &data); 48 | 49 | } 50 | } 51 | 52 | #endif 53 | 54 | #endif 55 | -------------------------------------------------------------------------------- /screenshoot/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/screenshoot/1.png -------------------------------------------------------------------------------- /screenshoot/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/screenshoot/2.png -------------------------------------------------------------------------------- /screenshoot/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/screenshoot/3.png -------------------------------------------------------------------------------- /screenshoot/4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/screenshoot/4.png -------------------------------------------------------------------------------- /screenshoot/5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/screenshoot/5.png -------------------------------------------------------------------------------- /screenshoot/6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bottod/CloudMusic/2bdf6b67b54fdbc7e611357db3d34132c0f16129/screenshoot/6.png --------------------------------------------------------------------------------