Files
AccompanyCube/StyleSelFormUnit.h
2026-06-13 00:10:11 +08:00

232 lines
7.0 KiB
C++

//---------------------------------------------------------------------------
#ifndef StyleSelFormUnitH
#define StyleSelFormUnitH
//---------------------------------------------------------------------------
#include <System.Classes.hpp>
#include <Vcl.Controls.hpp>
#include <Vcl.StdCtrls.hpp>
#include <Vcl.Forms.hpp>
#include <Vcl.ExtCtrls.hpp>
#include <Vcl.Graphics.hpp>
#include "PNGButton.hpp"
#include "StyleSelListBoxUnit.h"
#include "TransparentEditUnit.h"
#include "PopMenuUnit.h"
#include "SkinHintWindow.h"
#include <Vcl.Imaging.pngimage.hpp>
#define RADIO_NUM 13
#define CHECK_NUM 12
//---------------------------------------------------------------------------
class TStyleSelForm : public TForm
{
__published: // IDE-managed Components
TImage *m_ImgBkg;
TPNGButton *m_btnFind;
TPNGButton *m_btnPlay;
TPNGButton *m_btnCollect;
TPNGButton *m_btnRecord;
TPNGButton *m_btnTry;
TPaintBox *m_pbBase1;
TPaintBox *m_pbBase2;
TPaintBox *m_pbBase3;
TPaintBox *m_pbBase4;
TPaintBox *m_pbInt1;
TPaintBox *m_pbInt2;
TPaintBox *m_pbInt3;
TPaintBox *m_pbInt4;
TPaintBox *m_pbEnd1;
TPaintBox *m_pbEnd2;
TPaintBox *m_pbEnd3;
TPaintBox *m_pbEnd4;
TPaintBox *m_pbFull;
TPNGButton *m_btnClose;
TPNGButton *m_btnHeadPage;
TPNGButton *m_btnUpPage;
TPNGButton *m_btnNextPage;
TPNGButton *m_btnEndPage;
TPaintBox *m_pbPageNum;
TImage *m_ImgFind;
TPNGButton *m_btnPageGo;
TPaintBox *m_pbPages;
TransparentEditUnit::TEdit *m_edtPageGo;
TPNGButton *m_btnStop;
TPNGButton *m_btnRecommand;
TPNGButton *m_btnPngSearch;
TTimer *Timer2;
Vcl::Stdctrls::TEdit *m_edSearch;
TImage *m_imgSrearch;
StyleSelectListBoxUnit::TListBox *m_lbStyle;
TPaintBox *m_pbClassical;
TPaintBox *m_pbSamba;
TPaintBox *m_pbFolk;
TPaintBox *m_pbRock;
TPaintBox *m_pbPop;
TPaintBox *m_pbJazz;
TPaintBox *m_pbDance;
TPaintBox *m_pbWaltz;
TPaintBox *m_pbBlus;
TPaintBox *m_pbInverts;
TPaintBox *m_pbOthStyle;
TPaintBox *m_pbFree;
TLabel *m_lblTitle;
void __fastcall FormCreate(TObject *Sender);
void __fastcall RadioStylePaint(TObject *Sender);
void __fastcall RadioStyleMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift,
int X, int Y);
void __fastcall PageNumPaint(TObject *Sender);
void __fastcall PageNumMouseMove(TObject *Sender, TShiftState Shift, int X,
int Y);
void __fastcall PageNumMouseLeave(TObject *Sender);
void __fastcall PageNumMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift,
int X, int Y);
void __fastcall BtnStepPageMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift,
int X, int Y);
void __fastcall FormDestroy(TObject *Sender);
void __fastcall BtnHeadOrEndPageMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift,
int X, int Y);
void __fastcall CheckStylePaint(TObject *Sender);
void __fastcall CheckStyleMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift,
int X, int Y);
void __fastcall LstStyleMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift,
int X, int Y);
void __fastcall m_pbPagesPaint(TObject *Sender);
void __fastcall EdtPageGoChange(TObject *Sender);
void __fastcall FindClick(TObject *Sender);
void __fastcall CollectClick(TObject *Sender);
void __fastcall RecordClick(TObject *Sender);
void __fastcall PlayClick(TObject *Sender);
void __fastcall TryClick(TObject *Sender);
void __fastcall PageGoClick(TObject *Sender);
void __fastcall LstStyleMouseLeave(TObject *Sender);
void __fastcall LstStyleMouseMove(TObject *Sender, TShiftState Shift, int X, int Y);
void __fastcall StopClick(TObject *Sender);
void __fastcall LstStyleMouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift,
int X, int Y);
void __fastcall FormKeyDown(TObject *Sender, WORD &Key, TShiftState Shift);
void __fastcall RecommandClick(TObject *Sender);
void __fastcall OnSearchStyles(TObject *Sender);
void __fastcall m_edSearchChange(TObject *Sender);
void __fastcall OnTimerDraw(TObject *Sender);
void __fastcall FormActivate(TObject *Sender);
void __fastcall FormClose(TObject *Sender, TCloseAction &Action);
private: // User declarations
bool m_bActiveHappened; //add by tj 2014/7/2
int m_iBtnState;
// TBitmap *m_pImgBtnState;
//单选框
TBitmap *m_pImgRadioDown,
*m_pImgRadioUp;
//多选框
TBitmap *m_pImgCheckDown,
*m_pImgCheckUp;
//视听Radio
int m_baRadio[RADIO_NUM];
TPaintBox *m_pbRadio[RADIO_NUM];
//查找Check
TPaintBox *m_pbChecks[CHECK_NUM];
int m_baChecks[CHECK_NUM];
COLORREF m_clFont,
m_clBox;
TPNGButton *m_btnPages[4];
TPopMenu * m_pPopMenu;
TTimer *m_pTimerHint;
TSkinHintWindow * m_pShowHint;
int m_iHitItemIndex;
int m_xPos;
int m_yPos;
//页码显示相关
struct {
int iSelectPage; //选择页码
int iMovingPage; //鼠标在上时的页码
int iStartPage; //第1个位置显示的页码
int iCurrentPos; //当前选中的页码位置
int iMovingPos; //鼠标在上时的页码位置
bool bShowDots; //页码益出显示省略
} m_stPageNum;
//风格选择相关
struct {
int iOldSelectPage; //已选择的风格页码
int iOldSelectItemIndex; //已选择的风格页码下的相对索引值
int iSelect; //已选择的风格页码下的绝对索引值
int iIdCollect; //收藏风格的ID
bool bPlay;
}m_stLstSelect;
//当前总页数
int m_nPageNum;
int m_iDownItemIndex;
int m_iOldItemIndex;
int m_iOldItemState;
int m_iDwnLdgIndex;
//删除收藏有关
bool m_bCollectDelete;
int m_iCollectDelete;
//ListBox加载页码
void AddPageItem(int iPage);
// int GetStyleHeadParam(int ID,TSTYLE_HEAD_PRAME *ts);
void RefreshSearchStyles(const String strStyleName);
void __fastcall OnCollect( TObject* Sender );
void __fastcall OnDownLoadStyle( TObject* Sender );
void __fastcall HintTimerProc(TObject* Sender);
//消息处理
void __fastcall WMNCHitTest(TWMNCHitTest &Msg);
MESSAGE void __fastcall OnNetworkMessage(TMessage &msg);
MESSAGE void __fastcall OnPlayOver(TMessage &msg);
BEGIN_MESSAGE_MAP
MESSAGE_HANDLER(MSG_PLAY_END, TMessage, OnPlayOver)
MESSAGE_HANDLER(WM_NCHITTEST, TWMNCHitTest, WMNCHitTest)
MESSAGE_HANDLER(MSG_NETWORKMESSAGE, TMessage, OnNetworkMessage)
END_MESSAGE_MAP(TForm)
public: // User declarations
__fastcall TStyleSelForm(TComponent* Owner);
bool m_bBase; //是否基本编曲窗
int m_iSelStage; //指定分段
int m_iChordType; //指定大小调
int m_idSelected; //选中的风格ID
int m_iSegType; //选中的片段
int m_iSegNo; //选中的片段号
string m_strName;
private:
void Play();
void Stop();
int GetStyle();
int FindStyle();
void ShowStyle();
void OnShowStyle();
void Closing();
//int IdToType( int id);
//Set button postion by logon state
void SetBtnPosByLogState(const bool bIsLog);
//Draw Pay-Line
void RefreshAllItem(vector<int>& vcIndexID,int & iPageIndex);
void RefreshAllStylesState();
void DuplicateComposeStages( COMPOSESTAGELIST& lstComposeStages, int idStyle );
};
//---------------------------------------------------------------------------
extern PACKAGE TStyleSelForm *StyleSelForm;
//---------------------------------------------------------------------------
#endif