[gnome-music/wip/no-more-load-more: 2/2] Remove Load More button and it remains



commit 15b08396d23203e52b3fdfffaa2b6567733c9820
Author: Vadim Rutkovsky <vrutkovs redhat com>
Date:   Thu Aug 29 13:31:30 2013 +0200

    Remove Load More button and it remains
    
    https://bugzilla.gnome.org/show_bug.cgi?id=699832

 gnomemusic/grilo.py   |   12 ++---
 gnomemusic/query.py   |   17 --------
 gnomemusic/view.py    |   47 +-----------------------
 gnomemusic/widgets.py |   98 +------------------------------------------------
 4 files changed, 7 insertions(+), 167 deletions(-)
---
diff --git a/gnomemusic/grilo.py b/gnomemusic/grilo.py
index 13d77f0..4c2b7f9 100644
--- a/gnomemusic/grilo.py
+++ b/gnomemusic/grilo.py
@@ -87,20 +87,18 @@ class Grilo(GObject.GObject):
     def populate_artists(self, offset, callback):
         self.populate_items(Query.ARTISTS, offset, callback)
 
-    def populate_albums(self, offset, callback, count=50):
-        self.populate_items(Query.ALBUMS, offset, callback, count)
+    def populate_albums(self, offset, callback):
+        self.populate_items(Query.ALBUMS, offset, callback)
 
-    def populate_songs(self, offset, callback, count=-1):
-        self.populate_items(Query.SONGS, offset, callback, count)
+    def populate_songs(self, offset, callback):
+        self.populate_items(Query.SONGS, offset, callback)
 
     def populate_album_songs(self, album_id, callback):
         self.populate_items(Query.album_songs(album_id), 0, callback)
 
-    def populate_items(self, query, offset, callback, count=50):
+    def populate_items(self, query, offset, callback):
         options = self.options.copy()
         options.set_skip(offset)
-        if count != -1:
-            options.set_count(count)
 
         def _callback(source, param, item, count, data, offset):
             callback(source, param, item)
diff --git a/gnomemusic/query.py b/gnomemusic/query.py
index e40eb8a..29e0bac 100644
--- a/gnomemusic/query.py
+++ b/gnomemusic/query.py
@@ -105,14 +105,6 @@ class Query():
     ORDER BY fn:lower-case(?title) ?author ?albumyear
     '''.replace('\n', ' ').strip()
 
-    ALBUMS_COUNT = '''
-    SELECT
-        COUNT(?album) AS childcount
-    WHERE {
-        ?album a nmm:MusicAlbum
-    }
-    '''.replace('\n', ' ').strip()
-
     ARTISTS = '''
     SELECT DISTINCT
         rdf:type(?album)
@@ -190,15 +182,6 @@ class Query():
     ORDER BY fn:lower-case(?author) ?albumyear nie:title(?album)
     '''.replace('\n', ' ').strip()
 
-    ARTISTS_COUNT = '''
-    SELECT
-        COUNT(DISTINCT ?artist)
-    WHERE {
-        ?artist a nmm:Artist .
-        ?album nmm:performer ?artist
-    }
-    '''.replace('\n', ' ').strip()
-
     SONGS = '''
     SELECT DISTINCT
         rdf:type(?song)
diff --git a/gnomemusic/view.py b/gnomemusic/view.py
index 3fb5978..1b6fb2c 100644
--- a/gnomemusic/view.py
+++ b/gnomemusic/view.py
@@ -42,7 +42,6 @@ from gi.repository import Tracker
 from gettext import gettext as _
 from gnomemusic.grilo import grilo
 import gnomemusic.widgets as Widgets
-from gnomemusic.query import Query
 from gnomemusic.albumArtCache import AlbumArtCache as albumArtCache
 tracker = Tracker.SparqlConnection.get(None)
 
@@ -59,7 +58,6 @@ class ViewContainer(Stack):
         nowPlayingIconName = 'media-playback-start-rtl-symbolic'
     errorIconName = 'dialog-error-symbolic'
     starIconName = 'starred-symbolic'
-    countQuery = None
 
     def __init__(self, title, header_bar, selection_toolbar, useStack=False):
         Stack.__init__(self,
@@ -89,7 +87,6 @@ class ViewContainer(Stack):
         )
         self.view.set_view_type(Gd.MainViewType.ICON)
         self.view.set_model(self._model)
-        self.vadjustment = self.view.get_vadjustment()
         self.selection_toolbar = selection_toolbar
         box = Gtk.Box(orientation=Gtk.Orientation.VERTICAL)
         box.pack_start(self.view, True, True, 0)
@@ -105,10 +102,6 @@ class ViewContainer(Stack):
         else:
             self._grid.add(box)
 
-        self._cached_count = -1
-        self._loadMore = Widgets.LoadMoreButton(self._get_remaining_item_count)
-        box.pack_end(self._loadMore.widget, False, False, 0)
-        self._loadMore.widget.connect('clicked', self._populate)
         self.view.connect('item-activated', self._on_item_activated)
         self._cursor = None
         self.header_bar = header_bar
@@ -122,8 +115,6 @@ class ViewContainer(Stack):
 
         self.show_all()
         self._items = []
-        self._loadMore.widget.hide()
-        self._connect_view()
         self.cache = albumArtCache.get_default()
         self._symbolicIcon = self.cache.make_default_icon(self._iconHeight,
                                                           self._iconWidth)
@@ -135,11 +126,6 @@ class ViewContainer(Stack):
         self.view.connect('view-selection-changed',
                           self._on_view_selection_changed)
 
-    def _get_remaining_item_count(self):
-        if self._cached_count < 0:
-            self._cached_count = Widgets.get_count(self.countQuery)
-        return self._cached_count - self._offset
-
     def _on_header_bar_toggled(self, button):
         if button.get_active():
             self.view.set_selection_mode(True)
@@ -178,34 +164,6 @@ class ViewContainer(Stack):
     def _on_state_changed(self, widget, data=None):
         pass
 
-    def _connect_view(self):
-        self._adjustmentValueId = self.vadjustment.connect(
-            'value-changed',
-            self._on_scrolled_win_change)
-
-    def _on_scrolled_win_change(self, data=None):
-        vScrollbar = self.view.get_vscrollbar()
-        revealAreaHeight = 32
-
-        #if there's no vscrollbar, or if it's not visible, hide the button
-        if not vScrollbar or not vScrollbar.get_visible():
-            self._loadMore.set_block(True)
-            return
-
-        value = self.vadjustment.get_value()
-        upper = self.vadjustment.get_upper()
-        page_size = self.vadjustment.get_page_size()
-
-        end = False
-        #special case self values which happen at construction
-        if (value == 0) and (upper == 1) and (page_size == 1):
-            end = False
-        else:
-            end = not (value < (upper - page_size - revealAreaHeight))
-        if self._get_remaining_item_count() <= 0:
-            end = False
-        self._loadMore.set_block(not end)
-
     def populate(self):
         print('populate')
 
@@ -277,7 +235,7 @@ class Empty(Stack):
         music_folder_path = GLib.get_user_special_dir(GLib.USER_DIRECTORY_MUSIC)
         widget = builder.get_object('container')
         label = builder.get_object('label1')
-        label.set_label(_("No Music found!\n Put some files into the folder %s" %music_folder_path))
+        label.set_label(_("No Music found!\n Put some files into the folder %s" % music_folder_path))
         self.add(widget)
         self.show_all()
 
@@ -287,7 +245,6 @@ class Albums(ViewContainer):
         ViewContainer.__init__(self, _("Albums"), header_bar,
                                selection_toolbar)
         self.view.set_view_type(Gd.MainViewType.ICON)
-        self.countQuery = Query.ALBUMS_COUNT
         self._albumWidget = Widgets.AlbumWidget(player)
         self.add(self._albumWidget)
 
@@ -315,7 +272,6 @@ class Albums(ViewContainer):
 class Songs(ViewContainer):
     def __init__(self, header_bar, selection_toolbar, player):
         ViewContainer.__init__(self, _("Songs"), header_bar, selection_toolbar)
-        self.countQuery = Query.SONGS_COUNT
         self._items = {}
         self.isStarred = None
         self.iter_to_clean = None
@@ -470,7 +426,6 @@ class Artists (ViewContainer):
         self.artists_counter = 0
         self.player = player
         self._artists = {}
-        self.countQuery = Query.ARTISTS_COUNT
         self.artistAlbumsStack = Stack(
             transition_type=StackTransitionType.CROSSFADE,
         )
diff --git a/gnomemusic/widgets.py b/gnomemusic/widgets.py
index 8668ec2..76abda8 100644
--- a/gnomemusic/widgets.py
+++ b/gnomemusic/widgets.py
@@ -38,7 +38,6 @@ from gi.repository import Tracker
 from gettext import gettext as _
 from gnomemusic.grilo import grilo
 import logging
-from gnomemusic.query import Query
 from gnomemusic.albumArtCache import AlbumArtCache
 
 tracker = Tracker.SparqlConnection.get(None)
@@ -50,59 +49,6 @@ else:
 ERROR_ICON_NAME = 'dialog-error-symbolic'
 
 
-def get_count(countQuery):
-    count = -1
-    if countQuery:
-        cursor = tracker.query(countQuery, None)
-        if cursor and cursor.next(None):
-            count = cursor.get_integer(0)
-    return count
-
-
-class LoadMoreButton:
-    def __init__(self, counter):
-        self._block = False
-        self._counter = counter
-        child = Gtk.Grid(column_spacing=10,
-                         hexpand=False,
-                         halign=Gtk.Align.CENTER,
-                         visible=True)
-        self._spinner = Gtk.Spinner(halign=Gtk.Align.CENTER,
-                                    no_show_all=True)
-        self._spinner.set_size_request(16, 16)
-        child.add(self._spinner)
-        self._label = Gtk.Label(label=_("Load More"),
-                                visible=True)
-        child.add(self._label)
-        self.widget = Gtk.Button(no_show_all=True,
-                                 child=child)
-        self.widget.get_style_context().add_class('documents-load-more')
-        self.widget.connect('clicked', self._on_load_more_clicked)
-        self._on_item_count_changed()
-
-    def _on_load_more_clicked(self, data=None):
-        self._label.set_label(_("Loading..."))
-        self._spinner.show()
-        self._spinner.start()
-
-    def _on_item_count_changed(self):
-        remaining_docs = self._counter()
-        visible = remaining_docs >= 0 and not self._block
-        self.widget.set_visible(visible)
-
-        if visible:
-            self._label.set_label(_("Load More"))
-            self._spinner.stop()
-            self._spinner.hide()
-
-    def set_block(self, block):
-        if (self._block == block):
-            return
-
-        self._block = block
-        self._on_item_count_changed()
-
-
 class AlbumWidget(Gtk.EventBox):
 
     tracks = []
@@ -435,55 +381,13 @@ class AllArtistsAlbums(ArtistAlbums):
     def __init__(self, player):
         ArtistAlbums.__init__(self, _("All Artists"), [], player)
         self._offset = 0
-        self.countQuery = Query.ALBUMS_COUNT
         self._cached_count = -1
-        self._load_more = LoadMoreButton(self._get_remaining_item_count)
-        self.pack_end(self._load_more.widget, False, False, 0)
-        self._load_more.widget.connect('clicked', self._populate)
-        self.vadjustment = self._scrolledWindow.get_vadjustment()
-        self._connect_view()
         self._populate()
 
-    def _get_remaining_item_count(self):
-        if self._cached_count < 0:
-            self._cached_count = get_count(self.countQuery)
-        return self._cached_count - self._offset
-
-    def _connect_view(self):
-        self._adjustmentValueId =\
-            self.vadjustment.connect('value-changed', self._on_scrolled_win_change)
-        self._adjustmentChangedId =\
-            self.vadjustment.connect('changed', self._on_scrolled_win_change)
-        self._scrollbarVisibleId =\
-            self._scrolledWindow.get_vscrollbar().connect(
-                'notify::visible',
-                self._on_scrolled_win_change)
-        self._on_scrolled_win_change()
-
-    def _on_scrolled_win_change(self, scrollbar=None, pspec=None, data=None):
-        vScrollbar = self._scrolledWindow.get_vscrollbar()
-        revealAreaHeight = 32
-
-        # if there's no vscrollbar, or if it's not visible, hide the button
-        if not vScrollbar or not vScrollbar.get_visible():
-            self._load_more.set_block(True)
-            return
-
-        value = self.vadjustment.get_value()
-        upper = self.vadjustment.get_upper()
-        page_size = self.vadjustment.get_page_size()
-        end = False
-
-        # special case this values which happen at construction
-        if (((value != 0) or (upper != 1) or (page_size != 1))
-                and self._get_remaining_item_count() > 0):
-            end = not (value < (upper - page_size - revealAreaHeight))
-        self._load_more.set_block(not end)
-
     def _populate(self, data=None):
         if grilo.tracker:
             GLib.idle_add(grilo.populate_albums,
-                          self._offset, self.add_item, 5)
+                          self._offset, self.add_item)
 
     def add_item(self, source, param, item):
         if item:


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]