diff --git a/Qt/LPB/.gitignore b/Qt/LPB/.gitignore new file mode 100644 index 0000000..5439c79 --- /dev/null +++ b/Qt/LPB/.gitignore @@ -0,0 +1,73 @@ +# This file is used to ignore files which are generated +# ---------------------------------------------------------------------------- + +*~ +*.autosave +*.a +*.core +*.moc +*.o +*.obj +*.orig +*.rej +*.so +*.so.* +*_pch.h.cpp +*_resource.rc +*.qm +.#* +*.*# +core +!core/ +tags +.DS_Store +*.debug +Makefile* +*.prl +*.app +moc_*.cpp +ui_*.h +qrc_*.cpp +Thumbs.db +*.res +*.rc +/.qmake.cache +/.qmake.stash + +# qtcreator generated files +*.pro.user* + +# xemacs temporary files +*.flc + +# Vim temporary files +.*.swp + +# Visual Studio generated files +*.ib_pdb_index +*.idb +*.ilk +*.pdb +*.sln +*.suo +*.vcproj +*vcproj.*.*.user +*.ncb +*.sdf +*.opensdf +*.vcxproj +*vcxproj.* + +# MinGW generated files +*.Debug +*.Release + +# Python byte code +*.pyc + +# Binaries +# -------- +*.dll +*.exe + + diff --git a/Qt/LPB/HomePage.cpp b/Qt/LPB/HomePage.cpp new file mode 100644 index 0000000..d67f8c0 --- /dev/null +++ b/Qt/LPB/HomePage.cpp @@ -0,0 +1,26 @@ +#include "HomePage.h" + +HomePage::HomePage(QWidget *parent) : QWidget(parent) +{ + // Buttons + m_test1Button = new QPushButton; + m_test1Button->setText("Test 1"); + m_test2Button = new QPushButton; + m_test2Button->setText("Test 2"); + + // Main layout + m_mainLayout = new QVBoxLayout; + m_mainLayout->addWidget(m_test1Button); + m_mainLayout->addWidget(m_test2Button); + + // Assign main layout to MainWindow + this->setLayout(m_mainLayout); +} + +HomePage::~HomePage() +{ + delete m_test1Button; + delete m_test2Button; + delete m_mainLayout; +} + diff --git a/Qt/LPB/HomePage.h b/Qt/LPB/HomePage.h new file mode 100644 index 0000000..618a4b6 --- /dev/null +++ b/Qt/LPB/HomePage.h @@ -0,0 +1,24 @@ +#ifndef HOMEPAGE_H +#define HOMEPAGE_H + +#include +#include +#include + +class HomePage : public QWidget +{ + Q_OBJECT +public: + explicit HomePage(QWidget *parent = 0); + ~HomePage(); + +private: + // Buttons + QPushButton *m_test1Button; + QPushButton *m_test2Button; + + // Main layout + QVBoxLayout *m_mainLayout; +}; + +#endif // HOMEPAGE_H diff --git a/Qt/LPB/LPB.pro b/Qt/LPB/LPB.pro new file mode 100644 index 0000000..974d793 --- /dev/null +++ b/Qt/LPB/LPB.pro @@ -0,0 +1,19 @@ +QT += core gui + +greaterThan(QT_MAJOR_VERSION, 4): QT += widgets + +TARGET = LPB +TEMPLATE = app + +CONFIG += mobility + +SOURCES += \ + main.cpp \ + MainWindow.cpp \ + TestPage1.cpp \ + HomePage.cpp + +HEADERS += \ + MainWindow.h \ + TestPage1.h \ + HomePage.h diff --git a/Qt/LPB/MainWindow.cpp b/Qt/LPB/MainWindow.cpp new file mode 100644 index 0000000..3eaa786 --- /dev/null +++ b/Qt/LPB/MainWindow.cpp @@ -0,0 +1,25 @@ +#include "MainWindow.h" + +MainWindow::MainWindow(QMainWindow *parent) : QMainWindow(parent) +{ + // Applications pages + m_homePage = new HomePage; + m_testPage1 = new TestPage1; + + QObject::connect(); + + // Stack of all pages + m_stackedWidget = new QStackedWidget; + m_stackedWidget->addWidget(m_homePage); + m_stackedWidget->addWidget(m_testPage1); + + // Assign main layout to MainWindow + this->setCentralWidget(m_stackedWidget); +} + +MainWindow::~MainWindow() +{ + delete m_stackedWidget; + delete m_testPage1; + delete m_homePage; +} diff --git a/Qt/LPB/MainWindow.h b/Qt/LPB/MainWindow.h new file mode 100644 index 0000000..dffc698 --- /dev/null +++ b/Qt/LPB/MainWindow.h @@ -0,0 +1,29 @@ +#ifndef MAINWINDOW_H +#define MAINWINDOW_H + +#include +#include + +#include "HomePage.h" +#include "TestPage1.h" + +class MainWindow : public QMainWindow +{ + Q_OBJECT +public: + explicit MainWindow(QMainWindow *parent = 0); + ~MainWindow(); + +private: + // Applications pages + HomePage *m_homePage; + TestPage1 *m_testPage1; + + // Stack of all pages + QStackedWidget *m_stackedWidget; + + // Main layout + QVBoxLayout *m_mainLayout; +}; + +#endif // MAINWINDOW_H diff --git a/Qt/LPB/TestPage1.cpp b/Qt/LPB/TestPage1.cpp new file mode 100644 index 0000000..bce3929 --- /dev/null +++ b/Qt/LPB/TestPage1.cpp @@ -0,0 +1,12 @@ +#include "TestPage1.h" + +TestPage1::TestPage1(QWidget *parent) : QWidget(parent) +{ + +} + +TestPage1::~TestPage1() +{ + +} + diff --git a/Qt/LPB/TestPage1.h b/Qt/LPB/TestPage1.h new file mode 100644 index 0000000..5b7f2ff --- /dev/null +++ b/Qt/LPB/TestPage1.h @@ -0,0 +1,18 @@ +#ifndef TESTPAGE1_H +#define TESTPAGE1_H + +#include + +class TestPage1 : public QWidget +{ + Q_OBJECT +public: + explicit TestPage1(QWidget *parent = 0); + ~TestPage1(); + +signals: + +public slots: +}; + +#endif // TESTPAGE1_H diff --git a/Qt/LPB/main.cpp b/Qt/LPB/main.cpp new file mode 100644 index 0000000..af4d117 --- /dev/null +++ b/Qt/LPB/main.cpp @@ -0,0 +1,13 @@ + +#include + +#include "MainWindow.h" + +int main(int argc, char *argv[]) +{ + QApplication app(argc, argv); + MainWindow w; + w.show(); + + return app.exec(); +} diff --git a/Qt/accelbubble/Bluebubble.svg b/Qt/accelbubble/Bluebubble.svg new file mode 100644 index 0000000..d9c406c --- /dev/null +++ b/Qt/accelbubble/Bluebubble.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/Qt/accelbubble/accelbubble.pro b/Qt/accelbubble/accelbubble.pro new file mode 100644 index 0000000..47b0cf4 --- /dev/null +++ b/Qt/accelbubble/accelbubble.pro @@ -0,0 +1,24 @@ +TEMPLATE = app + +QT += qml quick widgets sensors svg xml + +SOURCES += main.cpp + +RESOURCES += qml.qrc + +# Additional import path used to resolve QML modules in Qt Creator's code model +QML_IMPORT_PATH = + +# Default rules for deployment. +include(deployment.pri) + +DISTFILES += \ + android/gradle/wrapper/gradle-wrapper.jar \ + android/AndroidManifest.xml \ + android/gradlew.bat \ + android/res/values/libs.xml \ + android/build.gradle \ + android/gradle/wrapper/gradle-wrapper.properties \ + android/gradlew + +ANDROID_PACKAGE_SOURCE_DIR = $$PWD/android diff --git a/Qt/accelbubble/android/AndroidManifest.xml b/Qt/accelbubble/android/AndroidManifest.xml new file mode 100644 index 0000000..4fca6c8 --- /dev/null +++ b/Qt/accelbubble/android/AndroidManifest.xml @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Qt/accelbubble/android/build.gradle b/Qt/accelbubble/android/build.gradle new file mode 100644 index 0000000..81acf81 --- /dev/null +++ b/Qt/accelbubble/android/build.gradle @@ -0,0 +1,57 @@ +buildscript { + repositories { + jcenter() + } + + dependencies { + classpath 'com.android.tools.build:gradle:1.0.0' + } +} + +allprojects { + repositories { + jcenter() + } +} + +apply plugin: 'com.android.application' + +dependencies { + compile fileTree(dir: 'libs', include: ['*.jar']) +} + +android { + /******************************************************* + * The following variables: + * - androidBuildToolsVersion, + * - androidCompileSdkVersion + * - qt5AndroidDir - holds the path to qt android files + * needed to build any Qt application + * on Android. + * + * are defined in gradle.properties file. This file is + * updated by QtCreator and androiddeployqt tools. + * Changing them manually might break the compilation! + *******************************************************/ + + compileSdkVersion androidCompileSdkVersion.toInteger() + + buildToolsVersion androidBuildToolsVersion + + sourceSets { + main { + manifest.srcFile 'AndroidManifest.xml' + java.srcDirs = [qt5AndroidDir + '/src', 'src', 'java'] + aidl.srcDirs = [qt5AndroidDir + '/src', 'src', 'aidl'] + res.srcDirs = [qt5AndroidDir + '/res', 'res'] + resources.srcDirs = ['src'] + renderscript.srcDirs = ['src'] + assets.srcDirs = ['assets'] + jniLibs.srcDirs = ['libs'] + } + } + + lintOptions { + abortOnError false + } +} diff --git a/Qt/accelbubble/android/gradle/wrapper/gradle-wrapper.jar b/Qt/accelbubble/android/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000..8c0fb64 Binary files /dev/null and b/Qt/accelbubble/android/gradle/wrapper/gradle-wrapper.jar differ diff --git a/Qt/accelbubble/android/gradle/wrapper/gradle-wrapper.properties b/Qt/accelbubble/android/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..1e61d1f --- /dev/null +++ b/Qt/accelbubble/android/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Wed Apr 10 15:27:10 PDT 2013 +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionUrl=http\://services.gradle.org/distributions/gradle-1.12-all.zip diff --git a/Qt/accelbubble/android/gradlew b/Qt/accelbubble/android/gradlew new file mode 100755 index 0000000..91a7e26 --- /dev/null +++ b/Qt/accelbubble/android/gradlew @@ -0,0 +1,164 @@ +#!/usr/bin/env bash + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS="" + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn ( ) { + echo "$*" +} + +die ( ) { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; +esac + +# For Cygwin, ensure paths are in UNIX format before anything is touched. +if $cygwin ; then + [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"` +fi + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >&- +APP_HOME="`pwd -P`" +cd "$SAVED" >&- + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules +function splitJvmOpts() { + JVM_OPTS=("$@") +} +eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS +JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" + +exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" diff --git a/Qt/accelbubble/android/gradlew.bat b/Qt/accelbubble/android/gradlew.bat new file mode 100644 index 0000000..aec9973 --- /dev/null +++ b/Qt/accelbubble/android/gradlew.bat @@ -0,0 +1,90 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS= + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windowz variants + +if not "%OS%" == "Windows_NT" goto win9xME_args +if "%@eval[2+2]" == "4" goto 4NT_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* +goto execute + +:4NT_args +@rem Get arguments from the 4NT Shell from JP Software +set CMD_LINE_ARGS=%$ + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/Qt/accelbubble/android/res/values/libs.xml b/Qt/accelbubble/android/res/values/libs.xml new file mode 100644 index 0000000..4d68673 --- /dev/null +++ b/Qt/accelbubble/android/res/values/libs.xml @@ -0,0 +1,25 @@ + + + + https://download.qt-project.org/ministro/android/qt5/qt-5.4 + + + + + + + + + + + + + + + + + + + + diff --git a/Qt/accelbubble/deployment.pri b/Qt/accelbubble/deployment.pri new file mode 100644 index 0000000..5441b63 --- /dev/null +++ b/Qt/accelbubble/deployment.pri @@ -0,0 +1,27 @@ +android-no-sdk { + target.path = /data/user/qt + export(target.path) + INSTALLS += target +} else:android { + x86 { + target.path = /libs/x86 + } else: armeabi-v7a { + target.path = /libs/armeabi-v7a + } else { + target.path = /libs/armeabi + } + export(target.path) + INSTALLS += target +} else:unix { + isEmpty(target.path) { + qnx { + target.path = /tmp/$${TARGET}/bin + } else { + target.path = /opt/$${TARGET}/bin + } + export(target.path) + } + INSTALLS += target +} + +export(INSTALLS) diff --git a/Qt/accelbubble/main.cpp b/Qt/accelbubble/main.cpp new file mode 100644 index 0000000..1e5bf58 --- /dev/null +++ b/Qt/accelbubble/main.cpp @@ -0,0 +1,12 @@ +#include +#include + +int main(int argc, char *argv[]) +{ + QApplication app(argc, argv); + + QQmlApplicationEngine engine; + engine.load(QUrl(QStringLiteral("qrc:/main.qml"))); + + return app.exec(); +} diff --git a/Qt/accelbubble/main.qml b/Qt/accelbubble/main.qml new file mode 100644 index 0000000..68be54c --- /dev/null +++ b/Qt/accelbubble/main.qml @@ -0,0 +1,85 @@ +import QtQuick 2.2 +import QtQuick.Controls 1.1 + +import QtSensors 5.0 + +ApplicationWindow { + title: qsTr("Accelerate Bubble") + id: mainWindow + width: 640 + height: 480 + visible: true + + Image { + id: bubble + source: "Bluebubble.svg" + smooth: true + property real centerX: mainWindow.width / 2 + property real centerY: mainWindow.height / 2 + property real bubbleCenter: bubble.width / 2 + x: centerX - bubbleCenter + y: centerY - bubbleCenter + + Behavior on y { + SmoothedAnimation { + easing.type: Easing.Linear + duration: 100 + } + } + Behavior on x { + SmoothedAnimation { + easing.type: Easing.Linear + duration: 100 + } + } + } + Accelerometer { + id: accel + dataRate: 100 + active:true + + onReadingChanged: { + var newX = (bubble.x + calcRoll(accel.reading.x, accel.reading.y, accel.reading.z) * 0.8) + var newY = (bubble.y - calcPitch(accel.reading.x, accel.reading.y, accel.reading.z) * 0.8) + + if (isNaN(newX) || isNaN(newY)) + return; + + if (newX < 0) + newX = 0 + + if (newX > mainWindow.width - bubble.width) + newX = mainWindow.width - bubble.width + + if (newY < 18) + newY = 18 + + if (newY > mainWindow.height - bubble.height) + newY = mainWindow.height - bubble.height + + bubble.x = newX + bubble.y = newY + } + } + + function calcPitch(x, y, z) { + return -(Math.atan(y / Math.sqrt(x * x + z * z)) * 57.2957795); + } + function calcRoll(x, y, z) { + return -(Math.atan(x / Math.sqrt(y * y + z * z)) * 57.2957795); + } + + menuBar: MenuBar { + Menu { + title: qsTr("File") + MenuItem { + text: qsTr("&Open") + onTriggered: console.log("Open action triggered"); + } + MenuItem { + text: qsTr("Exit") + onTriggered: Qt.quit(); + } + } + } +} diff --git a/Qt/accelbubble/qml.qrc b/Qt/accelbubble/qml.qrc new file mode 100644 index 0000000..83caaa3 --- /dev/null +++ b/Qt/accelbubble/qml.qrc @@ -0,0 +1,6 @@ + + + main.qml + Bluebubble.svg + + diff --git a/Qt/test/android/build.gradle b/Qt/test/android/build.gradle new file mode 100644 index 0000000..81acf81 --- /dev/null +++ b/Qt/test/android/build.gradle @@ -0,0 +1,57 @@ +buildscript { + repositories { + jcenter() + } + + dependencies { + classpath 'com.android.tools.build:gradle:1.0.0' + } +} + +allprojects { + repositories { + jcenter() + } +} + +apply plugin: 'com.android.application' + +dependencies { + compile fileTree(dir: 'libs', include: ['*.jar']) +} + +android { + /******************************************************* + * The following variables: + * - androidBuildToolsVersion, + * - androidCompileSdkVersion + * - qt5AndroidDir - holds the path to qt android files + * needed to build any Qt application + * on Android. + * + * are defined in gradle.properties file. This file is + * updated by QtCreator and androiddeployqt tools. + * Changing them manually might break the compilation! + *******************************************************/ + + compileSdkVersion androidCompileSdkVersion.toInteger() + + buildToolsVersion androidBuildToolsVersion + + sourceSets { + main { + manifest.srcFile 'AndroidManifest.xml' + java.srcDirs = [qt5AndroidDir + '/src', 'src', 'java'] + aidl.srcDirs = [qt5AndroidDir + '/src', 'src', 'aidl'] + res.srcDirs = [qt5AndroidDir + '/res', 'res'] + resources.srcDirs = ['src'] + renderscript.srcDirs = ['src'] + assets.srcDirs = ['assets'] + jniLibs.srcDirs = ['libs'] + } + } + + lintOptions { + abortOnError false + } +} diff --git a/Qt/test/android/gradle/wrapper/gradle-wrapper.jar b/Qt/test/android/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000..8c0fb64 Binary files /dev/null and b/Qt/test/android/gradle/wrapper/gradle-wrapper.jar differ diff --git a/Qt/test/android/gradle/wrapper/gradle-wrapper.properties b/Qt/test/android/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..1e61d1f --- /dev/null +++ b/Qt/test/android/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Wed Apr 10 15:27:10 PDT 2013 +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionUrl=http\://services.gradle.org/distributions/gradle-1.12-all.zip diff --git a/Qt/test/android/gradlew b/Qt/test/android/gradlew new file mode 100755 index 0000000..91a7e26 --- /dev/null +++ b/Qt/test/android/gradlew @@ -0,0 +1,164 @@ +#!/usr/bin/env bash + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS="" + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn ( ) { + echo "$*" +} + +die ( ) { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; +esac + +# For Cygwin, ensure paths are in UNIX format before anything is touched. +if $cygwin ; then + [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"` +fi + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >&- +APP_HOME="`pwd -P`" +cd "$SAVED" >&- + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules +function splitJvmOpts() { + JVM_OPTS=("$@") +} +eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS +JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" + +exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" diff --git a/Qt/test/android/gradlew.bat b/Qt/test/android/gradlew.bat new file mode 100644 index 0000000..aec9973 --- /dev/null +++ b/Qt/test/android/gradlew.bat @@ -0,0 +1,90 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS= + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windowz variants + +if not "%OS%" == "Windows_NT" goto win9xME_args +if "%@eval[2+2]" == "4" goto 4NT_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* +goto execute + +:4NT_args +@rem Get arguments from the 4NT Shell from JP Software +set CMD_LINE_ARGS=%$ + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/Qt/test/android/res/values/libs.xml b/Qt/test/android/res/values/libs.xml new file mode 100644 index 0000000..4d68673 --- /dev/null +++ b/Qt/test/android/res/values/libs.xml @@ -0,0 +1,25 @@ + + + + https://download.qt-project.org/ministro/android/qt5/qt-5.4 + + + + + + + + + + + + + + + + + + + + diff --git a/Qt/test/main.cpp b/Qt/test/main.cpp new file mode 100644 index 0000000..375d37b --- /dev/null +++ b/Qt/test/main.cpp @@ -0,0 +1,14 @@ +#include "mainwindow.h" +#include +#include + +int main(int argc, char *argv[]) +{ + QApplication a(argc, argv); +// MainWindow w; +// w.show(); + QPushButton button; + button.show(); + + return a.exec(); +} diff --git a/Qt/test/mainwindow.cpp b/Qt/test/mainwindow.cpp new file mode 100644 index 0000000..49d64fc --- /dev/null +++ b/Qt/test/mainwindow.cpp @@ -0,0 +1,14 @@ +#include "mainwindow.h" +#include "ui_mainwindow.h" + +MainWindow::MainWindow(QWidget *parent) : + QMainWindow(parent), + ui(new Ui::MainWindow) +{ + ui->setupUi(this); +} + +MainWindow::~MainWindow() +{ + delete ui; +} diff --git a/Qt/test/mainwindow.h b/Qt/test/mainwindow.h new file mode 100644 index 0000000..a3948a9 --- /dev/null +++ b/Qt/test/mainwindow.h @@ -0,0 +1,22 @@ +#ifndef MAINWINDOW_H +#define MAINWINDOW_H + +#include + +namespace Ui { +class MainWindow; +} + +class MainWindow : public QMainWindow +{ + Q_OBJECT + +public: + explicit MainWindow(QWidget *parent = 0); + ~MainWindow(); + +private: + Ui::MainWindow *ui; +}; + +#endif // MAINWINDOW_H diff --git a/Qt/test/mainwindow.ui b/Qt/test/mainwindow.ui new file mode 100644 index 0000000..7ebf873 --- /dev/null +++ b/Qt/test/mainwindow.ui @@ -0,0 +1,21 @@ + + MainWindow + + + + 0 + 0 + 800 + 480 + + + + MainWindow + + + + + + + + diff --git a/Qt/test/test.pro b/Qt/test/test.pro new file mode 100644 index 0000000..a6eb344 --- /dev/null +++ b/Qt/test/test.pro @@ -0,0 +1,34 @@ +#------------------------------------------------- +# +# Project created by QtCreator 2015-03-23T22:33:31 +# +#------------------------------------------------- + +QT += core gui + +greaterThan(QT_MAJOR_VERSION, 4): QT += widgets + +TARGET = test +TEMPLATE = app + + +SOURCES += main.cpp\ + mainwindow.cpp + +HEADERS += mainwindow.h + +FORMS += mainwindow.ui + +CONFIG += mobility +MOBILITY = + +DISTFILES += \ + android/gradle/wrapper/gradle-wrapper.jar \ + android/gradlew.bat \ + android/res/values/libs.xml \ + android/build.gradle \ + android/gradle/wrapper/gradle-wrapper.properties \ + android/gradlew + +ANDROID_PACKAGE_SOURCE_DIR = $$PWD/android + diff --git a/c_programming/network/udp/Makefile b/c_programming/network/udp/Makefile new file mode 100644 index 0000000..1059bda --- /dev/null +++ b/c_programming/network/udp/Makefile @@ -0,0 +1,12 @@ +EXEC = server client + +all: $(EXEC) + +server: server.c + gcc -Wall -o $@ $< + +client: client.c + gcc -Wall -o $@ $< + +clean: + rm -rf server client diff --git a/c_programming/network/udp/client b/c_programming/network/udp/client new file mode 100755 index 0000000..36ff7d1 Binary files /dev/null and b/c_programming/network/udp/client differ diff --git a/c_programming/network/udp/client.c b/c_programming/network/udp/client.c new file mode 100644 index 0000000..0795a1f --- /dev/null +++ b/c_programming/network/udp/client.c @@ -0,0 +1,121 @@ +/* + * client.c -- UDP client + * + * Written by Harold André + * E-mail + * + * Started on Fri Nov 13 19:42:59 2015 Harold André + * Last update Mon Nov 23 20:15:13 2015 Harold André + * + * compile command: + * + * gcc -Wall -o client client.c + * + */ + +#include +// strncpy +#include +//close +#include + +// inet_aton +#include + +// sockaddr_in +#include + +// socket, sendto +#include +#include + +#define BUFSIZE 100 + +int init_addr(struct sockaddr_in *, char *, int); + +int main(int argc, char *argv[]) +{ + int sock = 0; + struct sockaddr_in server_addr; + struct sockaddr_in my_addr; + ssize_t wrote_bytes = 0; + ssize_t read_bytes = 0; + int data_size = 0; + char buf[BUFSIZE] = {0}; + + data_size = strlen(argv[1]) + 1; + + if (data_size > BUFSIZE) { + printf("Error, too long string"); + return -1; + } else { + strncpy(buf, argv[1], data_size); + } + + // create socket + if ((sock = socket(AF_INET, SOCK_DGRAM, 0)) < 0) { + perror("socket"); + return -1; + } + + // init my address + if (init_addr(&my_addr, "192.168.1.136", 8765) < 0) { + fprintf(stdout, "init_addr error\n"); + return -1; + } + + // associate my(sender/client) socket and address and port + if (bind(sock, (struct sockaddr *) &my_addr, + sizeof(struct sockaddr_in)) < 0) { + close(sock); + perror("bind"); + return -1; + } + + // init server address + if (init_addr(&server_addr, "127.0.0.1", 1234) < 0) { + fprintf(stdout, "init_addr error\n"); + return -1; + } + + printf("Send on %s:%d\n", inet_ntoa(server_addr.sin_addr), ntohs(server_addr.sin_port)); + printf("Listen on %s:%d\n", inet_ntoa(my_addr.sin_addr), ntohs(my_addr.sin_port)); + + // send data + if ((wrote_bytes = sendto(sock, buf, data_size, 0, (struct sockaddr*) &server_addr, sizeof(struct sockaddr_in))) < 0) { + perror("sendto"); + return -1; + } else { + printf("%d bytes sended\nSended data: %s\n", (int)wrote_bytes, buf); + + // received data + if ((read_bytes = recv(sock, buf, BUFSIZE, 0)) < 0) { + perror("recv"); + return -1; + } else { + printf("%d bytes received\nReceived data: %s\n", (int)read_bytes, buf); + } + } + + return 0; +} + +int init_addr(struct sockaddr_in *addr, char *ip, int port) +{ + // init sockaddr structure + memset(addr, 0, sizeof (struct sockaddr_in)); + + // set family + addr->sin_family = AF_INET; + + // set port + addr->sin_port = htons(port); + + // set address + if (inet_aton(ip, &addr->sin_addr) == 0) { + fprintf(stdout, "bad address: %s\n", ip); + return -1; + } + + return 0; +} diff --git a/c_programming/network/udp/server b/c_programming/network/udp/server new file mode 100755 index 0000000..d175207 Binary files /dev/null and b/c_programming/network/udp/server differ diff --git a/c_programming/network/udp/server.c b/c_programming/network/udp/server.c new file mode 100644 index 0000000..19ae4bf --- /dev/null +++ b/c_programming/network/udp/server.c @@ -0,0 +1,109 @@ +/* + * server.c -- UDP server + * + * Written by Harold André + * E-mail + * + * Started on Fri Nov 13 19:42:26 2015 Harold André + * Last update Mon Nov 23 20:17:16 2015 Harold André + * + * compile command: + * + * gcc -Wall -o server server.c + * + */ + +#include +#include // memset +//close +#include + +// inet_aton +#include +#include + +// socket, recv +#include +#include + +#define BUFSIZE 100 + +int init_addr(struct sockaddr_in *, char *, int); + +int main(int argc, char *argv[]) +{ + int sock; + struct sockaddr_in addr; + struct sockaddr_in src_addr; + socklen_t len_inet = 0; + ssize_t read_bytes = 0; + ssize_t wrote_bytes = 0; + int data_size = 0; + char buf[BUFSIZE]; + + // create socket + if ((sock = socket(AF_INET, SOCK_DGRAM, 0)) < 0) { + perror("socket"); + return -1; + } + + // init server address + if (init_addr(&addr, "127.0.0.1", 1234) < 0) { + fprintf(stdout, "init_addr error\n"); + return -1; + } + + // associate socket and address and port + if (bind(sock, (struct sockaddr *) &addr, + sizeof(struct sockaddr_in)) < 0) { + close(sock); + perror("bind"); + return -1; + } + + len_inet = sizeof(src_addr); + + printf("Listen on %s:%d\n", inet_ntoa(addr.sin_addr), ntohs(addr.sin_port)); + + // received data + for (;;) { + if ((read_bytes = recvfrom(sock, buf, BUFSIZE, 0, (struct sockaddr*) &src_addr, &len_inet)) < 0) { + perror("recvfrom"); + return -1; + } else { + printf("Received from: %s, %d\n", inet_ntoa(src_addr.sin_addr), ntohs(src_addr.sin_port)); + printf("%d bytes received\nReceived data: %s\n", (int)read_bytes, buf); + + strcpy(buf, "ack"); + data_size = strlen(buf) + 1; + + // send data + if ((wrote_bytes = sendto(sock, buf, data_size, 0, (struct sockaddr*) &src_addr, sizeof(struct sockaddr_in))) < 0) { + perror("sendto"); + return -1; + } + } + } + + return 0; +} + +int init_addr(struct sockaddr_in *addr, char *ip, int port) +{ + // init sockaddr structure + memset(addr, 0, sizeof (struct sockaddr_in)); + + // set family + addr->sin_family = AF_INET; + + // set port + addr->sin_port = htons(port); + + // set address + if (inet_aton(ip, &addr->sin_addr) == 0) { + fprintf(stdout, "bad address: %s\n", ip); + return -1; + } + + return 0; +} diff --git a/misc/Makefile_template b/misc/Makefile_template.mk similarity index 100% rename from misc/Makefile_template rename to misc/Makefile_template.mk diff --git a/misc/emacs/.emacs b/misc/emacs/.emacs index e86f892..ece6dc5 100644 --- a/misc/emacs/.emacs +++ b/misc/emacs/.emacs @@ -79,7 +79,15 @@ (global-set-key [M-right] 'forward-sexp) ;; Aller à la parenthèse Fermante correspondante : (global-set-key [M-left] 'backward-sexp) - + +;;------------------------------------------------------------------------------ +;; Add directory "~/.emacs.d/lisp/" to load path +;;;TOFIX: Don't work !!! +(add-to-list 'load-path (expand-file-name "~/.emacs.d/lisp/")) +;(let ((default-directory "~/.emacs.d/lisp/")) +; (normal-top-level-add-to-load-path '(".")) +; (normal-top-level-add-subdirs-to-load-path)) + ;;------------------------------------------------------------------------------ ;; Find word under cursor with 'F3' key (require 'etags) ;; provides `find-tag-default' in Emacs 21. @@ -179,7 +187,7 @@ (setq auto-insert-query nil) ;;(add-to-list 'load-path "~/.emacs.d/auto-insert-mode/") ;;(load-library "src_file_template") -(load-file "~/.emacs.d/auto-insert-mode/src_file_template.el") +(load-file "~/.emacs.d/lisp/auto-insert-mode/src_file_template.el") (setq auto-insert-alist (append '(((c-mode . "C Mode") . std-file-header)) auto-insert-alist)) @@ -214,7 +222,7 @@ ;;------------------------------------------------------------------------------- ;; Thème à contraste faible ;; https://github.com/bbatsov/zenburn-emacs -(add-to-list 'custom-theme-load-path "~/.emacs.d/themes/") +(add-to-list 'custom-theme-load-path "~/.emacs.d/lisp/themes/") (load-theme 'zenburn t) @@ -222,3 +230,20 @@ ;; Taille de police à 10 ;; La valeur est de 1/10pt donc 100 donne 10pt (set-face-attribute 'default (selected-frame) :height 100) + +;;------------------------------------------------------------------------------- +;; Load cscope support +(require 'xcscope) + +;;------------------------------------------------------------------------------- +;; 80 column line indicator +(add-to-list 'load-path "~/.emacs.d/lisp/") +(require 'fill-column-indicator) +(setq fci-rule-column 80) +(define-globalized-minor-mode my-global-fci-mode fci-mode turn-on-fci-mode) +(my-global-fci-mode 1) +(setq fci-rule-color "grey33") + +;;------------------------------------------------------------------------------- +;; Load CEDET +(load-file "~/temp/cedet/cedet-bzr/trunk/cedet-devel-load.el")