[banshee: 42/61] [InternetArchive] Support fetching more results
- From: Gabriel Burt <gburt src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [banshee: 42/61] [InternetArchive] Support fetching more results
- Date: Tue, 3 Nov 2009 06:31:22 +0000 (UTC)
commit 4f0d5dc1f3a7a409d277772a406fced3b321beed
Author: Gabriel Burt <gabriel burt gmail com>
Date: Tue Oct 13 15:50:14 2009 -0700
[InternetArchive] Support fetching more results
If you scroll to the bottom of the results list, a message pops up with
a button to let you fetch more results.
.../Banshee.InternetArchive/SearchSource.cs | 16 ++++++++++++----
.../Banshee.InternetArchive/SearchView.cs | 18 ++++++++++++++++++
2 files changed, 30 insertions(+), 4 deletions(-)
---
diff --git a/src/Extensions/Banshee.InternetArchive/Banshee.InternetArchive/SearchSource.cs b/src/Extensions/Banshee.InternetArchive/Banshee.InternetArchive/SearchSource.cs
index 0990941..bafa503 100644
--- a/src/Extensions/Banshee.InternetArchive/Banshee.InternetArchive/SearchSource.cs
+++ b/src/Extensions/Banshee.InternetArchive/Banshee.InternetArchive/SearchSource.cs
@@ -63,6 +63,9 @@ namespace Banshee.InternetArchive
private IA.Search search;
private string status_text = "";
+ private int total_results = 0;
+ public int TotalResults { get { return total_results; } }
+
public IA.Search Search { get { return search; } }
public IListModel<IA.SearchResult> Model { get { return model; } }
@@ -109,13 +112,19 @@ namespace Banshee.InternetArchive
public void Reload ()
{
- ThreadAssist.SpawnFromMain (ThreadedReload);
+ model.Clear ();
+ ThreadAssist.SpawnFromMain (ThreadedFetch);
+ }
+
+ public void FetchMore ()
+ {
+ ThreadAssist.SpawnFromMain (ThreadedFetch);
}
- private void ThreadedReload ()
+ private void ThreadedFetch ()
{
bool success = false;
- int total_results = 0;
+ total_results = 0;
status_text = "";
Exception err = null;
@@ -136,7 +145,6 @@ namespace Banshee.InternetArchive
if (results != null) {
try {
- model.Clear ();
foreach (var result in results) {
model.Add (result);
diff --git a/src/Extensions/Banshee.InternetArchive/Banshee.InternetArchive/SearchView.cs b/src/Extensions/Banshee.InternetArchive/Banshee.InternetArchive/SearchView.cs
index 1638e26..bdef305 100644
--- a/src/Extensions/Banshee.InternetArchive/Banshee.InternetArchive/SearchView.cs
+++ b/src/Extensions/Banshee.InternetArchive/Banshee.InternetArchive/SearchView.cs
@@ -82,6 +82,24 @@ namespace Banshee.InternetArchive
var sw = new Gtk.ScrolledWindow ();
sw.Child = list_view;
+ var last_hid_more = DateTime.MinValue;
+ string more_text = Catalog.GetString ("Fetch more results from the Internet Archive?");
+ list_view.Vadjustment.ValueChanged += (o, a) => {
+ var adj = list_view.Vadjustment;
+ if ((DateTime.Now - last_hid_more).TotalSeconds > 2 && adj.Value >= adj.Upper - adj.PageSize) {
+ if (source.TotalResults > source.Model.Count) {
+ source.SetStatus (more_text, true, false, "gtk-question");
+ source.CurrentMessage.AddAction (new MessageAction (Catalog.GetString ("Fetch More"), delegate { source.FetchMore (); }));
+ }
+ }
+ };
+
+ source.MessageNotify += (o, a) => {
+ if (source.CurrentMessage != null && source.CurrentMessage.Text == more_text && source.CurrentMessage.IsHidden) {
+ last_hid_more = DateTime.Now;
+ }
+ };
+
PackStart (sw, true, true, 0);
ShowAll ();
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]