Members of the KDE Community are recommended to subscribe to the kde-community mailing list at https://mail.kde.org/mailman/listinfo/kde-community to allow them to participate in important discussions and receive other important announcements

Commit ca7387f5 authored by Camilo higuita's avatar Camilo higuita

multiple fixes on linker, linkcarddelegate, etc...

parent aee1f97a
......@@ -135,8 +135,7 @@ Maui.ApplicationWindow
NewLinkDialog
{
id: newLinkDialog
onLinkSaved: if(owl.insertLink(link))
linksView.cardsView.currentItem.update(note)
onLinkSaved: linksView.model.insert(link)
}
......
......@@ -17,5 +17,6 @@
<file>src/widgets/CardsList.qml</file>
<file>src/widgets/CardMenu.qml</file>
<file>src/utils/owl.js</file>
<file>src/widgets/LinkCardDelegate.qml</file>
</qresource>
</RCC>
......@@ -45,31 +45,34 @@ void Linker::extract(const QString &url)
{
auto data = getUrl(url);
QString title = url;
auto titles = query(data, HtmlTag::TITLE);
QStringList imgs ;
// auto tags = query(data, HtmlTag::META);
if(!titles.isEmpty())
title = titles[0];
title = title.isEmpty() ? url : title;
QStringList imgs;
// auto tags = query(data, HtmlTag::META);
for(auto img : query(data, HtmlTag::IMG, "src"))
{
if(imgs.contains(img) || img.isEmpty()) continue;
qDebug()<< "IMGAE URL" << img;
if((img.startsWith("http") || img.startsWith("https"))
&& (img.endsWith(".png", Qt::CaseInsensitive) ||
img.endsWith(".jpg", Qt::CaseInsensitive) ||
img.endsWith(".gif", Qt::CaseInsensitive) ||
img.endsWith(".jpeg", Qt::CaseInsensitive)))
if(url.at(url.length()-1) == "/")
{
if(img.startsWith("http"))
imgs << img;
else
imgs << url+img;
}else
{
if(img.startsWith("http"))
imgs << img;
else
imgs << url+"/"+img;
else continue;
}
}
LINK link_data {{OWL::KEYMAP[OWL::KEY::TITLE], titles},
LINK link_data {{OWL::KEYMAP[OWL::KEY::TITLE], title.trimmed()},
{OWL::KEYMAP[OWL::KEY::BODY], data},
{OWL::KEYMAP[OWL::KEY::IMAGE], imgs}};
emit previewReady(link_data);
......
......@@ -57,12 +57,13 @@ bool Links::insertLink(const QVariantMap &link)
for(auto tg : tags)
this->tag->tagAbstract(tg, OWL::TABLEMAP[OWL::TABLE::LINKS], url, color);
this->links << OWL::DB
({
{OWL::KEY::LINK, url},
{OWL::KEY::TITLE, title},
{OWL::KEY::COLOR, color},
{OWL::KEY::PREVIEW, preview},
{OWL::KEY::PREVIEW, image_path},
{OWL::KEY::PIN, QString::number(pin)},
{OWL::KEY::FAV, QString::number(fav)},
{OWL::KEY::UPDATED, QDateTime::currentDateTime().toString()},
......@@ -70,7 +71,7 @@ bool Links::insertLink(const QVariantMap &link)
});
return true;
}
} else qDebug()<< "LINK COULD NTO BE INSTED";
return false;
}
......
......@@ -42,9 +42,12 @@ void LinksModel::sortBy(const int &index, const QString &order)
bool LinksModel::insert(const QVariantMap &link)
{
const int index = mLinks->items().size();
if( this->mLinks->insertLink(link))
{
beginInsertRows(QModelIndex(), index, index);
this->mLinks->insertLink(link);
endInsertRows();
}
return false;
}
......
import QtQuick 2.9
import QtQuick.Controls 2.3
import org.kde.mauikit 1.0 as Maui
import org.kde.kirigami 2.2 as Kirigami
import "../../widgets"
import "../../utils/owl.js" as O
......@@ -109,7 +110,6 @@ Maui.Page
{
id: cardsView
anchors.fill: parent
onItemClicked: linkClicked(cardsView.model.get(index))
holder.emoji: "qrc:/Astronaut.png"
holder.isMask: false
holder.title : "No Links!"
......@@ -117,6 +117,33 @@ Maui.Page
holder.emojiSize: iconSizes.huge
itemHeight: unit * 250
model: linksModel
delegate: LinkCardDelegate
{
id: delegate
cardWidth: Math.min(cardsView.cellWidth, cardsView.itemWidth) - Kirigami.Units.largeSpacing * 2
cardHeight: cardsView.itemHeight
anchors.left: parent.left
anchors.leftMargin: cardsView.width <= cardsView.itemWidth ? 0 : (index % 2 === 0 ? Math.max(0, cardsView.cellWidth - cardsView.itemWidth) :
cardsView.cellWidth)
onClicked:
{
currentIndex = index
linkClicked(cardsView.model.get(index))
}
onRightClicked:
{
currentIndex = index
cardsView.menu.popup()
}
onPressAndHold:
{
currentIndex = index
cardsView.menu.popup()
}
}
Connections
{
......
......@@ -7,8 +7,8 @@ import "../../widgets"
Maui.Popup
{
parent: parent
heightHint: 0.95
widthHint: 0.95
heightHint: 0.97
widthHint: 0.97
maxWidth: 800*unit
maxHeight: maxWidth
......
......@@ -145,7 +145,6 @@ Maui.Page
Layout.fillHeight: true
Layout.fillWidth: true
width: parent.width
onItemClicked: noteClicked(notesModel.get(index))
holder.emoji: "qrc:/Type.png"
holder.emojiSize: iconSizes.huge
holder.isMask: false
......@@ -153,6 +152,34 @@ Maui.Page
holder.body: "Click here to create a new note"
model: notesModel
delegate: CardDelegate
{
id: delegate
cardWidth: Math.min(cardsView.cellWidth, cardsView.itemWidth) - Kirigami.Units.largeSpacing * 2
cardHeight: cardsView.itemHeight
anchors.left: parent.left
anchors.leftMargin: cardsView.width <= cardsView.itemWidth ? 0 : (index % 2 === 0 ? Math.max(0, cardsView.cellWidth - cardsView.itemWidth) :
cardsView.cellWidth)
onClicked:
{
currentIndex = index
noteClicked(notesModel.get(index))
}
onRightClicked:
{
currentIndex = index
cardsView.menu.popup()
}
onPressAndHold:
{
currentIndex = index
cardsView.menu.popup()
}
}
Connections
{
target: cardsView.holder
......
......@@ -36,33 +36,5 @@ GridView
id: cardMenu
}
delegate: CardDelegate
{
id: delegate
cardWidth: Math.min(control.cellWidth, control.itemWidth) - Kirigami.Units.largeSpacing * 2
cardHeight: itemHeight
anchors.left: parent.left
anchors.leftMargin: control.width <= control.itemWidth ? 0 : (index % 2 === 0 ? Math.max(0, control.cellWidth - control.itemWidth) :
control.cellWidth)
onClicked:
{
currentIndex = index
itemClicked(index)
}
onRightClicked:
{
currentIndex = index
cardMenu.popup()
}
onPressAndHold:
{
currentIndex = index
cardMenu.popup()
}
}
ScrollBar.vertical: ScrollBar{ id:scrollBar; visible: !isMobile}
}
import QtQuick 2.9
import QtQuick.Controls 2.2
import QtQuick.Layouts 1.3
import QtGraphicalEffects 1.0
import org.kde.kirigami 2.2 as Kirigami
ItemDelegate
{
id: control
property string noteColor : model.color ? model.color : viewBackgroundColor
property int cardWidth: visible ? unit * 200 : 0
property int cardHeight: visible ? unit * 120 : 0
property int cardRadius: radiusV
property bool condition : true
signal rightClicked();
visible: condition
width: cardWidth
height: cardHeight
hoverEnabled: !isMobile
background: Rectangle
{
color: "transparent"
}
MouseArea
{
anchors.fill: parent
acceptedButtons: Qt.RightButton
onClicked:
{
if(!isMobile && mouse.button === Qt.RightButton)
rightClicked()
}
}
Rectangle
{
id: card
z: -999
anchors.centerIn: control
anchors.fill: control
border.color: Qt.darker(noteColor, 1.2)
color: noteColor
radius: cardRadius
Loader
{
id: imgLoader
anchors.fill: parent
anchors.margins: space.small
clip: true
sourceComponent: typeof model.preview !== 'undefined' ? imgComponent : undefined
}
}
Rectangle
{
anchors.fill: parent
color: hovered? "#333" : "transparent"
z: 999
opacity: 0.2
radius: cardRadius
}
Item
{
visible: title.text.length > 0
height: layout.implicitHeight + space.big
anchors.right: parent.right
anchors.left: parent.left
anchors.bottom: parent.bottom
anchors.margins: unit
ColumnLayout
{
id: layout
anchors.fill: parent
anchors.margins: space.small
spacing: 0
Label
{
id: date
Layout.fillWidth: true
Layout.fillHeight: true
padding: 0
visible: date.text.length > 0
text: Qt.formatDateTime(new Date(model.updated), "d MMM h:mm")
color: model.color ? Qt.darker(model.color) : textColor
elide: Qt.ElideRight
wrapMode: TextEdit.WrapAnywhere
font.weight: Font.Bold
font.bold: true
font.pointSize: fontSizes.small
}
Label
{
id: title
padding: 0
Layout.fillWidth: true
Layout.fillHeight: true
text: model.title ? model.title : ""
color: model.color ? Qt.darker(model.color, 3) : textColor
elide: Qt.ElideRight
wrapMode: TextEdit.WrapAnywhere
font.weight: Font.Bold
font.bold: true
font.pointSize: fontSizes.large
clip: true
}
}
Rectangle
{
anchors.fill: parent
color: noteColor
z: -1
}
}
Component
{
id: bodyComponent
TextArea
{
id: body
padding: 0
visible: typeof model.body !== 'undefined'
enabled: false
text: model.body ? model.body : ""
color: model.color ? Qt.darker(model.color, 3) : textColor
wrapMode: TextEdit.WrapAnywhere
textFormat: TextEdit.RichText
font.pointSize: fontSizes.big
background: Rectangle
{
color: "transparent"
}
}
}
Component
{
id: imgComponent
Image
{
id: img
visible: status === Image.Ready
asynchronous: true
horizontalAlignment: Qt.AlignHCenter
verticalAlignment: Qt.AlignVCenter
height: parent.height
width: parent.width
sourceSize.height: height
sourceSize.width: width
fillMode: Image.PreserveAspectCrop
source: model.preview ? "file://"+encodeURIComponent( model.preview ) : ''
layer.enabled: img.visible
layer.effect: OpacityMask
{
maskSource: Item
{
width: img.width
height: img.height
Rectangle
{
anchors.centerIn: parent
width: img.width
height: img.height
radius: cardRadius
// radius: Math.min(width, height)
}
}
}
}
}
function update(item)
{
console.log("update link color", item.color, item.tag)
model.title = item.title
model.body = item.body
model.color = item.color
model.pin = item.pin ? 1 : 0
model.fav = item.fav ? 1 : 0
model.updated = item.updated
model.tag = item.tag.join(",")
}
}
......@@ -235,7 +235,7 @@ Maui.Popup
function fill(link)
{
title.text = link.title[0]
title.text = link.title
populatePreviews(link.image)
open()
......@@ -254,7 +254,7 @@ Maui.Popup
{
var data = ({
link : link.text,
title: title.text.trim(),
title: title.text,
preview: previewList.count > 0 ? previewList.model.get(previewList.currentIndex).url : "",
color: selectedColor,
tag: tagBar.getTags(),
......
<!DOCTYPE RCC>
<RCC version="1.0"/>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment