Skip to content

Commit

Permalink
增加搜索歌词功能
Browse files Browse the repository at this point in the history
1、添加搜索歌词线程,用于搜索歌词
2、使用工厂模式创建歌词搜索类
3、添加json c++ 库,用于解析json数据
4、拓展mclistview,优化列表显示
  • Loading branch information
BensonLaur committed Sep 10, 2017
1 parent 81f1f95 commit f0ccb6e
Show file tree
Hide file tree
Showing 55 changed files with 6,637 additions and 796 deletions.
Binary file modified BesLyric/BesLyric.cpp
Binary file not shown.
38 changes: 30 additions & 8 deletions BesLyric/BesLyric.vcxproj
Expand Up @@ -63,8 +63,8 @@
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>$(SOUIPATH)\bin;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>utilitiesd.lib;souid.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>$(ProjectDir)lib\json\;$(SOUIPATH)\bin;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>utilitiesd.lib;souid.lib;%(AdditionalDependencies);lib_json_debug.lib</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
Expand All @@ -81,8 +81,8 @@
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>$(SOUIPATH)\bin;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>utilities.lib;soui.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>$(ProjectDir)lib\json\;$(SOUIPATH)\bin;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>utilities.lib;soui.lib;%(AdditionalDependencies);lib_json_release.lib</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
Expand Down Expand Up @@ -120,10 +120,13 @@
<ClCompile Include="DlgCheckIntegrity.cpp" />
<ClCompile Include="entity\AutoUpdateThread.cpp" />
<ClCompile Include="entity\CheckIntegrityThread.cpp" />
<ClCompile Include="entity\LrcHandler.cpp" />
<ClCompile Include="entity\LyricMaker.cpp" />
<ClCompile Include="entity\LyricPlayer.cpp" />
<ClCompile Include="entity\MusicPlayer.cpp" />
<ClCompile Include="lib\tinyxml2.cpp" />
<ClCompile Include="entity\SearcherGecimi.cpp" />
<ClCompile Include="entity\SearchLyricThread.cpp" />
<ClCompile Include="lib\xml\tinyxml2.cpp" />
<ClCompile Include="MainDlg.cpp" />
<ClCompile Include="PageMaking.cpp" />
<ClCompile Include="PageResult.cpp" />
Expand All @@ -133,7 +136,8 @@
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>
</ClCompile>
<ClCompile Include="utility\FileHelper.cpp" />
<ClCompile Include="utility\StringHelper.cpp" />
<ClCompile Include="utility\WinDialog.cpp" />
<ClCompile Include="utility\SplitFile.cpp" />
<ClCompile Include="utility\WinFile.cpp" />
</ItemGroup>
Expand All @@ -142,15 +146,32 @@
</ItemGroup>
<ItemGroup>
<ClInclude Include="BSMessageBox.h" />
<ClInclude Include="controlEx\LyricListView.h" />
<ClInclude Include="Define.h" />
<ClInclude Include="DlgCheckIntegrity.h" />
<ClInclude Include="entity\AutoUpdateThread.h" />
<ClInclude Include="entity\CheckIntegrityThread.h" />
<ClInclude Include="entity\FileDroper.h" />
<ClInclude Include="entity\ISearcher.h" />
<ClInclude Include="entity\LrcHandler.h" />
<ClInclude Include="entity\LyricMaker.h" />
<ClInclude Include="entity\LyricPlayer.h" />
<ClInclude Include="entity\LyricSearcherFactory.h" />
<ClInclude Include="entity\MusicPlayer.h" />
<ClInclude Include="lib\tinyxml2.h" />
<ClInclude Include="entity\SearcherGecimi.h" />
<ClInclude Include="entity\SearchLyricThread.h" />
<ClInclude Include="lib\json\allocator.h" />
<ClInclude Include="lib\json\assertions.h" />
<ClInclude Include="lib\json\autolink.h" />
<ClInclude Include="lib\json\config.h" />
<ClInclude Include="lib\json\features.h" />
<ClInclude Include="lib\json\forwards.h" />
<ClInclude Include="lib\json\json.h" />
<ClInclude Include="lib\json\reader.h" />
<ClInclude Include="lib\json\value.h" />
<ClInclude Include="lib\json\version.h" />
<ClInclude Include="lib\json\writer.h" />
<ClInclude Include="lib\xml\tinyxml2.h" />
<ClInclude Include="MainDlg.h" />
<ClInclude Include="PageMaking.h" />
<ClInclude Include="PageResult.h" />
Expand All @@ -159,7 +180,8 @@
<ClInclude Include="resource.h" />
<ClInclude Include="stdafx.h" />
<ClInclude Include="utility\Downloader.h" />
<ClInclude Include="utility\FileHelper.h" />
<ClInclude Include="utility\StringHelper.h" />
<ClInclude Include="utility\WinDialog.h" />
<ClInclude Include="utility\SplitFile.h" />
<ClInclude Include="utility\SSingleton.h" />
<ClInclude Include="utility\WinFile.h" />
Expand Down
99 changes: 87 additions & 12 deletions BesLyric/BesLyric.vcxproj.filters
Expand Up @@ -32,6 +32,15 @@
<Filter Include="Header Files\entity">
<UniqueIdentifier>{5345c7b8-25c5-4189-ae9a-3fd69e8f909d}</UniqueIdentifier>
</Filter>
<Filter Include="Header Files\controlEx">
<UniqueIdentifier>{e123a482-fc25-4f65-b2ed-b36da37f0cf5}</UniqueIdentifier>
</Filter>
<Filter Include="Header Files\lib\json">
<UniqueIdentifier>{64f17359-9002-4c68-a13f-040a6e3eccbd}</UniqueIdentifier>
</Filter>
<Filter Include="Header Files\lib\xml">
<UniqueIdentifier>{3031c9a7-6496-42cc-ac04-b5ff5b1286e0}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<None Include="res\soui_res.rc2">
Expand Down Expand Up @@ -76,9 +85,6 @@
<ClCompile Include="BSMessageBox.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="lib\tinyxml2.cpp">
<Filter>Header Files\lib</Filter>
</ClCompile>
<ClCompile Include="entity\LyricMaker.cpp">
<Filter>Source Files\entity</Filter>
</ClCompile>
Expand All @@ -88,9 +94,6 @@
<ClCompile Include="entity\MusicPlayer.cpp">
<Filter>Source Files\entity</Filter>
</ClCompile>
<ClCompile Include="utility\FileHelper.cpp">
<Filter>Source Files\utility</Filter>
</ClCompile>
<ClCompile Include="utility\WinFile.cpp">
<Filter>Source Files\utility</Filter>
</ClCompile>
Expand All @@ -115,6 +118,24 @@
<ClCompile Include="PageSearchLyric.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="entity\LrcHandler.cpp">
<Filter>Source Files\entity</Filter>
</ClCompile>
<ClCompile Include="utility\WinDialog.cpp">
<Filter>Source Files\utility</Filter>
</ClCompile>
<ClCompile Include="lib\xml\tinyxml2.cpp">
<Filter>Header Files\lib\xml</Filter>
</ClCompile>
<ClCompile Include="utility\StringHelper.cpp">
<Filter>Source Files\utility</Filter>
</ClCompile>
<ClCompile Include="entity\SearcherGecimi.cpp">
<Filter>Source Files\entity</Filter>
</ClCompile>
<ClCompile Include="entity\SearchLyricThread.cpp">
<Filter>Source Files\entity</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="BesLyric.rc">
Expand All @@ -140,9 +161,6 @@
<ClInclude Include="PageSetting.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="lib\tinyxml2.h">
<Filter>Header Files\lib</Filter>
</ClInclude>
<ClInclude Include="entity\LyricMaker.h">
<Filter>Header Files\entity</Filter>
</ClInclude>
Expand All @@ -152,9 +170,6 @@
<ClInclude Include="entity\MusicPlayer.h">
<Filter>Header Files\entity</Filter>
</ClInclude>
<ClInclude Include="utility\FileHelper.h">
<Filter>Header Files\utility</Filter>
</ClInclude>
<ClInclude Include="utility\SSingleton.h">
<Filter>Header Files\utility</Filter>
</ClInclude>
Expand Down Expand Up @@ -188,6 +203,66 @@
<ClInclude Include="utility\Downloader.h">
<Filter>Header Files\utility</Filter>
</ClInclude>
<ClInclude Include="controlEx\LyricListView.h">
<Filter>Header Files\controlEx</Filter>
</ClInclude>
<ClInclude Include="entity\LyricSearcherFactory.h">
<Filter>Header Files\entity</Filter>
</ClInclude>
<ClInclude Include="entity\ISearcher.h">
<Filter>Header Files\entity</Filter>
</ClInclude>
<ClInclude Include="entity\LrcHandler.h">
<Filter>Header Files\entity</Filter>
</ClInclude>
<ClInclude Include="entity\SearcherGecimi.h">
<Filter>Header Files\entity</Filter>
</ClInclude>
<ClInclude Include="utility\WinDialog.h">
<Filter>Header Files\utility</Filter>
</ClInclude>
<ClInclude Include="utility\StringHelper.h">
<Filter>Header Files\utility</Filter>
</ClInclude>
<ClInclude Include="lib\xml\tinyxml2.h">
<Filter>Header Files\lib\xml</Filter>
</ClInclude>
<ClInclude Include="lib\json\allocator.h">
<Filter>Header Files\lib\json</Filter>
</ClInclude>
<ClInclude Include="lib\json\assertions.h">
<Filter>Header Files\lib\json</Filter>
</ClInclude>
<ClInclude Include="lib\json\autolink.h">
<Filter>Header Files\lib\json</Filter>
</ClInclude>
<ClInclude Include="lib\json\config.h">
<Filter>Header Files\lib\json</Filter>
</ClInclude>
<ClInclude Include="lib\json\features.h">
<Filter>Header Files\lib\json</Filter>
</ClInclude>
<ClInclude Include="lib\json\forwards.h">
<Filter>Header Files\lib\json</Filter>
</ClInclude>
<ClInclude Include="lib\json\json.h">
<Filter>Header Files\lib\json</Filter>
</ClInclude>
<ClInclude Include="lib\json\reader.h">
<Filter>Header Files\lib\json</Filter>
</ClInclude>
<ClInclude Include="lib\json\value.h">
<Filter>Header Files\lib\json</Filter>
</ClInclude>
<ClInclude Include="lib\json\version.h">
<Filter>Header Files\lib\json</Filter>
</ClInclude>
<ClInclude Include="lib\json\writer.h">
<Filter>Header Files\lib\json</Filter>
</ClInclude>
<ClInclude Include="entity\SearchLyricThread.h">
<Filter>Header Files\entity</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<CustomBuild Include="uires\uires.idx">
Expand Down
20 changes: 20 additions & 0 deletions BesLyric/Define.h
Expand Up @@ -26,6 +26,7 @@

#pragma once
#include "stdafx.h"
#include <vector>
#include <string>
using namespace std;

Expand All @@ -51,6 +52,8 @@ using namespace std;

#define MSG_USER_DROP_FILE WM_USER+5

#define MSG_USER_SHOW_LYRIC_RESULT WM_USER+6

/* 结构定义 */

//在制作歌词页面 和 滚动预览 页面中,需要选择音乐路径,歌词路径,输出路径等信息
Expand All @@ -71,6 +74,23 @@ typedef struct _PATH_STATE
OTHER
};

//储存获取的单个歌词信息
struct LyricInfo
{
wstring strPlaneText;
wstring strLabelText;
wstring strSong;
wstring strArtist;
wstring strLyricFrom;
};

struct LyricSearchResult
{
vector<LyricInfo> vecLyricInfoTotal; //所有获得的歌词
bool bShowUnexpectedResultTip; //是否显示意外结果的提示
SStringW strUnexpectedResultTip; //意外结果的提示
};


/* 全局变量定义 */
/* 版本格式说明:X.Y.Z
Expand Down
42 changes: 31 additions & 11 deletions BesLyric/MainDlg.cpp
Expand Up @@ -9,7 +9,7 @@

#include "stdafx.h"
#include "MainDlg.h"
#include "utility/FileHelper.h"
#include "utility/WinDialog.h"
#include <helper/SDibHelper.h>
#include "BSMessageBox.h"
#include "entity/AutoUpdateThread.h"
Expand All @@ -27,7 +27,8 @@
#endif

#include "utility\SplitFile.h"

#include <fstream>
using namespace std;

void CMainDlg::test()
{
Expand All @@ -39,10 +40,18 @@ void CMainDlg::test()

//AutoUpdateThread::DownloadFile(L"http://ovfwclhwl.bkt.clouddn.com/ffmpeg.exe", L"C:\\Users\\BensonLaur\\Desktop\\ff.exe");

wstring strSaveBuffer;
CDownloader::DownloadString( L"http://gecimi.com/api/lyric/我们的歌", strSaveBuffer);
CDownloader::DownloadString( L"http://s.gecimi.com/lrc/388/38847/3884774.lrc", strSaveBuffer);

//wstring strSaveBuffer;
//CDownloader::DownloadString( L"http://gecimi.com/api/lyric/我们的歌", strSaveBuffer);
//
//locale &loc=locale::global(locale(locale(),"",LC_CTYPE));
//wofstream ofstream("C:\\Users\\BensonLaur\\Desktop\\json.json");
//ofstream << strSaveBuffer << endl;
//ofstream << L"中文1 test1" << endl;
//ofstream << L"中文2 test2" << endl;
//ofstream.close();
//_tfopen(L"C:\\Users\\BensonLaur\\Desktop\\json.test", L"w");

//CDownloader::DownloadString( L"http://s.gecimi.com/lrc/388/38847/3884774.lrc", strSaveBuffer);
}

CMainDlg::CMainDlg() : SHostWnd(_T("LAYOUT:XML_MAINWND"))
Expand Down Expand Up @@ -201,12 +210,11 @@ void CMainDlg::OnDropFile(SEdit* pEdit, wstring strFilePath)
}
else if(pEdit == this->m_pageSearchLyric->m_editOriginLyricPath)
{
//TODOTODO
//m_pageSearchLyric->OnBtnSelectLyric2(strFilePath.c_str());
m_pageSearchLyric->OnBtnSelectOriginLyricPath(strFilePath.c_str());
}
else if(pEdit == this->m_pageSearchLyric->m_editLrcLyricPath)
{
//m_pageSearchLyric->OnBtnSelectLyric2(strFilePath.c_str());
m_pageSearchLyric->OnBtnSelectLrcLyricPath(strFilePath.c_str());
}
}

Expand Down Expand Up @@ -772,7 +780,7 @@ void CMainDlg::OnSliderPos(bool isPos1)
}
}


//用于处理格式转换线程结束后,通知主线程播放
int CMainDlg::MessageButtonCommand(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
{
if(uMsg == MSG_USER_MAKING_START_BUTTON)
Expand All @@ -784,5 +792,17 @@ int CMainDlg::MessageButtonCommand(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL
m_pageResult->OnBtnStartPlaying();
}

return true;
return TRUE;
}


//处理消息,显示搜索到的歌词
int CMainDlg::MessageShowLyricResult(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
{
LyricSearchResult* pResult = (LyricSearchResult*)wParam;

m_pageSearchLyric->ShowLyricResult(pResult);

delete pResult;
return TRUE;
}
9 changes: 7 additions & 2 deletions BesLyric/MainDlg.h
Expand Up @@ -83,9 +83,12 @@ class CMainDlg : public SHostWnd
//处理声音slider 位置的变化
void OnSliderPos(bool isPos1);


//用于处理格式转换线程结束后,通知主线程播放
int MessageButtonCommand(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled);

//处理消息,显示搜索到的歌词
int MessageShowLyricResult(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled);

private:
//设置程序的背景图片
void setBackSkin();
Expand Down Expand Up @@ -140,10 +143,12 @@ class CMainDlg : public SHostWnd

MSG_WM_TIMER(OnTimer)

MESSAGE_HANDLER(MSG_USER_MAKING_START_BUTTON, MessageButtonCommand) //用于
MESSAGE_HANDLER(MSG_USER_MAKING_START_BUTTON, MessageButtonCommand) //用于格式转换线程结束后,通知主线程播放
MESSAGE_HANDLER(MSG_USER_PLAYING_START_BUTTON, MessageButtonCommand)

MESSAGE_HANDLER(MSG_USER_DROP_FILE, MsgDropFile)//拖放文件消息

MESSAGE_HANDLER(MSG_USER_SHOW_LYRIC_RESULT, MessageShowLyricResult)//显示歌词结果消息

CHAIN_MSG_MAP(SHostWnd)
REFLECT_NOTIFICATIONS_EX()
Expand Down

0 comments on commit f0ccb6e

Please sign in to comment.