Hello community, here is the log from the commit of package lollypop for openSUSE:Factory checked in at 2017-06-04 02:02:13 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/lollypop (Old) and /work/SRC/openSUSE:Factory/.lollypop.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "lollypop" Sun Jun 4 02:02:13 2017 rev:26 rq:500877 version:0.9.239 Changes: -------- --- /work/SRC/openSUSE:Factory/lollypop/lollypop.changes 2017-05-16 14:46:27.420154628 +0200 +++ /work/SRC/openSUSE:Factory/.lollypop.new/lollypop.changes 2017-06-04 02:02:38.764342786 +0200 @@ -1,0 +2,6 @@ +Sat Jun 3 15:43:36 UTC 2017 - [email protected] + +- Update to version 0.9.239: + + Bug fixes, including for boo#1040253. + +------------------------------------------------------------------- Old: ---- lollypop-0.9.233.tar.xz New: ---- lollypop-0.9.239.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ lollypop.spec ++++++ --- /var/tmp/diff_new_pack.PkWHDg/_old 2017-06-04 02:02:39.604224237 +0200 +++ /var/tmp/diff_new_pack.PkWHDg/_new 2017-06-04 02:02:39.604224237 +0200 @@ -19,7 +19,7 @@ %global gobject_introspection_version 1.35.9 %global gtk3_version 3.14 Name: lollypop -Version: 0.9.233 +Version: 0.9.239 Release: 0 Summary: GNOME music playing application License: GPL-3.0+ ++++++ lollypop-0.9.233.tar.xz -> lollypop-0.9.239.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lollypop-0.9.233/Makefile.am new/lollypop-0.9.239/Makefile.am --- old/lollypop-0.9.233/Makefile.am 2017-03-18 12:53:53.000000000 +0100 +++ new/lollypop-0.9.239/Makefile.am 2017-05-16 10:37:15.000000000 +0200 @@ -48,7 +48,7 @@ -e s!\@libexecdir\@!$(libexecdir)! \ -e s!\@libdir\@!$(libdir)! \ -e s!\@pkglibdir\@!$(pkglibdir)! \ - -e s!\@PYTHON\@!$(PYTHON)! \ + -e s!\@PYTHON\@!$(PYTHON)! \ -e s!\@localedir\@!$(localedir)! \ -e s!\@pythondir\@!$(pythondir)! \ -e s!\@pyexecdir\@!$(pyexecdir)! \ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lollypop-0.9.233/Makefile.in new/lollypop-0.9.239/Makefile.in --- old/lollypop-0.9.233/Makefile.in 2017-05-10 14:35:01.000000000 +0200 +++ new/lollypop-0.9.239/Makefile.in 2017-06-02 11:04:45.000000000 +0200 @@ -950,7 +950,7 @@ -e s!\@libexecdir\@!$(libexecdir)! \ -e s!\@libdir\@!$(libdir)! \ -e s!\@pkglibdir\@!$(pkglibdir)! \ - -e s!\@PYTHON\@!$(PYTHON)! \ + -e s!\@PYTHON\@!$(PYTHON)! \ -e s!\@localedir\@!$(localedir)! \ -e s!\@pythondir\@!$(pythondir)! \ -e s!\@pyexecdir\@!$(pyexecdir)! \ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lollypop-0.9.233/configure new/lollypop-0.9.239/configure --- old/lollypop-0.9.233/configure 2017-05-10 14:35:02.000000000 +0200 +++ new/lollypop-0.9.239/configure 2017-06-02 11:04:46.000000000 +0200 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for lollypop 0.9.233. +# Generated by GNU Autoconf 2.69 for lollypop 0.9.239. # # Report bugs to <https://github.com/gnumdk/lollypop>. # @@ -579,8 +579,8 @@ # Identity of this package. PACKAGE_NAME='lollypop' PACKAGE_TARNAME='lollypop' -PACKAGE_VERSION='0.9.233' -PACKAGE_STRING='lollypop 0.9.233' +PACKAGE_VERSION='0.9.239' +PACKAGE_STRING='lollypop 0.9.239' PACKAGE_BUGREPORT='https://github.com/gnumdk/lollypop' PACKAGE_URL='https://github.com/gnumdk/lollypop' @@ -1287,7 +1287,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures lollypop 0.9.233 to adapt to many kinds of systems. +\`configure' configures lollypop 0.9.239 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1353,7 +1353,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of lollypop 0.9.233:";; + short | recursive ) echo "Configuration of lollypop 0.9.239:";; esac cat <<\_ACEOF @@ -1454,7 +1454,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -lollypop configure 0.9.233 +lollypop configure 0.9.239 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -1471,7 +1471,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by lollypop $as_me 0.9.233, which was +It was created by lollypop $as_me 0.9.239, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -2338,7 +2338,7 @@ # Define the identity of the package. PACKAGE='lollypop' - VERSION='0.9.233' + VERSION='0.9.239' cat >>confdefs.h <<_ACEOF @@ -4801,7 +4801,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by lollypop $as_me 0.9.233, which was +This file was extended by lollypop $as_me 0.9.239, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -4868,7 +4868,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -lollypop config.status 0.9.233 +lollypop config.status 0.9.239 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lollypop-0.9.233/configure.ac new/lollypop-0.9.239/configure.ac --- old/lollypop-0.9.233/configure.ac 2017-05-10 14:34:54.000000000 +0200 +++ new/lollypop-0.9.239/configure.ac 2017-06-02 11:04:10.000000000 +0200 @@ -1,6 +1,6 @@ AC_PREREQ(2.63) AC_INIT([lollypop], - [0.9.233], + [0.9.239], [https://github.com/gnumdk/lollypop], [lollypop], [https://github.com/gnumdk/lollypop]) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lollypop-0.9.233/data/AboutDialog.ui new/lollypop-0.9.239/data/AboutDialog.ui --- old/lollypop-0.9.233/data/AboutDialog.ui 2017-05-10 14:35:03.000000000 +0200 +++ new/lollypop-0.9.239/data/AboutDialog.ui 2017-06-02 11:04:47.000000000 +0200 @@ -8,7 +8,7 @@ <property name="destroy_with_parent">True</property> <property name="type_hint">normal</property> <property name="program_name">Lollypop</property> - <property name="version">0.9.233</property> + <property name="version">0.9.239</property> <property name="copyright">Copyright © 2014-2016 Cédric Bellegarde</property> <property name="comments" translatable="yes">A music player for GNOME.</property> <property name="website">https://github.com/gnumdk/lollypop</property> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lollypop-0.9.233/data/CoverBox.ui new/lollypop-0.9.239/data/CoverBox.ui --- old/lollypop-0.9.233/data/CoverBox.ui 2016-12-16 11:05:26.000000000 +0100 +++ new/lollypop-0.9.239/data/CoverBox.ui 2017-05-16 10:32:45.000000000 +0200 @@ -3,8 +3,8 @@ <interface> <requires lib="gtk+" version="3.14"/> <object class="GtkGrid" id="coverbox"> - <property name="can_focus">False</property> <property name="visible">True</property> + <property name="can_focus">False</property> <property name="margin_top">2</property> <property name="orientation">vertical</property> <property name="column_homogeneous">True</property> @@ -38,8 +38,10 @@ <object class="GtkEventBox" id="play-event"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="halign">center</property> - <property name="valign">center</property> + <property name="halign">start</property> + <property name="valign">end</property> + <property name="margin_bottom">6</property> + <property name="margin_left">5</property> <signal name="button-press-event" handler="_on_play_press_event" swapped="no"/> <signal name="realize" handler="_on_eventbox_realize" swapped="no"/> <child> @@ -48,7 +50,7 @@ <property name="tooltip_text" translatable="yes">Play</property> <property name="opacity">0</property> <property name="icon_name">media-playback-start-symbolic</property> - <property name="icon_size">5</property> + <property name="icon_size">1</property> </object> </child> </object> @@ -59,7 +61,7 @@ <property name="can_focus">False</property> <property name="halign">end</property> <property name="valign">end</property> - <property name="margin_end">5</property> + <property name="margin_right">5</property> <property name="margin_bottom">6</property> <property name="column_spacing">5</property> <child> @@ -74,6 +76,7 @@ <property name="tooltip_text" translatable="yes">Change artwork</property> <property name="opacity">0</property> <property name="icon_name">image-x-generic-symbolic</property> + <property name="icon_size">1</property> </object> </child> </object> @@ -93,6 +96,7 @@ <property name="can_focus">False</property> <property name="opacity">0</property> <property name="icon_name">list-add-symbolic</property> + <property name="icon_size">1</property> </object> </child> </object> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lollypop-0.9.233/data/org.gnome.Lollypop.gschema.xml new/lollypop-0.9.239/data/org.gnome.Lollypop.gschema.xml --- old/lollypop-0.9.233/data/org.gnome.Lollypop.gschema.xml 2017-02-05 11:20:56.000000000 +0100 +++ new/lollypop-0.9.239/data/org.gnome.Lollypop.gschema.xml 2017-05-23 17:48:44.000000000 +0200 @@ -276,6 +276,11 @@ <summary>Mix duration</summary> <description></description> </key> + <key type="b" name="smart-previous"> + <default>false</default> + <summary>Reset current track position on previous</summary> + <description></description> + </key> <key enum="org.gnome.Lollypop.Shuffle" name="shuffle"> <default>'none'</default> <summary>Shuffle mode</summary> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lollypop-0.9.233/help/pt_BR/pt_BR.po new/lollypop-0.9.239/help/pt_BR/pt_BR.po --- old/lollypop-0.9.233/help/pt_BR/pt_BR.po 2017-04-13 15:54:55.000000000 +0200 +++ new/lollypop-0.9.239/help/pt_BR/pt_BR.po 2017-05-16 11:09:18.000000000 +0200 @@ -1,16 +1,16 @@ # # Translators: # Laís Figueiredo <[email protected]>, 2016 -# Lidáque <[email protected]>, 2017 -# Lidáque <[email protected]>, 2016 -# Lidáque <[email protected]>, 2016 +# Lucas Miranda <[email protected]>, 2017 +# Lucas Miranda <[email protected]>, 2016 +# Lucas Miranda <[email protected]>, 2016 # Ricardo Borges Jr. <[email protected]>, 2015-2016 msgid "" msgstr "" "Project-Id-Version: lollypop\n" "POT-Creation-Date: 2017-01-24 17:28+0100\n" "PO-Revision-Date: 2017-01-25 00:25+0000\n" -"Last-Translator: Lidáque <[email protected]>\n" +"Last-Translator: Lucas Miranda <[email protected]>\n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/gnumdk/lollypop/language/pt_BR/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lollypop-0.9.233/lollypop.in new/lollypop-0.9.239/lollypop.in --- old/lollypop-0.9.233/lollypop.in 2017-04-12 13:06:21.000000000 +0200 +++ new/lollypop-0.9.239/lollypop.in 2017-05-16 10:38:08.000000000 +0200 @@ -44,7 +44,7 @@ resource = Gio.resource_load(os.path.join(pkgdatadir, 'lollypop.gresource')) Gio.Resource._register(resource) - app = Application() + app = Application("@VERSION@") signal.signal(signal.SIGINT, signal.SIG_DFL) if 'LOLLYPOP_TRACE' in os.environ: graphviz = GraphvizOutput() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lollypop-0.9.233/m4/pkg.m4 new/lollypop-0.9.239/m4/pkg.m4 --- old/lollypop-0.9.233/m4/pkg.m4 2016-11-20 18:32:50.000000000 +0100 +++ new/lollypop-0.9.239/m4/pkg.m4 2017-05-10 15:53:13.000000000 +0200 @@ -1,6 +1,6 @@ -dnl pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- -dnl serial 11 (pkg-config-0.29.1) -dnl +# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- +# serial 11 (pkg-config-0.29.1) + dnl Copyright © 2004 Scott James Remnant <[email protected]>. dnl Copyright © 2012-2015 Dan Nicholson <[email protected]> dnl @@ -273,3 +273,71 @@ AS_VAR_IF([$1], [""], [$5], [$4])dnl ])dnl PKG_CHECK_VAR + +dnl PKG_WITH_MODULES(VARIABLE-PREFIX, MODULES, +dnl [ACTION-IF-FOUND],[ACTION-IF-NOT-FOUND], +dnl [DESCRIPTION], [DEFAULT]) +dnl ------------------------------------------ +dnl +dnl Prepare a "--with-" configure option using the lowercase +dnl [VARIABLE-PREFIX] name, merging the behaviour of AC_ARG_WITH and +dnl PKG_CHECK_MODULES in a single macro. +AC_DEFUN([PKG_WITH_MODULES], +[ +m4_pushdef([with_arg], m4_tolower([$1])) + +m4_pushdef([description], + [m4_default([$5], [build with ]with_arg[ support])]) + +m4_pushdef([def_arg], [m4_default([$6], [auto])]) +m4_pushdef([def_action_if_found], [AS_TR_SH([with_]with_arg)=yes]) +m4_pushdef([def_action_if_not_found], [AS_TR_SH([with_]with_arg)=no]) + +m4_case(def_arg, + [yes],[m4_pushdef([with_without], [--without-]with_arg)], + [m4_pushdef([with_without],[--with-]with_arg)]) + +AC_ARG_WITH(with_arg, + AS_HELP_STRING(with_without, description[ @<:@default=]def_arg[@:>@]),, + [AS_TR_SH([with_]with_arg)=def_arg]) + +AS_CASE([$AS_TR_SH([with_]with_arg)], + [yes],[PKG_CHECK_MODULES([$1],[$2],$3,$4)], + [auto],[PKG_CHECK_MODULES([$1],[$2], + [m4_n([def_action_if_found]) $3], + [m4_n([def_action_if_not_found]) $4])]) + +m4_popdef([with_arg]) +m4_popdef([description]) +m4_popdef([def_arg]) + +])dnl PKG_WITH_MODULES + +dnl PKG_HAVE_WITH_MODULES(VARIABLE-PREFIX, MODULES, +dnl [DESCRIPTION], [DEFAULT]) +dnl ----------------------------------------------- +dnl +dnl Convenience macro to trigger AM_CONDITIONAL after PKG_WITH_MODULES +dnl check._[VARIABLE-PREFIX] is exported as make variable. +AC_DEFUN([PKG_HAVE_WITH_MODULES], +[ +PKG_WITH_MODULES([$1],[$2],,,[$3],[$4]) + +AM_CONDITIONAL([HAVE_][$1], + [test "$AS_TR_SH([with_]m4_tolower([$1]))" = "yes"]) +])dnl PKG_HAVE_WITH_MODULES + +dnl PKG_HAVE_DEFINE_WITH_MODULES(VARIABLE-PREFIX, MODULES, +dnl [DESCRIPTION], [DEFAULT]) +dnl ------------------------------------------------------ +dnl +dnl Convenience macro to run AM_CONDITIONAL and AC_DEFINE after +dnl PKG_WITH_MODULES check. HAVE_[VARIABLE-PREFIX] is exported as make +dnl and preprocessor variable. +AC_DEFUN([PKG_HAVE_DEFINE_WITH_MODULES], +[ +PKG_HAVE_WITH_MODULES([$1],[$2],[$3],[$4]) + +AS_IF([test "$AS_TR_SH([with_]m4_tolower([$1]))" = "yes"], + [AC_DEFINE([HAVE_][$1], 1, [Enable ]m4_tolower([$1])[ support])]) +])dnl PKG_HAVE_DEFINE_WITH_MODULES diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lollypop-0.9.233/po/pt_BR.po new/lollypop-0.9.239/po/pt_BR.po --- old/lollypop-0.9.233/po/pt_BR.po 2017-04-13 15:54:45.000000000 +0200 +++ new/lollypop-0.9.239/po/pt_BR.po 2017-05-16 11:09:07.000000000 +0200 @@ -6,9 +6,9 @@ # Cédric Bellegarde <[email protected]>, 2016 # Ian Brunelli <[email protected]>, 2015 # Laís Figueiredo <[email protected]>, 2016 -# Lidáque <[email protected]>, 2016-2017 -# Lidáque <[email protected]>, 2016-2017 -# Lidáque <[email protected]>, 2016 +# Lucas Miranda <[email protected]>, 2016-2017 +# Lucas Miranda <[email protected]>, 2016-2017 +# Lucas Miranda <[email protected]>, 2016 # Ricardo Borges Jr. <[email protected]>, 2015 msgid "" msgstr "" @@ -16,7 +16,7 @@ "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2017-02-27 13:51+0100\n" "PO-Revision-Date: 2017-03-01 16:23+0000\n" -"Last-Translator: Lidáque <[email protected]>\n" +"Last-Translator: Lucas Miranda <[email protected]>\n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/gnumdk/lollypop/language/pt_BR/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lollypop-0.9.233/po/pt_PT.po new/lollypop-0.9.239/po/pt_PT.po --- old/lollypop-0.9.233/po/pt_PT.po 2017-04-13 15:54:50.000000000 +0200 +++ new/lollypop-0.9.239/po/pt_PT.po 2017-05-16 11:09:02.000000000 +0200 @@ -10,7 +10,7 @@ "Project-Id-Version: lollypop\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2017-02-27 13:51+0100\n" -"PO-Revision-Date: 2017-03-01 16:25+0000\n" +"PO-Revision-Date: 2017-05-10 22:57+0000\n" "Last-Translator: Alberto Almeida <[email protected]>\n" "Language-Team: Portuguese (Portugal) (http://www.transifex.com/gnumdk/lollypop/language/pt_PT/)\n" "MIME-Version: 1.0\n" @@ -549,11 +549,11 @@ #: ../src/pop_menu.py:226 msgid "Remove from \"Not in party\"" -msgstr "" +msgstr "Remover de \"Não no modo de festa\"" #: ../src/pop_menu.py:231 msgid "Add to \"Not in party\"" -msgstr "" +msgstr "Adicionar a \"Não no modo de festa\"" #: ../src/pop_menu.py:252 #, python-format @@ -662,7 +662,7 @@ #: ../src/selectionlist.py:301 msgid "Not in party" -msgstr "" +msgstr "Não no modo de festa" #: ../src/settings.py:91 msgid "Google Web Services need a custom API key" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lollypop-0.9.233/po/zh_CN.po new/lollypop-0.9.239/po/zh_CN.po --- old/lollypop-0.9.233/po/zh_CN.po 2017-04-13 15:54:47.000000000 +0200 +++ new/lollypop-0.9.239/po/zh_CN.po 2017-05-16 11:09:10.000000000 +0200 @@ -6,7 +6,7 @@ # mabier <[email protected]>, 2015-2016 # Mingcong Bai <[email protected]>, 2016-2017 # orange <[email protected]>, 2015 -# Michikora, 2016 +# michikora, 2016 # Mingcong Bai <[email protected]>, 2016 msgid "" msgstr "" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lollypop-0.9.233/search-provider/lollypop-sp new/lollypop-0.9.239/search-provider/lollypop-sp --- old/lollypop-0.9.233/search-provider/lollypop-sp 2017-05-10 14:35:04.000000000 +0200 +++ new/lollypop-0.9.239/search-provider/lollypop-sp 2017-06-02 11:04:48.000000000 +0200 @@ -180,7 +180,7 @@ gicon = self.art.get_album_cache_path(album, ArtSize.BIG) else: track = Track(int(search_id[2:])) - name = track.name + name = "♫ " + track.name description = " ".join(track.artists) surface = self.art.get_album_artwork(track.album, ArtSize.BIG, 1) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lollypop-0.9.233/search-provider/lollypop-sp.in new/lollypop-0.9.239/search-provider/lollypop-sp.in --- old/lollypop-0.9.233/search-provider/lollypop-sp.in 2017-03-18 12:55:47.000000000 +0100 +++ new/lollypop-0.9.239/search-provider/lollypop-sp.in 2017-06-01 18:58:33.000000000 +0200 @@ -180,7 +180,7 @@ gicon = self.art.get_album_cache_path(album, ArtSize.BIG) else: track = Track(int(search_id[2:])) - name = track.name + name = "♫ " + track.name description = " ".join(track.artists) surface = self.art.get_album_artwork(track.album, ArtSize.BIG, 1) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lollypop-0.9.233/src/application.py new/lollypop-0.9.239/src/application.py --- old/lollypop-0.9.233/src/application.py 2017-05-10 13:55:15.000000000 +0200 +++ new/lollypop-0.9.239/src/application.py 2017-06-01 18:54:36.000000000 +0200 @@ -60,14 +60,16 @@ - Create main window """ - def __init__(self): + def __init__(self, version): """ Create application + @param version as str """ Gtk.Application.__init__( self, application_id="org.gnome.Lollypop", flags=Gio.ApplicationFlags.HANDLES_COMMAND_LINE) + self.__version = version self.set_property("register-session", True) GLib.setenv("PULSE_PROP_media.role", "music", True) GLib.setenv("PULSE_PROP_application.icon_name", @@ -113,6 +115,10 @@ GLib.OptionArg.NONE, "Emulate an Android Phone", None) + self.add_main_option("version", b"V", GLib.OptionFlags.NONE, + GLib.OptionArg.NONE, + "Lollypop version", + None) self.connect("command-line", self.__on_command_line) self.connect("activate", self.__on_activate) self.register(None) @@ -418,6 +424,9 @@ self.player.prev() elif options.contains("emulate-phone"): self.window.add_fake_phone() + elif options.contains("version"): + print("Lollypop %s" % self.__version) + exit(0) elif len(args) > 1: self.player.clear_externals() for uri in args[1:]: @@ -429,7 +438,7 @@ parser.connect("entry-parsed", self.__on_entry_parsed) parser.parse_async(uri, True, None, None) elif self.window is not None and self.window.is_visible(): - self.window.present() + self.window.present_with_time(Gtk.get_current_event_time()) elif self.window is not None: # self.window.setup_window() # self.window.present() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lollypop-0.9.233/src/container.py new/lollypop-0.9.239/src/container.py --- old/lollypop-0.9.233/src/container.py 2017-05-10 13:55:15.000000000 +0200 +++ new/lollypop-0.9.239/src/container.py 2017-05-30 11:22:30.000000000 +0200 @@ -268,10 +268,26 @@ def show_artists_albums(self, artist_ids): """ Show albums from artists + @param artist id as int """ - self.__update_view_artists([], artist_ids) - GLib.idle_add(self.__list_two.hide) GLib.idle_add(self.__list_one.select_ids, []) + GLib.idle_add(self.__list_two.select_ids, []) + if self.__show_genres: + # Get artist genres + genre_ids = [] + for artist_id in artist_ids: + album_ids = Lp().artists.get_albums(artist_ids) + for album_id in album_ids: + for genre_id in Lp().albums.get_genre_ids(album_id): + if genre_id not in genre_ids: + genre_ids.append(genre_id) + # Select genres on list one + GLib.idle_add(self.__list_one.select_ids, genre_ids) + # Select artists on list two + GLib.idle_add(self.__list_two.select_ids, artist_ids) + else: + # Select artists on list one + GLib.idle_add(self.__list_one.select_ids, artist_ids) ############## # PROTECTED # diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lollypop-0.9.233/src/controllers.py new/lollypop-0.9.239/src/controllers.py --- old/lollypop-0.9.233/src/controllers.py 2017-05-10 13:55:15.000000000 +0200 +++ new/lollypop-0.9.239/src/controllers.py 2017-05-17 15:21:45.000000000 +0200 @@ -164,7 +164,7 @@ self._progress.set_range(0.0, 0.0) else: self._progress.set_sensitive(True) - self._progress.set_range(0.0, player.current_track.duration * 60) + self._progress.set_range(0.0, player.current_track.duration) self._total_time_label.set_text( seconds_to_string(player.current_track.duration)) @@ -252,7 +252,7 @@ if self._show_volume_control or event.button != 1: return value = scale.get_value() - Lp().player.seek(value/60) + Lp().player.seek(value) self.__seeking = False self._update_position(value) @@ -279,15 +279,15 @@ elif Lp().player.is_playing: position = Lp().player.position if y > 0: - seek = position/1000000/60-5 + seek = position - 5 * Gst.SECOND else: - seek = position/1000000/60+5 + seek = position + 5 * Gst.SECOND if seek < 0: seek = 0 if seek > Lp().player.current_track.duration: seek = Lp().player.current_track.duration - 2 Lp().player.seek(seek) - self._update_position(seek*60) + self._update_position(seek) def _update_position(self, value=None): """ @@ -302,10 +302,10 @@ self._total_time_label.set_text(volume) elif not self.__seeking: if value is None and Lp().player.get_status() != Gst.State.PAUSED: - value = Lp().player.position/1000000 + value = Lp().player.position / Gst.SECOND if value is not None: self._progress.set_value(value) - self._timelabel.set_text(seconds_to_string(value/60)) + self._timelabel.set_text(seconds_to_string(value)) return True ####################### @@ -318,7 +318,7 @@ @param track id as int """ if track_id == player.current_track.id: - self._progress.set_range(0.0, player.current_track.duration * 60) + self._progress.set_range(0.0, player.current_track.duration) self._total_time_label.set_text( seconds_to_string(player.current_track.duration)) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lollypop-0.9.233/src/database_albums.py new/lollypop-0.9.239/src/database_albums.py --- old/lollypop-0.9.233/src/database_albums.py 2017-05-10 13:55:15.000000000 +0200 +++ new/lollypop-0.9.239/src/database_albums.py 2017-05-29 13:01:08.000000000 +0200 @@ -1064,6 +1064,23 @@ (album_id,)) return list(itertools.chain(*result)) + def has_loves(self): + """ + True if db has loved albums + @return bool + """ + with SqlCursor(Lp().db) as sql: + filters = () + request = "SELECT albums.rowid\ + FROM albums\ + WHERE loved=1" + if not get_network_available(): + request += " AND albums.synced!=?" + filters = (Type.NONE, ) + request += " LIMIT 1" + result = sql.execute(request, filters) + return list(itertools.chain(*result)) != [] + def search(self, string, limit=25): """ Search for albums looking like string diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lollypop-0.9.233/src/database_history.py new/lollypop-0.9.239/src/database_history.py --- old/lollypop-0.9.233/src/database_history.py 2017-05-10 13:55:15.000000000 +0200 +++ new/lollypop-0.9.239/src/database_history.py 2017-05-12 16:26:12.000000000 +0200 @@ -91,8 +91,8 @@ (name, duration, popularity, rate, ltime, mtime,\ loved_album, album_popularity, album_rate)\ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)", - (name, duration, popularity, rate, loved_album, - ltime, mtime, album_popularity, album_rate)) + (name, duration, popularity, rate, ltime, mtime, + loved_album, album_popularity, album_rate)) sql.commit() def get(self, name, duration): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lollypop-0.9.233/src/database_upgrade.py new/lollypop-0.9.239/src/database_upgrade.py --- old/lollypop-0.9.233/src/database_upgrade.py 2017-05-10 13:55:15.000000000 +0200 +++ new/lollypop-0.9.239/src/database_upgrade.py 2017-05-18 15:06:04.000000000 +0200 @@ -18,6 +18,7 @@ from lollypop.sqlcursor import SqlCursor from lollypop.utils import translate_artist_name from lollypop.database_history import History +from lollypop.radios import Radios from lollypop.define import Lp @@ -55,6 +56,7 @@ 18: self.__upgrade_18, 19: self.__upgrade_19, 20: self.__upgrade_20, + 21: self.__upgrade_21, } """ @@ -405,3 +407,12 @@ sql.commit() # Clean all charts Lp().db.del_tracks(Lp().tracks.get_old_charts_track_ids(mtime*2)) + + def __upgrade_21(self): + """ + Add rate to radios + """ + with SqlCursor(Radios()) as sql: + sql.execute("ALTER TABLE radios ADD rate\ + INT NOT NULL DEFAULT -1") + sql.commit() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lollypop-0.9.233/src/fullscreen.py new/lollypop-0.9.239/src/fullscreen.py --- old/lollypop-0.9.233/src/fullscreen.py 2017-05-10 13:55:15.000000000 +0200 +++ new/lollypop-0.9.239/src/fullscreen.py 2017-05-23 18:12:57.000000000 +0200 @@ -10,7 +10,7 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. -from gi.repository import Gtk, Gdk, GLib +from gi.repository import Gtk, Gdk, GLib, Gio from datetime import datetime @@ -99,15 +99,16 @@ Gtk.Window.do_show(self) self.__parent.set_skip_pager_hint(True) self.__parent.set_skip_taskbar_hint(True) - now = datetime.now() - self._datetime.set_label(now.strftime("%a %d %b, %X")[:-3]) if self.__timeout2 is None: - second = datetime.now().second - if 60 - second > 0: - GLib.timeout_add((60-second)*1000, self.__update_datetime) - else: - self.__timeout2 = GLib.timeout_add(60000, - self.__update_datetime) + try: + interface = Gio.Settings.new("org.gnome.desktop.interface") + show_seconds = interface.get_value("clock-show-seconds") + except: + show_seconds = False + self.__update_datetime(show_seconds) + self.__timeout2 = GLib.timeout_add(1000, + self.__update_datetime, + show_seconds) self._update_position(Lp().player.position/1000000) self.fullscreen() self._next_popover.set_relative_to(self._album_label) @@ -170,12 +171,16 @@ ####################### # PRIVATE # ####################### - def __update_datetime(self): + def __update_datetime(self, show_seconds=False): """ Update datetime in headerbar + @param show_seconds as bool """ now = datetime.now() - self._datetime.set_label(now.strftime("%a %d %b, %X")[:-3]) + if show_seconds: + self._datetime.set_label(now.strftime("%a %d %b, %X")) + else: + self._datetime.set_label(now.strftime("%a %d %b, %X")[:-3]) if self.__timeout2 is None: self.__timeout2 = GLib.timeout_add(60000, self.__update_datetime) return False diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lollypop-0.9.233/src/mpris.py new/lollypop-0.9.239/src/mpris.py --- old/lollypop-0.9.233/src/mpris.py 2017-05-10 13:55:15.000000000 +0200 +++ new/lollypop-0.9.239/src/mpris.py 2017-05-18 21:58:52.000000000 +0200 @@ -14,7 +14,7 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. -from gi.repository import Gio, Gst, GLib +from gi.repository import Gio, Gst, GLib, Gtk from random import randint @@ -177,7 +177,7 @@ def Raise(self): self.__app.window.setup_window() - self.__app.window.present() + self.__app.window.present_with_time(Gtk.get_current_event_time()) def Quit(self): self.__app.quit() @@ -204,15 +204,15 @@ Lp().player.play() def SetPosition(self, track_id, position): - Lp().player.seek(position / 1000000) + Lp().player.seek(position / Gst.SECOND) def OpenUri(self, uri): pass def Seek(self, offset): # Convert position in seconds - position = Lp().player.position / 1000000 / 60 - Lp().player.seek(position + offset / 1000000) + position = Lp().player.position / Gst.SECOND + Lp().player.seek(position + offset / Gst.SECOND) def Seeked(self, position): self.__bus.emit_signal( @@ -249,7 +249,7 @@ elif property_name == "Volume": return GLib.Variant("d", Lp().player.volume) elif property_name == "Position": - return GLib.Variant("x", Lp().player.position / 60) + return GLib.Variant("x", Lp().player.position) elif property_name in ["CanGoNext", "CanGoPrevious", "CanPlay", "CanPause"]: return GLib.Variant("b", Lp().player.current_track.id is not None) @@ -345,8 +345,8 @@ "as", Lp().player.current_track.album_artists) self.__metadata["mpris:length"] = GLib.Variant( - "x", - Lp().player.current_track.duration * 1000000) + "x", + Lp().player.current_track.duration * Gst.SECOND) self.__metadata["xesam:genre"] = GLib.Variant( "as", Lp().player.current_track.genres) @@ -380,7 +380,7 @@ self.__metadata["mpris:artUrl"] = GLib.Variant("s", "") def __on_seeked(self, player, position): - self.Seeked(position * 1000000) + self.Seeked(position * Gst.SECOND) def __on_volume_changed(self, player, data=None): self.PropertiesChanged(self.__MPRIS_PLAYER_IFACE, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lollypop-0.9.233/src/mpris_legacy.py new/lollypop-0.9.239/src/mpris_legacy.py --- old/lollypop-0.9.233/src/mpris_legacy.py 2017-05-10 13:55:15.000000000 +0200 +++ new/lollypop-0.9.239/src/mpris_legacy.py 2017-05-18 20:34:21.000000000 +0200 @@ -83,7 +83,7 @@ @dbus.service.method(dbus_interface=MPRIS_PLAYER_IFACE, in_signature="ox") def SetPosition(self, track_id, position): - Lp().player.seek(position/1000000) + Lp().player.seek(position/Gst.SECOND) @dbus.service.method(dbus_interface=MPRIS_PLAYER_IFACE, in_signature="s") @@ -119,8 +119,7 @@ "Shuffle": True, "Metadata": dbus.Dictionary(self._metadata, signature="sv"), "Volume": dbus.Double(Lp().player.volume), - "Position": dbus.Int64( - Lp().player.position / 60), + "Position": dbus.Int64(Lp().player.position), "MinimumRate": dbus.Double(1.0), "MaximumRate": dbus.Double(1.0), "CanGoNext": True, @@ -184,7 +183,7 @@ self._metadata["xesam:albumArtist"] = \ ", ".join(Lp().player.current_track.album_artists) self._metadata["mpris:length"] = dbus.Int64( - Lp().player.current_track.duration * 1000000) + Lp().player.current_track.duration * Gst.SECOND) self._metadata["xesam:genre"] = Lp().player.current_track.genres\ or "Web" self._metadata["xesam:url"] = Lp().player.current_track.uri @@ -213,7 +212,7 @@ self._metadata["mpris:artUrl"] = "" def _on_seeked(self, player, position): - self.Seeked(position * 1000000) + self.Seeked(position * Gst.SECOND) def _on_volume_changed(self, player, data=None): self.PropertiesChanged(self.MPRIS_PLAYER_IFACE, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lollypop-0.9.233/src/objects.py new/lollypop-0.9.239/src/objects.py --- old/lollypop-0.9.233/src/objects.py 2017-05-10 13:55:15.000000000 +0200 +++ new/lollypop-0.9.239/src/objects.py 2017-05-18 15:48:35.000000000 +0200 @@ -49,13 +49,6 @@ else: return attr_value - def get_rate(self): - """ - Get rate - @return int between -1 and 5 - """ - return self.db.get_rate(self.id) - def get_popularity(self): """ Get popularity @@ -76,13 +69,6 @@ popularity = radios.get_popularity(self._album_artists[0]) return popularity * 5 / avg_popularity + 0.5 - def set_rate(self, rate): - """ - Set rate - @param rate as int between -1 and 5 - """ - self.db.set_rate(self.id, rate) - def set_popularity(self, popularity): """ Set popularity @@ -103,6 +89,33 @@ except Exception as e: print("Base::set_popularity(): %s" % e) + def get_rate(self): + """ + Get rate + @return int + """ + if self.id is None or self.id == Type.EXTERNALS: + return 0 + + rate = 0 + if self.id >= 0: + rate = self.db.get_rate(self.id) + elif self.id == Type.RADIOS: + radios = Radios() + rate = radios.get_rate(self._album_artists[0]) + return rate + + def set_rate(self, rate): + """ + Set rate + @param rate as int between -1 and 5 + """ + if self.id == Type.RADIOS: + radios = Radios() + radios.set_rate(self._album_artists[0], rate) + else: + self.db.set_rate(self.id, rate) + class Disc: """ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lollypop-0.9.233/src/player.py new/lollypop-0.9.239/src/player.py --- old/lollypop-0.9.233/src/player.py 2017-05-10 13:55:15.000000000 +0200 +++ new/lollypop-0.9.239/src/player.py 2017-05-23 17:51:33.000000000 +0200 @@ -10,7 +10,7 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. -from gi.repository import Gio, GLib +from gi.repository import Gio, GLib, Gst from pickle import load from random import choice @@ -75,8 +75,12 @@ """ if self._locked: return + smart_prev = Lp().settings.get_value("smart-previous") if self._prev_track.id is not None: - self.load(self._prev_track) + if smart_prev and self.position / Gst.SECOND > 2: + self.seek(0) + else: + self.load(self._prev_track) else: self.stop() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lollypop-0.9.233/src/player_bin.py new/lollypop-0.9.239/src/player_bin.py --- old/lollypop-0.9.233/src/player_bin.py 2017-05-10 13:55:15.000000000 +0200 +++ new/lollypop-0.9.239/src/player_bin.py 2017-05-23 14:16:56.000000000 +0200 @@ -196,14 +196,14 @@ Return bin playback position @HACK handle crossefade here, as we know we"re going to be called every seconds - @return position as int + @return position in Gst.SECOND """ - position = self._playbin.query_position(Gst.Format.TIME)[1] / 1000 + position = self._playbin.query_position(Gst.Format.TIME)[1] if self._crossfading and self._current_track.duration > 0: - duration = self._current_track.duration - position / 1000000 + duration = self._current_track.duration - position / Gst.SECOND if duration < Lp().settings.get_value("mix-duration").get_int32(): self.__do_crossfade(duration) - return position * 60 + return position @property def current_track(self): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lollypop-0.9.233/src/pop_info.py new/lollypop-0.9.239/src/pop_info.py --- old/lollypop-0.9.233/src/pop_info.py 2017-05-10 14:32:03.000000000 +0200 +++ new/lollypop-0.9.239/src/pop_info.py 2017-05-23 00:34:49.000000000 +0200 @@ -90,13 +90,21 @@ show_bio = view_type != Type.RADIOS if InfoPopover.Wikipedia is not None and show_bio: self.__stack.get_child_by_name("wikipedia").show() + else: + self.__stack.get_child_by_name("wikipedia").hide() if Lp().lastfm is not None and\ not Lp().settings.get_value("use-librefm") and show_bio: self.__stack.get_child_by_name("lastfm").show() + else: + self.__stack.get_child_by_name("lastfm").hide() if InfoPopover.WebView is not None and get_network_available(): self.__stack.get_child_by_name("duck").show() + else: + self.__stack.get_child_by_name("duck").hide() if not self.__artist_ids: self.__stack.get_child_by_name("lyrics").show() + else: + self.__stack.get_child_by_name("lyrics").hide() self.__stack.set_visible_child_name( Lp().settings.get_value("infoswitch").get_string()) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lollypop-0.9.233/src/radios.py new/lollypop-0.9.239/src/radios.py --- old/lollypop-0.9.233/src/radios.py 2017-05-10 13:55:15.000000000 +0200 +++ new/lollypop-0.9.239/src/radios.py 2017-05-18 15:25:20.000000000 +0200 @@ -15,6 +15,7 @@ import sqlite3 from lollypop.sqlcursor import SqlCursor +from lollypop.define import Type from lollypop.lio import Lio @@ -28,7 +29,8 @@ create_radios = """CREATE TABLE radios ( id INTEGER PRIMARY KEY, name TEXT NOT NULL, - url TEXY NOT NULL, + url TEXT NOT NULL, + rate INT NOT NULL DEFAULT -1, popularity INT NOT NULL)""" __gsignals__ = { # Add, rename, delete @@ -137,7 +139,8 @@ with SqlCursor(self) as sql: result = sql.execute("SELECT name, url\ FROM radios\ - ORDER BY popularity DESC, name") + ORDER BY rate DESC,\ + popularity DESC, name") return list(result) def get_url(self, name): @@ -203,6 +206,21 @@ except: # Database is locked pass + def set_rate(self, name, rate): + """ + Set rate + @param name as str + @param rate as int + """ + with SqlCursor(self) as sql: + try: + sql.execute("UPDATE radios SET\ + rate=? WHERE name=?", + (rate, name)) + sql.commit() + except: # Database is locked + pass + def get_id(self, name): """ Get radio id by name @@ -239,13 +257,28 @@ """ with SqlCursor(self) as sql: result = sql.execute("SELECT popularity\ - FROM radios WHERE\ - name=?", (name,)) + FROM radios\ + WHERE name=?", (name,)) v = result.fetchone() if v is not None: return v[0] return 0 + def get_rate(self, name): + """ + Get radio rate + @param name as str + @return rate as int + """ + with SqlCursor(self) as sql: + result = sql.execute("SELECT rate\ + FROM radios\ + WHERE name=?", (name,)) + v = result.fetchone() + if v and v[0]: + return v[0] + return Type.NONE + def get_cursor(self): """ Return a new sqlite cursor diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lollypop-0.9.233/src/selectionlist.py new/lollypop-0.9.239/src/selectionlist.py --- old/lollypop-0.9.233/src/selectionlist.py 2017-05-10 13:55:15.000000000 +0200 +++ new/lollypop-0.9.239/src/selectionlist.py 2017-05-30 11:31:50.000000000 +0200 @@ -224,18 +224,24 @@ if ids: try: # Check if items are available for selection - iters = [] + items = [] for i in list(ids): for item in self.__model: if item[0] == i: - iters.append(item.iter) + items.append(item) ids.remove(i) # Select later if ids: self.__to_select_ids = ids else: - for i in iters: - self.__selection.select_iter(i) + for item in items: + self.__selection.select_iter(item.iter) + # Scroll to first item + if items: + self.__view.scroll_to_cell(items[0].path, + None, + True, + 0, 0) except: self.__last_motion_event = None self.__to_select_ids = ids @@ -280,7 +286,8 @@ """ items = [] items.append((Type.POPULARS, _("Popular albums"))) - items.append((Type.LOVED, _("Loved albums"))) + if Lp().albums.has_loves(): + items.append((Type.LOVED, _("Loved albums"))) items.append((Type.RECENTS, _("Recently added albums"))) items.append((Type.RANDOMS, _("Random albums"))) items.append((Type.PLAYLISTS, _("Playlists"))) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lollypop-0.9.233/src/tagreader.py new/lollypop-0.9.239/src/tagreader.py --- old/lollypop-0.9.233/src/tagreader.py 2017-05-10 13:55:15.000000000 +0200 +++ new/lollypop-0.9.239/src/tagreader.py 2017-05-28 13:08:29.000000000 +0200 @@ -350,7 +350,7 @@ string = decode_all(m.data) if string.startswith("USLT"): split = string.split("\x00") - return split[-1:][0] + return "".join(split[5:-1]) except Exception as e: print("TagReader::get_id3()", e) return "" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lollypop-0.9.233/src/toolbar_end.py new/lollypop-0.9.239/src/toolbar_end.py --- old/lollypop-0.9.233/src/toolbar_end.py 2017-05-10 13:55:15.000000000 +0200 +++ new/lollypop-0.9.239/src/toolbar_end.py 2017-05-16 10:54:58.000000000 +0200 @@ -227,7 +227,8 @@ """ active = self.__party_button.get_active() self.__shuffle_button.set_sensitive(not active) - if not Lp().settings.get_value("dark-ui"): + if not Lp().gtk_application_prefer_dark_theme and\ + not Lp().settings.get_value("dark-ui"): settings = Gtk.Settings.get_default() settings.set_property("gtk-application-prefer-dark-theme", active) Lp().player.set_party(active) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lollypop-0.9.233/src/toolbar_info.py new/lollypop-0.9.239/src/toolbar_info.py --- old/lollypop-0.9.233/src/toolbar_info.py 2017-05-10 14:20:42.000000000 +0200 +++ new/lollypop-0.9.239/src/toolbar_info.py 2017-05-16 17:15:23.000000000 +0200 @@ -151,13 +151,13 @@ elif Lp().player.current_track.id is not None: if self.__pop_info is None: from lollypop.pop_info import InfoPopover - if Lp().player.current_track.id == Type.RADIOS: - view_type = Type.RADIOS - else: - view_type = Type.ALBUMS self.__pop_info = InfoPopover([]) - self.__pop_info.set_view_type(view_type) self.__pop_info.set_relative_to(self._infobox) + if Lp().player.current_track.id == Type.RADIOS: + view_type = Type.RADIOS + else: + view_type = Type.ALBUMS + self.__pop_info.set_view_type(view_type) self.__pop_info.show() def __on_loading_changed(self, player, show): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lollypop-0.9.233/src/utils.py new/lollypop-0.9.239/src/utils.py --- old/lollypop-0.9.233/src/utils.py 2017-05-10 13:55:15.000000000 +0200 +++ new/lollypop-0.9.239/src/utils.py 2017-05-28 12:59:07.000000000 +0200 @@ -30,8 +30,8 @@ for encoding in ENCODING: try: return bytes.decode(encoding) - except: - pass + except Exception as e: + print("decode_all():", e) def get_network_available(): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lollypop-0.9.233/src/widgets_album_detailed.py new/lollypop-0.9.239/src/widgets_album_detailed.py --- old/lollypop-0.9.233/src/widgets_album_detailed.py 2017-05-10 13:55:15.000000000 +0200 +++ new/lollypop-0.9.239/src/widgets_album_detailed.py 2017-05-16 10:32:45.000000000 +0200 @@ -45,6 +45,7 @@ """ Gtk.Bin.__init__(self) AlbumWidget.__init__(self, album_id, genre_ids, artist_ids, art_size) + self._rounded_class = "rounded-icon-small" self._album.set_artists(artist_ids) self.__width = None self.__context = None @@ -132,23 +133,14 @@ # Here we are working around default CoverBox ui # Do we really need to have another ui file? # So just hack values on the fly - self._cover.set_halign(Gtk.Align.CENTER) self._cover.get_style_context().add_class("small-cover-frame") - self.__coverbox.set_margin_bottom(5) - # We want a smaller button, so reload image - self._rounded_class = "rounded-icon-small" - self._play_button.set_from_icon_name( - "media-playback-start-symbolic", - Gtk.IconSize.MENU) overlay_grid = builder.get_object("overlay-grid") overlay_grid.set_margin_bottom(2) overlay_grid.set_margin_end(2) overlay_grid.set_column_spacing(0) - self._play_button.set_margin_start(2) - self._play_button.set_margin_bottom(2) play_event = builder.get_object("play-event") - play_event.set_property("halign", Gtk.Align.START) - play_event.set_property("valign", Gtk.Align.END) + play_event.set_margin_start(2) + play_event.set_margin_bottom(2) album_info.attach(self.__coverbox, 0, 0, 1, 1) artist_label.set_text(", ".join(self._album.artists)) artist_label.show() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lollypop-0.9.233/src/widgets_album_simple.py new/lollypop-0.9.239/src/widgets_album_simple.py --- old/lollypop-0.9.233/src/widgets_album_simple.py 2017-05-10 13:55:15.000000000 +0200 +++ new/lollypop-0.9.239/src/widgets_album_simple.py 2017-05-30 11:39:16.000000000 +0200 @@ -66,6 +66,12 @@ self.__artist_label.set_property("halign", Gtk.Align.CENTER) self.__artist_label.set_text(", ".join(self._album.artists)) self.__artist_label.get_style_context().add_class("dim-label") + artist_eventbox = Gtk.EventBox() + artist_eventbox.add(self.__artist_label) + artist_eventbox.connect("realize", self._on_eventbox_realize) + artist_eventbox.connect("button-press-event", + self.__on_artist_button_press) + artist_eventbox.show() self._widget.set_property("has-tooltip", True) self._widget.connect("query-tooltip", self._on_query_tooltip) self._widget.add(grid) @@ -88,7 +94,7 @@ color.add(self.__overlay) grid.add(color) grid.add(self.__title_label) - grid.add(self.__artist_label) + grid.add(artist_eventbox) self.add(self._widget) self.set_cover() self.update_state() @@ -279,7 +285,7 @@ def __on_button_press(self, eventbox, event): """ Store pressed button - @param flowbox as Gtk.EventBox + @param eventbox as Gtk.EventBox @param event as Gdk.EventButton """ if event.button != 1: @@ -304,6 +310,15 @@ popover.connect("closed", self.__on_album_popover_closed) popover.show() + def __on_artist_button_press(self, eventbox, event): + """ + Go to artist page + @param eventbox as Gtk.EventBox + @param event as Gdk.EventButton + """ + Lp().window.show_artists_albums(self._album.artist_ids) + return True + def __on_album_popover_closed(self, popover): """ Remove overlay and restore opacity diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lollypop-0.9.233/src/widgets_playlist.py new/lollypop-0.9.239/src/widgets_playlist.py --- old/lollypop-0.9.233/src/widgets_playlist.py 2017-05-10 13:55:15.000000000 +0200 +++ new/lollypop-0.9.239/src/widgets_playlist.py 2017-05-23 17:24:51.000000000 +0200 @@ -593,7 +593,12 @@ name = _("New playlist ") + str(count) Lp().playlists.add(name) playlist_id = Lp().playlists.get_id(name) - self.__model.append([True, name, "user-trash-symbolic", playlist_id]) + iterator = self.__model.append([True, + name, + "user-trash-symbolic", + playlist_id]) + self.__view.get_selection().select_iter(iterator) + self.__view.grab_focus() self.__set_current_object(playlist_id, True) ####################### diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lollypop-0.9.233/src/widgets_rating.py new/lollypop-0.9.239/src/widgets_rating.py --- old/lollypop-0.9.233/src/widgets_rating.py 2017-05-10 13:55:15.000000000 +0200 +++ new/lollypop-0.9.239/src/widgets_rating.py 2017-05-18 15:29:10.000000000 +0200 @@ -156,9 +156,11 @@ if isinstance(self.__object, Track): Lp().player.emit("rate-changed") # Save to tags if needed + # FIXME We really need a radio object if Lp().settings.get_value("save-to-tags") and\ GLib.find_program_in_path("kid3-cli") is not None and\ isinstance(self.__object, Track) and\ + self.__object.id >= 0 and\ not self.__object.is_web: if pop == 0: value = 0 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lollypop-0.9.233/src/widgets_web.py new/lollypop-0.9.239/src/widgets_web.py --- old/lollypop-0.9.233/src/widgets_web.py 2017-05-10 14:25:19.000000000 +0200 +++ new/lollypop-0.9.239/src/widgets_web.py 2017-05-23 17:36:58.000000000 +0200 @@ -70,9 +70,6 @@ " BlackBerry) AppleWebKit2/537.36 Chromium" "/35.0.1870.2 Mobile Safari/537.36") self.__view.set_settings(settings) - # FIXME TLS is broken in WebKit2, don"t know how to fix this - self.__view.get_context().set_tls_errors_policy( - WebKit2.TLSErrorsPolicy.IGNORE) self.__view.connect("decide-policy", self.__on_decide_policy) self.__view.connect("context-menu", self.__on_context_menu) self.__view.set_property("hexpand", True) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lollypop-0.9.233/src/window.py new/lollypop-0.9.239/src/window.py --- old/lollypop-0.9.233/src/window.py 2017-05-10 13:55:15.000000000 +0200 +++ new/lollypop-0.9.239/src/window.py 2017-06-01 18:53:51.000000000 +0200 @@ -34,7 +34,8 @@ self.__was_maximized = False Gtk.ApplicationWindow.__init__(self, application=Lp(), - title="Lollypop") + title="Lollypop", + icon_name="org.gnome.Lollypop") self.connect("hide", self.__on_hide) Lp().player.connect("current-changed", self.__on_current_changed) self.__timeout_configure = None @@ -326,7 +327,6 @@ """ Setup window content """ - self.set_default_icon_name("lollypop") vgrid = Gtk.Grid() vgrid.set_orientation(Gtk.Orientation.VERTICAL) vgrid.show() @@ -426,14 +426,14 @@ """ seconds = param.get_int32() position = Lp().player.position - seek = position/1000000/60+seconds + seek = position / Gst.SECOND + seconds if seek < 0: seek = 0 if seek > Lp().player.current_track.duration: seek = Lp().player.current_track.duration - 2 Lp().player.seek(seek) if Lp().player.current_track.id is not None: - self.__toolbar.update_position(seek*60) + self.__toolbar.update_position(seek) def __on_player_action(self, action, param): """
