//
/// Virtual called after the window holding a gadget has been created
//
void
TControlGadget::Created()
{
  PRECONDITION(GetGadgetWindow());
  PRECONDITION(GetGadgetWindow()->GetHandle());

  // Create control is necessary
  //
  Control->SetParent(GetGadgetWindow());
  if (GetGadgetWindow()->GetHandle() && !Control->GetHandle()) {
    Control->Create();
    Control->ShowWindow(SW_SHOWNA);
  }

  // Register control with the tooltip window (if there's one)
  //
  TTooltip* tooltip = GetGadgetWindow()->GetTooltip();
  if (tooltip) {
    CHECK(tooltip->GetHandle());

    // Register the control with the tooltip
    //
    if (Control->GetHandle()) {
      TToolInfo toolInfo(GetGadgetWindow()->GetHandle(), Control->GetHandle());
      tooltip->AddTool(toolInfo);
    }
  }
}
//
/// Called when the control gadget is removed from the parent window.
//
/// Override the Remove() virtual to take the oportunity to unparent the
/// control window from the owning Window
//
void
TControlGadget::Removed()
{
  TRACEX(OwlGadget, 1, "TControlGadget::Removed @" << (void*)this);
  Control->ShowWindow(SW_HIDE); // Sirma Update
  Control->SetParent(0);
  // Should we destroy the control at this point??
  // Since it's no longer in the parent's child-list, there's a potential
  // leak. However, the semantics of this function is 'Removed' - therefore
  // one could be removing the control to be reinserted in another 
  // gadgetwindow.

  // Unregister ourself with the tooltip window (if there's one)
  //
  if (GetGadgetWindow() && GetGadgetWindow()->GetHandle()) {
    TTooltip* tooltip = GetGadgetWindow()->GetTooltip();
    if (tooltip) {
      CHECK(tooltip->GetHandle());

      TToolInfo toolInfo(GetGadgetWindow()->GetHandle(), Control->GetHandle());
      tooltip->DeleteTool(toolInfo);
    }
  }
}
Exemple #3
0
LRESULT CPlayList::OnInitDialog(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/)
{
	// Init the CDialogResize code
	DlgResize_Init();
    //Bind keys...
    m_haccelerator = AtlLoadAccelerators(IDR_ACCELERATORS_PLAYLIST);
	
	// bind buttons with objects
	btnAdd.Attach(GetDlgItem(IDC_BTN_ADD));
	btnRemove.Attach(GetDlgItem(IDC_BTN_REMOVE));
	btnAddFolder.Attach(GetDlgItem(IDC_BTN_ADDFOLDER));
	btnLoadPlayList.Attach(GetDlgItem(IDC_BTN_LOADPL));
	btnSavePlayList.Attach(GetDlgItem(IDC_BTN_SAVEPL));
	btnPrevMod.Attach(GetDlgItem(IDC_BTN_PREVMODULE));
	btnPlayMod.Attach(GetDlgItem(IDC_BTN_PLAYSELECTION));
	btnNextMod.Attach(GetDlgItem(IDC_BTN_NEXTMODULE));
	HINSTANCE inst = _Module.GetResourceInstance();
	// load & set button icons
	HICON icon = (HICON) ::LoadImage(inst, MAKEINTRESOURCE(IDI_ICON_OPEN),
		IMAGE_ICON, 16, 16, LR_SHARED);
	btnLoadPlayList.SetIcon(icon);
	icon = (HICON) ::LoadImage(inst, MAKEINTRESOURCE(IDI_ICON_SAVE),
		IMAGE_ICON, 16, 16, LR_SHARED);
	btnSavePlayList.SetIcon(icon);
	icon = (HICON) ::LoadImage(inst, MAKEINTRESOURCE(IDI_ICON_PREV),
		IMAGE_ICON, 16, 16, LR_SHARED);
	btnPrevMod.SetIcon(icon);
	icon = (HICON) ::LoadImage(inst, MAKEINTRESOURCE(IDI_ICON_PLAY),
		IMAGE_ICON, 16, 16, LR_SHARED);
	btnPlayMod.SetIcon(icon);
	icon = (HICON) ::LoadImage(inst, MAKEINTRESOURCE(IDI_ICON_NEXT),
		IMAGE_ICON, 16, 16, LR_SHARED);
	btnNextMod.SetIcon(icon);
	//
	UINT uCToolTipCtrlStyle = TTS_NOPREFIX |TTS_NOFADE | TTS_NOANIMATE; // | TTS_BALLOON
	UINT uToolFlags = TTF_IDISHWND | TTF_SUBCLASS;

	ATLVERIFY(NULL != m_wndToolTip[0].Create(m_hWnd, 0, NULL, uCToolTipCtrlStyle)); // WS_POPUP|TTS_NOPREFIX|TTS_NOFADE|TTS_NOANIMATE
	CToolInfo toolInfo(uToolFlags, btnAdd.m_hWnd, 0, 0, _T("Add file(s)"));
	m_wndToolTip[0].AddTool(&toolInfo);
	m_wndToolTip[0].SetDelayTime(TTDT_INITIAL,0);
	m_wndToolTip[0].SetDelayTime(TTDT_RESHOW,0);
	m_wndToolTip[0].Activate(TRUE);
	
	ATLVERIFY(NULL != m_wndToolTip[1].Create(m_hWnd, 0, NULL, uCToolTipCtrlStyle));
	toolInfo.Init(uToolFlags, btnRemove.m_hWnd, 0, 0, _T("Remove File(s)"));
	m_wndToolTip[1].AddTool(&toolInfo);
	m_wndToolTip[1].Activate(TRUE);

	ATLVERIFY(NULL != m_wndToolTip[2].Create(m_hWnd, 0, NULL, uCToolTipCtrlStyle));
	toolInfo.Init(uToolFlags, btnAddFolder.m_hWnd, 0, 0, _T("Add Folder"));
	m_wndToolTip[2].AddTool(&toolInfo);
	m_wndToolTip[2].Activate(TRUE);
	
	// Create the listview columns
	playListView.Attach(GetDlgItem(IDC_LSV1));
	playListView.SetView(LV_VIEW_DETAILS);
	// FIXME doesnt work
	//playListView.SetExtendedListViewStyle(LVS_SHOWSELALWAYS);
	playListView.AddColumn(_T("Filename"), LV_FIELD_FILENAME);
	playListView.SetColumnWidth(LV_FIELD_FILENAME, 150);
	//
	playListView.AddColumn(_T("Title"), LV_FIELD_TITLE);
	playListView.SetColumnWidth(LV_FIELD_TITLE, 120);
	//
	playListView.AddColumn(_T("Author"), LV_FIELD_AUTHOR);
	playListView.SetColumnWidth(LV_FIELD_TITLE, 250);
	//
	playListView.AddColumn(_T("Released"), LV_FIELD_RELEASED);
	playListView.SetColumnWidth(LV_FIELD_TITLE, 200);
	//
	playListView.AddColumn(_T("Path"), LV_FIELD_PATH);
	playListView.SetColumnWidth(LV_FIELD_PATH, 300);
	//
	playListView.AddColumn(_T("Status"), LV_FIELD_STATUS);
	playListView.SetColumnWidth(LV_FIELD_STATUS, 50);
	//
	playListView.AddColumn(_T("Type"), LV_FIELD_TYPE);
	playListView.SetColumnWidth(LV_FIELD_TYPE, 50);
	//
	playListView.AddColumn(_T("Load address"), LV_FIELD_LOAD_ADDRESS);
	playListView.SetColumnWidth(LV_FIELD_LOAD_ADDRESS, 32);
	//
	playListView.AddColumn(_T("#"), LV_FIELD_INDEX);
	playListView.SetColumnWidth(LV_FIELD_INDEX, 32);

	// register hotkeys for the playlist
	::RegisterHotKey(m_hWnd, 1, MOD_ALT | MOD_CONTROL, VK_RIGHT);
	::RegisterHotKey(m_hWnd, 2, MOD_ALT | MOD_CONTROL, VK_LEFT);
	//
	// register object for message filtering and idle updates    
    CMessageLoop* pLoop = _Module.GetMessageLoop();
    ATLASSERT(pLoop != NULL);
    pLoop->AddMessageFilter(this);
    pLoop->AddIdleHandler(this);
	return TRUE;
}