Initial commit master
authorvytarani <penguin@junkbox.(none)>
Thu, 21 Oct 2010 03:49:33 +0000 (06:49 +0300)
committervytarani <penguin@junkbox.(none)>
Thu, 21 Oct 2010 03:49:33 +0000 (06:49 +0300)
src/main.cpp [new file with mode: 0644]
src/window.cpp [new file with mode: 0644]
src/window.h [new file with mode: 0644]

diff --git a/src/main.cpp b/src/main.cpp
new file mode 100644 (file)
index 0000000..776689f
--- /dev/null
@@ -0,0 +1,41 @@
+/*
+ * I Am Here(iamhere) - an application to find user's location
+ * address.
+ * Copyright (C) 2010 Vytarani Mathane <vytarani.mathane@gmail.com>.
+ *
+ * This file is part of I Am Here.
+ *
+ * I Am Here is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * I Am Here is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with I Am Here.  If not, see <http://www.gnu.org/licenses/>.
+ */
+#include <QApplication>
+#include <QGraphicsPixmapItem>
+#include <QGraphicsScene>
+#include <QGraphicsView>
+#include <QTimer>
+
+#include "window.h"
+int main(int argc, char *argv[])
+{
+       QApplication app(argc, argv);
+       Window *window;
+       window = new Window(0);
+       window->setWindowFlags(Qt::X11BypassWindowManagerHint);
+       window->move(150, 60);
+       window->resize(400, 400);
+
+//window->resize(550,380);
+       window->show();
+       window->activateWindow();
+       return app.exec();
+}
diff --git a/src/window.cpp b/src/window.cpp
new file mode 100644 (file)
index 0000000..ae6b5c3
--- /dev/null
@@ -0,0 +1,203 @@
+/*
+ * I Am Here(iamhere) - an application to find user's location
+ * address.
+ * Copyright (C) 2010 Vytarani Mathane <vytarani.mathane@gmail.com>.
+ *
+ * This file is part of I Am Here.
+ *
+ * I Am Here is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * I Am Here is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with I Am Here.  If not, see <http://www.gnu.org/licenses/>.
+ */
+#include <QtGui>
+#include <QWidget>
+#include <QVBoxLayout>
+#include <QPushButton>
+#include <QGeoPositionInfoSource>
+#include <QGeoSearchManager>
+#include <QGeoServiceProvider>
+#include <QNetworkProxyFactory>
+#include <QTimer>
+
+#include "window.h"
+using namespace QtMobility;
+Window::Window(QWidget * parent)
+ : QMainWindow(parent)
+{
+       m_flag = 1;
+       m_source = QGeoPositionInfoSource::createDefaultSource(this);
+       if (m_source == 0)
+               QMessageBox::information(this, tr("Info"),
+                                        tr("Not a valid geo source!!"));
+
+       if (m_source) {
+               connect(m_source, SIGNAL(positionUpdated(QGeoPositionInfo)),
+                       this, SLOT(positionUpdated(QGeoPositionInfo)));
+               connect(m_source, SIGNAL(updateTimeout()), this,
+                       SLOT(updateTimeout()));
+               m_source->startUpdates();
+       }
+       m_serviceProvider = new QGeoServiceProvider("nokia");
+       if (m_serviceProvider->error() == QGeoServiceProvider::NoError) {
+               m_searchManager = m_serviceProvider->searchManager();
+               if (m_searchManager) {
+                       QObject::connect(m_searchManager,
+                                        SIGNAL(finished(QGeoSearchReply *)),
+                                        this,
+                                        SLOT(replyFinished
+                                             (QGeoSearchReply *)));
+                       QObject::connect(m_searchManager,
+                                        SIGNAL(error
+                                               (QGeoSearchReply *,
+                                                QGeoSearchReply::Error,
+                                                QString)), this,
+                                        SLOT(resultsError
+                                             (QGeoSearchReply *,
+                                              QGeoSearchReply::Error,
+                                              QString)));
+               }
+       }
+
+       setWindowTitle(tr("I am Here"));
+       //m_source->startUpdates();
+       QWidget *layout_widget = new QWidget(this);
+       //layout_widget->setMinimumSize(550,380);
+       //layout_widget->setMaximumSize(550,380);
+       QString image_name = ":/man1.png";
+       QImage image(image_name, 0);
+       m_imagelabel = new QLabel(layout_widget);
+       m_imagelabel->setPixmap(QPixmap::fromImage(image, Qt::ColorOnly));
+       QWidget *hlayout_widget = new QWidget(this);
+       QHBoxLayout *hlayout = new QHBoxLayout(hlayout_widget);
+       QPushButton *button1 = new QPushButton(tr("Try Again"), hlayout_widget);
+       QPushButton *button2 = new QPushButton(tr("Close"), hlayout_widget);
+       button1->setFixedSize(200, 50);
+       //QPalette palette = button1->palette();
+       //palette.setColor(QPalette::Button,QColor(Qt::darkGreen));
+       //button1->setPalette(palette);
+       //button1->setPalette(QPalette(QPalette::Button,QColor(Qt::darkGreen)));
+       //button1->setAutoFillBackground(true);
+       button1->setStyleSheet("background-color: darkGreen");
+       button2->setFixedSize(200, 50);
+       //button2->setAutoFillBackground(true);
+       button2->setStyleSheet("background-color: darkGreen");
+       hlayout->addWidget(button1);
+       hlayout->addWidget(button2);
+       m_textlabel = new QLabel(layout_widget);
+       QVBoxLayout *layout = new QVBoxLayout(layout_widget);
+       layout->addWidget(m_textlabel);
+       layout->addWidget(m_imagelabel);
+       layout->addWidget(hlayout_widget);
+       setCentralWidget(layout_widget);
+       setPalette(QPalette(Qt::white));
+       m_textlabel->setPalette(QPalette(Qt::yellow));
+       m_textlabel->setAutoFillBackground(true);
+       connect(button1, SIGNAL(pressed()), this, SLOT(handlePressed()));
+       connect(button2, SIGNAL(pressed()), this, SLOT(handlePressedClose()));
+       m_timer = new QTimer(this);
+       connect(m_timer, SIGNAL(timeout()), this, SLOT(advance()));
+       m_timer->start(1000);
+}
+
+void Window::handlePressed()
+{
+
+       if (m_source) {
+               m_textlabel->clear();
+               m_source->stopUpdates();
+               m_source->startUpdates();
+               m_timer->start(1000);
+       } else
+               QMessageBox::information(this, tr("Info"),
+                                        tr("Source not present!!"));
+}
+
+void Window::handlePressedClose()
+{
+       exit(0);
+}
+
+void Window::replyFinished(QGeoSearchReply * reply)
+{
+       QList < QGeoPlace > places = reply->places();
+       QString s;
+       if (!places[0].address().isEmpty()) {
+               s = places[0].address().postCode();
+               s.append(",");
+               s.append(places[0].address().thoroughfareName());
+               s.append(",");
+               s.append(places[0].address().thoroughfareNumber());
+               s.append(",");
+               s.append(places[0].address().county());
+               s.append(",");
+               s.append(places[0].address().city());
+               s.append(",");
+               s.append(places[0].address().district());
+               s.append(",");
+               s.append(places[0].address().state());
+               s.append(",");
+               s.append(places[0].address().country());
+       } else {
+               s.sprintf("places length is %d", places.length());
+       }
+       m_textlabel->setText(s);
+       m_timer->stop();
+       QString image_n = ":/bulb.png";
+       QImage image(image_n, 0);
+       m_imagelabel->setPixmap(QPixmap::fromImage(image, Qt::ColorOnly));
+       this->activateWindow();
+}
+
+void Window::resultsError(QGeoSearchReply * reply,
+                         QGeoSearchReply::Error errorCode, QString errorString)
+{
+       m_source->stopUpdates();
+       QString s = errorString;
+       QMessageBox msgBox;
+       msgBox.setText(s);
+       msgBox.exec();
+       QMessageBox::information(this, tr("Info"),
+                                tr("Try again after conneting to internet!"));
+       exit(1);
+}
+
+void Window::positionUpdated(const QGeoPositionInfo & info)
+{
+       QString s;
+       m_coord = info.coordinate();
+       if (m_searchManager) {
+               if (m_searchManager->supportsGeocoding())
+
+                       QGeoSearchReply *reply =
+                           m_searchManager->geocode(m_coord);
+       } else
+               QMessageBox::information(this, tr("Info"),
+                                        tr("search manager not present!!"));
+}
+
+void Window::advance()
+{
+       this->activateWindow();
+       if (m_flag == 1) {
+               QString image_n = ":/man2.png";
+               QImage image(image_n, 0);
+               m_imagelabel->setPixmap(QPixmap::
+                                       fromImage(image, Qt::ColorOnly));
+               m_flag = 0;
+       } else {
+               QString image_na = ":/man1.png";
+               QImage image(image_na, 0);
+               m_imagelabel->setPixmap(QPixmap::
+                                       fromImage(image, Qt::ColorOnly));
+               m_flag = 1;
+       }
+}
diff --git a/src/window.h b/src/window.h
new file mode 100644 (file)
index 0000000..a3ce597
--- /dev/null
@@ -0,0 +1,60 @@
+/*
+ * I Am Here(iamhere) - an application to find user's location
+ * address.
+ * Copyright (C) 2010 Vytarani Mathane <vytarani.mathane@gmail.com>.
+ *
+ * This file is part of I Am Here.
+ *
+ * I Am Here is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * I Am Here is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with I Am Here.  If not, see <http://www.gnu.org/licenses/>.
+ */
+#include <QtGui>
+#include <QMainWindow>
+
+#include <QWidget>
+#include <QGeoSearchManager>
+#include <QGeoServiceProvider>
+#include <QGeoPositionInfoSource>
+#include <QDebug>
+#include <QTimer>
+
+ QTM_USE_NAMESPACE 
+ class Window:public QMainWindow {
+ Q_OBJECT 
+ public:
+       Window(QWidget * parent);
+
+       private slots:
+       void positionUpdated(const QGeoPositionInfo & info);
+       void updateTimeout() {
+               // Current location could not be retrieved within the specified timeout of 5 seconds.
+               qWarning("Failed to retrieve current position.");
+       }
+       void advance();
+
+       public slots: void handlePressed();
+       void handlePressedClose();
+       void replyFinished(QGeoSearchReply * reply);
+       void resultsError(QGeoSearchReply * reply,
+                         QGeoSearchReply::Error errorCode,
+                         QString errorString);
+ private:
+       QGeoSearchManager * m_searchManager;
+       QGeoServiceProvider *m_serviceProvider;
+       QGeoPositionInfoSource *m_source;
+       QGeoCoordinate m_coord;
+       QLabel *m_imagelabel;
+       QLabel *m_textlabel;
+       QTimer *m_timer;
+       int m_flag;
+};