Compare commits
10 commits
Author | SHA1 | Date | |
---|---|---|---|
3f492b6160 | |||
4b804873a6 | |||
0bb19eae06 | |||
f65d9b6231 | |||
3e0b62b109 | |||
ea85197874 | |||
cb649951ae | |||
3a0b18e51e | |||
ab1306a7b8 | |||
0c5825afb8 |
10 changed files with 80 additions and 60 deletions
23
.travis.yml
23
.travis.yml
|
@ -2,15 +2,12 @@ language: cpp
|
||||||
compiler: gcc
|
compiler: gcc
|
||||||
sudo: require
|
sudo: require
|
||||||
dist: trusty
|
dist: trusty
|
||||||
|
|
||||||
before_install:
|
before_install:
|
||||||
- sudo add-apt-repository ppa:beineri/opt-qt58-trusty -y
|
- sudo add-apt-repository ppa:beineri/opt-qt58-trusty -y
|
||||||
- sudo apt-get update -qq
|
- sudo apt-get update -qq
|
||||||
|
|
||||||
install:
|
install:
|
||||||
- sudo apt-get -y install qt58base qt58webengine qt58quickcontrols
|
- sudo apt-get -y install qt58base qt58webengine qt58quickcontrols
|
||||||
- source /opt/qt58/bin/qt58-env.sh
|
- source /opt/qt58/bin/qt58-env.sh
|
||||||
|
|
||||||
script:
|
script:
|
||||||
- qmake PREFIX=/usr
|
- qmake PREFIX=/usr
|
||||||
- make -j4
|
- make -j4
|
||||||
|
@ -18,7 +15,19 @@ script:
|
||||||
- wget -c "https://github.com/probonopd/linuxdeployqt/releases/download/continuous/linuxdeployqt-continuous-x86_64.AppImage"
|
- wget -c "https://github.com/probonopd/linuxdeployqt/releases/download/continuous/linuxdeployqt-continuous-x86_64.AppImage"
|
||||||
- chmod a+x linuxdeployqt*.AppImage
|
- chmod a+x linuxdeployqt*.AppImage
|
||||||
- unset QTDIR; unset QT_PLUGIN_PATH ; unset LD_LIBRARY_PATH
|
- unset QTDIR; unset QT_PLUGIN_PATH ; unset LD_LIBRARY_PATH
|
||||||
- ./linuxdeployqt*.AppImage ./appdir/usr/share/applications/*.desktop -qmldir=./qml/ -bundle-non-qt-libs
|
- "./linuxdeployqt*.AppImage ./appdir/usr/share/applications/*.desktop -qmldir=./qml/
|
||||||
- ./linuxdeployqt*.AppImage ./appdir/usr/share/applications/*.desktop -qmldir=./qml/ -appimage
|
-bundle-non-qt-libs"
|
||||||
- find ./appdir -executable -type f -exec ldd {} \; | grep " => /usr" | cut -d " " -f 2-3 | sort | uniq
|
- "./linuxdeployqt*.AppImage ./appdir/usr/share/applications/*.desktop -qmldir=./qml/
|
||||||
- curl --upload-file ./FeedTheMonkey*.AppImage https://transfer.sh/FeedTheMonkey-git.$(git rev-parse --short HEAD)-x86_64.AppImage
|
-appimage"
|
||||||
|
- find ./appdir -executable -type f -exec ldd {} \; | grep " => /usr" | cut -d " "
|
||||||
|
-f 2-3 | sort | uniq
|
||||||
|
- mv FeedTheMonkey*.AppImage FeedTheMonkey.AppImage
|
||||||
|
deploy:
|
||||||
|
provider: releases
|
||||||
|
api_key:
|
||||||
|
secure: d+hHwOnmeLPVvuue6VDCs2LwLS+BFzJF/BB5iObtkCYBwQ8ybnVzUcgnjJKOt37SHI0T9kLegI+Lq/843ECYiGiDjQg4PvCF69V8ODgHv3v1qiN5oG/eroBXd83a0+xhi4BuJt0SwcV9mcv4uD9bCPhj944rmMLH+3qD4ysgImBmbYSbbLecE9+QAs7bfrCwQRfdCePBORX3FHa/p12NEtln7xv6ZRyku9LdJSzAcdgm4zc95ggTAVC1+aQB6J0q2QzWPlQcOkLx+ZYmOqClhbSMFpIyPXP8UpXjYyvUlTAd0+wH8BGf0O3lpOqACc7IKIbj9d5oPmghVZo55SyW+RR77G+az+IbGJ7iXZsMfQZsMvtB7hNYhNvUUxQrAau7Y/ve+6sMQmvA7aMHV8kDUvnNW/c2r2jAWwk+N8QzGcP/rclDCKeOWZqZABmrzTViXZVAeXh4hJ8r6mbq8iwagBUPCsVYhVuerQt/KIoWxyn6/1GmMfKGi3dA/v3u1qU61vzrz3yLlJBmUAVPxZdVmqfRweh4BXjImxFMFmf5PYm5FnDg1gmw8rWsgii7+IPYw7DjTAHpjYbtXvDwDgG1nRXiRp2TGtPPgKW1/Uk8r/j5vfB5WcEZ7exLUgsPPjny5MGvzjqOxeLvwK1Pg9jFBFXIx7l1tNMJQxQU0r3DmBg=
|
||||||
|
file: FeedTheMonkey.AppImage
|
||||||
|
on:
|
||||||
|
repo: jeena/FeedTheMonkey
|
||||||
|
skip_cleanup: true
|
||||||
|
draft: true
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
# FeedTheMonkey
|
# FeedTheMonkey
|
||||||
|
|
||||||
<img align=right src="http://jabs.nu/feedthemonkey/feedthemonkey-icon.png" width='256' alt='Icon'>
|
<img align=right src="http://jeena.net/feedthemonkey/feedthemonkey-icon.png" width='256' alt='Icon'>
|
||||||
|
|
||||||
FeedTheMonkey is a desktop client for [TinyTinyRSS](http://tt-rss.org). That means that
|
FeedTheMonkey is a desktop client for [TinyTinyRSS](http://tt-rss.org). That means that
|
||||||
it doesn't work as a standalone feed reader but only as a client for the TinyTinyRSS API
|
it doesn't work as a standalone feed reader but only as a client for the TinyTinyRSS API
|
||||||
|
@ -43,7 +43,7 @@ the use on a desktop computer but I'd like to see it on a mobile device too.
|
||||||
|
|
||||||
## Screenshot
|
## Screenshot
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
||||||
|
|
|
@ -25,14 +25,12 @@ html, body {
|
||||||
body {
|
body {
|
||||||
background: #eee;
|
background: #eee;
|
||||||
font-family: sans-serif;
|
font-family: sans-serif;
|
||||||
padding: 2em;
|
|
||||||
font-weight: lighter;
|
|
||||||
word-wrap: break-word;
|
word-wrap: break-word;
|
||||||
}
|
}
|
||||||
|
|
||||||
.nightmode {
|
.nightmode {
|
||||||
background: #111;
|
background: #353535;
|
||||||
color: #aaa;
|
color: #ddd;
|
||||||
}
|
}
|
||||||
|
|
||||||
.nightmode::-webkit-scrollbar {
|
.nightmode::-webkit-scrollbar {
|
||||||
|
@ -51,32 +49,28 @@ body {
|
||||||
}
|
}
|
||||||
|
|
||||||
h1 {
|
h1 {
|
||||||
font-weight: lighter;
|
|
||||||
font-size: 1.4em;
|
font-size: 1.4em;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#date {
|
|
||||||
border-bottom: 1px solid #aaa;
|
|
||||||
margin-bottom: 1em;
|
|
||||||
padding-bottom: 1em;
|
|
||||||
display: block;
|
|
||||||
}
|
|
||||||
|
|
||||||
.nightmode #date {
|
|
||||||
border-bottom-color: #333;
|
|
||||||
}
|
|
||||||
|
|
||||||
.starred:after {
|
.starred:after {
|
||||||
content: "*";
|
content: "*";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
header {
|
||||||
|
padding: 2em;
|
||||||
|
border-bottom: 1px solid #aaa;
|
||||||
|
}
|
||||||
|
|
||||||
|
.nightmode header {
|
||||||
|
border-bottom-color: #222;
|
||||||
|
}
|
||||||
|
|
||||||
header p {
|
header p {
|
||||||
color: #aaa;
|
color: #666;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
font-size: 0.8em;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.nightmode header p {
|
.nightmode header p {
|
||||||
|
@ -90,6 +84,7 @@ a {
|
||||||
|
|
||||||
article {
|
article {
|
||||||
line-height: 1.6;
|
line-height: 1.6;
|
||||||
|
margin: 2em;
|
||||||
}
|
}
|
||||||
|
|
||||||
article a {
|
article a {
|
||||||
|
|
|
@ -81,11 +81,13 @@
|
||||||
|
|
||||||
function checkKey(e) {
|
function checkKey(e) {
|
||||||
e = e || window.event;
|
e = e || window.event;
|
||||||
|
|
||||||
if (e.keyCode === 37) {
|
if (e.keyCode === 37) {
|
||||||
window.location.href = "feedthemonkey:previous";
|
window.location.href = "feedthemonkey:previous";
|
||||||
}
|
} else if (e.keyCode === 39) {
|
||||||
else if (e.keyCode === 39) {
|
|
||||||
window.location.href = "feedthemonkey:next";
|
window.location.href = "feedthemonkey:next";
|
||||||
|
} else if(e.keyCode == 13) {
|
||||||
|
window.location.href = "feedthemonkey:open";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -17,12 +17,11 @@
|
||||||
* along with FeedTheMonkey. If not, see <http://www.gnu.org/licenses/>.
|
* along with FeedTheMonkey. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import QtWebEngine 1.7
|
import QtWebEngine 1.8
|
||||||
import QtQuick 2.0
|
import QtQuick 2.0
|
||||||
import QtQuick.Controls 1.3
|
import QtQuick.Controls 1.3
|
||||||
import QtQuick.Layouts 1.1
|
import QtQuick.Layouts 1.1
|
||||||
import QtQuick.Controls.Styles 1.3
|
import QtQuick.Controls.Styles 1.3
|
||||||
import QtQuick.Controls 1.3
|
|
||||||
import TTRSS 1.0
|
import TTRSS 1.0
|
||||||
|
|
||||||
Item {
|
Item {
|
||||||
|
@ -87,13 +86,14 @@ Item {
|
||||||
|
|
||||||
onNavigationRequested: {
|
onNavigationRequested: {
|
||||||
if (request.url == "feedthemonkey:previous") {
|
if (request.url == "feedthemonkey:previous") {
|
||||||
// This is commented out because for some reason this reloads the page forever.
|
request.action = WebEngineView.IgnoreRequest;
|
||||||
// This will show the error that the feedthemonkey:previous location is not supported
|
|
||||||
//request.action = WebEngineNavigationRequest.IgnoreRequest;
|
|
||||||
app.showPreviousPost();
|
app.showPreviousPost();
|
||||||
} else if (request.url == "feedthemonkey:next") {
|
} else if (request.url == "feedthemonkey:next") {
|
||||||
//request.action = WebEngineNavigationRequest.IgnoreRequest;
|
request.action = WebEngineView.IgnoreRequest;
|
||||||
app.showNextPost();
|
app.showNextPost();
|
||||||
|
} else if (request.url == "feedthemonkey:open") {
|
||||||
|
request.action = WebEngineView.IgnoreRequest;
|
||||||
|
Qt.openUrlExternally(post.link)
|
||||||
} else if (request.navigationType !== WebEngineNavigationRequest.LinkClickedNavigation) {
|
} else if (request.navigationType !== WebEngineNavigationRequest.LinkClickedNavigation) {
|
||||||
request.action = WebEngineView.AcceptRequest;
|
request.action = WebEngineView.AcceptRequest;
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -33,7 +33,7 @@ Item {
|
||||||
}
|
}
|
||||||
|
|
||||||
id: item
|
id: item
|
||||||
height: d.height + t.height + e.height + 20
|
height: d.height + t.height + e.height + 2
|
||||||
|
|
||||||
Item {
|
Item {
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
|
@ -81,7 +81,7 @@ Item {
|
||||||
Label {
|
Label {
|
||||||
id: t
|
id: t
|
||||||
text: title
|
text: title
|
||||||
color: nightmode ? (read ? "#555" : "#aaa") : (read ? "gray" : "black")
|
color: nightmode ? (read ? "#888" : "#ddd") : (read ? "gray" : "black")
|
||||||
font.pointSize: textFontSize
|
font.pointSize: textFontSize
|
||||||
textFormat: Text.PlainText
|
textFormat: Text.PlainText
|
||||||
wrapMode: Text.WrapAnywhere
|
wrapMode: Text.WrapAnywhere
|
||||||
|
|
|
@ -48,6 +48,21 @@ ScrollView {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
onWidthChanged: {
|
||||||
|
// Hide sidebar if smaller than 200px wide
|
||||||
|
if(width < 200) {
|
||||||
|
width = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Rectangle {
|
||||||
|
width: 1
|
||||||
|
color: app.nightmode ? "#111" : "lightgray"
|
||||||
|
anchors.right: parent.right
|
||||||
|
anchors.top: parent.top
|
||||||
|
height: parent.height
|
||||||
|
}
|
||||||
|
|
||||||
ListView {
|
ListView {
|
||||||
id: listView
|
id: listView
|
||||||
|
|
||||||
|
@ -67,12 +82,12 @@ ScrollView {
|
||||||
highlightFollowsCurrentItem: false
|
highlightFollowsCurrentItem: false
|
||||||
highlight: Component {
|
highlight: Component {
|
||||||
Rectangle {
|
Rectangle {
|
||||||
width: listView.currentItem.width
|
width: listView.currentItem.width -1
|
||||||
height: listView.currentItem.height
|
height: listView.currentItem.height
|
||||||
color: nightmode ? "#444" : "lightblue"
|
color: nightmode ? "#15539e" : "lightblue"
|
||||||
opacity: 0.5
|
|
||||||
y: listView.currentItem.y
|
y: listView.currentItem.y
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
onCurrentItemChanged: {
|
onCurrentItemChanged: {
|
||||||
|
@ -85,8 +100,6 @@ ScrollView {
|
||||||
}
|
}
|
||||||
|
|
||||||
item.content.post = server.posts[currentIndex]
|
item.content.post = server.posts[currentIndex]
|
||||||
//content.flickableItem.contentY = 0
|
|
||||||
|
|
||||||
previousPost = item.content.post
|
previousPost = item.content.post
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -35,6 +35,11 @@ MenuBar {
|
||||||
Menu {
|
Menu {
|
||||||
visible: menuBar.visible
|
visible: menuBar.visible
|
||||||
title: qsTr("File")
|
title: qsTr("File")
|
||||||
|
MenuItem {
|
||||||
|
text: qsTr("Close &Window")
|
||||||
|
shortcut: "Ctrl+W"
|
||||||
|
onTriggered: Qt.quit()
|
||||||
|
}
|
||||||
MenuItem {
|
MenuItem {
|
||||||
text: qsTr("Exit")
|
text: qsTr("Exit")
|
||||||
shortcut: "Ctrl+Q"
|
shortcut: "Ctrl+Q"
|
||||||
|
@ -132,7 +137,7 @@ MenuBar {
|
||||||
title: qsTr("Help")
|
title: qsTr("Help")
|
||||||
MenuItem {
|
MenuItem {
|
||||||
text: qsTr("About")
|
text: qsTr("About")
|
||||||
onTriggered: Qt.openUrlExternally("http://jabs.nu/feedthemonkey");
|
onTriggered: Qt.openUrlExternally("http://jeena.net/feedthemonkey/index.html");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -29,7 +29,7 @@ ApplicationWindow {
|
||||||
id: app
|
id: app
|
||||||
title: "FeedTheMonkey"
|
title: "FeedTheMonkey"
|
||||||
visible: true
|
visible: true
|
||||||
color: nightmode ? "#111" : "#eee"
|
color: nightmode ? "#2d2d2d" : "#eee"
|
||||||
|
|
||||||
minimumWidth: 480
|
minimumWidth: 480
|
||||||
minimumHeight: 320
|
minimumHeight: 320
|
||||||
|
@ -159,10 +159,6 @@ ApplicationWindow {
|
||||||
case Qt.Key_Return:
|
case Qt.Key_Return:
|
||||||
Qt.openUrlExternally(content.post.link)
|
Qt.openUrlExternally(content.post.link)
|
||||||
break
|
break
|
||||||
case Qt.Key_S: {
|
|
||||||
console.log(Qt.openUrlExternally("speaker:"+ removeHTML(content.post.content)))
|
|
||||||
break
|
|
||||||
}
|
|
||||||
default:
|
default:
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
@ -184,7 +180,6 @@ ApplicationWindow {
|
||||||
content: content
|
content: content
|
||||||
server: server
|
server: server
|
||||||
|
|
||||||
Layout.minimumWidth: 200
|
|
||||||
implicitWidth: 300
|
implicitWidth: 300
|
||||||
textFontSize: app.textFontSize
|
textFontSize: app.textFontSize
|
||||||
nightmode: app.nightmode
|
nightmode: app.nightmode
|
||||||
|
|
|
@ -31,6 +31,7 @@
|
||||||
|
|
||||||
int main(int argc, char *argv[])
|
int main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
|
QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
|
||||||
QGuiApplication app(argc, argv);
|
QGuiApplication app(argc, argv);
|
||||||
app.setOrganizationName("Jeena");
|
app.setOrganizationName("Jeena");
|
||||||
app.setOrganizationDomain("jeena.net");
|
app.setOrganizationDomain("jeena.net");
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue