MAEMO: work on alarm
authorpavelpa <pavelpa@localhost>
Wed, 20 Jan 2010 15:27:11 +0000 (15:27 +0000)
committerpavelpa <pavelpa@localhost>
Wed, 20 Jan 2010 15:27:11 +0000 (15:27 +0000)
 - snooze alarm
 - cancel alarm
 - run application which automatically display Event dialog for given Event ID

src/alarm/alarm.cpp
src/app/main.cpp
src/gui/alarmdialog.cpp
src/gui/alarmdialog.ui
src/gui/eventdialog.cpp
src/gui/eventdialog.h
src/gui/mainwindow.cpp
src/gui/mainwindow.h

index 22c3060919f1596eb55a90adf09e860df55d7c24..dedf13aa43718913f6459f2a62dc6e8d8328c782 100644 (file)
@@ -2,6 +2,9 @@
 
 #include <QDateTime>
 
+#include <QApplication>
+#include <QDir>
+
 int Alarm::addAlarm(int aEventId, const QDateTime &aDateTime)
 {
     cookie_t cookie = 0;
@@ -18,7 +21,7 @@ int Alarm::addAlarm(int aEventId, const QDateTime &aDateTime)
 
     /* Add exec command action */
     action = alarm_event_add_actions(event, 1);
-    QString command = QString("/home/maemo/work/fosdem-maemo/bin/fosdem %1").arg(QString::number(aEventId));
+    QString command = QDir::currentPath() + "/" + *qApp->argv() + QString(" %1").arg(QString::number(aEventId));
     alarm_action_set_exec_command(action, command.toLocal8Bit().data());
     action->flags |= ALARM_ACTION_TYPE_EXEC;
     action->flags |= ALARM_ACTION_WHEN_TRIGGERED;
index 9505799e0559ab9cae1410c9ba981421290995f0..a24b35dcba2d961177e913bdf8b59230e57e93ce 100644 (file)
@@ -22,6 +22,8 @@ int main(int argc, char *argv[])
     // Example: $ ./fosdem 521 13
     if(argc==3) 
         window = new AlarmDialog(argc,argv);
+    else if(argc==2) // display Event dialog automatically
+        window = new MainWindow(atoi(argv[1])); // eventId = argv[1]
     else
         window = new MainWindow;
 #else
index d1411f97308b01364ab8a64c006f6f900b29522a..88ff0e924829826dbed138849a1673257104b60d 100644 (file)
@@ -5,6 +5,7 @@
 #include <event.h>
 
 #include <QDir>
+#include <QProcess>
 
 const int SNOOZE_TIME = 5; // in minutes
 
@@ -47,7 +48,9 @@ AlarmDialog::AlarmDialog(int argc, char *argv[], QWidget *aParent)
 
 void AlarmDialog::runApp()
 {
-    qWarning("runApp(): NOT IMPLEMENTED YET");
+    QString program = QDir::currentPath() + "/" + *qApp->argv();
+    QProcess::startDetached(program,QStringList()<<QString::number(mEventId));
+    qApp->quit();
 }
 
 void AlarmDialog::snooze()
index c1502313eca71af1c57b9c49f7d541fb2264cf7b..09eb2f3330c88b70f27bdb0225a61fc4545a798e 100644 (file)
@@ -68,7 +68,7 @@
        <item>
         <widget class="QPushButton" name="stopPB" >
          <property name="text" >
-          <string>Stop</string>
+          <string>Cancel</string>
          </property>
         </widget>
        </item>
index a997dbf6c04d5ea9b452e9ff797672180abcfa4d..90658161403ed0d6eba2fc5f6f5954e1fda78f04 100644 (file)
@@ -2,12 +2,15 @@
 
 #include <QScrollBar>
 
-EventDialog::EventDialog(const QModelIndex &aIndex, QWidget *aParent)
+EventDialog::EventDialog(const int &aEventId, QWidget *aParent)
     : QDialog(aParent)
-    , mIndex(aIndex)
+    , mEventId(aEventId)
 {
     setupUi(this);
 
+    const int confId = 1;
+    Event event = Event::getById(aEventId,confId);
+
     abstract->setStyleSheet("background-color : transparent;");
     description->setStyleSheet("background-color : transparent;");
 
@@ -27,10 +30,9 @@ EventDialog::EventDialog(const QModelIndex &aIndex, QWidget *aParent)
     abstract->verticalScrollBar()->setPalette(p2);
     description->verticalScrollBar()->setPalette(p2);
 
-    Event *event = static_cast<Event *>(mIndex.internalPointer());
-    title->setText(event->title());
-    persons->setText(event->persons().join(" and "));
-    abstract->setPlainText(event->abstract());
-    description->setPlainText(event->description());
+    title->setText(event.title());
+    persons->setText(event.persons().join(" and "));
+    abstract->setPlainText(event.abstract());
+    description->setPlainText(event.description());
 }
 
index ac9938085b83e8e52ea93b5459e2426c026eadec..e8aaab24b4db03d37d1b7c91db8217deff242288 100644 (file)
@@ -2,17 +2,16 @@
 #define EVENTDIALOG_H
 
 #include <QDialog>
-#include <QModelIndex>
 #include "ui_eventdialog.h"
 #include <event.h>
 
 class EventDialog : public QDialog, Ui::EventDialog
 { 
 public:
-    EventDialog(const QModelIndex &aIndex, QWidget *aParent = NULL);
+    EventDialog(const int &aEventId, QWidget *aParent = NULL);
     ~EventDialog() {}
 private:
-    QModelIndex mIndex;
+    int mEventId;
 };
 
 #endif /* EVENTDIALOG_H */
index 977baea90f1fc1e5f5c8706f1442be8bde90af86..5a6d643b0df51df43870cfffafba47a43a8c7282 100644 (file)
@@ -20,8 +20,8 @@
 
 const int confId = 1;
 
-MainWindow::MainWindow(QWidget *parent)
-    : QMainWindow(parent)
+MainWindow::MainWindow(int aEventId, QWidget *aParent)
+    : QMainWindow(aParent)
 {
     setupUi(this);
 
@@ -115,6 +115,13 @@ MainWindow::MainWindow(QWidget *parent)
 
     connect(tabWidget, SIGNAL(currentChanged(int)), this, SLOT(updateTab(int)));
 
+    // open dialog for given Event ID
+    // this is used in case Alarm Dialog request application to start
+    if(aEventId)
+    {
+        EventDialog dialog(aEventId,this);
+        dialog.exec();
+    }
 }
 
 MainWindow::~MainWindow()
@@ -228,7 +235,7 @@ void MainWindow::itemClicked(const QModelIndex &aIndex)
     if(!aIndex.parent().isValid()) // time-group
         return;
 
-    EventDialog dialog(aIndex,this);
+    EventDialog dialog(static_cast<Event*>(aIndex.internalPointer())->id(),this);
     dialog.exec();
 }
 
index c4b74660e03ee89162d2364781b9d160ebbeb03a..c55b1212bece7022e05ae8c4c15d10aba7584d57 100644 (file)
@@ -12,7 +12,9 @@ class MainWindow : public QMainWindow, private Ui::MainWindow
 {
     Q_OBJECT
 public:
-    MainWindow(QWidget *parent = 0);
+    // aEventId is used to inform widget to automatically open
+    // Event dialog for given Event ID
+    MainWindow(int aEventId = 0, QWidget *aParent = NULL);
     ~MainWindow();
 private slots:
     void importSchedule();