[Banshee-List] QueryBuilder patch -Commitable against BANSHEE_0_9_11-



Title: QueryBuilder patch -Commitable against BANSHEE_0_9_11-

hi Aaron,

read some great documents. and now i am ready to go :)))

here is a patch file for query builder "perfectly" commitable against BANSHEE_0_9_11.
please ignore alllll previous ones.

Need to read a lot more though :)

Best
Ulas


? player.diff
? player2.diff
? query_BANSHEE_0_9_11.diff
? querybuildercommitable.diff
? burn-sharp/.deps
? burn-sharp/.libs
? burn-sharp/glue.lo
? burn-sharp/libnautilusburnglue.la
? libbanshee/.deps
? libbanshee/.libs
? libbanshee/cd-detect.lo
? libbanshee/cd-rip.lo
? libbanshee/gst-encode.lo
? libbanshee/gst-init.lo
? libbanshee/gst-misc.lo
? libbanshee/gst-player-engine.lo
? libbanshee/libbanshee.la
? libbanshee/xing/.deps
? po/.intltool-merge-cache
Index: ChangeLog
===================================================================
RCS file: /cvs/gnome/banshee/ChangeLog,v
retrieving revision 1.176
diff -r1.176 ChangeLog
0a1,20
> 2005-11-09  Aydemir Ulas Sahin <ulas arttek com tr>
> 
> 	*data/glade/player.glade: new widgets and containers for the querybuilder expander.
> 	*src/Library.cs: new QueryLibrary method to start a new SQLQueryTransaction and 
> 	eventhandler Queried.
> 	*src/LibraryTransactions.cs: new class SqlQueryTransaction : LibraryTransaction to 
> 	handle querying transactions.
> 
> 	*src/PlayerInterface.cs: new SqlBuilderUI query_builder propetry for the expander widget and 
> 	searchbuttonclicked eventhandler.
> 	*src/PlayerInterface.cs: searchEntry goes into its new home SearchHBox
> 	*src/PlayerInterface.cs: OnSearchButtonClicked callback function and OnLibraryQueried 
> 	callback implementation.
> 
> 	*src/QueryBuilderModel.cs: new property and handler (built_query, SearchButtonClicked) for SqlBuilderUI
> 	*src/QueryBuilderModel.cs: new constructor SqlBuilderUI(VBox parentVBox) to enable 
> 	builder to go into expander.
> 	*src/QueryBuilderModel.cs: fixed OnButtonClicked method to not only build the query 
> 	but send an event to the PlayerInterface for transactions to begin
> 
Index: data/glade/player.glade
===================================================================
RCS file: /cvs/gnome/banshee/data/glade/player.glade,v
retrieving revision 1.30
diff -r1.30 player.glade
912c912
< 			    <widget class="GtkLabel" id="ViewNameLabel">
---
> 			    <widget class="GtkExpander" id="LibraryExpander">
914,927c914,964
< 			      <property name="label" translatable="yes">&lt;b&gt;Playlist&lt;/b&gt;</property>
< 			      <property name="use_underline">False</property>
< 			      <property name="use_markup">True</property>
< 			      <property name="justify">GTK_JUSTIFY_LEFT</property>
< 			      <property name="wrap">False</property>
< 			      <property name="selectable">False</property>
< 			      <property name="xalign">0</property>
< 			      <property name="yalign">0.5</property>
< 			      <property name="xpad">0</property>
< 			      <property name="ypad">0</property>
< 			      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
< 			      <property name="width_chars">-1</property>
< 			      <property name="single_line_mode">False</property>
< 			      <property name="angle">0</property>
---
> 			      <property name="can_focus">True</property>
> 			      <property name="expanded">False</property>
> 			      <property name="spacing">0</property>
> 
> 			      <child>
> 				<widget class="GtkVBox" id="QueryBox">
> 				  <property name="visible">True</property>
> 				  <property name="homogeneous">False</property>
> 				  <property name="spacing">0</property>
> 
> 				  <child>
> 				    <placeholder/>
> 				  </child>
> 				</widget>
> 			      </child>
> 
> 			      <child>
> 				<widget class="GtkHBox" id="LibraryBox">
> 				  <property name="visible">True</property>
> 				  <property name="homogeneous">False</property>
> 				  <property name="spacing">0</property>
> 
> 				  <child>
> 				    <widget class="GtkLabel" id="ViewNameLabel">
> 				      <property name="visible">True</property>
> 				      <property name="label" translatable="yes">&lt;b&gt;Library&lt;/b&gt;</property>
> 				      <property name="use_underline">False</property>
> 				      <property name="use_markup">True</property>
> 				      <property name="justify">GTK_JUSTIFY_LEFT</property>
> 				      <property name="wrap">False</property>
> 				      <property name="selectable">False</property>
> 				      <property name="xalign">0</property>
> 				      <property name="yalign">0.5</property>
> 				      <property name="xpad">0</property>
> 				      <property name="ypad">0</property>
> 				      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
> 				      <property name="width_chars">-1</property>
> 				      <property name="single_line_mode">False</property>
> 				      <property name="angle">0</property>
> 				    </widget>
> 				    <packing>
> 				      <property name="padding">0</property>
> 				      <property name="expand">True</property>
> 				      <property name="fill">True</property>
> 				    </packing>
> 				  </child>
> 				</widget>
> 				<packing>
> 				  <property name="type">label_item</property>
> 				</packing>
> 			      </child>
937c974
< 			    <widget class="GtkLabel" id="SearchLabel">
---
> 			    <widget class="GtkVBox" id="SearchVBox">
939,952c976,1015
< 			      <property name="label" translatable="yes">Search:</property>
< 			      <property name="use_underline">False</property>
< 			      <property name="use_markup">False</property>
< 			      <property name="justify">GTK_JUSTIFY_LEFT</property>
< 			      <property name="wrap">False</property>
< 			      <property name="selectable">False</property>
< 			      <property name="xalign">0.5</property>
< 			      <property name="yalign">0.5</property>
< 			      <property name="xpad">0</property>
< 			      <property name="ypad">0</property>
< 			      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
< 			      <property name="width_chars">-1</property>
< 			      <property name="single_line_mode">False</property>
< 			      <property name="angle">0</property>
---
> 			      <property name="homogeneous">False</property>
> 			      <property name="spacing">0</property>
> 
> 			      <child>
> 				<widget class="GtkHBox" id="SearchHBox">
> 				  <property name="visible">True</property>
> 				  <property name="homogeneous">False</property>
> 				  <property name="spacing">0</property>
> 
> 				  <child>
> 				    <widget class="GtkLabel" id="SearchLabel">
> 				      <property name="visible">True</property>
> 				      <property name="label" translatable="yes">Search:</property>
> 				      <property name="use_underline">False</property>
> 				      <property name="use_markup">False</property>
> 				      <property name="justify">GTK_JUSTIFY_LEFT</property>
> 				      <property name="wrap">False</property>
> 				      <property name="selectable">False</property>
> 				      <property name="xalign">0.5</property>
> 				      <property name="yalign">0.5</property>
> 				      <property name="xpad">0</property>
> 				      <property name="ypad">0</property>
> 				      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
> 				      <property name="width_chars">-1</property>
> 				      <property name="single_line_mode">False</property>
> 				      <property name="angle">0</property>
> 				    </widget>
> 				    <packing>
> 				      <property name="padding">0</property>
> 				      <property name="expand">False</property>
> 				      <property name="fill">False</property>
> 				    </packing>
> 				  </child>
> 				</widget>
> 				<packing>
> 				  <property name="padding">0</property>
> 				  <property name="expand">False</property>
> 				  <property name="fill">False</property>
> 				</packing>
> 			      </child>
957c1020
< 			      <property name="fill">False</property>
---
> 			      <property name="fill">True</property>
Index: src/Library.cs
===================================================================
RCS file: /cvs/gnome/banshee/src/Library.cs,v
retrieving revision 1.27
diff -r1.27 Library.cs
49a50
> 	public event EventHandler Queried;
112a114,140
>         }
> 
> 	public void QueryLibrary(Statement query)
>         {
>             SqlQueryTransaction transaction = new SqlQueryTransaction(query);
>             
>             Tracks.Clear();
>             transaction.Finished += OnQueryLibraryFinished;
>             transaction.Register();
>             
>             /*string [] names = Playlist.ListAll();
>             if(names == null)
>                 return;
>                 
>             Playlists.Clear();
>             foreach(string name in names) {
>                 Playlist playlist = new Playlist(name);
>                 playlist.Load();
>                 Playlists[name] = playlist;
>             }*/
>         }
>         
>         private void OnQueryLibraryFinished(object o, EventArgs args)
>         {
>             EventHandler handler = Queried;
>             if(handler != null)
>                 handler(this, new EventArgs());
Index: src/LibraryTransactions.cs
===================================================================
RCS file: /cvs/gnome/banshee/src/LibraryTransactions.cs,v
retrieving revision 1.27
diff -r1.27 LibraryTransactions.cs
669a670,734
> 	public class SqlQueryTransaction : LibraryTransaction
> 	{
> 		private string sql;
> 		
> 		public event HaveTrackInfoHandler HaveTrackInfo;
> 		
> 		public override string Name {
> 			get {
> 				return Catalog.GetString("Library Track Loader");
> 			}
> 		}
> 		
> 		public SqlQueryTransaction(string sql)
> 		{
> 		    showStatus = false;
> 			this.sql = sql;
> 		}
> 		
> 		public SqlQueryTransaction(Statement sql) : this(sql.ToString())
> 		{
> 		
> 		}
> 		
> 		public override void Run()
> 		{
> 			totalCount = 0;
> 			currentCount = 0;
> 			statusMessage = Catalog.GetString("Processing");
> 			FilterSql();
> 		}
> 		
> 		private void RaiseTrackInfo(TrackInfo ti)
> 		{
> 			statusMessage = String.Format(
> 				Catalog.GetString("Loading {0} - {1} ..."),
> 				ti.Artist, ti.Title);
> 			currentCount++;
> 			
> 			HaveTrackInfoHandler handler = HaveTrackInfo;
> 			if(handler != null) {
> 				HaveTrackInfoArgs args = new HaveTrackInfoArgs();
> 				args.TrackInfo = ti;
> 				handler(this, args);
> 			}
> 		}
> 		
> 		private void FilterSql()
> 		{
> 			IDataReader reader = Core.Library.Db.Query(sql);
> 			while(reader.Read() && !cancelRequested) {
> 				DateTime startStamp = DateTime.Now;
> 				int tid = Convert.ToInt32(reader[0]);
> 				TrackInfo ti = Core.Library.Tracks[tid] as TrackInfo;
> 				try {
> 				    new LibraryTrackInfo(reader);
> 				} catch(Exception e) {
> 				    Core.Log.PushWarning(Catalog.GetString("Could not load track from library"),
> 				        (reader["Uri"] as string) + ": " + e.Message, false);
> 				}
> 				UpdateAverageDuration(startStamp);
> 			}
> 			
> 		}
> 	}	
> 
Index: src/PlayerInterface.cs
===================================================================
RCS file: /cvs/gnome/banshee/src/PlayerInterface.cs,v
retrieving revision 1.90
diff -r1.90 PlayerInterface.cs
80a81
> 	private SqlBuilderUI query_builder;
154a156,157
> 
> 	    query_builder.SearchButtonClicked += OnSearchButtonClicked;
364c367,368
<             ((HBox)gxml["PlaylistHeaderBox"]).PackStart(searchEntry, 
---
>             /*
> 	    ((HBox)gxml["PlaylistHeaderBox"]).PackStart(searchEntry, 
365a370,374
> 	    */
> 
> 	   ((HBox)gxml["SearchHBox"]).PackStart(searchEntry, 
>                 false, false, 0);  
>             query_builder = new SqlBuilderUI(((VBox)gxml["QueryBox"]));
546a556,571
>         }
> 
> 	private void OnSearchButtonClicked(object o, EventArgs args)
>         {
>         	string query = query_builder.Query;
>         	//Output query for debug purposes until querybuilder matures enough.
>         	Console.WriteLine(query);        	
> 			Statement query_statement = new Statement(query);
> 			Core.Library.Queried += OnLibraryQueried;
> 			Core.Library.QueryLibrary(query_statement); 	
>         }
>         
>         private void OnLibraryQueried(object o, EventArgs args)
>         {
>          	//Check if there is a better way of handling this event. 
>         	sourceView.SelectLibraryForce();
Index: src/QueryBuilderModel.cs
===================================================================
RCS file: /cvs/gnome/banshee/src/QueryBuilderModel.cs,v
retrieving revision 1.3
diff -r1.3 QueryBuilderModel.cs
129,130d128
< 					QueryFilterOperation.Is,
< 					QueryFilterOperation.IsNot,
134c132,134
< 					QueryFilterOperation.EndsWith
---
> 					QueryFilterOperation.EndsWith,
> 					QueryFilterOperation.Is,
> 					QueryFilterOperation.IsNot
274a275,289
> 
> 		private string built_query;
> 		public event EventHandler SearchButtonClicked;
> 		
> 		
> 		public string Query
>         	{
>             		get {
>                 		return built_query;
>             			}
>             
>            		set {
>                 		built_query = value;
>             			}
>         	}
300a316,337
> 		public SqlBuilderUI(VBox parentVBox)
> 		{
> 			parentVBox.Show();
> 			
> 			VBox box = new VBox();
> 			box.Show();
> 			parentVBox.Add(box);
> 			box.Spacing = 10;
> 			
> 			model = new TracksQueryModel();
> 			builder = new QueryBuilder(model);
> 			builder.Show();
> 			builder.Spacing = 4;
> 			
> 			box.PackStart(builder, true, true, 0);
> 			
> 			Button btn = new Button("Search");
> 			btn.Show();
> 			box.PackStart(btn, false, false, 0);
> 			btn.Clicked += OnButtonClicked;	
> 		}
> 		
313c350,355
< 			Console.WriteLine(query);
---
> 			built_query = query;
> 				
> 			EventHandler handler = SearchButtonClicked;
>            	if(handler != null)
>             	handler(this, new EventArgs());
>           						
314a357
> 		


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