mmtty/LogList.cpp
2013-07-05 15:00:12 -05:00

1170 lines
33 KiB
C++
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//Copyright+LGPL
//-----------------------------------------------------------------------------------------------------------------------------------------------
// Copyright 2000-2013 Makoto Mori, Nobuyuki Oba
//-----------------------------------------------------------------------------------------------------------------------------------------------
// This file is part of MMTTY.
// MMTTY is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License
// as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
// MMTTY is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
// You should have received a copy of the GNU Lesser General Public License along with MMTTY. If not, see
// <http://www.gnu.org/licenses/>.
//-----------------------------------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "LogList.h"
#include "QsoDlg.h"
#include "TextEdit.h"
#include "LogConv.h"
#include "ConvDef.h"
#include "LogSet.h"
#include "country.h"
#include "Hamlog5.h"
#include "TH5Len.h"
//---------------------------------------------------------------------
#pragma resource "*.dfm"
//TLogListDlg *LogListDlg;
//---------------------------------------------------------------------
__fastcall TLogListDlg::TLogListDlg(TComponent* AOwner)
: TForm(AOwner)
{
FormStyle = ((TForm *)AOwner)->FormStyle;
Font->Name = ((TForm *)AOwner)->Font->Name;
Font->Charset = ((TForm *)AOwner)->Font->Charset;
if( Font->Charset != SHIFTJIS_CHARSET ){
Grid->Font->Name = ((TForm *)AOwner)->Font->Name;
Grid->Font->Charset = ((TForm *)AOwner)->Font->Charset;
KFile->Caption = "File(&F)";
KEdit->Caption = "Edit(&E)";
KFind->Caption = "Find(&S)";
KOpt->Caption = "Option(&O)";
KHelp->Caption = "Help(&H)";
KOpen->Caption = "Open LogData File(&O)...";
KFlush->Caption = "Save data now(&M)";
KReIndex->Caption = "Make Index";
KMTextRead->Caption = "Load MMLOG TextFile(&R)...";
KMTextWrite->Caption = "Save selected range to MMLOG TextFile(&W)...";
KImport->Caption = "Import";
KImportText->Caption = "Text File...";
KImportLog200->Caption = "Log200 File...";
KImportHamlog->Caption = "Hamlog File...";
KImportADIF->Caption = "ADIF File...";
KExport->Caption = "Export selected range";
KExportText->Caption = "Text File...";
KExportADIF->Caption = "ADIF File...";
KExportLog200->Caption = "Log200 File...";
KExportHamlog->Caption = "Hamlog File...";
KExportCabrillo->Caption = "Cabrillo file...";
KExit->Caption = "Return to MMTTY(&X)";
KDelCur->Caption = "Cut";
KInsCur->Caption = "Insert";
KSelAll->Caption = "Select All";
KDelSel->Caption = "Delete selected range";
KSortDate->Caption = "Sort(Date/Time)";
KTop->Caption = "Move Top";
KBottom->Caption = "Move Last";
KFindTop->Caption = "Search forward...";
KFindBottom->Caption = "Search backward...";
KFindConT->Caption = "Search forward again";
KFindConB->Caption = "Search backward again";
KLogOpt->Caption = "Setup Logging...";
}
if( JanHelp.IsEmpty() ){
KHlpLog->Caption = sys.m_HelpLog.c_str();
}
else {
KHlpLog->Caption = "MMTTY Log";
}
KExportCabrillo->Visible = FALSE; // Delete by JE3HHT on Sep.2010
int CX = ::GetSystemMetrics(SM_CXFULLSCREEN);
int CY = ::GetSystemMetrics(SM_CYFULLSCREEN);
if( (CX < Width)||(CY < Height) ){
Top = 0;
Left = 0;
Width = CX;
Height = CY;
}
m_DateWidth = Grid->ColWidths[0];
FormCenter(this, CX, CY);
if( Owner != NULL ){
WindowState = ((TForm *)Owner)->WindowState;
}
SetTimeZone();
}
//---------------------------------------------------------------------------
void __fastcall TLogListDlg::SetTimeZone(void)
{
switch(Log.m_LogSet.m_TimeZone){
case 'I':
if( lcid == LANG_KOREAN ){
m_TimeZone = "KST";
}
else {
m_TimeZone = "JST";
}
break;
default:
m_TimeZone = "UTC";
break;
}
if(Log.m_LogSet.m_DateType & 1){
Grid->ColWidths[0] = (m_DateWidth * 10) / 8;
}
else {
Grid->ColWidths[0] = m_DateWidth;
}
}
//---------------------------------------------------------------------------
// <20>A<EFBFBD>C<EFBFBD>h<EFBFBD><68><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void __fastcall TLogListDlg::OnIdle(TObject *Sender, bool &Done)
{
UpdateMenu();
}
void __fastcall TLogListDlg::UpdateLogCount(int sw)
{
Grid->RowCount = Log.GetCount() + 2;
if( sw ){
Grid->Row = Log.GetCount() + 1;
AdjustTopRow();
char bf[256];
if(Font->Charset != SHIFTJIS_CHARSET){
sprintf(bf, "%s - [%u QSO data(s)]", Log.m_FileName.c_str(), Log.GetCount());
}
else {
sprintf(bf, "%s - [%u<><75><EFBFBD>̃f<CC83>[<5B>^<5E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>܂<EFBFBD>]", Log.m_FileName.c_str(), Log.GetCount());
}
Caption = bf;
}
Grid->Col = 0;
Grid->Invalidate();
}
void __fastcall TLogListDlg::AdjustTopRow(void)
{
int GridLine = Grid->GridHeight/Grid->RowHeights[1] - 1;
int Top = Grid->Row - GridLine + 1;
if( Top < 1 ) Top = 1;
Grid->TopRow = Top;
Grid->Invalidate();
}
void __fastcall TLogListDlg::Execute(void)
{
if( !Log.IsOpen() ){
Log.Open(NULL);
}
Application->OnIdle = OnIdle;
UpdateLogCount(1);
if( !sys.m_LogGridWidths.IsEmpty() ){
SetGridWidths(Grid, sys.m_LogGridWidths.c_str());
}
ShowModal();
GetGridWidths(sys.m_LogGridWidths, Grid);
}
//---------------------------------------------------------------------
void __fastcall TLogListDlg::GridDrawCell(TObject *Sender, int Col, int Row,
TRect &Rect, TGridDrawState State)
{
char bf[256];
SDMMLOG sd;
#if 0
if( (Row >= Grid->Selection.Top)&&(Row <= Grid->Selection.Bottom) ){
Grid->Canvas->Brush->Color = clBlue;
Grid->Canvas->Font->Color = clWhite;
}
#endif
Grid->Canvas->FillRect(Rect);
int X = Rect.Left + 4;
int Y = Rect.Top + 2;
if( Row ){
Row--;
bf[0] = 0;
if( Row < Log.GetCount() ){
Log.GetData(&sd, Row);
}
else {
memset(&sd, 0, sizeof(SDMMLOG));
}
if( Log.m_LogSet.m_TimeZone != 'I' ){
JSTtoUTC(&sd);
}
switch(Col){
case 0: // Date
strcpy(bf, Log.GetDateString(&sd));
break;
case 1: // Time
strcpy(bf, Log.GetTimeString(sd.btime));
break;
case 2: // Call
strcpy(bf, sd.call);
break;
case 3: // M
bf[0] = sd.cq;
bf[1] = 0;
break;
case 4: // HisRST
strcpy(bf, sd.ur);
break;
case 5: // MyRST
strcpy(bf, sd.my);
break;
case 6: // Band
strcpy(bf, Log.GetFreqString(sd.band, sd.fq));
break;
case 7: // Mode
strcpy(bf, Log.GetModeString(sd.mode));
break;
case 8: // Pow
strcpy(bf, sd.pow);
break;
case 9: // Name
strcpy(bf, sd.name);
break;
case 10: // QTH
strcpy(bf, sd.qth);
break;
case 11: // S
bf[0] = sd.send;
bf[1] = 0;
break;
case 12: // R
bf[0] = sd.recv;
bf[1] = 0;
break;
case 13: // REM
strcpy(bf, sd.rem);
break;
case 14: // QSL
strcpy(bf, sd.qsl);
break;
case 15: // etime;
strcpy(bf, Log.GetTimeString(sd.etime));
break;
case 16: // Env
if( sd.env ) sprintf(bf, "%u", sd.env);
break;
case 17: // Opt1
strcpy(bf, sd.opt1);
break;
case 18: // Opt2
strcpy(bf, sd.opt2);
break;
case 19: // Usr1
strcpy(bf, Log.GetOptStr(2, &sd));
break;
case 20: // Usr2
strcpy(bf, Log.GetOptStr(3, &sd));
break;
}
Grid->Canvas->TextRect(Rect, X, Y, bf);
}
else { // <20>^<5E>C<EFBFBD>g<EFBFBD><67>
LPCSTR _tt[]={
"Date","JST","Call","M", "His","My","Band","Mode","Pow","Name","QTH","S","R",
"REM","QSL", "End", "Env", "Opt1", "Opt2", "Usr1", "Usr2",
};
if( Col == 1 ){
Grid->Canvas->TextRect(Rect, X, Y, m_TimeZone.c_str());
}
else {
Grid->Canvas->TextRect(Rect, X, Y, _tt[Col]);
}
}
}
//---------------------------------------------------------------------------
// <20><><EFBFBD>^<5E>[<5B><><EFBFBD>L<EFBFBD>[<5B>̏<EFBFBD><CC8F><EFBFBD>
void __fastcall TLogListDlg::GridKeyPress(TObject *Sender, char &Key)
{
if( Key == 0x0d ){
GridDblClick(NULL);
Key = 0;
}
}
//---------------------------------------------------------------------------
void __fastcall TLogListDlg::UpdateMenu(void)
{
int f = Log.IsOpen();
KFlush->Enabled = f && Log.IsEdit();
KDelCur->Enabled = f && (Grid->Row <= Log.GetCount()) && (Grid->Row >= 1);
KInsCur->Enabled = f && (Grid->Row <= Log.GetCount()) && (Grid->Row >= 1);
KDelSel->Enabled = f && (Grid->Selection.Top < Grid->Selection.Bottom);
KTop->Enabled = f && Log.GetCount();
KBottom->Enabled = f && Log.GetCount();
KFindTop->Enabled = f && Log.GetCount();
KFindBottom->Enabled = f && Log.GetCount();
KFindConT->Enabled = f && Log.GetCount();
KFindConB->Enabled = f && Log.GetCount();
KSortDate->Enabled = f && Log.GetCount() && (Grid->Selection.Top < Grid->Selection.Bottom);
KSelAll->Enabled = f && Log.GetCount();
KMTextRead->Enabled = f;
KMTextWrite->Enabled = f && Log.GetCount() && (Grid->Selection.Top <= Log.GetCount());
KExport->Enabled = f && Log.GetCount() && (Grid->Selection.Top <= Log.GetCount());
KReIndex->Enabled = f;
}
//---------------------------------------------------------------------------
void __fastcall TLogListDlg::KOpenClick(TObject *Sender)
{
OpenDialog->Options << ofCreatePrompt;
OpenDialog->Options >> ofFileMustExist;
if(Font->Charset != SHIFTJIS_CHARSET){
OpenDialog->Title = "Open LogData File";
OpenDialog->Filter = "MMLOG Data File(*.mdt)|*.mdt|";
}
else {
OpenDialog->Title = "<EFBFBD><EFBFBD><EFBFBD>O<EFBFBD>t<EFBFBD>@<40>C<EFBFBD><43><EFBFBD>̃I<CC83>[<5B>v<EFBFBD><76>";
OpenDialog->Filter = "MMLOG Data File(*.mdt)|*.mdt|";
}
OpenDialog->FileName = "";
OpenDialog->DefaultExt = "mdt";
OpenDialog->InitialDir = MMLogDir;
NormalWindow(this);
if( OpenDialog->Execute() == TRUE ){
Log.Close();
Log.MakeName(AnsiString(OpenDialog->FileName).c_str()); //JA7UDE 0428
Log.Open(NULL);
UpdateLogCount(1);
}
TopWindow(this);
}
//---------------------------------------------------------------------------
void __fastcall TLogListDlg::KFlushClick(TObject *Sender)
{
Log.Close();
Log.Open(NULL);
UpdateLogCount(0);
}
//---------------------------------------------------------------------------
void __fastcall TLogListDlg::KDelCurClick(TObject *Sender)
{
int n = Grid->Row - 1;
SDMMLOG sd;
Log.GetData(&sd, n);
memcpy(&Log.m_bak, &sd, sizeof(SDMMLOG));
Log.Delete(n, n);
UpdateLogCount(0);
}
//---------------------------------------------------------------------------
void __fastcall TLogListDlg::KInsCurClick(TObject *Sender)
{
int n = Grid->Row - 1;
Log.Insert(n, &Log.m_bak);
UpdateLogCount(0);
}
//---------------------------------------------------------------------------
void __fastcall TLogListDlg::KDelSelClick(TObject *Sender)
{
if( YesNoMB( (Font->Charset != SHIFTJIS_CHARSET)?"Delete Selection.(will not be able to restore) Are you sure?":"<EFBFBD><EFBFBD><EFBFBD>ݑI<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ă<EFBFBD><EFBFBD><EFBFBD><EFBFBD>͈͂<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>܂<EFBFBD>.<2E><EFBFBD><ED8F9C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>e<EFBFBD>͕<EFBFBD><CD95><EFBFBD><EFBFBD>ł<EFBFBD><C582>܂<EFBFBD><DC82><EFBFBD>\r\n\r\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>܂<EFBFBD><EFBFBD><EFBFBD><EFBFBD>H") == IDYES ){
int top = Grid->Selection.Top - 1;
int end = Grid->Selection.Bottom - 1;
Log.Delete(top, end);
UpdateLogCount(0);
Grid->Row = top + 1;
}
}
//---------------------------------------------------------------------------
void __fastcall TLogListDlg::KExitClick(TObject *Sender)
{
ModalResult = mrOk;
}
//---------------------------------------------------------------------------
void __fastcall TLogListDlg::KFindTopClick(TObject *Sender)
{
if( m_FindCall.IsEmpty() || (Sender == KFindTop) ){
UnicodeString as = m_FindCall; //JA7UDE 0428
if( InputQuery("MMTTY", (Font->Charset != SHIFTJIS_CHARSET)?"Callsign":"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>R<EFBFBD>[<5B><><EFBFBD>T<EFBFBD>C<EFBFBD><43>", as) == FALSE ) return; //JA7UDE 0428
//jstrupr(as.c_str());
as = as.UpperCase();
m_FindCall = as;
}
int n = Log.Find(m_FindCall.c_str(), Grid->Row, 0);
if( n >= 0 ){
Grid->Row = n + 1;
}
else if( Font->Charset != SHIFTJIS_CHARSET ){
WarningMB("'%s' was not found", m_FindCall.c_str());
}
else {
WarningMB("'%s'<27>͌<EFBFBD><CD8C>‚<EFBFBD><C282><EFBFBD><EFBFBD>܂<EFBFBD><DC82><EFBFBD><EFBFBD>ł<EFBFBD><C582><EFBFBD>.", m_FindCall.c_str());
}
}
//---------------------------------------------------------------------------
void __fastcall TLogListDlg::KFindBottomClick(TObject *Sender)
{
if( m_FindCall.IsEmpty() || (Sender == KFindBottom) ){
UnicodeString as = m_FindCall;
if( InputQuery("MMTTY", (Font->Charset != SHIFTJIS_CHARSET)?"Callsign":"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>R<EFBFBD>[<5B><><EFBFBD>T<EFBFBD>C<EFBFBD><43>", as) == FALSE ) return; //JA7UDE 0428
//jstrupr(as.c_str());
as = as.UpperCase();
m_FindCall = as;
}
int n = Log.Find(m_FindCall.c_str(), Grid->Row - 2, 1);
if( n >= 0 ){
Grid->Row = n + 1;
}
else if( Font->Charset != SHIFTJIS_CHARSET ){
WarningMB("'%s' was not found", m_FindCall.c_str());
}
else {
WarningMB("'%s'<27>͌<EFBFBD><CD8C>‚<EFBFBD><C282><EFBFBD><EFBFBD>܂<EFBFBD><DC82><EFBFBD><EFBFBD>ł<EFBFBD><C582><EFBFBD>.", m_FindCall.c_str());
}
}
//---------------------------------------------------------------------------
void __fastcall TLogListDlg::KTopClick(TObject *Sender)
{
Grid->Row = 1;
Grid->TopRow = 1;
}
//---------------------------------------------------------------------------
void __fastcall TLogListDlg::KBottomClick(TObject *Sender)
{
Grid->Row = Log.GetCount() + 1;
AdjustTopRow();
}
//---------------------------------------------------------------------------
void __fastcall TLogListDlg::KSortDateClick(TObject *Sender)
{
if( YesNoMB( (Font->Charset != SHIFTJIS_CHARSET)?"This job may need long time. Are you sure?":"<EFBFBD><EFBFBD><EFBFBD>̏<EFBFBD><EFBFBD><EFBFBD><EFBFBD>̓<EFBFBD><EFBFBD>`<60><><EFBFBD><EFBFBD><EFBFBD>R<EFBFBD><52><EFBFBD>Ԃ<EFBFBD><D482><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E982A9><EFBFBD>m<EFBFBD><6D><EFBFBD>܂<EFBFBD><DC82><EFBFBD>.\r\n\r\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>܂<EFBFBD><EFBFBD><EFBFBD><EFBFBD>H" ) == IDYES ){
int top = Grid->Selection.Top - 1;
int end = Grid->Selection.Bottom - 1;
if( top == end ){
top = 0;
end = Log.GetCount() - 1;
}
Log.SortDate(top, end);
Grid->Invalidate();
}
}
//---------------------------------------------------------------------------
void __fastcall TLogListDlg::GridDblClick(TObject *Sender)
{
int n = Grid->Row - 1;
if( (n >= 0) && (n < Log.GetCount()) ){
TQSODlgBox *pBox = new TQSODlgBox(this);
SDMMLOG sd;
Log.GetData(&sd, n);
CLogFind Find;
Log.FindSet(&Find, sd.call);
pBox->Execute(&Find, &sd, n);
Grid->Invalidate();
delete pBox;
}
}
//---------------------------------------------------------------------------
// <20>l<EFBFBD>l<EFBFBD>k<EFBFBD>n<EFBFBD>f<EFBFBD>e<EFBFBD>L<EFBFBD>X<EFBFBD>g<EFBFBD>t<EFBFBD>@<40>C<EFBFBD><43><EFBFBD>̃<EFBFBD><CC83>[<5B>h
void __fastcall TLogListDlg::KMTextReadClick(TObject *Sender)
{
OpenDialog->Options >> ofCreatePrompt;
OpenDialog->Options << ofFileMustExist;
if( Font->Charset != SHIFTJIS_CHARSET ){
OpenDialog->Title = "Load MMLOG Text file";
OpenDialog->Filter = "MMLOG Text Files(*.log)|*.log|";
}
else {
OpenDialog->Title = "MMLOG<EFBFBD>e<EFBFBD>L<EFBFBD>X<EFBFBD>g<EFBFBD>t<EFBFBD>@<40>C<EFBFBD><43><EFBFBD>̃<EFBFBD><CC83>[<5B>h";
OpenDialog->Filter = "MMLOG<EFBFBD>e<EFBFBD>L<EFBFBD>X<EFBFBD>g<EFBFBD>t<EFBFBD>@<40>C<EFBFBD><43>(*.log)|*.log|";
}
OpenDialog->FileName = "";
OpenDialog->DefaultExt = "log";
OpenDialog->InitialDir = MMLogDir;
NormalWindow(this);
if( OpenDialog->Execute() == TRUE ){
LoadMmlogText(AnsiString(OpenDialog->FileName).c_str()); //JA7UDE 0428
}
TopWindow(this);
}
//---------------------------------------------------------------------------
void __fastcall TLogListDlg::KMTextWriteClick(TObject *Sender)
{
SaveDialog->Options << ofOverwritePrompt;
if( Font->Charset != SHIFTJIS_CHARSET ){
SaveDialog->Title = "Save MMLOG Text File";
SaveDialog->Filter = "MMLOG Text Files(*.log)|*.log|";
}
else {
SaveDialog->Title = "MMLOG<EFBFBD>e<EFBFBD>L<EFBFBD>X<EFBFBD>g<EFBFBD>t<EFBFBD>@<40>C<EFBFBD><43><EFBFBD>̍쐬";
SaveDialog->Filter = "MMLOG<EFBFBD>e<EFBFBD>L<EFBFBD>X<EFBFBD>g<EFBFBD>t<EFBFBD>@<40>C<EFBFBD><43>(*.log)|*.log|";
}
char bf[256];
strcpy(bf, Log.GetName());
SetEXT(bf, ".log");
SaveDialog->FileName = bf;
SaveDialog->DefaultExt = "log";
SaveDialog->InitialDir = MMLogDir;
NormalWindow(this);
if( SaveDialog->Execute() == TRUE ){
SaveMmlogText(AnsiString(SaveDialog->FileName).c_str()); //JA7UDE 0428
}
TopWindow(this);
}
//---------------------------------------------------------------------------
int __fastcall TLogListDlg::SureRead(void)
{
int r;
if( Font->Charset != SHIFTJIS_CHARSET ){
r = YesNoCancelMB("MMTTY has QSO data(s) already. Add QSO data from file?\r\n\r\n<Yes>\tAdded to the end\r\n<No>\tOverwrite\r\n\t(All the current data are deleted, and replaced by the read data)\r\n<Cancel>\tAbort this function");
}
else {
r = YesNoCancelMB("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>MMTTY<EFBFBD>Ƀ<EFBFBD><EFBFBD>O<EFBFBD>f<EFBFBD>[<5B>^<5E><><EFBFBD><EFBFBD><EFBFBD>݂<EFBFBD><DD82>܂<EFBFBD>. <20>lj<EFBFBD><C789>ǂ݂<C782><DD82>݂<EFBFBD><DD82>܂<EFBFBD><DC82><EFBFBD><EFBFBD>H\r\n\r\n<<3C>͂<EFBFBD>>\t<EFBFBD><EFBFBD><EFBFBD>݂̃<EFBFBD><EFBFBD>O<EFBFBD>f<EFBFBD>[<5B>^<5E>̍Ō<CC8D><C58C>ɓǂݍ<C782><DD8D>񂾃f<F182BE83>[<5B>^<5E><><EFBFBD>lj<EFBFBD><C789><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.\r\n<<3C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>>\t<EFBFBD><EFBFBD><EFBFBD>݂̃<EFBFBD><EFBFBD>O<EFBFBD>f<EFBFBD>[<5B>^<5E>͑S<CD91>č폜<C48D><ED8F9C><EFBFBD><EFBFBD><EFBFBD>ǂݍ<C782><DD8D>񂾃f<F182BE83>[<5B>^<5E>ɒu<C992><75><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.\r\n<<3C><>ݾ<EFBFBD>>\t<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>~");
}
switch(r){
case IDCANCEL:
return 0;
case IDNO:
if( Font->Charset != SHIFTJIS_CHARSET ){
r = OkCancelMB("Delete All QSO data(s)...(will not be able to restore) Are you sure?");
}
else {
r = OkCancelMB("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>MMTTY<EFBFBD><EFBFBD><EFBFBD>ێ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ă<EFBFBD><EFBFBD><EFBFBD>O<EFBFBD>f<EFBFBD>[<5B>^<5E><><EFBFBD>S<EFBFBD>Ď<EFBFBD><C48E><EFBFBD><EFBFBD>܂<EFBFBD>.\r\n\r\n<EFBFBD>ق<EFBFBD><EFBFBD>܂ɂ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ł<EFBFBD><EFBFBD><EFBFBD><EFBFBD>H");
}
switch(r){
case IDOK:
Log.DeleteAll();
break;
case IDCANCEL:
return 0;
}
break;
default:
break;
}
return 1;
}
//---------------------------------------------------------------------------
void __fastcall TLogListDlg::LoadMmlogText(LPCSTR pName)
{
char bf[1024];
if( Log.GetCount() ){
if( !SureRead() ) return;
}
FILE *fp = fopen(pName, "rt");
if( fp != NULL ){
int r = IDNO;
if( Font->Charset != SHIFTJIS_CHARSET ){
r = YesNoMB("This function exists for compatibility with old software which handle JST.\r\n\r\nAre recorded data UTC?");
}
CWaitCursor w;
SDMMLOG sd;
while(!feof(fp)){
if( fgets(bf, 1023, fp) != NULL ){
ClipLF(bf);
if( bf[0] ){
if( Log.ReadAscii(&sd, bf) == TRUE ){
if( r == IDYES ) UTCtoJST(&sd);
Log.PutData(&sd, Log.GetCount());
}
}
}
}
fclose(fp);
}
else if( Font->Charset != SHIFTJIS_CHARSET ){
ErrorMB("Can't open '%s'", pName);
}
else {
ErrorMB( "'%s'<27><><EFBFBD><EFBFBD><EFBFBD>‚<EFBFBD><C282><EFBFBD><EFBFBD>܂<EFBFBD><DC82><EFBFBD>.", pName);
}
UpdateLogCount(1);
}
//---------------------------------------------------------------------------
void __fastcall TLogListDlg::SaveMmlogText(LPCSTR pName)
{
FILE *fp = fopen(pName, "wt");
if( fp != NULL ){
int r = IDNO;
if( Font->Charset != SHIFTJIS_CHARSET ){
r = YesNoMB("This function exists for compatibility with old software which handle JST.\r\n\r\nDo you want UTC?");
}
SDMMLOG sd;
int b = Grid->Selection.Top - 1;
int e = Grid->Selection.Bottom - 1;
if( e >= Log.GetCount() ) e--;
int i;
CWaitCursor w;
for( i = b; i <= e; i++ ){
Log.GetData(&sd, i);
if( r == IDYES ) JSTtoUTC(&sd);
fprintf(fp, "\042%s\042,\042%s.%02u\042,\042%s\042,\042%s\042,\042%s\042,\042%s\042,",
Log.GetDateString(&sd, 0),
Log.GetTimeString(sd.btime), (sd.btime % 30 * 2),
sd.call, sd.ur, sd.my,
Log.GetFreqString(sd.band, sd.fq)
);
fprintf(fp, "\042%s\042,\042%s\042,\042%s\042,\042%s\042,\042%s\042,\042%s\042,",
Log.GetModeString(sd.mode),
sd.pow, sd.name, sd.qth, sd.rem, sd.qsl
);
fprintf(fp, "\042%s\042,\042%.1s\042,\042%.1s\042,\042%.1s\042,\042%u\042,",
Log.GetTimeString(sd.etime),
&sd.send, &sd.recv, &sd.cq, sd.env
);
fprintf(fp, "\042%s\042,\042%s\042,", sd.opt1, sd.opt2 );
fprintf(fp, "\042%s\042,", Log.GetOptStr(2, &sd));
fprintf(fp, "\042%s\042\n", Log.GetOptStr(3, &sd));
if( ferror(fp) ) break;
}
if( fclose(fp) ){
ErrorMB( Font->Charset != SHIFTJIS_CHARSET ? "Can't save to '%s'" : "'%s'<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ł<EFBFBD><C582>܂<EFBFBD><DC82><EFBFBD><EFBFBD>ł<EFBFBD><C582><EFBFBD>.", pName);
}
}
else if( Font->Charset != SHIFTJIS_CHARSET ){
ErrorMB("Can't save to '%s'", pName);
}
else {
ErrorMB( "'%s'<27><><EFBFBD><EFBFBD>ł<EFBFBD><C582>܂<EFBFBD><DC82><EFBFBD>.", pName);
}
}
//---------------------------------------------------------------------------
void __fastcall TLogListDlg::KSelAllClick(TObject *Sender)
{
TGridRect gRect;
gRect.Top = 1;
gRect.Bottom = Grid->RowCount - 1;
gRect.Left = 0;
gRect.Right = 20;
Grid->Selection = gRect;
}
//---------------------------------------------------------------------------
void __fastcall TLogListDlg::KHlpLogClick(TObject *Sender)
{
if( JanHelp.IsEmpty() ){
ShowHelp(this, sys.m_HelpLog.c_str());
}
else {
ShowHtmlHelp("logging.htm");
}
}
//---------------------------------------------------------------------------
void __fastcall TLogListDlg::KReIndexClick(TObject *Sender)
{
Log.MakeIndex();
}
//---------------------------------------------------------------------------
int __fastcall TLogListDlg::LoadText(LPCSTR pName)
{
TConvDefDlg *pBox = new TConvDefDlg(this);
int r = pBox->Execute(LogText.m_rConv, LogText.m_Delm, LogText.m_UTC, LogText.m_Double, pName);
delete pBox;
if( r == FALSE ) return FALSE;
if( Log.GetCount() ){
if( !SureRead() ) return FALSE;
}
if( LogText.Open(pName) ){
SDMMLOG sd;
CWaitCursor w;
while(LogText.Read(&sd)==TRUE){
Log.PutData(&sd, Log.GetCount());
}
LogText.Close();
}
else {
UpdateLogCount(1);
return FALSE;
}
UpdateLogCount(1);
return TRUE;
}
//---------------------------------------------------------------------------
int __fastcall TLogListDlg::SaveText(LPCSTR pName)
{
int b = Grid->Selection.Top - 1;
int e = Grid->Selection.Bottom - 1;
if( e >= Log.GetCount() ) e--;
TConvDefDlg *pBox = new TConvDefDlg(this);
int r = pBox->Execute(LogText.m_tConv, LogText.m_Delm, LogText.m_UTC, LogText.m_Double, b, e);
delete pBox;
if( r == FALSE ) return FALSE;
if( LogText.Create(pName) ){
SDMMLOG sd;
int i;
CWaitCursor w;
for( i = b; i <= e; i++ ){
Log.GetData(&sd, i);
if( LogText.Write(&sd) == FALSE ) break;
}
LogText.Close();
}
return TRUE;
}
//---------------------------------------------------------------------------
void __fastcall TLogListDlg::KExportTextClick(TObject *Sender)
{
SaveDialog->Options << ofOverwritePrompt;
if( Font->Charset != SHIFTJIS_CHARSET ){
SaveDialog->Title = "Save Text File";
SaveDialog->Filter = "Text Files(*.csv;*.txt)|*.csv;*.txt|";
}
else {
SaveDialog->Title = "<EFBFBD>e<EFBFBD>L<EFBFBD>X<EFBFBD>g<EFBFBD>t<EFBFBD>@<40>C<EFBFBD><43><EFBFBD>̍쐬";
SaveDialog->Filter = "<EFBFBD>e<EFBFBD>L<EFBFBD>X<EFBFBD>g<EFBFBD>t<EFBFBD>@<40>C<EFBFBD><43>(*.csv;*.txt)|*.csv;*.txt|";
}
char bf[256];
strcpy(bf, Log.GetName());
SetEXT(bf, ".csv");
SaveDialog->FileName = bf;
SaveDialog->DefaultExt = "csv";
SaveDialog->InitialDir = ExtLogDir;
NormalWindow(this);
if( SaveDialog->Execute() == TRUE ){
SaveText(AnsiString(SaveDialog->FileName).c_str()); //JA7UDE 0428
SetDirName(ExtLogDir, AnsiString(SaveDialog->FileName).c_str()); //JA7UDE 0428
}
TopWindow(this);
}
//---------------------------------------------------------------------------
void __fastcall TLogListDlg::KImportTextClick(TObject *Sender)
{
OpenDialog->Options >> ofCreatePrompt;
OpenDialog->Options >> ofFileMustExist;
if( Font->Charset != SHIFTJIS_CHARSET ){
OpenDialog->Title = "Load Text File";
OpenDialog->Filter = "Text File(*.csv;*.txt)|*.csv;*.txt|";
}
else {
OpenDialog->Title = "<EFBFBD>e<EFBFBD>L<EFBFBD>X<EFBFBD>g<EFBFBD>t<EFBFBD>@<40>C<EFBFBD><43><EFBFBD>̃<EFBFBD><CC83>[<5B>h";
OpenDialog->Filter = "<EFBFBD>e<EFBFBD>L<EFBFBD>X<EFBFBD>g<EFBFBD>t<EFBFBD>@<40>C<EFBFBD><43>(*.csv;*.txt)|*.csv;*.txt|";
}
OpenDialog->FileName = "";
OpenDialog->DefaultExt = "csv";
OpenDialog->InitialDir = ExtLogDir;
NormalWindow(this);
if( OpenDialog->Execute() == TRUE ){
LoadText(AnsiString(OpenDialog->FileName).c_str()); //JA7UDE 0428
SetDirName(ExtLogDir, AnsiString(OpenDialog->FileName).c_str()); //JA7UDE 0428
}
TopWindow(this);
}
//---------------------------------------------------------------------------
int __fastcall TLogListDlg::LoadLog200(LPCSTR pName)
{
if( Log.GetCount() ){
if( !SureRead() ) return FALSE;
}
CLog200 log200;
if( log200.Open(pName) ){
SDMMLOG sd;
CWaitCursor w;
while(log200.Read(&sd)==TRUE){
Log.PutData(&sd, Log.GetCount());
}
log200.Close();
}
else {
UpdateLogCount(1);
return FALSE;
}
UpdateLogCount(1);
return TRUE;
}
//---------------------------------------------------------------------------
int __fastcall TLogListDlg::SaveLog200(LPCSTR pName)
{
int b = Grid->Selection.Top - 1;
int e = Grid->Selection.Bottom - 1;
if( e >= Log.GetCount() ) e--;
CLog200 log200;
if( log200.Create(pName) ){
SDMMLOG sd;
int i;
CWaitCursor w;
for( i = b; i <= e; i++ ){
Log.GetData(&sd, i);
if( log200.Write(&sd) == FALSE ) break;
}
log200.Close();
}
return TRUE;
}
//---------------------------------------------------------------------------
void __fastcall TLogListDlg::KExportLog200Click(TObject *Sender)
{
SaveDialog->Options << ofOverwritePrompt;
if( Font->Charset != SHIFTJIS_CHARSET ){
SaveDialog->Title = "Save LOG200 Data file";
SaveDialog->Filter = "LOG200 Data File(*.l2)|*.l2|";
}
else {
SaveDialog->Title = "LOG200<EFBFBD>f<EFBFBD>[<5B>^<5E>t<EFBFBD>@<40>C<EFBFBD><43><EFBFBD>̍쐬";
SaveDialog->Filter = "LOG200<EFBFBD>f<EFBFBD>[<5B>^<5E>t<EFBFBD>@<40>C<EFBFBD><43>(*.l2)|*.l2|";
}
char bf[256];
strcpy(bf, Log.GetName());
SetEXT(bf, ".l2");
SaveDialog->FileName = bf;
SaveDialog->DefaultExt = "l2";
SaveDialog->InitialDir = ExtLogDir;
NormalWindow(this);
if( SaveDialog->Execute() == TRUE ){
SaveLog200(AnsiString(SaveDialog->FileName).c_str()); //JA7UDE 0428
SetDirName(ExtLogDir, AnsiString(SaveDialog->FileName).c_str()); //JA7UDE 0428
}
TopWindow(this);
}
//---------------------------------------------------------------------------
void __fastcall TLogListDlg::KImportLog200Click(TObject *Sender)
{
OpenDialog->Options >> ofCreatePrompt;
OpenDialog->Options >> ofFileMustExist;
if( Font->Charset != SHIFTJIS_CHARSET ){
OpenDialog->Title = "Load LOG200 Data File";
OpenDialog->Filter = "LOG200 Data File(*.l2)|*.l2|";
}
else {
OpenDialog->Title = "LOG200<EFBFBD>f<EFBFBD>[<5B>^<5E>t<EFBFBD>@<40>C<EFBFBD><43><EFBFBD>̃<EFBFBD><CC83>[<5B>h";
OpenDialog->Filter = "LOG200<EFBFBD>f<EFBFBD>[<5B>^<5E>t<EFBFBD>@<40>C<EFBFBD><43>(*.l2)|*.l2|";
}
OpenDialog->FileName = "";
OpenDialog->DefaultExt = "l2";
OpenDialog->InitialDir = ExtLogDir;
NormalWindow(this);
if( OpenDialog->Execute() == TRUE ){
LoadLog200(AnsiString(OpenDialog->FileName).c_str()); //JA7UDE 0428
SetDirName(ExtLogDir, AnsiString(OpenDialog->FileName).c_str()); //JA7UDE 0428
}
TopWindow(this);
}
//---------------------------------------------------------------------------
int __fastcall TLogListDlg::LoadHamLog(LPCSTR pName)
{
if( Log.GetCount() ){
if( !SureRead() ) return FALSE;
}
CHamLog HamLog;
if( HamLog.Open(pName) ){
SDMMLOG sd;
CWaitCursor w;
while(HamLog.Read(&sd)==TRUE){
Log.PutData(&sd, Log.GetCount());
}
HamLog.Close();
}
else {
UpdateLogCount(1);
return FALSE;
}
UpdateLogCount(1);
return TRUE;
}
//---------------------------------------------------------------------------
int __fastcall TLogListDlg::LoadHamLog5(LPCSTR pName)
{
if( Log.GetCount() ){
if( !SureRead() ) return FALSE;
}
CHamlog5 HamLog;
if( HamLog.Open(pName, TRUE) ){
SDMMLOG sd;
CWaitCursor w;
DWORD Pos;
for( Pos = 0; Pos < HamLog.GetRCount(); Pos++ ){
if( HamLog.Seek(Pos) ){
HamLog.DecodeData(&sd);
Log.PutData(&sd, Log.GetCount());
}
}
HamLog.Close();
}
else {
UpdateLogCount(1);
return FALSE;
}
UpdateLogCount(1);
return TRUE;
}
//---------------------------------------------------------------------------
int __fastcall TLogListDlg::SaveHamLog(LPCSTR pName)
{
int b = Grid->Selection.Top - 1;
int e = Grid->Selection.Bottom - 1;
if( e >= Log.GetCount() ) e--;
CHamLog HamLog;
if( HamLog.Create(pName) ){
SDMMLOG sd;
int i;
CWaitCursor w;
for( i = b; i <= e; i++ ){
Log.GetData(&sd, i);
if( HamLog.Write(&sd) == FALSE ) break;
}
HamLog.Close();
}
return TRUE;
}
//---------------------------------------------------------------------------
int __fastcall TLogListDlg::SaveHamLog5(LPCSTR pName)
{
int b = Grid->Selection.Top - 1;
int e = Grid->Selection.Bottom - 1;
if( e >= Log.GetCount() ) e--;
char master[256];
SetDirName(master, pName);
strcat(master, "HAMLOG.HDB");
CHamlog5 HamLog;
if( HamLog.Open(master, FALSE) ){ // <20>t<EFBFBD>B<EFBFBD>[<5B><><EFBFBD>h<EFBFBD><68><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǂݍ<C782><DD8D><EFBFBD>
HamLog.Close();
}
else { // <20>t<EFBFBD>B<EFBFBD>[<5B><><EFBFBD>h<EFBFBD><68><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E282A2><EFBFBD>
TTH5LenDlg *pBox = new TTH5LenDlg(this);
if( !pBox->Execute() ){
return FALSE;
}
}
if( HamLog.Create(pName) ){
SDMMLOG sd;
int i;
int n = 0;
CWaitCursor w;
for( i = b; i <= e; i++, n++ ){
Log.GetData(&sd, i);
HamLog.Seek(n);
HamLog.EncodeData(&sd);
if( HamLog.Update() == FALSE ) break;
}
HamLog.Close();
}
return TRUE;
}
//---------------------------------------------------------------------------
void __fastcall TLogListDlg::KImportHamlogClick(TObject *Sender)
{
OpenDialog->Options >> ofCreatePrompt;
OpenDialog->Options >> ofFileMustExist;
if( Font->Charset != SHIFTJIS_CHARSET ){
OpenDialog->Title = "Load HamLog Data File";
OpenDialog->Filter = "HamLog Data File(*.hdb;*.dbs)|*.hdb;*.dbs|";
}
else {
OpenDialog->Title = "HamLog<EFBFBD>f<EFBFBD>[<5B>^<5E>t<EFBFBD>@<40>C<EFBFBD><43><EFBFBD>̃<EFBFBD><CC83>[<5B>h";
OpenDialog->Filter = "HamLog<EFBFBD>f<EFBFBD>[<5B>^<5E>t<EFBFBD>@<40>C<EFBFBD><43>(*.hdb;*.dbs)|*.hdb;*.dbs|";
}
OpenDialog->FileName = "";
OpenDialog->DefaultExt = "hdb";
OpenDialog->InitialDir = ExtLogDir;
NormalWindow(this);
if( OpenDialog->Execute() == TRUE ){
LPCSTR pName = AnsiString(OpenDialog->FileName).c_str(); //JA7UDE 0428
if( !strcmpi(GetEXT(pName), "HDB") ){
LoadHamLog5(pName);
}
else {
LoadHamLog(pName);
}
SetDirName(ExtLogDir, pName);
}
TopWindow(this);
}
//---------------------------------------------------------------------------
void __fastcall TLogListDlg::KExportHamlogClick(TObject *Sender)
{
SaveDialog->Options << ofOverwritePrompt;
if( Font->Charset != SHIFTJIS_CHARSET ){
SaveDialog->Title = "Save HAMLOG Data File";
SaveDialog->Filter = "HAMLOG (Ver5) Data File(*.hdb)|*.hdb|HAMLOG Data File(*.dbs)|*.dbs|";
}
else {
SaveDialog->Title = "HAMLOG<EFBFBD>f<EFBFBD>[<5B>^<5E>t<EFBFBD>@<40>C<EFBFBD><43><EFBFBD>̍쐬";
SaveDialog->Filter = "HAMLOG (Ver5) <20>f<EFBFBD>[<5B>^<5E>t<EFBFBD>@<40>C<EFBFBD><43>(*.hdb)|*.hdb|HAMLOG<4F>f<EFBFBD>[<5B>^<5E>t<EFBFBD>@<40>C<EFBFBD><43>(*.dbs)|*.dbs|";
}
char bf[256];
strcpy(bf, Log.GetName());
SetEXT(bf, ".hdb");
SaveDialog->FileName = bf;
SaveDialog->DefaultExt = "hdb";
SaveDialog->InitialDir = ExtLogDir;
NormalWindow(this);
if( SaveDialog->Execute() == TRUE ){
LPCSTR pName = AnsiString(SaveDialog->FileName).c_str(); //JA7UDE 0428
if( !strcmpi(GetEXT(pName), "HDB") ){
SaveHamLog5(pName);
}
else {
SaveHamLog(pName);
}
SetDirName(ExtLogDir, pName);
}
TopWindow(this);
}
//---------------------------------------------------------------------------
void __fastcall TLogListDlg::KLogOptClick(TObject *Sender)
{
TLogSetDlg *pBox = new TLogSetDlg(this);
pBox->Execute();
delete pBox;
SetTimeZone();
Grid->Invalidate();
}
//---------------------------------------------------------------------------
int __fastcall TLogListDlg::SaveADIF(LPCSTR pName)
{
int b = Grid->Selection.Top - 1;
int e = Grid->Selection.Bottom - 1;
if( e >= Log.GetCount() ) e--;
CLogADIF logADIF;
if( logADIF.Create(pName) ){
SDMMLOG sd;
int i;
CWaitCursor w;
for( i = b; i <= e; i++ ){
Log.GetData(&sd, i);
if( logADIF.Write(&sd) == FALSE ) break;
}
logADIF.Close();
}
return TRUE;
}
//---------------------------------------------------------------------------
int __fastcall TLogListDlg::LoadADIF(LPCSTR pName)
{
if( Log.GetCount() ){
if( !SureRead() ) return FALSE;
}
CLogADIF logADIF;
if( logADIF.Open(pName) ){
SDMMLOG sd;
memset(&sd, 0, sizeof(sd));
CWaitCursor w;
while(logADIF.Read(&sd)==TRUE){
Log.PutData(&sd, Log.GetCount());
memset(&sd, 0, sizeof(sd));
}
logADIF.Close();
}
else {
UpdateLogCount(1);
return FALSE;
}
UpdateLogCount(1);
return TRUE;
}
//---------------------------------------------------------------------------
void __fastcall TLogListDlg::KExportADIFClick(TObject *Sender)
{
SaveDialog->Options << ofOverwritePrompt;
if( Font->Charset != SHIFTJIS_CHARSET ){
SaveDialog->Title = "Save ADIF File";
SaveDialog->Filter = "ADIF Files(*.adi)|*.adi|";
}
else {
SaveDialog->Title = "ADIF <20>t<EFBFBD>@<40>C<EFBFBD><43><EFBFBD>̍쐬";
SaveDialog->Filter = "ADIF <20>t<EFBFBD>@<40>C<EFBFBD><43>(*.adi)|*.adi|";
}
char bf[256];
strcpy(bf, Log.GetName());
SetEXT(bf, ".adi");
SaveDialog->FileName = bf;
SaveDialog->DefaultExt = "adi";
SaveDialog->InitialDir = ExtLogDir;
NormalWindow(this);
if( SaveDialog->Execute() == TRUE ){
SaveADIF(AnsiString(SaveDialog->FileName).c_str()); //JA7UDE 0428
SetDirName(ExtLogDir, AnsiString(SaveDialog->FileName).c_str()); //JA7UDE 0428
}
TopWindow(this);
}
//---------------------------------------------------------------------------
void __fastcall TLogListDlg::KImportADIFClick(TObject *Sender)
{
OpenDialog->Options >> ofCreatePrompt;
OpenDialog->Options >> ofFileMustExist;
if( Font->Charset != SHIFTJIS_CHARSET ){
OpenDialog->Title = "Load ADIF File";
OpenDialog->Filter = "ADIF Files(*.adi;*.txt)|*.adi;*.txt|";
}
else {
OpenDialog->Title = "ADIF <20>t<EFBFBD>@<40>C<EFBFBD><43><EFBFBD>̃<EFBFBD><CC83>[<5B>h";
OpenDialog->Filter = "ADIF <20>t<EFBFBD>@<40>C<EFBFBD><43>(*.adi;*.txt)|*.adi;*.txt|";
}
OpenDialog->FileName = "";
OpenDialog->DefaultExt = "adi";
OpenDialog->InitialDir = ExtLogDir;
NormalWindow(this);
if( OpenDialog->Execute() == TRUE ){
LoadADIF(AnsiString(OpenDialog->FileName).c_str()); //JA7UDE 0428
SetDirName(ExtLogDir, AnsiString(OpenDialog->FileName).c_str()); //JA7UDE 0428
}
TopWindow(this);
}
//---------------------------------------------------------------------------
int __fastcall TLogListDlg::SaveCabrillo(LPCSTR pName)
{
int b = Grid->Selection.Top - 1;
int e = Grid->Selection.Bottom - 1;
if( e >= Log.GetCount() ) e--;
CLogCabrillo logCabrillo;
if( logCabrillo.Create(pName) ){
SDMMLOG sd;
int i;
CWaitCursor w;
for( i = b; i <= e; i++ ){
Log.GetData(&sd, i);
if( logCabrillo.Write(&sd) == FALSE ) break;
}
logCabrillo.Close();
}
return TRUE;
}
//---------------------------------------------------------------------------
void __fastcall TLogListDlg::KExportCabrilloClick(TObject *Sender)
{
SaveDialog->Options << ofOverwritePrompt;
if( Font->Charset != SHIFTJIS_CHARSET ){
SaveDialog->Title = "Save Cabrillo File";
SaveDialog->Filter = "Cabrillo Files(*.txt)|*.txt|";
}
else {
SaveDialog->Title = "Cabrillo <20>t<EFBFBD>@<40>C<EFBFBD><43><EFBFBD>̍쐬";
SaveDialog->Filter = "Cabrillo <20>t<EFBFBD>@<40>C<EFBFBD><43>(*.txt)|*.txt|";
}
char bf[256];
strcpy(bf, Log.GetName());
SetEXT(bf, ".txt");
SaveDialog->FileName = bf;
SaveDialog->DefaultExt = "txt";
SaveDialog->InitialDir = ExtLogDir;
NormalWindow(this);
if( SaveDialog->Execute() == TRUE ){
SaveCabrillo(AnsiString(SaveDialog->FileName).c_str()); //JA7UDE 0428
SetDirName(ExtLogDir, AnsiString(SaveDialog->FileName).c_str()); //JA7UDE 0428
}
TopWindow(this);
}
//---------------------------------------------------------------------------