aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorq5sys <jt@obs-sec.com>2017-03-09 11:44:41 -0500
committerq5sys <jt@obs-sec.com>2017-03-09 11:44:41 -0500
commit5a1a8b47ea784cc004f6e0e00d92e68204515364 (patch)
tree3f573c38a129b1618198a44a72c0928acd4be1a4
parentMerge branch 'master' of http://github.com/trueos/lumina (diff)
downloadlumina-5a1a8b47ea784cc004f6e0e00d92e68204515364.tar.gz
lumina-5a1a8b47ea784cc004f6e0e00d92e68204515364.tar.bz2
lumina-5a1a8b47ea784cc004f6e0e00d92e68204515364.zip
add alarm panel-plugin
-rw-r--r--src-qt5/core/lumina-desktop/panel-plugins/alarm/main.cpp18
-rw-r--r--src-qt5/core/lumina-desktop/panel-plugins/alarm/mainwindow.cpp149
-rw-r--r--src-qt5/core/lumina-desktop/panel-plugins/alarm/mainwindow.h68
-rw-r--r--src-qt5/core/lumina-desktop/panel-plugins/alarm/mainwindow.ui118
-rw-r--r--src-qt5/core/lumina-desktop/panel-plugins/alarm/media.qrc9
-rw-r--r--src-qt5/core/lumina-desktop/panel-plugins/alarm/media/alarm.mp3bin0 -> 30192 bytes
-rw-r--r--src-qt5/core/lumina-desktop/panel-plugins/alarm/media/ic_alarm_48px.svg1
-rw-r--r--src-qt5/core/lumina-desktop/panel-plugins/alarm/media/ic_alarm_add_48px.svg1
-rw-r--r--src-qt5/core/lumina-desktop/panel-plugins/alarm/media/ic_alarm_off_48px.svg1
-rw-r--r--src-qt5/core/lumina-desktop/panel-plugins/alarm/media/ic_alarm_on_48px.svg1
-rw-r--r--src-qt5/core/lumina-desktop/panel-plugins/alarm/trayalarm.pro24
11 files changed, 390 insertions, 0 deletions
diff --git a/src-qt5/core/lumina-desktop/panel-plugins/alarm/main.cpp b/src-qt5/core/lumina-desktop/panel-plugins/alarm/main.cpp
new file mode 100644
index 00000000..b103c4cb
--- /dev/null
+++ b/src-qt5/core/lumina-desktop/panel-plugins/alarm/main.cpp
@@ -0,0 +1,18 @@
+//===========================================
+// qalarm source code
+// Copyright (c) 2017, q5sys
+// Available under the MIT License
+// See the LICENSE file for full details
+//===========================================
+
+#include "mainwindow.h"
+#include <QApplication>
+
+int main(int argc, char *argv[])
+{
+ QApplication a(argc, argv);
+ mainWindow w;
+ w.show();
+
+ return a.exec();
+}
diff --git a/src-qt5/core/lumina-desktop/panel-plugins/alarm/mainwindow.cpp b/src-qt5/core/lumina-desktop/panel-plugins/alarm/mainwindow.cpp
new file mode 100644
index 00000000..17d9ec6f
--- /dev/null
+++ b/src-qt5/core/lumina-desktop/panel-plugins/alarm/mainwindow.cpp
@@ -0,0 +1,149 @@
+//===========================================
+// qalarm source code
+// Copyright (c) 2017, q5sys
+// Available under the MIT License
+// See the LICENSE file for full details
+//===========================================
+
+#include "mainwindow.h"
+#include "ui_mainwindow.h"
+//#include "ui_snooze.h"
+#include <QMenu>
+#include <QtMultimedia/QMediaPlayer>
+#include <QCloseEvent>
+#include <QDebug>
+
+mainWindow::mainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::mainWindow){
+ ui->setupUi(this);
+ trayIcon=new QSystemTrayIcon(this);
+ trayIconMenu=new QMenu(this);
+ QAction *actionShow=new QAction("&Show",this);
+ QAction *actionQuit=new QAction("&Quit",this);
+
+ trayIconMenu->addAction(actionShow);
+ trayIconMenu->addSeparator();
+ trayIconMenu->addAction(actionQuit);
+ trayIcon->setContextMenu(trayIconMenu);
+ trayIcon->setIcon(QIcon(":/media/alarm.svg"));
+ trayIcon->setToolTip("Alarm");
+ trayIcon->show();
+ setClock();
+
+ connect(actionQuit,SIGNAL(triggered()),this,SLOT(quitApp()));
+ connect(actionShow,SIGNAL(triggered()),this,SLOT(showWindow()));
+ connect(trayIcon,SIGNAL(activated(QSystemTrayIcon::ActivationReason)),this,SLOT(ShowWindow(QSystemTrayIcon::ActivationReason)));
+ connect(ui->pushButtonActivate,SIGNAL(clicked()),this,SLOT(SetCustomTime()));
+ connect(ui->pushButtonTest, SIGNAL(clicked()), this,SLOT(testAlarm()));
+// QTimer *countDownTimer = new QTimer(this); // This alarm not written yet.
+// connect (countDownTimer, SIGNAL(timeout()), this, SLOT(tripAlarm()));
+
+ //Set Volume
+ int volume = 25;
+ ui->volumeSlider->setValue(volume<=0? 50:volume);
+}
+
+mainWindow::~mainWindow(){
+ delete ui;
+}
+
+void mainWindow::closeEvent(QCloseEvent * event){
+ event->ignore();
+ this->hide();
+}
+
+void mainWindow::tripAlarm(){
+ QMessageBox *alarmBox = new QMessageBox;
+ alarmBox->setText(tr("ALARM"));
+ alarmFile = new QMediaPlayer(this);
+ alarmFile->setMedia(QUrl::fromLocalFile(":/media/alarm.mp3"));
+ alarmFile->setVolume(volume);
+ alarmFile->play();
+ QAbstractButton* pushButtonStop = alarmBox->addButton(tr("Stop Alarm"), QMessageBox::YesRole);
+ alarmBox->addButton(tr("Snooze for 5 Minutes"), QMessageBox::NoRole);
+ alarmBox->exec();
+ if (alarmBox->clickedButton()==pushButtonStop){
+ alarmFile->stop();
+ }
+ else{
+ alarmFile->stop();
+ QTimer *snoozeabit = new QTimer(this);
+ connect(snoozeabit,SIGNAL(timeout()), this, SLOT(tripAlarm()));
+ snoozeabit->start(50000);
+ }
+}
+
+void mainWindow::testAlarm(){
+ QMessageBox *alarmTestBox = new QMessageBox;
+ alarmTestBox->setText("Ba Doop A Doop");
+ alarmFile = new QMediaPlayer(this);
+ alarmFile->setMedia(QUrl(":/media/alarm.mp3"));
+ alarmFile->setVolume(volume);
+ alarmFile->play();
+ QAbstractButton* pushButtonStop = alarmTestBox->addButton(tr("Stop Alarm"), QMessageBox::YesRole);
+ alarmTestBox->addButton(tr("Snooze for 5 Minutes"), QMessageBox::NoRole);
+ alarmTestBox->exec();
+ if (alarmTestBox->clickedButton()==pushButtonStop){
+ alarmFile->stop();
+ }
+ else{
+ alarmFile->stop();
+ QTimer *snoozeabit = new QTimer(this);
+ connect(snoozeabit,SIGNAL(timeout()), this, SLOT(tripAlarm()));
+ snoozeabit->start(50000);
+ }
+ }ur ue.
+
+void mainWindow::setClock(){
+ //Sync Clock in App with System Clock
+ QTimer *CurrentTime=new QTimer(this);
+ connect(CurrentTime,SIGNAL(timeout()),this,SLOT(syncClock()));
+ CurrentTime->start(500);
+}
+
+void mainWindow::showWindow(QSystemTrayIcon::ActivationReason Reason){
+ if(Reason==QSystemTrayIcon::DoubleClick || Reason==QSystemTrayIcon::Trigger)
+ {
+ showWindow();
+ }
+}
+
+void mainWindow::showWindow(){
+ this->show();
+}
+
+void mainWindow::setCustomTime()
+{
+ ui->alarmDateTime->setDate(ui->calendarWidget->selectedDate());
+ qDebug() << "selected date" << ui->calendarWidget->selectedDate();
+ customDateTime.setTime(ui->alarmDateTime->time()); //this is not working yet
+ customDateTime.setDate(ui->calendarWidget->selectedDate()); //this is not working yet
+ qDebug() << "customDateTime" << customDateTime.toString("d MMMM yyyy hh:mm:ss");
+ userDateTime = customDateTime.toString("d MMMM yyyy hh:mm:ss");
+ qDebug() << "userDateTime" << userDateTime;
+ qDebug() << "nowtime" << QDateTime::currentDateTime().toString("d MMMM yyyy hh:mm:ss");
+ startTimer();
+}
+
+void mainWindow::startTimer(){
+ QTimer *rechecktimer = new QTimer(this);
+ connect(rechecktimer,SIGNAL(timeout()),this,SLOT(alarmCheck()));
+ qDebug() << "Timer Started";
+ rechecktimer->start(1000);
+}
+
+void mainWindow::alarmCheck(){
+ nowDateTime = QDateTime::currentDateTime().toString("d MMMM yyyy hh:mm:ss");
+ qDebug() << "nowDateTime" << nowDateTime;
+ qDebug() << "userDateTime" << userDateTime;
+ qDebug() << "customDateTime" << customDateTime.toString("d MMMM yyyy hh:mm:ss");
+ if(nowDateTime==userDateTime){tripAlarm();}
+ }
+
+void mainWindow::quitApp(){
+ qApp->quit();
+}
+
+void mainWindow::syncClock(){
+ ui->currentClock->setText(QDateTime::currentDateTime().toString("hh:mm:ss ap"));
+}
+
diff --git a/src-qt5/core/lumina-desktop/panel-plugins/alarm/mainwindow.h b/src-qt5/core/lumina-desktop/panel-plugins/alarm/mainwindow.h
new file mode 100644
index 00000000..258b187a
--- /dev/null
+++ b/src-qt5/core/lumina-desktop/panel-plugins/alarm/mainwindow.h
@@ -0,0 +1,68 @@
+//===========================================
+// qalarm source code
+// Copyright (c) 2017, q5sys
+// Available under the MIT License
+// See the LICENSE file for full details
+//===========================================
+
+
+#ifndef MAINWINDOW_H
+#define MAINWINDOW_H
+
+#include <QMainWindow>
+#include <QDateTime>
+#include <QDialog>
+#include <QTimer>
+#include <QString>
+#include <QSystemTrayIcon>
+#include <QMessageBox>
+#include <QObject>
+#include <QSettings>
+#include <QMediaPlayer>
+#include <QDir>
+
+namespace Ui {
+class mainWindow;
+}
+
+class mainWindow : public QMainWindow
+{
+ Q_OBJECT
+
+public:
+ explicit mainWindow(QWidget *parent = 0);
+ ~mainWindow();
+
+ QDateTime customDateTime;
+ QString nowDateTime;
+ QString userDateTime;
+ int volume;
+
+public slots:
+// void setVolume(int);
+ void setCustomTime();
+
+private:
+ Ui::mainWindow *ui;
+ QSystemTrayIcon *trayIcon;
+ QMenu *trayIconMenu;
+ QTimer *rechecktimer;
+ QMediaPlayer *alarmFile;
+ QString alarmFilePath;
+ void closeEvent(QCloseEvent*);
+ void setClock();
+
+private slots:
+ void showWindow();
+ void showWindow(QSystemTrayIcon::ActivationReason);
+ void quitApp();
+ void testAlarm();
+ void syncClock();
+ void alarmCheck();
+ void tripAlarm();
+ void startTimer();
+};
+
+#endif // MAINWINDOW_H
+
+
diff --git a/src-qt5/core/lumina-desktop/panel-plugins/alarm/mainwindow.ui b/src-qt5/core/lumina-desktop/panel-plugins/alarm/mainwindow.ui
new file mode 100644
index 00000000..01f827b2
--- /dev/null
+++ b/src-qt5/core/lumina-desktop/panel-plugins/alarm/mainwindow.ui
@@ -0,0 +1,118 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>mainWindow</class>
+ <widget class="QMainWindow" name="mainWindow">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>408</width>
+ <height>623</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>mainWindow</string>
+ </property>
+ <widget class="QWidget" name="centralWidget">
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <item>
+ <widget class="QGroupBox" name="groupBox">
+ <property name="enabled">
+ <bool>true</bool>
+ </property>
+ <property name="acceptDrops">
+ <bool>false</bool>
+ </property>
+ <property name="autoFillBackground">
+ <bool>false</bool>
+ </property>
+ <property name="title">
+ <string>Current Time:</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignCenter</set>
+ </property>
+ <property name="flat">
+ <bool>false</bool>
+ </property>
+ <property name="checkable">
+ <bool>false</bool>
+ </property>
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <item>
+ <widget class="QLabel" name="currentClock">
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>0</height>
+ </size>
+ </property>
+ <property name="font">
+ <font>
+ <pointsize>26</pointsize>
+ </font>
+ </property>
+ <property name="frameShadow">
+ <enum>QFrame::Sunken</enum>
+ </property>
+ <property name="text">
+ <string>TextLabel</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignCenter</set>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item>
+ <widget class="QCalendarWidget" name="calendarWidget"/>
+ </item>
+ <item>
+ <widget class="QDateTimeEdit" name="alarmDateTime">
+ <property name="displayFormat">
+ <string>d MMM yyyy hh:mm:ss:AP</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout_2">
+ <item>
+ <widget class="QLabel" name="labelVolume">
+ <property name="text">
+ <string>Volume</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QSlider" name="volumeSlider">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="pushButtonTest">
+ <property name="text">
+ <string>Test</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <widget class="QPushButton" name="pushButtonActivate">
+ <property name="text">
+ <string>Activate</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <widget class="QStatusBar" name="statusBar"/>
+ </widget>
+ <layoutdefault spacing="6" margin="11"/>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/src-qt5/core/lumina-desktop/panel-plugins/alarm/media.qrc b/src-qt5/core/lumina-desktop/panel-plugins/alarm/media.qrc
new file mode 100644
index 00000000..ff8c652d
--- /dev/null
+++ b/src-qt5/core/lumina-desktop/panel-plugins/alarm/media.qrc
@@ -0,0 +1,9 @@
+<RCC>
+ <qresource prefix="/media">
+ <file alias="alarm.svg">media/ic_alarm_48px.svg</file>
+ <file alias="alarm_add.svg">media/ic_alarm_add_48px.svg</file>
+ <file alias="alarm_off.svg">media/ic_alarm_off_48px.svg</file>
+ <file alias="alarm_on.svg">media/ic_alarm_on_48px.svg</file>
+ <file alias="alarm.mp3">media/alarm.mp3</file>
+ </qresource>
+</RCC>
diff --git a/src-qt5/core/lumina-desktop/panel-plugins/alarm/media/alarm.mp3 b/src-qt5/core/lumina-desktop/panel-plugins/alarm/media/alarm.mp3
new file mode 100644
index 00000000..fb660393
--- /dev/null
+++ b/src-qt5/core/lumina-desktop/panel-plugins/alarm/media/alarm.mp3
Binary files differ
diff --git a/src-qt5/core/lumina-desktop/panel-plugins/alarm/media/ic_alarm_48px.svg b/src-qt5/core/lumina-desktop/panel-plugins/alarm/media/ic_alarm_48px.svg
new file mode 100644
index 00000000..1a5c5397
--- /dev/null
+++ b/src-qt5/core/lumina-desktop/panel-plugins/alarm/media/ic_alarm_48px.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 0 48 48"><path d="M44 11.44l-9.19-7.71-2.57 3.06 9.19 7.71L44 11.44zM15.76 6.78l-2.57-3.06L4 11.43l2.57 3.06 9.19-7.71zM25 16h-3v12l9.49 5.71L33 31.24l-8-4.74V16zm-1.01-8C14.04 8 6 16.06 6 26s8.04 18 17.99 18S42 35.94 42 26 33.94 8 23.99 8zM24 40c-7.73 0-14-6.27-14-14s6.27-14 14-14 14 6.27 14 14-6.26 14-14 14z"/></svg> \ No newline at end of file
diff --git a/src-qt5/core/lumina-desktop/panel-plugins/alarm/media/ic_alarm_add_48px.svg b/src-qt5/core/lumina-desktop/panel-plugins/alarm/media/ic_alarm_add_48px.svg
new file mode 100644
index 00000000..b39d8b9d
--- /dev/null
+++ b/src-qt5/core/lumina-desktop/panel-plugins/alarm/media/ic_alarm_add_48px.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 0 48 48"><path d="M15.76 6.78l-2.57-3.06L4 11.43l2.57 3.06 9.19-7.71zM44 11.44l-9.19-7.71-2.57 3.06 9.19 7.71L44 11.44zM23.99 8C14.04 8 6 16.06 6 26s8.04 18 17.99 18S42 35.94 42 26 33.94 8 23.99 8zM24 40c-7.73 0-14-6.27-14-14s6.27-14 14-14 14 6.27 14 14-6.26 14-14 14zm2-22h-4v6h-6v4h6v6h4v-6h6v-4h-6v-6z"/></svg> \ No newline at end of file
diff --git a/src-qt5/core/lumina-desktop/panel-plugins/alarm/media/ic_alarm_off_48px.svg b/src-qt5/core/lumina-desktop/panel-plugins/alarm/media/ic_alarm_off_48px.svg
new file mode 100644
index 00000000..8a9f2d2d
--- /dev/null
+++ b/src-qt5/core/lumina-desktop/panel-plugins/alarm/media/ic_alarm_off_48px.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 0 48 48"><path d="M24 12c7.73 0 14 6.27 14 14 0 1.69-.31 3.3-.86 4.8l3.04 3.04C41.34 31.47 42 28.81 42 26c0-9.94-8.06-18-18.01-18-2.81 0-5.46.66-7.84 1.81l3.05 3.05c1.5-.55 3.11-.86 4.8-.86zm20-.56l-9.19-7.71-2.57 3.06 9.19 7.71L44 11.44zM5.84 4.59L3.29 7.13l2.66 2.66-2.22 1.86 2.84 2.84 2.22-1.86 1.6 1.6C7.66 17.39 6 21.5 6 26c0 9.94 8.04 18 17.99 18 4.51 0 8.62-1.67 11.77-4.4l4.4 4.4 2.54-2.55L7.79 6.54 5.84 4.59zm27.1 32.19C30.51 38.79 27.4 40 24 40c-7.73 0-14-6.27-14-14 0-3.4 1.21-6.51 3.22-8.94l19.72 19.72zM16.03 6.55l-2.84-2.84-1.7 1.43 2.84 2.84 1.7-1.43z"/></svg> \ No newline at end of file
diff --git a/src-qt5/core/lumina-desktop/panel-plugins/alarm/media/ic_alarm_on_48px.svg b/src-qt5/core/lumina-desktop/panel-plugins/alarm/media/ic_alarm_on_48px.svg
new file mode 100644
index 00000000..61f434df
--- /dev/null
+++ b/src-qt5/core/lumina-desktop/panel-plugins/alarm/media/ic_alarm_on_48px.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 0 48 48"><path d="M44 11.44l-9.19-7.71-2.57 3.06 9.19 7.71L44 11.44zM15.76 6.78l-2.57-3.06L4 11.43l2.57 3.06 9.19-7.71zM23.99 8C14.04 8 6 16.06 6 26s8.04 18 17.99 18S42 35.94 42 26 33.94 8 23.99 8zM24 40c-7.73 0-14-6.27-14-14s6.27-14 14-14 14 6.27 14 14-6.26 14-14 14zm-2.93-10.95l-4.24-4.24-2.12 2.12 6.36 6.36 12.01-12.01-2.12-2.12-9.89 9.89z"/></svg> \ No newline at end of file
diff --git a/src-qt5/core/lumina-desktop/panel-plugins/alarm/trayalarm.pro b/src-qt5/core/lumina-desktop/panel-plugins/alarm/trayalarm.pro
new file mode 100644
index 00000000..61480fc2
--- /dev/null
+++ b/src-qt5/core/lumina-desktop/panel-plugins/alarm/trayalarm.pro
@@ -0,0 +1,24 @@
+#===========================================
+# qalarm source code
+# Copyright (c) 2017, q5sys
+# Available under the -clause BSD license
+# See the LICENSE file for full details
+#===========================================
+
+QT += core gui multimedia
+
+greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
+
+TARGET = trayalarm
+TEMPLATE = app
+
+
+SOURCES += main.cpp\
+ mainwindow.cpp
+
+HEADERS += mainwindow.h
+
+FORMS += mainwindow.ui
+
+RESOURCES += \
+ media.qrc
bgstack15