menu_screen.py 3.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. import os
  2. import socket
  3. from base_screen import BaseScreen
  4. from ..graphic_utils import ListView
  5. class MenuScreen(BaseScreen):
  6. def __init__(self, size, base_size, manager, fonts, core):
  7. BaseScreen.__init__(self, size, base_size, manager, fonts)
  8. self.ip = None
  9. self.core = core
  10. self.list = ListView((0, 0), size, base_size, fonts['base'])
  11. self.list_items = ["Random", "Repeat", "Single", "Consume",
  12. "Exit Mopidy", "Shutdown", "Restart", "IP: "]
  13. self.list.set_list(self.list_items)
  14. def should_update(self):
  15. return self.list.should_update()
  16. def update(self, screen, update_type, rects):
  17. update_all = (update_type == BaseScreen.update_all)
  18. self.list.render(screen, update_all, rects)
  19. def touch_event(self, event):
  20. clicked = self.list.touch_event(event)
  21. if clicked is not None:
  22. if clicked == 0:
  23. random = not self.core.tracklist.get_random().get()
  24. self.core.tracklist.set_random(random)
  25. elif clicked == 1:
  26. repeat = not self.core.tracklist.get_repeat().get()
  27. self.core.tracklist.set_repeat(repeat)
  28. elif clicked == 2:
  29. single = not self.core.tracklist.get_single().get()
  30. self.core.tracklist.set_single(single)
  31. elif clicked == 3:
  32. consume = not self.core.tracklist.get_consume().get()
  33. self.core.tracklist.set_consume(consume)
  34. elif clicked == 4:
  35. os.system("pkill mopidy")
  36. elif clicked == 5:
  37. if os.system("gksu -- shutdown now -h") != 0:
  38. os.system("sudo shutdown now -h")
  39. elif clicked == 6:
  40. if os.system("gksu -- shutdown -r now") != 0:
  41. os.system("sudo shutdown -r now")
  42. elif clicked == 7:
  43. self.check_connection()
  44. # Will check internet connection
  45. def check_connection(self):
  46. try:
  47. s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
  48. s.connect(("8.8.8.8", 80))
  49. self.ip = s.getsockname()[0]
  50. s.close()
  51. self.list_items[7] = "IP: " + self.ip
  52. self.list.set_list(self.list_items)
  53. except socket.error:
  54. s.close()
  55. self.ip = None
  56. self.list_items[7] = "IP: No internet"
  57. self.list.set_list(self.list_items)
  58. def options_changed(self):
  59. active = []
  60. if self.core.tracklist.random.get():
  61. active.append(0)
  62. if self.core.tracklist.repeat.get():
  63. active.append(1)
  64. if self.core.tracklist.single.get():
  65. active.append(2)
  66. if self.core.tracklist.consume.get():
  67. active.append(3)
  68. self.list.set_active(active)
  69. def set_connection(self, connection, loading):
  70. internet = self.touch_text_manager.get_touch_object(
  71. "internet")
  72. if loading:
  73. internet.set_text(u"\ue627", None)
  74. internet.set_active(False)
  75. else:
  76. internet.set_text(u"\ue602", None)
  77. internet.set_active(connection)