summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhilipp Andreas <github@smurfy.de>2014-07-22 19:17:53 +0200
committerPhilipp Andreas <github@smurfy.de>2014-07-22 19:49:07 +0200
commitc2c141ed1e13e6f0fbc740d0ff37caba0b2a7c08 (patch)
treea7892e105c85c7d4a32d3b3202e60ec2131e42c8
parentc9c1ed9faee07c0067827872ffe465d465c81470 (diff)
parent9f8db04d6059e0b220e36a064d694a1b0649f5f0 (diff)
Merge branch 'master' into notifications
Conflicts: daemon/daemon.cpp daemon/manager.cpp daemon/manager.h
-rw-r--r--README.md1
-rw-r--r--app/app.pro4
-rw-r--r--app/pebble.cpp9
-rw-r--r--app/qml/images/btn_donate.pngbin0 -> 155389 bytes
-rw-r--r--app/qml/pages/AboutPage.qml68
-rw-r--r--app/qml/pages/ManagerPage.qml8
-rw-r--r--daemon/daemon.cpp4
-rw-r--r--daemon/daemon.pro2
-rw-r--r--daemon/manager.cpp53
-rw-r--r--daemon/manager.h4
-rw-r--r--rpm/pebble.spec5
-rw-r--r--rpm/pebble.yaml4
12 files changed, 154 insertions, 8 deletions
diff --git a/README.md b/README.md
index bfd2f55..82b3e77 100644
--- a/README.md
+++ b/README.md
@@ -14,6 +14,7 @@ Features
* Voice Calls notification and control
* SMS, IM Messages forwarding
* MPRIS compatible media player support
+* Set "silent" profile when watch is connected
* daemon management app
* "org.pebbled" DBus interface
diff --git a/app/app.pro b/app/app.pro
index 48aff06..cb4c33b 100644
--- a/app/app.pro
+++ b/app/app.pro
@@ -5,6 +5,8 @@ CONFIG += sailfishapp
QT += dbus
QMAKE_CXXFLAGS += -std=c++0x
+DEFINES += APP_VERSION=\\\"$$VERSION\\\"
+
SOURCES += \
pebble.cpp \
pebbledinterface.cpp
@@ -16,6 +18,8 @@ OTHER_FILES += \
qml/cover/CoverPage.qml \
qml/pages/ManagerPage.qml \
qml/pages/WatchPage.qml \
+ qml/pages/AboutPage.qml \
qml/pebble.qml \
+ qml/images/* \
pebble.desktop \
pebble.png
diff --git a/app/pebble.cpp b/app/pebble.cpp
index b2f4d09..44f1aeb 100644
--- a/app/pebble.cpp
+++ b/app/pebble.cpp
@@ -39,6 +39,13 @@ int main(int argc, char *argv[])
// Register Pebble daemon interface object on QML side
qmlRegisterType<PebbledInterface>("org.pebbled", 0, 1, "PebbledInterface");
- return SailfishApp::main(argc, argv);
+ QScopedPointer<QGuiApplication> app(SailfishApp::application(argc, argv));
+
+ QScopedPointer<QQuickView> view(SailfishApp::createView());
+ view->rootContext()->setContextProperty("APP_VERSION", APP_VERSION);
+ view->setSource(SailfishApp::pathTo("qml/pebble.qml"));
+ view->show();
+
+ return app->exec();
}
diff --git a/app/qml/images/btn_donate.png b/app/qml/images/btn_donate.png
new file mode 100644
index 0000000..3777e64
--- /dev/null
+++ b/app/qml/images/btn_donate.png
Binary files differ
diff --git a/app/qml/pages/AboutPage.qml b/app/qml/pages/AboutPage.qml
new file mode 100644
index 0000000..6d8d18e
--- /dev/null
+++ b/app/qml/pages/AboutPage.qml
@@ -0,0 +1,68 @@
+import QtQuick 2.0
+import QtQml 2.1
+import Sailfish.Silica 1.0
+
+Page {
+ id: page
+
+ SilicaFlickable {
+ anchors.fill: parent
+
+ contentHeight: column.height
+
+ Column {
+ id: column
+ width: page.width
+ spacing: Theme.paddingMedium
+
+ PageHeader {
+ title: "pebbled"
+ }
+ Label {
+ text: qsTr("Version ") + APP_VERSION
+ horizontalAlignment: Text.AlignRight
+ anchors {
+ left: parent.left
+ right: parent.right
+ margins: Theme.paddingLarge
+ }
+ }
+ Label {
+ color: Theme.highlightColor
+ width: parent.width
+ horizontalAlignment: Text.AlignHCenter
+ text: "© 2014 Tomasz Sterna / Xiaoka.com\nAll Rights Reserved."
+ }
+ Label {
+ wrapMode: Text.Wrap
+ anchors {
+ left: parent.left
+ right: parent.right
+ margins: Theme.paddingSmall
+ }
+ font.pixelSize: Theme.fontSizeTiny
+ horizontalAlignment: Text.AlignJustify
+ text: qsTr(
+"THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND "+
+"ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED "+
+"WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE "+
+"DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR "+
+"ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES "+
+"(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; "+
+"LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND "+
+"ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT "+
+"(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS "+
+"SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.")
+ }
+ IconButton {
+ anchors {
+ left: parent.left
+ right: parent.right
+ margins: Theme.paddingMedium
+ }
+ icon.source: "../images/btn_donate.png"
+ onClicked: Qt.openUrlExternally("https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=MAGN86VCARBSA")
+ }
+ }
+ }
+}
diff --git a/app/qml/pages/ManagerPage.qml b/app/qml/pages/ManagerPage.qml
index a6b6699..6f94e4b 100644
--- a/app/qml/pages/ManagerPage.qml
+++ b/app/qml/pages/ManagerPage.qml
@@ -45,9 +45,15 @@ Page {
SilicaFlickable {
anchors.fill: parent
-
contentHeight: column.height
+ PullDownMenu {
+ MenuItem {
+ text: qsTr("About")
+ onClicked: pageStack.push(Qt.resolvedUrl("AboutPage.qml"))
+ }
+ }
+
Column {
id: column
diff --git a/daemon/daemon.cpp b/daemon/daemon.cpp
index 1ab7b8c..e075c0c 100644
--- a/daemon/daemon.cpp
+++ b/daemon/daemon.cpp
@@ -70,8 +70,6 @@ void initLogging()
Log4Qt::LogManager::setHandleQtMessages(true);
qDebug() << "Using following log config file: " << usedConfigFile;
-
- Log4Qt::Logger::logger(QLatin1String("Main Logger"))->info("Logging started");
}
int main(int argc, char *argv[])
@@ -82,6 +80,8 @@ int main(int argc, char *argv[])
// QCoreApplication for determining the .conf files locations
initLogging();
+ Log4Qt::Logger::logger(QLatin1String("Main Logger"))->info() << argv[0] << APP_VERSION;
+
watch::WatchConnector watch;
DBusConnector dbus;
VoiceCallManager voice;
diff --git a/daemon/daemon.pro b/daemon/daemon.pro
index fb10771..df7b887 100644
--- a/daemon/daemon.pro
+++ b/daemon/daemon.pro
@@ -12,6 +12,8 @@ LIBS += -L$$OUT_PWD/../ext/Log4Qt/ -llog4qt
QMAKE_RPATHDIR += /usr/share/pebble/lib
INCLUDEPATH += ../ext/Log4Qt/src ../ext/Log4Qt/deploy/include
+DEFINES += APP_VERSION=\\\"$$VERSION\\\"
+
SOURCES += \
daemon.cpp \
manager.cpp \
diff --git a/daemon/manager.cpp b/daemon/manager.cpp
index efa5a28..41617e4 100644
--- a/daemon/manager.cpp
+++ b/daemon/manager.cpp
@@ -11,7 +11,7 @@ Manager::Manager(watch::WatchConnector *watch, DBusConnector *dbus, VoiceCallMan
{
connect(settings, SIGNAL(valueChanged(QString)), SLOT(onSettingChanged(const QString&)));
connect(settings, SIGNAL(valuesChanged()), SLOT(onSettingsChanged()));
- connect(settings, SIGNAL(silentWhenConnectedChanged()), SLOT(onSettingsChanged()));
+ //connect(settings, SIGNAL(silentWhenConnectedChanged(bool)), SLOT(onSilentWhenConnectedChanged(bool)));
// We don't need to handle presence changes, so report them separately and ignore them
QMap<QString, QString> parameters;
@@ -50,6 +50,10 @@ Manager::Manager(watch::WatchConnector *watch, DBusConnector *dbus, VoiceCallMan
connect(dbus, SIGNAL(pebbleChanged()), adaptor, SIGNAL(pebbleChanged()));
connect(watch, SIGNAL(connectedChanged()), adaptor, SIGNAL(connectedChanged()));
+ QString currentProfile = getCurrentProfile();
+ defaultProfile = currentProfile.isEmpty() ? "ambience" : currentProfile;
+ connect(watch, SIGNAL(connectedChanged()), SLOT(applyProfile()));
+
// Music Control interface
session.connect("", "/org/mpris/MediaPlayer2",
"org.freedesktop.DBus.Properties", "PropertiesChanged",
@@ -257,3 +261,50 @@ void Manager::setMprisMetadata(QVariantMap metadata)
mprisMetadata = metadata;
emit mprisMetadataChanged(mprisMetadata);
}
+
+QString Manager::getCurrentProfile()
+{
+ QDBusReply<QString> profile = QDBusConnection::sessionBus().call(
+ QDBusMessage::createMethodCall("com.nokia.profiled", "/com/nokia/profiled", "com.nokia.profiled", "get_profile"));
+ if (profile.isValid()) {
+ QString currentProfile = profile.value();
+ logger()->debug() << "Got profile" << currentProfile;
+ return currentProfile;
+ }
+
+ logger()->error() << profile.error().message();
+ return QString();
+}
+
+void Manager::applyProfile()
+{
+ QString currentProfile = getCurrentProfile();
+ QString newProfile;
+
+ if (settings->property("silentWhenConnected").toBool()) {
+ if (watch->isConnected() && currentProfile != "silent") {
+ newProfile = "silent";
+ defaultProfile = currentProfile;
+ }
+ if (!watch->isConnected() && currentProfile == "silent" && defaultProfile != "silent") {
+ newProfile = defaultProfile;
+ }
+ }
+ else if (currentProfile != defaultProfile) {
+ newProfile = defaultProfile;
+ }
+
+ if (!newProfile.isEmpty()) {
+ QDBusReply<bool> res = QDBusConnection::sessionBus().call(
+ QDBusMessage::createMethodCall("com.nokia.profiled", "/com/nokia/profiled", "com.nokia.profiled", "set_profile")
+ << newProfile);
+ if (res.isValid()) {
+ if (!res.value()) {
+ logger()->error() << "Unable to set profile" << newProfile;
+ }
+ }
+ else {
+ logger()->error() << res.error().message();
+ }
+ }
+}
diff --git a/daemon/manager.h b/daemon/manager.h
index 16e3cbf..9a82603 100644
--- a/daemon/manager.h
+++ b/daemon/manager.h
@@ -46,12 +46,15 @@ class Manager :
QContactManager *contacts;
QContactDetailFilter numberFilter;
+ QString defaultProfile;
+
QString lastSeenMpris;
public:
explicit Manager(watch::WatchConnector *watch, DBusConnector *dbus, VoiceCallManager *voice, NotificationManager *notifications, Settings *settings);
Q_INVOKABLE QString findPersonByNumber(QString number);
+ Q_INVOKABLE QString getCurrentProfile();
Q_INVOKABLE QString mpris();
QVariantMap mprisMetadata;
QVariantMap getMprisMetadata() { return mprisMetadata; }
@@ -61,6 +64,7 @@ signals:
public slots:
void hangupAll();
+ void applyProfile();
protected slots:
void onSettingChanged(const QString &key);
diff --git a/rpm/pebble.spec b/rpm/pebble.spec
index eaf223f..71d5d46 100644
--- a/rpm/pebble.spec
+++ b/rpm/pebble.spec
@@ -13,7 +13,7 @@ Name: pebble
%{!?qtc_make:%define qtc_make make}
%{?qtc_builddir:%define _builddir %qtc_builddir}
Summary: Support for Pebble watch in SailfishOS
-Version: 0.6
+Version: 0.7
Release: 1
Group: Qt/Qt
License: BSD
@@ -46,7 +46,8 @@ Include support for Pebble watch to receive event from SailfishOS device. Commun
# >> build pre
# << build pre
-%qtc_qmake5
+%qtc_qmake5 \
+ VERSION='%{version}-%{release}'
%qtc_make %{?_smp_mflags}
diff --git a/rpm/pebble.yaml b/rpm/pebble.yaml
index c8979ad..4934f05 100644
--- a/rpm/pebble.yaml
+++ b/rpm/pebble.yaml
@@ -1,6 +1,6 @@
Name: pebble
Summary: Support for Pebble watch in SailfishOS
-Version: 0.6
+Version: 0.7
Release: 1
Group: Qt/Qt
URL: http://getpebble.com/
@@ -11,6 +11,8 @@ Description: |
Include support for Pebble watch to receive event from SailfishOS device. Communicates via Bluetooth, supporting the Pebble protocol.
Configure: none
Builder: qtc5
+QMakeOptions:
+- VERSION='%{version}-%{release}'
PkgConfigBR:
- Qt5DBus
- Qt5Bluetooth