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 22c3060..dedf13a 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 9505799..a24b35d 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 d1411f9..88ff0e9 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 c150231..09eb2f3 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 a997dbf..9065816 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 ac99380..e8aaab2 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 977baea..5a6d643 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 c4b7466..c55b121 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();