Marcin Kolny [Sun, 31 Aug 2014 13:55:49 +0000 (15:55 +0200)]
OnlineMetadataFixer: removed workaround for FSharp.Data bug
Load method is already fixed in the newest version of FSharp.Data
Nicholas Little [Thu, 7 Aug 2014 21:43:34 +0000 (22:43 +0100)]
Dap.Bluetooth: Update addin dependencies
Addin dependencies are not calculated recursively...
Nicholas Little [Thu, 7 Aug 2014 16:33:49 +0000 (17:33 +0100)]
Dap.Bluetooth: Correct button order
Easily seen from the packing function, the volume buttons were the wrong
way round...
Nicholas Little [Thu, 7 Aug 2014 16:31:13 +0000 (17:31 +0100)]
Dap.Bluetooth: Remove unused static string
Marcin Kolny [Thu, 7 Aug 2014 10:05:19 +0000 (12:05 +0200)]
OnlineMetadataFixer: checking whether user's API key is valid
Marcin Kolny [Thu, 7 Aug 2014 08:39:03 +0000 (10:39 +0200)]
OnlineMetadataFixer: block plugin usage if user doesn't enter API key
Nicholas Little [Wed, 6 Aug 2014 19:40:26 +0000 (20:40 +0100)]
Dap.Bluetooth: Rename file, add Popover
Since the widget is now really just a button, we rename it as such while
adding the Popover class.
The popover consists of a single constructor; functions for setting
position and changing the relative_to GtkWidget are not implemented, nor
are signals.
Nicholas Little [Wed, 6 Aug 2014 16:26:05 +0000 (17:26 +0100)]
Dap.Bluetooth: Retire MediaControlWidget
After updating to Gnome 3.12, I wanted to use a Popover for the media
controls. Unfortunately they aren't available in GTK# yet so this patch
reduces the wasted space by abusing a GtkMenu activated by a toggle
button.
While requiring a little more work to make it look good, as a first
refactoring step this gives us a checkpoint we can return to.
Nicholas Little [Tue, 5 Aug 2014 23:43:34 +0000 (00:43 +0100)]
Dap.Bluetooth: path restore fix
The path was not being restored correctly after a dropped connection. In
this patch we make use of the robust crawl function and clear the path
before attempting to navigate.
Nicholas Little [Tue, 5 Aug 2014 23:41:45 +0000 (00:41 +0100)]
Dap.Bluetooth: Threading update
In this commit we reduce the verbosity of threading statements.
Marcin Kolny [Tue, 5 Aug 2014 23:13:29 +0000 (01:13 +0200)]
OnlineMetadataFixer: fixed file names in plugin description file
Nicholas Little [Tue, 5 Aug 2014 20:43:42 +0000 (21:43 +0100)]
Dap.Bluetooth: MediaControlWidget, minor refactor
Refactor repetitive widget creation to a function, as done in
DeviceWidget, also ensure main thread when refreshing.
Nicholas Little [Tue, 5 Aug 2014 20:29:24 +0000 (21:29 +0100)]
Dap.Bluetooth: Ensure icons are all the same size
Gnome 3.12 brought a size difference between the default icon size for
buttons compared to 3.10. This patch states that LargeToolbar is correct
to use throughout the DeviceWidget, ensuring that buttons line up as if
in a grid.
We leave the MediaControlWidget with smaller buttons, as it is a
sub panel of the DeviceWidget.
Nicholas Little [Tue, 5 Aug 2014 20:07:50 +0000 (21:07 +0100)]
Dap.Bluetooth: Cover failure cases in GnomeRfkill
- if the device has no killswitch, any operation succeeds;
- if the device is hard blocked, any operation fails;
- all other cases are success.
Nicholas Little [Tue, 5 Aug 2014 19:57:23 +0000 (20:57 +0100)]
Dap.Bluetooth: Initialise Rfkill PropertyManager
To ensure that we have up to date properties from the start, instead of
whatever default that particular property type may return.
Nicholas Little [Tue, 5 Aug 2014 19:52:06 +0000 (20:52 +0100)]
Dap.Bluetooth: Extract Gnome specific component
All AdapterManager really needs is a function to set and unset the
killswitch. We extract this to GnomeRfkill, although both types are
still placed in the same file, and pass an instance's Set member into
AdapterManager at construction time.
The value passed must have signature (bool -> bool), at the moment the
return is unchecked but in future will be used to present a Hyena
Warnf message.
Nicholas Little [Tue, 5 Aug 2014 19:34:48 +0000 (20:34 +0100)]
Dap.Bluetooth: organise/rename
Bluetooth DAP is rather heavy on files, this patch corrects the file
name specified in an initial comment block (GnomeApi.fs) and takes the
opportunity to create a solution folder for the smaller building blocks.
Nicholas Little [Tue, 5 Aug 2014 16:54:22 +0000 (17:54 +0100)]
Dap.Bluetooth: Update for Gnome 3.12
gnome-bluetooth-3.12 dropped support for the kill switch, which is now
provided by a dbus object in the org.gnome.SettingsDaemon namespace.
This patch adds support for that interface and removes the unrequired
submodule.
Marcin Kolny [Mon, 4 Aug 2014 19:22:24 +0000 (21:22 +0200)]
OnlineMetadataFixer: added gnome-keyring dependency checking
Marcin Kolny [Mon, 4 Aug 2014 19:08:45 +0000 (21:08 +0200)]
OnlineMetadataFixer: renamed *Source class to *Solver if inherits
from a Fixup.Solver class
Marcin Kolny [Mon, 4 Aug 2014 10:20:21 +0000 (12:20 +0200)]
OnlineMetadataFixer: extended status info with "Settings" button
Nicholas Little [Mon, 4 Aug 2014 17:56:11 +0000 (18:56 +0100)]
Dap.Bluetooth: break if condition then stmt
Nicholas Little [Mon, 4 Aug 2014 13:48:44 +0000 (14:48 +0100)]
Dap.Bluetooth: Don't force sync if AutoSync active
If AutoSync is active, the sync process will start during PostLoad. In
these cases, we can't remove the source. However, with
e.g. transfer, errors displayed as a child of the primary source,
perhaps we shouldn't remove it following a scheduled sync anyway.
Nicholas Little [Mon, 4 Aug 2014 13:36:41 +0000 (14:36 +0100)]
Dap.Bluetooth: Use TimeSpan.FromSeconds for Sleep
Using TimeSpan calculation when sleeping is more semantically clear
than using a literal number of milliseconds.
Nicholas Little [Mon, 4 Aug 2014 13:30:25 +0000 (14:30 +0100)]
Dap.Bluetooth: Synchronous sync
In the context of a scheduled connection and synchronisation we need to
know when the sync completes in order to be able to remove the source at
the correct time.
Ideally, DapSync would provide us with a synchronous method. In this
patch, we use Reflection to get at the private method and call it,
falling back to the asynchronous call if we're not successful.
Nicholas Little [Mon, 4 Aug 2014 13:23:53 +0000 (14:23 +0100)]
Dap.Bluetooth: fix build against banshee master
This patch adds the force parameter to the DeviceInitialize call for
BluetoothSource.
Dmitrii Petukhov [Sun, 3 Aug 2014 16:52:36 +0000 (20:52 +0400)]
SongKick.GeoLocation: improve notifyUser function
If number of gigs in the user city is a lot Banshee will try
to show many notifications.
What we're doing now is if number of gigs exceeds 3 gigs
then instead of showing all of them, we show one notification
with next text: "SongKick found many gigs near you,
check out all of them in Banshee!"
If we can't find any gigs we also notify user about it.
Marcin Kolny [Sat, 2 Aug 2014 11:17:11 +0000 (13:17 +0200)]
OnlineMetadataFixer: handled unexcepted exceptions
Marcin Kolny [Sat, 2 Aug 2014 09:56:19 +0000 (11:56 +0200)]
OnlineMetadataFixer: minors - typo, fixed slashes in project file
Marcin Kolny [Sat, 2 Aug 2014 09:48:02 +0000 (11:48 +0200)]
OnlineMetadataFixer: use "not" in more readable way
Marcin Kolny [Tue, 29 Jul 2014 17:59:45 +0000 (19:59 +0200)]
OnlineMetadataFixer: don't run metadata sender if AcoustID API key is empty
Marcin Kolny [Tue, 29 Jul 2014 17:54:41 +0000 (19:54 +0200)]
OnlineMetadataFixer: made api key invisible in a preferences window
Marcin Kolny [Tue, 29 Jul 2014 17:50:05 +0000 (19:50 +0200)]
OnlineMetadataFixer: minor - more accurate name for API key helper class
Marcin Kolny [Tue, 29 Jul 2014 17:35:01 +0000 (19:35 +0200)]
OnlineMetadataFixer: added preferences section
Nicholas Little [Sat, 2 Aug 2014 20:20:39 +0000 (21:20 +0100)]
Dap.Bluetooth: Separate schedule and auto sync
This patch allows the user to have auto sync disabled when doing a
scheduled sync.
Nicholas Little [Sat, 2 Aug 2014 17:24:02 +0000 (18:24 +0100)]
Dap.Bluetooth: Crawler, extract Drop to function
This patch extracts the member function, Drop, to a let binding over our
state.
It is used under failure conditions to request that BlueZ
discards the session and allows reconnect in a single
connection scenario (the scenario I test in) where the original
connection is dead, but BlueZ hasn't become aware.
Nicholas Little [Sat, 2 Aug 2014 15:19:42 +0000 (16:19 +0100)]
Dap.Bluetooth: Sleep between root requests
The last few patches made it quite easy to trigger a stack overflow
due to the retry being too fast.
When attempting to restore the
connection under these conditions it makes sense to sleep between
recursive calls to allow time for the connection to come back with a
grace time of up to 30 seconds, as originally intended.
Nicholas Little [Sat, 2 Aug 2014 13:06:41 +0000 (14:06 +0100)]
Dap.Bluetooth: Adds scheduled connection
As a first stab at automatic sync, this patch adds the capability to
connect a bluetooth device at a specified time of day, e.g. when you get
in from work or while your PC is on at night and your phone is on charge.
To enable auto sync, the usual Dap preferences checkbox is employed at
the moment as starting sync from elsewhere will require some threading
concerns, i.e. making sure that sync doesn't start while the source is
still loading tracks.
Dmitrii Petukhov [Fri, 1 Aug 2014 17:00:09 +0000 (21:00 +0400)]
SongKick: display city name in "Find music events by Location"
We should provide city name in SearchBar if
"Find music events by Location" is selected
and SongKick.GeoLocation is started.
Nicholas Little [Thu, 31 Jul 2014 01:00:52 +0000 (02:00 +0100)]
Dap.Bluetooth: Redundancy and Match Improvements
The first attempt at a redundant file crawler gave us connection retry,
this patch should go a little further by making sure the path is also
restored once the connection returns. To achieve this, Crawler's
navigation functions had to be, almost entirely, extracted.
In addition, the LoadCache is ported and included, along with the
necessary override to prevent DapSource purging our tracks.
A whole raft of matchers are included. Directories are matched
against "Artist/Album" or "Artist - Album". Then file names against:
- "01. Track"
- "01 - Track"
- "Artist - Album - 01 - Track"
- "Album - 01 - Track"
Last, a whole lot of Infof messages have been downgraded to Debugf.
Marcin Kolny [Mon, 28 Jul 2014 22:51:54 +0000 (00:51 +0200)]
OnlineMetadataFixer: sending metadata on one of the fields was modified
Marcin Kolny [Mon, 28 Jul 2014 20:31:06 +0000 (22:31 +0200)]
OnlineMetadataFixer: fixed background job implementation
Marcin Kolny [Mon, 28 Jul 2014 18:26:14 +0000 (20:26 +0200)]
OnlineMetadataFixer: submitting metadata to an AcoustID service improvement:
* more logs added
* submission status in debug info printed
Marcin Kolny [Sat, 26 Jul 2014 23:47:27 +0000 (01:47 +0200)]
OnlineMetadataFixer: used AcoustIDSender in plugin's background job
Marcin Kolny [Sat, 26 Jul 2014 23:45:03 +0000 (01:45 +0200)]
OnlineMetadataFixer: implemented acoustid metadata submitter
Marcin Kolny [Sat, 26 Jul 2014 22:30:39 +0000 (00:30 +0200)]
OnlineMetadataFixer: fixed warnings
Marcin Kolny [Sat, 26 Jul 2014 22:30:27 +0000 (00:30 +0200)]
OnlineMetadataFixer: added gnome-keyring based password manager
Nicholas Little [Thu, 24 Jul 2014 21:28:19 +0000 (22:28 +0100)]
Dap.Bluetooth: Now with Hyena.Log support
The F# way, with statically checked format strings :)
Dmitrii Petukhov [Thu, 24 Jul 2014 14:52:15 +0000 (18:52 +0400)]
FanArt: make log message more informative
Frank Ziegler [Thu, 24 Jul 2014 13:06:22 +0000 (23:06 +1000)]
Radiostationfetcher: Migrate to GTK3 and re-enable
Dmitrii Petukhov [Thu, 24 Jul 2014 04:14:32 +0000 (08:14 +0400)]
FanArt: fix GSlice memory error
In some situations Banshee crashed with next error:
"GSlice: MemChecker: attempt to release block with invalid size..."
(more: https://gist.github.com/dimart/
a79a4b18193f6db64d15)
Dmitrii Petukhov [Thu, 24 Jul 2014 04:07:27 +0000 (08:07 +0400)]
FanArt: add dynamic recovery cache when the last was deleted
After FanArt has retrieved some logos, if you quit banshee,
remove the cache folder, and run banshee again,
it doesn't retrieve the logos again.
So, now we check image path existence first,
and then try to redownload missed image.
Dmitrii Petukhov [Thu, 24 Jul 2014 04:01:58 +0000 (08:01 +0400)]
FanArt: fix infinite iterations when there is no Internet connection
If there's no internet connection, IterateCore keeps running
and printing logs messages in the console, unnecessarily.
Dmitrii Petukhov [Thu, 24 Jul 2014 03:55:18 +0000 (07:55 +0400)]
FanArt: refactoring in FanArtQueryJob.Lookup()
This doesn't change behaviour.
Dmitrii Petukhov [Thu, 24 Jul 2014 03:52:51 +0000 (07:52 +0400)]
FanArt: make sql commands more readable
Dmitrii Petukhov [Thu, 24 Jul 2014 03:42:28 +0000 (07:42 +0400)]
FanArt: add ability to get ArtistName by MusicBrainzID
Dmitrii Petukhov [Wed, 23 Jul 2014 20:25:41 +0000 (00:25 +0400)]
SongKick.GeoLocation: make cache folder name in lower
Dmitrii Petukhov [Wed, 23 Jul 2014 20:23:17 +0000 (00:23 +0400)]
CacheService: check whether directory exist on add
Dmitrii Petukhov [Wed, 23 Jul 2014 18:15:42 +0000 (22:15 +0400)]
FanArt: unsubscribe from ExtensionChanged event when ext is disabled
Dmitrii Petukhov [Wed, 23 Jul 2014 17:47:09 +0000 (21:47 +0400)]
SongKick.GeoLocation: simplify methods
Dmitrii Petukhov [Wed, 23 Jul 2014 17:42:16 +0000 (21:42 +0400)]
SongKick.GeoLocation: set last scan time to null when ext is disabled
Dmitrii Petukhov [Tue, 22 Jul 2014 22:59:17 +0000 (02:59 +0400)]
FanArt: cache server reply
Dmitrii Petukhov [Tue, 22 Jul 2014 22:31:16 +0000 (02:31 +0400)]
FanArt: fix build and change project reference to just reference
Dmitrii Petukhov [Tue, 22 Jul 2014 21:17:29 +0000 (01:17 +0400)]
FanArt: add reference to CacheService
Dmitrii Petukhov [Tue, 22 Jul 2014 18:18:57 +0000 (22:18 +0400)]
FanArt: throw away generic catch blocks
Dmitrii Petukhov [Tue, 22 Jul 2014 18:16:40 +0000 (22:16 +0400)]
FanArt: remove FanArtMetadataProvider when extension disabled
Dmitrii Petukhov [Tue, 22 Jul 2014 18:08:28 +0000 (22:08 +0400)]
FanArt: fix SQL errors (bgo#733558)
Disabling FanArt extension causes SQL errors.
This happened because ArtistImageJob was not cancelled correctly.
Dmitrii Petukhov [Tue, 22 Jul 2014 00:38:58 +0000 (04:38 +0400)]
SongKick.GeoLocation: detach Service from LocationProvider in Dispose()
If user turn on and turn off SongKick.GeoLocation extension
many times we should properly subscribe and unsubscribe to
LocationProviderManager.
Andrés G. Aragoneses [Mon, 21 Jul 2014 23:37:28 +0000 (01:37 +0200)]
SongKick: no need to specify path for FSharp.Core
The FIXME then is deleted, because there's no need for it.
Dmitrii Petukhov [Mon, 21 Jul 2014 22:43:29 +0000 (02:43 +0400)]
FanArt: fix Cairo Surface leaking problem
We need to be sure that artistImage is always disposed correctly.
So we used 'using'.
Andrés G. Aragoneses [Mon, 21 Jul 2014 21:58:45 +0000 (23:58 +0200)]
FanArt: refactoring in ArtistColumnCell.Render()
This doesn't change behaviour.
Dmitrii Petukhov [Mon, 21 Jul 2014 21:02:12 +0000 (01:02 +0400)]
SongKick: fix obscure error message
Dmitrii Petukhov [Mon, 21 Jul 2014 20:59:37 +0000 (00:59 +0400)]
SongKick: fix types in Search
It was a typo.
Dmitrii Petukhov [Mon, 21 Jul 2014 20:54:00 +0000 (00:54 +0400)]
FanArt: make exception catching more specific
It was unclear what type of exception we are afraid of.
Dmitrii Petukhov [Mon, 21 Jul 2014 18:53:05 +0000 (22:53 +0400)]
SongKick: check query string for null or empty before use
Dmitrii Petukhov [Mon, 21 Jul 2014 18:51:21 +0000 (22:51 +0400)]
CacheService: check keys for null or empty
Check keys for empty or null before using it.
Dmitrii Petukhov [Mon, 21 Jul 2014 16:53:04 +0000 (20:53 +0400)]
SongKick.GeoLocation: Empty artist names shall not pass!
If somehow we get empty artist name in recommendations
then we should exclude it from the flow.
Dmitrii Petukhov [Mon, 21 Jul 2014 16:49:14 +0000 (20:49 +0400)]
SongKick.GeoLocation: implement ICityNameObserver in Service
It's better to update RunTimeout for the first time
when city name is available.
Dmitrii Petukhov [Mon, 21 Jul 2014 16:41:00 +0000 (20:41 +0400)]
SongKick.GeoLocation: fix refresh time issue
If runtime of RefreshRecommendedGigs() takes more than one second,
then it will be invoked many times (due to tiny refresh time).
So, if it's needed we call RefreshRecommendedGigs and return
delay time as next retry time so that RefreshRecommendedGigs
should have time to perform.
Frank Ziegler [Mon, 21 Jul 2014 14:07:24 +0000 (00:07 +1000)]
LiveRadio: Migrated to GTK3 and re-enable
Frank Ziegler [Mon, 21 Jul 2014 13:46:46 +0000 (23:46 +1000)]
Karaoke: fix build and re-enable
Frank Ziegler [Mon, 21 Jul 2014 13:17:09 +0000 (23:17 +1000)]
Ampache: Migrate to GTK3 and re-enable
Removed the auto-generated Preferences GUI and manually created it.
Changed from Source to PrimarySource to prevent crash when switching to
Ampache source.
Dmitrii Petukhov [Mon, 21 Jul 2014 04:03:58 +0000 (08:03 +0400)]
SongKick.GeoLocation: fix typo
Dmitrii Petukhov [Mon, 21 Jul 2014 02:39:15 +0000 (06:39 +0400)]
SongKick.GeoLocation: improve refresh logic
Now it saves last update time and updates gigs list
only when 12 hours pass. (Even if Banshee has been closed).
Frank Ziegler [Sun, 20 Jul 2014 14:33:58 +0000 (00:33 +1000)]
Awn: Migrated to GTK3 and re-enabling
Frank Ziegler [Sun, 20 Jul 2014 14:29:40 +0000 (00:29 +1000)]
AppIndicator: Migrated to GTK3 to compile
The appindicator is still based on GTK2 so the menu does not work. The
extension compiles and runs, notifications work with new notify-sharp-3.0
There is still some work to be done, so not re-enabling the extension
Frank Ziegler [Sun, 20 Jul 2014 13:15:56 +0000 (23:15 +1000)]
Streamrecorder: fixed build and re-enable
Frank Ziegler [Sun, 20 Jul 2014 10:30:39 +0000 (20:30 +1000)]
Lyrics: Migrated to GTK3, but did not re-enable as WebBrowser is not working
Frank Ziegler [Sun, 20 Jul 2014 10:21:37 +0000 (20:21 +1000)]
Telepathy: Migrated to GTK3
Frank Ziegler [Sun, 20 Jul 2014 10:00:28 +0000 (20:00 +1000)]
Coverwallpaper: fixed build by not taking CS1701 warning as error and re-enable
Frank Ziegler [Sun, 20 Jul 2014 04:32:00 +0000 (14:32 +1000)]
LCD: Migrated to GTK3 and re-enabled
Frank Ziegler [Sun, 20 Jul 2014 04:18:29 +0000 (14:18 +1000)]
Jamendo: Updated to latest Hyena logging convention and re-enabled
Hyena has deprecated logging "Exception", so now logging as "Warning"
Frank Ziegler [Sun, 20 Jul 2014 04:14:37 +0000 (14:14 +1000)]
FolderSync: Migrated to GTK3 and re-enabled
Frank Ziegler [Sun, 20 Jul 2014 03:32:20 +0000 (13:32 +1000)]
Alarmclock: migrated to GTK3 and re-enabled extension
Dmitrii Petukhov [Sat, 19 Jul 2014 23:16:05 +0000 (03:16 +0400)]
SongKick.GeoLocation: cleanup code and get rid of mutables
I've also made some methods private, chose better names,
made code better structured in general.
Dmitrii Petukhov [Sat, 19 Jul 2014 23:10:29 +0000 (03:10 +0400)]
CacheService: minor changes
Andrés G. Aragoneses [Sat, 19 Jul 2014 18:36:40 +0000 (20:36 +0200)]
FanArt: last (hopefully) Fanart->FanArt renaming
Andrés G. Aragoneses [Sat, 19 Jul 2014 18:31:36 +0000 (20:31 +0200)]
FanArt: minor code cleanup
Andrés G. Aragoneses [Sat, 19 Jul 2014 18:23:07 +0000 (20:23 +0200)]
FanArt: more Fanart->FanArt renaming, this time in namespaces
Andrés G. Aragoneses [Sat, 19 Jul 2014 18:14:45 +0000 (20:14 +0200)]
FanArt: rename most "Fanart" artifacts to "FanArt" name
The name "Fanart" doesn't say anything in itself, it's better to
rename it to use PascalNotation like other extension names.