This source file includes following definitions.
- IMPLEMENT_DYNAMIC
- Create
- Create
- OnInitDialog
- DoDataExchange
- IMPLEMENT_DYNAMIC
- OnInitDialog
- DoDataExchange
- OnSize
- OnClose
- ReloadURLs
- SelectionReady
- OnSelendOK
- PreTranslateMessage
#include "stdafx.h"
#include "osmo4.h"
#include "MainFrm.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
IMPLEMENT_DYNAMIC(CInitDialogBar, CDialogBar)
BEGIN_MESSAGE_MAP(CInitDialogBar, CDialogBar)
END_MESSAGE_MAP()
CInitDialogBar::CInitDialogBar()
{
}
CInitDialogBar::~CInitDialogBar()
{
}
BOOL CInitDialogBar::Create(CWnd * pParentWnd, LPCTSTR lpszTemplateName, UINT nStyle, UINT nID)
{
if(!CDialogBar::Create(pParentWnd, lpszTemplateName, nStyle, nID))
return FALSE;
if (!OnInitDialog()) return FALSE;
return TRUE;
}
BOOL CInitDialogBar::Create(CWnd * pParentWnd, UINT nIDTemplate, UINT nStyle, UINT nID)
{
if(!Create(pParentWnd, MAKEINTRESOURCE(nIDTemplate), nStyle, nID)) return FALSE;
if(!OnInitDialog()) return FALSE;
return TRUE;
}
BOOL CInitDialogBar::OnInitDialog()
{
UpdateData(FALSE);
return TRUE;
}
void CInitDialogBar::DoDataExchange(CDataExchange* pDX)
{
CDialogBar::DoDataExchange(pDX);
}
IMPLEMENT_DYNAMIC(AddressBar, CInitDialogBar)
BEGIN_MESSAGE_MAP(AddressBar, CInitDialogBar)
ON_WM_SIZE()
ON_WM_CLOSE()
ON_CBN_SELENDOK(IDC_ADDRESS, OnSelendOK)
END_MESSAGE_MAP()
AddressBar::AddressBar () : CInitDialogBar()
{
}
BOOL AddressBar::OnInitDialog()
{
CInitDialogBar::OnInitDialog();
return TRUE;
}
void AddressBar::DoDataExchange(CDataExchange* pDX)
{
CInitDialogBar::DoDataExchange(pDX);
DDX_Control(pDX, IDC_DUMTXT, m_Title);
DDX_Control(pDX, IDC_ADDRESS, m_Address);
}
void AddressBar::OnSize(UINT nType, int cx, int cy)
{
u32 w;
POINT pt;
if (!m_Address.m_hWnd) return;
RECT rc;
m_Title.GetClientRect(&rc);
w = rc.right - rc.left;
m_Address.GetWindowRect(&rc);
pt.x = rc.left;
pt.y = rc.top;
ScreenToClient(&pt);
rc.right = cx - pt.x;
m_Address.SetWindowPos(this, 0, 0, rc.right, rc.bottom, SWP_NOZORDER | SWP_NOMOVE);
}
void AddressBar::OnClose()
{
}
void AddressBar::ReloadURLs()
{
Osmo4 *gpac = GetApp();
u32 i=0;
while (m_Address.GetCount()) m_Address.DeleteString(0);
while (1) {
const char *sOpt = gf_cfg_get_key_name(gpac->m_user.config, "RecentFiles", i);
if (!sOpt) return;
m_Address.AddString(sOpt);
i++;
}
}
void AddressBar::SelectionReady()
{
void UpdateLastFiles(GF_Config *cfg, const char *URL);
CString URL;
int sel = m_Address.GetCurSel();
if (sel == CB_ERR) {
m_Address.GetWindowText(URL);
} else {
m_Address.GetLBText(sel, URL);
}
if (!URL.GetLength()) return;
Osmo4 *gpac = GetApp();
Playlist *pl = ((CMainFrame*)gpac->m_pMainWnd)->m_pPlayList;
if (URL.Find("://", 0)>0) {
UpdateLastFiles(gpac->m_user.config, URL);
ReloadURLs();
}
pl->Truncate();
pl->QueueURL(URL);
pl->RefreshList();
pl->PlayNext();
}
void AddressBar::OnSelendOK()
{
SelectionReady();
}
BOOL AddressBar::PreTranslateMessage(MSG* pMsg)
{
if (pMsg->message == WM_KEYDOWN) {
switch (pMsg->wParam) {
case VK_RETURN:
::TranslateMessage(pMsg);
::DispatchMessage(pMsg);
SelectionReady();
return TRUE;
default:
break;
}
}
return CInitDialogBar::PreTranslateMessage(pMsg);
}