The class containing the datastructure of the GUIMessages that are sent between windows and components.
示例#1
0
 public override bool OnMessage(GUIMessage message)
 {
   switch (message.Message)
   {
     case GUIMessage.MessageType.GUI_MSG_WINDOW_INIT:
       {
         base.OnMessage(message);
         Update();
         return true;
       }
     case GUIMessage.MessageType.GUI_MSG_WINDOW_DEINIT:
       {
         if (m_pTexture != null)
         {
           m_pTexture.Dispose();
         }
         m_pTexture = null;
         base.OnMessage(message);
         // Fix for Mantis issue: 0001709: Background not correct after viewing pictures properties twice
         Restore();
         return true;
       }
   }
   return base.OnMessage(message);
 }
    public virtual void PageLoad(int ParentID)
    {
      CloseRoutedWindow();

      _parentWindowID = ParentID;
      _parentWindow = GUIWindowManager.GetWindow(_parentWindowID);
      if (_parentWindow == null)
      {
        _parentWindowID = 0;
        return;
      }
      GUIWindowManager.IsSwitchingToNewWindow = true;
      lock (thisLock)
      {
        GUIWindowManager.RouteToWindow(GetID);
        GUIMessage msg = new GUIMessage(GUIMessage.MessageType.GUI_MSG_WINDOW_INIT, GetID, 0, 0, _parentWindowID, 0,
                                        null);
        OnMessage(msg);
        _running = true;
      }
      GUIWindowManager.IsSwitchingToNewWindow = false;

      while (IsAnimating(AnimationType.WindowOpen) &&
             GUIGraphicsContext.CurrentState == GUIGraphicsContext.State.RUNNING)
      {
        GUIWindowManager.Process();
      }
    }
示例#3
0
        public void DoModal(int dwParentId)
        {
            //Log.Debug("TvMiniGuide: DoModal");
              _parentWindowID = dwParentId;
              _parentWindow = GUIWindowManager.GetWindow(_parentWindowID);
              if (null == _parentWindow)
              {
            //Log.Debug("TvMiniGuide: parentwindow = null");
            _parentWindowID = 0;
            return;
              }

              GUIWindowManager.IsSwitchingToNewWindow = true;
              GUIWindowManager.RouteToWindow(GetID);

              // activate this window...
              GUIMessage msg = new GUIMessage(GUIMessage.MessageType.GUI_MSG_WINDOW_INIT, GetID, 0, 0, -1, 0, null);
              OnMessage(msg);

              GUIWindowManager.IsSwitchingToNewWindow = false;
              _running = true;
              GUILayerManager.RegisterLayer(this, GUILayerManager.LayerType.Dialog);
              while (_running && GUIGraphicsContext.CurrentState == GUIGraphicsContext.State.RUNNING)
              {
            GUIWindowManager.Process();
              }

              Close();
        }
示例#4
0
        public override bool OnMessage(GUIMessage message)
        {
            switch (message.Message)
            {
                case GUIMessage.MessageType.GUI_MSG_ITEM_FOCUS_CHANGED:
                    {
                        int iControl = message.SenderControlId;

                        if (iControl == (int)m_Facade.GetID)
                        {
                            GUIListItem item = m_Facade.SelectedListItem;

                            if (item == null || item.TVTag == null || !(item.TVTag is AniDB_CharacterVM))
                                return true;

                            AniDB_CharacterVM aniChar = item.TVTag as AniDB_CharacterVM;
                            if (aniChar == null) return true;

                            SetCharacterProperties(aniChar);
                        }
                    }

                    return true;

                default:
                    return base.OnMessage(message);
            }
        }
 protected int SelectedFacadeItem()
 {
   if (facadeLayout == null) return -1;
   GUIMessage msg = new GUIMessage(GUIMessage.MessageType.GUI_MSG_ITEM_SELECTED, GetID, 0, facadeLayout.GetID, 0, 0, null);
   OnMessage(msg);
   int iItem = (int)msg.Param1;
   return iItem;
 }
示例#6
0
 /// <summary>
 /// Handle actions which are available on this dialog
 /// </summary>
 /// <param name="action">Action to execute</param>
 /// <param name="index">Index (e.g. needed for lists)</param>
 public override void HandleAction(String action, int index)
 {
     base.HandleAction(action, index);
     if (action.Equals("ok"))
     {
         GUIMessage msg = new GUIMessage(GUIMessage.MessageType.GUI_MSG_CLICKED, 0, 10, 10, 0, 0, null);
         dialogMenu.OnMessage(msg);
     }
 }
示例#7
0
        public override bool OnMessage(GUIMessage message)
        {
            //Log.Error(" PresetsGUI OnMessage: " + message.Message.ToString());

              if (message.Message == GUIMessage.MessageType.GUI_MSG_SETFOCUS && message.TargetControlId > 100 && message.TargetControlId<=Settings.LOCAL_PRESETS_NUMBER+100)
              {
            if (_setting.PresetStations.Count >= message.TargetControlId - 100)
              UpdateSelectedLabels(_setting.PresetStations[message.TargetControlId - 100 - 1]);
              }
              return base.OnMessage(message);
        }
    public override bool OnMessage(GUIMessage message)
    {
      switch (message.Message)
      {
        case GUIMessage.MessageType.GUI_MSG_WINDOW_DEINIT:
          {
            SetControlLabel(GetID, 1, string.Empty);
            base.OnMessage(message);
            return true;
          }

        case GUIMessage.MessageType.GUI_MSG_WINDOW_INIT:
          {
            m_bConfirmed = false;
            base.OnMessage(message);
            if (m_DefaultStop)
            {
              GUIControl.FocusControl(GetID, btnStop.GetID);
            }
          }
          return true;

        case GUIMessage.MessageType.GUI_MSG_CLICKED:
          {
            int iControl = message.SenderControlId;

            if (btnStop == null)
            {
              m_bConfirmed = true;
              PageDestroy();
              m_DefaultStop = false;
              return true;
            }
            if (iControl == btnPlay.GetID)
            {
              m_bConfirmed = false;
              PageDestroy();
              m_DefaultStop = false;
              return true;
            }
            if (iControl == btnStop.GetID)
            {
              m_bConfirmed = true;
              PageDestroy();
              m_DefaultStop = false;
              return true;
            }
          }
          break;
      }

      return base.OnMessage(message);
    }
        public override bool OnMessage(GUIMessage message)
        {
            bool result = base.OnMessage(message);

            if (message.Message == GUIMessage.MessageType.GUI_MSG_WINDOW_INIT)
            {
                GUIVideoOSD osd = (GUIVideoOSD)GUIWindowManager.GetWindow(GUIOnlineVideoOSD.WINDOW_ONLINEVIDEOS_OSD);
                typeof(GUIVideoFullscreen).InvokeMember("_osdWindow", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.SetField, null, this, new object[] { osd });
            }

            return result;
        }
    public override bool OnMessage(GUIMessage message)
    {
      switch (message.Message)
      {
        case GUIMessage.MessageType.GUI_MSG_WINDOW_INIT:
          {
            base.OnMessage(message);
            LoadSettings();
            GUIControl.ClearControl(GetID, (int)Controls.CONTROL_PLAYEDTIMEPERCENTAGE);
            for (int i = 1; i <= 100; ++i)
            {
              GUIControl.AddItemLabelControl(GetID, (int)Controls.CONTROL_PLAYEDTIMEPERCENTAGE, i.ToString());
            }

            GUIControl.ClearControl(GetID, (int)Controls.CONTROL_VIDEOAUDIODELAY);
            for (int i = 1; i <= 100; ++i)
            {
              GUIControl.AddItemLabelControl(GetID, (int)Controls.CONTROL_VIDEOAUDIODELAY, i.ToString());
            }

            GUIControl.SelectItemControl(GetID, (int)Controls.CONTROL_PLAYEDTIMEPERCENTAGE, _watchedPercentage - 1);
            GUIControl.SelectItemControl(GetID, (int)Controls.CONTROL_VIDEOAUDIODELAY, _videoAudioDelay - 1);

            return true;
          }

        case GUIMessage.MessageType.GUI_MSG_CLICKED:
          {
            int iControl = message.SenderControlId;
            if (iControl == (int)Controls.CONTROL_PLAYEDTIMEPERCENTAGE)
            {
              string strLabel = message.Label;
              _watchedPercentage = Int32.Parse(strLabel);
            }
            if (iControl == (int)Controls.CONTROL_VIDEOAUDIODELAY)
            {
              string strLabel = message.Label;
              if (Int32.Parse(strLabel) < 10)
              {
                GUIControl.SelectItemControl(GetID, (int)Controls.CONTROL_VIDEOAUDIODELAY, 9);
                _videoAudioDelay = 10;
                break;
              }
              _videoAudioDelay = Int32.Parse(strLabel);
            }
          }
          break;
      }
      return base.OnMessage(message);
    }
 public override bool OnMessage(GUIMessage message)
 {
   if (!base.OnMessage(message))
   {
     return false;
   }
   switch (message.Message)
   {
     case GUIMessage.MessageType.GUI_MSG_WINDOW_INIT:
       SetButtons();
       break;
   }
   return true;
 }
示例#12
0
        /// <summary>
        /// Handle actions which are available on this dialog
        /// </summary>
        /// <param name="action">Action to execute</param>
        /// <param name="index">Index (e.g. needed for lists)</param>
        public override void HandleAction(String action, int index)
        {
            base.HandleAction(action, index);
            if (action.Equals("yes"))
            {
                GUIMessage msg = new GUIMessage(GUIMessage.MessageType.GUI_MSG_CLICKED, 0, 11, 11, 0, 0, null);
                mpDialog.OnMessage(msg);
            }

            if (action.Equals("setrating"))
            {
                SetRating(index);
            }
        }
        public virtual void Close()
        {
            if (m_bRunning == false) return;
            m_bRunning = false;
            GUIWindowManager.IsSwitchingToNewWindow = true;
            lock (this) {
                GUIMessage msg = new GUIMessage(GUIMessage.MessageType.GUI_MSG_WINDOW_DEINIT, GetID, 0, 0, 0, 0, null);
                base.OnMessage(msg);

                GUIWindowManager.UnRoute();
                m_bRunning = false;
            }
            GUIWindowManager.IsSwitchingToNewWindow = false;
        }
    public override bool OnMessage(GUIMessage message)
    {
      switch (message.Message)
      {
        case GUIMessage.MessageType.GUI_MSG_WINDOW_INIT:
          {
            base.OnMessage(message);
            return true;
          }

        case GUIMessage.MessageType.GUI_MSG_WINDOW_DEINIT: {}
          break;
      }
      return base.OnMessage(message);
    }
示例#15
0
        /// <summary>
        /// Open a window (for example Moving Pictures, MP-TV Series, etc.), 
        /// invoke on GUI thread if called from a different
        /// thread than UI thread
        /// </summary>
        /// <param name="windowId"></param>
        public static void OpenWindow(int windowId)
        {
            if (GUIGraphicsContext.form.InvokeRequired)
            {
                OpenWindowDelegate d = OpenWindow;
                GUIGraphicsContext.form.Invoke(d, new object[] { windowId });
            }
            else
            {
                GUIGraphicsContext.ResetLastActivity();
                GUIMessage msg = new GUIMessage(GUIMessage.MessageType.GUI_MSG_GOTO_WINDOW, 0, 0, 0, windowId, 0, null);

                GUIWindowManager.SendThreadMessage(msg);
            }
        }
示例#16
0
 public override bool OnMessage(GUIMessage message)
 {
     if (message.Message == GUIMessage.MessageType.GUI_MSG_WINDOW_INIT)
       {
     GUIPropertyManager.SetProperty("#currentmodule", GetModuleName());
     AllocResources();
     // if (g_application.m_pPlayer) g_application.m_pPlayer.ShowOSD(false);
     // ResetAllControls(); // make sure the controls are positioned relevant to the OSD Y offset
     FocusControl(GetID, 213, 0); // set focus to play button by default when window is shown
     QueueAnimation(AnimationType.WindowOpen);
     ToggleButton(213, g_Player.Paused);
     return true;
       }
       return base.OnMessage(message);
 }
示例#17
0
    public override bool OnMessage(GUIMessage message)
    {
      //      needRefresh = true;
      switch (message.Message)
      {
        case GUIMessage.MessageType.GUI_MSG_WINDOW_DEINIT:
          {
            SetControlLabel(GetID, (int)Controls.CONTROL_HEADING, string.Empty);
            base.OnMessage(message);
            return true;
          }

        case GUIMessage.MessageType.GUI_MSG_WINDOW_INIT:
          {
            base.OnMessage(message);
            ClearControl(GetID, (int)Controls.CONTROL_LIST);

            for (int i = 0; i < m_vecList.Count; i++)
            {
              GUIListItem pItem = (GUIListItem)m_vecList[i];
              AddListItemControl(GetID, (int)Controls.CONTROL_LIST, pItem);
            }

            if (_selectedLabel >= 0)
            {
              GUIMessage msg = new GUIMessage(GUIMessage.MessageType.GUI_MSG_ITEM_SELECT, GetID, 0,
                                              (int)Controls.CONTROL_LIST, _selectedLabel, 0, null);
              OnMessage(msg);
            }
            _selectedLabel = -1;
          }
          return true;

        case GUIMessage.MessageType.GUI_MSG_CLICKED:
          {
            int iControl = message.SenderControlId;
            if ((int)Controls.CONTROL_LIST == iControl)
            {
              _selectedLabel = GetSelectedItemNo();
              m_strSelected = GetSelectedItem().Label;
              PageDestroy();
            }
          }
          break;
      }

      return base.OnMessage(message);
    }
    public override bool OnMessage(GUIMessage message)
    {
      switch (message.Message)
      {
        case GUIMessage.MessageType.GUI_MSG_WINDOW_INIT:
          {
            base.OnMessage(message);
            if (imgLogo != null)
            {
              SetImage(logoUrl);
            }
          }
          return true;
      }

      return base.OnMessage(message);
    }
    public override bool OnMessage(GUIMessage message)
    {
      switch (message.Message)
      {
        case GUIMessage.MessageType.GUI_MSG_WINDOW_INIT:
          {
            base.OnMessage(message);
            btnMiniDisplay.Visible = MiniDisplayHelper.IsSetupAvailable();
            btnTV.Visible = Util.Utils.UsingTvServer;
            return true;
          }

        case GUIMessage.MessageType.GUI_MSG_WINDOW_DEINIT: {}
          break;
      }
      return base.OnMessage(message);
    }
示例#20
0
 public override bool ProcessDoModal()
 {
   bool result = base.ProcessDoModal();
   TimeSpan timeElapsed = DateTime.Now - timeStart;
   if (TimeOut > 0)
   {
     if (timeElapsed.TotalSeconds >= TimeOut)
     {
       GUIMessage msgConfirm = new GUIMessage();
       msgConfirm.Message = GUIMessage.MessageType.GUI_MSG_CLICKED;
       msgConfirm.SenderControlId = m_DefaultYes ? btnYes.GetID : btnNo.GetID;
       OnMessage(msgConfirm);
       return false;
     }
   }
   return result;
 }
    public override bool OnMessage(GUIMessage message)
    {
      Log.Info("DVDFullscreen: Message: {0}", message.Message.ToString());
      if (message.Message == GUIMessage.MessageType.GUI_MSG_WINDOW_INIT)
      {
        if (!bINIT_from_MyVideosFullScreen)
        {
          //if viz is on, this hides the DVD select dialog: GUIWindowManager.ReplaceWindow((int)GUIWindow.Window.WINDOW_FULLSCREEN_VIDEO);
          ISelectDVDHandler selectDVDHandler;
          if (GlobalServiceProvider.IsRegistered<ISelectDVDHandler>())
          {
            selectDVDHandler = GlobalServiceProvider.Get<ISelectDVDHandler>();
          }
          else
          {
            selectDVDHandler = new SelectDVDHandler();
            GlobalServiceProvider.Add<ISelectDVDHandler>(selectDVDHandler);
          }

          string dvdToPlay = selectDVDHandler.ShowSelectDVDDialog(GetID);
          if (dvdToPlay == null || !selectDVDHandler.OnPlayDVD(dvdToPlay, GetID))
          {
            Log.Info("DVDFullscreen: Returning from DVD screen");
            GUIWindowManager.ShowPreviousWindow();
            /*GUIMessage msg = new GUIMessage(GUIMessage.MessageType.GUI_MSG_WINDOW_DEINIT, this.GetID, 0, 0, GetID, 0, null);
            return this.OnMessage(msg);	// Send a de-init msg*/
          }
          else
          {
            g_Player.ShowFullScreenWindow();
            bINIT_from_MyVideosFullScreen = true;
          }
        }
        else
        {
          bINIT_from_MyVideosFullScreen = false;
          Log.Info("DVDFullscreen: Returning from DVD screen");
          GUIWindowManager.ShowPreviousWindow();
        }
        return true;
      }
      return base.OnMessage(message);
    }
    public override bool OnMessage(GUIMessage message)
    {
      //needRefresh = true;
      switch (message.Message)
      {
        case GUIMessage.MessageType.GUI_MSG_WINDOW_INIT:
          {
            base.OnMessage(message);
            FillList();
            // Set focus to "continue" button
            GUIControl.FocusControl(GetID, btnContinue.GetID);
          }
          return true;

        case GUIMessage.MessageType.GUI_MSG_CLICKED:
          {
            int iControl = message.SenderControlId;

            if (btnContinue == null || iControl == btnContinue.GetID)
            {
              PageDestroy();
              return true;
            }
          }
          break;
        case GUIMessage.MessageType.GUI_MSG_SETFOCUS:
          {
            if (message.TargetControlId == listView.GetID)
            {
              _timeOutInSeconds = 0;
              GUIPropertyManager.SetProperty("#countdownseconds", "");
            }
          }
          break;
      }

      return base.OnMessage(message);
    }
示例#23
0
    public override bool OnMessage(GUIMessage message)
    {
      switch (message.Message)
      {
        case GUIMessage.MessageType.GUI_MSG_WINDOW_DEINIT:
          {
            SetControlLabel(GetID, 1, string.Empty);
            base.OnMessage(message);
            return true;
          }

        case GUIMessage.MessageType.GUI_MSG_CLICKED:
          {
            int iControl = message.SenderControlId;

            if (btnYes == null)
            {
              m_bConfirmed = true;
              PageDestroy();
              return true;
            }
            if (iControl == btnNo.GetID)
            {
              m_bConfirmed = false;
              PageDestroy();
              return true;
            }
            if (iControl == btnYes.GetID)
            {
              m_bConfirmed = true;
              PageDestroy();
              return true;
            }
          }
          break;
      }
      return base.OnMessage(message);
    }
 public override bool OnMessage(GUIMessage message)
 {
     if (message.Message == MediaPortal.GUI.Library.GUIMessage.MessageType.GUI_MSG_ITEM_FOCUS_CHANGED && facadeControl.Focus == true)
     {
         if (facadeControl.SelectedListItem != null)
         {
             if (facadeControl.SelectedListItem.IconImageBig != "")
             {
                 image.FileName = facadeControl.SelectedListItem.IconImageBig;
                 //image.DoUpdate();
             }
             else
             {
                 image.FileName = "";
             }
         }
         else
         {
             image.FileName = "";
         }
     }
     return base.OnMessage(message);
 }
    public override bool OnMessage(GUIMessage message)
    {
      if (message.TargetControlId == GetID)
      {
        if (message.SenderControlId == 0)
        {
          if (message.Message == GUIMessage.MessageType.GUI_MSG_CLICKED)
          {
            _offset = (_upDownControl.Value - 1) * (_columns);
            _refresh = true;
            OnSelectionChanged();
          }
        }
        if (message.Message == GUIMessage.MessageType.GUI_MSG_GET_SELECTED_ITEM)
        {
          int iItem = _offset + _cursorX;
          if (iItem >= 0 && iItem < _listItems.Count)
          {
            message.Object = _listItems[iItem];
          }
          else
          {
            message.Object = null;
          }
          _refresh = true;
          return true;
        }

        if (message.Message == GUIMessage.MessageType.GUI_MSG_REFRESH)
        {
          GUITextureManager.CleanupThumbs();
          foreach (GUIListItem item in _listItems)
          {
            item.FreeMemory();
          }
          _refresh = true;
          if (_imageInfo != null)
          {
            _imageInfo.SafeDispose();
            _imageInfo.AllocResources();
            _imageInfo.DoUpdate();
          }
          return true;
        }

        if (message.Message == GUIMessage.MessageType.GUI_MSG_GET_ITEM)
        {
          int iItem = message.Param1;
          if (iItem >= 0 && iItem < _listItems.Count)
          {
            message.Object = _listItems[iItem];
          }
          else
          {
            message.Object = null;
          }
          return true;
        }
        if (message.Message == GUIMessage.MessageType.GUI_MSG_LOSTFOCUS ||
            message.Message == GUIMessage.MessageType.GUI_MSG_SETFOCUS)
        {
          if (Disabled || !IsVisible || !CanFocus())
          {
            base.OnMessage(message);
            return true;
          }
          _listType = GUIListControl.ListType.CONTROL_LIST;
          _refresh = true;
        }

        if (message.Message == GUIMessage.MessageType.GUI_MSG_LABEL_ADD)
        {
          GUIListItem newItem = message.Object as GUIListItem;
          if (newItem != null)
          {
            _listItems.Add(newItem);
            int iItemsPerPage = _columns;
            int iPages = iItemsPerPage == 0 ? 0 : _listItems.Count / iItemsPerPage;
            if (iItemsPerPage != 0)
            {
              if ((_listItems.Count % iItemsPerPage) != 0)
              {
                iPages++;
              }
            }
            if (_upDownControl != null)
            {
              _upDownControl.SetRange(1, iPages);
              _upDownControl.Value = 1;
            }
            _refresh = true;
          }
        }

        if (message.Message == GUIMessage.MessageType.GUI_MSG_LABEL_RESET)
        {
          Clear();
        }

        if (message.Message == GUIMessage.MessageType.GUI_MSG_ITEMS)
        {
          message.Param1 = _listItems.Count;
        }

        if (message.Message == GUIMessage.MessageType.GUI_MSG_ITEM_SELECTED)
        {
          message.Param1 = _offset + _cursorX;
        }
        if (message.Message == GUIMessage.MessageType.GUI_MSG_ITEM_SELECT)
        {
          int iItem = message.Param1;
          SelectItemIndex(iItem);
        }
      }

      if (message.Message == GUIMessage.MessageType.GUI_MSG_ITEM_FOCUS)
      {
        foreach (GUIListItem item in _listItems)
        {
          item.Selected = false;
        }
        foreach (GUIListItem item in _listItems)
        {
          if (item.Path.Equals(message.Label, StringComparison.OrdinalIgnoreCase))
          {
            item.Selected = true;
            break;
          }
        }
      }

      if (message.Message == GUIMessage.MessageType.GUI_MSG_FILE_DOWNLOADING)
      {
        foreach (GUIListItem item in _listItems)
        {
          if (item.IsRemote)
          {
            if (message.Label == item.Path)
            {
              item.IsDownloading = true;
            }
          }
        }
      }

      if (message.Message == GUIMessage.MessageType.GUI_MSG_FILE_DOWNLOADED)
      {
        foreach (GUIListItem item in _listItems)
        {
          if (item.IsRemote)
          {
            if (message.Label == item.Path)
            {
              item.Path = message.Label2;
              item.IsRemote = false;
              item.IsDownloading = false;
            }
          }
        }
      }

      if (base.OnMessage(message))
      {
        return true;
      }

      return false;
    }
    public override void OnAction(Action action)
    {
      switch (action.wID)
      {
        case Action.ActionType.ACTION_PAGE_UP:
          OnPageUp();
          _refresh = true;
          break;

        case Action.ActionType.ACTION_PAGE_DOWN:
          OnPageDown();
          _refresh = true;
          break;

        case Action.ActionType.ACTION_HOME:
          {
            _offset = 0;
            _cursorX = 0;
            _upDownControl.Value = 1;
            OnSelectionChanged();

            _refresh = true;
          }
          break;

        case Action.ActionType.ACTION_END:
          {
            int iItem = _listItems.Count - 1;
            if (iItem >= 0)
            {
              int iPage = 1;
              _cursorX = 0;
              _offset = 0;
              while (iItem >= (_columns) && _columns != 0)
              {
                _offset += (_columns);
                iItem -= (_columns);
                iPage++;
              }
              if (_upDownControl != null)
              {
                _upDownControl.Value = iPage;
              }
              _cursorX = iItem;
              OnSelectionChanged();
            }
            _refresh = true;
          }
          break;


        case Action.ActionType.ACTION_MOVE_DOWN:
          {
            _searchString = "";
            OnDown();
            _refresh = true;
          }
          break;

        case Action.ActionType.ACTION_MOVE_UP:
          {
            _searchString = "";
            if (!OnUp())
            {
              base.OnAction(action);
              return;
            }
            _refresh = true;
          }
          break;

        case Action.ActionType.ACTION_MOVE_LEFT:
          {
            _searchString = "";
            OnLeft();
            _refresh = true;
          }
          break;

        case Action.ActionType.ACTION_MOVE_RIGHT:
          {
            _searchString = "";
            OnRight();
            _refresh = true;
          }
          break;

        case Action.ActionType.ACTION_KEY_PRESSED:
          {
            if (action.m_key != null)
            {
              // Check key
              if (((action.m_key.KeyChar >= '0') && (action.m_key.KeyChar <= '9')) ||
                  action.m_key.KeyChar == '*' || action.m_key.KeyChar == '(' || action.m_key.KeyChar == '#' ||
                  action.m_key.KeyChar == '§')
              {
                Press((char)action.m_key.KeyChar);
                return;
              }

              if (action.m_key.KeyChar == (int)Keys.Back)
              {
                if (_searchString.Length > 0)
                {
                  _searchString = _searchString.Remove(_searchString.Length - 1, 1);
                  SearchItem(_searchString, SearchType.SEARCH_FIRST);
                }
              }
              if (((action.m_key.KeyChar >= 65) && (action.m_key.KeyChar <= 90)) ||
                  (action.m_key.KeyChar == (int)Keys.Space))
              {
                if (action.m_key.KeyChar == (int)Keys.Space && _searchString == string.Empty)
                {
                  return;
                }
                _searchString += (char)action.m_key.KeyChar;
                SearchItem(_searchString, SearchType.SEARCH_FIRST);
              }
            }
          }
          break;

        case Action.ActionType.ACTION_MOUSE_MOVE:
          {
            int id;
            bool focus;
            if (_horizontalScrollbar != null)
            {
              if (_horizontalScrollbar.HitTest((int)action.fAmount1, (int)action.fAmount2, out id, out focus))
              {
                _horizontalScrollbar.OnAction(action);
                int index = (int)((_horizontalScrollbar.Percentage / 100.0f) * _listItems.Count);
                _offset = index;
                _cursorX = 0;
                OnSelectionChanged();
              }
            }
          }
          break;


        case Action.ActionType.ACTION_MOUSE_CLICK:
            {
              int id;
              bool focus;
              bool returnClick = true;
              if (_horizontalScrollbar != null)
              {
                if (_horizontalScrollbar.HitTest((int)action.fAmount1, (int)action.fAmount2, out id, out focus))
                {
                  // We require mouse support for the scrollbar to respond properly.  Temporarily bypass the global setting to allow
                  // the action to work for us.
                  bool ms = GUIGraphicsContext.MouseSupport;
                  GUIGraphicsContext.MouseSupport = true;

                  _horizontalScrollbar.OnAction(action);
                  int index = (int)((_horizontalScrollbar.Percentage / 100.0f) * _listItems.Count);
                  _offset = index;
                  _cursorX = 0;
                  OnSelectionChanged();
                  returnClick = false;

                  GUIGraphicsContext.MouseSupport = ms;
                }
              }


              if (_listType == GUIListControl.ListType.CONTROL_LIST && returnClick == true)
            {
              GUIMessage msg = new GUIMessage(GUIMessage.MessageType.GUI_MSG_CLICKED, WindowId, GetID, ParentID,
                                              (int)Action.ActionType.ACTION_SELECT_ITEM, 0, null);
              GUIGraphicsContext.SendMessage(msg);
            }
            else
            {
              if (_upDownControl != null)
              {
                _upDownControl.OnAction(action);
              }
            }
            _refresh = true;
          }
          break;

        default:
          {
            if (_listType == GUIListControl.ListType.CONTROL_LIST)
            {
              GUIMessage msg = new GUIMessage(GUIMessage.MessageType.GUI_MSG_CLICKED, WindowId, GetID, ParentID,
                                              (int)action.wID, 0, null);
              GUIGraphicsContext.SendMessage(msg);
              _refresh = true;
            }
            else
            {
              if (_upDownControl != null)
              {
                _upDownControl.OnAction(action);
              }
              _refresh = true;
            }
          }
          break;
      }
    }
示例#27
0
        /// <summary>
        /// OnAction() method. This method gets called when there's a new action like a
        /// keypress or mousemove or... By overriding this method, the control can respond
        /// to any action
        /// </summary>
        /// <param name="action">action : contains the action</param>
        public override void OnAction(Action action)
        {
            base.OnAction(action);
            if (Focus)
            {
                if (action.wID == Action.ActionType.ACTION_MOUSE_CLICK || action.wID == Action.ActionType.ACTION_SELECT_ITEM)
                {
                    // If this button does not have a "selected" setting then toggle the value.  The value of _selected (when used) is
                    // determined and set in each render pass based on a condition (value of a property or skin setting).
                    if (_selected.Length == 0)
                    {
                        Selected = !Selected;
                    }

                    // send a message to anyone interested
                    var message = new GUIMessage(GUIMessage.MessageType.GUI_MSG_CLICKED, WindowId, GetID, ParentID, 0, 0, null);
                    GUIGraphicsContext.SendMessage(message);

                    // If this button has a click setting then execute the setting.
                    if (_onclick.Length != 0)
                    {
                        GUIPropertyManager.Parse(_onclick, GUIExpressionManager.ExpressionOptions.EVALUATE_ALWAYS);
                    }

                    // If this button contains scriptactions call the scriptactions.
                    if (_application.Length != 0)
                    {
                        //button should start an external application, so start it
                        var proc = new Process();

                        string strWorkingDir = Path.GetFullPath(_application);
                        string strFileName   = Path.GetFileName(_application);
                        if (strFileName != null)
                        {
                            strWorkingDir           = strWorkingDir.Substring(0, strWorkingDir.Length - (strFileName.Length + 1));
                            proc.StartInfo.FileName = strFileName;
                        }
                        proc.StartInfo.WorkingDirectory = strWorkingDir;
                        proc.StartInfo.Arguments        = _arguments;
                        proc.StartInfo.WindowStyle      = ProcessWindowStyle.Minimized;
                        proc.StartInfo.CreateNoWindow   = true;
                        proc.Start();
                        //proc.WaitForExit();
                    }

                    // If this links to another window go to the window.
                    if (_hyperLinkWindowId >= 0)
                    {
                        GUIWindowManager.ActivateWindow(_hyperLinkWindowId);
                        return;
                    }
                    // If this button corresponds to an action generate that action.
                    if (ActionID >= 0)
                    {
                        var newaction = new Action((Action.ActionType)ActionID, 0, 0);
                        GUIGraphicsContext.OnAction(newaction);
                        return;
                    }

                    // button selected.
                    if (SubItemCount > 0)
                    {
                        // if we got subitems, then change the label of the control to the next
                        //subitem
                        SelectedItem++;
                        if (SelectedItem >= SubItemCount)
                        {
                            SelectedItem = 0;
                        }
                        Label = (string)GetSubItem(SelectedItem);
                    }
                }
            }
        }
示例#28
0
 private bool NotifyProgram(UpcomingProgram program)
 {
     lock (this)
     {
         GUIMessage msg = new GUIMessage(GUIMessage.MessageType.GUI_MSG_NOTIFY_TV_PROGRAM, 0, 0, 0, 0, 0, null);
         msg.Object = program;
         GUIGraphicsContext.SendMessage(msg);
         msg = null;
         return true;
     }
 }
示例#29
0
        public override bool HitTest(int x, int y, out int controlID, out bool focused)
        {
            switch (_buttonState)
            {
            case NextButtonStates.Activation:
                if (Dimmed == false) // let us check if something changed by keyboard input
                {
                    _buttonState = NextButtonStates.Deaktivation;
                    focused      = !Dimmed;
                    controlID    = _defaultcontrol;
                    return(true);
                }
                if (_imageFocused.HitTest(x, y, out controlID, out focused))
                {
                    focused      = !Dimmed;
                    controlID    = _defaultcontrol;
                    _buttonState = NextButtonStates.Outside;
                    return(true);
                }
                return(false);

            case NextButtonStates.Outside:
                if (Dimmed == true) // let us check if something changed by keyboard input
                {
                    _buttonState = NextButtonStates.Activation;
                    focused      = !Dimmed;
                    controlID    = -1;
                    return(false);
                }
                if (!_imageFocused.HitTest(x, y, out controlID, out focused))
                {
                    _buttonState = NextButtonStates.Deaktivation;
                }
                break;

            case NextButtonStates.Deaktivation:
                if (Dimmed == true) // let us check if something changed by keyboard input
                {
                    _buttonState = NextButtonStates.Activation;
                    focused      = !Dimmed;
                    controlID    = -1;
                    return(false);
                }
                if (_imageFocused.HitTest(x, y, out controlID, out focused))
                {
                    GUIMessage msg;
                    if (_exitcontrol == -1)
                    {
                        msg = new GUIMessage(GUIMessage.MessageType.GUI_MSG_LOSTFOCUS, _windowId, 0, GetFocusControlId(), 0, 0,
                                             null);
                    }
                    else
                    {
                        msg = new GUIMessage(GUIMessage.MessageType.GUI_MSG_SETFOCUS, _windowId, 0, _exitcontrol, 0, 0, null);
                    }
                    GUIWindow win = GUIWindowManager.GetWindow(_windowId);
                    if (win != null)
                    {
                        win.OnMessage(msg);
                    }
                    controlID    = -1;
                    _buttonState = NextButtonStates.Outside2;
                    return(false);
                }
                break;

            case NextButtonStates.Outside2:
                if (Dimmed == false) // let us check if something changed by keyboard input
                {
                    _buttonState = NextButtonStates.Deaktivation;
                    focused      = !Dimmed;
                    controlID    = _defaultcontrol;
                    return(true);
                }
                if (!_imageFocused.HitTest(x, y, out controlID, out focused))
                {
                    _buttonState = NextButtonStates.Activation;
                }
                return(false);
            }
            if (base.HitTest(x, y, out controlID, out focused))
            {
                return(true);
            }

            int posX   = Math.Min(_buttonX, _positionX);
            int posY   = Math.Min(_buttonY, _positionY);
            int width  = Math.Max(_buttonWidth, _width);
            int height = Math.Max(_buttonHeight, _height);

            focused   = !Dimmed;
            controlID = GetFocusControlId();

            if (controlID == -1)
            {
                controlID = _defaultcontrol;
            }
            if ((x >= posX) && (x <= posX + width) && (y >= posY) && (y <= posY + height))
            {
                return(true);
            }
            return(false);
        }
示例#30
0
        /// <summary>
        /// OnAction() method. This method gets called when there's a new action like a
        /// keypress or mousemove or... By overriding this method, the control can respond
        /// to any action
        /// </summary>
        /// <param name="action">action : contains the action</param>
        public override void OnAction(Action action)
        {
            GUIMessage message;

            if (!_showSelect)
            {
                if (Focus)
                {
                    if (action.wID == Action.ActionType.ACTION_MOUSE_CLICK || action.wID == Action.ActionType.ACTION_SELECT_ITEM)
                    {
                        //	Enter selection mode
                        _showSelect = true;

                        //	Start timer, if user doesn't select an item
                        //	or moves left/right. The control will
                        //	automatically select the current item.
                        _ticks = DateTime.Now.Ticks;
                        return;
                    }
                }
            }
            else
            {
                if (action.wID == Action.ActionType.ACTION_SELECT_ITEM)
                {
                    GUIMessage msg = new GUIMessage(GUIMessage.MessageType.GUI_MSG_CLICKED, WindowId, GetID, ParentID, 0, 0, null);
                    GUIWindowManager.SendThreadMessage(msg);
                    return;
                }
                if (action.wID == Action.ActionType.ACTION_MOUSE_CLICK)
                {
                    if (_rightSelected)
                    {
                        action.wID = Action.ActionType.ACTION_MOVE_RIGHT;
                        OnAction(action);
                        GUIMessage msg = new GUIMessage(GUIMessage.MessageType.GUI_MSG_CLICKED, WindowId, GetID, ParentID, 0, 0,
                                                        null);
                        GUIWindowManager.SendThreadMessage(msg);
                        _updateNeeded = true;
                        return;
                    }
                    else if (_leftSelected)
                    {
                        action.wID = Action.ActionType.ACTION_MOVE_LEFT;
                        OnAction(action);
                        GUIMessage msg = new GUIMessage(GUIMessage.MessageType.GUI_MSG_CLICKED, WindowId, GetID, ParentID, 0, 0,
                                                        null);
                        GUIWindowManager.SendThreadMessage(msg);
                        _updateNeeded = true;
                        return;
                    }
                    else
                    {
                        //	User has selected an item, disable selection mode...
                        _showSelect = false;

                        // ...and send a message.
                        message = new GUIMessage(GUIMessage.MessageType.GUI_MSG_CLICKED, WindowId, GetID, ParentID, 0, 0, null);
                        GUIGraphicsContext.SendMessage(message);
                        return;
                    }
                }
                else if (action.wID == Action.ActionType.ACTION_MOVE_LEFT)
                {
                    //	Set for visual feedback
                    _leftSelected  = true;
                    _rightSelected = false;
                    _startFrame    = 0;

                    //	Reset timer for automatically selecting
                    //	the current item.
                    _ticks = DateTime.Now.Ticks;

                    //	Switch to previous item
                    if (_subItemList.Count > 0)
                    {
                        SelectedItem--;
                        if (SelectedItem < 0)
                        {
                            SelectedItem = _subItemList.Count - 1;
                        }

                        if (CaptionChanged != null)
                        {
                            CaptionChanged(this, EventArgs.Empty);
                        }
                    }
                    return;
                }
                else if (action.wID == Action.ActionType.ACTION_MOVE_RIGHT)
                {
                    //	Set for visual feedback
                    _rightSelected = true;
                    _leftSelected  = false;
                    _startFrame    = 0;

                    //	Reset timer for automatically selecting
                    //	the current item.
                    _ticks = DateTime.Now.Ticks;

                    //	Switch to next item
                    if (_subItemList.Count > 0)
                    {
                        SelectedItem++;
                        if (SelectedItem >= (int)_subItemList.Count)
                        {
                            SelectedItem = 0;
                        }

                        if (CaptionChanged != null)
                        {
                            CaptionChanged(this, EventArgs.Empty);
                        }
                    }
                    return;
                }
                if (action.wID == Action.ActionType.ACTION_MOVE_UP || action.wID == Action.ActionType.ACTION_MOVE_DOWN)
                {
                    //	Disable selection mode when moving up or down
                    _showSelect = false;
                    if (_resetSelectionAfterFocusLost)
                    {
                        SelectedItem = _defaultItem;
                    }
                }
            }

            base.OnAction(action);

            if (Focus)
            {
                if (action.wID == Action.ActionType.ACTION_MOUSE_CLICK || action.wID == Action.ActionType.ACTION_SELECT_ITEM)
                {
                    if (_scriptAction.Length > 0)
                    {
                        message       = new GUIMessage(GUIMessage.MessageType.GUI_MSG_CLICKED, WindowId, GetID, ParentID, 0, 0, null);
                        message.Label = _scriptAction;
                        //g_actionManager.CallScriptAction(message); // TODO!
                    }

                    if (_hyperLinkWindowId >= 0)
                    {
                        GUIWindowManager.ActivateWindow((int)_hyperLinkWindowId);
                        return;
                    }
                    // button selected.
                    // send a message
                    message = new GUIMessage(GUIMessage.MessageType.GUI_MSG_CLICKED, WindowId, GetID, ParentID, 0, 0, null);
                    GUIGraphicsContext.SendMessage(message);
                }
            }
        }
    /// <summary>
    /// Method which is called if the user selected another item in the filmstrip
    /// This method will update the property manager with the properties of the
    /// newly selected item
    /// </summary>
    protected void OnSelectionChanged()
    {
      if (!IsVisible)
      {
        return;
      }

      _scrollOffset = 0.0f;
      _timeElapsed = 0.0f;

      // Reset searchstring
      if (_lastSearchItem != (_cursorX + _offset))
      {
        _previousKey = (char)0;
        _currentKey = (char)0;
        _searchString = "";
      }

      string strSelected = "";
      string strSelected2 = "";
      string strThumb = "";
      string strIndex = "";
      int item = GetSelectedItem(ref strSelected, ref strSelected2, ref strThumb, ref strIndex);
      if (!GUIWindowManager.IsRouted)
      {
        GUIPropertyManager.SetProperty("#selecteditem", strSelected);
        GUIPropertyManager.SetProperty("#selecteditem2", strSelected2);
        GUIPropertyManager.SetProperty("#selectedthumb", strThumb);
        GUIPropertyManager.SetProperty("#selectedindex", strIndex);
      }

      GUIMessage msg = new GUIMessage(GUIMessage.MessageType.GUI_MSG_ITEM_FOCUS_CHANGED, WindowId, GetID, ParentID, 0, 0, null);
      msg.SendToTargetWindow = true;
      GUIGraphicsContext.SendMessage(msg);

      if (item >= 0 && item < _listItems.Count)
      {
        GUIListItem listitem = _listItems[item];
        if (listitem != null)
        {
          listitem.ItemSelected(this);
        }
      }

      // ToDo: add searchstring property
      if (_searchString.Length > 0)
      {
        GUIPropertyManager.SetProperty("#selecteditem", "{" + _searchString.ToLowerInvariant() + "}");
      }
    }
        public override bool OnMessage(GUIMessage message)
        {
            switch (message.Message)
            {
                case GUIMessage.MessageType.GUI_MSG_ITEM_FOCUS_CHANGED:
                    {
                        int iControl = message.SenderControlId;
                        if (iControl == m_Facade.GetID)
                        {
                            GUIListItem item = m_Facade.SelectedListItem;

                            if (item == null || item.TVTag == null) return true;

                            // unlinked files
                            if (item.TVTag.GetType() == typeof(VideoLocalVM))
                            {
                                VideoLocalVM vid = item.TVTag as VideoLocalVM;
                                if (vid != null)
                                {
                                    SetGUIProperty(GuiProperty.Utilities_UnlinkedFile_Folder, vid.ImportFolder.ImportFolderLocation);
                                    SetGUIProperty(GuiProperty.Utilities_UnlinkedFile_FileName, vid.FileName);
                                    SetGUIProperty(GuiProperty.Utilities_UnlinkedFile_Size, Utils.FormatFileSize(vid.FileSize));
                                    SetGUIProperty(GuiProperty.Utilities_UnlinkedFile_Hash, vid.Hash);
                                }
                            }

                        }
                    }

                    return true;

                default:
                    return base.OnMessage(message);
            }
        }
示例#33
0
        /// <summary>
        /// OnAction() method. This method gets called when there's a new action like a
        /// keypress or mousemove or... By overriding this method, the control can respond
        /// to any action
        /// </summary>
        /// <param name="action">action : contains the action</param>
        public override void OnAction(Action action)
        {
            if (Focus)
            {
                switch (action.wID)
                {
                case Action.ActionType.ACTION_MOVE_DOWN:
                    _keepLook = _keepLookOnDown;
                    break;

                case Action.ActionType.ACTION_MOVE_UP:
                    _keepLook = _keepLookOnUp;
                    break;

                case Action.ActionType.ACTION_MOVE_LEFT:
                    _keepLook = _keepLookOnLeft;
                    break;

                case Action.ActionType.ACTION_MOVE_RIGHT:
                    _keepLook = _keepLookOnRight;
                    break;
                }
            }

            base.OnAction(action);

            if (Focus)
            {
                if (action.wID == Action.ActionType.ACTION_MOUSE_CLICK || action.wID == Action.ActionType.ACTION_SELECT_ITEM)
                {
                    // If this button has a click setting then execute the setting.
                    if (_onclick.Length != 0)
                    {
                        GUIPropertyManager.Parse(_onclick, GUIExpressionManager.ExpressionOptions.EVALUATE_ALWAYS);
                    }

                    if (ContextMenu != null)
                    {
                        DoContextMenu();
                        return;
                    }

                    // If this button contains scriptactions call the scriptactions.
                    if (_application.Length != 0)
                    {
                        //button should start an external application, so start it
                        Process proc = new Process();

                        string workingFolder = Path.GetFullPath(_application);
                        string fileName      = Path.GetFileName(_application);
                        if (fileName != null)
                        {
                            workingFolder           = workingFolder.Substring(0, workingFolder.Length - (fileName.Length + 1));
                            proc.StartInfo.FileName = fileName;
                        }
                        proc.StartInfo.WorkingDirectory = workingFolder;
                        proc.StartInfo.Arguments        = _arguments;
                        proc.StartInfo.WindowStyle      = ProcessWindowStyle.Minimized;
                        proc.StartInfo.CreateNoWindow   = true;
                        proc.Start();
                        //proc.WaitForExit();
                    }

                    // If this links to another window go to the window.
                    if (HyperLink >= 0)
                    {
                        if (_hyperLinkParameter != null && !_hyperLinkParameter.Equals(""))
                        {
                            // The link also contains a parameter that we want to pass to the plugin
                            GUIWindowManager.ActivateWindow(HyperLink, GUIPropertyManager.Parse(_hyperLinkParameter),
                                                            !_addToHistory);
                        }
                        else
                        {
                            GUIWindowManager.ActivateWindow(HyperLink, !_addToHistory);
                        }
                        return;
                    }
                    // If this button corresponds to an action generate that action.
                    if (ActionID >= 0)
                    {
                        Action newaction = new Action((Action.ActionType)ActionID, 0, 0);
                        GUIGraphicsContext.OnAction(newaction);
                        return;
                    }

                    // button selected.
                    if (SubItemCount > 0)
                    {
                        // if we got subitems, then change the label of the control to the next
                        //subitem
                        SelectedItem++;
                        if (SelectedItem >= SubItemCount)
                        {
                            SelectedItem = 0;
                        }
                        Label = (string)GetSubItem(SelectedItem);
                    }

                    // send a message to anyone interested
                    var message = new GUIMessage(GUIMessage.MessageType.GUI_MSG_CLICKED, WindowId, GetID, ParentID, 0, 0, null);
                    GUIGraphicsContext.SendMessage(message);
                }
            }
        }
    public override bool OnMessage(GUIMessage message)
    {
      if (message.Message == GUIMessage.MessageType.GUI_MSG_WINDOW_DEINIT)
      {
        ResetCurrentScheduleAndProgram();
        initialProgram = null;
      }
      else if (message.Message == GUIMessage.MessageType.GUI_MSG_WINDOW_INIT)
      {
        RecordingIntervalValues.Clear();
        //Fill the list with all available pre & post intervals
        RecordingIntervalValues.Add(0);
        RecordingIntervalValues.Add(1);
        RecordingIntervalValues.Add(3);
        RecordingIntervalValues.Add(5);
        RecordingIntervalValues.Add(10);
        RecordingIntervalValues.Add(15);
        RecordingIntervalValues.Add(30);
        RecordingIntervalValues.Add(45);
        RecordingIntervalValues.Add(60);
        RecordingIntervalValues.Add(90);

        TvBusinessLayer layer = new TvBusinessLayer();
        _preRec = 0;
        _postRec = 0;

        int.TryParse(layer.GetSetting("preRecordInterval", "7").Value, out _preRec);
        int.TryParse(layer.GetSetting("postRecordInterval", "10").Value, out _postRec);

        if (!RecordingIntervalValues.Contains(_preRec))
        {
          RecordingIntervalValues.Add(_preRec);
        }

        if (!RecordingIntervalValues.Contains(_postRec))
        {
          RecordingIntervalValues.Add(_postRec);
        }

        // sort the list to get the values in correct order if _preRec and/or _postRec were added
        RecordingIntervalValues.Sort();
      }
      return base.OnMessage(message);
    }
示例#35
0
        /// <summary>
        /// Renders the control.
        /// </summary>
        public override void Render(float timePassed)
        {
            if (GUIGraphicsContext.EditMode == false)
            {
                if (!IsVisible)
                {
                    base.Render(timePassed);
                    return;
                }
            }


            if (Focus)
            {
                _showSelect = true;
            }
            else
            {
                _showSelect = false;
            }

            //	Are we in selection mode
            if (_showSelect)
            {
                //	Yes, render the select control

                //	render background, left and right arrow

                _imageBackground.Render(timePassed);

                long dwTextColor = Focus ? _textColor : _textColorNoFocus;

                //	User has moved left...
                if (_leftSelected)
                {
                    //	...render focused arrow
                    _startFrame++;
                    if (_autoHide && _startFrame >= 25)
                    {
                        _startFrame   = 0;
                        _leftSelected = false;
                        GUIMessage message = new GUIMessage(GUIMessage.MessageType.GUI_MSG_CLICKED, WindowId, GetID, ParentID, 0, 0,
                                                            null);
                        GUIWindowManager.SendThreadMessage(message);
                        _updateNeeded = true;
                    }
                    _imageLeftFocus.Render(timePassed);

                    //	If we are moving left
                    //	render item text as disabled
                    dwTextColor = _disabledColor;
                }
                else
                {
                    //	Render none focused arrow
                    _imageLeft.Render(timePassed);
                }


                //	User has moved right...
                if (_rightSelected)
                {
                    //	...render focused arrow
                    _startFrame++;
                    if (_autoHide && _startFrame >= 25)
                    {
                        _startFrame    = 0;
                        _rightSelected = false;
                        GUIMessage message = new GUIMessage(GUIMessage.MessageType.GUI_MSG_CLICKED, WindowId, GetID, ParentID, 0, 0,
                                                            null);
                        GUIWindowManager.SendThreadMessage(message);
                        _updateNeeded = true;
                    }
                    _imageRightFocus.Render(timePassed);

                    //	If we are moving right
                    //	render item text as disabled
                    dwTextColor = _disabledColor;
                }
                else
                {
                    //	Render none focused arrow
                    _imageRight.Render(timePassed);
                }


                //	Render text if a current item is available
                if (SelectedItem >= 0 && null != _font && SelectedItem < _subItemList.Count)
                {
                    _labelControl.FontName = _font.FontName;
                    if (_textAlignment == Alignment.ALIGN_RIGHT)
                    {
                        _labelControl.SetPosition(_positionX + _width - _imageLeft.Width - _textOffsetX, _textOffsetY + _positionY);
                    }
                    else
                    {
                        _labelControl.SetPosition(_positionX + _imageLeft.Width + _textOffsetX, _textOffsetY + _positionY);
                    }

                    _labelControl.TextColor     = dwTextColor;
                    _labelControl.TextAlignment = _textAlignment;
                    _labelControl.Label         = (string)_subItemList[SelectedItem];
                    _labelControl.Width         = _width - (_imageRight.Width + _imageLeft.Width + _textOffsetX);
                    _labelControl.Render(timePassed);
                }

                /*
                 *      //	Select current item, if user doesn't
                 *      //	move left or right for 1.5 sec.
                 *      long dwTicksSpan=DateTime.Now.Ticks-_ticks;
                 *      dwTicksSpan/=10000;
                 *      if ((float)(dwTicksSpan/1000)>0.8f)
                 *      {
                 *        //	User hasn't moved disable selection mode...
                 *        _showSelect=false;
                 *
                 *        //	...and send a thread message.
                 *        //	(Sending a message with SendMessage
                 *        //	can result in a GPF.)
                 *        GUIMessage message = new GUIMessage(GUIMessage.MessageType.GUI_MSG_CLICKED,WindowId,GetID, ParentID ,0,0,null);
                 *        GUIWindowManager.SendThreadMessage(message);
                 *        _updateNeeded=true;
                 *      }
                 */
            } //	if (_showSelect)
            else
            {
                //	No, render a normal button

                if (!IsVisible)
                {
                    base.Render(timePassed);
                    return;
                }

                if (Focus)
                {
/*
 *        int dwAlphaCounter = _frameCounter+2;
 *        int dwAlphaChannel;
 *        if ((dwAlphaCounter%128)>=64)
 *          dwAlphaChannel = dwAlphaCounter%64;
 *        else
 *          dwAlphaChannel = 63-(dwAlphaCounter%64);
 *
 *        dwAlphaChannel += 192;
 *        SetAlpha(dwAlphaChannel );
 *        _imageFocused.IsVisible=true;
 *        _imageNonFocused.IsVisible=false;
 *        _frameCounter++;*/
                    _imageFocused.Render(timePassed);
                }
                else
                {
                    //SetAlpha(0xff);
                    _imageNonFocused.Render(timePassed);
                }

                if (_label != null && _label.Length > 0 && _font != null)
                {
                    _labelControl.FontName = _font.FontName;
                    if (_textAlignment == Alignment.ALIGN_RIGHT)
                    {
                        _labelControl.SetPosition(_positionX + _width - _textOffsetX2, _textOffsetY2 + _positionY);
                    }
                    else
                    {
                        _labelControl.SetPosition(_textOffsetX2 + _positionX, _textOffsetY2 + _positionY);
                    }

                    if (Disabled || _subItemList.Count == 0)
                    {
                        _labelControl.TextColor = _disabledColor;
                    }
                    else
                    {
                        _labelControl.TextColor = Focus ? _textColor : _textColorNoFocus;
                    }
                    _labelControl.TextAlignment = _textAlignment;
                    _labelControl.Label         = _label;
                    _labelControl.Render(timePassed);
                }
            }
            base.Render(timePassed);
        }