Commit 7a519ab7 authored by Michael Smith's avatar Michael Smith

icecast2/win32 updates from oddsock.

svn path=/trunk/icecast/; revision=3878
parent 07de3c2d
......@@ -12,18 +12,19 @@ Class1=CIcecast2winApp
Class2=CIcecast2winDlg
Class3=CAboutDlg
ResourceCount=8
Resource1=IDD_ABOUTBOX
ResourceCount=9
Resource1=IDR_MENU3
Resource2=IDR_MAINFRAME
Resource3=IDD_ICECAST2WIN_DIALOG
Resource3=IDD_ABOUTBOX
Resource4=IDD_STATSDIALOG
Class4=CStatus
Resource5=IDD_CONFIGDIALOG
Resource5=IDR_MENU2
Class5=CConfigTab
Class6=CStatsTab
Resource6=IDD_SSTATUS
Resource7=IDR_MENU2
Resource8=IDR_MENU3
Resource7=IDD_CONFIGDIALOG
Resource8=IDD_ICECAST2WIN_DIALOG
Resource9=IDR_TRAY
[CLS:CIcecast2winApp]
Type=0
......@@ -35,8 +36,8 @@ Filter=N
Type=0
HeaderFile=Icecast2winDlg.h
ImplementationFile=Icecast2winDlg.cpp
Filter=D
LastObject=ID__MAKETHISSTATTHEWINDOWTITLE
Filter=C
LastObject=IDC_HIDESYSTRAY
BaseClass=CResizableDialog
VirtualFilter=dWC
......@@ -57,14 +58,15 @@ Control3=IDOK,button,1342373889
[DLG:IDD_ICECAST2WIN_DIALOG]
Type=1
Class=CIcecast2winDlg
ControlCount=7
ControlCount=8
Control1=IDC_MAINTAB,SysTabControl32,1342177280
Control2=IDC_START,button,1342242816
Control3=IDC_AUTOSTART,button,1342251011
Control4=IDC_STATIC,static,1342177294
Control5=IDC_SERVERSTATUS,static,1342177294
Control6=IDC_STATIC_SS,static,1342308354
Control6=IDC_STATIC_SS,static,1342308865
Control7=IDC_STATICBLACK,static,1342177294
Control8=IDC_HIDESYSTRAY,button,1342242816
[DLG:IDD_SSTATUS]
Type=1
......@@ -132,3 +134,9 @@ Command1=ID__DELETEFROMGLOBALSTATS
Command2=ID__MAKETHISSTATTHEWINDOWTITLE
CommandCount=2
[MNU:IDR_TRAY]
Type=1
Class=CIcecast2winDlg
Command1=ID_BLANK_RESTORE
CommandCount=1
......@@ -69,6 +69,8 @@ BOOL CIcecast2winApp::InitInstance()
// SetDialogBkColor(BGCOLOR,TEXTCOLOR);
m_pIconList[0] = LoadIcon (MAKEINTRESOURCE(IDR_MAINFRAME));
int nResponse = dlg.DoModal();
if (nResponse == IDOK)
{
......
......@@ -145,6 +145,14 @@ SOURCE=.\TabPageSSL.cpp
SOURCE=.\TabPageSSL.h
# End Source File
# Begin Source File
SOURCE=.\Traynot.cpp
# End Source File
# Begin Source File
SOURCE=.\TRAYNOT.H
# End Source File
# End Group
# Begin Group "Header Files"
......@@ -223,10 +231,6 @@ SOURCE=.\res\Icecast2.ico
# End Source File
# Begin Source File
SOURCE=.\icecast2logo.bmp
# End Source File
# Begin Source File
SOURCE=.\icecast2logo2.bmp
# End Source File
# Begin Source File
......
......@@ -79,7 +79,7 @@ STYLE WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION |
WS_SYSMENU | WS_THICKFRAME
EXSTYLE WS_EX_APPWINDOW
CAPTION "icecast2"
FONT 8, "MS Sans Serif", 0, 0, 0x1
FONT 8, "MS Sans Serif"
BEGIN
CONTROL "Tab1",IDC_MAINTAB,"SysTabControl32",0x0,0,48,318,201
PUSHBUTTON "Start Server",IDC_START,17,31,56,14
......@@ -87,10 +87,12 @@ BEGIN
"Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,76,
29,81,17
CONTROL 159,IDC_STATIC,"Static",SS_BITMAP,0,0,117,20
CONTROL 151,IDC_SERVERSTATUS,"Static",SS_BITMAP,253,28,65,18,
CONTROL 151,IDC_SERVERSTATUS,"Static",SS_BITMAP,173,32,65,18,
WS_EX_CLIENTEDGE
RTEXT "Server Status",IDC_STATIC_SS,163,28,86,14
CTEXT "Server Status",IDC_STATIC_SS,172,23,65,10,
SS_CENTERIMAGE
CONTROL 150,IDC_STATICBLACK,"Static",SS_BITMAP,116,0,200,20
PUSHBUTTON "Hide To Systray",IDC_HIDESYSTRAY,257,22,58,12
END
IDD_SSTATUS DIALOG DISCARDABLE 0, 0, 320, 210
......@@ -233,6 +235,14 @@ BEGIN
END
END
IDR_TRAY MENU DISCARDABLE
BEGIN
POPUP "Blank"
BEGIN
MENUITEM "Restore", ID_BLANK_RESTORE
END
END
/////////////////////////////////////////////////////////////////////////////
//
......
......@@ -42,6 +42,9 @@ bool g_tailError = false;
void CollectStats(stats_event_t *event);
CString gConfigurationSave;
char gTitleSource[1024] = "";
char gTitleName[1024] = "";
#define MAXSTATSPERSOURCE 30
#define MAXSOURCES 1024
......@@ -64,6 +67,7 @@ typedef struct tagMainElement {
CString source;
long numStats;
Element stats[MAXSTATSPERSOURCE];
int populated;
} MainElement;
typedef struct tagMainElementAdditional {
......@@ -82,6 +86,7 @@ extern "C" {
int main(int argc, char **argv);
}
void AddToAdditionalGlobalStats(CString source, CString name) {
int foundit = 0;
for (int i=0;i<gAdditionalGlobalStats.numStats;i++) {
......@@ -218,6 +223,7 @@ CIcecast2winDlg::CIcecast2winDlg(CWnd* pParent /*=NULL*/)
//}}AFX_DATA_INIT
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
m_pTray = NULL;
}
void CIcecast2winDlg::DoDataExchange(CDataExchange* pDX)
......@@ -245,6 +251,10 @@ BEGIN_MESSAGE_MAP(CIcecast2winDlg, CResizableDialog)
ON_BN_CLICKED(IDC_START, OnStart)
ON_WM_CLOSE()
ON_WM_SIZE()
ON_BN_CLICKED(IDC_HIDESYSTRAY, OnHidesystray)
ON_COMMAND(ID_BLANK_RESTORE, OnBlankRestore)
ON_MESSAGE(WM_TRAY_NOTIFY, OnTrayNotify)
ON_WM_DESTROY()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
......@@ -314,7 +324,7 @@ BOOL CIcecast2winDlg::OnInitDialog()
runningBitmap.LoadBitmap(IDB_BITMAP6);
stoppedBitmap.LoadBitmap(IDB_BITMAP5);
m_SS.SetFont(&labelFont, TRUE);
//m_SS.SetFont(&labelFont, TRUE);
UpdateData(FALSE);
......@@ -530,6 +540,7 @@ void CIcecast2winDlg::OnFileExit()
{
// TODO: Add your command handler code here
DestroyWindow();
}
......@@ -615,16 +626,13 @@ void CollectStats(stats_event_t *event)
}
int foundit = 0;
for (int i=0;i<numMainStats;i++) {
if (!strcmp(gStats[i].source, tempSource)) {
int foundit2 = 0;
gStats[i].populated = 1;
for (int j=0;j<gStats[i].numStats;j++) {
// if (!strcmp(gStats[i].stats[j].name, tempElement.name)) {
// strcpy(gStats[i].stats[j].value, tempElement.value);
if (gStats[i].stats[j].name == tempElement.name) {
//strcpy(gStats[i].stats[j].value, tempElement.value);
gStats[i].stats[j].value = tempElement.value;
foundit2 = 1;
......@@ -642,14 +650,34 @@ void CollectStats(stats_event_t *event)
if (!foundit) {
// strcpy(gStats[numMainStats].source, tempSource);
if (strlen(tempSource) == 0) {
strcpy(tempSource, "Global Stat");
}
gStats[numMainStats].source = tempSource;
gStats[numMainStats].stats[0].name = tempElement.name;
gStats[numMainStats].stats[0].value = tempElement.value;
gStats[numMainStats].populated = 1;
// memcpy(&gStats[numMainStats].stats[0], &tempElement, sizeof(tempElement));
gStats[numMainStats].numStats++;
numMainStats++;
}
// Process source disconnects
if (event->name != NULL) {
if (!strcmp(event->name, "listeners")) {
if (event->value == NULL) {
// source has disconnected...
for (int i=0;i<numMainStats;i++) {
if (!strcmp(gStats[i].source, tempSource)) {
gStats[i].populated = 0;
g_mainDialog->statsTab.m_SourceListCtrl.DeleteAllItems();
g_mainDialog->statsTab.m_StatsListCtrl.DeleteAllItems();
break;
}
}
}
}
}
g_mainDialog->UpdateStatsLists();
}
......@@ -834,167 +862,172 @@ void CIcecast2winDlg::UpdateStatsLists()
for (int i=0;i<numMainStats;i++) {
int inthere = 0;
int k = 0;
for (l=0;l < gAdditionalGlobalStats.numStats;l++) {
for (int m=0;m < gStats[i].numStats;m++) {
if ((gAdditionalGlobalStats.stats[l].source == gStats[i].source) &&
(gAdditionalGlobalStats.stats[l].name == gStats[i].stats[m].name)) {
gAdditionalGlobalStats.stats[l].value = gStats[i].stats[m].value;
break;
if (gStats[i].populated) {
for (l=0;l < gAdditionalGlobalStats.numStats;l++) {
for (int m=0;m < gStats[i].numStats;m++) {
if ((gAdditionalGlobalStats.stats[l].source == gStats[i].source) &&
(gAdditionalGlobalStats.stats[l].name == gStats[i].stats[m].name)) {
gAdditionalGlobalStats.stats[l].value = gStats[i].stats[m].value;
break;
}
}
}
}
if (strlen(gStats[i].source) > 0) {
for (k=0;k < statsTab.m_SourceListCtrl.GetItemCount();k++) {
if (strcmp(gStats[i].source, "Global Stat")) {
// If Not Global STat
for (k=0;k < statsTab.m_SourceListCtrl.GetItemCount();k++) {
statsTab.m_SourceListCtrl.GetItemText(k, 0, item, sizeof(item));
if (!strcmp(gStats[i].source, item)) {
inthere = 1;
break;
statsTab.m_SourceListCtrl.GetItemText(k, 0, item, sizeof(item));
if (!strcmp(gStats[i].source, item)) {
inthere = 1;
break;
}
}
}
if (!inthere) {
if (gStats[i].source != "") {
LVITEM lvi;
lvi.mask = LVIF_IMAGE | LVIF_TEXT;
lvi.iItem = statsTab.m_SourceListCtrl.GetItemCount();
lvi.iSubItem = 0;
lvi.pszText = (LPTSTR)(LPCTSTR)gStats[i].source;
statsTab.m_SourceListCtrl.InsertItem(&lvi);
if (!inthere) {
if (gStats[i].source != "") {
LVITEM lvi;
lvi.mask = LVIF_IMAGE | LVIF_TEXT;
lvi.iItem = statsTab.m_SourceListCtrl.GetItemCount();
lvi.iSubItem = 0;
lvi.pszText = (LPTSTR)(LPCTSTR)gStats[i].source;
statsTab.m_SourceListCtrl.InsertItem(&lvi);
}
}
}
int nItemSelected = statsTab.m_SourceListCtrl.GetSelectionMark();
if (nItemSelected != -1) {
memset(item, '\000', sizeof(item));
statsTab.m_SourceListCtrl.GetItemText(nItemSelected, 0, item, sizeof(item));
if (!strcmp(gStats[i].source, item)) {
for (int l=0;l<gStats[i].numStats;l++) {
int inthere2 = 0;
char item2[1024] = "";
for (int m=0;m < statsTab.m_StatsListCtrl.GetItemCount();m++) {
statsTab.m_StatsListCtrl.GetItemText(m, 0, item2, sizeof(item2));
if (!strcmp(gStats[i].stats[l].name, item2)) {
int nItemSelected = statsTab.m_SourceListCtrl.GetSelectionMark();
if (nItemSelected != -1) {
memset(item, '\000', sizeof(item));
statsTab.m_SourceListCtrl.GetItemText(nItemSelected, 0, item, sizeof(item));
if (!strcmp(gStats[i].source, item)) {
for (int l=0;l<gStats[i].numStats;l++) {
int inthere2 = 0;
char item2[1024] = "";
for (int m=0;m < statsTab.m_StatsListCtrl.GetItemCount();m++) {
statsTab.m_StatsListCtrl.GetItemText(m, 0, item2, sizeof(item2));
if (!strcmp(gStats[i].stats[l].name, item2)) {
LVITEM lvi;
lvi.mask = LVIF_TEXT;
lvi.iItem = m;
lvi.iSubItem = 1;
lvi.pszText = (LPTSTR)(LPCTSTR)gStats[i].stats[l].value;
statsTab.m_StatsListCtrl.SetItem(&lvi);
inthere2 = 1;
break;
}
}
if (!inthere2) {
LVITEM lvi;
lvi.mask = LVIF_TEXT;
lvi.iItem = m;
lvi.iItem = statsTab.m_StatsListCtrl.GetItemCount();
lvi.iSubItem = 0;
lvi.pszText = (LPTSTR)(LPCTSTR)gStats[i].stats[l].name;
statsTab.m_StatsListCtrl.InsertItem(&lvi);
lvi.iSubItem = 1;
lvi.pszText = (LPTSTR)(LPCTSTR)gStats[i].stats[l].value;
statsTab.m_StatsListCtrl.SetItem(&lvi);
inthere2 = 1;
break;
}
}
if (!inthere2) {
}
}
for (l=0;l < gAdditionalGlobalStats.numStats;l++) {
int inthere2 = 0;
char item2[1024] = "";
char item3[1024] = "";
CString itemSource;
CString itemName;
for (int m=0;m < statusTab.m_GlobalStatList.GetItemCount();m++) {
statusTab.m_GlobalStatList.GetItemText(m, 0, item2, sizeof(item2));
statusTab.m_GlobalStatList.GetItemText(m, 1, item3, sizeof(item3));
itemSource = item2;
itemName = item3;
if ((gAdditionalGlobalStats.stats[l].source == itemSource) &&
(gAdditionalGlobalStats.stats[l].name == itemName)) {
LVITEM lvi;
lvi.mask = LVIF_TEXT;
lvi.iItem = statsTab.m_StatsListCtrl.GetItemCount();
lvi.iSubItem = 0;
lvi.pszText = (LPTSTR)(LPCTSTR)gStats[i].stats[l].name;
statsTab.m_StatsListCtrl.InsertItem(&lvi);
lvi.iSubItem = 1;
lvi.pszText = (LPTSTR)(LPCTSTR)gStats[i].stats[l].value;
statsTab.m_StatsListCtrl.SetItem(&lvi);
lvi.iItem = m;
lvi.iSubItem = 2;
lvi.pszText = (LPTSTR)(LPCTSTR)gAdditionalGlobalStats.stats[l].value;
statusTab.m_GlobalStatList.SetItem(&lvi);
inthere2 = 1;
break;
}
}
}
}
for (l=0;l < gAdditionalGlobalStats.numStats;l++) {
int inthere2 = 0;
char item2[1024] = "";
char item3[1024] = "";
CString itemSource;
CString itemName;
for (int m=0;m < statusTab.m_GlobalStatList.GetItemCount();m++) {
statusTab.m_GlobalStatList.GetItemText(m, 0, item2, sizeof(item2));
statusTab.m_GlobalStatList.GetItemText(m, 1, item3, sizeof(item3));
itemSource = item2;
itemName = item3;
if ((gAdditionalGlobalStats.stats[l].source == itemSource) &&
(gAdditionalGlobalStats.stats[l].name == itemName)) {
if (!inthere2) {
LVITEM lvi;
lvi.mask = LVIF_TEXT;
lvi.iItem = m;
lvi.iItem = statusTab.m_GlobalStatList.GetItemCount();
lvi.iSubItem = 0;
lvi.pszText = (LPTSTR)(LPCTSTR)gAdditionalGlobalStats.stats[l].source;
statusTab.m_GlobalStatList.InsertItem(&lvi);
lvi.iSubItem = 1;
lvi.pszText = (LPTSTR)(LPCTSTR)gAdditionalGlobalStats.stats[l].name;
statusTab.m_GlobalStatList.SetItem(&lvi);
lvi.iSubItem = 2;
lvi.pszText = (LPTSTR)(LPCTSTR)gAdditionalGlobalStats.stats[l].value;
statusTab.m_GlobalStatList.SetItem(&lvi);
inthere2 = 1;
break;
}
}
if (!inthere2) {
LVITEM lvi;
lvi.mask = LVIF_TEXT;
lvi.iItem = statusTab.m_GlobalStatList.GetItemCount();
lvi.iSubItem = 0;
lvi.pszText = (LPTSTR)(LPCTSTR)gAdditionalGlobalStats.stats[l].source;
statusTab.m_GlobalStatList.InsertItem(&lvi);
lvi.iSubItem = 1;
lvi.pszText = (LPTSTR)(LPCTSTR)gAdditionalGlobalStats.stats[l].name;
statusTab.m_GlobalStatList.SetItem(&lvi);
lvi.iSubItem = 2;
lvi.pszText = (LPTSTR)(LPCTSTR)gAdditionalGlobalStats.stats[l].value;
statusTab.m_GlobalStatList.SetItem(&lvi);
if ((!strcmp(gAdditionalGlobalStats.stats[l].source, gTitleSource)) &&
(!strcmp(gAdditionalGlobalStats.stats[l].name, gTitleName))) {
gAdditionalGlobalStats.stats[l].titleFlag = 1;
}
if (gAdditionalGlobalStats.stats[l].titleFlag) {
CString windowTitle = gAdditionalGlobalStats.stats[l].source + " - " + gAdditionalGlobalStats.stats[l].name + " - " + gAdditionalGlobalStats.stats[l].value;
SetWindowText(windowTitle);
}
}
}
}
else {
for (k=0;k < gStats[i].numStats;k++) {
inthere = 0;
for (l=0;l < statusTab.m_GlobalStatList.GetItemCount();l++) {
else {
// If Global Stat
for (k=0;k < gStats[i].numStats;k++) {
inthere = 0;
for (l=0;l < statusTab.m_GlobalStatList.GetItemCount();l++) {
statusTab.m_GlobalStatList.GetItemText(l, 1, item, sizeof(item));
if (!strcmp(gStats[i].stats[k].name, item)) {
inthere = 1;
break;
}
}
if (!inthere) {
LVITEM lvi;
statusTab.m_GlobalStatList.GetItemText(l, 1, item, sizeof(item));
if (!strcmp(gStats[i].stats[k].name, item)) {
inthere = 1;
break;
lvi.mask = LVIF_IMAGE | LVIF_TEXT;
lvi.iItem = statsTab.m_SourceListCtrl.GetItemCount();
lvi.iSubItem = 0;
lvi.pszText = (LPTSTR)(LPCTSTR)gStats[i].source;
statusTab.m_GlobalStatList.InsertItem(&lvi);
lvi.iSubItem = 1;
lvi.pszText = (LPTSTR)(LPCTSTR)gStats[i].stats[k].name;
statusTab.m_GlobalStatList.SetItem(&lvi);
lvi.iSubItem = 2;
lvi.pszText = (LPTSTR)(LPCTSTR)gStats[i].stats[k].value;
statusTab.m_GlobalStatList.SetItem(&lvi);
}
}
if (!inthere) {
LVITEM lvi;
lvi.mask = LVIF_IMAGE | LVIF_TEXT;
lvi.iItem = statsTab.m_SourceListCtrl.GetItemCount();
lvi.iSubItem = 0;
lvi.pszText = "Global Stat";
statusTab.m_GlobalStatList.InsertItem(&lvi);
lvi.iSubItem = 1;
lvi.pszText = (LPTSTR)(LPCTSTR)gStats[i].stats[k].name;
statusTab.m_GlobalStatList.SetItem(&lvi);
lvi.iSubItem = 2;
lvi.pszText = (LPTSTR)(LPCTSTR)gStats[i].stats[k].value;
statusTab.m_GlobalStatList.SetItem(&lvi);
}
else {
LVITEM lvi;
else {
LVITEM lvi;
lvi.mask = LVIF_IMAGE | LVIF_TEXT;
lvi.iItem = l;
lvi.iSubItem = 2;
lvi.pszText = (LPTSTR)(LPCTSTR)gStats[i].stats[k].value;
statusTab.m_GlobalStatList.SetItem(&lvi);
lvi.mask = LVIF_IMAGE | LVIF_TEXT;
lvi.iItem = l;
lvi.iSubItem = 2;
lvi.pszText = (LPTSTR)(LPCTSTR)gStats[i].stats[k].value;
statusTab.m_GlobalStatList.SetItem(&lvi);
}
if ((!strcmp(gStats[i].source, gTitleSource)) &&
(!strcmp(gStats[i].stats[k].name, gTitleName))) {
gStats[i].stats[k].titleFlag = 1;
}
if (gStats[i].stats[k].titleFlag) {
CString windowTitle = gStats[i].source + " - " + gStats[i].stats[k].name + " - " + gStats[i].stats[k].value;
SetWindowText(windowTitle);
}
}
}
}
}
for (l=0;l < gAdditionalGlobalStats.numStats;l++) {
if (gAdditionalGlobalStats.stats[l].titleFlag) {
CString windowTitle = gAdditionalGlobalStats.stats[l].source + " - " + gAdditionalGlobalStats.stats[l].name + " - " + gAdditionalGlobalStats.stats[l].value;
SetWindowText(windowTitle);
}
}
for (l=0;l < numMainStats;l++) {
for (int k=0;k < gStats[i].numStats;k++) {
if (gStats[i].stats[k].titleFlag) {
CString windowTitle = gStats[i].source + " - " + gStats[i].stats[l].name + " - " + gAdditionalGlobalStats.stats[l].value;
SetWindowText(windowTitle);
}
}
}
}
char gAppName[255] = "icecast2";
......@@ -1047,14 +1080,27 @@ void CIcecast2winDlg::config_write()
sprintf(buf2, "AdditionalStatsName%d", i);
WritePrivateProfileString(gAppName, buf2, gAdditionalGlobalStats.stats[i].name, gConfigFile);
gAdditionalGlobalStats.stats[i].name = buf;
if (gAdditionalGlobalStats.stats[i].titleFlag) {
sprintf(buf2, "%s|%s", gAdditionalGlobalStats.stats[i].source, gAdditionalGlobalStats.stats[i].name);
WritePrivateProfileString(gAppName, "TitleName", buf2, gConfigFile);
}
}
for (i=0;i<numMainStats;i++) {
for (int k=0;k < gStats[i].numStats;k++) {
if (gStats[i].stats[k].titleFlag) {
sprintf(buf2, "%s|%s", gStats[i].source, gStats[i].stats[k].name);
WritePrivateProfileString(gAppName, "TitleName", buf2, gConfigFile);
}
}
}
}
void CIcecast2winDlg::config_read()
{
char buf2[255] = "";
char buf[255] = "";
char buf2[1024] = "";
char buf[1024] = "";
CString tempString;
m_colSource0Width = GetPrivateProfileInt(gAppName, "col0SourceWidth", 150, gConfigFile);
......@@ -1084,6 +1130,28 @@ void CIcecast2winDlg::config_read()
gAdditionalGlobalStats.stats[i].name = buf;
gAdditionalGlobalStats.numStats++;
}
GetPrivateProfileString(gAppName, "TitleName", "", buf, sizeof(buf), gConfigFile);
/*
if (strlen(buf) > 0) {
char *p1 = strchr(buf, '|');
if (p1) {
char tmpSource[1024] = "";
char tmpName[1024] = "";
memset(tmpSource, '\000', sizeof(tmpSource));
memset(tmpName, '\000', sizeof(tmpName));
strncpy(tmpSource, buf, p1-buf);
p1++;
strcpy(tmpName, p1);
strcpy(gTitleSource, tmpSource);
strcpy(gTitleName, tmpName);
}
}
*/
}
......@@ -1111,8 +1179,76 @@ void CIcecast2winDlg::OnSize(UINT nType, int cx, int cy)
}