Generalize Maemo fullscreening; Maemo shownotes dialog
This commit is contained in:
parent
be099296d7
commit
ee4a732a93
7 changed files with 181 additions and 18 deletions
|
@ -13,7 +13,7 @@
|
|||
</columns>
|
||||
<data/>
|
||||
</object>
|
||||
<object class="GtkDialog" id="gPodderDiabloPreferences">
|
||||
<object class="GtkDialog" id="gPodderPreferences">
|
||||
<property name="title" translatable="yes">Preferences</property>
|
||||
<property name="modal">True</property>
|
||||
<child internal-child="vbox">
|
131
data/ui/maemo/gpoddershownotes.ui
Normal file
131
data/ui/maemo/gpoddershownotes.ui
Normal file
|
@ -0,0 +1,131 @@
|
|||
<?xml version="1.0"?>
|
||||
<interface>
|
||||
<object class="HildonWindow" id="gPodderShownotes">
|
||||
<child>
|
||||
<object class="GtkVBox" id="vbox">
|
||||
<property name="visible">True</property>
|
||||
<property name="border_width">6</property>
|
||||
<property name="orientation">vertical</property>
|
||||
<property name="spacing">6</property>
|
||||
<child>
|
||||
<object class="GtkScrolledWindow" id="scrolled_window">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="hscrollbar_policy">automatic</property>
|
||||
<property name="vscrollbar_policy">automatic</property>
|
||||
<child>
|
||||
<object class="GtkTextView" id="textview">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="editable">False</property>
|
||||
<property name="wrap_mode">word</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkProgressBar" id="download_progress">
|
||||
<property name="visible">True</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkHButtonBox" id="buttonbox">
|
||||
<property name="visible">True</property>
|
||||
<property name="spacing">12</property>
|
||||
<property name="layout_style">end</property>
|
||||
<child>
|
||||
<object class="GtkButton" id="btnPlay">
|
||||
<property name="label">gtk-media-play</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
<property name="use_stock">True</property>
|
||||
<signal name="clicked" handler="on_playback"/>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">False</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton" id="btnDownload">
|
||||
<property name="label" translatable="yes">Download</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
<signal name="clicked" handler="on_download"/>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">False</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton" id="btnCancel">
|
||||
<property name="label">gtk-cancel</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
<property name="use_stock">True</property>
|
||||
<signal name="clicked" handler="on_cancel"/>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">False</property>
|
||||
<property name="position">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton" id="btnClose">
|
||||
<property name="label">gtk-close</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
<property name="use_stock">True</property>
|
||||
<signal name="clicked" handler="on_close"/>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">False</property>
|
||||
<property name="position">3</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="position">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<object class="GtkAction" id="action_play">
|
||||
<property name="label">Play</property>
|
||||
<property name="stock_id">gtk-media-play</property>
|
||||
<signal name="activate" handler="on_playback"/>
|
||||
</object>
|
||||
<object class="GtkAction" id="action_download">
|
||||
<property name="label">Download</property>
|
||||
<property name="stock_id">gtk-go-down</property>
|
||||
<signal name="activate" handler="on_download"/>
|
||||
</object>
|
||||
<object class="GtkAction" id="action_cancel">
|
||||
<property name="label">Cancel</property>
|
||||
<property name="stock_id">gtk-cancel</property>
|
||||
<signal name="activate" handler="on_cancel"/>
|
||||
</object>
|
||||
<object class="GtkAction" id="action_close">
|
||||
<property name="label">Close</property>
|
||||
<property name="stock_id">gtk-close</property>
|
||||
<signal name="activate" handler="on_close"/>
|
||||
</object>
|
||||
</interface>
|
|
@ -54,6 +54,14 @@ class BuilderWidget(GtkBuilderWidget):
|
|||
def __init__(self, parent, **kwargs):
|
||||
GtkBuilderWidget.__init__(self, gpodder.ui_folders, gpodder.textdomain, **kwargs)
|
||||
|
||||
# Enable support for fullscreen toggle key on Maemo
|
||||
if gpodder.interface == gpodder.MAEMO:
|
||||
self._maemo_fullscreen = False
|
||||
self.main_window.connect('key-press-event', \
|
||||
self._on_key_press_event_maemo)
|
||||
self.main_window.connect('window-state-event', \
|
||||
self._on_window_state_event_maemo)
|
||||
|
||||
# Set widgets to finger-friendly mode if on Maemo
|
||||
for widget_name in self.finger_friendly_widgets:
|
||||
if hasattr(self, widget_name):
|
||||
|
@ -73,6 +81,26 @@ class BuilderWidget(GtkBuilderWidget):
|
|||
else:
|
||||
self.main_window.set_position(gtk.WIN_POS_CENTER_ON_PARENT)
|
||||
|
||||
def _on_key_press_event_maemo(self, widget, event):
|
||||
if event.keyval == gtk.keysyms.F6:
|
||||
if self._maemo_fullscreen:
|
||||
self.main_window.unfullscreen()
|
||||
self.main_window.set_border_width(0)
|
||||
else:
|
||||
self.main_window.fullscreen()
|
||||
self.main_window.set_border_width(12)
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
|
||||
def _on_window_state_event_maemo(self, widget, event):
|
||||
if event.new_window_state & gtk.gdk.WINDOW_STATE_FULLSCREEN:
|
||||
self._maemo_fullscreen = True
|
||||
else:
|
||||
self._maemo_fullscreen = False
|
||||
|
||||
return False
|
||||
|
||||
def notification(self, message, title=None, important=False, widget=None):
|
||||
util.idle_add(self.show_message, message, title, important, widget)
|
||||
|
||||
|
|
|
@ -62,6 +62,16 @@ class gPodderShownotes(BuilderWidget):
|
|||
setattr(self, 'have_gtkhtml2', False)
|
||||
self.gPodderShownotes.connect('key-press-event', self.on_key_press)
|
||||
|
||||
if gpodder.interface == gpodder.MAEMO:
|
||||
menu = gtk.Menu()
|
||||
menu.append(self.action_play.create_menu_item())
|
||||
menu.append(gtk.SeparatorMenuItem())
|
||||
menu.append(self.action_download.create_menu_item())
|
||||
menu.append(self.action_cancel.create_menu_item())
|
||||
menu.append(gtk.SeparatorMenuItem())
|
||||
menu.append(self.action_close.create_menu_item())
|
||||
self.gPodderShownotes.set_menu(self.set_finger_friendly(menu))
|
||||
|
||||
def on_key_press(self, widget, event):
|
||||
if not hasattr(self.scrolled_window, 'get_vscrollbar'):
|
||||
return
|
||||
|
@ -195,6 +205,11 @@ class gPodderShownotes(BuilderWidget):
|
|||
self.btnPlay.hide_all()
|
||||
self.btnDownload.show_all()
|
||||
|
||||
if gpodder.interface == gpodder.MAEMO:
|
||||
self.action_play.set_sensitive(self.btnPlay.get_property('visible'))
|
||||
self.action_download.set_sensitive(self.btnDownload.get_property('visible'))
|
||||
self.action_cancel.set_sensitive(self.btnCancel.get_property('visible'))
|
||||
|
||||
def on_download(self, widget):
|
||||
if self.download_callback:
|
||||
self.download_callback()
|
||||
|
|
|
@ -27,7 +27,7 @@ from gpodder.gtkui.interface.common import BuilderWidget
|
|||
|
||||
from gpodder.gtkui.interface.configeditor import gPodderConfigEditor
|
||||
|
||||
class gPodderDiabloPreferences(BuilderWidget):
|
||||
class gPodderPreferences(BuilderWidget):
|
||||
finger_friendly_widgets = ['btn_close', 'btn_advanced']
|
||||
audio_players = [
|
||||
('default', 'Media Player'),
|
||||
|
@ -82,7 +82,7 @@ class gPodderDiabloPreferences(BuilderWidget):
|
|||
self.combo_videoplayer.set_active(len(self.combo_videoplayer_model)-1)
|
||||
self.userconfigured_videoplayer = self._config.videoplayer
|
||||
|
||||
self.gPodderDiabloPreferences.show()
|
||||
self.gPodderPreferences.show()
|
||||
|
||||
def on_combo_player_changed(self, combobox):
|
||||
index = combobox.get_active()
|
||||
|
@ -99,9 +99,9 @@ class gPodderDiabloPreferences(BuilderWidget):
|
|||
self._config.videoplayer = self.userconfigured_videoplayer
|
||||
|
||||
def on_btn_advanced_clicked(self, widget):
|
||||
gPodderConfigEditor(self.gPodderDiabloPreferences, _config=self._config)
|
||||
self.gPodderDiabloPreferences.destroy()
|
||||
gPodderConfigEditor(self.gPodderPreferences, _config=self._config)
|
||||
self.gPodderPreferences.destroy()
|
||||
|
||||
def on_btn_close_clicked(self, widget):
|
||||
self.gPodderDiabloPreferences.destroy()
|
||||
self.gPodderPreferences.destroy()
|
||||
|
||||
|
|
|
@ -103,7 +103,7 @@ if gpodder.interface == gpodder.GUI:
|
|||
from gpodder.gtkui.interface.syncprogress import gPodderSyncProgress
|
||||
from gpodder.gtkui.interface.deviceplaylist import gPodderDevicePlaylist
|
||||
else:
|
||||
from gpodder.gtkui.maemo.preferences import gPodderDiabloPreferences as gPodderPreferences
|
||||
from gpodder.gtkui.maemo.preferences import gPodderPreferences
|
||||
|
||||
from gpodder.gtkui.interface.shownotes import gPodderShownotes
|
||||
from gpodder.gtkui.interface.podcastdirectory import gPodderPodcastDirectory
|
||||
|
@ -261,7 +261,6 @@ class gPodder(BuilderWidget, dbus.service.Object):
|
|||
self.download_status_model = DownloadStatusModel()
|
||||
self.download_queue_manager = download.DownloadQueueManager(self.config)
|
||||
|
||||
self.fullscreen = False
|
||||
self.minimized = False
|
||||
self.gPodder.connect('window-state-event', self.window_state_event)
|
||||
|
||||
|
@ -3061,11 +3060,6 @@ class gPodder(BuilderWidget, dbus.service.Object):
|
|||
if gpodder.interface != gpodder.MAEMO:
|
||||
return False
|
||||
|
||||
if event.keyval == gtk.keysyms.F6:
|
||||
if self.fullscreen:
|
||||
self.window.unfullscreen()
|
||||
else:
|
||||
self.window.fullscreen()
|
||||
if event.keyval == gtk.keysyms.Escape:
|
||||
new_visibility = not self.vboxChannelNavigator.get_property('visible')
|
||||
self.vboxChannelNavigator.set_property('visible', new_visibility)
|
||||
|
@ -3089,11 +3083,6 @@ class gPodder(BuilderWidget, dbus.service.Object):
|
|||
return False
|
||||
|
||||
def window_state_event(self, widget, event):
|
||||
if event.new_window_state & gtk.gdk.WINDOW_STATE_FULLSCREEN:
|
||||
self.fullscreen = True
|
||||
else:
|
||||
self.fullscreen = False
|
||||
|
||||
old_minimized = self.minimized
|
||||
|
||||
self.minimized = bool(event.new_window_state & gtk.gdk.WINDOW_STATE_ICONIFIED)
|
||||
|
|
Loading…
Reference in a new issue