Files
AC_Pro/SaveLocalStyleFormUnit.cpp
T
2026-06-13 00:05:19 +08:00

168 lines
5.1 KiB
C++

//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "GlobalUnit.h"
#include "SaveLocalStyleFormUnit.h"
#include "MessageFormUnit.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "GeneralDialogPanel"
#pragma link "LineEdit"
#pragma link "TextButton"
#pragma resource "*.dfm"
TSaveLocalStyleForm *SaveLocalStyleForm;
//---------------------------------------------------------------------------
__fastcall TSaveLocalStyleForm::TSaveLocalStyleForm(TComponent* Owner, TStyleItem* pStyItem)
: TForm(Owner)
{
m_pStyItem = pStyItem;
if( pStyItem->pStyle && pStyItem->pStyle->idLoc!=0 && pStyItem->pStyle->idLoc!=(UINT)-1 ){
m_editName->Text = UTF8ToMBCS(pStyItem->pStyle->pLocal->strStyleName).c_str();
}
else{
m_editName->Text = m_editName->Text.sprintf( L"×Ô¶¨Òå·ç¸ñ%d", f_CM_GetNextLocalID() );
}
SetTransparent( this );
}
//---------------------------------------------------------------------------
void __fastcall TSaveLocalStyleForm::FormShow(TObject *Sender)
{
m_editName->SetFocus();
}
//---------------------------------------------------------------------------
void __fastcall TSaveLocalStyleForm::OkClick(TObject *Sender)
{
if( m_editName->Text.Length()==0 ){
m_editName->SetFocus();
}
else{
ModalResult = mrOk;
}
}
//---------------------------------------------------------------------------
void __fastcall TSaveLocalStyleForm::Save(TPROSTYLE * pStyle)
{
for( int i=0; i<m_pStyItem->aItems->Count; i++ ){
TSegmentItem* pSeg = (TSegmentItem*)m_pStyItem->aItems->Items[i];
int segType = pSeg->iSegType,
segNo = pSeg->iSegNo;
if( segType==SEGTYPE_VAR )
pStyle->pLocal->nSegNum[segType]++;
else if( segType==SEGTYPE_FILL )
pStyle->pLocal->nSegNum[segType]++;
else{
int nMaj = pStyle->pLocal->nSegNum[segType] & 0x0F,
nMin = pStyle->pLocal->nSegNum[segType] >> 4;
if( segNo<4 )
nMaj++;
else
nMin++;
pStyle->pLocal->nSegNum[segType] = ( nMin<<4 ) + nMaj;
pStyle->pLocal->aIEBars[segType-2][segNo] = pSeg->nBars;
}
pStyle->pLocal->nSegVol[segType][segNo] = pSeg->volume;
for( int j=0; j<pSeg->aItems->Count; j++ ){
TTrack* pTrk = ((TTrackItem*)pSeg->aItems->Items[j])->pTrack;
pStyle->pLocal->trkRef[segType][segNo][j].idLoc = pTrk->iStyleLoc;// >pStyle->idLoc;
pStyle->pLocal->trkRef[segType][segNo][j].idStyle = pTrk->iStyleId;// >pStyle->idStyle;
pStyle->pLocal->trkRef[segType][segNo][j].segNo = pTrk->iSegNo;
pStyle->pLocal->trkRef[segType][segNo][j].chan = pTrk->iChanNo;
pStyle->pLocal->trkRef[segType][segNo][j].prog = pTrk->iProg;// >progCurr;
pStyle->pLocal->trkRef[segType][segNo][j].vol = pTrk->nVol;// >volCurr;
}
}
f_CM_SaveLocalStyle( pStyle );
if( m_pStyItem->pStyle!=pStyle )
m_pStyItem->pStyle = pStyle;
for( int i=0; i<m_pStyItem->aItems->Count; i++ ){
TSegmentItem* pSeg = (TSegmentItem*)m_pStyItem->aItems->Items[i];
for( int j=0; j<pSeg->aItems->Count; j++ ){
TTrackItem* pTrk = (TTrackItem*)pSeg->aItems->Items[j];
if( pTrk->pStyle->idLoc==(UINT)-1 && pTrk->pStyle->idStyle==0 ){
pTrk->pStyle = pStyle;
pTrk->pTrack->iStyleLoc = pStyle->idLoc;
pTrk->pTrack->iStyleId = pStyle->idStyle;
}
}
}
if( g_pUseStyle ){
if( !g_pUseStyle->pStyle || g_pUseStyle->pStyle->idLoc==(UINT)-1
&& g_pUseStyle->pStyle->idStyle==0 ){
g_pUseStyle->pStyle = pStyle;
}
for( int i=0; i<g_pUseStyle->aItems->Count; i++ ){
TSegmentItem* pSeg = (TSegmentItem*)g_pUseStyle->aItems->Items[i];
for( int j=0; j<pSeg->aItems->Count; j++ ){
TTrackItem* pTrk = (TTrackItem*)pSeg->aItems->Items[j];
if( pTrk->pStyle->idLoc==(UINT)-1 && pTrk->pStyle->idStyle==0 ){
pTrk->pStyle = pStyle;
g_lstOpusStages[i]->aTracks[j]->iStyleLoc = pStyle->idLoc;
g_lstOpusStages[i]->aTracks[j]->iStyleId = pStyle->idStyle;
}
}
}
}
f_CM_DeleteTempStyle( 0 );
DeleteStyleInfo( -1, 0 );
}
//---------------------------------------------------------------------------
void __fastcall TSaveLocalStyleForm::NameChange(TObject *Sender)
{
TLineEdit* pEdit = ((TLineEdit*)Sender);
AnsiString strName = pEdit->Text.Trim();
string strTmp = GBToUTF8(strName.c_str());
if( strTmp.length()>pEdit->MaxLength ){
pEdit->OnChange = NULL;
pEdit->Text = pEdit->Text.SubString( 0, pEdit->Text.Length()-1 );
pEdit->SelStart = pEdit->Text.Length();
pEdit->OnChange = NameChange;
}
}
//---------------------------------------------------------------------------
void __fastcall TSaveLocalStyleForm::FormKeyDown(TObject *Sender, WORD &Key, TShiftState Shift)
{
switch( Key ){
case VK_RETURN:
if(m_btnOk->Enabled)
OkClick(NULL);
break;
case VK_ESCAPE:
ModalResult = mrCancel;
break;
}
}
//---------------------------------------------------------------------------
void __fastcall TSaveLocalStyleForm::FormCreate(TObject *Sender)
{
m_panelBk->Font->Size = g_szFont9;
m_btnCancel->FontSize = g_szFont9;
m_btnOk->FontSize = g_szFont9;
m_editName->SetTextFont(g_strTxtFontName, g_szFont9);
}
//---------------------------------------------------------------------------