// ----------------------------------------------- // // FIXME: Ok, this is a real hack, it has half-support for buying multiple songs // but doenst really allow it yet. Will overwrite the song with the last one downloaded. protected virtual void ThreadWorker() { user_event = new ActiveUserEvent (String.Format (Catalog.GetString ("Purchasing {0} - {1}"), track.Artist, track.Title)); user_event.CanCancel = false; user_event.Icon = IconThemeUtils.LoadIcon("document-save", 22); // FIXME: Get a nice icon user_event.Header = Catalog.GetString ("Purchasing"); user_event.Message = String.Format ("{0} - {1}", track.Artist, track.Title); ArrayList songs = new ArrayList (); try { songs = plugin.Store.Buy (track.Data); } catch (Exception ex) { // FIXME: Error handling correct? user_event.Dispose (); HigMessageDialog.RunHigMessageDialog (null, 0, MessageType.Error, ButtonsType.Ok, "Purchase Error", String.Format ("There was an error while performing the purchase: {0}", ex.Message)); return; } Hashtable song, meta; for (int i = 0; i < songs.Count; i++) { song = (Hashtable) songs[i]; meta = song[ "metaData" ] != null ? (Hashtable)song ["metaData"] : song; user_event.Header = String.Format (Catalog.GetString ("Downloading {0} of {1}"), i+1, songs.Count); user_event.Message = String.Format (Catalog.GetString ("{0} - {1}"), track.Artist, track.Title); try { byte [] buffer = plugin.Store.DownloadSong (song, new FairStore.Progress (ProgressUpdate)); FileStream fs = new FileStream (MusicStorePlugin.GetLibraryPathForTrack (track), FileMode.CreateNew); BinaryWriter bw = new BinaryWriter (fs); bw.Write (buffer); bw.Close (); fs.Close (); } catch (Exception ex) { // FIXME: Error handling correct? user_event.Dispose (); HigMessageDialog.RunHigMessageDialog (null, 0, MessageType.Error, ButtonsType.Ok, "Download Error", String.Format ("There was an error while performing the download: {0}", ex.Message)); return; } } user_event.Dispose (); }
private static void CreateUserEventProxy(object o, EventArgs args) { if (userEvent == null) { userEvent = new ActiveUserEvent(Catalog.GetString("Download")); userEvent.Icon = IconThemeUtils.LoadIcon(Stock.Network, 22); userEvent.Header = Catalog.GetString("Downloading Files"); userEvent.Message = Catalog.GetString("Initializing downloads"); userEvent.CancelRequested += OnUserEventCancelRequestedHandler; cancel_requested = false; } }
private void ThreadedImport() { query = new Query(); query.AddDomain(QueryDomain.Neighborhood); query.MaxHits = 10000; // ugh? QueryPart_Property file_part = new QueryPart_Property(); file_part.Type = PropertyType.Keyword; file_part.Key = "beagle:HitType"; file_part.Value = "File"; query.AddPart(file_part); QueryPart_Or query_part_union = new QueryPart_Or(); foreach (string mimetype in supported_mime_types) { QueryPart_Property part = new QueryPart_Property(); part.Type = PropertyType.Keyword; part.Key = "beagle:MimeType"; part.Value = mimetype; query_part_union.Add(part); } query.AddPart(query_part_union); query.HitsAddedEvent += OnHitsAdded; query.FinishedEvent += OnFinished; user_event = new ActiveUserEvent(Catalog.GetString("Import from Beagle")); user_event.Header = Catalog.GetString("Importing from Beagle"); user_event.Message = Catalog.GetString("Running query..."); user_event.Icon = Icon; user_event.CancelRequested += OnCancelRequested; try { query.SendAsyncBlocking(); } catch (Exception e) { DisposeQuery(); LogCore.Instance.PushError(Catalog.GetString("Could not query Beagle Daemon"), e.Message, true); return; } if (SourceManager.ActiveSource is LibrarySource) { LibrarySource.Instance.Activate(); } }
private void DestroyUserEvent() { lock (update_sync) { if (userEvent != null) { if (!userEvent.IsCancelRequested) { Thread.Sleep(500); } userEvent.Dispose(); userEvent = null; } } }
private static void DestroyUserEvent(bool canceled) { // TODO: Track down deadlock. // Issue appears when run on main thread during app shutdown. //ThreadAssist.ProxyToMain ( delegate { if (userEvent != null) { if (!canceled) { Thread.Sleep(250); } userEvent.Dispose(); userEvent = null; cancel_requested = false; } //}); }
private void CreateUserEvent() { lock (update_sync) { if (userEvent == null) { userEvent = new ActiveUserEvent(Catalog.GetString("Podcast Feed Update")); userEvent.Icon = PodcastPixbufs.PodcastIcon22; userEvent.Header = Catalog.GetString("Updating"); userEvent.Message = Catalog.GetString("Preparing to update feeds"); userEvent.Progress = 0.0; userEvent.CancelRequested += OnUserEventCancelRequestedHandler; } } }
private void DisposeQuery() { if (query != null) { query.HitsAddedEvent -= OnHitsAdded; query.FinishedEvent -= OnFinished; query.Close(); query = null; } if (user_event != null) { user_event.Dispose(); user_event = null; } thread = null; }
private static void DestroyUserEvent(bool canceled) { // TODO: Track down deadlock. // Issue appears when run on main thread during app shutdown. //ThreadAssist.ProxyToMain ( delegate { if(userEvent != null) { if (!canceled) { Thread.Sleep (250); } userEvent.Dispose (); userEvent = null; cancel_requested = false; } //}); }
private static void CreateUserEventProxy(object o, EventArgs args) { if(userEvent == null) { userEvent = new ActiveUserEvent(Catalog.GetString("Download")); userEvent.Icon = IconThemeUtils.LoadIcon (Stock.Network, 22); userEvent.Header = Catalog.GetString ("Downloading Files"); userEvent.Message = Catalog.GetString ("Initializing downloads"); userEvent.CancelRequested += OnUserEventCancelRequestedHandler; cancel_requested = false; } }
private void DestroyUserEvent() { lock (update_sync) { if (userEvent != null) { if (!userEvent.IsCancelRequested) { Thread.Sleep (500); } userEvent.Dispose(); userEvent = null; } } }
private void CreateUserEvent() { lock (update_sync) { if (userEvent == null) { userEvent = new ActiveUserEvent (Catalog.GetString("Podcast Feed Update")); userEvent.Icon = PodcastPixbufs.PodcastIcon22; userEvent.Header = Catalog.GetString ("Updating"); userEvent.Message = Catalog.GetString ("Preparing to update feeds"); userEvent.Progress = 0.0; userEvent.CancelRequested += OnUserEventCancelRequestedHandler; } } }