本文整理汇总了C++中CGUIMessage::GetItem方法的典型用法代码示例。如果您正苦于以下问题:C++ CGUIMessage::GetItem方法的具体用法?C++ CGUIMessage::GetItem怎么用?C++ CGUIMessage::GetItem使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CGUIMessage
的用法示例。
在下文中一共展示了CGUIMessage::GetItem方法的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: OnMessage
bool CPlayListPlayer::OnMessage(CGUIMessage &message)
{
switch (message.GetMessage())
{
case GUI_MSG_NOTIFY_ALL:
if (message.GetParam1() == GUI_MSG_UPDATE_ITEM && message.GetItem())
{
// update the items in our playlist(s) if necessary
for (int i = PLAYLIST_MUSIC; i <= PLAYLIST_VIDEO; i++)
{
CPlayList &playlist = GetPlaylist(i);
CFileItemPtr item = std::dynamic_pointer_cast<CFileItem>(message.GetItem());
if (item)
playlist.UpdateItem(item.get());
}
}
break;
case GUI_MSG_PLAYBACK_STOPPED:
{
if (m_iCurrentPlayList != PLAYLIST_NONE && m_bPlaybackStarted)
{
CGUIMessage msg(GUI_MSG_PLAYLISTPLAYER_STOPPED, 0, 0, m_iCurrentPlayList, m_iCurrentSong);
g_windowManager.SendThreadMessage(msg);
Reset();
m_iCurrentPlayList = PLAYLIST_NONE;
return true;
}
}
break;
}
return false;
}
示例2: OnMessage
bool CPlayListPlayer::OnMessage(CGUIMessage &message)
{
switch (message.GetMessage())
{
case GUI_MSG_NOTIFY_ALL:
if (message.GetParam1() == GUI_MSG_UPDATE_ITEM && message.GetItem())
{
// update our item if necessary
CPlayList &playlist = GetPlaylist(m_iCurrentPlayList);
CFileItemPtr item = boost::static_pointer_cast<CFileItem>(message.GetItem());
playlist.UpdateItem(item.get());
}
break;
case GUI_MSG_PLAYBACK_STOPPED:
{
if (m_iCurrentPlayList != PLAYLIST_NONE && m_bPlaybackStarted)
{
CGUIMessage msg(GUI_MSG_PLAYLISTPLAYER_STOPPED, 0, 0, m_iCurrentPlayList, m_iCurrentSong);
g_windowManager.SendThreadMessage(msg);
Reset();
m_iCurrentPlayList = PLAYLIST_NONE;
return true;
}
}
break;
}
return false;
}
示例3: OnMessage
//.........这里部分代码省略.........
else
{
m_history.ClearPathHistory();
m_vecItems->SetPath("");
}
}
}
return true;
}
else if (message.GetParam1()==GUI_MSG_UPDATE_SOURCES)
{ // State of the sources changed, so update our view
if ((m_vecItems->IsVirtualDirectoryRoot() ||
m_vecItems->IsSourcesPath()) && IsActive())
{
int iItem = m_viewControl.GetSelectedItem();
Update(m_vecItems->GetPath());
m_viewControl.SetSelectedItem(iItem);
}
return true;
}
else if (message.GetParam1()==GUI_MSG_UPDATE && IsActive())
{
if (message.GetNumStringParams())
{
m_vecItems->SetPath(message.GetStringParam());
if (message.GetParam2()) // param2 is used for resetting the history
SetHistoryForPath(m_vecItems->GetPath());
}
// clear any cached listing
m_vecItems->RemoveDiscCache(GetID());
Update(m_vecItems->GetPath());
}
else if (message.GetParam1()==GUI_MSG_UPDATE_ITEM && message.GetItem())
{
CFileItemPtr newItem = boost::static_pointer_cast<CFileItem>(message.GetItem());
if (IsActive())
{
if (m_vecItems->UpdateItem(newItem.get()) && message.GetParam2() == 1)
{ // need the list updated as well
UpdateFileList();
}
}
else if (newItem)
{ // need to remove the disc cache
CFileItemList items;
CStdString path;
URIUtils::GetDirectory(newItem->GetPath(), path);
items.SetPath(path);
items.RemoveDiscCache(GetID());
}
}
else if (message.GetParam1()==GUI_MSG_UPDATE_PATH)
{
if (IsActive())
{
if((message.GetStringParam() == m_vecItems->GetPath()) ||
(m_vecItems->IsMultiPath() && XFILE::CMultiPathDirectory::HasPath(m_vecItems->GetPath(), message.GetStringParam())))
{
Update(m_vecItems->GetPath());
}
}
}
else if (message.GetParam1() == GUI_MSG_FILTER_ITEMS && IsActive())
{
CStdString filter(GetProperty("filter").asString());
示例4: OnMessage
bool CGUIDialogKeyboardGeneric::OnMessage(CGUIMessage& message)
{
switch ( message.GetMessage() )
{
case GUI_MSG_CLICKED:
{
int iControl = message.GetSenderId();
switch (iControl)
{
case CTL_BUTTON_DONE:
OnOK();
break;
case CTL_BUTTON_CANCEL:
Close();
break;
case CTL_BUTTON_SHIFT:
OnShift();
break;
case CTL_BUTTON_CAPS:
if (m_keyType == LOWER)
m_keyType = CAPS;
else if (m_keyType == CAPS)
m_keyType = LOWER;
UpdateButtons();
break;
case CTL_BUTTON_LAYOUT:
OnLayout();
break;
case CTL_BUTTON_SYMBOLS:
OnSymbols();
break;
case CTL_BUTTON_LEFT:
MoveCursor( -1);
break;
case CTL_BUTTON_RIGHT:
MoveCursor(1);
break;
case CTL_BUTTON_IP_ADDRESS:
OnIPAddress();
break;
case CTL_BUTTON_CLEAR:
SetEditText("");
break;
case CTL_EDIT:
{
CGUIMessage msg(GUI_MSG_ITEM_SELECTED, GetID(), CTL_EDIT);
OnMessage(msg);
// update callback I guess?
if (m_pCharCallback)
{ // we did _something_, so make sure our search message filter is reset
m_pCharCallback(this, msg.GetLabel());
}
m_text = msg.GetLabel();
return true;
}
default:
OnClickButton(iControl);
break;
}
}
break;
case GUI_MSG_SET_TEXT:
case GUI_MSG_INPUT_TEXT_EDIT:
{
// the edit control only handles these messages if it is either focues
// or its specific control ID is set in the message. As neither is the
// case here (focus is on one of the keyboard buttons) we have to force
// the control ID of the message to the control ID of the edit control
// (unfortunately we have to create a whole copy of the message object for that)
CGUIMessage messageCopy(message.GetMessage(), message.GetSenderId(), CTL_EDIT, message.GetParam1(), message.GetParam2(), message.GetItem());
messageCopy.SetLabel(message.GetLabel());
// ensure this goes to the edit control
CGUIControl *edit = GetControl(CTL_EDIT);
if (edit)
edit->OnMessage(messageCopy);
// close the dialog if requested
if (message.GetMessage() == GUI_MSG_SET_TEXT && message.GetParam1() > 0)
OnOK();
return true;
}
}
return CGUIDialog::OnMessage(message);
}
示例5: OnMessage
//.........这里部分代码省略.........
{ // check that we have this removable share still
if (!m_rootDir.IsInSource(m_vecItems->m_strPath))
{ // don't have this share any more
if (IsActive()) Update("");
else
{
m_history.ClearPathHistory();
m_vecItems->m_strPath="";
}
}
}
return true;
}
else if (message.GetParam1()==GUI_MSG_UPDATE_SOURCES)
{ // State of the sources changed, so update our view
if (m_vecItems->IsVirtualDirectoryRoot() && IsActive())
{
int iItem = m_viewControl.GetSelectedItem();
Update(m_vecItems->m_strPath);
m_viewControl.SetSelectedItem(iItem);
}
return true;
}
else if (message.GetParam1()==GUI_MSG_UPDATE && IsActive())
{
if (message.GetStringParam().size())
{
m_vecItems->m_strPath = message.GetStringParam();
SetHistoryForPath(m_vecItems->m_strPath);
}
Update(m_vecItems->m_strPath);
}
else if (message.GetParam1()==GUI_MSG_UPDATE_ITEM && message.GetItem())
{
CFileItemPtr newItem = boost::static_pointer_cast<CFileItem>(message.GetItem());
if (IsActive())
m_vecItems->UpdateItem(newItem.get());
else if (newItem)
{ // need to remove the disc cache
CFileItemList items;
CUtil::GetDirectory(newItem->m_strPath, items.m_strPath);
items.RemoveDiscCache();
}
}
else if (message.GetParam1()==GUI_MSG_UPDATE_PATH)
{
if (message.GetStringParam() == m_vecItems->m_strPath && IsActive())
Update(m_vecItems->m_strPath);
}
else
return CGUIWindow::OnMessage(message);
return true;
}
break;
case GUI_MSG_PLAYBACK_STARTED:
case GUI_MSG_PLAYBACK_ENDED:
case GUI_MSG_PLAYBACK_STOPPED:
case GUI_MSG_PLAYLIST_CHANGED:
case GUI_MSG_PLAYLISTPLAYER_STOPPED:
case GUI_MSG_PLAYLISTPLAYER_STARTED:
case GUI_MSG_PLAYLISTPLAYER_CHANGED:
{ // send a notify all to all controls on this window
CGUIMessage msg(GUI_MSG_NOTIFY_ALL, GetID(), 0, GUI_MSG_REFRESH_LIST);
OnMessage(msg);
示例6: OnMessage
//.........这里部分代码省略.........
case GUI_MSG_CLICKED:
{
int iControl = message.GetSenderId();
if (iControl == CONTROL_BTN_REFRESH)
{
if (m_movieItem->GetVideoInfoTag()->m_iSeason < 0 && !m_movieItem->GetVideoInfoTag()->m_strShowTitle.IsEmpty()) // tv show
{
bool bCanceled=false;
if (CGUIDialogYesNo::ShowAndGetInput(20377,20378,-1,-1,bCanceled))
{
m_bRefreshAll = true;
CVideoDatabase db;
if (db.Open())
{
db.SetPathHash(m_movieItem->GetVideoInfoTag()->m_strPath,"");
db.Close();
}
}
else
m_bRefreshAll = false;
if (bCanceled)
return false;
}
m_bRefresh = true;
Close();
return true;
}
else if (iControl == CONTROL_BTN_TRACKS)
{
m_bViewReview = !m_bViewReview;
Update();
}
else if (iControl == CONTROL_BTN_PLAY)
{
Play();
}
else if (iControl == CONTROL_BTN_RESUME)
{
Play(true);
}
else if (iControl == CONTROL_BTN_GET_THUMB)
{
OnGetThumb();
}
else if (iControl == CONTROL_BTN_PLAY_TRAILER)
{
PlayTrailer();
}
else if (iControl == CONTROL_BTN_GET_FANART)
{
OnGetFanart();
}
else if (iControl == CONTROL_BTN_DIRECTOR)
{
CStdString strDirector = StringUtils::Join(m_movieItem->GetVideoInfoTag()->m_director, g_advancedSettings.m_videoItemSeparator);
OnSearch(strDirector);
}
else if (iControl == CONTROL_LIST)
{
int iAction = message.GetParam1();
if (ACTION_SELECT_ITEM == iAction || ACTION_MOUSE_LEFT_CLICK == iAction)
{
CGUIMessage msg(GUI_MSG_ITEM_SELECTED, GetID(), iControl);
OnMessage(msg);
int iItem = msg.GetParam1();
if (iItem < 0 || iItem >= m_castList->Size())
break;
CStdString strItem = m_castList->Get(iItem)->GetLabel();
CStdString strFind;
strFind.Format(" %s ",g_localizeStrings.Get(20347));
int iPos = strItem.Find(strFind);
if (iPos == -1)
iPos = strItem.size();
CStdString tmp = strItem.Left(iPos);
OnSearch(tmp);
}
}
}
break;
case GUI_MSG_NOTIFY_ALL:
{
if (IsActive() && message.GetParam1() == GUI_MSG_UPDATE_ITEM && message.GetItem())
{
CFileItemPtr item = boost::static_pointer_cast<CFileItem>(message.GetItem());
if (item && m_movieItem->GetPath().Equals(item->GetPath()))
{ // Just copy over the stream details and the thumb if we don't already have one
if (!m_movieItem->HasThumbnail())
m_movieItem->SetThumbnailImage(item->GetThumbnailImage());
m_movieItem->GetVideoInfoTag()->m_streamDetails = item->GetVideoInfoTag()->m_streamDetails;
}
return true;
}
}
}
return CGUIDialog::OnMessage(message);
}
示例7: OnMessage
bool CGUIDialogVideoInfo::OnMessage(CGUIMessage& message)
{
switch ( message.GetMessage() )
{
case GUI_MSG_WINDOW_DEINIT:
{
ClearCastList();
}
break;
case GUI_MSG_CLICKED:
{
int iControl = message.GetSenderId();
if (iControl == CONTROL_BTN_REFRESH)
{
if (m_movieItem->GetVideoInfoTag()->m_iSeason < 0 && !m_movieItem->GetVideoInfoTag()->m_strShowTitle.IsEmpty()) // tv show
{
bool bCanceled=false;
if (CGUIDialogYesNo::ShowAndGetInput(20377,20378,-1,-1,bCanceled))
{
m_bRefreshAll = true;
CVideoDatabase db;
if (db.Open())
{
db.SetPathHash(m_movieItem->GetVideoInfoTag()->m_strPath,"");
db.Close();
}
}
else
m_bRefreshAll = false;
if (bCanceled)
return false;
}
m_bRefresh = true;
Close();
return true;
}
else if (iControl == CONTROL_BTN_TRACKS)
{
m_bViewReview = !m_bViewReview;
Update();
}
else if (iControl == CONTROL_BTN_PLAY)
{
Play();
}
else if (iControl == CONTROL_BTN_RESUME)
{
Play(true);
}
else if (iControl == CONTROL_BTN_GET_THUMB)
{
OnGetArt();
}
else if (iControl == CONTROL_BTN_PLAY_TRAILER)
{
PlayTrailer();
}
else if (iControl == CONTROL_BTN_GET_FANART)
{
OnGetFanart();
}
else if (iControl == CONTROL_BTN_DIRECTOR)
{
CStdString strDirector = StringUtils::Join(m_movieItem->GetVideoInfoTag()->m_director, g_advancedSettings.m_videoItemSeparator);
OnSearch(strDirector);
}
else if (iControl == CONTROL_LIST)
{
int iAction = message.GetParam1();
if (ACTION_SELECT_ITEM == iAction || ACTION_MOUSE_LEFT_CLICK == iAction)
{
CGUIMessage msg(GUI_MSG_ITEM_SELECTED, GetID(), iControl);
OnMessage(msg);
int iItem = msg.GetParam1();
if (iItem < 0 || iItem >= m_castList->Size())
break;
CStdString strItem = m_castList->Get(iItem)->GetLabel();
CStdString strFind;
strFind.Format(" %s ",g_localizeStrings.Get(20347));
int iPos = strItem.Find(strFind);
if (iPos == -1)
iPos = strItem.size();
CStdString tmp = strItem.Left(iPos);
OnSearch(tmp);
}
}
}
break;
case GUI_MSG_NOTIFY_ALL:
{
if (IsActive() && message.GetParam1() == GUI_MSG_UPDATE_ITEM && message.GetItem())
{
CFileItemPtr item = boost::static_pointer_cast<CFileItem>(message.GetItem());
if (item && m_movieItem->GetPath().Equals(item->GetPath()))
{ // Just copy over the stream details and the thumb if we don't already have one
if (!m_movieItem->HasArt("thumb"))
m_movieItem->SetArt("thumb", item->GetArt("thumb"));
m_movieItem->GetVideoInfoTag()->m_streamDetails = item->GetVideoInfoTag()->m_streamDetails;
//.........这里部分代码省略.........
示例8: OnMessage
bool CGUIBaseContainer::OnMessage(CGUIMessage& message)
{
if (message.GetControlId() == GetID() )
{
if (!m_staticContent)
{
if (message.GetMessage() == GUI_MSG_LABEL_BIND && message.GetLPVOID())
{ // bind our items
Reset();
CFileItemList *items = (CFileItemList *)message.GetLPVOID();
for (int i = 0; i < items->Size(); i++)
m_items.push_back(items->Get(i));
UpdateLayout(true); // true to refresh all items
UpdateScrollByLetter();
SelectItem(message.GetParam1());
return true;
}
if (message.GetMessage() == GUI_MSG_LABEL_ADD && message.GetItem())
{
CGUIListItemPtr item = message.GetItem();
m_items.push_back(item);
UpdateScrollByLetter();
SetPageControlRange();
return true;
}
else if (message.GetMessage() == GUI_MSG_LABEL_RESET)
{
Reset();
SetPageControlRange();
return true;
}
}
if (message.GetMessage() == GUI_MSG_ITEM_SELECTED)
{
message.SetParam1(GetSelectedItem());
return true;
}
else if (message.GetMessage() == GUI_MSG_PAGE_CHANGE)
{
if (message.GetSenderId() == m_pageControl && IsVisible())
{ // update our page if we're visible - not much point otherwise
if ((int)message.GetParam1() != m_offset)
m_pageChangeTimer.StartZero();
ScrollToOffset(message.GetParam1());
return true;
}
}
else if (message.GetMessage() == GUI_MSG_REFRESH_LIST)
{ // update our list contents
for (unsigned int i = 0; i < m_items.size(); ++i)
m_items[i]->SetInvalid();
}
else if (message.GetMessage() == GUI_MSG_MOVE_OFFSET)
{
int count = (int)message.GetParam1();
while (count < 0)
{
MoveUp(true);
count++;
}
while (count > 0)
{
MoveDown(true);
count--;
}
return true;
}
}
return CGUIControl::OnMessage(message);
}
示例9: OnMessage
bool CGUIWindowEventLog::OnMessage(CGUIMessage& message)
{
switch (message.GetMessage())
{
case GUI_MSG_WINDOW_INIT:
{
m_rootDir.AllowNonLocalSources(false);
// is this the first time the window is opened?
if (m_vecItems->GetPath() == "?" && message.GetStringParam().empty())
m_vecItems->SetPath("");
break;
}
case GUI_MSG_CLICKED:
{
int iControl = message.GetSenderId();
// check if we should clear all items
if (iControl == CONTROL_BUTTON_CLEAR)
{
CEventLog::GetInstance().Clear(CViewStateSettings::GetInstance().GetEventLevel(), CViewStateSettings::GetInstance().ShowHigherEventLevels());
// refresh the list
Refresh(true);
return true;
}
// check if we should change the level
if (iControl == CONTROL_BUTTON_LEVEL)
{
// update the event level
CViewStateSettings::GetInstance().CycleEventLevel();
CSettings::GetInstance().Save();
// update the listing
Refresh();
return true;
}
// check if we should change the level
if (iControl == CONTROL_BUTTON_LEVEL_ONLY)
{
// update whether to show higher event levels
CViewStateSettings::GetInstance().ToggleShowHigherEventLevels();
CSettings::GetInstance().Save();
// update the listing
Refresh();
return true;
}
// check if the user interacted with one of the events
if (m_viewControl.HasControl(iControl))
{
// get selected item
int itemIndex = m_viewControl.GetSelectedItem();
if (itemIndex < 0 || itemIndex >= m_vecItems->Size())
break;
CFileItemPtr item = m_vecItems->Get(itemIndex);
int actionId = message.GetParam1();
if (actionId == ACTION_DELETE_ITEM)
return OnDelete(item);
}
break;
}
case GUI_MSG_NOTIFY_ALL:
{
CFileItemPtr item = std::dynamic_pointer_cast<CFileItem>(message.GetItem());
if (item == nullptr)
break;
switch (message.GetParam1())
{
case GUI_MSG_EVENT_ADDED:
OnEventAdded(item);
return true;
case GUI_MSG_EVENT_REMOVED:
OnEventRemoved(item);
return true;
default:
break;
}
}
default:
break;
}
return CGUIMediaWindow::OnMessage(message);
}