First bunch of files
[nnokia.git] / mainwindow.cpp
1 // checksum 0xa193 version 0x30001
2 /*
3   This file was generated by the Mobile Qt Application wizard of Qt Creator.
4   MainWindow is a convenience class containing mobile device specific code
5   such as screen orientation handling.
6   It is recommended not to modify this file, since newer versions of Qt Creator
7   may offer an updated version of it.
8 */
9
10 #include <QtDebug>
11 #include <QtCore/QCoreApplication>
12 #include <QMessageService>
13 #include "mainwindow.h"
14 #include "ui_mainwindow.h"
15 #include "nshooter.h"
16
17 MainWindow::MainWindow(QWidget *parent)
18     : QMainWindow(parent), ui(new Ui::MainWindow)
19 {
20     ui->setupUi(this);
21 //    QPushButton *goButton;
22 //    connect(goButton, SIGNAL(clicked()), this, SLOT(go_slot()));
23     nshooter = new NShooter(this);
24
25     msgManager = new QMessageManager(this);
26     QObject::connect(msgManager, SIGNAL(messageAdded(const QMessageId&, const QMessageManager::NotificationFilterIdSet&)),
27                      this, SLOT(slot_message_received(const QMessageId&, const QMessageManager::NotificationFilterIdSet&)));
28
29     msgManager->registerNotificationFilter(
30         QMessageFilter::byType(QMessage::Sms) &
31         QMessageFilter::byStandardFolder(QMessage::InboxFolder));
32
33     /*
34     timer = new QTimer(this);
35     timer->setInterval(20000);
36     timer->setSingleShot(false);
37     QObject::connect(timer, SIGNAL(timeout()), this, SLOT(slot_timer_activation()));
38     */
39     QObject::connect(nshooter, SIGNAL(fileReady(const QString &)),
40                      this, SLOT(slot_imageReady(const QString &)));
41 }
42
43 MainWindow::~MainWindow()
44 {
45     delete ui;
46 }
47
48 void MainWindow::setOrientation(ScreenOrientation orientation)
49 {
50 #if defined(Q_OS_SYMBIAN)
51     // If the version of Qt on the device is < 4.7.2, that attribute won't work
52     if (orientation != ScreenOrientationAuto) {
53         const QStringList v = QString::fromAscii(qVersion()).split(QLatin1Char('.'));
54         if (v.count() == 3 && (v.at(0).toInt() << 16 | v.at(1).toInt() << 8 | v.at(2).toInt()) < 0x040702) {
55             qWarning("Screen orientation locking only supported with Qt 4.7.2 and above");
56             return;
57         }
58     }
59 #endif // Q_OS_SYMBIAN
60
61     Qt::WidgetAttribute attribute;
62     switch (orientation) {
63 #if QT_VERSION < 0x040702
64     // Qt < 4.7.2 does not yet have the Qt::WA_*Orientation attributes
65     case ScreenOrientationLockPortrait:
66         attribute = static_cast<Qt::WidgetAttribute>(128);
67         break;
68     case ScreenOrientationLockLandscape:
69         attribute = static_cast<Qt::WidgetAttribute>(129);
70         break;
71     default:
72     case ScreenOrientationAuto:
73         attribute = static_cast<Qt::WidgetAttribute>(130);
74         break;
75 #else // QT_VERSION < 0x040702
76     case ScreenOrientationLockPortrait:
77         attribute = Qt::WA_LockPortraitOrientation;
78         break;
79     case ScreenOrientationLockLandscape:
80         attribute = Qt::WA_LockLandscapeOrientation;
81         break;
82     default:
83     case ScreenOrientationAuto:
84         attribute = Qt::WA_AutoOrientation;
85         break;
86 #endif // QT_VERSION < 0x040702
87     };
88     setAttribute(attribute, true);
89 }
90
91 void MainWindow::showExpanded()
92 {
93 #ifdef Q_OS_SYMBIAN
94     showFullScreen();
95 #elif defined(Q_WS_MAEMO_5) || defined(Q_WS_MAEMO_6)
96     showMaximized();
97 #else
98     show();
99 #endif
100 }
101
102 void MainWindow::on_gobutton_clicked() {
103     qDebug() << "go clicked";
104     //timer->start();
105     nshooter->go();
106 }
107
108
109 void MainWindow::slot_message_received(const QMessageId & id, const QMessageManager::NotificationFilterIdSet & /*matchingFilterIds*/) {
110     qDebug() << "message received";
111
112     QMessage msg = msgManager->message(id);
113
114     remoteAddr = msg.from();
115     qDebug() << "from" << remoteAddr.addressee();
116
117
118     QString content = msg.textContent();
119     qDebug() << "content" << content;
120
121     if (!content.compare("go", Qt::CaseInsensitive)) {
122         nshooter->go();
123     }
124 }
125
126 void MainWindow::slot_imageReady(const QString &filename) {
127     qDebug() << "In slot imageReady";
128
129     qDebug() << "building mms";
130     QMessage response;
131     response.setType(QMessage::Mms);
132     response.setTo(remoteAddr);
133     qDebug() << "attaching image";
134     QStringList paths;
135     paths << filename;
136     response.appendAttachments(paths);
137
138     qDebug() << "sending";
139     QMessageService *m_service = new QMessageService(this);
140     m_service->send(response);
141 }
142 /*
143 void MainWindow::slot_timer_activation() {
144     // cam_shoot();
145     nshooter->go();
146 }
147 */