Open trufanov-nok opened 8 years ago
Тогда нужно отказываться от загрузки интерфейса из *ui, как например здесь https://github.com/ilya-ilya/vk_search . Это проблема, насколько я понимаю, в самом байндинге для js.
Я поковырялся и выяснил следующее.
1 . Ваш вариант из коробки тоже не заработал. На Importer.loadQtBinding("qt.webkit");
Amarok утверждал, что такого в системе нет. У меня Kubuntu 16.04 с Qt 5.5.1. Я погуглил - они теперь считают QtWebKit depricated модулем и переезжают на QtWebEngine. Попробовал в скрипте тупо перебить один класс на другой в расчете на одинаковый интерфейс - хрен. Amarok заявил, что необходимый модуль qt.webenginewidgets запрещен. Выяснилось что в штатном Amarok 2.8 (брал с Muon) захардкожены 7 старых модулей, которые он позволяет грузить. Это тут в ScriptImporter::loadQtBinding( const QString& binding )
и никаких qt.webenginewidgets он знать не хочет. Но недавно вышла бета Amarok 2.9 и там этой проверки нет. В бинарниках его не раздают. Я полез собирать исходники - обплевался и бросил это дело. Так что возможен ли будет переезд на QWebEngine в сл версии Amarok мне выяснить не удалось.
Проблему с отсутсвующим биндингом к qt.webkit в своей системе я в итоге решил через
sudo apt-get install libqtscript4-webkit
2 . Потом вернулся ковырять оригинальный скрипт. Как известно, он не работает, т.к. в папке /usr/lib/x86_64-linux-gnu/qt4/plugins/designer
отсутствует libqwebview.so
и, судя по всему, из нормальных репозиториев ее не достать. Но зато там есть kdewebkitwidgets.so
. Я посмотрел, что умеет QUILoader через availableWidgets()
и он не умеет QWebView
, но умеет [KWebView](Inherits QWebView), который от QWebView порожден. Я полез в auth.ui, стер все что в тегах <customwidgets>
, и заменил в единственно оставшемся месте QWebView на KWebView - и все заработало. Мне кажется, что решение на KWebView работало даже лучще QWebView. Через QWebView у меня список песен кривоватый был и аватарки друзей вроде не грузились.
Amarok - продукт KDE, и зависит от kde-runtime, а тот от kdelibs5-plugins, который и тащит за собой /qt4/plugins/designer/kdewebkitwidgets.so
. Поэтому вероятность иметь доступ к KWebView на линуксе должна быть высокой.
Так что я предлагаю решение, не требующее доустановки пакетов - проверять в main.js у UIloader::availableWidgets() знает ли он QWebView. Если нет - то знает ли KWebView. И если да - то налету в памяти менять auth.ui. Думаю, достаточно будет заменить одну букву в одном месте.
В чем проблема пофиксить баг с libwebkit.so?