commit ebcabda68225bacdef03728bace97ff7209ce1c3 Author: Simon Stürz Date: Thu Aug 15 14:59:59 2013 +0200 project structure created diff --git a/hive/.gitignore b/hive/.gitignore new file mode 100644 index 00000000..996b5cc7 --- /dev/null +++ b/hive/.gitignore @@ -0,0 +1,9 @@ +.directory +*.user +*~ +Makefile +build +moc +.make.cache +rcc + diff --git a/hive/client/client.pro b/hive/client/client.pro new file mode 100644 index 00000000..c8b2e553 --- /dev/null +++ b/hive/client/client.pro @@ -0,0 +1,3 @@ +TEMPLATE = subdirs + +SUBDIRS += hive hive_pi diff --git a/hive/client/hive_client/hive_client.desktop b/hive/client/hive_client/hive_client.desktop new file mode 100644 index 00000000..9771241c --- /dev/null +++ b/hive/client/hive_client/hive_client.desktop @@ -0,0 +1,11 @@ +[Desktop Entry] +Encoding=UTF-8 +Version=1.0 +Type=Application +Terminal=false +Name=hive_client +Exec=/opt/hive_client/bin/hive_client +Icon=hive_client64 +X-Window-Icon= +X-HildonDesk-ShowInToolbar=true +X-Osso-Type=application/x-executable diff --git a/hive/client/hive_client/hive_client.pro b/hive/client/hive_client/hive_client.pro new file mode 100644 index 00000000..9c02d1d9 --- /dev/null +++ b/hive/client/hive_client/hive_client.pro @@ -0,0 +1,22 @@ +# Add more folders to ship with the application, here +folder_01.source = qml/hive_client +folder_01.target = qml +DEPLOYMENTFOLDERS = folder_01 + +# Additional import path used to resolve QML modules in Creator's code model +QML_IMPORT_PATH = + +# If your application uses the Qt Mobility libraries, uncomment the following +# lines and add the respective components to the MOBILITY variable. +# CONFIG += mobility +# MOBILITY += + +# The .cpp file which was generated for your project. Feel free to hack it. +SOURCES += main.cpp + +# Installation path +# target.path = + +# Please do not modify the following two lines. Required for deployment. +include(qtquick2applicationviewer/qtquick2applicationviewer.pri) +qtcAddDeployment() diff --git a/hive/client/hive_client/hive_client64.png b/hive/client/hive_client/hive_client64.png new file mode 100644 index 00000000..707d5c4e Binary files /dev/null and b/hive/client/hive_client/hive_client64.png differ diff --git a/hive/client/hive_client/hive_client80.png b/hive/client/hive_client/hive_client80.png new file mode 100644 index 00000000..6ad8096c Binary files /dev/null and b/hive/client/hive_client/hive_client80.png differ diff --git a/hive/client/hive_client/hive_client_harmattan.desktop b/hive/client/hive_client/hive_client_harmattan.desktop new file mode 100644 index 00000000..e98d6f84 --- /dev/null +++ b/hive/client/hive_client/hive_client_harmattan.desktop @@ -0,0 +1,11 @@ +[Desktop Entry] +Encoding=UTF-8 +Version=1.0 +Type=Application +Terminal=false +Name=hive_client +Exec=/usr/bin/single-instance /opt/hive_client/bin/hive_client +Icon=/usr/share/icons/hicolor/80x80/apps/hive_client80.png +X-Window-Icon= +X-HildonDesk-ShowInToolbar=true +X-Osso-Type=application/x-executable diff --git a/hive/client/hive_client/main.cpp b/hive/client/hive_client/main.cpp new file mode 100644 index 00000000..8d538bc4 --- /dev/null +++ b/hive/client/hive_client/main.cpp @@ -0,0 +1,13 @@ +#include +#include "qtquick2applicationviewer.h" + +int main(int argc, char *argv[]) +{ + QGuiApplication app(argc, argv); + + QtQuick2ApplicationViewer viewer; + viewer.setMainQmlFile(QStringLiteral("qml/hive_client/main.qml")); + viewer.showExpanded(); + + return app.exec(); +} diff --git a/hive/client/hive_client/qml/hive_client/main.qml b/hive/client/hive_client/qml/hive_client/main.qml new file mode 100644 index 00000000..897812a6 --- /dev/null +++ b/hive/client/hive_client/qml/hive_client/main.qml @@ -0,0 +1,16 @@ +import QtQuick 2.0 + +Rectangle { + width: 360 + height: 360 + Text { + text: qsTr("Hello World") + anchors.centerIn: parent + } + MouseArea { + anchors.fill: parent + onClicked: { + Qt.quit(); + } + } +} diff --git a/hive/client/hive_client/qtquick2applicationviewer/qtquick2applicationviewer.cpp b/hive/client/hive_client/qtquick2applicationviewer/qtquick2applicationviewer.cpp new file mode 100644 index 00000000..10709d7a --- /dev/null +++ b/hive/client/hive_client/qtquick2applicationviewer/qtquick2applicationviewer.cpp @@ -0,0 +1,81 @@ +// checksum 0x4f6f version 0x90005 +/* + This file was generated by the Qt Quick 2 Application wizard of Qt Creator. + QtQuick2ApplicationViewer is a convenience class containing mobile device specific + code such as screen orientation handling. Also QML paths and debugging are + handled here. + It is recommended not to modify this file, since newer versions of Qt Creator + may offer an updated version of it. +*/ + +#include "qtquick2applicationviewer.h" + +#include +#include +#include + +class QtQuick2ApplicationViewerPrivate +{ + QString mainQmlFile; + friend class QtQuick2ApplicationViewer; + static QString adjustPath(const QString &path); +}; + +QString QtQuick2ApplicationViewerPrivate::adjustPath(const QString &path) +{ +#if defined(Q_OS_MAC) + if (!QDir::isAbsolutePath(path)) + return QString::fromLatin1("%1/../Resources/%2") + .arg(QCoreApplication::applicationDirPath(), path); +#elif defined(Q_OS_BLACKBERRY) + if (!QDir::isAbsolutePath(path)) + return QString::fromLatin1("app/native/%1").arg(path); +#elif !defined(Q_OS_ANDROID) + QString pathInInstallDir = + QString::fromLatin1("%1/../%2").arg(QCoreApplication::applicationDirPath(), path); + if (QFileInfo(pathInInstallDir).exists()) + return pathInInstallDir; + pathInInstallDir = + QString::fromLatin1("%1/%2").arg(QCoreApplication::applicationDirPath(), path); + if (QFileInfo(pathInInstallDir).exists()) + return pathInInstallDir; +#endif + return path; +} + +QtQuick2ApplicationViewer::QtQuick2ApplicationViewer(QWindow *parent) + : QQuickView(parent) + , d(new QtQuick2ApplicationViewerPrivate()) +{ + connect(engine(), SIGNAL(quit()), SLOT(close())); + setResizeMode(QQuickView::SizeRootObjectToView); +} + +QtQuick2ApplicationViewer::~QtQuick2ApplicationViewer() +{ + delete d; +} + +void QtQuick2ApplicationViewer::setMainQmlFile(const QString &file) +{ + d->mainQmlFile = QtQuick2ApplicationViewerPrivate::adjustPath(file); +#ifdef Q_OS_ANDROID + setSource(QUrl(QLatin1String("assets:/")+d->mainQmlFile)); +#else + setSource(QUrl::fromLocalFile(d->mainQmlFile)); +#endif +} + +void QtQuick2ApplicationViewer::addImportPath(const QString &path) +{ + engine()->addImportPath(QtQuick2ApplicationViewerPrivate::adjustPath(path)); +} + +void QtQuick2ApplicationViewer::showExpanded() +{ +#if defined(Q_WS_SIMULATOR) || defined(Q_OS_QNX) + showFullScreen(); +#else + show(); +#endif +} diff --git a/hive/client/hive_client/qtquick2applicationviewer/qtquick2applicationviewer.h b/hive/client/hive_client/qtquick2applicationviewer/qtquick2applicationviewer.h new file mode 100644 index 00000000..cf66f140 --- /dev/null +++ b/hive/client/hive_client/qtquick2applicationviewer/qtquick2applicationviewer.h @@ -0,0 +1,33 @@ +// checksum 0xfde6 version 0x90005 +/* + This file was generated by the Qt Quick 2 Application wizard of Qt Creator. + QtQuick2ApplicationViewer is a convenience class containing mobile device specific + code such as screen orientation handling. Also QML paths and debugging are + handled here. + It is recommended not to modify this file, since newer versions of Qt Creator + may offer an updated version of it. +*/ + +#ifndef QTQUICK2APPLICATIONVIEWER_H +#define QTQUICK2APPLICATIONVIEWER_H + +#include + +class QtQuick2ApplicationViewer : public QQuickView +{ + Q_OBJECT + +public: + explicit QtQuick2ApplicationViewer(QWindow *parent = 0); + virtual ~QtQuick2ApplicationViewer(); + + void setMainQmlFile(const QString &file); + void addImportPath(const QString &path); + + void showExpanded(); + +private: + class QtQuick2ApplicationViewerPrivate *d; +}; + +#endif // QTQUICK2APPLICATIONVIEWER_H diff --git a/hive/client/hive_client/qtquick2applicationviewer/qtquick2applicationviewer.pri b/hive/client/hive_client/qtquick2applicationviewer/qtquick2applicationviewer.pri new file mode 100644 index 00000000..e5f7990f --- /dev/null +++ b/hive/client/hive_client/qtquick2applicationviewer/qtquick2applicationviewer.pri @@ -0,0 +1,180 @@ +# checksum 0x7b0d version 0x90005 +# This file was generated by the Qt Quick 2 Application wizard of Qt Creator. +# The code below adds the QtQuick2ApplicationViewer to the project and handles +# the activation of QML debugging. +# It is recommended not to modify this file, since newer versions of Qt Creator +# may offer an updated version of it. + +QT += qml quick + +SOURCES += $$PWD/qtquick2applicationviewer.cpp +HEADERS += $$PWD/qtquick2applicationviewer.h +INCLUDEPATH += $$PWD +# This file was generated by an application wizard of Qt Creator. +# The code below handles deployment to Android and Maemo, aswell as copying +# of the application data to shadow build directories on desktop. +# It is recommended not to modify this file, since newer versions of Qt Creator +# may offer an updated version of it. + +defineTest(qtcAddDeployment) { +for(deploymentfolder, DEPLOYMENTFOLDERS) { + item = item$${deploymentfolder} + greaterThan(QT_MAJOR_VERSION, 4) { + itemsources = $${item}.files + } else { + itemsources = $${item}.sources + } + $$itemsources = $$eval($${deploymentfolder}.source) + itempath = $${item}.path + $$itempath= $$eval($${deploymentfolder}.target) + export($$itemsources) + export($$itempath) + DEPLOYMENT += $$item +} + +MAINPROFILEPWD = $$PWD + +android-no-sdk { + for(deploymentfolder, DEPLOYMENTFOLDERS) { + item = item$${deploymentfolder} + itemfiles = $${item}.files + $$itemfiles = $$eval($${deploymentfolder}.source) + itempath = $${item}.path + $$itempath = /data/user/qt/$$eval($${deploymentfolder}.target) + export($$itemfiles) + export($$itempath) + INSTALLS += $$item + } + + target.path = /data/user/qt + + export(target.path) + INSTALLS += target +} else:android { + for(deploymentfolder, DEPLOYMENTFOLDERS) { + item = item$${deploymentfolder} + itemfiles = $${item}.files + $$itemfiles = $$eval($${deploymentfolder}.source) + itempath = $${item}.path + $$itempath = /assets/$$eval($${deploymentfolder}.target) + export($$itemfiles) + export($$itempath) + INSTALLS += $$item + } + + x86 { + target.path = /libs/x86 + } else: armeabi-v7a { + target.path = /libs/armeabi-v7a + } else { + target.path = /libs/armeabi + } + + export(target.path) + INSTALLS += target +} else:win32 { + copyCommand = + for(deploymentfolder, DEPLOYMENTFOLDERS) { + source = $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source) + source = $$replace(source, /, \\) + sourcePathSegments = $$split(source, \\) + target = $$OUT_PWD/$$eval($${deploymentfolder}.target)/$$last(sourcePathSegments) + target = $$replace(target, /, \\) + target ~= s,\\\\\\.?\\\\,\\, + !isEqual(source,$$target) { + !isEmpty(copyCommand):copyCommand += && + isEqual(QMAKE_DIR_SEP, \\) { + copyCommand += $(COPY_DIR) \"$$source\" \"$$target\" + } else { + source = $$replace(source, \\\\, /) + target = $$OUT_PWD/$$eval($${deploymentfolder}.target) + target = $$replace(target, \\\\, /) + copyCommand += test -d \"$$target\" || mkdir -p \"$$target\" && cp -r \"$$source\" \"$$target\" + } + } + } + !isEmpty(copyCommand) { + copyCommand = @echo Copying application data... && $$copyCommand + copydeploymentfolders.commands = $$copyCommand + first.depends = $(first) copydeploymentfolders + export(first.depends) + export(copydeploymentfolders.commands) + QMAKE_EXTRA_TARGETS += first copydeploymentfolders + } +} else:unix { + maemo5 { + desktopfile.files = $${TARGET}.desktop + desktopfile.path = /usr/share/applications/hildon + icon.files = $${TARGET}64.png + icon.path = /usr/share/icons/hicolor/64x64/apps + } else:!isEmpty(MEEGO_VERSION_MAJOR) { + desktopfile.files = $${TARGET}_harmattan.desktop + desktopfile.path = /usr/share/applications + icon.files = $${TARGET}80.png + icon.path = /usr/share/icons/hicolor/80x80/apps + } else { # Assumed to be a Desktop Unix + copyCommand = + for(deploymentfolder, DEPLOYMENTFOLDERS) { + source = $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source) + source = $$replace(source, \\\\, /) + macx { + target = $$OUT_PWD/$${TARGET}.app/Contents/Resources/$$eval($${deploymentfolder}.target) + } else { + target = $$OUT_PWD/$$eval($${deploymentfolder}.target) + } + target = $$replace(target, \\\\, /) + sourcePathSegments = $$split(source, /) + targetFullPath = $$target/$$last(sourcePathSegments) + targetFullPath ~= s,/\\.?/,/, + !isEqual(source,$$targetFullPath) { + !isEmpty(copyCommand):copyCommand += && + copyCommand += $(MKDIR) \"$$target\" + copyCommand += && $(COPY_DIR) \"$$source\" \"$$target\" + } + } + !isEmpty(copyCommand) { + copyCommand = @echo Copying application data... && $$copyCommand + copydeploymentfolders.commands = $$copyCommand + first.depends = $(first) copydeploymentfolders + export(first.depends) + export(copydeploymentfolders.commands) + QMAKE_EXTRA_TARGETS += first copydeploymentfolders + } + } + !isEmpty(target.path) { + installPrefix = $${target.path} + } else { + installPrefix = /opt/$${TARGET} + } + for(deploymentfolder, DEPLOYMENTFOLDERS) { + item = item$${deploymentfolder} + itemfiles = $${item}.files + $$itemfiles = $$eval($${deploymentfolder}.source) + itempath = $${item}.path + $$itempath = $${installPrefix}/$$eval($${deploymentfolder}.target) + export($$itemfiles) + export($$itempath) + INSTALLS += $$item + } + + !isEmpty(desktopfile.path) { + export(icon.files) + export(icon.path) + export(desktopfile.files) + export(desktopfile.path) + INSTALLS += icon desktopfile + } + + isEmpty(target.path) { + target.path = $${installPrefix}/bin + export(target.path) + } + INSTALLS += target +} + +export (ICON) +export (INSTALLS) +export (DEPLOYMENT) +export (LIBS) +export (QMAKE_EXTRA_TARGETS) +} diff --git a/hive/hive.pro b/hive/hive.pro new file mode 100644 index 00000000..1dcf6350 --- /dev/null +++ b/hive/hive.pro @@ -0,0 +1,5 @@ +TEMPLATE = subdirs +CONFIG = ordered + +SUBDIRS += libhive server \ + client/hive_client diff --git a/hive/libhive/libhive.cpp b/hive/libhive/libhive.cpp new file mode 100644 index 00000000..a97f18b2 --- /dev/null +++ b/hive/libhive/libhive.cpp @@ -0,0 +1,6 @@ +#include "libhive.h" + + +Libhive::Libhive() +{ +} diff --git a/hive/libhive/libhive.h b/hive/libhive/libhive.h new file mode 100644 index 00000000..0e92c856 --- /dev/null +++ b/hive/libhive/libhive.h @@ -0,0 +1,13 @@ +#ifndef LIBHIVE_H +#define LIBHIVE_H + +#include "libhive_global.h" + +class LIBHIVESHARED_EXPORT Libhive +{ + +public: + Libhive(); +}; + +#endif // LIBHIVE_H diff --git a/hive/libhive/libhive.pro b/hive/libhive/libhive.pro new file mode 100644 index 00000000..4c958c6c --- /dev/null +++ b/hive/libhive/libhive.pro @@ -0,0 +1,28 @@ +#------------------------------------------------- +# +# Project created by QtCreator 2013-08-11T20:58:11 +# +#------------------------------------------------- + +QT += widgets declarative qml quick network dbus + +TARGET = libhive +TEMPLATE = lib + +DEFINES += LIBHIVE_LIBRARY + +SOURCES += libhive.cpp \ + server.cpp + +HEADERS += libhive.h\ + libhive_global.h \ + server.h + +unix:!symbian { + maemo5 { + target.path = /opt/usr/lib + } else { + target.path = /usr/lib + } + INSTALLS += target +} diff --git a/hive/libhive/libhive_global.h b/hive/libhive/libhive_global.h new file mode 100644 index 00000000..34d5fa3d --- /dev/null +++ b/hive/libhive/libhive_global.h @@ -0,0 +1,12 @@ +#ifndef LIBHIVE_GLOBAL_H +#define LIBHIVE_GLOBAL_H + +#include + +#if defined(LIBHIVE_LIBRARY) +# define LIBHIVESHARED_EXPORT Q_DECL_EXPORT +#else +# define LIBHIVESHARED_EXPORT Q_DECL_IMPORT +#endif + +#endif // LIBHIVE_GLOBAL_H diff --git a/hive/libhive/server.cpp b/hive/libhive/server.cpp new file mode 100644 index 00000000..eb6a76cc --- /dev/null +++ b/hive/libhive/server.cpp @@ -0,0 +1,51 @@ +#include "server.h" + +#include +#include +#include +#include + +Server::Server(QObject *parent) : + QObject(parent) +{ + + qDebug() << "----------------------------"; + qDebug() << "network interfaces:"; + foreach(const QNetworkInterface &interface, QNetworkInterface::allInterfaces()){ + qDebug() << " -------------------------"; + qDebug() << " name:" << interface.name(); + qDebug() << " mac: " << interface.hardwareAddress(); + } + qDebug() << "----------------------------"; + + // Listen on all Networkinterfaces + foreach(const QHostAddress &address, QNetworkInterface::allAddresses()){ + QTcpServer *server = new QTcpServer(this); + if(server->listen(address, 1234)) { + qDebug() << "server listening on" << address.toString(); + connect(server, SIGNAL(newConnection()), SLOT(incomingConnection())); + m_serverList.append(server); + } else { + qDebug() << "ERROR: can not listening to" << address.toString(); + delete server; + } + } +} + +void Server::incomingConnection() +{ + // got a new client connected + QTcpServer *server = qobject_cast(sender()); + QTcpSocket *newConnection = server->nextPendingConnection(); + qDebug() << "new client connected:" << newConnection->peerAddress().toString(); + + // append the new client to the client list + m_clientList.append(newConnection); + + connect(newConnection, SIGNAL(readyRead()), SLOT(readPackage())); +} + +void Server::readPackage() +{ + +} diff --git a/hive/libhive/server.h b/hive/libhive/server.h new file mode 100644 index 00000000..ec23484d --- /dev/null +++ b/hive/libhive/server.h @@ -0,0 +1,27 @@ +#ifndef SERVER_H +#define SERVER_H + +#include +#include + +class Server : public QObject +{ + Q_OBJECT +public: + explicit Server(QObject *parent = 0); + +private: + QList m_serverList; + QList m_clientList; + + +signals: + +public slots: + +private slots: + void incomingConnection(); + void readPackage(); +}; + +#endif // SERVER_H diff --git a/hive/server/hive/hive.pro b/hive/server/hive/hive.pro new file mode 100644 index 00000000..11846786 --- /dev/null +++ b/hive/server/hive/hive.pro @@ -0,0 +1,28 @@ +#------------------------------------------------- +# +# Project created by QtCreator 2013-08-15T13:31:23 +# +#------------------------------------------------- + +QT += core + +QT -= gui + +TARGET = hive +CONFIG += console +CONFIG -= app_bundle + +TEMPLATE = app + +SOURCES += main.cpp \ + hivecore.cpp + +win32:CONFIG(release, debug|release): LIBS += -L$$OUT_PWD/../../libhive/release/ -llibhive +else:win32:CONFIG(debug, debug|release): LIBS += -L$$OUT_PWD/../../libhive/debug/ -llibhive +else:unix: LIBS += -L$$OUT_PWD/../../libhive/ -llibhive + +INCLUDEPATH += $$PWD/../../libhive +DEPENDPATH += $$PWD/../../libhive + +HEADERS += \ + hivecore.h diff --git a/hive/server/hive/hivecore.cpp b/hive/server/hive/hivecore.cpp new file mode 100644 index 00000000..0502e50c --- /dev/null +++ b/hive/server/hive/hivecore.cpp @@ -0,0 +1,8 @@ +#include "hivecore.h" + + +HiveCore::HiveCore(QObject *parent) : + QObject(parent) +{ + m_server = new Server(this); +} diff --git a/hive/server/hive/hivecore.h b/hive/server/hive/hivecore.h new file mode 100644 index 00000000..ac18fdb1 --- /dev/null +++ b/hive/server/hive/hivecore.h @@ -0,0 +1,22 @@ +#ifndef HIVECORE_H +#define HIVECORE_H + +#include +#include + +class HiveCore : public QObject +{ + Q_OBJECT +public: + explicit HiveCore(QObject *parent = 0); + +private: + Server m_server; + +signals: + +public slots: + +}; + +#endif // HIVECORE_H diff --git a/hive/server/hive/main.cpp b/hive/server/hive/main.cpp new file mode 100644 index 00000000..160aacf8 --- /dev/null +++ b/hive/server/hive/main.cpp @@ -0,0 +1,11 @@ +#include +#include "hivecore.h" + +int main(int argc, char *argv[]) +{ + QCoreApplication a(argc, argv); + + HiveCore core; + + return a.exec(); +} diff --git a/hive/server/hive_pi/hive_pi.pro b/hive/server/hive_pi/hive_pi.pro new file mode 100644 index 00000000..68629337 --- /dev/null +++ b/hive/server/hive_pi/hive_pi.pro @@ -0,0 +1,23 @@ +#------------------------------------------------- +# +# Project created by QtCreator 2013-08-15T13:14:35 +# +#------------------------------------------------- + +QT += core + +QT -= gui + +TARGET = hive_pi +target.path = /usr/bin + +CONFIG += console +CONFIG -= app_bundle + +INSTALLS += target + + +TEMPLATE = app + + +SOURCES += main.cpp diff --git a/hive/server/hive_pi/main.cpp b/hive/server/hive_pi/main.cpp new file mode 100644 index 00000000..3731aeb7 --- /dev/null +++ b/hive/server/hive_pi/main.cpp @@ -0,0 +1,8 @@ +#include + +int main(int argc, char *argv[]) +{ + QCoreApplication a(argc, argv); + + return a.exec(); +} diff --git a/hive/server/server.pro b/hive/server/server.pro new file mode 100644 index 00000000..c8b2e553 --- /dev/null +++ b/hive/server/server.pro @@ -0,0 +1,3 @@ +TEMPLATE = subdirs + +SUBDIRS += hive hive_pi