[BB10] Feedly support & Guide

This commit is contained in:
mkiol 2015-09-12 00:36:32 +02:00
parent 3bb36da4b9
commit 470609cac1
44 changed files with 744 additions and 244 deletions

View file

@ -48,7 +48,7 @@ Page {
Container {
preferredWidth: display.pixelSize.width
preferredWidth: app.width
verticalAlignment: VerticalAlignment.Center
Container {

View file

@ -43,8 +43,10 @@ Page {
onCreationCompleted: {
var nv = {name:"Netvibes", icon:"asset:///nv.png", type:1};
var or = {name:"Old Reader", icon:"asset:///oldreader.png", type:2};
var fe = {name:"Feedly", icon:"asset:///feedly.png", type:3};
theDataModel.append(nv);
theDataModel.append(or);
theDataModel.append(fe);
}
verticalAlignment: VerticalAlignment.Top
@ -66,17 +68,25 @@ Page {
onTriggered: {
var chosenItem = dataModel.data(indexPath);
if (chosenItem.type == 1) {
// Netvibes
nav.reconnectFetcher(1);
var obj = nvSignInDialog.createObject(); obj.code = 400;
var index = nav.indexOf(nav.top);
nav.insert(index, obj); nav.navigateTo(nav.at(index));
}
if (chosenItem.type == 2) {
// Old Reader
nav.reconnectFetcher(2);
var obj = oldReaderSignInDialog.createObject(); obj.code = 400;
var index = nav.indexOf(nav.top);
nav.insert(index, obj); nav.navigateTo(nav.at(index));
}
if (chosenItem.type == 3) {
// Feedly
nav.reconnectFetcher(3);
utils.resetQtWebKit();
fetcher.getConnectUrl(20);
}
}
accessibility.name: "Accounts list"

View file

@ -36,7 +36,7 @@ Page {
var doInit = settings.signinType!=type;
settings.signinType = type;
if (!dm.busy)
if (dm.busy)
dm.cancel();
if (doInit)
fetcher.init();
@ -94,9 +94,8 @@ Page {
progressIndicator.hide();
//notification.show(qsTr("Failed to load page content :-("));
// Do something here.....
notification.show(qsTr("Failed to load page content :-("));
//notification.show(qsTr("Failed to load page content :-("));
//nav.pop();
break;
}
}
@ -116,7 +115,7 @@ Page {
Container {
background: utils.plainBase()
preferredHeight: utils.du(0.25)
preferredWidth: display.pixelSize.width
preferredWidth: app.width
}
ProgressPanel {

View file

@ -29,6 +29,41 @@ Page {
Container {
ScrollView {
Container {
Header {
title: qsTr("Version %1").arg("2.1")
}
Container {
leftPadding: utils.du(2)
rightPadding: utils.du(2)
topPadding: utils.du(2)
bottomPadding: utils.du(2)
LogItem {
title: 'Sync read articles'
description: "Previously, unread as well as read articles were synced. With this new option comes possiblity to disable syncing read articles. It will speed up synchronization, but read articles will not be accessible form Kaktus.";
}
LogItem {
title: 'Sort order for list of articles'
description: 'New settings option enabling specific sort order for list of articles. Possible values: Recent first, Oldest first.'
}
LogItem {
title: 'Mark above as read'
description: 'Context menu for list of articles has new option for marking all above articles as read.'
}
LogItem {
title: 'Old Reader: Like & Liked articles tab'
description: 'New context option to Like/Unlike article. So called "Slow" tab is now replaced by Liked articles tab.'
}
LogItem {
title: 'Old Reader: Enable social features'
description: 'New option to enable/disable Old Reader\'s social features. If enabled, following features will be visible: Following folder, Sharing article with followers, Like/Unlike option, Liked articles tab.'
}
}
Header {
title: qsTr("Version %1").arg("2.0")
}
@ -43,14 +78,7 @@ Page {
title: 'Old Reader support'
description: 'Old Reader is supported as new feed aggreagator.'
}
}
Container {
leftPadding: utils.du(2)
rightPadding: utils.du(2)
topPadding: utils.du(2)
bottomPadding: utils.du(2)
LogItem {
title: 'Many small improvements and bug fixes'
description: 'Many improvements, like performance optimization and UI polishing were made.'

29
qml/bb10/Dot.qml Normal file
View file

@ -0,0 +1,29 @@
/*
* Copyright (C) 2015 Michal Kosciesza <michal@mkiol.net>
*
* This file is part of Kaktus.
*
* Kaktus is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Kaktus is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Kaktus. If not, see <http://www.gnu.org/licenses/>.
*/
import bb.cascades 1.2
ImageView {
property bool active
imageSource: active ? "asset:///dot-active.png" : "asset:///dot-inactive.png"
preferredHeight: utils.du(5)
preferredWidth: utils.du(5)
minHeight: utils.du(5)
minWidth: utils.du(5)
}

View file

@ -20,7 +20,6 @@
import bb.cascades 1.2
import bb.system 1.0
import com.kdab.components 1.0
import net.mkiol.kaktus 1.0
KaktusPage {
@ -47,6 +46,10 @@ KaktusPage {
return settings.signinType<10 ? qsTr("Saved") : qsTr("Starred");
case 5:
return qsTr("Slow");
case 6:
return qsTr("Liked");
case 7:
return qsTr("Shared");
default:
return root.title;
}
@ -59,7 +62,7 @@ KaktusPage {
expandableArea {
content: SegmentedControl {
preferredWidth: display.pixelSize.width
preferredWidth: app.width
Option {
text: qsTr("All")
value: false
@ -74,7 +77,9 @@ KaktusPage {
settings.showOnlyUnread = selectedValue;
}
}
expanded: true
//expanded: settings.viewMode == 4 || settings.viewMode == 6 ? false : true
expanded: false
indicatorVisibility: settings.viewMode == 4 || settings.viewMode == 6 ? TitleBarExpandableAreaIndicatorVisibility.Hidden : TitleBarExpandableAreaIndicatorVisibility.Default
toggleArea: TitleBarExpandableAreaToggleArea.EntireTitleBar
}
}
@ -84,17 +89,6 @@ KaktusPage {
AbstractItemModel {
id: bbEntryModel
sourceModel: entryModel
},
//Double click Timer
QTimer {
id: dclickTimer
singleShot: true
interval: 400
onTimeout: {
// One click
console.log("onTriggered: one");
oneClick();
}
}
]
@ -109,10 +103,10 @@ KaktusPage {
Qt.barWasPresed = false;
Qt.isLight = utils.isLight();
if (!settings.getHint1Done()) {
/*if (!settings.getHint1Done()) {
notification.show(qsTr("One-tap to open article, double-tap to mark as read"));
settings.setHint1Done(true);
}
}*/
}
onNeedToResetModel: {
@ -131,7 +125,7 @@ KaktusPage {
property variant chosenItem
property int chosenIndex
function oneClick() {
function clickHandler() {
// Not allowed while Syncing
if (dm.busy || fetcher.busy || dm.removerBusy) {
notification.show(qsTr("Please wait until current task is complete."));
@ -203,7 +197,7 @@ KaktusPage {
}
function itemType(data, indexPath) {
return (data.uid == "daterow" ? 'header' : 'item');
return (data.uid == "daterow" ? 'header' : data.uid == 'last' ? 'last' : 'item');
}
listItemComponents: [
@ -213,13 +207,25 @@ KaktusPage {
title: ListItemData.title
}
},
ListItemComponent {
type: "last"
Container {
preferredWidth: Qt.app.width
bottomPadding: Qt.utils.du(15)
}
},
ListItemComponent {
type: "item"
KaktusEntryItem {
id: item
property bool showMarkedAsRead: Qt.settings.viewMode!=4 &&
Qt.settings.viewMode!=6 &&
Qt.settings.viewMode!=7
title: ListItemData.title
defaultFeedIcon: ListItemData.feedIcon === "http://s.theoldreader.com/icons/user_icon.png"
feedTitle: ListItemData.feedTitle
@ -268,8 +274,10 @@ KaktusPage {
ListItem.onInitializedChanged: {
setIconBgColor();
var index = item.ListItem.indexInSection;
if (index == Qt.entryModel.count() - 1) {
Qt.entryModel.createItems(index + 1, Qt.settings.offsetLimit);
// Last item is dummy, so checking count-2
if (index == Qt.entryModel.count() - 2) {
//console.log(">> index:",index,"uid:",ListItemData.uid,"title:",ListItemData.title);
Qt.entryModel.createItems(index + 2, Qt.settings.offsetLimit);
}
}
@ -284,6 +292,7 @@ KaktusPage {
ActionSet {
id: actionSet
ActionItem {
id: markReadAction
title: ListItemData.read == 0 ? qsTr("Mark as read") : qsTr("Mark as unread")
enabled: ListItemData.read < 2
imageSource: ListItemData.read == 0 ? "asset:///read.png" : "asset:///unread.png"
@ -299,6 +308,25 @@ KaktusPage {
return;
}
}
onCreationCompleted: {
if (!enabled)
actionSet.remove(markReadAction);
}
}
ActionItem {
id: markAboveAction
title: qsTr("Mark above as read")
enabled: item.showMarkedAsRead && item.ListItem.indexInSection > 1
imageSource: "asset:///readabove.png"
onTriggered: {
Qt.entryModel.setAboveAsRead(item.ListItem.indexInSection);
}
onCreationCompleted: {
if (!enabled)
actionSet.remove(markAboveAction);
}
}
ActionItem {
title: ListItemData.readlater == 0 ? Qt.settings.signinType<10 ? qsTr("Save") : qsTr("Star") : Qt.settings.signinType<10 ? qsTr("Unsave") : qsTr("Unstar")
@ -315,10 +343,41 @@ KaktusPage {
}
}
}
ActionItem {
id: likeAction
property bool enabled2: Qt.settings.signinType >= 10 &&
Qt.settings.signinType < 20 &&
Qt.settings.showBroadcast
title: ListItemData.liked ? qsTr("Unlike") : qsTr("Like")
enabled: enabled2 && !Qt.isLight
imageSource: ListItemData.liked == 0 ? "asset:///like.png" : "asset:///unlike.png"
onTriggered: {
if (!ListItemData.liked) {
Qt.entryModel.setData(item.ListItem.indexInSection, "liked", true, "");
return;
}
if (ListItemData.liked) {
Qt.entryModel.setData(item.ListItem.indexInSection, "liked", false, "");
return;
}
}
onCreationCompleted: {
if (!enabled2)
actionSet.remove(likeAction);
}
}
ActionItem {
id: shareAction
property bool enabled2: Qt.settings.signinType >= 10 && ListItemData.feedId.substring(0,4) !== "user"
property bool enabled2: Qt.settings.signinType >= 10 &&
Qt.settings.signinType < 20 &&
Qt.settings.showBroadcast &&
ListItemData.feedId.substring(0,4) !== "user"
title: ListItemData.broadcast ? Qt.isLight ? qsTr("Unshare (only in pro edition)") : qsTr("Unshare") : Qt.isLight ? qsTr("Share (only in pro edition)") : qsTr("Share with followers")
enabled: enabled2 && !Qt.isLight
@ -346,10 +405,11 @@ KaktusPage {
onTriggered: {
chosenItem = dataModel.data(indexPath);
chosenIndex = indexPath[0];
if (chosenItem.uid == "daterow")
if (chosenItem.uid == "daterow" || chosenItem.uid == "last")
return;
// Expander clicked
if (Qt.barWasPressed) {
Qt.barWasPressed = false;
// Expander was clicked, so emitting colapse signal
@ -357,6 +417,7 @@ KaktusPage {
return;
}
// Star cklicked
if (Qt.starWasPressed) {
Qt.starWasPressed = false;
if (chosenItem.readlater < 2) {
@ -371,29 +432,9 @@ KaktusPage {
}
return;
}
//console.log("onTriggered");
if (dclickTimer.active) {
//console.log("onTriggered: double");
//console.log("image",chosenItem.image);
// Double click
dclickTimer.stop();
// Marking as read / unread
if (chosenItem.read < 2) {
if (chosenItem.read == 0) {
entryModel.setData(indexPath, "read", 1, "");
Qt.nav.top.refreshActions();
return;
}
if (chosenItem.read == 1) {
entryModel.setData(indexPath, "read", 0, "");
Qt.nav.top.refreshActions();
return;
}
}
} else {
dclickTimer.start();
}
// Item cklicked
clickHandler();
}
accessibility.name: "Entry list"
@ -401,8 +442,9 @@ KaktusPage {
ViewPlaceholder {
text: fetcher.busy ? qsTr("Wait until Sync finish.") :
settings.viewMode==4 ? settings.signinType<10 ? qsTr("No saved items") : qsTr("No starred items") :
settings.showOnlyUnread ? qsTr("No unread items") : qsTr("No items")
settings.viewMode==4 ? app.isNetvibes || app.isFeedly ? qsTr("No saved items") : qsTr("No starred items") :
settings.viewMode==6 ? qsTr("No liked items") : settings.showOnlyUnread ? qsTr("No unread items") : qsTr("No items")
visible: bbEntryModel.count==0
}

View file

@ -78,13 +78,6 @@ KaktusPage {
headerMode: ListHeaderMode.None
}
/*leadingVisual: Container {
preferredHeight: 100
preferredWidth: 100
background: Color.Cyan
}*/
//preferredHeight: display.pixelSize.height-utils.du(10)
listItemComponents: [
ListItemComponent {
type: ""
@ -133,7 +126,7 @@ KaktusPage {
}
onCreationCompleted: {
if (Qt.settings.signinType < 10)
if (Qt.app.isOldReader || Qt.app.isFeedly)
actionSet.remove(unreadAction);
}
}

View file

@ -0,0 +1,103 @@
/*
* Copyright (C) 2015 Michal Kosciesza <michal@mkiol.net>
*
* This file is part of Kaktus.
*
* Kaktus is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Kaktus is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Kaktus. If not, see <http://www.gnu.org/licenses/>.
*/
import bb.cascades 1.2
import "const.js" as Theme
Page {
id: root
property bool menuEnabled: false
property int code
function disconnectSignals() {
}
titleBar: TitleBar {
title: qsTr("Account")
}
ScrollView {
Container {
topPadding: utils.du(2)
bottomPadding: utils.du(2)
Header {
title: qsTr("Feedly")
}
Container {
leftPadding: utils.du(2)
rightPadding: utils.du(2)
topPadding: utils.du(2)
bottomPadding: utils.du(2)
Container {
preferredWidth: display.pixelSize.width
layout: StackLayout {
orientation: LayoutOrientation.LeftToRight
}
Container {
topPadding: utils.du(1)
ImageView {
imageSource: "asset:///feedly.png"
verticalAlignment: VerticalAlignment.Top
preferredWidth: 46
minWidth: 46
}
}
}
}
Container {
minWidth: utils.du(2)
}
Button {
text: qsTr("Sign in")
verticalAlignment: VerticalAlignment.Center
preferredWidth: display.pixelSize.width
onClicked: {
utils.resetQtWebKit();
fetcher.getConnectUrl(3);
}
}
}
}
actions: [
ActionItem {
id: action1
title: qsTr("Sign in")
imageSource: "asset:///save_folder.png"
ActionBar.placement: ActionBarPlacement.OnBar
onTriggered: {
accept();
}
}
]
function accept() {
utils.resetQtWebKit();
fetcher.getConnectUrl(3);
}
}

207
qml/bb10/Guide.qml Normal file
View file

@ -0,0 +1,207 @@
/*
* Copyright (C) 2015 Michal Kosciesza <michal@mkiol.net>
*
* This file is part of Kaktus.
*
* Kaktus is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Kaktus is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Kaktus. If not, see <http://www.gnu.org/licenses/>.
*/
import bb.cascades 1.2
import bb.device 1.2
import net.mkiol.kaktus 1.0
Sheet {
id: root
property bool clickable: false
property int progress: 0
onOpened: {
progress = 0;
clickable = false;
timer.start();
}
onProgressChanged: {
if (progress > 9) {
root.close();
}
}
attachedObjects: [
QTimer {
id: timer
interval: 2000
onTimeout: {
root.clickable = true;
}
}
]
Page {
Container {
background: Color.Black
preferredWidth: app.width
preferredHeight: app.height
leftPadding: utils.du(5)
rightPadding: utils.du(5)
layout: DockLayout {
}
Container {
verticalAlignment: VerticalAlignment.Top
horizontalAlignment: HorizontalAlignment.Center
preferredHeight: utils.du(10)
layout: DockLayout {}
Container {
verticalAlignment: VerticalAlignment.Bottom
layout: StackLayout {
orientation: LayoutOrientation.LeftToRight
}
Dot {
active: root.progress>=0
}
Dot {
active: root.progress>=1
}
Dot {
active: root.progress>=2
}
Dot {
active: root.progress>=3
}
Dot {
active: root.progress>=4
}
Dot {
active: root.progress>=5
}
Dot {
active: root.progress>=6
}
Dot {
active: root.progress>=7
}
Dot {
active: root.progress>=8
}
Dot {
active: root.progress>=9
}
}
}
Container {
verticalAlignment: VerticalAlignment.Center
horizontalAlignment: HorizontalAlignment.Center
Label {
text: root.progress == 0 ? qsTr("Hi,\nThis guide will explain you how to use basic features of Kaktus.") :
root.progress == 1 ? qsTr("Kaktus is working in sync mode.\n\nAll titles and descriptions of new articles are fetched once during synchronization. Content of the articles are fetched only when caching option is turn on.") :
root.progress == 2 ? app.isFeedly ? qsTr("There are 4 view modes.\n\nYou can switch between these modes by selecting appropriate tab.") : qsTr("There are 5 view modes.\n\nYou can switch between these modes by selecting appropriate tabs.") :
root.progress == 3 ? app.isNetvibes ? qsTr("Mode #1\n\nLists all your Netvibes tabs. Feeds are grouped by the tabs they belong to and articles are grouped in the feeds.") : qsTr("Mode #1\n\nLists all your folders. Feeds are grouped by the folders they belong to and articles are grouped in the feeds.") :
root.progress == 4 ? app.isNetvibes ? qsTr("Mode #2\n\nLists all your Netvibes tabs. Articles are grouped by the tabs they belong to.") : qsTr("Mode #2\n\nLists all your folders. Articles are grouped by the folders they belong to.") :
root.progress == 5 ? qsTr("Mode #3\n\nLists all articles from all your feeds in one list. Items are ordered by publication date.") :
root.progress == 6 ? app.isNetvibes || app.isFeedly ? qsTr("Mode #4\n\nLists all articles you have saved.") : qsTr("Mode #4\n\nLists all articles you have starred.") :
root.progress == 7 ? app.isNetvibes ? qsTr("Mode #5 \"Slow\"\n\nList articles from less frequently updated feeds. A feed is considered \"slow\" when it publishes less than 5 articles in a month.") : qsTr("Mode #5\n\nLists all articles you have liked.") :
root.progress == 8 ? qsTr("Top bar contains network indicator.\n\nThis indicator enables you to switch between the online and offline mode. In the offline mode, Kaktus will only use local cache to get web pages and images, so network connection won't be needed.") :
root.progress == 9 ? qsTr("That's all!\n\nIf you want to see this guide one more time, click Show User Guide on the settings page.") :
""
textStyle.textAlign: TextAlign.Center
textStyle.base: SystemDefaults.TextStyles.TitleText
textStyle.color: Color.White
multiline: true
}
Container {
preferredHeight: utils.du(4)
preferredWidth: utils.du(4)
}
Container {
horizontalAlignment: HorizontalAlignment.Center
layout: StackLayout {
orientation: LayoutOrientation.LeftToRight
}
ImageView {
visible: root.progress == 1
imageSource: "asset:///sync.png"
}
ImageView {
visible: root.progress == 2 || root.progress == 3
imageSource: "asset:///vm0.png"
}
ImageView {
visible: root.progress == 2 || root.progress == 4
imageSource: "asset:///vm1.png"
}
ImageView {
visible: root.progress == 2 || root.progress == 5
imageSource: "asset:///vm3.png"
}
ImageView {
visible: root.progress == 2 || root.progress == 6
imageSource: "asset:///vm4.png"
}
ImageView {
visible: app.isNetvibes ? root.progress == 2 || root.progress == 7 : false
imageSource: "asset:///vm5.png"
}
ImageView {
visible: app.isOldReader ? root.progress == 2 || root.progress == 7 : false
imageSource: "asset:///vm6.png"
}
ImageView {
visible: root.progress == 8
imageSource: "asset:///network-online.png"
}
}
}
Container {
visible: root.clickable && root.progress == 0
verticalAlignment: VerticalAlignment.Bottom
horizontalAlignment: HorizontalAlignment.Center
preferredHeight: utils.du(10)
Label {
text: qsTr("Tap anywhere to continue")
textStyle.textAlign: TextAlign.Center
textStyle.base: SystemDefaults.TextStyles.BodyText
textStyle.color: Color.Gray
}
}
onTouch: {
if (root.clickable && event.touchType == TouchType.Up) {
if (root.progress==6 && app.isFeedly) {
root.progress++;
}
if (root.progress==9) {
// Help finished
settings.helpDone = true;
console.log("Help finished")
}
progress++;
}
}
}
}
}

View file

@ -23,11 +23,12 @@ import "const.js" as Theme
Container {
id: root
property alias title: titleLabel.text
background: Qt.utils.background() //Qt.utils.plainBase()
preferredWidth: Qt.display.pixelSize.width
preferredWidth: Qt.app.width
layout: DockLayout {}
@ -37,7 +38,7 @@ Container {
background: Qt.utils.plainBase()
minHeight: 2
maxHeight: minHeight
minWidth: Qt.display.pixelSize.width
minWidth: Qt.app.width
maxWidth: minWidth
}
@ -47,7 +48,7 @@ Container {
background: Qt.utils.plainBase()
minHeight: 1
maxHeight: minHeight
minWidth: Qt.display.pixelSize.width
minWidth: Qt.app.width
maxWidth: minWidth
}

View file

@ -51,7 +51,7 @@ Container {
signal starClicked
background: pressed ? Qt.utils.plainBase() : Qt.utils.background()
preferredWidth: Qt.display.pixelSize.width
preferredWidth: Qt.app.width
bottomPadding: last ? Qt.utils.du(15) : 0
function setIconBgColor() {
@ -83,7 +83,7 @@ Container {
background: Qt.utils.plainBase()
minHeight: 2
maxHeight: minHeight
minWidth: Qt.display.pixelSize.width
minWidth: Qt.app.width
maxWidth: minWidth
}
@ -162,7 +162,7 @@ Container {
Container {
verticalAlignment: VerticalAlignment.Top
preferredWidth: Qt.display.pixelSize.width
preferredWidth: Qt.app.width
Label {
id: titleLabel
textStyle.base: SystemDefaults.TextStyles.PrimaryText
@ -200,7 +200,7 @@ Container {
// Image
Container {
id: imageContainer
leftPadding: image.width<Qt.display.pixelSize.width-2*Qt.utils.du(2) ? Qt.utils.du(2) : 0
leftPadding: image.width<Qt.app.width-2*Qt.utils.du(2) ? Qt.utils.du(2) : 0
topPadding: Qt.utils.du(2)
bottomPadding: 0
@ -210,8 +210,8 @@ Container {
id: image
doSizeCheck: true
scalingMethod: ScalingMethod.AspectFit
preferredWidth: image.width>Qt.display.pixelSize.width ? Qt.display.pixelSize.width : image.width
maxWidth: image.width>Qt.display.pixelSize.width ? Qt.display.pixelSize.width : image.width
preferredWidth: image.width>Qt.app.width ? Qt.app.width : image.width
maxWidth: image.width>Qt.app.width ? Qt.app.width : image.width
}
}
@ -248,7 +248,10 @@ Container {
}
Container {
visible: (!root.hidden || root.expanded) && (root.annotations != "" || root.broadcast)
//visible: (!root.hidden || root.expanded) && (root.annotations != "" || root.broadcast)
visible: Qt.settings.showBroadcast && (!root.hidden || root.expanded) && (root.broadcast || root.annotations!="")
layout: StackLayout {
orientation: LayoutOrientation.LeftToRight
}
@ -262,11 +265,21 @@ Container {
]
background: border.imagePaint*/
/*ImageView {
preferredHeight: Qt.utils.du(6)
preferredWidth: Qt.utils.du(6)
minHeight: Qt.utils.du(6)
minWidth: Qt.utils.du(6)
visible: root.liked
imageSource: Application.themeSupport.theme.colorTheme.style == VisualStyle.Bright ? "asset:///like-text.png" : "asset:///like.png"
}*/
ImageView {
preferredHeight: Qt.utils.du(6)
preferredWidth: Qt.utils.du(6)
minHeight: Qt.utils.du(6)
minWidth: Qt.utils.du(6)
visible: root.broadcast || root.annotations != ""
imageSource: root.broadcast ?
Application.themeSupport.theme.colorTheme.style == VisualStyle.Bright ? "asset:///share-text.png" : "asset:///share.png" :
Application.themeSupport.theme.colorTheme.style == VisualStyle.Bright ? "asset:///comment-text.png" : "asset:///comment.png"
@ -331,7 +344,7 @@ Container {
Label {
verticalAlignment: VerticalAlignment.Center
preferredWidth: Qt.display.pixelSize.width
preferredWidth: Qt.app.width
textStyle.base: SystemDefaults.TextStyles.SubtitleText
textStyle.fontWeight: FontWeight.W100
textStyle.color: root.hidden ? Qt.utils.secondaryText() : Qt.utils.text()

View file

@ -63,7 +63,7 @@ Container {
background: Qt.utils.plainBase()
minHeight: 2
maxHeight: minHeight
minWidth: Qt.display.pixelSize.width
minWidth: Qt.app.width
maxWidth: minWidth
}
@ -88,7 +88,7 @@ Container {
Container {
layout: DockLayout {}
preferredWidth: Qt.display.pixelSize.width
preferredWidth: Qt.app.width
Container {
rightPadding: Qt.utils.du(5)

View file

@ -34,6 +34,8 @@ NavigationPane {
property bool fetcherBusyStatus: false
//property int oldViewMode
onPopTransitionEnded: {
if (nav.top.menuEnabled)
Application.menuEnabled = true;
@ -72,6 +74,7 @@ NavigationPane {
Qt.cache = cache;
Qt.dm = dm;
Qt.display = display;
Qt.app = app;
Qt.utils = utils;
Qt.nav = nav;
Qt.settings = settings;
@ -84,6 +87,8 @@ NavigationPane {
settings.dashboardInUseChanged.connect(resetView);
settings.viewModeChanged.connect(resetView);
settings.signedInChanged.connect(settingsSignedInChanged);
settings.showBroadcastChanged.connect(settingsShowBroadcastChanged);
settings.allowedOrientationsChanged.connect(settingsAllowedOrientationsChanged);
settings.themeChanged.connect(setTheme);
@ -93,6 +98,8 @@ NavigationPane {
dm.busyChanged.connect(dmBusyChanged);
dm.busyChanged.connect(dmBusyChanged);
dm.removerBusyChanged.connect(dmRemoverBusyChanged);
settingsAllowedOrientationsChanged();
db.init();
}
@ -181,6 +188,32 @@ NavigationPane {
fetcher.cancel(); dm.cancel();
settings.reset();
db.init();
} else {
if (!settings.helpDone) {
guide.open();
}
}
}
function settingsShowBroadcastChanged() {
//console.log("settingsShowBroadcastChanged", settings.viewMode, settings.showBroadcast );
if (settings.viewMode > 5 && !settings.showBroadcast) {
settings.viewMode = 4;
}
app.refreshTabs();
}
function settingsAllowedOrientationsChanged() {
switch (settings.allowedOrientations) {
case 1:
OrientationSupport.supportedDisplayOrientation = SupportedDisplayOrientation.DisplayPortrait;
break;
case 2:
OrientationSupport.supportedDisplayOrientation = SupportedDisplayOrientation.DisplayLandscape;
break;
default:
OrientationSupport.supportedDisplayOrientation = SupportedDisplayOrientation.All;
}
}
@ -265,11 +298,16 @@ NavigationPane {
var obj = oldReaderSignInDialog.createObject(); obj.code = code; nav.push(obj);
return;
}
if (type == 20) {
var obj = feedlySignInDialog.createObject(); obj.code = code; nav.push(obj);
return;
}
} else {
// Unknown error
notification.show(qsTr("An unknown error occurred! :-("));
resetView();
}
}
@ -362,10 +400,12 @@ NavigationPane {
reconnectFetcher(1);
else if (type == 10)
reconnectFetcher(2);
else if (type == 20)
reconnectFetcher(3);
}
utils.setRootModel();
switch (settings.viewMode) {
case 0:
case 1:
@ -379,10 +419,14 @@ NavigationPane {
case 3:
case 4:
case 5:
case 6:
case 7:
nav.insert(0, entryPage.createObject());
nav.navigateTo(nav.at(0));
break;
}
//oldViewMode = newViewMode;
}
attachedObjects: [
@ -420,6 +464,10 @@ NavigationPane {
id: oldReaderSignInDialog
source: "OldReaderSignInDialog.qml"
},
ComponentDefinition {
id: feedlySignInDialog
source: "FeedlySignInDialog.qml"
},
ComponentDefinition {
id: tabPage
source: "TabPage.qml"

View file

@ -86,6 +86,14 @@ Page {
}
attachedObjects: [
/*ActionItem {
id: guideAction
title: qsTr("Guide")
ActionBar.placement: ActionBarPlacement.OnBar
onTriggered: {
guide.open();
}
},*/
ReadAllDialog {
id: readAllDialog
onOk: {
@ -146,6 +154,7 @@ Page {
removeAction(actions[0]);
}
//addAction(guideAction);
addAction(markAllAsReadAction);
if (settings.signinType < 10)
addAction(markAllAsUnreadAction);

View file

@ -27,7 +27,9 @@ Tab {
viewMode==2 ? qsTr("All feeds") :
viewMode==3 ? qsTr("All articles") :
viewMode==4 ? settings.signinType<10 ? qsTr("Saved") : qsTr("Starred") :
viewMode==5 ? utils.isLight() ? qsTr("Slow (only in pro edition)") : qsTr("Slow") : ""
viewMode==5 ? utils.isLight() ? qsTr("Slow (only in pro edition)") : qsTr("Slow") :
viewMode==6 ? utils.isLight() ? qsTr("Liked (only in pro edition)") : qsTr("Liked") :
viewMode==7 ? utils.isLight() ? qsTr("Shared (only in pro edition)") : qsTr("Shared") : ""
/*description: viewMode==0 ? qsTr("All your tabs, feeds & articles") :
viewMode==1 ? qsTr("All tabs & articles") :
@ -38,7 +40,8 @@ Tab {
imageSource: "asset:///vm"+viewMode+".png"
enabled: utils.isLight() ? settings.signedIn && !fetcher.busy && viewMode!=5 : settings.signedIn && !fetcher.busy
enabled: utils.isLight() ? settings.signedIn && !fetcher.busy && viewMode<5 :
settings.signedIn && !fetcher.busy
onTriggered: {
settings.viewMode = viewMode;

View file

@ -33,9 +33,9 @@ Container {
layout: DockLayout {}
preferredWidth: display.pixelSize.width
minWidth: display.pixelSize.width
maxWidth: display.pixelSize.width
preferredWidth: app.width
minWidth: app.width
maxWidth: app.width
preferredHeight: utils.du(10)
background: utils.plain()
@ -118,9 +118,9 @@ Container {
id: indicator
horizontalAlignment: HorizontalAlignment.Left
verticalAlignment: VerticalAlignment.Bottom
preferredWidth: display.pixelSize.width
minWidth: display.pixelSize.width
maxWidth: display.pixelSize.width
preferredWidth: app.width
minWidth: app.width
maxWidth: app.width
}
}

View file

@ -46,7 +46,8 @@ Page {
ScrollView {
Container {
Header {
title: settings.signinType < 10 ? "Netvibes" : "Old Reader"
title: app.isNetvibes ? "Netvibes":
app.isOldReader ? "Old Reader" : "Feedly"
}
Container {
@ -57,7 +58,12 @@ Page {
TextLabel {
text: settings.signedIn ? qsTr("Signed in with") : qsTr("Not signed in")
value: settings.signedIn ? settings.signinType == 0 ? settings.getUsername() : settings.signinType == 1 ? "Twitter" : settings.signinType == 2 ? "Facebook" : settings.signinType == 10 ? settings.getUsername() : "" : ""
value: settings.signedIn ?
settings.signinType==0 ? settings.getUsername() :
settings.signinType==1 ? "Twitter" :
settings.signinType==2 ? "Facebook" :
settings.signinType==10 ? settings.getUsername() :
settings.signinType==20 ? settings.getProvider() : "" : ""
enabled: settings.signedIn
buttonText: qsTr("Sign out")
onClicked: {
@ -69,7 +75,7 @@ Page {
text: settings.signedIn && utils.defaultDashboardName() !== "" ? qsTr("Dashboard in use") : qsTr("Dashboard not selected")
value: settings.signedIn && utils.defaultDashboardName() !== "" ? utils.defaultDashboardName() : ""
buttonText: settings.signedIn ? qsTr("Change") : ""
visible: settings.signinType < 10
visible: app.isNetvibes
onClicked: {
utils.setDashboardModel();
nav.push(dashboardPage.createObject());
@ -79,7 +85,6 @@ Page {
Header {
title: qsTr("Syncronization")
visible: settings.signinType >= 10
}
Container {
@ -87,11 +92,11 @@ Page {
rightPadding: utils.du(2)
topPadding: utils.du(2)
bottomPadding: utils.du(2)
visible: settings.signinType >= 10
visible: app.isOldReader || app.isFeedly
DropDown {
title: qsTr("Sync timeframe")
enabled: settings.signinType >= 10
enabled: app.isOldReader || app.isFeedly
selectedIndex: {
var retention = settings.getRetentionDays();
@ -147,10 +152,21 @@ Page {
multiline: true
textStyle.base: SystemDefaults.TextStyles.SubtitleText
textStyle.color: utils.secondaryText()
text: qsTr("Most recent articles will be syncronized according to the defined timeframe. " + "Regardless of the value, all starred, liked and shared items will be synced as well. " + "Be aware, this parameter has significant impact on the speed of synchronization.")
text: qsTr("Most recent articles will be syncronized according to the defined timeframe.") + " " +
(settings.signinType < 20 ? qsTr("Regardless of the value, all starred, liked and shared items will be synced as well.") : qsTr("Regardless of the value, all saved items will be synced as well.")) + " " +
qsTr("Be aware, this parameter has significant impact on the speed of synchronization.")
}
ToggleComponent {
text: qsTr("Sync read articles")
description: qsTr("In addition to unread also read articles will be synced. Disabling this option will speed up synchronization, but read articles will not be accessible form Kaktus.")
checked: settings.syncRead
onCheckedChanged: {
settings.syncRead = checked;
}
}
}
Header {
title: qsTr("Cache")
}
@ -249,70 +265,25 @@ Page {
rightPadding: utils.du(2)
topPadding: utils.du(2)
bottomPadding: utils.du(2)
/*DropDown {
* title: qsTr("Language")
* options: [
* Option {
* selected: settings.locale === ""
* value: ""
* text: qsTr("Default")
* },
* Option {
* selected: settings.locale === "cs"
* value: "cs"
* text: "Čeština"
* },
* Option {
* selected: settings.locale === "en"
* value: "en"
* text: "English"
* },
* Option {
* selected: settings.locale === "fa"
* value: "fa"
* text: "فارسی"
* },
* Option {
* selected: settings.locale === "nl"
* value: "nl"
* text: "Nederlands"
* },
* Option {
* selected: settings.locale === "pl"
* value: "pl"
* text: "Polski"
* },
* Option {
* selected: settings.locale === "ru"
* value: "ru"
* text: "Русский"
* },
* Option {
* selected: settings.locale === "tr"
* value: "tr"
* text: "Türkçe"
* }
* ]
* onSelectedOptionChanged: {
* if (settings.locale != selectedOption.value) {
* settings.locale = selectedOption.value;
* notification.show(qsTr("Changes will take effect after you restart Kaktus."));
* }
*
* }
}*/
//ViewModeDropDown {}
/*ToggleComponent {
* text: qsTr("Show only unread articles")
* checked: settings.showOnlyUnread
*
* onCheckedChanged: {
* settings.showOnlyUnread = checked;
* }
}*/
DropDown {
title: qsTr("Sort order for list of articles")
options: [
Option {
selected: settings.showOldestFirst == value
value: false
text: qsTr("Recent first")
},
Option {
selected: settings.showOldestFirst == value
value: true
text: qsTr("Oldest first")
}
]
onSelectedOptionChanged: {
settings.showOldestFirst = selectedOption.value;
}
}
ToggleComponent {
text: qsTr("Read mode")
@ -333,50 +304,24 @@ Page {
settings.showTabIcons = checked;
}
}
/*ToggleComponent {
* text: qsTr("Power save mode")
* description: qsTr("When the phone or app goes to the idle state, " + "all opened web pages will be closed to lower power consumption.")
* checked: settings.powerSaveMode
*
* onCheckedChanged: {
* settings.powerSaveMode = checked;
* }
}*/
/*DropDown {
* title: qsTr("Orientation")
* options: [
* Option {
* selected: settings.allowedOrientations == value
* value: 0
* text: qsTr("Dynamic")
* },
* Option {
* selected: settings.allowedOrientations == value
* value: 1
* text: qsTr("Portrait")
* },
* Option {
* selected: settings.allowedOrientations == value
* value: 2
* text: qsTr("Landscape")
* }
* ]
* onSelectedOptionChanged: {
* settings.allowedOrientations = selectedOption.value;
* }
}*/
ToggleComponent {
text: qsTr("Enable social features")
enabled: app.isOldReader
checked: settings.showBroadcast
description: qsTr("Following Old Reader's social features will be enabled: Following folder, Sharing article with followers, Like option, Liked tab.")
onCheckedChanged: {
settings.showBroadcast = checked;
}
visible: enabled
}
DropDown {
title: qsTr("Theme")
visible: utils.checkOSVersion(10, 3)
options: [
/*Option {
* selected: settings.theme == value
* value: 0
* text: qsTr("Default")
},*/
Option {
selected: settings.theme == value
value: 1
@ -394,6 +339,30 @@ Page {
settings.theme = selectedOption.value;
}
}
DropDown {
title: qsTr("Orientation")
options: [
Option {
selected: settings.allowedOrientations == value
value: 0
text: qsTr("Dynamic")
},
Option {
selected: settings.allowedOrientations == value
value: 1
text: qsTr("Portrait")
},
Option {
selected: settings.allowedOrientations == value
value: 2
text: qsTr("Landscape")
}
]
onSelectedOptionChanged: {
settings.allowedOrientations = selectedOption.value;
}
}
DropDown {
title: enabled ? qsTr("Offline viewer style") : qsTr("Offline viewer (only in pro edition)")
@ -440,27 +409,27 @@ Page {
}
}
/*Header {
Header {
title: qsTr("Other")
}
Container {
horizontalAlignment: HorizontalAlignment.Center
leftPadding: ui.du(2)
rightPadding: ui.du(2)
topPadding: ui.du(2)
bottomPadding: ui.du(2)
leftPadding: utils.du(2)
rightPadding: utils.du(2)
topPadding: utils.du(2)
bottomPadding: utils.du(2)
Button {
text: qsTr("Show User Guide")
onClicked: {
//guide.show();
notification.show("Not implemented yet :-(");
guide.open();
}
}
}*/
}
}
}

View file

@ -69,7 +69,7 @@ Page {
id: textArea
hintText: "Want to add a note?"
input.submitKey: SubmitKey.Submit
preferredHeight: Qt.display.pixelSize.height
preferredHeight: Qt.app.height
}
}

View file

@ -27,9 +27,9 @@ SystemDialog {
signal cancel
title: qsTr("Signing out")
body: settings.signinType < 10 ?
qsTr("Disconnect Kaktus from your Netvibes account?") :
qsTr("Disconnect Kaktus from your Old Reader account?")
body: app.isNetvibes ? qsTr("Disconnect Kaktus from your Netvibes account?") :
app.isOldReader ? qsTr("Disconnect Kaktus from your Old Reader account?") :
app.isFeedly ? qsTr("Disconnect Kaktus from your Feedly account?") : ""
onFinished: {
if (value==SystemUiResult.ConfirmButtonSelection) {

View file

@ -83,6 +83,7 @@ KaktusPage {
id: item
text: ListItemData.uid === "subscriptions" ? qsTr("Subscriptions") :
ListItemData.uid === "friends" ? qsTr("Following") :
ListItemData === "global.uncategorized" ? qsTr("Uncategorized") :
ListItemData.title
imageSource: ListItemData.uid === "friends" ? Application.themeSupport.theme.colorTheme.style === VisualStyle.Bright ? "asset:///contact-text.png" : "asset:///contact.png" : ListItemData.iconUrl === "" ? "" : Qt.cache.getUrlbyUrl(ListItemData.iconUrl)
imageBackgroundVisible: false
@ -126,7 +127,7 @@ KaktusPage {
}
onCreationCompleted: {
if (Qt.settings.signinType < 10)
if (Qt.app.isOldReader || Qt.app.isFeedly)
actionSet.remove(unreadAction);
}
}

View file

@ -39,7 +39,7 @@ Page {
property variant g_settings: settings
property double viewPort: settings.fontSize==1 ? 1.0 : settings.fontSize==2 ? 2.0 : 0.5
property int imgWidth: display.pixelSize.width / viewPort
property int imgWidth: app.width / viewPort
signal updateViewPort
@ -154,7 +154,7 @@ Page {
ActionItem {
title: stared ? settings.signinType < 10 ? qsTr("Unsave") : qsTr("Unstar") : settings.signinType < 10 ? qsTr("Save") : qsTr("Star")
ActionBar.placement: ActionBarPlacement.OnBar
imageSource: stared ? "asset:///star-selected.png" : "asset:///star.png"
imageSource: stared ? "asset:///unsave.png" : "asset:///save.png"
onTriggered: {
entryModel.setData(index, "readlater", stared ? 0 : 1, "");
stared = !stared;
@ -180,10 +180,31 @@ Page {
data = root.onlineUrl;
}
},
ActionItem {
id: likeAction
property bool enabled2: app.isOldReader && settings.showBroadcast
title: root.liked ?
Qt.isLight ? qsTr("Unlike (only in pro edition)") : qsTr("Unlike") :
Qt.isLight ? qsTr("Like (only in pro edition)") : qsTr("Like")
enabled: enabled2 && !Qt.isLight
imageSource: root.liked ? "asset:///unlike.png" : "asset:///like.png"
onTriggered: {
entryModel.setData(index, "liked", !root.liked, "");
root.liked = !root.liked;
}
onCreationCompleted: {
if (!enabled2)
root.removeAction(likeAction);
}
},
ActionItem {
id: shareAction
title: settings.signinType >= 10 ? root.broadcast ? Qt.isLight ? qsTr("Unshare (only in pro edition)") : qsTr("Unshare") : Qt.isLight ? qsTr("Share (only in pro edition)") : qsTr("Share with followers") : qsTr("Share with followers")
enabled: settings.signinType >= 10 && !Qt.isLight
property bool enabled2: app.isOldReader && settings.showBroadcast
title: root.broadcast ?
Qt.isLight ? qsTr("Unshare (only in pro edition)") : qsTr("Unshare") :
Qt.isLight ? qsTr("Share (only in pro edition)") : qsTr("Share with followers")
enabled: enabled2 && !Qt.isLight
imageSource: root.broadcast ? "asset:///unsharefollowers.png" : "asset:///sharefollowers.png"
onTriggered: {
if (root.broadcast) {
@ -194,6 +215,11 @@ Page {
}
root.broadcast = !root.broadcast;
}
onCreationCompleted: {
if (!enabled2)
root.removeAction(shareAction);
}
},
ActionItem {
title: qsTr("Browser")
@ -323,12 +349,6 @@ Page {
verticalAlignment: VerticalAlignment.Top
horizontalAlignment: HorizontalAlignment.Left
/*Container {
background: utils.plainBase()
preferredHeight: utils.du(0.25)
preferredWidth: display.pixelSize.width
}*/
ProgressPanel {
id: progressIndicator
open: false

BIN
qml/bb10/dot-active.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 735 B

BIN
qml/bb10/dot-inactive.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 936 B

BIN
qml/bb10/feedly.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 954 B

After

Width:  |  Height:  |  Size: 1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

View file

@ -23,10 +23,18 @@ import bb.device 1.2
TabbedPane {
id: app
property bool isNetvibes: settings.signinType >= 0 && settings.signinType < 10
property bool isOldReader: settings.signinType >= 10 && settings.signinType < 20
property bool isFeedly: settings.signinType >= 20 && settings.signinType < 30
property int width: display.pixelSize.width
property int height: display.pixelSize.height
showTabsOnActionBar: false
onCreationCompleted: {
settings.signedInChanged.connect(refreshTabs);
//settings.showBroadcastChanged.connect(refreshTabs);
refreshTabs();
}
@ -40,18 +48,28 @@ TabbedPane {
}
}
onSidebarStateChanged: {
//console.log("onSidebarStateChanged",sidebarState);
//sidebarState = SidebarState.VisibleCompact
}
attachedObjects: [
Guide {
id: guide
},
KaktusNavigation {
id: nav
},
Notification {
id: notification
},
OrientationHandler {
onOrientationChanged: {
console.log("onOrientationChanged");
if (orientation == UIOrientation.Portrait) {
app.width = display.pixelSize.width;
app.height = display.pixelSize.height;
} else if (orientation == UIOrientation.Landscape) {
app.height = display.pixelSize.width;
app.width = display.pixelSize.height;
}
}
},
ComponentDefinition {
id: kaktusTab
source: "KaktusTab.qml"
@ -127,7 +145,12 @@ TabbedPane {
addTab(1);
addTab(3);
addTab(4);
addTab(5);
if (app.isNetvibes)
addTab(5);
else if (app.isOldReader && settings.showBroadcast)
addTab(6);
setActiveTab();
} else {
activeTab = addTab(settings.viewMode);
@ -156,6 +179,8 @@ TabbedPane {
activeTab = tabs[3];
break;
case 5:
case 6:
case 7:
activeTab = tabs[4];
break;
default :

BIN
qml/bb10/read-text.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 1.8 KiB

BIN
qml/bb10/readabove-text.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

BIN
qml/bb10/readabove.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

BIN
qml/bb10/unlike-text.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

BIN
qml/bb10/unlike.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

BIN
qml/bb10/unread-text.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

BIN
qml/bb10/vm6.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

BIN
qml/bb10/vm6d.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

View file

@ -40,7 +40,7 @@ Page {
if (code == 0) {
fetcher.checkCredentials();
} else {
if (! dm.busy)
if (dm.busy)
dm.cancel();
if (doInit)
fetcher.init();

View file

@ -375,10 +375,10 @@ ListItem {
Item {
// Broadcast
anchors.left: parent.left; anchors.right: parent.right
visible: settings.showBroadcast && (!root.hidden || root.expanded) && (root.broadcast || root.annotations!="" || root.liked)
visible: settings.showBroadcast && (!root.hidden || root.expanded) && (root.broadcast || root.annotations!="")
height: Math.max(broadcastImage.height, broadcastLabel.height)
Image {
/*Image {
id: likeImage
visible: root.liked
anchors.left: parent.left; anchors.top: parent.top
@ -386,12 +386,12 @@ ListItem {
height: Theme.iconSizeSmall
source: root.down ? "image://icons/like?"+Theme.secondaryHighlightColor :
root.hidden ? "image://icons/like?"+Theme.secondaryColor : "image://icons/like?"+Theme.primaryColor
}
}*/
Image {
id: broadcastImage
visible: root.broadcast || root.annotations!=""
anchors.left: root.liked ? likeImage.right : parent.left; anchors.top: parent.top
anchors.left: parent.left; anchors.top: parent.top
width: Theme.iconSizeSmall
height: Theme.iconSizeSmall
source: root.broadcast ? root.down ? "image://theme/icon-m-share?"+Theme.secondaryHighlightColor :

View file

@ -156,9 +156,9 @@ Page {
Component.onCompleted: {
//console.log("image:",model.image);
// Dynamic creation of new items if last item is compleated
if (index==entryModel.count()-1) {
if (index==entryModel.count()-2) {
//console.log(index);
entryModel.createItems(index+1,index+settings.offsetLimit);
entryModel.createItems(index+2,index+settings.offsetLimit);
}
}

View file

@ -313,7 +313,7 @@ Page {
}
description: qsTr("After sync the content of all items will be downloaded "+
"and cached for access in the Offline mode.")
"and cached for access in the offline mode.")
}
SectionHeader {

View file

@ -190,11 +190,11 @@ Page {
if (!listItem.last) {
if (settings.viewMode == 0) {
utils.setFeedModel(uid);
pageStack.push(Qt.resolvedUrl("FeedPage.qml"),{"title": model.uid=="subscriptions" ? qsTr("Subscriptions") : model.uid=="friends" ? qsTr("Following") : title, "index": model.index});
pageStack.push(Qt.resolvedUrl("FeedPage.qml"),{"title": model.uid=="subscriptions" ? qsTr("Subscriptions") : model.uid=="friends" ? qsTr("Following") : model.uid=="global.uncategorized" ? qsTr("Uncategorized") : title, "index": model.index});
}
if (settings.viewMode == 1) {
utils.setEntryModel(uid);
pageStack.push(Qt.resolvedUrl("EntryPage.qml"),{"title": model.uid=="subscriptions" ? qsTr("Subscriptions") : model.uid=="friends" ? qsTr("Following") : title, "readlater": false});
pageStack.push(Qt.resolvedUrl("EntryPage.qml"),{"title": model.uid=="subscriptions" ? qsTr("Subscriptions") : model.uid=="friends" ? qsTr("Following") : model.uid=="global.uncategorized" ? qsTr("Uncategorized") : title, "readlater": false});
}
}
}