Ubuntu QML Alarm 无法正常工作

Ubuntu QML Alarm 无法正常工作

我一直在尝试创建一个能够设置系统闹钟的简单应用。但是,尽管我可以在活动列表在我的时钟指示器(在桌面上)下,它根本没有通知我。

如果我在与上一个闹钟相关的分钟内创建一个新闹钟,而旧闹钟仍然在活动列表,旧的闹钟突然通知我(通知 + 声音)。我没有使用任何闹钟列表,我只想一次设置一个闹钟,但我希望能够取消正在进行的闹钟。它工作正常,直到当前时间等于闹钟时间(四舍五入到分钟),此时从逻辑上删除闹钟不起作用,因为它的时间格式是“2013-09-17 星期二 10:56:00”(秒始终为零),所以它在那一分钟内已经过去了,但它仍然在活动列表(好的,它属于那一分钟)并且如果我设置了新闹钟它会通知我(这是我不明白的)。

总结一下:

  • 设置闹钟无法正常工作,我可以在列表中看到它,但它根本没有通知我(即使一分钟过去了,它也会从列表中消失活动列表)。
  • 如果其时间等于当前时间(以分钟为单位),并且我在该时间设置了新闹钟,则旧闹钟会突然唤醒并通知我。
    • 另一件奇怪的事情是,当我这样做时,屏幕上会显示旧播放闹钟的完整日期活动列表,如“星期二 10:56”或“09-17 10:56”,而如果我设置了新闹钟,则只会显示没有日期的时间,如“10:56”。

甚至 Ubuntu Developer web 上的示例也不起作用: http://developer.ubuntu.com/api/qml/sdk-14.10/Ubuntu.Components.Alarm/

这是我修改过的部分代码,存在同样的错误:

import QtQuick 2.3
import Ubuntu.Components 1.1
import Ubuntu.Components.Pickers 0.1

MainView {
    objectName: "mainView"
    applicationName: "com.ubuntu.developer.username.alarmtest"
    useDeprecatedToolbar: false

    width: units.gu(100)
    height: units.gu(75)

    Page {
        title: i18n.tr("Simple")

        Alarm{
            id: alarm
            onStatusChanged: {
                if(status == Alarm.Ready) {
                    button.text = "Set Alarm";
                }
            }
        }

        Column {
            spacing: units.gu(1)
            Row {
                spacing: units.gu(1)
                Label {
                    id: date
                    text: "Date:"
                    anchors.verticalCenter: parent.verticalCenter
                }
                DatePicker {
                    id: datePicker
                    date: new Date()
                    mode: "Hours|Minutes"
                    onDateChanged: {
                        var pickerDate = datePicker.date;
                        pickerDate.setSeconds(0);
                        datePicker.date = pickerDate;
                    }
                }
                Button {
                    id: button
                    text: "Set Alarm";
                    onClicked: {
                        if ((alarm.operation > Alarm.NoOperation) && (alarm.operation < Alarm.Reseting)) {
                            reset();
                        }
                        else {
                            alarm.date = new Date(datePicker.date);
                            alarm.message = "My alarm";
                            alarm.save();
                            if (alarm.error != Alarm.NoError)
                                print("Error saving alarm, code: " + alarm.error + " at time " + alarm.date);
                            text = "Unset Alarm";
                        }
                    }
                }
            }
        }
    }
}

我的问题是,它不起作用是正常的吗,还是我做错了什么?非常感谢您的帮助,因为我现在完全迷失了方向。我正在探索库存时钟应用程序闹钟的东西,试图修改官方示例代码,但没有帮助——它对我来说从来都不起作用。在桌面 Ubuntu 14.10 上,它有缺陷,在我的 Ubuntu 平板电脑上,如果我在旧闹钟完成或删除后尝试设置新闹钟,我的应用程序会冻结。

相关内容