1
0
Fork 0
mirror of https://github.com/seiichiro0185/sailotp.git synced 2024-11-21 23:39:41 +00:00

Finalized favourites feature

* Favourite is now shown on the ActiveCover
* Added possibility to "unstar" a favourite
This commit is contained in:
seiichiro 2014-01-10 19:20:52 +01:00
parent eb08a4eee1
commit 7f781b8d90
4 changed files with 85 additions and 13 deletions

View file

@ -29,11 +29,39 @@
import QtQuick 2.0
import Sailfish.Silica 1.0
import "../lib/crypto.js" as OTP
// Define the Layout of the Active Cover
CoverBackground {
id: coverPage
// Show the SailOTP Logo
property double lastUpdated: 0
Timer {
interval: 1000
// Timer runs only when cover is visible and favourite is set
running: !Qt.application.active && appWin.coverSecret != ""
repeat: true
onTriggered: {
// get seconds from current Date
var curDate = new Date();
if (lOTP.text == "" || curDate.getSeconds() == 30 || curDate.getSeconds() == 0 || (curDate.getTime() - lastUpdated > 2000)) {
appWin.coverOTP = OTP.calcOTP(appWin.coverSecret);
}
// Change color of the OTP to red if less than 5 seconds left
if (29 - (curDate.getSeconds() % 30) < 5) {
lOTP.color = "red"
} else {
lOTP.color = Theme.highlightColor
}
lastUpdated = curDate.getTime();
}
}
// Show the SailOTP Logo
Image {
id: logo
source: "../sailotp.png"
@ -42,10 +70,22 @@ CoverBackground {
anchors.topMargin: 48
}
// Show the Application Name
Label {
id: label
anchors.centerIn: parent
text: "SailOTP"
Column {
anchors.top: logo.bottom
anchors.topMargin: 48
anchors.horizontalCenter: parent.horizontalCenter
Label {
text: appWin.coverTitle
anchors.horizontalCenter: parent.horizontalCenter
color: Theme.secondaryColor
}
Label {
id: lOTP
text: appWin.coverOTP
anchors.horizontalCenter: parent.horizontalCenter
color: Theme.highlightColor
font.pixelSize: Theme.fontSizeExtraLarge
}
}
}

View file

@ -33,6 +33,13 @@ import "pages"
ApplicationWindow
{
id: appWin
// Properties to pass values between MainPage and Cover
property string coverTitle: "SailOTP"
property string coverSecret: ""
property string coverOTP: ""
initialPage: Component { MainView { } }
cover: Qt.resolvedUrl("cover/CoverPage.qml")
}

View file

@ -68,6 +68,7 @@ function getOTP() {
var res = tx.executeSql("select * from OTPStorage;");
for (var i=0; i < res.rows.length; i++) {
mainPage.appendOTP(res.rows.item(i).title, res.rows.item(i).secret, res.rows.item(i).type, res.rows.item(i).counter, res.rows.item(i).fav);
if (res.rows.item(i).fav) mainPage.setCoverOTP(res.rows.item(i).title, res.rows.item(i).secret);
}
}
)
@ -106,6 +107,16 @@ function setFav(title, secret) {
)
}
function resetFav(title, secret) {
var db = getDB();
db.transaction(
function(tx) {
tx.executeSql("UPDATE OTPStorage set fav = 0");
}
)
}
// Change an existing OTP
function changeOTP(title, secret, oldtitle, oldsecret) {
var db = getDB();

View file

@ -41,13 +41,20 @@ Page {
}
// This holds the time of the last update of the page as Unix Timestamp (in Milliseconds)
property double lastUpdated: null
property double lastUpdated: 0
// Add an entry to the list
function appendOTP(title, secret, type, counter, fav) {
otpListModel.append({"secret": secret, "title": title, "fav": fav, "otp": ""});
}
// Hand favorite over to the cover
function setCoverOTP(title, secret) {
appWin.coverTitle = title
appWin.coverSecret = secret
if (secret == "") appWin.coverOTP = ""
}
// Reload the List of OTPs from storage
function refreshOTPList() {
otpList.visible = false;
@ -146,13 +153,20 @@ Page {
icon.source: fav == 1 ? "image://theme/icon-m-favorite-selected" : "image://theme/icon-m-favorite"
anchors.left: parent.left
onClicked: {
DB.setFav(title, secret)
for (var i=0; i<otpListModel.count; i++) {
if (i != index) {
otpListModel.setProperty(i, "fav", 0);
} else {
otpListModel.setProperty(i, "fav", 1);
if (fav == 0) {
DB.setFav(title, secret)
setCoverOTP(title, secret)
for (var i=0; i<otpListModel.count; i++) {
if (i != index) {
otpListModel.setProperty(i, "fav", 0);
} else {
otpListModel.setProperty(i, "fav", 1);
}
}
} else {
DB.resetFav(title, secret)
setCoverOTP("SailOTP", "")
otpListModel.setProperty(index, "fav", 0);
}
}
}