diff --git a/.travis.yml b/.travis.yml index 2bebc22..df485a4 100644 --- a/.travis.yml +++ b/.travis.yml @@ -11,29 +11,46 @@ matrix: - env: - BUILD_SCRIPT=debian_travis.sh - QMAKE_FLAGS_QT4=QMAKE_CXXFLAGS+=-Wno-missing-field-initializers + - RELEASE_LABEL="Debian 32-Bit Package" - DEBIAN_VERSION=jessie - DOCKER_USER=i386 - APT_INSTALL=clang - env: - BUILD_SCRIPT=debian_travis.sh - QMAKE_FLAGS_QT4=QMAKE_CXXFLAGS+=-Wno-missing-field-initializers + - RELEASE_LABEL="Debian 64-Bit Package" - DEBIAN_VERSION=jessie - DOCKER_USER=amd64 - APT_INSTALL=clang - env: - BUILD_SCRIPT=windows_travis.sh - QT_SELECT=qt5-i686-w64-mingw32 + - RELEASE_LABEL="Windows 32-Bit Portable" - env: - BUILD_SCRIPT=windows_travis.sh - QT_SELECT=qt5-x86_64-w64-mingw32 + - RELEASE_LABEL="Windows 64-Bit Portable" - EXECUTABLE_ARCH=_x64 + - env: + - BUILD_SCRIPT=windows_travis.sh + - QT_SELECT=qt5-x86_64-w64-mingw32 + - PACKAGE_CODE=Dropbox + - env: + - BUILD_SCRIPT=windows_travis.sh + - QT_SELECT=qt5-x86_64-w64-mingw32 + - PACKAGE_CODE=gta5-mods - env: - BUILD_SCRIPT=wininstall_travis.sh - QT_SELECT=qt5-x86_64-w64-mingw32 - + - RELEASE_LABEL="Windows 64-Bit Installer" + - os: osx + env: + - BUILD_SCRIPT=osx_travis.sh + - RELEASE_LABEL="Mac OS X 64-Bit Disk Image" + before_install: - ".travis/source.sh" - + script: - ".travis/travis.sh" @@ -41,6 +58,7 @@ deploy: provider: releases api_key: secure: o7VneEz1aHfdVwZvOZLfopf6uJWNrFsZaBvunTmXFzpmNFhlNS1qwqgMUkIA2yBRbZ3wIzVs4vfwIHv7W9yE/PqK+AYL+R8+AwKGrwlgT4HqJNuk6VM/LNJ6GwT/qkQuaoOVw29bUjmzzgIRdHmw53SlJv6Hh1VE8HphlTT//aex6nCfcFhUZ0BETdZDWz5FSHwL3NalUoqfKfQrJeky5RXzCyCANQC2tKt0bV46GaWIgWrDo2KCTNqPtRWWf5GDmnkXE5IYRMQ3mXvO9iYh0v5Y2jo4PiXGUiFUU6Z3aAWFAiPdGclrBO697cf3lCTzDMhuCETR153qFYsLShUlFf61ITAmCeHAWETjZDri0lmPONo3GoNB6alGfYEA51qw14kXakrTpICtTJj7gw/gtUYOabW6hrzmieNzMBIy62RikDPjyakFnuwW2qNHRlD65e0jYv+6nCpb6E+OV16Ysh1zhV2vTfpfzVmSuyu2J+ELqXD3OZCXRSPpDIih9UQ8335p8FBji6jHORcgym/TRgdgRmENibh8tLzWp+UjpWHuWfcpvZgOskjfwU0iDMCayMJ7tDpOhXHcAhDRnd6XRIiOJ5YZCzflj2nEwmt3YUd7DwXS/AU+WHOmcNQBjXBxF/FJa35XXcy3HKJM5TTKqtph3medo30us5yXHeG6NNg= + label: ${RELEASE_LABEL} file_glob: true file: assets/* skip_cleanup: true diff --git a/.travis/debian_build.sh b/.travis/debian_build.sh index be16a47..52e6608 100755 --- a/.travis/debian_build.sh +++ b/.travis/debian_build.sh @@ -21,11 +21,11 @@ mkdir -p /usr/share/gta5view && \ # Starting build cd qt5 && \ -qmake -qt=5 -spec linux-clang GTA5SYNC_PREFIX=/usr QMAKE_CXXFLAGS+=-std=gnu++11 ${QMAKE_FLAGS_QT5} DEFINES+=GTA5SYNC_BUILDTYPE_REL "DEFINES+=GTA5SYNC_BUILDCODE=\\\\\\\"GitHub\\\\\\\"" "DEFINES+=GTA5SYNC_APPVER=\\\\\\\"${APPLICATION_VERSION}\\\\\\\"" DEFINES+=GTA5SYNC_QCONF DEFINES+=GTA5SYNC_TELEMETRY "DEFINES+=GTA5SYNC_TELEMETRY_WEBURL=\\\\\\\"https://dev.syping.de/gta5view-userstats/\\\\\\\"" ../../gta5view.pro && \ +qmake -qt=5 -spec linux-clang GTA5SYNC_PREFIX=/usr QMAKE_CXXFLAGS+=-std=gnu++11 ${QMAKE_FLAGS_QT5} DEFINES+=GTA5SYNC_BUILDTYPE_DEV "DEFINES+=GTA5SYNC_BUILDCODE=\\\\\\\"${PACKAGE_CODE}\\\\\\\"" "DEFINES+=GTA5SYNC_APPVER=\\\\\\\"${APPLICATION_VERSION}\\\\\\\"" DEFINES+=GTA5SYNC_QCONF DEFINES+=GTA5SYNC_TELEMETRY "DEFINES+=GTA5SYNC_TELEMETRY_WEBURL=\\\\\\\"https://dev.syping.de/gta5view-userstats/\\\\\\\"" ../../gta5view.pro && \ make -j 4 && \ checkinstall -D --default --nodoc --install=no --pkgname=gta5view-qt5 --pkgversion=${PACKAGE_VERSION} --pkgrelease=${PACKAGE_BUILD} --pkggroup=utility --maintainer="Syping \" --requires=libqt5core5a,libqt5gui5,libqt5network5,libqt5widgets5,qttranslations5-l10n --conflicts=gta5view,gta5view-qt4 --replaces=gta5view,gta5view-qt4 --pakdir=${PROJECT_DIR}/assets && \ cd .. && \ cd qt4 && \ -qmake -qt=4 GTA5SYNC_PREFIX=/usr QMAKE_CXXFLAGS+=-std=gnu++11 ${QMAKE_FLAGS_QT4} DEFINES+=GTA5SYNC_BUILDTYPE_REL "DEFINES+=GTA5SYNC_BUILDCODE=\\\\\\\"GitHub\\\\\\\"" "DEFINES+=GTA5SYNC_APPVER=\\\\\\\"${APPLICATION_VERSION}\\\\\\\"" DEFINES+=GTA5SYNC_QCONF ../../gta5view.pro && \ +qmake -qt=4 GTA5SYNC_PREFIX=/usr QMAKE_CXXFLAGS+=-std=gnu++11 ${QMAKE_FLAGS_QT4} DEFINES+=GTA5SYNC_BUILDTYPE_DEV "DEFINES+=GTA5SYNC_BUILDCODE=\\\\\\\"${PACKAGE_CODE}\\\\\\\"" "DEFINES+=GTA5SYNC_APPVER=\\\\\\\"${APPLICATION_VERSION}\\\\\\\"" DEFINES+=GTA5SYNC_QCONF ../../gta5view.pro && \ make -j 4 && \ checkinstall -D --default --nodoc --install=no --pkgname=gta5view-qt4 --pkgversion=${PACKAGE_VERSION} --pkgrelease=${PACKAGE_BUILD} --pkggroup=utility --maintainer="Syping \" --requires=libqtcore4,libqtgui4,libqt4-network,qtcore4-l10n --conflicts=gta5view,gta5view-qt5 --replaces=gta5view,gta5view-qt5 --pakdir=${PROJECT_DIR}/assets diff --git a/.travis/debian_travis.sh b/.travis/debian_travis.sh index 8fa5ed8..73ed796 100755 --- a/.travis/debian_travis.sh +++ b/.travis/debian_travis.sh @@ -12,4 +12,4 @@ docker pull ${DOCKER_IMAGE} && \ docker run --rm \ -v "${PROJECT_DIR}:${PROJECT_DIR_DOCKER}" \ ${DOCKER_IMAGE} \ - /bin/bash -c "export PROJECT_DIR=${PROJECT_DIR_DOCKER} && export QT_SELECT=${QT_SELECT} && export APPLICATION_VERSION=${APPLICATION_VERSION} && export APT_INSTALL=${APT_INSTALL} && export QMAKE_FLAGS_QT4=${QMAKE_FLAGS_QT4} && export QMAKE_FLAGS_QT5=${QMAKE_FLAGS_QT5} && export PACKAGE_VERSION=${PACKAGE_VERSION} && export PACKAGE_BUILD=${PACKAGE_BUILD} && export EXECUTABLE_VERSION=${EXECUTABLE_VERSION} && export EXECUTABLE_ARCH=${EXECUTABLE_ARCH} && cd ${PROJECT_DIR_DOCKER} && .travis/debian_install.sh && .travis/debian_build.sh" + /bin/bash -c "export PROJECT_DIR=${PROJECT_DIR_DOCKER} && export QT_SELECT=${QT_SELECT} && export APPLICATION_VERSION=${APPLICATION_VERSION} && export APT_INSTALL=${APT_INSTALL} && export QMAKE_FLAGS_QT4=${QMAKE_FLAGS_QT4} && export QMAKE_FLAGS_QT5=${QMAKE_FLAGS_QT5} && export PACKAGE_VERSION=${PACKAGE_VERSION} && export PACKAGE_BUILD=${PACKAGE_BUILD} && export PACKAGE_CODE=${PACKAGE_CODE} && export EXECUTABLE_VERSION=${EXECUTABLE_VERSION} && export EXECUTABLE_ARCH=${EXECUTABLE_ARCH} && cd ${PROJECT_DIR_DOCKER} && .travis/debian_install.sh && .travis/debian_build.sh" diff --git a/.travis/dropbox_uploader.enc b/.travis/dropbox_uploader.enc new file mode 100644 index 0000000..60a77f9 --- /dev/null +++ b/.travis/dropbox_uploader.enc @@ -0,0 +1 @@ +Po§èQƒŠN×<ì1x£%™{ ¬Èw|RtZvö[kÎçòéAZãå2Á›øŸÎ«`ïJÑ,4vÖÏ¥@€®¦eÊ¥~U$+‡žóP€÷|ˆy<à±&–Hê¤ \ No newline at end of file diff --git a/.travis/dropbox_uploader.sh b/.travis/dropbox_uploader.sh new file mode 100644 index 0000000..ca8ee36 --- /dev/null +++ b/.travis/dropbox_uploader.sh @@ -0,0 +1,1763 @@ +#!/usr/bin/env bash +# +# Dropbox Uploader +# +# Copyright (C) 2010-2017 Andrea Fabrizi +# +# This program 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 2 of the License, or +# (at your option) any later version. +# +# This program 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 this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# + +#Default configuration file +CONFIG_FILE=~/.dropbox_uploader + +#Default chunk size in Mb for the upload process +#It is recommended to increase this value only if you have enough free space on your /tmp partition +#Lower values may increase the number of http requests +CHUNK_SIZE=50 + +#Curl location +#If not set, curl will be searched into the $PATH +#CURL_BIN="/usr/bin/curl" + +#Default values +TMP_DIR="/tmp" +DEBUG=0 +QUIET=0 +SHOW_PROGRESSBAR=0 +SKIP_EXISTING_FILES=0 +ERROR_STATUS=0 +EXCLUDE=() + +#Don't edit these... +API_LONGPOLL_FOLDER="https://notify.dropboxapi.com/2/files/list_folder/longpoll" +API_CHUNKED_UPLOAD_START_URL="https://content.dropboxapi.com/2/files/upload_session/start" +API_CHUNKED_UPLOAD_FINISH_URL="https://content.dropboxapi.com/2/files/upload_session/finish" +API_CHUNKED_UPLOAD_APPEND_URL="https://content.dropboxapi.com/2/files/upload_session/append_v2" +API_UPLOAD_URL="https://content.dropboxapi.com/2/files/upload" +API_DOWNLOAD_URL="https://content.dropboxapi.com/2/files/download" +API_DELETE_URL="https://api.dropboxapi.com/2/files/delete" +API_MOVE_URL="https://api.dropboxapi.com/2/files/move" +API_COPY_URL="https://api.dropboxapi.com/2/files/copy" +API_METADATA_URL="https://api.dropboxapi.com/2/files/get_metadata" +API_LIST_FOLDER_URL="https://api.dropboxapi.com/2/files/list_folder" +API_LIST_FOLDER_CONTINUE_URL="https://api.dropboxapi.com/2/files/list_folder/continue" +API_ACCOUNT_INFO_URL="https://api.dropboxapi.com/2/users/get_current_account" +API_ACCOUNT_SPACE_URL="https://api.dropboxapi.com/2/users/get_space_usage" +API_MKDIR_URL="https://api.dropboxapi.com/2/files/create_folder" +API_SHARE_URL="https://api.dropboxapi.com/2/sharing/create_shared_link_with_settings" +API_SHARE_LIST="https://api.dropboxapi.com/2/sharing/list_shared_links" +API_SAVEURL_URL="https://api.dropboxapi.com/2/files/save_url" +API_SAVEURL_JOBSTATUS_URL="https://api.dropboxapi.com/2/files/save_url/check_job_status" +API_SEARCH_URL="https://api.dropboxapi.com/2/files/search" +APP_CREATE_URL="https://www.dropbox.com/developers/apps" +RESPONSE_FILE="$TMP_DIR/du_resp_$RANDOM" +CHUNK_FILE="$TMP_DIR/du_chunk_$RANDOM" +TEMP_FILE="$TMP_DIR/du_tmp_$RANDOM" +BIN_DEPS="sed basename date grep stat dd mkdir" +VERSION="1.0" + +umask 077 + +#Check the shell +if [ -z "$BASH_VERSION" ]; then + echo -e "Error: this script requires the BASH shell!" + exit 1 +fi + +shopt -s nullglob #Bash allows filename patterns which match no files to expand to a null string, rather than themselves +shopt -s dotglob #Bash includes filenames beginning with a "." in the results of filename expansion + +#Check temp folder +if [[ ! -d "$TMP_DIR" ]]; then + echo -e "Error: the temporary folder $TMP_DIR doesn't exists!" + echo -e "Please edit this script and set the TMP_DIR variable to a valid temporary folder to use." + exit 1 +fi + +#Look for optional config file parameter +while getopts ":qpskdhf:x:" opt; do + case $opt in + + f) + CONFIG_FILE=$OPTARG + ;; + + d) + DEBUG=1 + ;; + + q) + QUIET=1 + ;; + + p) + SHOW_PROGRESSBAR=1 + ;; + + k) + CURL_ACCEPT_CERTIFICATES="-k" + ;; + + s) + SKIP_EXISTING_FILES=1 + ;; + + h) + HUMAN_READABLE_SIZE=1 + ;; + + x) + EXCLUDE+=( $OPTARG ) + ;; + + \?) + echo "Invalid option: -$OPTARG" >&2 + exit 1 + ;; + + :) + echo "Option -$OPTARG requires an argument." >&2 + exit 1 + ;; + + esac +done + +if [[ $DEBUG != 0 ]]; then + echo $VERSION + uname -a 2> /dev/null + cat /etc/issue 2> /dev/null + set -x + RESPONSE_FILE="$TMP_DIR/du_resp_debug" +fi + +if [[ $CURL_BIN == "" ]]; then + BIN_DEPS="$BIN_DEPS curl" + CURL_BIN="curl" +fi + +#Dependencies check +which $BIN_DEPS > /dev/null +if [[ $? != 0 ]]; then + for i in $BIN_DEPS; do + which $i > /dev/null || + NOT_FOUND="$i $NOT_FOUND" + done + echo -e "Error: Required program could not be found: $NOT_FOUND" + exit 1 +fi + +#Check if readlink is installed and supports the -m option +#It's not necessary, so no problem if it's not installed +which readlink > /dev/null +if [[ $? == 0 && $(readlink -m "//test" 2> /dev/null) == "/test" ]]; then + HAVE_READLINK=1 +else + HAVE_READLINK=0 +fi + +#Forcing to use the builtin printf, if it's present, because it's better +#otherwise the external printf program will be used +#Note that the external printf command can cause character encoding issues! +builtin printf "" 2> /dev/null +if [[ $? == 0 ]]; then + PRINTF="builtin printf" + PRINTF_OPT="-v o" +else + PRINTF=$(which printf) + if [[ $? != 0 ]]; then + echo -e "Error: Required program could not be found: printf" + fi + PRINTF_OPT="" +fi + +#Print the message based on $QUIET variable +function print +{ + if [[ $QUIET == 0 ]]; then + echo -ne "$1"; + fi +} + +#Returns unix timestamp +function utime +{ + date '+%s' +} + +#Remove temporary files +function remove_temp_files +{ + if [[ $DEBUG == 0 ]]; then + rm -fr "$RESPONSE_FILE" + rm -fr "$CHUNK_FILE" + rm -fr "$TEMP_FILE" + fi +} + +#Converts bytes to human readable format +function convert_bytes +{ + if [[ $HUMAN_READABLE_SIZE == 1 && "$1" != "" ]]; then + if (($1 > 1073741824));then + echo $(($1/1073741824)).$(($1%1073741824/100000000))"G"; + elif (($1 > 1048576));then + echo $(($1/1048576)).$(($1%1048576/100000))"M"; + elif (($1 > 1024));then + echo $(($1/1024)).$(($1%1024/100))"K"; + else + echo $1; + fi + else + echo $1; + fi +} + +#Returns the file size in bytes +function file_size +{ + #Generic GNU + SIZE=$(stat --format="%s" "$1" 2> /dev/null) + if [ $? -eq 0 ]; then + echo $SIZE + return + fi + + #Some embedded linux devices + SIZE=$(stat -c "%s" "$1" 2> /dev/null) + if [ $? -eq 0 ]; then + echo $SIZE + return + fi + + #BSD, OSX and other OSs + SIZE=$(stat -f "%z" "$1" 2> /dev/null) + if [ $? -eq 0 ]; then + echo $SIZE + return + fi + + echo "0" +} + + +#Usage +function usage +{ + echo -e "Dropbox Uploader v$VERSION" + echo -e "Andrea Fabrizi - andrea.fabrizi@gmail.com\n" + echo -e "Usage: $0 [PARAMETERS] COMMAND..." + echo -e "\nCommands:" + + echo -e "\t upload " + echo -e "\t download [LOCAL_FILE/DIR]" + echo -e "\t delete " + echo -e "\t move " + echo -e "\t copy " + echo -e "\t mkdir " + echo -e "\t list [REMOTE_DIR]" + echo -e "\t monitor [REMOTE_DIR] [TIMEOUT]" + echo -e "\t share " + echo -e "\t saveurl " + echo -e "\t search " + echo -e "\t info" + echo -e "\t space" + echo -e "\t unlink" + + echo -e "\nOptional parameters:" + echo -e "\t-f Load the configuration file from a specific file" + echo -e "\t-s Skip already existing files when download/upload. Default: Overwrite" + echo -e "\t-d Enable DEBUG mode" + echo -e "\t-q Quiet mode. Don't show messages" + echo -e "\t-h Show file sizes in human readable format" + echo -e "\t-p Show cURL progress meter" + echo -e "\t-k Doesn't check for SSL certificates (insecure)" + echo -e "\t-x Ignores/excludes directories or files from syncing. -x filename -x directoryname. example: -x .git" + + echo -en "\nFor more info and examples, please see the README file.\n\n" + remove_temp_files + exit 1 +} + +#Check the curl exit code +function check_http_response +{ + CODE=$? + + #Checking curl exit code + case $CODE in + + #OK + 0) + + ;; + + #Proxy error + 5) + print "\nError: Couldn't resolve proxy. The given proxy host could not be resolved.\n" + + remove_temp_files + exit 1 + ;; + + #Missing CA certificates + 60|58|77) + print "\nError: cURL is not able to performs peer SSL certificate verification.\n" + print "Please, install the default ca-certificates bundle.\n" + print "To do this in a Debian/Ubuntu based system, try:\n" + print " sudo apt-get install ca-certificates\n\n" + print "If the problem persists, try to use the -k option (insecure).\n" + + remove_temp_files + exit 1 + ;; + + 6) + print "\nError: Couldn't resolve host.\n" + + remove_temp_files + exit 1 + ;; + + 7) + print "\nError: Couldn't connect to host.\n" + + remove_temp_files + exit 1 + ;; + + esac + + #Checking response file for generic errors + if grep -q "HTTP/1.1 400" "$RESPONSE_FILE"; then + ERROR_MSG=$(sed -n -e 's/{"error": "\([^"]*\)"}/\1/p' "$RESPONSE_FILE") + + case $ERROR_MSG in + *access?attempt?failed?because?this?app?is?not?configured?to?have*) + echo -e "\nError: The Permission type/Access level configured doesn't match the DropBox App settings!\nPlease run \"$0 unlink\" and try again." + exit 1 + ;; + esac + + fi + +} + +#Urlencode +function urlencode +{ + #The printf is necessary to correctly decode unicode sequences + local string=$($PRINTF "${1}") + local strlen=${#string} + local encoded="" + + for (( pos=0 ; pos /dev/null + check_http_response + + local TYPE=$(sed -n 's/{".tag": *"*\([^"]*\)"*.*/\1/p' "$RESPONSE_FILE") + + case $TYPE in + + file) + echo "FILE" + ;; + + folder) + echo "DIR" + ;; + + deleted) + echo "ERR" + ;; + + *) + echo "ERR" + ;; + + esac +} + +#Generic upload wrapper around db_upload_file and db_upload_dir functions +#$1 = Local source file/dir +#$2 = Remote destination file/dir +function db_upload +{ + local SRC=$(normalize_path "$1") + local DST=$(normalize_path "$2") + + for j in "${EXCLUDE[@]}" + do : + if [[ $(echo "$SRC" | grep "$j" | wc -l) -gt 0 ]]; then + print "Skipping excluded file/dir: "$j + return + fi + done + + #Checking if the file/dir exists + if [[ ! -e $SRC && ! -d $SRC ]]; then + print " > No such file or directory: $SRC\n" + ERROR_STATUS=1 + return + fi + + #Checking if the file/dir has read permissions + if [[ ! -r $SRC ]]; then + print " > Error reading file $SRC: permission denied\n" + ERROR_STATUS=1 + return + fi + + TYPE=$(db_stat "$DST") + + #If DST it's a file, do nothing, it's the default behaviour + if [[ $TYPE == "FILE" ]]; then + DST="$DST" + + #if DST doesn't exists and doesn't ends with a /, it will be the destination file name + elif [[ $TYPE == "ERR" && "${DST: -1}" != "/" ]]; then + DST="$DST" + + #if DST doesn't exists and ends with a /, it will be the destination folder + elif [[ $TYPE == "ERR" && "${DST: -1}" == "/" ]]; then + local filename=$(basename "$SRC") + DST="$DST/$filename" + + #If DST it's a directory, it will be the destination folder + elif [[ $TYPE == "DIR" ]]; then + local filename=$(basename "$SRC") + DST="$DST/$filename" + fi + + #It's a directory + if [[ -d $SRC ]]; then + db_upload_dir "$SRC" "$DST" + + #It's a file + elif [[ -e $SRC ]]; then + db_upload_file "$SRC" "$DST" + + #Unsupported object... + else + print " > Skipping not regular file \"$SRC\"\n" + fi +} + +#Generic upload wrapper around db_chunked_upload_file and db_simple_upload_file +#The final upload function will be choosen based on the file size +#$1 = Local source file +#$2 = Remote destination file +function db_upload_file +{ + local FILE_SRC=$(normalize_path "$1") + local FILE_DST=$(normalize_path "$2") + + shopt -s nocasematch + + #Checking not allowed file names + basefile_dst=$(basename "$FILE_DST") + if [[ $basefile_dst == "thumbs.db" || \ + $basefile_dst == "desktop.ini" || \ + $basefile_dst == ".ds_store" || \ + $basefile_dst == "icon\r" || \ + $basefile_dst == ".dropbox" || \ + $basefile_dst == ".dropbox.attr" \ + ]]; then + print " > Skipping not allowed file name \"$FILE_DST\"\n" + return + fi + + shopt -u nocasematch + + #Checking file size + FILE_SIZE=$(file_size "$FILE_SRC") + + #Checking if the file already exists + TYPE=$(db_stat "$FILE_DST") + if [[ $TYPE != "ERR" && $SKIP_EXISTING_FILES == 1 ]]; then + print " > Skipping already existing file \"$FILE_DST\"\n" + return + fi + + # Checking if the file has the correct check sum + if [[ $TYPE != "ERR" ]]; then + sha_src=$(db_sha_local "$FILE_SRC") + sha_dst=$(db_sha "$FILE_DST") + if [[ $sha_src == $sha_dst && $sha_src != "ERR" ]]; then + print "> Skipping file \"$FILE_SRC\", file exists with the same hash\n" + return + fi + fi + + if [[ $FILE_SIZE -gt 157286000 ]]; then + #If the file is greater than 150Mb, the chunked_upload API will be used + db_chunked_upload_file "$FILE_SRC" "$FILE_DST" + else + db_simple_upload_file "$FILE_SRC" "$FILE_DST" + fi + +} + +#Simple file upload +#$1 = Local source file +#$2 = Remote destination file +function db_simple_upload_file +{ + local FILE_SRC=$(normalize_path "$1") + local FILE_DST=$(normalize_path "$2") + + if [[ $SHOW_PROGRESSBAR == 1 && $QUIET == 0 ]]; then + CURL_PARAMETERS="--progress-bar" + LINE_CR="\n" + else + CURL_PARAMETERS="-L -s" + LINE_CR="" + fi + + print " > Uploading \"$FILE_SRC\" to \"$FILE_DST\"... $LINE_CR" + $CURL_BIN $CURL_ACCEPT_CERTIFICATES $CURL_PARAMETERS -X POST -i --globoff -o "$RESPONSE_FILE" --header "Authorization: Bearer $OAUTH_ACCESS_TOKEN" --header "Dropbox-API-Arg: {\"path\": \"$FILE_DST\",\"mode\": \"overwrite\",\"autorename\": true,\"mute\": false}" --header "Content-Type: application/octet-stream" --data-binary @"$FILE_SRC" "$API_UPLOAD_URL" + check_http_response + + #Check + if grep -q "^HTTP/1.1 200 OK" "$RESPONSE_FILE"; then + print "DONE\n" + else + print "FAILED\n" + print "An error occurred requesting /upload\n" + ERROR_STATUS=1 + fi +} + +#Chunked file upload +#$1 = Local source file +#$2 = Remote destination file +function db_chunked_upload_file +{ + local FILE_SRC=$(normalize_path "$1") + local FILE_DST=$(normalize_path "$2") + + + if [[ $SHOW_PROGRESSBAR == 1 && $QUIET == 0 ]]; then + VERBOSE=1 + CURL_PARAMETERS="--progress-bar" + else + VERBOSE=0 + CURL_PARAMETERS="-L -s" + fi + + + + local FILE_SIZE=$(file_size "$FILE_SRC") + local OFFSET=0 + local UPLOAD_ID="" + local UPLOAD_ERROR=0 + local CHUNK_PARAMS="" + + ## Ceil division + let NUMBEROFCHUNK=($FILE_SIZE/1024/1024+$CHUNK_SIZE-1)/$CHUNK_SIZE + + if [[ $VERBOSE == 1 ]]; then + print " > Uploading \"$FILE_SRC\" to \"$FILE_DST\" by $NUMBEROFCHUNK chunks ...\n" + else + print " > Uploading \"$FILE_SRC\" to \"$FILE_DST\" by $NUMBEROFCHUNK chunks " + fi + + #Starting a new upload session + $CURL_BIN $CURL_ACCEPT_CERTIFICATES -X POST -L -s --show-error --globoff -i -o "$RESPONSE_FILE" --header "Authorization: Bearer $OAUTH_ACCESS_TOKEN" --header "Dropbox-API-Arg: {\"close\": false}" --header "Content-Type: application/octet-stream" --data-binary @/dev/null "$API_CHUNKED_UPLOAD_START_URL" 2> /dev/null + check_http_response + + SESSION_ID=$(sed -n 's/{"session_id": *"*\([^"]*\)"*.*/\1/p' "$RESPONSE_FILE") + + chunkNumber=1 + #Uploading chunks... + while ([[ $OFFSET != "$FILE_SIZE" ]]); do + + let OFFSET_MB=$OFFSET/1024/1024 + + #Create the chunk + dd if="$FILE_SRC" of="$CHUNK_FILE" bs=1048576 skip=$OFFSET_MB count=$CHUNK_SIZE 2> /dev/null + local CHUNK_REAL_SIZE=$(file_size "$CHUNK_FILE") + + if [[ $VERBOSE == 1 ]]; then + print " >> Uploading chunk $chunkNumber of $NUMBEROFCHUNK\n" + fi + + #Uploading the chunk... + echo > "$RESPONSE_FILE" + $CURL_BIN $CURL_ACCEPT_CERTIFICATES -X POST $CURL_PARAMETERS --show-error --globoff -i -o "$RESPONSE_FILE" --header "Authorization: Bearer $OAUTH_ACCESS_TOKEN" --header "Dropbox-API-Arg: {\"cursor\": {\"session_id\": \"$SESSION_ID\",\"offset\": $OFFSET},\"close\": false}" --header "Content-Type: application/octet-stream" --data-binary @"$CHUNK_FILE" "$API_CHUNKED_UPLOAD_APPEND_URL" + #check_http_response not needed, because we have to retry the request in case of error + + #Check + if grep -q "^HTTP/1.1 200 OK" "$RESPONSE_FILE"; then + let OFFSET=$OFFSET+$CHUNK_REAL_SIZE + UPLOAD_ERROR=0 + if [[ $VERBOSE != 1 ]]; then + print "." + fi + ((chunkNumber=chunkNumber+1)) + else + if [[ $VERBOSE != 1 ]]; then + print "*" + fi + let UPLOAD_ERROR=$UPLOAD_ERROR+1 + + #On error, the upload is retried for max 3 times + if [[ $UPLOAD_ERROR -gt 2 ]]; then + print " FAILED\n" + print "An error occurred requesting /chunked_upload\n" + ERROR_STATUS=1 + return + fi + fi + + done + + UPLOAD_ERROR=0 + + #Commit the upload + while (true); do + + echo > "$RESPONSE_FILE" + $CURL_BIN $CURL_ACCEPT_CERTIFICATES -X POST -L -s --show-error --globoff -i -o "$RESPONSE_FILE" --header "Authorization: Bearer $OAUTH_ACCESS_TOKEN" --header "Dropbox-API-Arg: {\"cursor\": {\"session_id\": \"$SESSION_ID\",\"offset\": $OFFSET},\"commit\": {\"path\": \"$FILE_DST\",\"mode\": \"overwrite\",\"autorename\": true,\"mute\": false}}" --header "Content-Type: application/octet-stream" --data-binary @/dev/null "$API_CHUNKED_UPLOAD_FINISH_URL" 2> /dev/null + #check_http_response not needed, because we have to retry the request in case of error + + #Check + if grep -q "^HTTP/1.1 200 OK" "$RESPONSE_FILE"; then + UPLOAD_ERROR=0 + break + else + print "*" + let UPLOAD_ERROR=$UPLOAD_ERROR+1 + + #On error, the commit is retried for max 3 times + if [[ $UPLOAD_ERROR -gt 2 ]]; then + print " FAILED\n" + print "An error occurred requesting /commit_chunked_upload\n" + ERROR_STATUS=1 + return + fi + fi + + done + + print " DONE\n" +} + +#Directory upload +#$1 = Local source dir +#$2 = Remote destination dir +function db_upload_dir +{ + local DIR_SRC=$(normalize_path "$1") + local DIR_DST=$(normalize_path "$2") + + #Creatig remote directory + db_mkdir "$DIR_DST" + + for file in "$DIR_SRC/"*; do + db_upload "$file" "$DIR_DST" + done +} + +#Generic download wrapper +#$1 = Remote source file/dir +#$2 = Local destination file/dir +function db_download +{ + local SRC=$(normalize_path "$1") + local DST=$(normalize_path "$2") + + TYPE=$(db_stat "$SRC") + + #It's a directory + if [[ $TYPE == "DIR" ]]; then + + #If the DST folder is not specified, I assume that is the current directory + if [[ $DST == "" ]]; then + DST="." + fi + + #Checking if the destination directory exists + if [[ ! -d $DST ]]; then + local basedir="" + else + local basedir=$(basename "$SRC") + fi + + local DEST_DIR=$(normalize_path "$DST/$basedir") + print " > Downloading folder \"$SRC\" to \"$DEST_DIR\"... \n" + + if [[ ! -d "$DEST_DIR" ]]; then + print " > Creating local directory \"$DEST_DIR\"... " + mkdir -p "$DEST_DIR" + + #Check + if [[ $? == 0 ]]; then + print "DONE\n" + else + print "FAILED\n" + ERROR_STATUS=1 + return + fi + fi + + if [[ $SRC == "/" ]]; then + SRC_REQ="" + else + SRC_REQ="$SRC" + fi + + OUT_FILE=$(db_list_outfile "$SRC_REQ") + if [ $? -ne 0 ]; then + # When db_list_outfile fail, the error message is OUT_FILE + print "$OUT_FILE\n" + ERROR_STATUS=1 + return + fi + + #For each entry... + while read -r line; do + + local FILE=${line%:*} + local META=${line##*:} + local TYPE=${META%;*} + local SIZE=${META#*;} + + #Removing unneeded / + FILE=${FILE##*/} + + if [[ $TYPE == "file" ]]; then + db_download_file "$SRC/$FILE" "$DEST_DIR/$FILE" + elif [[ $TYPE == "folder" ]]; then + db_download "$SRC/$FILE" "$DEST_DIR" + fi + + done < $OUT_FILE + + rm -fr $OUT_FILE + + #It's a file + elif [[ $TYPE == "FILE" ]]; then + + #Checking DST + if [[ $DST == "" ]]; then + DST=$(basename "$SRC") + fi + + #If the destination is a directory, the file will be download into + if [[ -d $DST ]]; then + DST="$DST/$SRC" + fi + + db_download_file "$SRC" "$DST" + + #Doesn't exists + else + print " > No such file or directory: $SRC\n" + ERROR_STATUS=1 + return + fi +} + +#Simple file download +#$1 = Remote source file +#$2 = Local destination file +function db_download_file +{ + local FILE_SRC=$(normalize_path "$1") + local FILE_DST=$(normalize_path "$2") + + if [[ $SHOW_PROGRESSBAR == 1 && $QUIET == 0 ]]; then + CURL_PARAMETERS="-L --progress-bar" + LINE_CR="\n" + else + CURL_PARAMETERS="-L -s" + LINE_CR="" + fi + + #Checking if the file already exists + if [[ -e $FILE_DST && $SKIP_EXISTING_FILES == 1 ]]; then + print " > Skipping already existing file \"$FILE_DST\"\n" + return + fi + + # Checking if the file has the correct check sum + if [[ $TYPE != "ERR" ]]; then + sha_src=$(db_sha "$FILE_SRC") + sha_dst=$(db_sha_local "$FILE_DST") + if [[ $sha_src == $sha_dst && $sha_src != "ERR" ]]; then + print "> Skipping file \"$FILE_SRC\", file exists with the same hash\n" + return + fi + fi + + #Creating the empty file, that for two reasons: + #1) In this way I can check if the destination file is writable or not + #2) Curl doesn't automatically creates files with 0 bytes size + dd if=/dev/zero of="$FILE_DST" count=0 2> /dev/null + if [[ $? != 0 ]]; then + print " > Error writing file $FILE_DST: permission denied\n" + ERROR_STATUS=1 + return + fi + + print " > Downloading \"$FILE_SRC\" to \"$FILE_DST\"... $LINE_CR" + $CURL_BIN $CURL_ACCEPT_CERTIFICATES $CURL_PARAMETERS -X POST --globoff -D "$RESPONSE_FILE" -o "$FILE_DST" --header "Authorization: Bearer $OAUTH_ACCESS_TOKEN" --header "Dropbox-API-Arg: {\"path\": \"$FILE_SRC\"}" "$API_DOWNLOAD_URL" + check_http_response + + #Check + if grep -q "^HTTP/1.1 200 OK" "$RESPONSE_FILE"; then + print "DONE\n" + else + print "FAILED\n" + rm -fr "$FILE_DST" + ERROR_STATUS=1 + return + fi +} + +#Saveurl +#$1 = URL +#$2 = Remote file destination +function db_saveurl +{ + local URL="$1" + local FILE_DST=$(normalize_path "$2") + local FILE_NAME=$(basename "$URL") + + print " > Downloading \"$URL\" to \"$FILE_DST\"..." + $CURL_BIN $CURL_ACCEPT_CERTIFICATES -X POST -L -s --show-error --globoff -i -o "$RESPONSE_FILE" --header "Authorization: Bearer $OAUTH_ACCESS_TOKEN" --header "Content-Type: application/json" --data "{\"path\": \"$FILE_DST/$FILE_NAME\", \"url\": \"$URL\"}" "$API_SAVEURL_URL" 2> /dev/null + check_http_response + + JOB_ID=$(sed -n 's/.*"async_job_id": *"*\([^"]*\)"*.*/\1/p' "$RESPONSE_FILE") + if [[ $JOB_ID == "" ]]; then + print " > Error getting the job id\n" + return + fi + + #Checking the status + while (true); do + + $CURL_BIN $CURL_ACCEPT_CERTIFICATES -X POST -L -s --show-error --globoff -i -o "$RESPONSE_FILE" --header "Authorization: Bearer $OAUTH_ACCESS_TOKEN" --header "Content-Type: application/json" --data "{\"async_job_id\": \"$JOB_ID\"}" "$API_SAVEURL_JOBSTATUS_URL" 2> /dev/null + check_http_response + + STATUS=$(sed -n 's/{".tag": *"*\([^"]*\)"*.*/\1/p' "$RESPONSE_FILE") + case $STATUS in + + in_progress) + print "+" + ;; + + complete) + print " DONE\n" + break + ;; + + failed) + print " ERROR\n" + MESSAGE=$(sed -n 's/.*"error_summary": *"*\([^"]*\)"*.*/\1/p' "$RESPONSE_FILE") + print " > Error: $MESSAGE\n" + break + ;; + + esac + + sleep 2 + + done +} + +#Prints account info +function db_account_info +{ + print "Dropbox Uploader v$VERSION\n\n" + print " > Getting info... " + $CURL_BIN $CURL_ACCEPT_CERTIFICATES -X POST -L -s --show-error --globoff -i -o "$RESPONSE_FILE" --header "Authorization: Bearer $OAUTH_ACCESS_TOKEN" "$API_ACCOUNT_INFO_URL" 2> /dev/null + check_http_response + + #Check + if grep -q "^HTTP/1.1 200 OK" "$RESPONSE_FILE"; then + + name=$(sed -n 's/.*"display_name": "\([^"]*\).*/\1/p' "$RESPONSE_FILE") + echo -e "\n\nName:\t\t$name" + + uid=$(sed -n 's/.*"account_id": "\([^"]*\).*/\1/p' "$RESPONSE_FILE") + echo -e "UID:\t\t$uid" + + email=$(sed -n 's/.*"email": "\([^"]*\).*/\1/p' "$RESPONSE_FILE") + echo -e "Email:\t\t$email" + + country=$(sed -n 's/.*"country": "\([^"]*\).*/\1/p' "$RESPONSE_FILE") + echo -e "Country:\t$country" + + echo "" + + else + print "FAILED\n" + ERROR_STATUS=1 + fi +} + +#Prints account space usage info +function db_account_space +{ + print "Dropbox Uploader v$VERSION\n\n" + print " > Getting space usage info... " + $CURL_BIN $CURL_ACCEPT_CERTIFICATES -X POST -L -s --show-error --globoff -i -o "$RESPONSE_FILE" --header "Authorization: Bearer $OAUTH_ACCESS_TOKEN" "$API_ACCOUNT_SPACE_URL" 2> /dev/null + check_http_response + + #Check + if grep -q "^HTTP/1.1 200 OK" "$RESPONSE_FILE"; then + + quota=$(sed -n 's/.*"allocated": \([0-9]*\).*/\1/p' "$RESPONSE_FILE") + let quota_mb=$quota/1024/1024 + echo -e "\n\nQuota:\t$quota_mb Mb" + + used=$(sed -n 's/.*"used": \([0-9]*\).*/\1/p' "$RESPONSE_FILE") + let used_mb=$used/1024/1024 + echo -e "Used:\t$used_mb Mb" + + let free_mb=$((quota-used))/1024/1024 + echo -e "Free:\t$free_mb Mb" + + echo "" + + else + print "FAILED\n" + ERROR_STATUS=1 + fi +} + +#Account unlink +function db_unlink +{ + echo -ne "Are you sure you want unlink this script from your Dropbox account? [y/n]" + read -r answer + if [[ $answer == "y" ]]; then + rm -fr "$CONFIG_FILE" + echo -ne "DONE\n" + fi +} + +#Delete a remote file +#$1 = Remote file to delete +function db_delete +{ + local FILE_DST=$(normalize_path "$1") + + print " > Deleting \"$FILE_DST\"... " + $CURL_BIN $CURL_ACCEPT_CERTIFICATES -X POST -L -s --show-error --globoff -i -o "$RESPONSE_FILE" --header "Authorization: Bearer $OAUTH_ACCESS_TOKEN" --header "Content-Type: application/json" --data "{\"path\": \"$FILE_DST\"}" "$API_DELETE_URL" 2> /dev/null + check_http_response + + #Check + if grep -q "^HTTP/1.1 200 OK" "$RESPONSE_FILE"; then + print "DONE\n" + else + print "FAILED\n" + ERROR_STATUS=1 + fi +} + +#Move/Rename a remote file +#$1 = Remote file to rename or move +#$2 = New file name or location +function db_move +{ + local FILE_SRC=$(normalize_path "$1") + local FILE_DST=$(normalize_path "$2") + + TYPE=$(db_stat "$FILE_DST") + + #If the destination it's a directory, the source will be moved into it + if [[ $TYPE == "DIR" ]]; then + local filename=$(basename "$FILE_SRC") + FILE_DST=$(normalize_path "$FILE_DST/$filename") + fi + + print " > Moving \"$FILE_SRC\" to \"$FILE_DST\" ... " + $CURL_BIN $CURL_ACCEPT_CERTIFICATES -X POST -L -s --show-error --globoff -i -o "$RESPONSE_FILE" --header "Authorization: Bearer $OAUTH_ACCESS_TOKEN" --header "Content-Type: application/json" --data "{\"from_path\": \"$FILE_SRC\", \"to_path\": \"$FILE_DST\"}" "$API_MOVE_URL" 2> /dev/null + check_http_response + + #Check + if grep -q "^HTTP/1.1 200 OK" "$RESPONSE_FILE"; then + print "DONE\n" + else + print "FAILED\n" + ERROR_STATUS=1 + fi +} + +#Copy a remote file to a remote location +#$1 = Remote file to rename or move +#$2 = New file name or location +function db_copy +{ + local FILE_SRC=$(normalize_path "$1") + local FILE_DST=$(normalize_path "$2") + + TYPE=$(db_stat "$FILE_DST") + + #If the destination it's a directory, the source will be copied into it + if [[ $TYPE == "DIR" ]]; then + local filename=$(basename "$FILE_SRC") + FILE_DST=$(normalize_path "$FILE_DST/$filename") + fi + + print " > Copying \"$FILE_SRC\" to \"$FILE_DST\" ... " + $CURL_BIN $CURL_ACCEPT_CERTIFICATES -X POST -L -s --show-error --globoff -i -o "$RESPONSE_FILE" --header "Authorization: Bearer $OAUTH_ACCESS_TOKEN" --header "Content-Type: application/json" --data "{\"from_path\": \"$FILE_SRC\", \"to_path\": \"$FILE_DST\"}" "$API_COPY_URL" 2> /dev/null + check_http_response + + #Check + if grep -q "^HTTP/1.1 200 OK" "$RESPONSE_FILE"; then + print "DONE\n" + else + print "FAILED\n" + ERROR_STATUS=1 + fi +} + +#Create a new directory +#$1 = Remote directory to create +function db_mkdir +{ + local DIR_DST=$(normalize_path "$1") + + print " > Creating Directory \"$DIR_DST\"... " + $CURL_BIN $CURL_ACCEPT_CERTIFICATES -X POST -L -s --show-error --globoff -i -o "$RESPONSE_FILE" --header "Authorization: Bearer $OAUTH_ACCESS_TOKEN" --header "Content-Type: application/json" --data "{\"path\": \"$DIR_DST\"}" "$API_MKDIR_URL" 2> /dev/null + check_http_response + + #Check + if grep -q "^HTTP/1.1 200 OK" "$RESPONSE_FILE"; then + print "DONE\n" + elif grep -q "^HTTP/1.1 403 Forbidden" "$RESPONSE_FILE"; then + print "ALREADY EXISTS\n" + else + print "FAILED\n" + ERROR_STATUS=1 + fi +} + +#List a remote folder and returns the path to the file containing the output +#$1 = Remote directory +#$2 = Cursor (Optional) +function db_list_outfile +{ + + local DIR_DST="$1" + local HAS_MORE="false" + local CURSOR="" + + if [[ -n "$2" ]]; then + CURSOR="$2" + HAS_MORE="true" + fi + + OUT_FILE="$TMP_DIR/du_tmp_out_$RANDOM" + + while (true); do + + if [[ $HAS_MORE == "true" ]]; then + $CURL_BIN $CURL_ACCEPT_CERTIFICATES -X POST -L -s --show-error --globoff -i -o "$RESPONSE_FILE" --header "Authorization: Bearer $OAUTH_ACCESS_TOKEN" --header "Content-Type: application/json" --data "{\"cursor\": \"$CURSOR\"}" "$API_LIST_FOLDER_CONTINUE_URL" 2> /dev/null + else + $CURL_BIN $CURL_ACCEPT_CERTIFICATES -X POST -L -s --show-error --globoff -i -o "$RESPONSE_FILE" --header "Authorization: Bearer $OAUTH_ACCESS_TOKEN" --header "Content-Type: application/json" --data "{\"path\": \"$DIR_DST\",\"include_media_info\": false,\"include_deleted\": false,\"include_has_explicit_shared_members\": false}" "$API_LIST_FOLDER_URL" 2> /dev/null + fi + + check_http_response + + HAS_MORE=$(sed -n 's/.*"has_more": *\([a-z]*\).*/\1/p' "$RESPONSE_FILE") + CURSOR=$(sed -n 's/.*"cursor": *"\([^"]*\)".*/\1/p' "$RESPONSE_FILE") + + #Check + if grep -q "^HTTP/1.1 200 OK" "$RESPONSE_FILE"; then + + #Extracting directory content [...] + #and replacing "}, {" with "}\n{" + #I don't like this piece of code... but seems to be the only way to do this with SED, writing a portable code... + local DIR_CONTENT=$(sed -n 's/.*: \[{\(.*\)/\1/p' "$RESPONSE_FILE" | sed 's/}, *{/}\ + {/g') + + #Converting escaped quotes to unicode format + echo "$DIR_CONTENT" | sed 's/\\"/\\u0022/' > "$TEMP_FILE" + + #Extracting files and subfolders + while read -r line; do + + local FILE=$(echo "$line" | sed -n 's/.*"path_display": *"\([^"]*\)".*/\1/p') + local TYPE=$(echo "$line" | sed -n 's/.*".tag": *"\([^"]*\).*/\1/p') + local SIZE=$(convert_bytes $(echo "$line" | sed -n 's/.*"size": *\([0-9]*\).*/\1/p')) + + echo -e "$FILE:$TYPE;$SIZE" >> "$OUT_FILE" + + done < "$TEMP_FILE" + + if [[ $HAS_MORE == "false" ]]; then + break + fi + + else + return + fi + + done + + echo $OUT_FILE +} + +#List remote directory +#$1 = Remote directory +function db_list +{ + local DIR_DST=$(normalize_path "$1") + + print " > Listing \"$DIR_DST\"... " + + if [[ "$DIR_DST" == "/" ]]; then + DIR_DST="" + fi + + OUT_FILE=$(db_list_outfile "$DIR_DST") + if [ -z "$OUT_FILE" ]; then + print "FAILED\n" + ERROR_STATUS=1 + return + else + print "DONE\n" + fi + + #Looking for the biggest file size + #to calculate the padding to use + local padding=0 + while read -r line; do + local FILE=${line%:*} + local META=${line##*:} + local SIZE=${META#*;} + + if [[ ${#SIZE} -gt $padding ]]; then + padding=${#SIZE} + fi + done < "$OUT_FILE" + + #For each entry, printing directories... + while read -r line; do + + local FILE=${line%:*} + local META=${line##*:} + local TYPE=${META%;*} + local SIZE=${META#*;} + + #Removing unneeded / + FILE=${FILE##*/} + + if [[ $TYPE == "folder" ]]; then + FILE=$(echo -e "$FILE") + $PRINTF " [D] %-${padding}s %s\n" "$SIZE" "$FILE" + fi + + done < "$OUT_FILE" + + #For each entry, printing files... + while read -r line; do + + local FILE=${line%:*} + local META=${line##*:} + local TYPE=${META%;*} + local SIZE=${META#*;} + + #Removing unneeded / + FILE=${FILE##*/} + + if [[ $TYPE == "file" ]]; then + FILE=$(echo -e "$FILE") + $PRINTF " [F] %-${padding}s %s\n" "$SIZE" "$FILE" + fi + + done < "$OUT_FILE" + + rm -fr "$OUT_FILE" +} + +#Longpoll remote directory only once +#$1 = Timeout +#$2 = Remote directory +function db_monitor_nonblock +{ + local TIMEOUT=$1 + local DIR_DST=$(normalize_path "$2") + + if [[ "$DIR_DST" == "/" ]]; then + DIR_DST="" + fi + + $CURL_BIN $CURL_ACCEPT_CERTIFICATES -X POST -L -s --show-error --globoff -i -o "$RESPONSE_FILE" --header "Authorization: Bearer $OAUTH_ACCESS_TOKEN" --header "Content-Type: application/json" --data "{\"path\": \"$DIR_DST\",\"include_media_info\": false,\"include_deleted\": false,\"include_has_explicit_shared_members\": false}" "$API_LIST_FOLDER_URL" 2> /dev/null + check_http_response + + if grep -q "^HTTP/1.1 200 OK" "$RESPONSE_FILE"; then + + local CURSOR=$(sed -n 's/.*"cursor": *"\([^"]*\)".*/\1/p' "$RESPONSE_FILE") + + $CURL_BIN $CURL_ACCEPT_CERTIFICATES -X POST -L -s --show-error --globoff -i -o "$RESPONSE_FILE" --header "Content-Type: application/json" --data "{\"cursor\": \"$CURSOR\",\"timeout\": ${TIMEOUT}}" "$API_LONGPOLL_FOLDER" 2> /dev/null + check_http_response + + if grep -q "^HTTP/1.1 200 OK" "$RESPONSE_FILE"; then + local CHANGES=$(sed -n 's/.*"changes" *: *\([a-z]*\).*/\1/p' "$RESPONSE_FILE") + else + ERROR_MSG=$(grep "Error in call" "$RESPONSE_FILE") + print "FAILED to longpoll (http error): $ERROR_MSG\n" + ERROR_STATUS=1 + return 1 + fi + + if [[ -z "$CHANGES" ]]; then + print "FAILED to longpoll (unexpected response)\n" + ERROR_STATUS=1 + return 1 + fi + + if [ "$CHANGES" == "true" ]; then + + OUT_FILE=$(db_list_outfile "$DIR_DST" "$CURSOR") + + if [ -z "$OUT_FILE" ]; then + print "FAILED to list changes\n" + ERROR_STATUS=1 + return + fi + + #For each entry, printing directories... + while read -r line; do + + local FILE=${line%:*} + local META=${line##*:} + local TYPE=${META%;*} + local SIZE=${META#*;} + + #Removing unneeded / + FILE=${FILE##*/} + + if [[ $TYPE == "folder" ]]; then + FILE=$(echo -e "$FILE") + $PRINTF " [D] %s\n" "$FILE" + elif [[ $TYPE == "file" ]]; then + FILE=$(echo -e "$FILE") + $PRINTF " [F] %s %s\n" "$SIZE" "$FILE" + elif [[ $TYPE == "deleted" ]]; then + FILE=$(echo -e "$FILE") + $PRINTF " [-] %s\n" "$FILE" + fi + + done < "$OUT_FILE" + + rm -fr "$OUT_FILE" + fi + + else + ERROR_STATUS=1 + return 1 + fi + +} + +#Longpoll continuously remote directory +#$1 = Timeout +#$2 = Remote directory +function db_monitor +{ + local TIMEOUT=$1 + local DIR_DST=$(normalize_path "$2") + + while (true); do + db_monitor_nonblock "$TIMEOUT" "$2" + done +} + +#Share remote file +#$1 = Remote file +function db_share +{ + local FILE_DST=$(normalize_path "$1") + + $CURL_BIN $CURL_ACCEPT_CERTIFICATES -X POST -L -s --show-error --globoff -i -o "$RESPONSE_FILE" --header "Authorization: Bearer $OAUTH_ACCESS_TOKEN" --header "Content-Type: application/json" --data "{\"path\": \"$FILE_DST\",\"settings\": {\"requested_visibility\": \"public\"}}" "$API_SHARE_URL" 2> /dev/null + check_http_response + + #Check + if grep -q "^HTTP/1.1 200 OK" "$RESPONSE_FILE"; then + print " > Share link: " + SHARE_LINK=$(sed -n 's/.*"url": "\([^"]*\).*/\1/p' "$RESPONSE_FILE") + echo "$SHARE_LINK" + else + get_Share "$FILE_DST" + fi +} + +#Query existing shared link +#$1 = Remote file +function get_Share +{ + local FILE_DST=$(normalize_path "$1") + $CURL_BIN $CURL_ACCEPT_CERTIFICATES -X POST -L -s --show-error --globoff -i -o "$RESPONSE_FILE" --header "Authorization: Bearer $OAUTH_ACCESS_TOKEN" --header "Content-Type: application/json" --data "{\"path\": \"$FILE_DST\",\"direct_only\": true}" "$API_SHARE_LIST" + check_http_response + + #Check + if grep -q "^HTTP/1.1 200 OK" "$RESPONSE_FILE"; then + print " > Share link: " + SHARE_LINK=$(sed -n 's/.*"url": "\([^"]*\).*/\1/p' "$RESPONSE_FILE") + echo "$SHARE_LINK" + else + print "FAILED\n" + MESSAGE=$(sed -n 's/.*"error_summary": *"*\([^"]*\)"*.*/\1/p' "$RESPONSE_FILE") + print " > Error: $MESSAGE\n" + ERROR_STATUS=1 + fi +} + +#Search on Dropbox +#$1 = query +function db_search +{ + local QUERY="$1" + + print " > Searching for \"$QUERY\"... " + + $CURL_BIN $CURL_ACCEPT_CERTIFICATES -X POST -L -s --show-error --globoff -i -o "$RESPONSE_FILE" --header "Authorization: Bearer $OAUTH_ACCESS_TOKEN" --header "Content-Type: application/json" --data "{\"path\": \"\",\"query\": \"$QUERY\",\"start\": 0,\"max_results\": 1000,\"mode\": \"filename\"}" "$API_SEARCH_URL" 2> /dev/null + check_http_response + + #Check + if grep -q "^HTTP/1.1 200 OK" "$RESPONSE_FILE"; then + print "DONE\n" + else + print "FAILED\n" + ERROR_STATUS=1 + fi + + #Extracting directory content [...] + #and replacing "}, {" with "}\n{" + #I don't like this piece of code... but seems to be the only way to do this with SED, writing a portable code... + local DIR_CONTENT=$(sed 's/}, *{/}\ +{/g' "$RESPONSE_FILE") + + #Converting escaped quotes to unicode format + echo "$DIR_CONTENT" | sed 's/\\"/\\u0022/' > "$TEMP_FILE" + + #Extracting files and subfolders + rm -fr "$RESPONSE_FILE" + while read -r line; do + + local FILE=$(echo "$line" | sed -n 's/.*"path_display": *"\([^"]*\)".*/\1/p') + local TYPE=$(echo "$line" | sed -n 's/.*".tag": *"\([^"]*\).*/\1/p') + local SIZE=$(convert_bytes $(echo "$line" | sed -n 's/.*"size": *\([0-9]*\).*/\1/p')) + + echo -e "$FILE:$TYPE;$SIZE" >> "$RESPONSE_FILE" + + done < "$TEMP_FILE" + + #Looking for the biggest file size + #to calculate the padding to use + local padding=0 + while read -r line; do + local FILE=${line%:*} + local META=${line##*:} + local SIZE=${META#*;} + + if [[ ${#SIZE} -gt $padding ]]; then + padding=${#SIZE} + fi + done < "$RESPONSE_FILE" + + #For each entry, printing directories... + while read -r line; do + + local FILE=${line%:*} + local META=${line##*:} + local TYPE=${META%;*} + local SIZE=${META#*;} + + if [[ $TYPE == "folder" ]]; then + FILE=$(echo -e "$FILE") + $PRINTF " [D] %-${padding}s %s\n" "$SIZE" "$FILE" + fi + + done < "$RESPONSE_FILE" + + #For each entry, printing files... + while read -r line; do + + local FILE=${line%:*} + local META=${line##*:} + local TYPE=${META%;*} + local SIZE=${META#*;} + + if [[ $TYPE == "file" ]]; then + FILE=$(echo -e "$FILE") + $PRINTF " [F] %-${padding}s %s\n" "$SIZE" "$FILE" + fi + + done < "$RESPONSE_FILE" + +} + +#Query the sha256-dropbox-sum of a remote file +#see https://www.dropbox.com/developers/reference/content-hash for more information +#$1 = Remote file +function db_sha +{ + local FILE=$(normalize_path "$1") + + if [[ $FILE == "/" ]]; then + echo "ERR" + return + fi + + #Checking if it's a file or a directory and get the sha-sum + $CURL_BIN $CURL_ACCEPT_CERTIFICATES -X POST -L -s --show-error --globoff -i -o "$RESPONSE_FILE" --header "Authorization: Bearer $OAUTH_ACCESS_TOKEN" --header "Content-Type: application/json" --data "{\"path\": \"$FILE\"}" "$API_METADATA_URL" 2> /dev/null + check_http_response + + local TYPE=$(sed -n 's/{".tag": *"*\([^"]*\)"*.*/\1/p' "$RESPONSE_FILE") + if [[ $TYPE == "folder" ]]; then + echo "ERR" + return + fi + + local SHA256=$(sed -n 's/.*"content_hash": "\([^"]*\).*/\1/p' "$RESPONSE_FILE") + echo "$SHA256" +} + +#Query the sha256-dropbox-sum of a local file +#see https://www.dropbox.com/developers/reference/content-hash for more information +#$1 = Local file +function db_sha_local +{ + local FILE=$(normalize_path "$1") + local FILE_SIZE=$(file_size "$FILE") + local OFFSET=0 + local SKIP=0 + local SHA_CONCAT="" + + which shasum > /dev/null + if [[ $? != 0 ]]; then + echo "ERR" + return + fi + + while ([[ $OFFSET -lt "$FILE_SIZE" ]]); do + dd if="$FILE" of="$CHUNK_FILE" bs=4194304 skip=$SKIP count=1 2> /dev/null + local SHA=$(shasum -a 256 "$CHUNK_FILE" | awk '{print $1}') + SHA_CONCAT="${SHA_CONCAT}${SHA}" + + let OFFSET=$OFFSET+4194304 + let SKIP=$SKIP+1 + done + + shaHex=$(echo $SHA_CONCAT | sed 's/\([0-9A-F]\{2\}\)/\\x\1/gI') + echo -ne $shaHex | shasum -a 256 | awk '{print $1}' +} + +################ +#### SETUP #### +################ + +#CHECKING FOR AUTH FILE +if [[ -e $CONFIG_FILE ]]; then + + #Loading data... and change old format config if necesary. + source "$CONFIG_FILE" 2>/dev/null || { + sed -i'' 's/:/=/' "$CONFIG_FILE" && source "$CONFIG_FILE" 2>/dev/null + } + + #Checking if it's still a v1 API configuration file + if [[ $APPKEY != "" || $APPSECRET != "" ]]; then + echo -ne "The config file contains the old deprecated v1 oauth tokens.\n" + echo -ne "Please run again the script and follow the configuration wizard. The old configuration file has been backed up to $CONFIG_FILE.old\n" + mv "$CONFIG_FILE" "$CONFIG_FILE".old + exit 1 + fi + + #Checking loaded data + if [[ $OAUTH_ACCESS_TOKEN = "" ]]; then + echo -ne "Error loading data from $CONFIG_FILE...\n" + echo -ne "It is recommended to run $0 unlink\n" + remove_temp_files + exit 1 + fi + +#NEW SETUP... +else + + echo -ne "\n This is the first time you run this script, please follow the instructions:\n\n" + echo -ne " 1) Open the following URL in your Browser, and log in using your account: $APP_CREATE_URL\n" + echo -ne " 2) Click on \"Create App\", then select \"Dropbox API app\"\n" + echo -ne " 3) Now go on with the configuration, choosing the app permissions and access restrictions to your DropBox folder\n" + echo -ne " 4) Enter the \"App Name\" that you prefer (e.g. MyUploader$RANDOM$RANDOM$RANDOM)\n\n" + + echo -ne " Now, click on the \"Create App\" button.\n\n" + + echo -ne " When your new App is successfully created, please click on the Generate button\n" + echo -ne " under the 'Generated access token' section, then copy and paste the new access token here:\n\n" + + echo -ne " # Access token: " + read -r OAUTH_ACCESS_TOKEN + + echo -ne "\n > The access token is $OAUTH_ACCESS_TOKEN. Looks ok? [y/N]: " + read -r answer + if [[ $answer != "y" ]]; then + remove_temp_files + exit 1 + fi + + echo "OAUTH_ACCESS_TOKEN=$OAUTH_ACCESS_TOKEN" > "$CONFIG_FILE" + echo " The configuration has been saved." + + remove_temp_files + exit 0 +fi + +################ +#### START #### +################ + +COMMAND="${*:$OPTIND:1}" +ARG1="${*:$OPTIND+1:1}" +ARG2="${*:$OPTIND+2:1}" + +let argnum=$#-$OPTIND + +#CHECKING PARAMS VALUES +case $COMMAND in + + upload) + + if [[ $argnum -lt 2 ]]; then + usage + fi + + FILE_DST="${*:$#:1}" + + for (( i=OPTIND+1; i<$#; i++ )); do + FILE_SRC="${*:$i:1}" + db_upload "$FILE_SRC" "/$FILE_DST" + done + + ;; + + download) + + if [[ $argnum -lt 1 ]]; then + usage + fi + + FILE_SRC="$ARG1" + FILE_DST="$ARG2" + + db_download "/$FILE_SRC" "$FILE_DST" + + ;; + + saveurl) + + if [[ $argnum -lt 1 ]]; then + usage + fi + + URL=$ARG1 + FILE_DST="$ARG2" + + db_saveurl "$URL" "/$FILE_DST" + + ;; + + share) + + if [[ $argnum -lt 1 ]]; then + usage + fi + + FILE_DST="$ARG1" + + db_share "/$FILE_DST" + + ;; + + info) + + db_account_info + + ;; + + space) + + db_account_space + + ;; + + delete|remove) + + if [[ $argnum -lt 1 ]]; then + usage + fi + + FILE_DST="$ARG1" + + db_delete "/$FILE_DST" + + ;; + + move|rename) + + if [[ $argnum -lt 2 ]]; then + usage + fi + + FILE_SRC="$ARG1" + FILE_DST="$ARG2" + + db_move "/$FILE_SRC" "/$FILE_DST" + + ;; + + copy) + + if [[ $argnum -lt 2 ]]; then + usage + fi + + FILE_SRC="$ARG1" + FILE_DST="$ARG2" + + db_copy "/$FILE_SRC" "/$FILE_DST" + + ;; + + mkdir) + + if [[ $argnum -lt 1 ]]; then + usage + fi + + DIR_DST="$ARG1" + + db_mkdir "/$DIR_DST" + + ;; + + search) + + if [[ $argnum -lt 1 ]]; then + usage + fi + + QUERY=$ARG1 + + db_search "$QUERY" + + ;; + + list) + + DIR_DST="$ARG1" + + #Checking DIR_DST + if [[ $DIR_DST == "" ]]; then + DIR_DST="/" + fi + + db_list "/$DIR_DST" + + ;; + + monitor) + + DIR_DST="$ARG1" + TIMEOUT=$ARG2 + + #Checking DIR_DST + if [[ $DIR_DST == "" ]]; then + DIR_DST="/" + fi + + print " > Monitoring \"$DIR_DST\" for changes...\n" + + if [[ -n $TIMEOUT ]]; then + db_monitor_nonblock $TIMEOUT "/$DIR_DST" + else + db_monitor 60 "/$DIR_DST" + fi + + ;; + + unlink) + + db_unlink + + ;; + + *) + + if [[ $COMMAND != "" ]]; then + print "Error: Unknown command: $COMMAND\n\n" + ERROR_STATUS=1 + fi + usage + + ;; + +esac + +remove_temp_files + +if [[ $ERROR_STATUS -ne 0 ]]; then + echo "Some error occured. Please check the log." +fi + +exit $ERROR_STATUS diff --git a/.travis/gta5view.nsi b/.travis/gta5view.nsi index becda49..198a299 100644 --- a/.travis/gta5view.nsi +++ b/.travis/gta5view.nsi @@ -3,7 +3,7 @@ !define APP_NAME "gta5view" !define COMP_NAME "Syping" !define WEB_SITE "https://gta5view.syping.de/" -!define VERSION "1.5.4.0" +!define VERSION "1.5.5.0" !define COPYRIGHT "Copyright © 2016-2018 Syping" !define DESCRIPTION "Grand Theft Auto V Savegame and Snapmatic Viewer/Editor" !define INSTALLER_NAME "gta5view_setup.exe" @@ -79,6 +79,7 @@ InstallDir "$PROGRAMFILES64\Syping\gta5view" !insertmacro MUI_LANGUAGE "French" !insertmacro MUI_LANGUAGE "German" !insertmacro MUI_LANGUAGE "Russian" +!insertmacro MUI_LANGUAGE "Ukrainian" !insertmacro MUI_LANGUAGE "TradChinese" !insertmacro MUI_RESERVEFILE_LANGDLL diff --git a/.travis/osx_build.sh b/.travis/osx_build.sh index fcdd0ac..8a5663d 100755 --- a/.travis/osx_build.sh +++ b/.travis/osx_build.sh @@ -8,7 +8,7 @@ mkdir -p build && \ mkdir -p assets && \ cd build && \ -/usr/local/opt/qt/bin/qmake ${QMAKE_FLAGS_QT5} DEFINES+=GTA5SYNC_BUILDTYPE_REL "DEFINES+=GTA5SYNC_BUILDCODE=\\\\\\\"GitHub\\\\\\\"" "DEFINES+=GTA5SYNC_APPVER=\\\\\\\"${APPLICATION_VERSION}\\\\\\\"" DEFINES+=GTA5SYNC_TELEMETRY "DEFINES+=GTA5SYNC_TELEMETRY_WEBURL=\\\\\\\"https://dev.syping.de/gta5view-userstats/\\\\\\\"" ../gta5view.pro && \ +/usr/local/opt/qt/bin/qmake ${QMAKE_FLAGS_QT5} DEFINES+=GTA5SYNC_BUILDTYPE_DEV "DEFINES+=GTA5SYNC_BUILDCODE=\\\\\\\"${PACKAGE_CODE}\\\\\\\"" "DEFINES+=GTA5SYNC_APPVER=\\\\\\\"${APPLICATION_VERSION}\\\\\\\"" DEFINES+=GTA5SYNC_TELEMETRY "DEFINES+=GTA5SYNC_TELEMETRY_WEBURL=\\\\\\\"https://dev.syping.de/gta5view-userstats/\\\\\\\"" ../gta5view.pro && \ make -j 4 && \ /usr/local/opt/qt/bin/macdeployqt gta5view.app -dmg && \ cp -Rf gta5view.dmg ../assets/gta5view-osx_${APPLICATION_VERSION}.dmg diff --git a/.travis/source.sh b/.travis/source.sh index 49d471d..0f0792e 100755 --- a/.travis/source.sh +++ b/.travis/source.sh @@ -1,4 +1,5 @@ #!/bin/bash rm -rf tmext/TelemetryClassAuthenticator.cpp && \ -openssl aes-256-cbc -K $encrypted_55502862a724_key -iv $encrypted_55502862a724_iv -in tmext/TelemetryClassAuthenticator.cpp.enc -out tmext/TelemetryClassAuthenticator.cpp -d +openssl aes-256-cbc -K $encrypted_55502862a724_key -iv $encrypted_55502862a724_iv -in tmext/TelemetryClassAuthenticator.cpp.enc -out tmext/TelemetryClassAuthenticator.cpp -d && \ +openssl aes-256-cbc -K $encrypted_d57e7d2f8877_key -iv $encrypted_d57e7d2f8877_iv -in .travis/dropbox_uploader.enc -out ~/.dropbox_uploader -d diff --git a/.travis/travis.sh b/.travis/travis.sh index 413c830..e652f17 100755 --- a/.travis/travis.sh +++ b/.travis/travis.sh @@ -8,10 +8,22 @@ elif [ "${TRAVIS_OS_NAME}" == "osx" ]; then brew install lua fi +# Check if build is not tagged +if [ "${TRAVIS_TAG}" == "" ]; then + export EXECUTABLE_TAG=-$(git rev-parse --short HEAD) +else + export EXECUTABLE_TAG= +fi + +# Check if package code is not set +if [ "${PACKAGE_CODE}" == "" ]; then + export PACKAGE_CODE=GitHub +fi + if [ `git name-rev --tags --name-only $(git rev-parse HEAD)` == "undefined" ]; then export APPLICATION_VERSION=`lua -e 'for line in io.lines("config.h") do local m = string.match(line, "#define GTA5SYNC_APPVER \"(.+)\"$"); if m then print(m); os.exit(0) end end'`; else export APPLICATION_VERSION=`git name-rev --tags --name-only $(git rev-parse HEAD)`; fi export PACKAGE_VERSION=$(grep -oE '^[^\-]*' <<< $APPLICATION_VERSION) export PACKAGE_BUILD=$(grep -oP '\-\K.+' <<< $APPLICATION_VERSION) -export EXECUTABLE_VERSION=${PACKAGE_VERSION}${PACKAGE_BUILD} +export EXECUTABLE_VERSION=${PACKAGE_VERSION}${PACKAGE_BUILD}${EXECUTABLE_TAG} if [[ ! ${PACKAGE_BUILD} ]]; then export PACKAGE_BUILD=1; fi export PROJECT_DIR=$(pwd) diff --git a/.travis/windows_build.sh b/.travis/windows_build.sh index 53ba6ba..55afee5 100755 --- a/.travis/windows_build.sh +++ b/.travis/windows_build.sh @@ -1,5 +1,8 @@ #!/bin/bash +apt-get update -qq && \ +apt-get install -qq curl && \ + export GTA5VIEW_EXECUTABLE=gta5view-${EXECUTABLE_VERSION}${EXECUTABLE_ARCH}.exe && \ # Creating folders @@ -11,8 +14,18 @@ mkdir -p assets && \ # Starting build cd build && \ -qmake-static ${QMAKE_FLAGS} DEFINES+=GTA5SYNC_BUILDTYPE_REL "DEFINES+=GTA5SYNC_BUILDCODE=\\\\\\\"GitHub\\\\\\\"" "DEFINES+=GTA5SYNC_APPVER=\\\\\\\"${APPLICATION_VERSION}\\\\\\\"" DEFINES+=GTA5SYNC_TELEMETRY "DEFINES+=GTA5SYNC_TELEMETRY_WEBURL=\\\\\\\"https://dev.syping.de/gta5view-userstats/\\\\\\\"" ../gta5view.pro && \ +qmake-static ${QMAKE_FLAGS} DEFINES+=GTA5SYNC_BUILDTYPE_DEV "DEFINES+=GTA5SYNC_BUILDCODE=\\\\\\\"${PACKAGE_CODE}\\\\\\\"" "DEFINES+=GTA5SYNC_APPVER=\\\\\\\"${APPLICATION_VERSION}\\\\\\\"" DEFINES+=GTA5SYNC_TELEMETRY "DEFINES+=GTA5SYNC_TELEMETRY_WEBURL=\\\\\\\"https://dev.syping.de/gta5view-userstats/\\\\\\\"" ../gta5view.pro && \ make -j 4 && \ cp -Rf release/*.exe ${PROJECT_DIR}/assets/${GTA5VIEW_EXECUTABLE} && \ cd ${PROJECT_DIR}/assets && \ -upx --best ${GTA5VIEW_EXECUTABLE} +upx --best ${GTA5VIEW_EXECUTABLE} && \ + +if [ "${PACKAGE_CODE}" == "Dropbox" ]; then + ${PROJECT_DIR}/.travis/dropbox_uploader.sh mkdir gta5view-builds/${PACKAGE_VERSION} + ${PROJECT_DIR}/.travis/dropbox_uploader.sh upload ${GTA5VIEW_EXECUTABLE} gta5view-builds/${PACKAGE_VERSION}/${GTA5VIEW_EXECUTABLE} && \ + rm -rf ${GTA5VIEW_EXECUTABLE} +elif [ "${PACKAGE_CODE}" == "gta5-mods" ]; then + ${PROJECT_DIR}/.travis/dropbox_uploader.sh mkdir gta5-mods/${PACKAGE_VERSION} + ${PROJECT_DIR}/.travis/dropbox_uploader.sh upload ${GTA5VIEW_EXECUTABLE} gta5-mods/${PACKAGE_VERSION}/${GTA5VIEW_EXECUTABLE} && \ + rm -rf ${GTA5VIEW_EXECUTABLE} +fi diff --git a/.travis/windows_travis.sh b/.travis/windows_travis.sh index 4811eb2..98ef778 100755 --- a/.travis/windows_travis.sh +++ b/.travis/windows_travis.sh @@ -8,5 +8,6 @@ cd ${PROJECT_DIR} && \ docker pull ${DOCKER_IMAGE} && \ docker run --rm \ -v "${PROJECT_DIR}:${PROJECT_DIR_DOCKER}" \ + -v "${HOME}/.dropbox_uploader:/root/.dropbox_uploader" \ ${DOCKER_IMAGE} \ - /bin/bash -c "export PROJECT_DIR=${PROJECT_DIR_DOCKER} && export QT_SELECT=${QT_SELECT} && export APPLICATION_VERSION=${APPLICATION_VERSION} && export QMAKE_FLAGS_QT4=${QMAKE_FLAGS_QT4} && export QMAKE_FLAGS_QT5=${QMAKE_FLAGS_QT5} && export PACKAGE_VERSION=${PACKAGE_VERSION} && export PACKAGE_BUILD=${PACKAGE_BUILD} && export EXECUTABLE_VERSION=${EXECUTABLE_VERSION} && export EXECUTABLE_ARCH=${EXECUTABLE_ARCH} && cd ${PROJECT_DIR_DOCKER} && .travis/windows_build.sh" + /bin/bash -c "export PROJECT_DIR=${PROJECT_DIR_DOCKER} && export QT_SELECT=${QT_SELECT} && export APPLICATION_VERSION=${APPLICATION_VERSION} && export QMAKE_FLAGS_QT4=${QMAKE_FLAGS_QT4} && export QMAKE_FLAGS_QT5=${QMAKE_FLAGS_QT5} && export PACKAGE_VERSION=${PACKAGE_VERSION} && export PACKAGE_BUILD=${PACKAGE_BUILD} && export PACKAGE_CODE=${PACKAGE_CODE} && export EXECUTABLE_VERSION=${EXECUTABLE_VERSION} && export EXECUTABLE_ARCH=${EXECUTABLE_ARCH} && cd ${PROJECT_DIR_DOCKER} && .travis/windows_build.sh" diff --git a/.travis/wininstall_build.sh b/.travis/wininstall_build.sh index 806292c..1ca3622 100755 --- a/.travis/wininstall_build.sh +++ b/.travis/wininstall_build.sh @@ -11,7 +11,8 @@ mkdir -p assets && \ # Starting build cd build && \ -qmake ${QMAKE_FLAGS} DEFINES+=GTA5SYNC_BUILDTYPE_REL "DEFINES+=GTA5SYNC_BUILDCODE=\\\\\\\"GitHub\\\\\\\"" "DEFINES+=GTA5SYNC_APPVER=\\\\\\\"${APPLICATION_VERSION}\\\\\\\"" DEFINES+=GTA5SYNC_TELEMETRY "DEFINES+=GTA5SYNC_TELEMETRY_WEBURL=\\\\\\\"https://dev.syping.de/gta5view-userstats/\\\\\\\"" DEFINES+=GTA5SYNC_QCONF DEFINES+=GTA5SYNC_INLANG='\\\"RUNDIR:SEPARATOR:lang\\\"' DEFINES+=GTA5SYNC_LANG='\\\"RUNDIR:SEPARATOR:lang\\\"' DEFINES+=GTA5SYNC_PLUG='\\\"RUNDIR:SEPARATOR:plugins\\\"' ../gta5view.pro && \ +qmake ${QMAKE_FLAGS} DEFINES+=GTA5SYNC_BUILDTYPE_DEV "DEFINES+=GTA5SYNC_BUILDCODE=\\\\\\\"${PACKAGE_CODE}\\\\\\\"" "DEFINES+=GTA5SYNC_APPVER=\\\\\\\"${APPLICATION_VERSION}\\\\\\\"" DEFINES+=GTA5SYNC_TELEMETRY "DEFINES+=GTA5SYNC_TELEMETRY_WEBURL=\\\\\\\"https://dev.syping.de/gta5view-userstats/\\\\\\\"" DEFINES+=GTA5SYNC_QCONF DEFINES+=GTA5SYNC_INLANG='\\\"RUNDIR:SEPARATOR:lang\\\"' DEFINES+=GTA5SYNC_LANG='\\\"RUNDIR:SEPARATOR:lang\\\"' DEFINES+=GTA5SYNC_PLUG='\\\"RUNDIR:SEPARATOR:plugins\\\"' ../gta5view.pro && \ make -j 4 && \ cd ${PROJECT_DIR}/assets && \ -makensis -NOCD ${PROJECT_DIR}/.travis/gta5view.nsi +makensis -NOCD ${PROJECT_DIR}/.travis/gta5view.nsi && \ +mv -f gta5view_setup.exe gta5view-${EXECUTABLE_VERSION}_setup.exe diff --git a/.travis/wininstall_travis.sh b/.travis/wininstall_travis.sh index e9fabfc..ed44a44 100755 --- a/.travis/wininstall_travis.sh +++ b/.travis/wininstall_travis.sh @@ -9,4 +9,4 @@ docker pull ${DOCKER_IMAGE} && \ docker run --rm \ -v "${PROJECT_DIR}:${PROJECT_DIR_DOCKER}" \ ${DOCKER_IMAGE} \ - /bin/bash -c "export PROJECT_DIR=${PROJECT_DIR_DOCKER} && export QT_SELECT=${QT_SELECT} && export APPLICATION_VERSION=${APPLICATION_VERSION} && export QMAKE_FLAGS_QT4=${QMAKE_FLAGS_QT4} && export QMAKE_FLAGS_QT5=${QMAKE_FLAGS_QT5} && export PACKAGE_VERSION=${PACKAGE_VERSION} && export PACKAGE_BUILD=${PACKAGE_BUILD} && export EXECUTABLE_VERSION=${EXECUTABLE_VERSION} && export EXECUTABLE_ARCH=${EXECUTABLE_ARCH} && cd ${PROJECT_DIR_DOCKER} && .travis/wininstall_build.sh" + /bin/bash -c "export PROJECT_DIR=${PROJECT_DIR_DOCKER} && export QT_SELECT=${QT_SELECT} && export APPLICATION_VERSION=${APPLICATION_VERSION} && export QMAKE_FLAGS_QT4=${QMAKE_FLAGS_QT4} && export QMAKE_FLAGS_QT5=${QMAKE_FLAGS_QT5} && export PACKAGE_VERSION=${PACKAGE_VERSION} && export PACKAGE_BUILD=${PACKAGE_BUILD} && export PACKAGE_CODE=${PACKAGE_CODE} && export EXECUTABLE_VERSION=${EXECUTABLE_VERSION} && export EXECUTABLE_ARCH=${EXECUTABLE_ARCH} && cd ${PROJECT_DIR_DOCKER} && .travis/wininstall_build.sh" diff --git a/AboutDialog.cpp b/AboutDialog.cpp index e9fe88e..31ef78d 100644 --- a/AboutDialog.cpp +++ b/AboutDialog.cpp @@ -1,5 +1,5 @@ /***************************************************************************** -* gta5sync GRAND THEFT AUTO V SYNC +* gta5view Grand Theft Auto V Profile Viewer * Copyright (C) 2016-2018 Syping * * This program is free software: you can redistribute it and/or modify @@ -65,11 +65,7 @@ AboutDialog::AboutDialog(QWidget *parent) : } // Project Description -#ifdef GTA5SYNC_ENABLED - QString projectDes = tr("A project for viewing and sync Grand Theft Auto V Snapmatic
\nPictures and Savegames"); -#else QString projectDes = tr("A project for viewing Grand Theft Auto V Snapmatic
\nPictures and Savegames"); -#endif // Copyright Description QString copyrightDes1 = tr("Copyright © %2 %3"); diff --git a/AboutDialog.h b/AboutDialog.h index c9eecdf..1a0a7d9 100644 --- a/AboutDialog.h +++ b/AboutDialog.h @@ -1,5 +1,5 @@ /***************************************************************************** -* gta5sync GRAND THEFT AUTO V SYNC +* gta5view Grand Theft Auto V Profile Viewer * Copyright (C) 2016-2017 Syping * * This program is free software: you can redistribute it and/or modify diff --git a/AppEnv.cpp b/AppEnv.cpp index 6180e5b..56e0b08 100644 --- a/AppEnv.cpp +++ b/AppEnv.cpp @@ -1,5 +1,5 @@ /***************************************************************************** -* gta5sync GRAND THEFT AUTO V SYNC +* gta5view Grand Theft Auto V Profile Viewer * Copyright (C) 2016-2017 Syping * * This program is free software: you can redistribute it and/or modify diff --git a/AppEnv.h b/AppEnv.h index 2d911be..1fca998 100644 --- a/AppEnv.h +++ b/AppEnv.h @@ -1,5 +1,5 @@ /***************************************************************************** -* gta5sync GRAND THEFT AUTO V SYNC +* gta5view Grand Theft Auto V Profile Viewer * Copyright (C) 2016-2018 Syping * * This program is free software: you can redistribute it and/or modify diff --git a/CrewDatabase.cpp b/CrewDatabase.cpp index 73d9bed..0fa96c6 100644 --- a/CrewDatabase.cpp +++ b/CrewDatabase.cpp @@ -1,5 +1,5 @@ /***************************************************************************** -* gta5sync GRAND THEFT AUTO V SYNC +* gta5view Grand Theft Auto V Profile Viewer * Copyright (C) 2016-2017 Syping * * This program is free software: you can redistribute it and/or modify diff --git a/CrewDatabase.h b/CrewDatabase.h index 0bb9933..692ea79 100644 --- a/CrewDatabase.h +++ b/CrewDatabase.h @@ -1,5 +1,5 @@ /***************************************************************************** -* gta5sync GRAND THEFT AUTO V SYNC +* gta5view Grand Theft Auto V Profile Viewer * Copyright (C) 2016-2017 Syping * * This program is free software: you can redistribute it and/or modify diff --git a/DatabaseThread.cpp b/DatabaseThread.cpp index 2344dca..4d12e74 100644 --- a/DatabaseThread.cpp +++ b/DatabaseThread.cpp @@ -1,5 +1,5 @@ /***************************************************************************** -* gta5sync GRAND THEFT AUTO V SYNC +* gta5view Grand Theft Auto V Profile Viewer * Copyright (C) 2016-2017 Syping * * This program is free software: you can redistribute it and/or modify diff --git a/DatabaseThread.h b/DatabaseThread.h index 8d8bbfa..37c6f76 100644 --- a/DatabaseThread.h +++ b/DatabaseThread.h @@ -1,5 +1,5 @@ /***************************************************************************** -* gta5sync GRAND THEFT AUTO V SYNC +* gta5view Grand Theft Auto V Profile Viewer * Copyright (C) 2016-2017 Syping * * This program is free software: you can redistribute it and/or modify diff --git a/ExportDialog.cpp b/ExportDialog.cpp index 9a93c58..43d8d97 100644 --- a/ExportDialog.cpp +++ b/ExportDialog.cpp @@ -1,5 +1,5 @@ /***************************************************************************** -* gta5sync GRAND THEFT AUTO V SYNC +* gta5view Grand Theft Auto V Profile Viewer * Copyright (C) 2016-2017 Syping * * This program is free software: you can redistribute it and/or modify diff --git a/ExportDialog.h b/ExportDialog.h index 65354f0..5da4b91 100644 --- a/ExportDialog.h +++ b/ExportDialog.h @@ -1,5 +1,5 @@ /***************************************************************************** -* gta5sync GRAND THEFT AUTO V SYNC +* gta5view Grand Theft Auto V Profile Viewer * Copyright (C) 2016-2017 Syping * * This program is free software: you can redistribute it and/or modify diff --git a/ExportThread.cpp b/ExportThread.cpp index b795824..f3401f1 100644 --- a/ExportThread.cpp +++ b/ExportThread.cpp @@ -1,5 +1,5 @@ /***************************************************************************** -* gta5sync GRAND THEFT AUTO V SYNC +* gta5view Grand Theft Auto V Profile Viewer * Copyright (C) 2016-2017 Syping * * This program is free software: you can redistribute it and/or modify diff --git a/ExportThread.h b/ExportThread.h index f5837a7..99ad28b 100644 --- a/ExportThread.h +++ b/ExportThread.h @@ -1,5 +1,5 @@ /***************************************************************************** -* gta5sync GRAND THEFT AUTO V SYNC +* gta5view Grand Theft Auto V Profile Viewer * Copyright (C) 2016-2017 Syping * * This program is free software: you can redistribute it and/or modify diff --git a/GlobalString.cpp b/GlobalString.cpp index 4aa7aad..2bb9690 100644 --- a/GlobalString.cpp +++ b/GlobalString.cpp @@ -1,5 +1,5 @@ /***************************************************************************** -* gta5sync GRAND THEFT AUTO V SYNC +* gta5view Grand Theft Auto V Profile Viewer * Copyright (C) 2016-2018 Syping * * This program is free software: you can redistribute it and/or modify diff --git a/GlobalString.h b/GlobalString.h index 2d1f4ba..711afa9 100644 --- a/GlobalString.h +++ b/GlobalString.h @@ -1,5 +1,5 @@ /***************************************************************************** -* gta5sync GRAND THEFT AUTO V SYNC +* gta5view Grand Theft Auto V Profile Viewer * Copyright (C) 2016-2017 Syping * * This program is free software: you can redistribute it and/or modify diff --git a/IconLoader.cpp b/IconLoader.cpp index 4de091d..d275718 100644 --- a/IconLoader.cpp +++ b/IconLoader.cpp @@ -1,5 +1,5 @@ /***************************************************************************** -* gta5sync GRAND THEFT AUTO V SYNC +* gta5view Grand Theft Auto V Profile Viewer * Copyright (C) 2016-2017 Syping * * This program is free software: you can redistribute it and/or modify diff --git a/IconLoader.h b/IconLoader.h index fe8669b..8456688 100644 --- a/IconLoader.h +++ b/IconLoader.h @@ -1,5 +1,5 @@ /***************************************************************************** -* gta5sync GRAND THEFT AUTO V SYNC +* gta5view Grand Theft Auto V Profile Viewer * Copyright (C) 2016-2017 Syping * * This program is free software: you can redistribute it and/or modify diff --git a/ImageEditorDialog.cpp b/ImageEditorDialog.cpp index 749e412..a4ab3eb 100644 --- a/ImageEditorDialog.cpp +++ b/ImageEditorDialog.cpp @@ -1,5 +1,5 @@ /***************************************************************************** -* gta5sync GRAND THEFT AUTO V SYNC +* gta5view Grand Theft Auto V Profile Viewer * Copyright (C) 2017-2018 Syping * * This program is free software: you can redistribute it and/or modify diff --git a/ImageEditorDialog.h b/ImageEditorDialog.h index a9417cd..06a3c02 100644 --- a/ImageEditorDialog.h +++ b/ImageEditorDialog.h @@ -1,5 +1,5 @@ /***************************************************************************** -* gta5sync GRAND THEFT AUTO V SYNC +* gta5view Grand Theft Auto V Profile Viewer * Copyright (C) 2016-2017 Syping * * This program is free software: you can redistribute it and/or modify diff --git a/ImportDialog.cpp b/ImportDialog.cpp index 0d0f6d4..59ea61d 100644 --- a/ImportDialog.cpp +++ b/ImportDialog.cpp @@ -1,5 +1,5 @@ /***************************************************************************** -* gta5sync GRAND THEFT AUTO V SYNC +* gta5view Grand Theft Auto V Profile Viewer * Copyright (C) 2017-2018 Syping * * This program is free software: you can redistribute it and/or modify @@ -32,6 +32,7 @@ #include #include #include +#include #include #include diff --git a/ImportDialog.h b/ImportDialog.h index e095ff2..70e0648 100644 --- a/ImportDialog.h +++ b/ImportDialog.h @@ -1,5 +1,5 @@ /***************************************************************************** -* gta5sync GRAND THEFT AUTO V SYNC +* gta5view Grand Theft Auto V Profile Viewer * Copyright (C) 2017 Syping * * This program is free software: you can redistribute it and/or modify diff --git a/JsonEditorDialog.cpp b/JsonEditorDialog.cpp index 9aaa392..62c1636 100644 --- a/JsonEditorDialog.cpp +++ b/JsonEditorDialog.cpp @@ -1,5 +1,5 @@ /***************************************************************************** -* gta5sync GRAND THEFT AUTO V SYNC +* gta5view Grand Theft Auto V Profile Viewer * Copyright (C) 2017-2018 Syping * * This program is free software: you can redistribute it and/or modify diff --git a/JsonEditorDialog.h b/JsonEditorDialog.h index b881088..4e618bb 100644 --- a/JsonEditorDialog.h +++ b/JsonEditorDialog.h @@ -1,5 +1,5 @@ /***************************************************************************** -* gta5sync GRAND THEFT AUTO V SYNC +* gta5view Grand Theft Auto V Profile Viewer * Copyright (C) 2017 Syping * * This program is free software: you can redistribute it and/or modify diff --git a/MapLocationDialog.cpp b/MapLocationDialog.cpp index 9ebb53f..77a32fb 100644 --- a/MapLocationDialog.cpp +++ b/MapLocationDialog.cpp @@ -1,5 +1,5 @@ /***************************************************************************** -* gta5sync GRAND THEFT AUTO V SYNC +* gta5view Grand Theft Auto V Profile Viewer * Copyright (C) 2017 Syping * * This program is free software: you can redistribute it and/or modify @@ -22,6 +22,7 @@ #include "AppEnv.h" #include #include +#include MapLocationDialog::MapLocationDialog(double x, double y, QWidget *parent) : QDialog(parent), xpos_old(x), ypos_old(y), diff --git a/MapLocationDialog.h b/MapLocationDialog.h index 1abfa93..f0fdffa 100644 --- a/MapLocationDialog.h +++ b/MapLocationDialog.h @@ -1,5 +1,5 @@ /***************************************************************************** -* gta5sync GRAND THEFT AUTO V SYNC +* gta5view Grand Theft Auto V Profile Viewer * Copyright (C) 2017 Syping * * This program is free software: you can redistribute it and/or modify diff --git a/OptionsDialog.cpp b/OptionsDialog.cpp index 0528709..be952e9 100644 --- a/OptionsDialog.cpp +++ b/OptionsDialog.cpp @@ -1,5 +1,5 @@ /***************************************************************************** -* gta5sync GRAND THEFT AUTO V SYNC +* gta5view Grand Theft Auto V Profile Viewer * Copyright (C) 2016-2018 Syping * * This program is free software: you can redistribute it and/or modify @@ -109,10 +109,6 @@ OptionsDialog::OptionsDialog(ProfileDatabase *profileDB, QWidget *parent) : resize(435 * screenRatio, 405 * screenRatio); #endif -#ifdef GTA5SYNC_DISABLED - ui->tabWidget->removeTab(ui->tabWidget->indexOf(ui->tabSync)); -#endif - this->setWindowTitle(windowTitle().arg(GTA5SYNC_APPSTR)); } diff --git a/OptionsDialog.h b/OptionsDialog.h index ae086ba..4d35ca7 100644 --- a/OptionsDialog.h +++ b/OptionsDialog.h @@ -1,5 +1,5 @@ /****************************************************************************** -* gta5sync GRAND THEFT AUTO V SYNC +* gta5view Grand Theft Auto V Profile Viewer * Copyright (C) 2016-2017 Syping * * This program is free software: you can redistribute it and/or modify diff --git a/OptionsDialog.ui b/OptionsDialog.ui index 40d8caa..9f1b0fb 100644 --- a/OptionsDialog.ui +++ b/OptionsDialog.ui @@ -20,7 +20,7 @@ - 3 + 0 @@ -683,26 +683,6 @@ - - - Sync - - - - - - Sync is not implemented at current time - - - Qt::AlignCenter - - - true - - - - - diff --git a/PictureDialog.cpp b/PictureDialog.cpp index 0ba79e9..97d8f65 100644 --- a/PictureDialog.cpp +++ b/PictureDialog.cpp @@ -1,5 +1,5 @@ /***************************************************************************** -* gta5sync GRAND THEFT AUTO V SYNC +* gta5view Grand Theft Auto V Profile Viewer * Copyright (C) 2016-2018 Syping * * This program is free software: you can redistribute it and/or modify diff --git a/PictureDialog.h b/PictureDialog.h index 0c3155c..ef351b8 100644 --- a/PictureDialog.h +++ b/PictureDialog.h @@ -1,5 +1,5 @@ /***************************************************************************** -* gta5sync GRAND THEFT AUTO V SYNC +* gta5view Grand Theft Auto V Profile Viewer * Copyright (C) 2016-2017 Syping * * This program is free software: you can redistribute it and/or modify diff --git a/PictureDialog.ui b/PictureDialog.ui index 982c0eb..888aa92 100644 --- a/PictureDialog.ui +++ b/PictureDialog.ui @@ -43,9 +43,6 @@ - - :/img/960x536.png - Qt::AlignCenter @@ -230,9 +227,7 @@ - - - + cmdClose diff --git a/PictureExport.cpp b/PictureExport.cpp index 41d0f0c..34ae2ae 100644 --- a/PictureExport.cpp +++ b/PictureExport.cpp @@ -1,5 +1,5 @@ /***************************************************************************** -* gta5sync GRAND THEFT AUTO V SYNC +* gta5view Grand Theft Auto V Profile Viewer * Copyright (C) 2016-2017 Syping * * This program is free software: you can redistribute it and/or modify diff --git a/PictureExport.h b/PictureExport.h index 6ee84a0..623f093 100644 --- a/PictureExport.h +++ b/PictureExport.h @@ -1,5 +1,5 @@ /***************************************************************************** -* gta5sync GRAND THEFT AUTO V SYNC +* gta5view Grand Theft Auto V Profile Viewer * Copyright (C) 2016-2017 Syping * * This program is free software: you can redistribute it and/or modify diff --git a/PictureWidget.cpp b/PictureWidget.cpp index 95d51a1..ffadd18 100644 --- a/PictureWidget.cpp +++ b/PictureWidget.cpp @@ -1,5 +1,5 @@ /***************************************************************************** -* gta5sync GRAND THEFT AUTO V SYNC +* gta5view Grand Theft Auto V Profile Viewer * Copyright (C) 2016-2017 Syping * * This program is free software: you can redistribute it and/or modify diff --git a/PictureWidget.h b/PictureWidget.h index 2ebd21c..f622614 100644 --- a/PictureWidget.h +++ b/PictureWidget.h @@ -1,5 +1,5 @@ /***************************************************************************** -* gta5sync GRAND THEFT AUTO V SYNC +* gta5view Grand Theft Auto V Profile Viewer * Copyright (C) 2016-2017 Syping * * This program is free software: you can redistribute it and/or modify diff --git a/PlayerListDialog.cpp b/PlayerListDialog.cpp index f828715..337d61b 100644 --- a/PlayerListDialog.cpp +++ b/PlayerListDialog.cpp @@ -1,5 +1,5 @@ /***************************************************************************** -* gta5sync GRAND THEFT AUTO V SYNC +* gta5view Grand Theft Auto V Profile Viewer * Copyright (C) 2016-2018 Syping * * This program is free software: you can redistribute it and/or modify diff --git a/PlayerListDialog.h b/PlayerListDialog.h index fb779d7..8c99fb0 100644 --- a/PlayerListDialog.h +++ b/PlayerListDialog.h @@ -1,5 +1,5 @@ /***************************************************************************** -* gta5sync GRAND THEFT AUTO V SYNC +* gta5view Grand Theft Auto V Profile Viewer * Copyright (C) 2016-2017 Syping * * This program is free software: you can redistribute it and/or modify diff --git a/ProfileDatabase.cpp b/ProfileDatabase.cpp index b04a4fd..09ff581 100644 --- a/ProfileDatabase.cpp +++ b/ProfileDatabase.cpp @@ -1,5 +1,5 @@ /***************************************************************************** -* gta5sync GRAND THEFT AUTO V SYNC +* gta5view Grand Theft Auto V Profile Viewer * Copyright (C) 2016-2017 Syping * * This program is free software: you can redistribute it and/or modify diff --git a/ProfileDatabase.h b/ProfileDatabase.h index 89ae497..99bfc80 100644 --- a/ProfileDatabase.h +++ b/ProfileDatabase.h @@ -1,5 +1,5 @@ /***************************************************************************** -* gta5sync GRAND THEFT AUTO V SYNC +* gta5view Grand Theft Auto V Profile Viewer * Copyright (C) 2016-2017 Syping * * This program is free software: you can redistribute it and/or modify diff --git a/ProfileInterface.cpp b/ProfileInterface.cpp index 4f39530..0684f50 100644 --- a/ProfileInterface.cpp +++ b/ProfileInterface.cpp @@ -1,5 +1,5 @@ /***************************************************************************** -* gta5sync GRAND THEFT AUTO V SYNC +* gta5view Grand Theft Auto V Profile Viewer * Copyright (C) 2016-2018 Syping * * This program is free software: you can redistribute it and/or modify @@ -51,6 +51,7 @@ #include #include #include +#include #include #include #include diff --git a/ProfileInterface.h b/ProfileInterface.h index cba5d88..667d1f1 100644 --- a/ProfileInterface.h +++ b/ProfileInterface.h @@ -1,5 +1,5 @@ /***************************************************************************** -* gta5sync GRAND THEFT AUTO V SYNC +* gta5view Grand Theft Auto V Profile Viewer * Copyright (C) 2016-2017 Syping * * This program is free software: you can redistribute it and/or modify diff --git a/ProfileLoader.cpp b/ProfileLoader.cpp index 3874140..2653338 100644 --- a/ProfileLoader.cpp +++ b/ProfileLoader.cpp @@ -1,5 +1,5 @@ /***************************************************************************** -* gta5sync GRAND THEFT AUTO V SYNC +* gta5view Grand Theft Auto V Profile Viewer * Copyright (C) 2016-2017 Syping * * This program is free software: you can redistribute it and/or modify diff --git a/ProfileLoader.h b/ProfileLoader.h index 472c27d..0396e27 100644 --- a/ProfileLoader.h +++ b/ProfileLoader.h @@ -1,5 +1,5 @@ /***************************************************************************** -* gta5sync GRAND THEFT AUTO V SYNC +* gta5view Grand Theft Auto V Profile Viewer * Copyright (C) 2016-2017 Syping * * This program is free software: you can redistribute it and/or modify diff --git a/ProfileWidget.cpp b/ProfileWidget.cpp index 09b7a0f..a325d92 100644 --- a/ProfileWidget.cpp +++ b/ProfileWidget.cpp @@ -1,5 +1,5 @@ /***************************************************************************** -* gta5sync GRAND THEFT AUTO V SYNC +* gta5view Grand Theft Auto V Profile Viewer * Copyright (C) 2016-2017 Syping * * This program is free software: you can redistribute it and/or modify diff --git a/ProfileWidget.h b/ProfileWidget.h index 8de7cda..b7d2f77 100644 --- a/ProfileWidget.h +++ b/ProfileWidget.h @@ -1,5 +1,5 @@ /***************************************************************************** -* gta5sync GRAND THEFT AUTO V SYNC +* gta5view Grand Theft Auto V Profile Viewer * Copyright (C) 2016-2017 Syping * * This program is free software: you can redistribute it and/or modify diff --git a/README.md b/README.md index 9be8cfd..c903a67 100644 --- a/README.md +++ b/README.md @@ -7,9 +7,9 @@ Grand Theft Auto V Savegame and Snapmatic viewer/editor - Let choose between multiple Social Club accounts as GTA V profiles IDs #### Screenshots -![Snapmatic Picture Viewer](https://i.imgur.com/dQdW3hx.png) -![User Interface](https://i.imgur.com/SRNQdq6.png) -![Snapmatic Properties](https://i.imgur.com/j1Lodiu.png) +![Snapmatic Picture Viewer](res/src/picture.png) +![User Interface](res/src/mainui.png) +![Snapmatic Properties](res/src/prop.png) #### Build gta5view for Debian/Ubuntu diff --git a/SavegameCopy.cpp b/SavegameCopy.cpp index b0f8064..9ebbe66 100644 --- a/SavegameCopy.cpp +++ b/SavegameCopy.cpp @@ -1,5 +1,5 @@ /***************************************************************************** -* gta5sync GRAND THEFT AUTO V SYNC +* gta5view Grand Theft Auto V Profile Viewer * Copyright (C) 2016-2017 Syping * * This program is free software: you can redistribute it and/or modify diff --git a/SavegameCopy.h b/SavegameCopy.h index 6447497..f5550ba 100644 --- a/SavegameCopy.h +++ b/SavegameCopy.h @@ -1,5 +1,5 @@ /***************************************************************************** -* gta5sync GRAND THEFT AUTO V SYNC +* gta5view Grand Theft Auto V Profile Viewer * Copyright (C) 2016-2017 Syping * * This program is free software: you can redistribute it and/or modify diff --git a/SavegameData.cpp b/SavegameData.cpp index 826746a..6345f29 100644 --- a/SavegameData.cpp +++ b/SavegameData.cpp @@ -1,5 +1,5 @@ /***************************************************************************** -* gta5sync GRAND THEFT AUTO V SYNC +* gta5view Grand Theft Auto V Profile Viewer * Copyright (C) 2016-2017 Syping * * This program is free software: you can redistribute it and/or modify @@ -16,6 +16,7 @@ * along with this program. If not, see . *****************************************************************************/ +#include "SnapmaticPicture.h" #include "StringParser.h" #include "SavegameData.h" #include @@ -42,7 +43,7 @@ bool SavegameData::readingSavegame() QFile *saveFile = new QFile(savegameFileName); if (!saveFile->open(QFile::ReadOnly)) { - lastStep = "1;/1,OpenFile," % StringParser::convertDrawStringForLog(savegameFileName); + lastStep = "1;/1,OpenFile," % SnapmaticPicture::convertDrawStringForLog(savegameFileName); saveFile->deleteLater(); delete saveFile; return false; @@ -51,7 +52,7 @@ bool SavegameData::readingSavegame() // Reading Savegame Header if (!saveFile->isReadable()) { - lastStep = "2;/3,ReadingFile," % StringParser::convertDrawStringForLog(savegameFileName) % ",1,NOHEADER"; + lastStep = "2;/3,ReadingFile," % SnapmaticPicture::convertDrawStringForLog(savegameFileName) % ",1,NOHEADER"; saveFile->close(); saveFile->deleteLater(); delete saveFile; @@ -78,7 +79,7 @@ QString SavegameData::getSavegameDataString(const QByteArray &savegameHeader) QList savegameBytesList = savegameBytes.split(char(0x01)); savegameBytes = savegameBytesList.at(1); savegameBytesList.clear(); - return StringParser::parseTitleString(savegameBytes, savegameBytes.length()); + return SnapmaticPicture::parseTitleString(savegameBytes, savegameBytes.length()); } bool SavegameData::readingSavegameFromFile(const QString &fileName) diff --git a/SavegameData.h b/SavegameData.h index bc5cf2f..bedb57c 100644 --- a/SavegameData.h +++ b/SavegameData.h @@ -1,5 +1,5 @@ /***************************************************************************** -* gta5sync GRAND THEFT AUTO V SYNC +* gta5view Grand Theft Auto V Profile Viewer * Copyright (C) 2016-2017 Syping * * This program is free software: you can redistribute it and/or modify diff --git a/SavegameDialog.cpp b/SavegameDialog.cpp index 5182e3f..c13d82b 100644 --- a/SavegameDialog.cpp +++ b/SavegameDialog.cpp @@ -1,5 +1,5 @@ /***************************************************************************** -* gta5sync GRAND THEFT AUTO V SYNC +* gta5view Grand Theft Auto V Profile Viewer * Copyright (C) 2016-2018 Syping * * This program is free software: you can redistribute it and/or modify diff --git a/SavegameDialog.h b/SavegameDialog.h index cce13cc..4abbba4 100644 --- a/SavegameDialog.h +++ b/SavegameDialog.h @@ -1,5 +1,5 @@ /***************************************************************************** -* gta5sync GRAND THEFT AUTO V SYNC +* gta5view Grand Theft Auto V Profile Viewer * Copyright (C) 2016-2018 Syping * * This program is free software: you can redistribute it and/or modify diff --git a/SavegameWidget.cpp b/SavegameWidget.cpp index 7d81d92..3c1c667 100644 --- a/SavegameWidget.cpp +++ b/SavegameWidget.cpp @@ -1,5 +1,5 @@ /***************************************************************************** -* gta5sync GRAND THEFT AUTO V SYNC +* gta5view Grand Theft Auto V Profile Viewer * Copyright (C) 2016-2017 Syping * * This program is free software: you can redistribute it and/or modify diff --git a/SavegameWidget.h b/SavegameWidget.h index 0db69af..103fa55 100644 --- a/SavegameWidget.h +++ b/SavegameWidget.h @@ -1,5 +1,5 @@ /***************************************************************************** -* gta5sync GRAND THEFT AUTO V SYNC +* gta5view Grand Theft Auto V Profile Viewer * Copyright (C) 2016-2017 Syping * * This program is free software: you can redistribute it and/or modify diff --git a/SidebarGenerator.cpp b/SidebarGenerator.cpp index 1d57e5d..e93474c 100644 --- a/SidebarGenerator.cpp +++ b/SidebarGenerator.cpp @@ -1,5 +1,5 @@ /***************************************************************************** -* gta5sync GRAND THEFT AUTO V SYNC +* gta5view Grand Theft Auto V Profile Viewer * Copyright (C) 2016-2017 Syping * * This program is free software: you can redistribute it and/or modify diff --git a/SidebarGenerator.h b/SidebarGenerator.h index 5e906a3..446f73c 100644 --- a/SidebarGenerator.h +++ b/SidebarGenerator.h @@ -1,5 +1,5 @@ /***************************************************************************** -* gta5sync GRAND THEFT AUTO V SYNC +* gta5view Grand Theft Auto V Profile Viewer * Copyright (C) 2016-2017 Syping * * This program is free software: you can redistribute it and/or modify diff --git a/SnapmaticEditor.cpp b/SnapmaticEditor.cpp index 954571c..18f481f 100644 --- a/SnapmaticEditor.cpp +++ b/SnapmaticEditor.cpp @@ -1,5 +1,5 @@ /***************************************************************************** -* gta5sync GRAND THEFT AUTO V SYNC +* gta5view Grand Theft Auto V Profile Viewer * Copyright (C) 2016-2018 Syping * * This program is free software: you can redistribute it and/or modify diff --git a/SnapmaticEditor.h b/SnapmaticEditor.h index 1e57294..98ed2d6 100644 --- a/SnapmaticEditor.h +++ b/SnapmaticEditor.h @@ -1,5 +1,5 @@ /***************************************************************************** -* gta5sync GRAND THEFT AUTO V SYNC +* gta5view Grand Theft Auto V Profile Viewer * Copyright (C) 2016-2017 Syping * * This program is free software: you can redistribute it and/or modify diff --git a/SnapmaticPicture.cpp b/SnapmaticPicture.cpp index d5414f7..c22d2e7 100644 --- a/SnapmaticPicture.cpp +++ b/SnapmaticPicture.cpp @@ -1,6 +1,6 @@ /***************************************************************************** -* gta5sync-spv Grand Theft Auto Snapmatic Picture Viewer -* Copyright (C) 2016-2017 Syping +* gta5spv Grand Theft Auto Snapmatic Picture Viewer +* Copyright (C) 2016-2018 Syping * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -17,12 +17,12 @@ *****************************************************************************/ #include "SnapmaticPicture.h" -#include "StringParser.h" #include #include #include #include #include +#include #include #include #include @@ -101,7 +101,7 @@ void SnapmaticPicture::reset() jsonStr = QString(); // SNAPMATIC DEFAULTS -#ifdef GTA5SYNC_CSDF +#ifdef GTA5SYNC_NOASSIST careSnapDefault = false; #else careSnapDefault = true; @@ -121,7 +121,7 @@ bool SnapmaticPicture::preloadFile() if (!picFile->open(QFile::ReadOnly)) { - lastStep = "1;/1,OpenFile," % StringParser::convertDrawStringForLog(picFilePath); + lastStep = "1;/1,OpenFile," % convertDrawStringForLog(picFilePath); delete picFile; return false; } @@ -191,31 +191,31 @@ bool SnapmaticPicture::preloadFile() } else { - lastStep = "2;/3,ReadingFile," % StringParser::convertDrawStringForLog(picFilePath) % ",4,G5E_FORMATERROR"; + lastStep = "2;/3,ReadingFile," % convertDrawStringForLog(picFilePath) % ",4,G5E_FORMATERROR"; return false; } } else { - lastStep = "2;/3,ReadingFile," % StringParser::convertDrawStringForLog(picFilePath) % ",3,G5E_FORMATERROR"; + lastStep = "2;/3,ReadingFile," % convertDrawStringForLog(picFilePath) % ",3,G5E_FORMATERROR"; return false; } } else { - lastStep = "2;/3,ReadingFile," % StringParser::convertDrawStringForLog(picFilePath) % ",2,G5E_FORMATERROR"; + lastStep = "2;/3,ReadingFile," % convertDrawStringForLog(picFilePath) % ",2,G5E_FORMATERROR"; return false; } } else { - lastStep = "2;/3,ReadingFile," % StringParser::convertDrawStringForLog(picFilePath) % ",1,G5E_NOTCOMPATIBLE"; + lastStep = "2;/3,ReadingFile," % convertDrawStringForLog(picFilePath) % ",1,G5E_NOTCOMPATIBLE"; return false; } } else { - lastStep = "2;/3,ReadingFile," % StringParser::convertDrawStringForLog(picFilePath) % ",1,G5E_FORMATERROR"; + lastStep = "2;/3,ReadingFile," % convertDrawStringForLog(picFilePath) % ",1,G5E_FORMATERROR"; return false; } } @@ -244,7 +244,7 @@ bool SnapmaticPicture::readingPicture(bool writeEnabled_, bool cacheEnabled_, bo // Reading Snapmatic Header if (!picStream->isReadable()) { - lastStep = "2;/3,ReadingFile," % StringParser::convertDrawStringForLog(picFilePath) % ",1,NOHEADER"; + lastStep = "2;/3,ReadingFile," % convertDrawStringForLog(picFilePath) % ",1,NOHEADER"; picStream->close(); delete picStream; return false; @@ -253,7 +253,7 @@ bool SnapmaticPicture::readingPicture(bool writeEnabled_, bool cacheEnabled_, bo pictureHead = getSnapmaticHeaderString(snapmaticHeaderLine); if (pictureHead == QLatin1String("MALFORMED")) { - lastStep = "2;/3,ReadingFile," % StringParser::convertDrawStringForLog(picFilePath) % ",1,MALFORMEDHEADER"; + lastStep = "2;/3,ReadingFile," % convertDrawStringForLog(picFilePath) % ",1,MALFORMEDHEADER"; picStream->close(); delete picStream; return false; @@ -262,7 +262,7 @@ bool SnapmaticPicture::readingPicture(bool writeEnabled_, bool cacheEnabled_, bo // Reading JPEG Header Line if (!picStream->isReadable()) { - lastStep = "2;/3,ReadingFile," % StringParser::convertDrawStringForLog(picFilePath) % ",2,NOHEADER"; + lastStep = "2;/3,ReadingFile," % convertDrawStringForLog(picFilePath) % ",2,NOHEADER"; picStream->close(); delete picStream; return false; @@ -273,7 +273,7 @@ bool SnapmaticPicture::readingPicture(bool writeEnabled_, bool cacheEnabled_, bo jpegHeaderLine.remove(0, jpegHeaderLineDifStr); if (jpegHeaderLine.left(4) != QByteArray("JPEG")) { - lastStep = "2;/3,ReadingFile," % StringParser::convertDrawStringForLog(picFilePath) % ",2,NOJPEG"; + lastStep = "2;/3,ReadingFile," % convertDrawStringForLog(picFilePath) % ",2,NOJPEG"; picStream->close(); delete picStream; return false; @@ -282,7 +282,7 @@ bool SnapmaticPicture::readingPicture(bool writeEnabled_, bool cacheEnabled_, bo // Read JPEG Stream if (!picStream->isReadable()) { - lastStep = "2;/3,ReadingFile," % StringParser::convertDrawStringForLog(picFilePath) % ",2,NOPIC"; + lastStep = "2;/3,ReadingFile," % convertDrawStringForLog(picFilePath) % ",2,NOPIC"; picStream->close(); delete picStream; return false; @@ -336,14 +336,14 @@ bool SnapmaticPicture::readingPicture(bool writeEnabled_, bool cacheEnabled_, bo // Read JSON Stream if (!picStream->isReadable()) { - lastStep = "2;/3,ReadingFile," % StringParser::convertDrawStringForLog(picFilePath) % ",3,NOJSON"; + lastStep = "2;/3,ReadingFile," % convertDrawStringForLog(picFilePath) % ",3,NOJSON"; picStream->close(); delete picStream; return false; } else if (picStream->read(4) != QByteArray("JSON")) { - lastStep = "2;/3,ReadingFile," % StringParser::convertDrawStringForLog(picFilePath) % ",3,CTJSON"; + lastStep = "2;/3,ReadingFile," % convertDrawStringForLog(picFilePath) % ",3,CTJSON"; picStream->close(); delete picStream; return false; @@ -354,14 +354,14 @@ bool SnapmaticPicture::readingPicture(bool writeEnabled_, bool cacheEnabled_, bo if (!picStream->isReadable()) { - lastStep = "2;/3,ReadingFile," % StringParser::convertDrawStringForLog(picFilePath) % ",4,NOTITL"; + lastStep = "2;/3,ReadingFile," % convertDrawStringForLog(picFilePath) % ",4,NOTITL"; picStream->close(); delete picStream; return false; } else if (picStream->read(4) != QByteArray("TITL")) { - lastStep = "2;/3,ReadingFile," % StringParser::convertDrawStringForLog(picFilePath) % ",4,CTTITL"; + lastStep = "2;/3,ReadingFile," % convertDrawStringForLog(picFilePath) % ",4,CTTITL"; picStream->close(); delete picStream; return false; @@ -371,14 +371,14 @@ bool SnapmaticPicture::readingPicture(bool writeEnabled_, bool cacheEnabled_, bo if (!picStream->isReadable()) { - lastStep = "2;/3,ReadingFile," % StringParser::convertDrawStringForLog(picFilePath) % ",5,NODESC"; + lastStep = "2;/3,ReadingFile," % convertDrawStringForLog(picFilePath) % ",5,NODESC"; picStream->close(); delete picStream; return picOk; } else if (picStream->read(4) != QByteArray("DESC")) { - lastStep = "2;/3,ReadingFile," % StringParser::convertDrawStringForLog(picFilePath) % ",5,CTDESC"; + lastStep = "2;/3,ReadingFile," % convertDrawStringForLog(picFilePath) % ",5,CTDESC"; picStream->close(); delete picStream; return false; @@ -403,7 +403,7 @@ QString SnapmaticPicture::getSnapmaticHeaderString(const QByteArray &snapmaticHe QList snapmaticBytesList = snapmaticHeader.left(snapmaticUsefulLength).split('\x01'); if (snapmaticBytesList.length() < 2) { return QLatin1String("MALFORMED"); } QByteArray snapmaticBytes = snapmaticBytesList.at(1); - return StringParser::parseTitleString(snapmaticBytes, snapmaticBytes.length()); + return parseTitleString(snapmaticBytes, snapmaticBytes.length()); } QString SnapmaticPicture::getSnapmaticJSONString(const QByteArray &jsonBytes) @@ -792,7 +792,7 @@ QImage SnapmaticPicture::getImage(bool fastLoad) QFile *picFile = new QFile(picFilePath); if (!picFile->open(QFile::ReadOnly)) { - lastStep = "1;/1,OpenFile," % StringParser::convertDrawStringForLog(picFilePath); + lastStep = "1;/1,OpenFile," % convertDrawStringForLog(picFilePath); delete picFile; return QImage(); } @@ -1014,15 +1014,15 @@ void SnapmaticPicture::parseJsonContent() { if (jsonIncomplete && jsonError) { - lastStep = "2;/4,ReadingFile," % StringParser::convertDrawStringForLog(picFilePath) % ",3,JSONINCOMPLETE,JSONERROR"; + lastStep = "2;/4,ReadingFile," % convertDrawStringForLog(picFilePath) % ",3,JSONINCOMPLETE,JSONERROR"; } else if (jsonIncomplete) { - lastStep = "2;/3,ReadingFile," % StringParser::convertDrawStringForLog(picFilePath) % ",3,JSONINCOMPLETE"; + lastStep = "2;/3,ReadingFile," % convertDrawStringForLog(picFilePath) % ",3,JSONINCOMPLETE"; } else if (jsonError) { - lastStep = "2;/3,ReadingFile," % StringParser::convertDrawStringForLog(picFilePath) % ",3,JSONERROR"; + lastStep = "2;/3,ReadingFile," % convertDrawStringForLog(picFilePath) % ",3,JSONERROR"; } jsonOk = false; } @@ -1377,7 +1377,7 @@ bool SnapmaticPicture::verifyTitle(const QString &title) // VERIFY TITLE FOR BE A VALID SNAPMATIC TITLE if (title.length() <= titlStreamCharacterMax && title.length() > 0) { - for (QChar titleChar : title) + for (const QChar &titleChar : title) { if (!verifyTitleChar(titleChar)) return false; } @@ -1396,3 +1396,25 @@ bool SnapmaticPicture::verifyTitleChar(const QChar &titleChar) } return false; } + +// STRING OPERATIONS + +QString SnapmaticPicture::parseTitleString(const QByteArray &commitBytes, int maxLength) +{ + Q_UNUSED(maxLength) + QString retStr = QTextCodec::codecForName("UTF-16LE")->toUnicode(commitBytes).trimmed(); + retStr.remove(QChar('\x00')); + return retStr; +} + +QString SnapmaticPicture::convertDrawStringForLog(const QString &inputStr) +{ + QString outputStr = inputStr; + return outputStr.replace("&","&u;").replace(",", "&c;"); +} + +QString SnapmaticPicture::convertLogStringForDraw(const QString &inputStr) +{ + QString outputStr = inputStr; + return outputStr.replace("&c;",",").replace("&u;", "&"); +} diff --git a/SnapmaticPicture.h b/SnapmaticPicture.h index 71046df..71b7c9d 100644 --- a/SnapmaticPicture.h +++ b/SnapmaticPicture.h @@ -1,6 +1,6 @@ /***************************************************************************** -* gta5sync-spv Grand Theft Auto Snapmatic Picture Viewer -* Copyright (C) 2016-2017 Syping +* gta5spv Grand Theft Auto Snapmatic Picture Viewer +* Copyright (C) 2016-2018 Syping * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -134,6 +134,11 @@ public: // VERIFY CONTENT static bool verifyTitle(const QString &title); + // STRING OPERATIONS + static QString parseTitleString(const QByteArray &commitBytes, int maxLength); + static QString convertDrawStringForLog(const QString &inputStr); + static QString convertLogStringForDraw(const QString &inputStr); + private: QString getSnapmaticHeaderString(const QByteArray &snapmaticHeader); QString getSnapmaticJSONString(const QByteArray &jsonBytes); diff --git a/SnapmaticWidget.cpp b/SnapmaticWidget.cpp index 16cbc6d..d18c006 100644 --- a/SnapmaticWidget.cpp +++ b/SnapmaticWidget.cpp @@ -1,5 +1,5 @@ /***************************************************************************** -* gta5sync GRAND THEFT AUTO V SYNC +* gta5view Grand Theft Auto V Profile Viewer * Copyright (C) 2016-2017 Syping * * This program is free software: you can redistribute it and/or modify diff --git a/SnapmaticWidget.h b/SnapmaticWidget.h index 289dbf6..8c28f12 100644 --- a/SnapmaticWidget.h +++ b/SnapmaticWidget.h @@ -1,5 +1,5 @@ /***************************************************************************** -* gta5sync GRAND THEFT AUTO V SYNC +* gta5view Grand Theft Auto V Profile Viewer * Copyright (C) 2016-2017 Syping * * This program is free software: you can redistribute it and/or modify diff --git a/StandardPaths.cpp b/StandardPaths.cpp index fa5ed24..af0176d 100644 --- a/StandardPaths.cpp +++ b/StandardPaths.cpp @@ -1,5 +1,5 @@ /***************************************************************************** -* gta5sync GRAND THEFT AUTO V SYNC +* gta5view Grand Theft Auto V Profile Viewer * Copyright (C) 2016-2017 Syping * * This program is free software: you can redistribute it and/or modify diff --git a/StandardPaths.h b/StandardPaths.h index 619bdeb..d03df33 100644 --- a/StandardPaths.h +++ b/StandardPaths.h @@ -1,5 +1,5 @@ /***************************************************************************** -* gta5sync GRAND THEFT AUTO V SYNC +* gta5view Grand Theft Auto V Profile Viewer * Copyright (C) 2016-2017 Syping * * This program is free software: you can redistribute it and/or modify diff --git a/StringParser.cpp b/StringParser.cpp index b93fda5..584a6ac 100644 --- a/StringParser.cpp +++ b/StringParser.cpp @@ -1,5 +1,5 @@ /***************************************************************************** -* gta5sync GRAND THEFT AUTO V SYNC +* gta5view Grand Theft Auto V Profile Viewer * Copyright (C) 2016-2017 Syping * * This program is free software: you can redistribute it and/or modify @@ -36,26 +36,6 @@ StringParser::StringParser() } -QString StringParser::parseTitleString(const QByteArray &commitBytes, int maxLength) -{ - Q_UNUSED(maxLength) - QString retStr = QTextCodec::codecForName("UTF-16LE")->toUnicode(commitBytes).trimmed(); - retStr.remove(QChar('\x00')); - return retStr; -} - -QString StringParser::convertDrawStringForLog(const QString &inputStr) -{ - QString outputStr = inputStr; - return outputStr.replace("&","&u;").replace(",", "&c;"); -} - -QString StringParser::convertLogStringForDraw(const QString &inputStr) -{ - QString outputStr = inputStr; - return outputStr.replace("&c;",",").replace("&u;", "&"); -} - QString StringParser::escapeString(const QString &toEscape) { #if QT_VERSION >= 0x050000 diff --git a/StringParser.h b/StringParser.h index f15b537..59b6460 100644 --- a/StringParser.h +++ b/StringParser.h @@ -1,5 +1,5 @@ /***************************************************************************** -* gta5sync GRAND THEFT AUTO V SYNC +* gta5view Grand Theft Auto V Profile Viewer * Copyright (C) 2016-2017 Syping * * This program is free software: you can redistribute it and/or modify @@ -26,9 +26,6 @@ class StringParser { public: StringParser(); - static QString parseTitleString(const QByteArray &commitBytes, int maxLength); - static QString convertDrawStringForLog(const QString &inputStr); - static QString convertLogStringForDraw(const QString &inputStr); static QString escapeString(const QString &toEscape); #ifdef GTA5SYNC_PROJECT static QString convertBuildedString(const QString &buildedStr); diff --git a/TelemetryClass.cpp b/TelemetryClass.cpp index 6db570c..66eac7f 100644 --- a/TelemetryClass.cpp +++ b/TelemetryClass.cpp @@ -1,5 +1,5 @@ /***************************************************************************** -* gta5sync GRAND THEFT AUTO V SYNC +* gta5view Grand Theft Auto V Profile Viewer * Copyright (C) 2018 Syping * * This program is free software: you can redistribute it and/or modify @@ -52,12 +52,8 @@ void TelemetryClass::init() { QSettings settings(GTA5SYNC_APPVENDOR, GTA5SYNC_APPSTR); settings.beginGroup("Telemetry"); -#ifndef GTA5SYNC_BUILDTYPE_DEV - telemetryEnabled = settings.value("IsEnabled", false).toBool(); -#else - telemetryEnabled = true; // Always enable Telemetry for Developer Versions + telemetryEnabled = true; telemetryStateForced = true; -#endif QString telemetryLegacyClientID = settings.value("ClientID", QString()).toString(); if (telemetryLegacyClientID.isEmpty() || telemetryLegacyClientID == "v2+") { diff --git a/TelemetryClass.h b/TelemetryClass.h index 1e06ff5..475ce6e 100644 --- a/TelemetryClass.h +++ b/TelemetryClass.h @@ -1,5 +1,5 @@ /***************************************************************************** -* gta5sync GRAND THEFT AUTO V SYNC +* gta5view Grand Theft Auto V Profile Viewer * Copyright (C) 2018 Syping * * This program is free software: you can redistribute it and/or modify diff --git a/TranslationClass.cpp b/TranslationClass.cpp index 611d1f2..ba69204 100644 --- a/TranslationClass.cpp +++ b/TranslationClass.cpp @@ -1,5 +1,5 @@ /***************************************************************************** -* gta5sync GRAND THEFT AUTO V SYNC +* gta5view Grand Theft Auto V Profile Viewer * Copyright (C) 2017 Syping * * This program is free software: you can redistribute it and/or modify @@ -617,7 +617,6 @@ QString TranslationClass::getCountryCode(QLocale locale) QStringList localeStrList = locale.name().split("_"); if (localeStrList.length() >= 2) { - qDebug() << localeStrList; return localeStrList.at(1).toLower(); } else diff --git a/TranslationClass.h b/TranslationClass.h index 138216d..963eaff 100644 --- a/TranslationClass.h +++ b/TranslationClass.h @@ -1,5 +1,5 @@ /***************************************************************************** -* gta5sync GRAND THEFT AUTO V SYNC +* gta5view Grand Theft Auto V Profile Viewer * Copyright (C) 2017 Syping * * This program is free software: you can redistribute it and/or modify diff --git a/UserInterface.cpp b/UserInterface.cpp index 7d63257..03b5a7c 100644 --- a/UserInterface.cpp +++ b/UserInterface.cpp @@ -1,5 +1,5 @@ /***************************************************************************** -* gta5sync GRAND THEFT AUTO V SYNC +* gta5view Grand Theft Auto V Profile Viewer * Copyright (C) 2016-2018 Syping * * This program is free software: you can redistribute it and/or modify diff --git a/UserInterface.h b/UserInterface.h index 05ef444..c6f9ed2 100644 --- a/UserInterface.h +++ b/UserInterface.h @@ -1,5 +1,5 @@ /***************************************************************************** -* gta5sync GRAND THEFT AUTO V SYNC +* gta5view Grand Theft Auto V Profile Viewer * Copyright (C) 2016-2017 Syping * * This program is free software: you can redistribute it and/or modify diff --git a/anpro/JSHighlighter.cpp b/anpro/JSHighlighter.cpp index 6d3b93c..7b3aec0 100644 --- a/anpro/JSHighlighter.cpp +++ b/anpro/JSHighlighter.cpp @@ -1,5 +1,5 @@ /***************************************************************************** -* gta5sync GRAND THEFT AUTO V SYNC +* gta5view Grand Theft Auto V Profile Viewer * Copyright (C) 2017 Syping * * This program is free software: you can redistribute it and/or modify diff --git a/anpro/JSHighlighter.h b/anpro/JSHighlighter.h index 08a0eb5..cad6453 100644 --- a/anpro/JSHighlighter.h +++ b/anpro/JSHighlighter.h @@ -1,5 +1,5 @@ /***************************************************************************** -* gta5sync GRAND THEFT AUTO V SYNC +* gta5view Grand Theft Auto V Profile Viewer * Copyright (C) 2017 Syping * * This program is free software: you can redistribute it and/or modify diff --git a/config.h b/config.h index 1ebab69..85ac758 100644 --- a/config.h +++ b/config.h @@ -1,5 +1,5 @@ /***************************************************************************** -* gta5sync GRAND THEFT AUTO V SYNC +* gta5view Grand Theft Auto V Profile Viewer * Copyright (C) 2016-2018 Syping * * This program is free software: you can redistribute it and/or modify @@ -28,17 +28,9 @@ #define GTA5SYNC_APPVENDORLINK "https://github.com/Syping/" #endif -#ifndef GTA5SYNC_DISABLED -#define GTA5SYNC_ENABLED -#endif - #ifndef GTA5SYNC_APPSTR -#ifdef GTA5SYNC_ENABLED -#define GTA5SYNC_APPSTR "gta5sync" -#else #define GTA5SYNC_APPSTR "gta5view" #endif -#endif #ifndef GTA5SYNC_APPDES #define GTA5SYNC_APPDES "INSERT YOUR APPLICATION DESCRIPTION HERE" @@ -49,7 +41,7 @@ #endif #ifndef GTA5SYNC_APPVER -#define GTA5SYNC_APPVER "1.5.4" +#define GTA5SYNC_APPVER "1.5.5" #endif #ifdef GTA5SYNC_BUILDTYPE_REL diff --git a/gta5view.pro b/gta5view.pro index 09a47f8..eb4ddd5 100644 --- a/gta5view.pro +++ b/gta5view.pro @@ -131,8 +131,7 @@ TRANSLATIONS += \ res/gta5sync_fr.ts \ res/gta5sync_ru.ts \ res/gta5sync_uk.ts \ - res/gta5sync_zh_TW.ts \ - lang/gta5sync_no.ts + res/gta5sync_zh_TW.ts RESOURCES += \ res/tr_g5p.qrc \ @@ -147,16 +146,14 @@ DISTFILES += res/app.rc \ res/gta5sync_zh_TW.ts \ res/gta5view.exe.manifest \ res/gta5view.png \ - lang/gta5sync_no.ts \ lang/README.txt INCLUDEPATH += ./anpro ./tmext ./uimod # GTA5SYNC/GTA5VIEW ONLY -DEFINES += GTA5SYNC_DISABLED DEFINES += GTA5SYNC_PROJECT # Enable exclusive gta5sync/gta5view functions -DEFINES += GTA5SYNC_CSDF # Not assisting at proper usage of SnapmaticPicture class +DEFINES += GTA5SYNC_NOASSIST # Not assisting at proper usage of SnapmaticPicture class # WINDOWS ONLY diff --git a/lang/README.txt b/lang/README.txt index c21786f..fd72055 100644 --- a/lang/README.txt +++ b/lang/README.txt @@ -2,4 +2,4 @@ Community translation files They get loaded in ApplicationPathExecFileFolder/lang -You can help translate with using Qt Linguist, after you've translated you'll need to send me a pull request on https://github.com/Syping/gta5sync +You can help translate with using Qt Linguist, after you've translated you'll need to send me a pull request on https://github.com/SyDevTeam/gta5view diff --git a/lang/gta5sync_no.qm b/lang/gta5sync_no.qm deleted file mode 100644 index 9dad8df..0000000 Binary files a/lang/gta5sync_no.qm and /dev/null differ diff --git a/lang/gta5sync_no.ts b/lang/gta5sync_no.ts deleted file mode 100644 index eab7bef..0000000 --- a/lang/gta5sync_no.ts +++ /dev/null @@ -1,2225 +0,0 @@ - - - - - AboutDialog - - - About %1 - - - - - <span style=" font-weight:600;">%1</span><br/> -<br/> -%2<br/> -<br/> -Version %3<br/> -Created on %4<br/> -Built with Qt %5<br/> -Running with Qt %6<br/> -<br/> -%7 - - - - - &Close - - - - - Translated by %1 - Translated by translator, example Translated by Syping - - - - - TRANSLATOR - Insert your name here and profile here in following scheme, First Translator,First Profile\nSecond Translator\nThird Translator,Second Profile - - - - - A project for viewing and sync Grand Theft Auto V Snapmatic<br/> -Pictures and Savegames - - - - - A project for viewing Grand Theft Auto V Snapmatic<br/> -Pictures and Savegames - - - - - Copyright &copy; <a href="%1">%2</a> %3 - - - - - %1 is licensed under <a href="https://www.gnu.org/licenses/gpl-3.0.html#content">GNU GPLv3</a> - - - - - Release - - - - - Release Candidate - - - - - Daily Build - - - - - Developer - - - - - Beta - - - - - Alpha - - - - - Custom - - - - - CrewDatabase - - - - No Crew - - - - - ExportDialog - - - Dialog - - - - - Export Format - - - - - &JPEG/PNG format - - - - - GTA &Snapmatic format - - - - - Export Size - - - - - Default &Size - - - - - &Desktop Size - - - - - &Custom Size - - - - - Custom Size: - - - - - x - - - - - &Export - - - - - &Close - - - - - ImageEditorDialog - - - - - Snapmatic Image Editor - - - - - Overwrite Image... - - - - - - Capacity: %1 - - - - - ? - - - - - &Import... - - - - - &Overwrite - - - - - &Close - - - - - Patching of Snapmatic Image failed because of I/O Error - - - - - Patching of Snapmatic Image failed because of Image Error - - - - - Every taken Snapmatic have a different Capacity, a Snapmatic with higher Capacity can store a picture with better quality. - - - - - ImportDialog - - - Import... - - - - - - - Background Colour: <span style="color: %1">%1</span> - - - - - - Ignore Aspect Ratio - - - - - Picture - - - - - Avatar - - - - - Background - - - - - - ... - - - - - Background Image: %1 - - - - - X - - - - - Force Colour in Avatar Zone - - - - - Import picture - - - - - &OK - - - - - Discard picture - - - - - &Cancel - - - - - - - Background Image: - - - - - - Custom Avatar - Custom Avatar Description in SC, don't use Special Character! - - - - - - Custom Picture - Custom Picture Description in SC, don't use Special Character! - - - - - Are you sure to use a square image outside of the Avatar Zone? -When you want to use it as Avatar the image will be detached! - - - - - Snapmatic Avatar Zone - - - - - Select Colour... - - - - - File - Background Image: File - - - - - JsonEditorDialog - - - Snapmatic JSON Editor - - - - - &Save - - - - - &Close - - - - - JSON Error - - - - - MapLocationDialog - - - Snapmatic Map Viewer - - - - - &Close - - - - - &Apply - - - - - &Revert - - - - - &Set - - - - - &Done - - - - - X: %1 -Y: %2 - X and Y position - - - - - OptionsDialog - - - %1 - Settings - - - - - Profiles - - - - - Content Open/Select Mode - - - - - Open with Singleclick - - - - - Open with Doubleclick - - - - - Select with Singleclick - - - - - Default Profile - - - - - Custom GTA V Folder - - - - - Force using Custom Folder - - - - - ... - - - - - Pictures - - - - - Export Size - - - - - Default: %1x%2 - - - - - Screen Resolution: %1x%2 - - - - - - Custom Size: - - - - - x - - - - - Ignore Aspect Ratio - - - - - Export Quality - - - - - Enable Custom Quality - - - - - Quality: - - - - - %1% - - - - - Picture Viewer - - - - - Enable Navigation Bar - - - - - Players - - - - - ID - - - - - Name - - - - - Feedback - - - - - - Participate in %1 User Statistics - - - - - Hardware, Application and OS Specification - - - - - Application Configuration - - - - - Other - - - - - - - Participation ID: %1 - - - - - &Copy - - - - - - User Feedback - - - - - Limit: 1 message/day - - - - - Language for Areas - - - - - Style - - - - - Style: - - - - - Font - - - - - Always use Message Font (Windows 2003 and earlier) - - - - - Interface - - - - - Participation - - - - - Categories - - - - - System Language Configuration - - - - - &Send - - - - - Language for Interface - - - - - - - - Current: %1 - - - - - Use Default Style (Restart) - - - - - Sync - - - - - Sync is not implemented at current time - - - - - Apply changes - - - - - &OK - OK, Cancel, Apply - - - - - Discard changes - - - - - &Cancel - OK, Cancel, Apply - - - - - %1 (Next Closest Language) - First language a person can talk with a different person/application. "Native" or "Not Native". - - - - - System - System in context of System default - - - - - %1 (Closest to Interface) - Next closest language compared to the Interface - - - - - Auto - Automatic language choice. - - - - - %1 - %1 - - - - - The new Custom Folder will initialise after you restart %1. - - - - - No Profile - No Profile, as default - - - - - - - Profile: %1 - - - - - View %1 User Statistics Online - - - - - Not registered - - - - - A feedback message have to between 3-1024 characters long - - - - - PictureDialog - - - Snapmatic Picture Viewer - %1 - - - - - <span style=" font-weight:600;">Title: </span>%6<br/> -<span style=" font-weight:600;">Location: </span>%7 (%1, %2, %3)<br/> -<span style=" font-weight:600;">Players: </span>%4 (Crew %5)<br/> -<span style=" font-weight:600;">Created: </span>%8 - - - - - Manage picture - - - - - &Manage - - - - - Close viewer - - - - - &Close - - - - - - Export as &Picture... - - - - - - Export as &Snapmatic... - - - - - - &Overwrite Image... - - - - - - &Edit Properties... - - - - - - Open &Map Viewer... - - - - - Key 1 - Avatar Preview Mode -Key 2 - Toggle Overlay -Arrow Keys - Navigate - - - - - - Snapmatic Picture Viewer - - - - - - Failed at %1 - - - - - - No Crew - - - - - Unknown Location - - - - - - - No Players - - - - - Avatar Preview Mode -Press 1 for Default View - - - - - - Export - - - - - Export as Picture... - - - - - JPEG Graphics (*.jpg *.jpeg) - - - - - Portable Network Graphics (*.png) - - - - - - Overwrite %1 with current Snapmatic picture? - - - - - - - - - - Export as Picture - - - - - - Failed to export current Snapmatic picture - - - - - - No valid file is selected - - - - - Failed to export the picture because the system occurred a write failure - - - - - Failed to export the picture because the format detection failures - - - - - Failed to export the picture because the file can't be written - - - - - Failed to export the picture because of an unknown reason - - - - - Export as Snapmatic... - - - - - GTA V Export (*.g5e) - - - - - GTA V Raw Export (*.auto) - - - - - Snapmatic pictures (PGTA*) - - - - - - - - - Export as Snapmatic - - - - - Exported Snapmatic to "%1" because of using the .auto extension. - - - - - - Open &JSON Editor... - - - - - PlayerListDialog - - - Edit Players... - - - - - Available Players: - - - - - Selected Players: - - - - - &Apply - - - - - &Cancel - - - - - Add Players... - - - - - Failed to add more Players because the limit of Players are %1! - - - - - - Add Player... - - - - - Enter Social Club Player ID - - - - - Failed to add Player %1 because Player %1 is already added! - - - - - ProfileInterface - - - Profile Interface - - - - - Loading file %1 of %2 files - - - - - %1 %2 - - - - - Import file - - - - - &Import... - - - - - Close profile - - - - - &Close - - - - - - - Export file %1 of %2 files - - - - - Enabled pictures: %1 of %2 - - - - - Loading... - - - - - - - - Import... - - - - - - - - - - - - - - - - - - - - - - - - Import - - - - - - GTA V Export (*.g5e) - - - - - - Savegames files (SGTA*) - - - - - - Snapmatic pictures (PGTA*) - - - - - Importable files (%1) - - - - - Snapmatic Loader - - - - - <h4>Following Snapmatic Pictures got repaired</h4>%1 - - - - - - - All image files (%1) - - - - - - - - All files (**) - - - - - - - No valid file is selected - - - - - - Import file %1 of %2 files - - - - - Import failed with... - -%1 - - - - - - Failed to read Snapmatic picture - - - - - - Failed to read Savegame file - - - - - - - Can't import %1 because file can't be open - - - - - - - Can't import %1 because file can't be parsed properly - - - - - Can't import %1 because file format can't be detected - - - - - Failed to import the Snapmatic picture, file not begin with PGTA or end with .g5e - - - - - Failed to import the Snapmatic picture, the picture is already in the game - - - - - Failed to import the Snapmatic picture, can't copy the file into profile - - - - - Failed to import the Savegame, can't copy the file into profile - - - - - Failed to import the Savegame, no Savegame slot is left - - - - - - JPG pictures and GTA Snapmatic - - - - - - JPG pictures only - - - - - - GTA Snapmatic only - - - - - %1Export Snapmatic pictures%2<br><br>JPG pictures make it possible to open the picture with a Image Viewer<br>GTA Snapmatic make it possible to import the picture into the game<br><br>Export as: - - - - - - - - - Export selected... - - - - - Initialising export... - - - - - Export failed with... - -%1 - - - - - - No Snapmatic pictures or Savegames files are selected - - - - - - - Remove selected - - - - - You really want remove the selected Snapmatic picutres and Savegame files? - - - - - - Qualify as Avatar - - - - - - - - - - No Snapmatic pictures are selected - - - - - - - - Patch selected... - - - - - - - - - - - - Patch file %1 of %2 files - - - - - - - - - - %1 failed with... - -%2 - Action failed with... - - - - - Failed to remove all selected Snapmatic pictures and/or Savegame files - - - - - Qualify - %1 failed with... - - - - - - Change Players... - - - - - Change Players - %1 failed with... - - - - - - - Change Crew... - - - - - Failed to enter a valid Snapmatic Crew ID - - - - - Change Crew - %1 failed with... - - - - - - - Change Title... - - - - - Failed to enter a valid Snapmatic title - - - - - Change Title - %1 failed with... - - - - - All profile files (*.g5e SGTA* PGTA*) - - - - - QApplication - - - Font - - - - - Selected Font: %1 - - - - - <h4>Welcome to %1!</h4>You want to configure %1 before you start using it? - - - - - SavegameDialog - - - - Savegame Viewer - - - - - <span style=" font-weight:600;">Savegame</span><br><br>%1 - - - - - &Export - - - - - &Close - - - - - Failed at %1 - - - - - SavegameWidget - - - Savegame Widget - - - - - SAVE %3 - %1<br>%2 - - - - - View savegame - - - - - View - - - - - Copy savegame - - - - - - Export - - - - - Delete savegame - - - - - Delete - - - - - &View - - - - - &Export - - - - - &Remove - - - - - &Select - - - - - &Deselect - - - - - Select &All - - - - - &Deselect All - - - - - Savegame files (SGTA*) - - - - - All files (**) - - - - - - - - Export Savegame - - - - - Overwrite %1 with current Savegame? - - - - - Failed to overwrite %1 with current Savegame - - - - - Failed to export current Savegame - - - - - No valid file is selected - - - - - Export Savegame... - - - - - - AUTOSAVE - %1 -%2 - - - - - - SAVE %3 - %1 -%2 - - - - - - WRONG FORMAT - - - - - UNKNOWN - - - - - Are you sure to delete %1 from your savegames? - - - - - - Delete Savegame - - - - - Failed at deleting %1 from your savegames - - - - - SnapmaticEditor - - - - - - - - - - - Snapmatic Properties - - - - - Snapmatic Type - - - - - Editor - - - - - Selfie - - - - - Regular - - - - - Mugshot - - - - - Meme - - - - - Director - - - - - Snapmatic Values - - - - - Crew: %1 (%2) - - - - - Title: %1 (%2) - - - - - Players: %1 (%2) - Multiple Player are inserted here - - - - - Player: %1 (%2) - One Player is inserted here - - - - - - Appropriate: %1 - - - - - Extras - - - - - Qualify as Avatar automatically at apply - - - - - Qualify as Avatar allows you to use this Snapmatic as a Social Club profile picture - - - - - &Apply - - - - - &Cancel - - - - - - - Edit - - - - - Yes - Yes, should work fine - - - - - No - No, could lead to issues - - - - - <h4>Unsaved changes detected</h4>You want to save the JSON content before you quit? - - - - - Patching of Snapmatic Properties failed because of %1 - - - - - Patching of Snapmatic Properties failed because of JSON Error - - - - - - - - Patching of Snapmatic Properties failed because of I/O Error - - - - - - Snapmatic Title - - - - - - New Snapmatic title: - - - - - - Snapmatic Crew - - - - - - New Snapmatic crew: - - - - - SnapmaticPicture - - - PHOTO - %1 - - - - - open file %1 - - - - - header not exists - - - - - header is malformed - - - - - picture not exists (%1) - - - - - JSON not exists (%1) - - - - - title not exists (%1) - - - - - description not exists (%1) - - - - - reading file %1 because of %2 - Example for %2: JSON is malformed error - - - - - - JSON is incomplete and malformed - - - - - - JSON is incomplete - - - - - - JSON is malformed - - - - - SnapmaticWidget - - - Snapmatic Widget - - - - - PHOTO - 00/00/00 00:00:00 - - - - - View picture - - - - - View - - - - - Copy picture - - - - - Copy - - - - - Export picture - - - - - Export - - - - - - - Delete picture - - - - - Delete - - - - - Edi&t - - - - - Show &In-game - - - - - Hide &In-game - - - - - &Export - - - - - &View - - - - - &Remove - - - - - &Select - - - - - &Deselect - - - - - Select &All - - - - - &Deselect All - - - - - Are you sure to delete %1 from your Snapmatic pictures? - - - - - Failed at deleting %1 from your Snapmatic pictures - - - - - Failed to hide %1 In-game from your Snapmatic pictures - - - - - Failed to show %1 In-game from your Snapmatic pictures - - - - - TelemetryDialog - - - %1 User Statistics - - - - - You want help %1 to improve in the future by collection of data? - - - - - Yes, I would like to take part. - - - - - &OK - - - - - UserInterface - - - - %2 - %1 - - - - - Select profile - - - - - %1 %2 - - - - - Reload profile overview - - - - - &Reload - - - - - Close %1 - Close %1 <- (gta5view/gta5sync) - %1 will be replaced automatically - - - - - &Close - - - - - &File - - - - - &Help - - - - - &Edit - - - - - &Profile - - - - - &Selection visibility - - - - - - - &About %1 - - - - - &Exit - - - - - Exit - - - - - Close &Profile - - - - - &Settings - - - - - Select &All - - - - - &Deselect All - - - - - &Export selected... - - - - - &Remove selected - - - - - &Import files... - - - - - &Open File... - - - - - - Select &GTA V Folder... - - - - - - - - Select GTA V Folder... - - - - - Show In-gam&e - - - - - Hi&de In-game - - - - - Change &Players... - - - - - Selection &mass tools - - - - - Change &Title... - - - - - Change &Crew... - - - - - &Qualify as Avatar - - - - - - - Select Profile - - - - - Open File... - - - - - - - - Open File - - - - - Can't open %1 because of not valid file format - - - - - - - Show In-game - - - - - - - Hide In-game - - - - diff --git a/main.cpp b/main.cpp index f02fea5..ef253c0 100644 --- a/main.cpp +++ b/main.cpp @@ -1,5 +1,5 @@ /***************************************************************************** -* gta5sync GRAND THEFT AUTO V SYNC +* gta5view Grand Theft Auto V Profile Viewer * Copyright (C) 2016-2018 Syping * * This program is free software: you can redistribute it and/or modify @@ -116,18 +116,8 @@ int main(int argc, char *argv[]) Translator->loadTranslation(&a); #ifdef GTA5SYNC_TELEMETRY - if (!applicationArgs.contains("--disable-telemetry")) - { - if (!applicationArgs.contains("--skip-telemetryinit")) - { - Telemetry->init(); - Telemetry->work(); - } - } - else - { - Telemetry->setDisabled(true); - } + Telemetry->init(); + Telemetry->work(); #endif if (!applicationArgs.contains("--skip-firststart")) @@ -146,55 +136,6 @@ int main(int argc, char *argv[]) settings.setValue("IsFirstStart", false); } } - -#ifdef GTA5SYNC_TELEMETRY - bool telemetryWindowLaunched = settings.value("TelemetryWindowLaunched", false).toBool(); - if (!telemetryWindowLaunched && !Telemetry->isEnabled() && !Telemetry->isStateForced()) - { - QDialog *telemetryDialog = new QDialog(); - telemetryDialog->setObjectName(QStringLiteral("TelemetryDialog")); - telemetryDialog->setWindowTitle(QString("%1 %2").arg(GTA5SYNC_APPSTR, GTA5SYNC_APPVER)); - telemetryDialog->setWindowFlags(telemetryDialog->windowFlags()^Qt::WindowContextHelpButtonHint^Qt::WindowCloseButtonHint); - telemetryDialog->setWindowIcon(IconLoader::loadingAppIcon()); - QVBoxLayout *telemetryLayout = new QVBoxLayout(telemetryDialog); - telemetryLayout->setObjectName(QStringLiteral("TelemetryLayout")); - telemetryDialog->setLayout(telemetryLayout); - UiModLabel *telemetryLabel = new UiModLabel(telemetryDialog); - telemetryLabel->setObjectName(QStringLiteral("TelemetryLabel")); - telemetryLabel->setText(QString("

%2

%1").arg(QApplication::translate("TelemetryDialog", "You want help %1 to improve in the future by collection of data?").arg(GTA5SYNC_APPSTR), QApplication::translate("TelemetryDialog", "%1 User Statistics").arg(GTA5SYNC_APPSTR))); - telemetryLayout->addWidget(telemetryLabel); - QCheckBox *telemetryCheckBox = new QCheckBox(telemetryDialog); - telemetryCheckBox->setObjectName(QStringLiteral("TelemetryCheckBox")); - telemetryCheckBox->setText(QApplication::translate("TelemetryDialog", "Yes, I would like to take part.")); - telemetryCheckBox->setChecked(true); - telemetryLayout->addWidget(telemetryCheckBox); - QHBoxLayout *telemetryButtonLayout = new QHBoxLayout(); - telemetryButtonLayout->setObjectName(QStringLiteral("TelemetryButtonLayout")); - telemetryLayout->addLayout(telemetryButtonLayout); - QSpacerItem *telemetryButtonSpacer = new QSpacerItem(0, 0, QSizePolicy::Expanding, QSizePolicy::Minimum); - telemetryButtonLayout->addSpacerItem(telemetryButtonSpacer); - QPushButton *telemetryButton = new QPushButton(telemetryDialog); - telemetryButton->setObjectName(QStringLiteral("TelemetryButton")); - telemetryButton->setText(QApplication::translate("TelemetryDialog", "&OK")); - telemetryButtonLayout->addWidget(telemetryButton); - QObject::connect(telemetryButton, SIGNAL(clicked(bool)), telemetryDialog, SLOT(close())); - telemetryDialog->setFixedSize(telemetryDialog->sizeHint()); - telemetryDialog->exec(); - QObject::disconnect(telemetryButton, SIGNAL(clicked(bool)), telemetryDialog, SLOT(close())); - if (telemetryCheckBox->isChecked()) - { - QSettings telemetrySettings(GTA5SYNC_APPVENDOR, GTA5SYNC_APPSTR); - telemetrySettings.beginGroup("Telemetry"); - telemetrySettings.setValue("IsEnabled", true); - telemetrySettings.endGroup(); - Telemetry->init(); - Telemetry->work(); - } - settings.setValue("TelemetryWindowLaunched", true); - delete telemetryDialog; - } -#endif - settings.endGroup(); for (QString currentArg : applicationArgs) diff --git a/qjson4/QJsonArray.cpp b/qjson4/QJsonArray.cpp index 531941f..ad8a82b 100644 --- a/qjson4/QJsonArray.cpp +++ b/qjson4/QJsonArray.cpp @@ -1,5 +1,5 @@ /***************************************************************************** -* gta5sync GRAND THEFT AUTO V SYNC +* gta5view Grand Theft Auto V Profile Viewer * Copyright (C) 2016 Syping * * This program is free software: you can redistribute it and/or modify diff --git a/qjson4/QJsonArray.h b/qjson4/QJsonArray.h index 94aab1b..dc4fc69 100644 --- a/qjson4/QJsonArray.h +++ b/qjson4/QJsonArray.h @@ -1,5 +1,5 @@ /***************************************************************************** -* gta5sync GRAND THEFT AUTO V SYNC +* gta5view Grand Theft Auto V Profile Viewer * Copyright (C) 2016 Syping * * This program is free software: you can redistribute it and/or modify diff --git a/qjson4/QJsonDocument.cpp b/qjson4/QJsonDocument.cpp index 59adf32..9d503c3 100644 --- a/qjson4/QJsonDocument.cpp +++ b/qjson4/QJsonDocument.cpp @@ -1,5 +1,5 @@ /***************************************************************************** -* gta5sync GRAND THEFT AUTO V SYNC +* gta5view Grand Theft Auto V Profile Viewer * Copyright (C) 2016 Syping * * This program is free software: you can redistribute it and/or modify diff --git a/qjson4/QJsonDocument.h b/qjson4/QJsonDocument.h index 12e8fc7..5b1e17a 100644 --- a/qjson4/QJsonDocument.h +++ b/qjson4/QJsonDocument.h @@ -1,5 +1,5 @@ /***************************************************************************** -* gta5sync GRAND THEFT AUTO V SYNC +* gta5view Grand Theft Auto V Profile Viewer * Copyright (C) 2016 Syping * * This program is free software: you can redistribute it and/or modify diff --git a/qjson4/QJsonObject.cpp b/qjson4/QJsonObject.cpp index 55f8cf1..ac36bb0 100644 --- a/qjson4/QJsonObject.cpp +++ b/qjson4/QJsonObject.cpp @@ -1,5 +1,5 @@ /***************************************************************************** -* gta5sync GRAND THEFT AUTO V SYNC +* gta5view Grand Theft Auto V Profile Viewer * Copyright (C) 2016 Syping * * This program is free software: you can redistribute it and/or modify diff --git a/qjson4/QJsonObject.h b/qjson4/QJsonObject.h index ad657bc..6ee3a97 100644 --- a/qjson4/QJsonObject.h +++ b/qjson4/QJsonObject.h @@ -1,5 +1,5 @@ /***************************************************************************** -* gta5sync GRAND THEFT AUTO V SYNC +* gta5view Grand Theft Auto V Profile Viewer * Copyright (C) 2016 Syping * * This program is free software: you can redistribute it and/or modify diff --git a/qjson4/QJsonParseError.cpp b/qjson4/QJsonParseError.cpp index 6bcfd98..598c67c 100644 --- a/qjson4/QJsonParseError.cpp +++ b/qjson4/QJsonParseError.cpp @@ -1,5 +1,5 @@ /***************************************************************************** -* gta5sync GRAND THEFT AUTO V SYNC +* gta5view Grand Theft Auto V Profile Viewer * Copyright (C) 2016 Syping * * This program is free software: you can redistribute it and/or modify diff --git a/qjson4/QJsonParseError.h b/qjson4/QJsonParseError.h index b87d7aa..eddf04d 100644 --- a/qjson4/QJsonParseError.h +++ b/qjson4/QJsonParseError.h @@ -1,5 +1,5 @@ /***************************************************************************** -* gta5sync GRAND THEFT AUTO V SYNC +* gta5view Grand Theft Auto V Profile Viewer * Copyright (C) 2016 Syping * * This program is free software: you can redistribute it and/or modify diff --git a/qjson4/QJsonParser.cpp b/qjson4/QJsonParser.cpp index 9b084f7..052c9a8 100644 --- a/qjson4/QJsonParser.cpp +++ b/qjson4/QJsonParser.cpp @@ -1,5 +1,5 @@ /***************************************************************************** -* gta5sync GRAND THEFT AUTO V SYNC +* gta5view Grand Theft Auto V Profile Viewer * Copyright (C) 2016 Syping * * This program is free software: you can redistribute it and/or modify diff --git a/qjson4/QJsonParser.h b/qjson4/QJsonParser.h index d54a0d9..f11f5a0 100644 --- a/qjson4/QJsonParser.h +++ b/qjson4/QJsonParser.h @@ -1,5 +1,5 @@ /***************************************************************************** -* gta5sync GRAND THEFT AUTO V SYNC +* gta5view Grand Theft Auto V Profile Viewer * Copyright (C) 2016 Syping * * This program is free software: you can redistribute it and/or modify diff --git a/qjson4/QJsonRoot.h b/qjson4/QJsonRoot.h index 77b9751..d249465 100644 --- a/qjson4/QJsonRoot.h +++ b/qjson4/QJsonRoot.h @@ -1,5 +1,5 @@ /***************************************************************************** -* gta5sync GRAND THEFT AUTO V SYNC +* gta5view Grand Theft Auto V Profile Viewer * Copyright (C) 2016 Syping * * This program is free software: you can redistribute it and/or modify diff --git a/qjson4/QJsonValue.cpp b/qjson4/QJsonValue.cpp index 68bf87f..8ac4770 100644 --- a/qjson4/QJsonValue.cpp +++ b/qjson4/QJsonValue.cpp @@ -1,5 +1,5 @@ /***************************************************************************** -* gta5sync GRAND THEFT AUTO V SYNC +* gta5view Grand Theft Auto V Profile Viewer * Copyright (C) 2016 Syping * * This program is free software: you can redistribute it and/or modify diff --git a/qjson4/QJsonValue.h b/qjson4/QJsonValue.h index bf32898..d902352 100644 --- a/qjson4/QJsonValue.h +++ b/qjson4/QJsonValue.h @@ -1,5 +1,5 @@ /***************************************************************************** -* gta5sync GRAND THEFT AUTO V SYNC +* gta5view Grand Theft Auto V Profile Viewer * Copyright (C) 2016 Syping * * This program is free software: you can redistribute it and/or modify diff --git a/qjson4/QJsonValueRef.cpp b/qjson4/QJsonValueRef.cpp index 7d67ef4..dade257 100644 --- a/qjson4/QJsonValueRef.cpp +++ b/qjson4/QJsonValueRef.cpp @@ -1,5 +1,5 @@ /***************************************************************************** -* gta5sync GRAND THEFT AUTO V SYNC +* gta5view Grand Theft Auto V Profile Viewer * Copyright (C) 2016 Syping * * This program is free software: you can redistribute it and/or modify diff --git a/qjson4/QJsonValueRef.h b/qjson4/QJsonValueRef.h index 567c68a..478b657 100644 --- a/qjson4/QJsonValueRef.h +++ b/qjson4/QJsonValueRef.h @@ -1,5 +1,5 @@ /***************************************************************************** -* gta5sync GRAND THEFT AUTO V SYNC +* gta5view Grand Theft Auto V Profile Viewer * Copyright (C) 2016 Syping * * This program is free software: you can redistribute it and/or modify diff --git a/res/960x536.png b/res/960x536.png deleted file mode 100644 index 6196065..0000000 Binary files a/res/960x536.png and /dev/null differ diff --git a/res/app.qrc b/res/app.qrc index 461c44e..639c843 100644 --- a/res/app.qrc +++ b/res/app.qrc @@ -1,6 +1,5 @@ - savegame.png 5sync-48.png 5sync-16.png 5sync-24.png @@ -10,17 +9,17 @@ 5sync-96.png 5sync-128.png 5sync-256.png - back.png - next.png - 960x536.png - empty1x16.png avatararea.png avatarareaimport.png + back.png + empty1x16.png mappreview.jpg + next.png pointmaker-8.png pointmaker-16.png pointmaker-24.png pointmaker-32.png + savegame.png global.de.ini @@ -33,7 +32,6 @@ global.ko.ini global.pl.ini global.pt.ini - global.pt.loc global.ru.ini global.zh.ini global.zh.loc diff --git a/res/app.rc b/res/app.rc index 1b2196a..463f01f 100644 --- a/res/app.rc +++ b/res/app.rc @@ -7,8 +7,8 @@ CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "gta5view.exe.manifest" #include VS_VERSION_INFO VERSIONINFO -FILEVERSION 1, 5, 4, 0 -PRODUCTVERSION 1, 5, 4, 0 +FILEVERSION 1, 5, 5, 0 +PRODUCTVERSION 1, 5, 5, 0 FILEFLAGSMASK 0x3fL FILEFLAGS 0 FILEOS VOS_NT_WINDOWS32 @@ -25,12 +25,12 @@ BEGIN BEGIN VALUE "CompanyName", "Syping" VALUE "FileDescription", "gta5view" - VALUE "FileVersion", "1.5.4" + VALUE "FileVersion", "1.5.5" VALUE "InternalName", "gta5view" VALUE "LegalCopyright", "Copyright © 2016-2018 Syping" VALUE "OriginalFilename", "gta5view.exe" VALUE "ProductName", "gta5view" - VALUE "ProductVersion", "1.5.4" + VALUE "ProductVersion", "1.5.5" END END END diff --git a/res/global.pt.loc b/res/global.pt.loc deleted file mode 100644 index 5f648c5..0000000 --- a/res/global.pt.loc +++ /dev/null @@ -1 +0,0 @@ -pt_PT diff --git a/res/gta5sync_de.qm b/res/gta5sync_de.qm index e346dc2..1a07565 100644 Binary files a/res/gta5sync_de.qm and b/res/gta5sync_de.qm differ diff --git a/res/gta5sync_de.ts b/res/gta5sync_de.ts index d1d4f1b..ed6f93e 100644 --- a/res/gta5sync_de.ts +++ b/res/gta5sync_de.ts @@ -32,78 +32,71 @@ Läuft auf Qt %6<br/> %7 - + &Close S&chließen - + Translated by %1 Translated by translator, example Translated by Syping Ãœbersetzt von %1 - + TRANSLATOR Insert your name here and profile here in following scheme, First Translator,First Profile\nSecond Translator\nThird Translator,Second Profile Syping,https://github.com/Syping/ - + A project for viewing Grand Theft Auto V Snapmatic<br/> Pictures and Savegames Ein Projekt zum ansehen von Grand Theft Auto V<br/> Snapmatic Bilder und Spielständen - + Copyright &copy; <a href="%1">%2</a> %3 Copyright &copy; <a href="%1">%2</a> %3 - + %1 is licensed under <a href="https://www.gnu.org/licenses/gpl-3.0.html#content">GNU GPLv3</a> %1 ist lizenziert unter <a href="https://www.gnu.org/licenses/gpl-3.0.html#content">GNU GPLv3</a> - - A project for viewing and sync Grand Theft Auto V Snapmatic<br/> -Pictures and Savegames - Ein Projekt zum ansehen und synchronisieren von<br/> -Grand Theft Auto V Snapmatic Bilder und Spielständen - - - + Release Release - + Release Candidate Release Candidate - + Daily Build Daily Build - + Developer Entwickler - + Beta Beta - + Alpha Alpha - + Custom Eigener @@ -266,8 +259,8 @@ Grand Theft Auto V Snapmatic Bilder und Spielständen - - + + Background Colour: <span style="color: %1">%1</span> Hintergrundfarbe: <span style="color: %1">%1</span> @@ -278,7 +271,7 @@ Grand Theft Auto V Snapmatic Bilder und Spielständen ... - + Background Image: %1 Hintergrundbild: %1 @@ -314,44 +307,44 @@ Grand Theft Auto V Snapmatic Bilder und Spielständen - - + + Background Image: Hintergrundbild: - - + + Custom Avatar Custom Avatar Description in SC, don't use Special Character! Eigener Avatar - - + + Custom Picture Custom Picture Description in SC, don't use Special Character! Eigenes Bild - + Are you sure to use a square image outside of the Avatar Zone? When you want to use it as Avatar the image will be detached! Bist du sicher ein Quadrat Bild außerhalb der Avatar Zone zu verwenden? Wenn du es als Avatar verwenden möchtest wird es abgetrennt! - + Snapmatic Avatar Zone Snapmatic Avatar Zone - + Select Colour... Farbe auswählen... - + File Background Image: File Datei @@ -413,7 +406,7 @@ Wenn du es als Avatar verwenden möchtest wird es abgetrennt! &Fertig - + X: %1 Y: %2 X and Y position @@ -576,7 +569,7 @@ Y: %2 - + Participate in %1 User Statistics An %1 Benutzerstatistik teilnehmen @@ -602,8 +595,8 @@ Y: %2 - - + + Participation ID: %1 Teilnahme ID: %1 @@ -614,7 +607,7 @@ Y: %2 - + User Feedback Benutzer Feedback @@ -666,120 +659,106 @@ Y: %2 - - + + Current: %1 Aktuell: %1 - - Sync - Sync - - - - Sync is not implemented at current time - Sync wurde bisher nicht implementiert - - - + Apply changes Änderungen übernehmen - + &OK OK, Cancel, Apply &OK - + Discard changes Änderungen verwerfen - + &Cancel OK, Cancel, Apply Abbre&chen - + %1 %1 %1 - + %1 (Next Closest Language) First language a person can talk with a different person/application. "Native" or "Not Native". %1 (Erste näheste Sprache) - + System System in context of System default System - + %1 (Closest to Interface) Next closest language compared to the Interface %1 (Näheste zur Oberfläche) - + Auto Automatic language choice. Automatisch - + The new Custom Folder will initialise after you restart %1. Der eigene Ordner wird initialisiert sobald du %1 neugestartet hast. - + View %1 User Statistics Online %1 Benutzerstatistik Online ansehen - + Not registered Nicht registriert - + A feedback message have to between 3-1024 characters long Eine Feedback Nachricht hat zwischen 3-1024 Zeichen lang zu sein - + No Profile No Profile, as default Kein Profil - - - + + + Profile: %1 Profil: %1 PictureDialog - - %1 - Snapmatic Picture Viewer - %1 - Snapmatic Bildansicht - Snapmatic Picture Viewer - %1 Snapmatic Bildansicht - %1 - + <span style=" font-weight:600;">Title: </span>%6<br/> <span style=" font-weight:600;">Location: </span>%7 (%1, %2, %3)<br/> <span style=" font-weight:600;">Players: </span>%4 (Crew %5)<br/> @@ -790,22 +769,22 @@ Y: %2 <span style=" font-weight:600;">Erstellt: </span>%8 - + Manage picture Bild verwalten - + &Manage &Verwalten - + Close viewer Ansicht schließen - + &Close S&chließen @@ -817,31 +796,31 @@ Y: %2 - + Export as &Picture... Als &Bild exportieren... - + Export as &Snapmatic... Als &Snapmatic exportieren... - + &Edit Properties... Eigenschaften bearb&eiten... - + &Overwrite Image... Bild &überschreiben... - + Open &Map Viewer... &Kartenansicht öffnen... @@ -855,39 +834,39 @@ Taste 2 - Overlay umschalten Pfeiltasten - Navigieren - - + + Snapmatic Picture Viewer Snapmatic Bildansicht - - + + Failed at %1 Fehlgeschlagen beim %1 - - + + No Crew Keine Crew - - + + No Players Keine Spieler - + Avatar Preview Mode Press 1 for Default View Avatar Vorschaumodus Drücke 1 für Standardmodus - + Unknown Location Unbekannter Standort @@ -990,7 +969,7 @@ Drücke 1 für Standardmodus - + Open &JSON Editor... &JSON Editor öffnen... @@ -1088,25 +1067,25 @@ Drücke 1 für Standardmodus S&chließen - + Loading... Lade... - + Snapmatic Loader Snapmatic Lader - + <h4>Following Snapmatic Pictures got repaired</h4>%1 <h4>Folgende Snapmatic Bilder wurden repariert</h4>%1 - - - + + + Import... Importieren... @@ -1114,66 +1093,66 @@ Drücke 1 für Standardmodus - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + Import Importieren - + Savegames files (SGTA*) Spielstanddateien (SGTA*) - + Snapmatic pictures (PGTA*) Snapmatic Bilder (PGTA*) - + Importable files (%1) Importfähige Dateien (%1) - - + + All image files (%1) Alle Bilddateien (%1) - - + + All files (**) Alle Dateien (**) - - + + Import file %1 of %2 files Importiere Datei %1 von %2 Dateien - + Import failed with... %1 @@ -1182,149 +1161,149 @@ Drücke 1 für Standardmodus %1 - + Failed to read Snapmatic picture Fehler beim Lesen vom Snapmatic Bild - + Failed to read Savegame file Fehler beim Lesen von Spielstanddatei - - + + Can't import %1 because file can't be open Kann %1 nicht importieren weil die Datei nicht geöffnet werden kann - - + + Can't import %1 because file can't be parsed properly Kann %1 nicht importieren weil die Datei nicht richtig gelesen werden kann - + Can't import %1 because file format can't be detected Kann %1 nicht importieren weil das Dateiformat nicht erkannt werden kann - + Initialising export... Initialisiere Export... - + Failed to import the Snapmatic picture, file not begin with PGTA or end with .g5e Fehlgeschlagen beim Importieren vom Snapmatic Bild, Datei beginnt nicht mit PGTA oder endet mit .g5e - + Failed to import the Snapmatic picture, the picture is already in the game Fehlgeschlagen beim Importieren vom Snapmatic Bild, dieses Bild ist bereits im Spiel - + %1Export Snapmatic pictures%2<br><br>JPG pictures make it possible to open the picture with a Image Viewer<br>GTA Snapmatic make it possible to import the picture into the game<br><br>Export as: %1Exportiere Snapmatic Bilder%2<br><br>JPG Bilder machen es möglich sie mit ein Bildansicht Programm zu öffnen<br>Das GTA Snapmatic Format macht es möglich sie wieder ins Game zu importieren<br><br>Exportieren als: - - + + No valid file is selected Keine gültige Datei wurde ausgewählt - + Enabled pictures: %1 of %2 Aktivierte Bilder: %1 von %2 - + Failed to import the Snapmatic picture, can't copy the file into profile Fehlgeschlagen beim Importieren vom Snapmatic Bild, kann Snapmatic Bild nicht ins Profil kopieren - + Failed to import the Savegame, can't copy the file into profile Fehlgeschlagen beim Importieren vom Spielstand, kann Spielstanddatei nicht ins Profil kopieren - + Failed to import the Savegame, no Savegame slot is left Fehlgeschlagen beim Importieren vom Spielstand, kein Spielstandslot mehr frei - - + + JPG pictures and GTA Snapmatic JPG Bilder und GTA Snapmatic - - + + JPG pictures only Nur JPG Bilder - - + + GTA Snapmatic only Nur GTA Snapmatic - - - - + + + + Patch selected... Auswahl patchen... - - - - - - - - + + + + + + + + Patch file %1 of %2 files Patche Datei %1 von %2 Dateien - - + + Qualify as Avatar Als Avatar qualifizieren - - - - - - + + + + + + No Snapmatic pictures are selected Keine Snapmatic Bilder sind ausgewählt - + Failed to remove all selected Snapmatic pictures and/or Savegame files Fehlgeschlagen beim Entfernen von allen augewählten Snapmatic Bildern und/oder Spielstanddateien - - - - - - + + + + + + %1 failed with... %2 @@ -1334,88 +1313,88 @@ Drücke 1 für Standardmodus %2 - + Qualify %1 failed with... Qualifizieren - - + + Change Players... Spieler ändern... - + Change Players %1 failed with... Spieler ändern - - - + + + Change Crew... Crew ändern... - + Failed to enter a valid Snapmatic Crew ID Fehlgeschlagen beim Eingeben von einer gültigen Crew ID - + Change Crew %1 failed with... Crew ändern - - - + + + Change Title... Titel ändern... - + Failed to enter a valid Snapmatic title Fehlgeschlagen beim Eingeben eines gültigen Snapmatic Titel - + Change Title %1 failed with... Titel ändern - - + + No Snapmatic pictures or Savegames files are selected Keine Snapmatic Bilder oder Spielstände sind ausgewählt - - - + + + Remove selected Auswahl löschen - + You really want remove the selected Snapmatic picutres and Savegame files? Möchtest du wirklich die ausgewählten Snapmatic Bilder und Spielstanddateien löschen? - - - - - + + + + + Export selected... Auswahl exportieren... - + Export failed with... %1 @@ -1434,7 +1413,7 @@ Drücke 1 für Standardmodus Alle Profildateien (*.g5e SGTA* PGTA*) - + GTA V Export (*.g5e) GTA V Export (*.g5e) @@ -1453,7 +1432,7 @@ Drücke 1 für Standardmodus Ausgewähle Schrift: %1 - + <h4>Welcome to %1!</h4>You want to configure %1 before you start using it? <h4>Willkommen zu %1!</h4>Möchtest du %1 einstellen bevor du es nutzt? @@ -1569,32 +1548,32 @@ Drücke 1 für Standardmodus Fehlgeschlagen beim Löschen %1 von deinen Spielständen - + &View A&nsehen - + &Remove Entfe&rnen - + &Select Au&swählen - + &Deselect A&bwählen - + Select &All &Alles auswählen - + &Deselect All Alles a&bwählen @@ -1609,7 +1588,7 @@ Drücke 1 für Standardmodus Spielstand kopieren - + &Export &Exportieren @@ -1661,7 +1640,7 @@ Drücke 1 für Standardmodus - + Snapmatic Properties @@ -1703,7 +1682,7 @@ Drücke 1 für Standardmodus Meme - + Snapmatic Title Snapmatic Titel @@ -1802,26 +1781,26 @@ Drücke 1 für Standardmodus - + Patching of Snapmatic Properties failed because of I/O Error Patchen von Snapmatic Eigenschaften fehlgeschlagen wegen I/O Fehler - + New Snapmatic title: Neuer Snapmatic Titel: - + Snapmatic Crew Snapmatic Crew - + New Snapmatic crew: Neue Snapmatic Crew: @@ -1949,52 +1928,52 @@ Drücke 1 für Standardmodus Fehlgeschlagen beim Anzeigen von %1 im Spiel von deinen Snapmatic Bildern - + Edi&t Bearbei&ten - + &Export &Exportieren - + Show &In-game &Im Spiel anzeigen - + Hide &In-game &Im Spiel ausblenden - + &View A&nsehen - + &Remove Entfe&rnen - + &Select Au&swählen - + &Deselect A&bwählen - + Select &All Alles &auswählen - + &Deselect All Alles a&bwählen @@ -2019,29 +1998,6 @@ Drücke 1 für Standardmodus Fehlgeschlagen beim Löschen von %1 von deinen Snapmatic Bildern - - TelemetryDialog - - - %1 User Statistics - %1 Benutzerstatistik - - - - You want help %1 to improve in the future by collection of data? - Möchtest du helfen %1 in der Zukunft zu verbessern durch Sammlung von Daten? - - - - Yes, I would like to take part. - Ja, ich möchte teilnehmen. - - - - &OK - &OK - - UserInterface @@ -2189,13 +2145,13 @@ Drücke 1 für Standardmodus - + Select Profile Profil auswählen - + Select GTA V Folder... @@ -2215,7 +2171,7 @@ Drücke 1 für Standardmodus - + &About %1 &Ãœber %1 @@ -2238,15 +2194,15 @@ Drücke 1 für Standardmodus &Neuladen - - + + Show In-game Im Spiel anzeigen - - + + Hide In-game Im Spiel ausblenden diff --git a/res/gta5sync_en_US.qm b/res/gta5sync_en_US.qm index 0554a5f..32ccf9f 100644 Binary files a/res/gta5sync_en_US.qm and b/res/gta5sync_en_US.qm differ diff --git a/res/gta5sync_en_US.ts b/res/gta5sync_en_US.ts index bf2fe0f..d3eaaf2 100644 --- a/res/gta5sync_en_US.ts +++ b/res/gta5sync_en_US.ts @@ -23,76 +23,70 @@ Running with Qt %6<br/> - + &Close - + Translated by %1 Translated by translator, example Translated by Syping - + TRANSLATOR Insert your name here and profile here in following scheme, First Translator,First Profile\nSecond Translator\nThird Translator,Second Profile Syping,https://github.com/Syping/ - - A project for viewing and sync Grand Theft Auto V Snapmatic<br/> -Pictures and Savegames - - - - + A project for viewing Grand Theft Auto V Snapmatic<br/> Pictures and Savegames - + Copyright &copy; <a href="%1">%2</a> %3 - + %1 is licensed under <a href="https://www.gnu.org/licenses/gpl-3.0.html#content">GNU GPLv3</a> - + Release - + Release Candidate - + Daily Build - + Developer - + Beta - + Alpha - + Custom @@ -234,8 +228,8 @@ Pictures and Savegames - - + + Background Colour: <span style="color: %1">%1</span> Background Color: <span style="color: %1">%1</span> @@ -267,7 +261,7 @@ Pictures and Savegames - + Background Image: %1 @@ -303,43 +297,43 @@ Pictures and Savegames - - + + Background Image: - - + + Custom Avatar Custom Avatar Description in SC, don't use Special Character! - - + + Custom Picture Custom Picture Description in SC, don't use Special Character! - + Snapmatic Avatar Zone - + Are you sure to use a square image outside of the Avatar Zone? When you want to use it as Avatar the image will be detached! - + Select Colour... Select Color... - + File Background Image: File @@ -401,7 +395,7 @@ When you want to use it as Avatar the image will be detached! - + X: %1 Y: %2 X and Y position @@ -544,51 +538,51 @@ Y: %2 Feedback - + - + Participate in %1 User Statistics - + Hardware, Application and OS Specification - + Application Configuration - + Other - + - - + + Participation ID: %1 - + &Copy - + - + User Feedback - + Limit: 1 message/day - + @@ -623,22 +617,22 @@ Y: %2 Participation - + Categories - + System Language Configuration - + &Send - + @@ -648,8 +642,8 @@ Y: %2 - - + + Current: %1 @@ -659,99 +653,89 @@ Y: %2 - - Sync - - - - - Sync is not implemented at current time - - - - + Apply changes - + &OK OK, Cancel, Apply - + Discard changes - + &Cancel OK, Cancel, Apply - + %1 (Next Closest Language) First language a person can talk with a different person/application. "Native" or "Not Native". - + System System in context of System default - + %1 (Closest to Interface) Next closest language compared to the Interface - + Auto Automatic language choice. - + %1 %1 - + The new Custom Folder will initialise after you restart %1. The new Custom Folder will initialize after you restart %1. - + No Profile No Profile, as default - - - + + + Profile: %1 - + View %1 User Statistics Online - + - + Not registered - + - + A feedback message have to between 3-1024 characters long - + @@ -759,10 +743,10 @@ Y: %2 Snapmatic Picture Viewer - %1 - + - + <span style=" font-weight:600;">Title: </span>%6<br/> <span style=" font-weight:600;">Location: </span>%7 (%1, %2, %3)<br/> <span style=" font-weight:600;">Players: </span>%4 (Crew %5)<br/> @@ -770,52 +754,52 @@ Y: %2 - + Manage picture - + &Manage - + Close viewer - + &Close - + Export as &Picture... - + Export as &Snapmatic... - + &Overwrite Image... - + &Edit Properties... - + Open &Map Viewer... @@ -827,37 +811,37 @@ Arrow Keys - Navigate - - + + Snapmatic Picture Viewer - - + + Failed at %1 - - + + No Players - - + + No Crew - + Unknown Location - + Avatar Preview Mode Press 1 for Default View @@ -967,7 +951,7 @@ Press 1 for Default View - + Open &JSON Editor... @@ -1071,30 +1055,30 @@ Press 1 for Default View - + Enabled pictures: %1 of %2 - + Loading... - + Snapmatic Loader - + <h4>Following Snapmatic Pictures got repaired</h4>%1 - - - + + + Import... @@ -1102,245 +1086,245 @@ Press 1 for Default View - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + Import - + Importable files (%1) - + GTA V Export (*.g5e) - + Savegames files (SGTA*) - + Snapmatic pictures (PGTA*) - - + + All image files (%1) - - + + All files (**) - - + + No valid file is selected - - + + Import file %1 of %2 files - + Import failed with... %1 - + Failed to read Snapmatic picture - + Failed to read Savegame file - - + + Can't import %1 because file can't be open - - + + Can't import %1 because file can't be parsed properly - + Can't import %1 because file format can't be detected - + Failed to import the Snapmatic picture, file not begin with PGTA or end with .g5e - + Failed to import the Snapmatic picture, the picture is already in the game - + Failed to import the Snapmatic picture, can't copy the file into profile - + Failed to import the Savegame, can't copy the file into profile - + Failed to import the Savegame, no Savegame slot is left - - + + JPG pictures and GTA Snapmatic - - + + JPG pictures only - - + + GTA Snapmatic only - + %1Export Snapmatic pictures%2<br><br>JPG pictures make it possible to open the picture with a Image Viewer<br>GTA Snapmatic make it possible to import the picture into the game<br><br>Export as: - - - - - + + + + + Export selected... - + Initialising export... Initializing export... - + Export failed with... %1 - - + + No Snapmatic pictures or Savegames files are selected - - - + + + Remove selected - + You really want remove the selected Snapmatic picutres and Savegame files? - - + + Qualify as Avatar - + - - - - - - + + + + + + No Snapmatic pictures are selected - - - - - - - - Patch selected... - - - - + Patch selected... + + + + + + + + + + + Patch file %1 of %2 files - - - - - - + + + + + + %1 failed with... %2 @@ -1348,60 +1332,60 @@ Press 1 for Default View - + Failed to remove all selected Snapmatic pictures and/or Savegame files - + - + Qualify %1 failed with... - - + + Change Players... - + - + Change Players %1 failed with... - - - + + + Change Crew... - + - + Failed to enter a valid Snapmatic Crew ID - + Change Crew %1 failed with... - - - + + + Change Title... - + - + Failed to enter a valid Snapmatic title - + Change Title %1 failed with... @@ -1425,7 +1409,7 @@ Press 1 for Default View - + <h4>Welcome to %1!</h4>You want to configure %1 before you start using it? @@ -1503,37 +1487,37 @@ Press 1 for Default View - + &View - + &Export - + &Remove - + &Select - + &Deselect - + Select &All - + &Deselect All @@ -1631,7 +1615,7 @@ Press 1 for Default View - + Snapmatic Properties @@ -1766,32 +1750,32 @@ Press 1 for Default View - + Patching of Snapmatic Properties failed because of I/O Error - + Snapmatic Title - + New Snapmatic title: - + Snapmatic Crew - + New Snapmatic crew: @@ -1919,52 +1903,52 @@ Press 1 for Default View - + Edi&t - + Show &In-game - + Hide &In-game - + &Export - + &View - + &Remove - + &Select - + &Deselect - + Select &All - + &Deselect All @@ -1981,35 +1965,12 @@ Press 1 for Default View Failed to hide %1 In-game from your Snapmatic pictures - + Failed to show %1 In-game from your Snapmatic pictures - - - - - TelemetryDialog - - - %1 User Statistics - - - - - You want help %1 to improve in the future by collection of data? - - - - - Yes, I would like to take part. - - - - - &OK - + @@ -2079,7 +2040,7 @@ Press 1 for Default View - + &About %1 @@ -2141,7 +2102,7 @@ Press 1 for Default View - + Select GTA V Folder... @@ -2185,7 +2146,7 @@ Press 1 for Default View - + Select Profile @@ -2208,18 +2169,18 @@ Press 1 for Default View - - + + Show In-game - + - - + + Hide In-game - + diff --git a/res/gta5sync_fr.qm b/res/gta5sync_fr.qm index e8bc8a7..44c96a8 100644 Binary files a/res/gta5sync_fr.qm and b/res/gta5sync_fr.qm differ diff --git a/res/gta5sync_fr.ts b/res/gta5sync_fr.ts index 40cff02..cdcff06 100644 --- a/res/gta5sync_fr.ts +++ b/res/gta5sync_fr.ts @@ -32,78 +32,71 @@ Fonctionne avec Qt %6<br/> %7 - + &Close &Fermer - + Translated by %1 Translated by translator, example Translated by Syping Traduit par %1 - + TRANSLATOR Insert your name here and profile here in following scheme, First Translator,First Profile\nSecond Translator\nThird Translator,Second Profile Ganjalo,https://github.com/Ganjalo/ - + A project for viewing Grand Theft Auto V Snapmatic<br/> Pictures and Savegames Un outil pour gérer les photos Snapmatic<br/> et les fichiers de sauvegarde de Grand Theft Auto V - + Copyright &copy; <a href="%1">%2</a> %3 Copyright &copy; <a href="%1">%2</a> %3 - + %1 is licensed under <a href="https://www.gnu.org/licenses/gpl-3.0.html#content">GNU GPLv3</a> %1 est distribué sous license <a href="https://www.gnu.org/licenses/gpl-3.0.html#content">GNU GPLv3</a> - - A project for viewing and sync Grand Theft Auto V Snapmatic<br/> -Pictures and Savegames - Un outil pour gérer et synchroniser les photos Snapmatic<br/> -et les fichiers de sauvegarde de Grand Theft Auto V - - - + Release Release - + Release Candidate Release Candidate - + Daily Build Daily Build - + Developer Developer - + Beta Beta - + Alpha Alpha - + Custom Personnalisé @@ -266,8 +259,8 @@ et les fichiers de sauvegarde de Grand Theft Auto V - - + + Background Colour: <span style="color: %1">%1</span> Couleur de fond : <span style="color: %1">%1</span> @@ -278,7 +271,7 @@ et les fichiers de sauvegarde de Grand Theft Auto V ... - + Background Image: %1 Image de fond : %1 @@ -314,44 +307,44 @@ et les fichiers de sauvegarde de Grand Theft Auto V - - + + Background Image: Image de fond : - - + + Custom Avatar Custom Avatar Description in SC, don't use Special Character! Avatar personnalisé - - + + Custom Picture Custom Picture Description in SC, don't use Special Character! Image personnalisé - + Are you sure to use a square image outside of the Avatar Zone? When you want to use it as Avatar the image will be detached! Êtes-vous sûr d'utiliser une image carrée en dehors de la Zone d'Avatar ? Si vous l'utilisez comme Avatar, l'image sera détachée ! - + Snapmatic Avatar Zone Zone d'Avatar Snapmatic - + Select Colour... Choisir une couleur... - + File Background Image: File Fichier @@ -413,7 +406,7 @@ Si vous l'utilisez comme Avatar, l'image sera détachée !&Terminer - + X: %1 Y: %2 X and Y position @@ -566,7 +559,7 @@ Y : %2 - + Participate in %1 User Statistics Participer aux statistiques d'usage %1 @@ -597,8 +590,8 @@ Y : %2 - - + + Participation ID: %1 ID de participation : %1 @@ -609,7 +602,7 @@ Y : %2 - + User Feedback Feedback utilisateur @@ -661,8 +654,8 @@ Y : %2 - - + + Current: %1 Actuel : %1 @@ -672,114 +665,100 @@ Y : %2 Utiliser le Style par Défaut (rédémarrage requis) - - Sync - Synchronisation - - - - Sync is not implemented at current time - La synchronisation n'est pas encore implémentée - - - + Apply changes Appliquer les changements - + &OK OK, Cancel, Apply &OK - + Discard changes Annuler les changements - + &Cancel OK, Cancel, Apply &Annuler - + %1 (Next Closest Language) First language a person can talk with a different person/application. "Native" or "Not Native". %1 (Langage proche) - + System System in context of System default Système - + %1 (Closest to Interface) Next closest language compared to the Interface %1 (Langage proche de l'interface) - + Auto Automatic language choice. Automatique - + %1 %1 %1 - + The new Custom Folder will initialise after you restart %1. Le nouveau Dossier personnalisé sera initialisé au redémarrage de %1. - + View %1 User Statistics Online Voir les statistiques d'usage %1 en ligne - + Not registered Pas enregistré - + A feedback message have to between 3-1024 characters long Un message doit contenir 3 à 1024 charactères - + No Profile No Profile, as default Aucun profil - - - + + + Profile: %1 Profil : %1 PictureDialog - - %1 - Snapmatic Picture Viewer - %1 - Visionneuse de photo Snapmatic - Snapmatic Picture Viewer - %1 Visionneuse de photo Snapmatic - %1 - + <span style=" font-weight:600;">Title: </span>%6<br/> <span style=" font-weight:600;">Location: </span>%7 (%1, %2, %3)<br/> <span style=" font-weight:600;">Players: </span>%4 (Crew %5)<br/> @@ -790,22 +769,22 @@ Y : %2 <span style=" font-weight:600;">Créé le : </span>%8 - + Manage picture Gestion de l'image - + &Manage &Gestion - + Close viewer Fermer la visionneuse - + &Close &Fermer @@ -897,31 +876,31 @@ Y : %2 - + Export as &Picture... Exporter comme &image... - + Export as &Snapmatic... Exporter comme &Snapmatic... - + &Overwrite Image... &Remplacer l'image... - + &Edit Properties... Modifier les &propriétés... - + Open &Map Viewer... Ouvrir la &Visionneuse de Carte... @@ -935,39 +914,39 @@ Touche 2 - Activer/désactiver l'overlay Touches fléchées - Naviguer - - + + Snapmatic Picture Viewer Visionneuse de photo Snapmatic - - + + Failed at %1 Echec de %1 - - + + No Crew Aucun crew - - + + No Players Aucun joueurs - + Avatar Preview Mode Press 1 for Default View Mode Aperçu Avatar Appuyer sur 1 pour le mode par défaut - + Unknown Location Emplacement inconnu @@ -990,7 +969,7 @@ Appuyer sur 1 pour le mode par défaut - + Open &JSON Editor... Ouvrir l'éditeur &JSON... @@ -1094,30 +1073,30 @@ Appuyer sur 1 pour le mode par défaut Copie du fichier %1 sur %2 - + Enabled pictures: %1 of %2 Photos activées : %1 sur %2 - + Loading... Chargement... - + Snapmatic Loader Snapmatic Loader - + <h4>Following Snapmatic Pictures got repaired</h4>%1 <h4>Les Snapmatic suivants ont été répaés</h4>%1 - - - + + + Import... Importer... @@ -1125,61 +1104,61 @@ Appuyer sur 1 pour le mode par défaut - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + Import Importer - + Savegames files (SGTA*) Fichiers de sauvegarde GTA (SGTA*) - + Snapmatic pictures (PGTA*) Photos Snapmatic (PGTA*) - - + + All image files (%1) Toutes les images (%1) - - + + All files (**) Tous les fichiers (**) - - + + Import file %1 of %2 files Importation du fichier %1 sur %2 - + Import failed with... %1 @@ -1188,153 +1167,153 @@ Appuyer sur 1 pour le mode par défaut %1 - - + + No valid file is selected Fichier invalide - + Importable files (%1) Fichiers importables (%1) - + Failed to read Snapmatic picture Impossible d'ouvrir la photo Snapmatic - + Failed to read Savegame file Impossible de lire le fichier de sauvegarde - - + + Can't import %1 because file can't be open Impossible d'importer %1, le fichier ne peut pas être ouvert - - + + Can't import %1 because file can't be parsed properly Impossible d'importer %1, le fichier ne peut pas être parsé correctement - + Can't import %1 because file format can't be detected Impossible d'importer %1, le format du fichier n'est pas détecté - + Failed to import the Snapmatic picture, file not begin with PGTA or end with .g5e Impossible d'importer la photo Snapmatic,nom de fichier incorrect (PGTA*, *.g5e) - + Failed to import the Snapmatic picture, the picture is already in the game Impossible d'importer la photo Snapmatic, un fichier du même nom existe déjà - + Failed to import the Snapmatic picture, can't copy the file into profile Impossible d'importer la photo Snapmatic, impossible de copier le fichier dans le profil - + Failed to import the Savegame, can't copy the file into profile Impossible d'importer la sauvegarde, impossible de copier le fichier dans le profil - + Failed to import the Savegame, no Savegame slot is left Impossible d'importer la sauvegarde, aucun emplacement libre - - + + JPG pictures and GTA Snapmatic Images JPG et GTA Snapmatic - - + + JPG pictures only Images JPG seulement - - + + GTA Snapmatic only GTA Snapmatic seulement - + %1Export Snapmatic pictures%2<br><br>JPG pictures make it possible to open the picture with a Image Viewer<br>GTA Snapmatic make it possible to import the picture into the game<br><br>Export as: %1Exporter les photos Snapmatic%2<br><br>Les fichiers JPG permettent d'ouvrir les photos avec une visionneuse d'images<br>Les GTA Snapmatic permettent d'importer les photos dans le jeu<br><br>Exporter comme : - - - - - + + + + + Export selected... Exporter la sélection... - + Initialising export... Initialisation de l'export... - - + + Qualify as Avatar Qualifier comme Avatar - - - - - - + + + + + + No Snapmatic pictures are selected Aucun Snapmatic sélectionné - - - - + + + + Patch selected... Patcher la sélection... - - - - - - - - + + + + + + + + Patch file %1 of %2 files Patch du fichier %1 sur %2 - - - - - - + + + + + + %1 failed with... %2 @@ -1344,66 +1323,66 @@ Appuyer sur 1 pour le mode par défaut %2 - + Failed to remove all selected Snapmatic pictures and/or Savegame files Échec de la supression des Snapmatic et/ou des fichiers de sauvegarde sélectionnés - + Qualify %1 failed with... Qualifier - - + + Change Players... Modifier les joueurs... - + Change Players %1 failed with... Modifier les joueurs - - - + + + Change Crew... Modifier le Crew... - + Failed to enter a valid Snapmatic Crew ID Snapmatic Crew ID invalide - + Change Crew %1 failed with... Changer le Crew - - - + + + Change Title... Changer le titre... - + Failed to enter a valid Snapmatic title Titre Snapmatic invalide - + Change Title %1 failed with... Changer le titre - + Export failed with... %1 @@ -1412,20 +1391,20 @@ Appuyer sur 1 pour le mode par défaut %1 - - + + No Snapmatic pictures or Savegames files are selected Aucun fichier de sauvegarde ou photo Snapmatic sélectionné - - - + + + Remove selected Supprimer la sélection - + You really want remove the selected Snapmatic picutres and Savegame files? Supprimer la sélection ? @@ -1435,7 +1414,7 @@ Appuyer sur 1 pour le mode par défaut Tous les fichiers de profil (*.g5e SGTA* PGTA*) - + GTA V Export (*.g5e) GTA V Export (*.g5e) @@ -1454,7 +1433,7 @@ Appuyer sur 1 pour le mode par défaut Police sélectionnée : %1 - + <h4>Welcome to %1!</h4>You want to configure %1 before you start using it? <h4>Bienvenue sur %1!</h4>Voulez-vous configurer %1 avant de l'utiliser t? @@ -1532,7 +1511,7 @@ Appuyer sur 1 pour le mode par défaut Supprimer - + &Export &Exporter @@ -1623,32 +1602,32 @@ Appuyer sur 1 pour le mode par défaut Impossible de supprimer %1 - + &View &Voir - + &Remove &Supprimer - + &Select &Sélectionner - + &Deselect &Déselectionner - + Select &All Sélectionner to&ut - + &Deselect All &Déselectionner tout @@ -1662,7 +1641,7 @@ Appuyer sur 1 pour le mode par défaut - + Snapmatic Properties @@ -1704,7 +1683,7 @@ Appuyer sur 1 pour le mode par défaut Meme - + Snapmatic Title Titre Snapmatic @@ -1805,26 +1784,26 @@ Appuyer sur 1 pour le mode par défaut - + Patching of Snapmatic Properties failed because of I/O Error La modification des propriétés Snapmatic a échoué : erreur d'entrée/sortie - + New Snapmatic title: Nouveau titre Snapmatic : - + Snapmatic Crew Crew Snapmatic - + New Snapmatic crew: Nouveau crew Snapmatic : @@ -1972,79 +1951,56 @@ Appuyer sur 1 pour le mode par défaut %1 n'a pas pu être rendu visible en jeu - + Edi&t Édi&ter - + Show &In-game &Visible en jeu - + Hide &In-game &Invisible en jeu - + &Export &Exporter - + &View &Voir - + &Remove S&upprimer - + &Select &Sélectionner - + &Deselect &Déselectionner - + Select &All Sélectionner &tout - + &Deselect All &Déselectionner tout - - TelemetryDialog - - - %1 User Statistics - %1 Statistiques d'usage - - - - You want help %1 to improve in the future by collection of data? - Voulez-vous aider à améliorer %1 en envoyant vos données d'utilisation ? - - - - Yes, I would like to take part. - Oui, je veux participer. - - - - &OK - &OK - - UserInterface @@ -2156,7 +2112,7 @@ Appuyer sur 1 pour le mode par défaut - + Select GTA V Folder... @@ -2211,14 +2167,14 @@ Appuyer sur 1 pour le mode par défaut - + &About %1 &À propos de %1 - + Select Profile Sélectionner un profil @@ -2241,15 +2197,15 @@ Appuyer sur 1 pour le mode par défaut Impossible d'ouvrir %1, format invalide - - + + Show In-game Visible en jeu - - + + Hide In-game Invisible en jeu diff --git a/res/gta5sync_ru.qm b/res/gta5sync_ru.qm index d85a42a..ad3cfd1 100644 Binary files a/res/gta5sync_ru.qm and b/res/gta5sync_ru.qm differ diff --git a/res/gta5sync_ru.ts b/res/gta5sync_ru.ts index 7fcdc18..aa640d2 100644 --- a/res/gta5sync_ru.ts +++ b/res/gta5sync_ru.ts @@ -32,78 +32,71 @@ Running with Qt %6<br/> %7 - + &Close &Закрыть - + Translated by %1 Translated by translator, example Translated by Syping Перевёл %1 - + TRANSLATOR Insert your name here and profile here in following scheme, First Translator,First Profile\nSecond Translator\nThird Translator,Second Profile VADemon,https://github.com/VADemon/ - + A project for viewing Grand Theft Auto V Snapmatic<br/> Pictures and Savegames Проект Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñмотра Grand Theft Auto V Snapmatic<br/> картинок и Ñохранений - + Copyright &copy; <a href="%1">%2</a> %3 Copyright &copy; <a href="%1">%2</a> %3 - + %1 is licensed under <a href="https://www.gnu.org/licenses/gpl-3.0.html#content">GNU GPLv3</a> %1 под лицензией <a href="https://www.gnu.org/licenses/gpl-3.0.html#content">GNU GPLv3</a> - - A project for viewing and sync Grand Theft Auto V Snapmatic<br/> -Pictures and Savegames - Проект Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñмотра и ÑÐ¸Ð½Ñ…Ñ€Ð¾Ð½Ð¸Ð·Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ <br/> -Grand Theft Auto V Snapmatic картинок и Ñохранений - - - + Release Релиз - + Release Candidate Предварительный выпуÑк - + Daily Build Ð”Ð½ÐµÐ²Ð½Ð°Ñ Ñборка - + Developer Разработчик - + Beta Бета - + Alpha Ðльфа - + Custom Ðе извеÑтен контекÑÑ‚ Ð¡Ð²Ð¾Ñ @@ -268,8 +261,8 @@ Grand Theft Auto V Snapmatic картинок и Ñохранений - - + + Background Colour: <span style="color: %1">%1</span> Цвет фона: <span style="color: %1">%1</span> @@ -280,7 +273,7 @@ Grand Theft Auto V Snapmatic картинок и Ñохранений... - + Background Image: %1 Ð¤Ð¾Ð½Ð¾Ð²Ð°Ñ ÐºÐ°Ñ€Ñ‚Ð¸Ð½ÐºÐ°: %1 @@ -318,43 +311,43 @@ Grand Theft Auto V Snapmatic картинок и Ñохранений - - + + Background Image: Ð¤Ð¾Ð½Ð¾Ð²Ð°Ñ ÐºÐ°Ñ€Ñ‚Ð¸Ð½ÐºÐ°: - - + + Custom Avatar Custom Avatar Description in SC, don't use Special Character! Свой Ðватар - - + + Custom Picture Custom Picture Description in SC, don't use Special Character! Ð¡Ð²Ð¾Ñ ÐšÐ°Ñ€Ñ‚Ð¸Ð½ÐºÐ° - + Are you sure to use a square image outside of the Avatar Zone? When you want to use it as Avatar the image will be detached! Ты точно хочешь иÑпользовать квадратное изображение вне зоны аватарки? ЕÑли Ñто аватар, то изображение будет обрезано! - + Snapmatic Avatar Zone Зона Snapmatic Ðватарки - + Select Colour... Выбрать цвет... - + File Background Image: File Файл @@ -416,7 +409,7 @@ When you want to use it as Avatar the image will be detached! &Готово - + X: %1 Y: %2 X and Y position @@ -569,7 +562,7 @@ Y: %2 - + Participate in %1 User Statistics УчаÑтвовать в пользовательÑкой ÑтатиÑтике %1 @@ -601,8 +594,8 @@ Y: %2 - - + + Participation ID: %1 Ðомер учаÑтника: %1 @@ -613,7 +606,7 @@ Y: %2 - + User Feedback Форма обратной ÑвÑзи @@ -666,8 +659,8 @@ Y: %2 - - + + Current: %1 СейчаÑ: %1 @@ -677,97 +670,87 @@ Y: %2 ИÑпользовать Ñтандартный Ñтиль (ПерезапуÑк) - - Sync - Sync - - - - Sync is not implemented at current time - Ð¡Ð¸Ð½Ñ…Ñ€Ð¾Ð½Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð¿Ð¾ÐºÐ° ещё не реализована - - - + Apply changes Применить Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ - + &OK OK, Cancel, Apply &ОК - + Discard changes Отвергнуть Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ - + &Cancel OK, Cancel, Apply От&мена - + %1 (Next Closest Language) First language a person can talk with a different person/application. "Native" or "Not Native". - + System System in context of System default СиÑтема - + %1 (Closest to Interface) Next closest language compared to the Interface %1 (Совпадает Ñ Ð¸Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñом) - + Auto Automatic language choice. ÐвтоматичеÑки - + %1 %1 %1 - + The new Custom Folder will initialise after you restart %1. Ð”Ñ€ÑƒÐ³Ð°Ñ Ð¿Ð°Ð¿ÐºÐ° будет загружена поÑле перезапуÑка %1. - + View %1 User Statistics Online ПоÑмотреть пользовательÑкую ÑтатиÑтику %1 онлайн - + Not registered Ðе зарегиÑтрирован - + A feedback message have to between 3-1024 characters long Сообщение обратное ÑвÑзи не должно быть длинее 1024 Ñимволов - + No Profile No Profile, as default Ðет Ð¿Ñ€Ð¾Ñ„Ð¸Ð»Ñ - - - + + + Profile: %1 Профиль: %1 @@ -775,11 +758,7 @@ Y: %2 PictureDialog - %1 - Snapmatic Picture Viewer - %1 - ПроÑмотрщик фотографий Snapmatic - - - + <span style=" font-weight:600;">Title: </span>%6<br/> <span style=" font-weight:600;">Location: </span>%7 (%1, %2, %3)<br/> <span style=" font-weight:600;">Players: </span>%4 (Crew %5)<br/> @@ -790,12 +769,12 @@ Y: %2 <span style=" font-weight:600;">Сделано: </span>%8 - + &Manage &Управление - + Manage picture ÐаÑтройки картинки @@ -805,12 +784,12 @@ Y: %2 ПроÑмотрщик фотографий Snapmatic - %1 - + Close viewer Закрыть проÑмотрщик - + &Close &Закрыть @@ -822,31 +801,31 @@ Y: %2 - + Export as &Picture... ЭкÑпортировать как &картинку... - + Export as &Snapmatic... ЭкÑпортировать как &Snapmatic... - + &Overwrite Image... &ПерезапиÑать картинку... - + &Edit Properties... &Изменить ÑвойÑтва... - + Open &Map Viewer... Открыть &карту... @@ -860,39 +839,39 @@ Arrow Keys - Navigate Стрелки - ÐÐ°Ð²Ð¸Ð³Ð°Ñ†Ð¸Ñ - - + + Snapmatic Picture Viewer ПроÑмотрщик фотографий Snapmatic - - + + Failed at %1 Ошибка при %1 - - + + No Crew Вне банды - - + + No Players Игроков нет - + Avatar Preview Mode Press 1 for Default View Режим проÑмотра аватарок Ðажмите 1 Ð´Ð»Ñ Ñтандартного проÑмотра - + Unknown Location ÐеизвеÑтное меÑто @@ -995,7 +974,7 @@ Press 1 for Default View - + Open &JSON Editor... Открыть &редактор JSON... @@ -1092,26 +1071,26 @@ Press 1 for Default View &Закрыть - + Loading... Загрузка... - + Snapmatic Loader Загрузчик Snapmatic - + <h4>Following Snapmatic Pictures got repaired</h4>%1 Change wording if the %1 is not a multiline beginning at new line <h4>ÐижеÑледующие картинки Snapmatic были воÑÑтановлены</h4>%1 - - - + + + Import... Импортировать... @@ -1119,54 +1098,54 @@ Press 1 for Default View - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + Import Импортировать - + Savegames files (SGTA*) Файлы ÑÐ¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ (SGTA*) - + Snapmatic pictures (PGTA*) Картинка Snapmatic (PGTA*) - - + + All files (**) Ð’Ñе файлы (**) - - + + Import file %1 of %2 files ИмпортируютÑÑ Ñ„Ð°Ð¹Ð»Ñ‹ %1 из %2 - + Import failed with... %1 @@ -1175,169 +1154,169 @@ Press 1 for Default View %1 - + Failed to read Snapmatic picture Ðе удалоÑÑŒ загрузить картинку Snapmatic - + Failed to read Savegame file Ðе удалоÑÑŒ загрузить файл ÑÐ¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ - - + + No valid file is selected Выбранный файл неверен - + Enabled pictures: %1 of %2 Включенные картинки: %1 из %2 - + Importable files (%1) Файлы Ð´Ð»Ñ Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ð° (%1) - - + + All image files (%1) Ð’Ñе файлы изображений (%1) - - + + Can't import %1 because file can't be open Ðе удалоÑÑŒ открыть %1, файл не может быть открыт - - + + Can't import %1 because file can't be parsed properly Ðе получилоÑÑŒ импортировать %1, файл не может быть правильно обработан - + Can't import %1 because file format can't be detected Ðе получилоÑÑŒ импортировать %1, не удалоÑÑŒ определить формат файла - + Failed to import the Snapmatic picture, file not begin with PGTA or end with .g5e Ðе удалоÑÑŒ импортировать картинку Snapmatic, название не начинаетÑÑ Ñ PGTA или не заканчиваетÑÑ Ñ .g5e - + Failed to import the Snapmatic picture, the picture is already in the game Ðе удалоÑÑŒ импортировать картинку Snapmatic, картинка уже в игре - + Failed to import the Snapmatic picture, can't copy the file into profile Ðе удалоÑÑŒ импортировать картинку Snapmatic, не получилоÑÑŒ Ñкопировать файл в профиль - + Failed to import the Savegame, can't copy the file into profile Ðе удалоÑÑŒ импортировать Ñохранение, не получилоÑÑŒ Ñкопировать файл в профиль - + Failed to import the Savegame, no Savegame slot is left Ðе удалоÑÑŒ импортировать Ñохранение, нет пуÑÑ‚Ñ‹Ñ… Ñчеек под ÑÐ¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ - - + + JPG pictures and GTA Snapmatic Картинки JPG и GTA Snapmatic - - + + JPG pictures only Только картинки JPG - - + + GTA Snapmatic only Только GTA Snapmatic - + Initialising export... Подготовка к ÑкÑпорту... - - + + No Snapmatic pictures or Savegames files are selected Ðе выделены ни один Snapmatic или Ñохранение - - - + + + Remove selected СнÑÑ‚ÑŒ выделение - + You really want remove the selected Snapmatic picutres and Savegame files? Точно ли хочешь удалить выбранные картинки Snapmatic и файлы Ñохранений? - - + + Qualify as Avatar Пометить как Ðватар - - - - - - + + + + + + No Snapmatic pictures are selected Ðе выделена ни одна картинка Snapmatic - - - - + + + + Patch selected... Пропатчить выделенные... - - - - - - - - + + + + + + + + Patch file %1 of %2 files ИзменÑетÑÑ Ñ„Ð°Ð¹Ð» %1 из %2 - - - - - - + + + + + + %1 failed with... %2 @@ -1347,80 +1326,80 @@ Press 1 for Default View %2 - + Failed to remove all selected Snapmatic pictures and/or Savegame files Ðе удалоÑÑŒ удалить вÑе выделенные картинки Snapmatic и/или ÑÐ¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ - + Qualify %1 failed with... Помечание - - + + Change Players... Изменить игроков... - + Change Players %1 failed with... Измение игроков - - - + + + Change Crew... Изменить банду... - + Failed to enter a valid Snapmatic Crew ID Введённый идентификатор банды не верен - + Change Crew %1 failed with... Изменение банды - - - + + + Change Title... Изменить заголовок... - + Failed to enter a valid Snapmatic title Введённый заголовок не верен - + Change Title %1 failed with... Изменение заголовка - + %1Export Snapmatic pictures%2<br><br>JPG pictures make it possible to open the picture with a Image Viewer<br>GTA Snapmatic make it possible to import the picture into the game<br><br>Export as: %1ЭÑкпортировать картинки Snapmatic%2<br><br>Картинки JPG можно открыть любым проÑмотрщиком<br>Картинки формата GTA Snapmatic можно Ñнова импортировать в игру<br><br>ЭкÑпортировать как: - - - - - + + + + + Export selected... Экпортировать выделенное... - + Export failed with... %1 @@ -1441,7 +1420,7 @@ Press 1 for Default View Ð’Ñе файлы Ð¿Ñ€Ð¾Ñ„Ð¸Ð»Ñ (*.g5e SGTA* PGTA*) - + GTA V Export (*.g5e) GTA V Export (*.g5e) @@ -1460,7 +1439,7 @@ Press 1 for Default View Выбранный шрифт: %1 - + <h4>Welcome to %1!</h4>You want to configure %1 before you start using it? <h4>Добро пожаловать в %1!</h4>Хочешь изменить наÑтройки %1 перед иÑпользованием? @@ -1581,32 +1560,32 @@ Press 1 for Default View Ðе удалоÑÑŒ удалить Ñохранение %1 - + &View &ПроÑмотр - + &Remove &Удалить - + &Select &Выбрать - + &Deselect Сн&ÑÑ‚ÑŒ выбор - + Select &All Ð’&ыбрать вÑе - + &Deselect All СнÑÑ‚ÑŒ выбо&Ñ€ Ñо вÑех @@ -1616,7 +1595,7 @@ Press 1 for Default View Копировать Ñохранение - + &Export &ЭкÑпортировать @@ -1668,7 +1647,7 @@ Press 1 for Default View - + Snapmatic Properties @@ -1720,7 +1699,7 @@ Press 1 for Default View Meme - + Snapmatic Title Заголовок Snapmatic @@ -1809,26 +1788,26 @@ Press 1 for Default View - + Patching of Snapmatic Properties failed because of I/O Error Ðе удалоÑÑŒ измененить ÑвойÑтва Snapmatic из-за проблемы ввода/вывода - + New Snapmatic title: Ðовый заголовок Snapmatic: - + Snapmatic Crew Банда на Snapmatic - + New Snapmatic crew: ÐÐ¾Ð²Ð°Ñ Ð±Ð°Ð½Ð´Ð° на Snapmatic: @@ -1966,52 +1945,52 @@ Press 1 for Default View Ðе удалоÑÑŒ показать %1 в ÑпиÑке картинок Snapmatic в игре - + Edi&t &Правка - + Show &In-game Показывать в &игре - + Hide &In-game Ск&рыть в игре - + &Export &ЭкÑпорт - + &View По&казать - + &Remove У&далить - + &Select &Выделить - + &Deselect Сн&ÑÑ‚ÑŒ выделение - + Select &All Ð’&ыбрать вÑе - + &Deselect All СнÑÑ‚ÑŒ выбо&Ñ€ Ñо вÑех @@ -2026,29 +2005,6 @@ Press 1 for Default View ЭкÑпорт картинки - - TelemetryDialog - - - %1 User Statistics - %1 пользовательÑÐºÐ°Ñ ÑтатиÑтика - - - - You want help %1 to improve in the future by collection of data? - Хочешь ли помочь будущему развитию %1 отправкой данных? - - - - Yes, I would like to take part. - Да, хочу учаÑтвовать. - - - - &OK - &ОК - - UserInterface @@ -2196,13 +2152,13 @@ Press 1 for Default View - + Select Profile Выбор Ð¿Ñ€Ð¾Ñ„Ð¸Ð»Ñ - + Select GTA V Folder... @@ -2217,7 +2173,7 @@ Press 1 for Default View - + &About %1 &О программе %1 @@ -2245,15 +2201,15 @@ Press 1 for Default View Пере&загрузить - - + + Show In-game Показывать в игре - - + + Hide In-game Скрыть в игре diff --git a/res/gta5sync_uk.qm b/res/gta5sync_uk.qm index 8d3756b..fa0d463 100644 Binary files a/res/gta5sync_uk.qm and b/res/gta5sync_uk.qm differ diff --git a/res/gta5sync_uk.ts b/res/gta5sync_uk.ts index 1448cd6..8b6542b 100644 --- a/res/gta5sync_uk.ts +++ b/res/gta5sync_uk.ts @@ -32,77 +32,71 @@ Running with Qt %6<br/> %7 - + &Close &Закрити - + Translated by %1 Translated by translator, example Translated by Syping Переклад %1 - + TRANSLATOR Insert your name here and profile here in following scheme, First Translator,First Profile\nSecond Translator\nThird Translator,Second Profile VenJam1n,g5e://about?VmVuSmFtMW4=:U3RlYW06IDxhIGhyZWY9Imh0dHBzOi8vc3RlYW1jb21tdW5pdHkuY29tL3Byb2ZpbGVzLzc2NTYxMTk3OTg0NjM1ODE2LyI+UFJPRmVzc29SICdBcHBsZVNPZnQnPC9hPjxici8+U29jaWFsIENsdWI6IDxhIGhyZWY9Imh0dHBzOi8vc29jaWFsY2x1Yi5yb2Nrc3RhcmdhbWVzLmNvbS9tZW1iZXIvLS1WZW5KYW0xbi0tLzU2Mzc1NjkiPlZlbkphbTFuPC9hPjxici8+VHdpdHRlcjogPGEgaHJlZj0iaHR0cHM6Ly90d2l0dGVyLmNvbS9fVmVuSmFtMW4iPlZlbkphbTFuPC9hPg== - - A project for viewing and sync Grand Theft Auto V Snapmatic<br/> -Pictures and Savegames - Проект Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ³Ð»Ñду Ñ– Ñинхронізації Grand Theft Auto V Snapmatic - - - + A project for viewing Grand Theft Auto V Snapmatic<br/> Pictures and Savegames Проект Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ³Ð»Ñду Grand Theft Auto V Snapmatic<br/> зображень та Ñейвів - + Copyright &copy; <a href="%1">%2</a> %3 ÐвторÑьке право &copy; <a href="%1">%2</a> %3 - + %1 is licensed under <a href="https://www.gnu.org/licenses/gpl-3.0.html#content">GNU GPLv3</a> %1 ліцензовано під <a href="https://www.gnu.org/licenses/gpl-3.0.html#content">GNU GPLv3</a> - + Release Реліз - + Release Candidate Реліз-Кандидат - + Daily Build Щоденна Збірка - + Developer Розробник - + Beta Бета - + Alpha Ðльфа - + Custom Custom @@ -265,8 +259,8 @@ Pictures and Savegames - - + + Background Colour: <span style="color: %1">%1</span> Фоновий колір: <span style="color: %1">%1</span> @@ -278,8 +272,8 @@ Pictures and Savegames - - + + Background Image: Фонове зображеннÑ: @@ -314,43 +308,43 @@ Pictures and Savegames &СкаÑувати - - + + Custom Avatar Custom Avatar Description in SC, don't use Special Character! КориÑтувацький Ðватар - - + + Custom Picture Custom Picture Description in SC, don't use Special Character! КориÑтувацьке Ð—Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ - + Snapmatic Avatar Zone Зона Snapmatic Ðватару - + Are you sure to use a square image outside of the Avatar Zone? When you want to use it as Avatar the image will be detached! Ви впевнені, що будете викориÑтовувати квадратне Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð¿Ð¾Ð·Ð° зоною аватара? Якщо ви хочете викориÑтовувати його Ñк Ðватар, Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð±ÑƒÐ´Ðµ відокремлено! - + Select Colour... Вибір кольору... - + Background Image: %1 Фонове зображеннÑ: %1 - + File Background Image: File Файл @@ -412,7 +406,7 @@ When you want to use it as Avatar the image will be detached! &Готово - + X: %1 Y: %2 X and Y position @@ -565,7 +559,7 @@ Y: %2 - + Participate in %1 User Statistics ÐžÐ¿Ð¸Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ %1 про уÑÑ‚Ð°Ñ‚ÐºÑƒÐ²Ð°Ð½Ð½Ñ ÐŸÐš @@ -596,8 +590,8 @@ Y: %2 + - Participation ID: %1 ID учаÑника : %1 @@ -608,7 +602,7 @@ Y: %2 - + User Feedback Відгук кориÑтувача @@ -635,8 +629,8 @@ Y: %2 - - + + Current: %1 Зараз: %1 @@ -671,97 +665,87 @@ Y: %2 Завжди викориÑтовуйте шрифт повідомлень (Windows 2003 Ñ– раніше) - - Sync - Ð¡Ð¸Ð½Ñ…Ñ€Ð¾Ð½Ñ–Ð·Ð°Ñ†Ñ–Ñ - - - - Sync is not implemented at current time - Ð¡Ð¸Ð½Ñ…Ñ€Ð¾Ð½Ñ–Ð·Ð°Ñ†Ñ–Ñ Ð½Ðµ здійÑнюєтьÑÑ Ð² даний Ñ‡Ð°Ñ - - - + Apply changes ЗаÑтоÑувати зміни - + &OK OK, Cancel, Apply &OK - + Discard changes СкаÑувати зміни - + &Cancel OK, Cancel, Apply &СкаÑувати - + %1 (Next Closest Language) First language a person can talk with a different person/application. "Native" or "Not Native". %1 (або наÑтупна найближча мова) - + System System in context of System default Як у ÑиÑтеми - + %1 (Closest to Interface) Next closest language compared to the Interface %1 (Співпадає з інтерфейÑом) - + Auto Automatic language choice. Ðвтоматично - + %1 %1 %1 - + The new Custom Folder will initialise after you restart %1. Ðова кориÑтувацька папка буде ініціалізована піÑÐ»Ñ Ð¿ÐµÑ€ÐµÐ·Ð°Ð¿ÑƒÑку %1. - + No Profile No Profile, as default Жодного + - - + Profile: %1 Профіль: %1 - + View %1 User Statistics Online ПереглÑнути кориÑтувацьку ÑтатиÑтику %1 онлайн - + Not registered Ðе зареєÑтрований - + A feedback message have to between 3-1024 characters long ÐŸÐ¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð²Ñ–Ð´Ð³ÑƒÐºÑƒ має Ñтановити від 3-1024 Ñимволів @@ -774,7 +758,7 @@ Y: %2 ПереглÑдач зображень Snapmatic - %1 - + <span style=" font-weight:600;">Title: </span>%6<br/> <span style=" font-weight:600;">Location: </span>%7 (%1, %2, %3)<br/> <span style=" font-weight:600;">Players: </span>%4 (Crew %5)<br/> @@ -785,58 +769,58 @@ Y: %2 <span style=" font-weight:600;">Створено: </span>%8 - + Manage picture ÐšÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñм - + &Manage &Керувати - + Close viewer Закрити переглÑдач - + &Close &Закрити - + Export as &Picture... ЕкÑпортувати Ñк &зображеннÑ... - + Export as &Snapmatic... ЕкÑпортувати Ñк &Snapmatic... - + &Edit Properties... &Змінити влаÑтивоÑÑ‚Ñ–... - + &Overwrite Image... &ПерезапиÑати зображеннÑ... - + Open &Map Viewer... Відкрити &карту... - + Open &JSON Editor... Відкрити редактор &JSON... @@ -1090,9 +1074,9 @@ Press 1 for Default View - - - + + + Import... ІмпортуваннÑ... @@ -1100,113 +1084,113 @@ Press 1 for Default View - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + Import Імпорт - - + + All image files (%1) Файли зображень (%1) - - + + All files (**) УÑÑ– файли (**) - - + + Can't import %1 because file can't be open Ðеможливо імпортувати %1, оÑкільки файл не може бути відкритий - - + + Can't import %1 because file can't be parsed properly Ðеможливо імпортувати %1, оÑкільки файл неможливо розібрати правильно - + Enabled pictures: %1 of %2 Увімкнено фотографії:%1 з%2 - + Loading... ЗавантаженнÑ... - + Snapmatic Loader Snapmatic Loader - + <h4>Following Snapmatic Pictures got repaired</h4>%1 <h4>ÐаÑтупні Snapmatic Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð±ÑƒÐ»Ð¸ відновлені</h4>%1 - + Importable files (%1) ІмпортуютьÑÑ Ñ„Ð°Ð¹Ð»Ð¸ (%1) - + GTA V Export (*.g5e) GTA V Export (*.g5e) - + Savegames files (SGTA*) Файли Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ Ð³Ñ€Ð¸ (SGTA*) - + Snapmatic pictures (PGTA*) Snapmatic Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ (PGTA*) - - + + No valid file is selected Вибрані недійÑні файли - - + + Import file %1 of %2 files ІмпортуєтьÑÑ Ñ„Ð°Ð¹Ð» %1 з %2 файлів - + Import failed with... %1 @@ -1215,86 +1199,86 @@ Press 1 for Default View %1 - + Failed to read Snapmatic picture Ðе вдалоÑÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ Snapmatic картинку - + Failed to read Savegame file Ðе вдалоÑÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ файл Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ Ð³Ñ€Ð¸ - + Can't import %1 because file format can't be detected Ðеможливо імпортувати%1, оÑкільки формат файлу не може бути виÑвлений - + Failed to import the Snapmatic picture, file not begin with PGTA or end with .g5e Ðе вдалоÑÑ Ñ–Ð¼Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ñ‚Ð¸ Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Snapmatic, файл не починаєтьÑÑ Ð· PGTA або закінчуєтьÑÑ .g5e - + Failed to import the Snapmatic picture, the picture is already in the game Ðе вдалоÑÑ Ñ–Ð¼Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ñ‚Ð¸ знімок Snapmatic, картинка вже в грі - + Failed to import the Snapmatic picture, can't copy the file into profile Ðе вдалоÑÑ Ñ–Ð¼Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ñ‚Ð¸ Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Snapmatic, не можна Ñкопіювати файл у профіль - + Failed to import the Savegame, can't copy the file into profile Ðе вдалоÑÑ Ñ–Ð¼Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ñ‚Ð¸ Сейв, не можна Ñкопіювати файл у профіль - + Failed to import the Savegame, no Savegame slot is left Ðе вдалоÑÑ Ñ–Ð¼Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ñ‚Ð¸ Сейв, немає вільного Ñлота - - - - - + + + + + Export selected... ЕкÑпорт обраних... - - + + JPG pictures and GTA Snapmatic JPG картинки Ñ– GTA Snapmatic - - + + JPG pictures only Тільки JPG картинки - - + + GTA Snapmatic only Тільки GTA Snapmatic - + %1Export Snapmatic pictures%2<br><br>JPG pictures make it possible to open the picture with a Image Viewer<br>GTA Snapmatic make it possible to import the picture into the game<br><br>Export as: %1 ЕкÑпортувати Snapmatic фотографії %2 <br><br> Фотографії JPG дозволÑÑŽÑ‚ÑŒ відкривати Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð·Ð° допомогою заÑобу переглÑду зображень<br>GTA Snapmatic дає змогу імпортувати Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð² гру<br><br>ЕкÑпортувати Ñк: - + Initialising export... Ð†Ð½Ñ–Ñ†Ñ–Ð°Ð»Ñ–Ð·Ð°Ñ†Ñ–Ñ ÐµÐºÑпорту... - + Export failed with... %1 @@ -1303,45 +1287,45 @@ Press 1 for Default View %1 - - + + No Snapmatic pictures or Savegames files are selected Ðе вибрано жодного Snapmatic Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð°Ð±Ð¾ файлу Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ - - - + + + Remove selected Видалити вибрані - + You really want remove the selected Snapmatic picutres and Savegame files? Ви дійÑно хочете видалити вибрані Snapmatic фотографії та файли Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ Ð³Ñ€Ð¸? - + Failed to remove all selected Snapmatic pictures and/or Savegame files Ðе вдалоÑÑ Ð²Ð¸Ð´Ð°Ð»Ð¸Ñ‚Ð¸ вÑÑ– обрані Snapmatic фотографії та/або Сейви - - - - - - + + + + + + No Snapmatic pictures are selected Ðе вибрано жодного Snapmatic Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ - - - - - - + + + + + + %1 failed with... %2 @@ -1351,81 +1335,81 @@ Press 1 for Default View %2 - - + + Qualify as Avatar Позначити Ñк Ðватар - - - - + + + + Patch selected... Вибір патчу... - - - - - - - - + + + + + + + + Patch file %1 of %2 files Патч файлу %1 з %2 файлів - + Qualify %1 failed with... ЯкіÑÑ‚ÑŒ - - + + Change Players... Зміна гравців... - + Change Players %1 failed with... Змінити гравців - - - + + + Change Crew... Зміна банди... - + Failed to enter a valid Snapmatic Crew ID Ðе вдалоÑÑ Ð²Ð²ÐµÑти дійÑний ID Банди Snapmatic - + Change Crew %1 failed with... Змінити банду - - - + + + Change Title... Зміна назви... - + Failed to enter a valid Snapmatic title Ðе вдалоÑÑ Ð²Ð²ÐµÑти дійÑний заголовок Snapmatic - + Change Title %1 failed with... Змінити назву @@ -1449,7 +1433,7 @@ Press 1 for Default View Вибраний шрифт:%1 - + <h4>Welcome to %1!</h4>You want to configure %1 before you start using it? <h4>ЛаÑкаво проÑимо до %1!</h4>Ви хочете налаштувати %1 перед викориÑтаннÑм? @@ -1527,37 +1511,37 @@ Press 1 for Default View Видалити - + &View &ПереглÑд - + &Export &ЕкÑпорт - + &Remove &Ð’Ð¸Ð´Ð°Ð»ÐµÐ½Ð½Ñ - + &Select &Ð’Ð¸Ð´Ñ–Ð»ÐµÐ½Ð½Ñ - + &Deselect &ЗнÑти Ð²Ð¸Ð´Ñ–Ð»ÐµÐ½Ð½Ñ - + Select &All Вибрати &уÑÑ– - + &Deselect All &ЗнÑти Ð²Ð¸Ð´Ñ–Ð»ÐµÐ½Ð½Ñ ÑƒÑÑ–Ñ… @@ -1752,25 +1736,25 @@ Press 1 for Default View Змінити влаÑтивоÑÑ‚Ñ– Snapmatic не вдалоÑÑ Ñ‡ÐµÑ€ÐµÐ· JSON Помилку - + Snapmatic Crew Snapmatic банда - + New Snapmatic crew: Ðова Snapmatic банда: - + Snapmatic Title Snapmatic назва - + New Snapmatic title: Ðовий Snapmatic заголовок: @@ -1945,52 +1929,52 @@ Press 1 for Default View Видалити - + Edi&t Редагува&ти - + Show &In-game Показати &у грі - + Hide &In-game Сховати &у грі - + &Export &ЕкÑпортувати - + &View &ПереглÑнути - + &Remove &Видалити - + &Select &Ð’Ð¸Ð´Ñ–Ð»ÐµÐ½Ð½Ñ - + &Deselect &ЗнÑти Ð²Ð¸Ð´Ñ–Ð»ÐµÐ½Ð½Ñ - + Select &All Вибрати &уÑÑ– - + &Deselect All &ЗнÑти Ð²Ð¸Ð´Ñ–Ð»ÐµÐ½Ð½Ñ ÑƒÑÑ–Ñ… @@ -2015,29 +1999,6 @@ Press 1 for Default View Ðе вдалоÑÑ Ð¿Ð¾ÐºÐ°Ð·Ð°Ñ‚Ð¸ %1 Snapmatic у грі - - TelemetryDialog - - - You want help %1 to improve in the future by collection of data? - Ви хочете допомогти %1 подальшому вдоÑконаленню шлÑхом збору даних? - - - - %1 User Statistics - %1 СтатиÑтика кориÑтувачів - - - - Yes, I would like to take part. - Так, Ñ Ñ…Ð¾Ñ‚Ñ–Ð² би взÑти учаÑÑ‚ÑŒ. - - - - &OK - &OK - - UserInterface @@ -2172,7 +2133,7 @@ Press 1 for Default View - + Select GTA V Folder... @@ -2209,15 +2170,15 @@ Press 1 for Default View Змінити &гравців... - - + + Show In-game Показати у грі - - + + Hide In-game Сховати у грі diff --git a/res/gta5sync_zh_TW.qm b/res/gta5sync_zh_TW.qm index 79d4647..c311826 100644 Binary files a/res/gta5sync_zh_TW.qm and b/res/gta5sync_zh_TW.qm differ diff --git a/res/gta5sync_zh_TW.ts b/res/gta5sync_zh_TW.ts index 638135b..02ec717 100644 --- a/res/gta5sync_zh_TW.ts +++ b/res/gta5sync_zh_TW.ts @@ -32,76 +32,70 @@ Running with Qt %6<br/> %7 - + &Close 關閉(&C) - + Translated by %1 Translated by translator, example Translated by Syping ç¹é«”中文化: %1 - + TRANSLATOR Insert your name here and profile here in following scheme, First Translator,First Profile\nSecond Translator\nThird Translator,Second Profile Ray,https://steamcommunity.com/profiles/76561198282701714/ - - A project for viewing and sync Grand Theft Auto V Snapmatic<br/> -Pictures and Savegames - 一個 Grand Theft Auto V Snapmatic 圖片ã€éŠæˆ²å­˜æª”檢視和åŒæ­¥å°ˆæ¡ˆ - - - + A project for viewing Grand Theft Auto V Snapmatic<br/> Pictures and Savegames 一個 Grand Theft Auto V Snapmatic 圖片ã€éŠæˆ²å­˜æª”檢視專案 - + Copyright &copy; <a href="%1">%2</a> %3 版權 &copy; <a href="%1">%2</a> %3 - + %1 is licensed under <a href="https://www.gnu.org/licenses/gpl-3.0.html#content">GNU GPLv3</a> %1 使用 <a href="https://www.gnu.org/licenses/gpl-3.0.html#content">GNU GPLv3</a> 授權æ¢æ¬¾ç™¼å¸ƒ - + Release æ­£å¼ç‰ˆæœ¬ - + Release Candidate 最終發布版本 - + Daily Build æ¯æ—¥å»ºç½®ç‰ˆæœ¬ - + Developer 開發版本 - + Beta Beta 版本 - + Alpha Alpha 版本 - + Custom 自訂 @@ -264,8 +258,8 @@ Pictures and Savegames - - + + Background Colour: <span style="color: %1">%1</span> 背景é¡è‰²: <span style="color: %1">%1</span> @@ -277,8 +271,8 @@ Pictures and Savegames - - + + Background Image: 背景圖片: @@ -313,42 +307,42 @@ Pictures and Savegames å–消(&C) - - + + Custom Avatar Custom Avatar Description in SC, don't use Special Character! 自訂大頭貼 - - + + Custom Picture Custom Picture Description in SC, don't use Special Character! 自訂圖片 - + Snapmatic Avatar Zone Snapmatic 大頭貼å€åŸŸ - + Are you sure to use a square image outside of the Avatar Zone? When you want to use it as Avatar the image will be detached! 你確定è¦åœ¨å¤§é ­è²¼å€åŸŸä»¥å¤–的地方使用方形圖片嗎? 作為大頭貼的圖片將被分離! - + Select Colour... é¸æ“‡é¡è‰²... - + Background Image: %1 背景圖片: %1 - + File Background Image: File 文件 @@ -410,7 +404,7 @@ When you want to use it as Avatar the image will be detached! 完æˆ(&D) - + X: %1 Y: %2 X and Y position @@ -563,7 +557,7 @@ Y: %2 - + Participate in %1 User Statistics åƒèˆ‡ %1 使用者統計 @@ -594,8 +588,8 @@ Y: %2 - - + + Participation ID: %1 åƒèˆ‡ ID: %1 @@ -606,7 +600,7 @@ Y: %2 - + User Feedback 使用者å饋 @@ -633,8 +627,8 @@ Y: %2 - - + + Current: %1 ç›®å‰: %1 @@ -669,114 +663,100 @@ Y: %2 總是使用訊æ¯å­—é«” (Windows 2003 和更早版本) - - Sync - åŒæ­¥ - - - - Sync is not implemented at current time - ç›®å‰ä¸¦æœªåŒæ­¥ - - - + Apply changes 套用變更 - + &OK OK, Cancel, Apply 確定(&O) - + Discard changes æ¨æ£„變更 - + &Cancel OK, Cancel, Apply å–消(&C) - + %1 (Next Closest Language) First language a person can talk with a different person/application. "Native" or "Not Native". %1 (接近的語言) - + System System in context of System default 系統 - + %1 (Closest to Interface) Next closest language compared to the Interface %1 (與介é¢æŽ¥è¿‘的語言) - + Auto Automatic language choice. 自動 - + %1 %1 %1 - + The new Custom Folder will initialise after you restart %1. 自訂資料夾將在 %1 é‡æ–°å•Ÿå‹•å¾Œåˆå§‹åŒ–. - + No Profile No Profile, as default ç„¡ - - - + + + Profile: %1 設定檔: %1 - + View %1 User Statistics Online 檢視 %1 使用者統計資訊 - + Not registered 未註冊åƒèˆ‡ - + A feedback message have to between 3-1024 characters long å饋訊æ¯å¿…須在 3 到 1024 個字之間 PictureDialog - - %1 - Snapmatic Picture Viewer - %1 - Snapmatic 圖片檢視器 - Snapmatic Picture Viewer - %1 Snapmatic 圖片檢視器 - %1 - + <span style=" font-weight:600;">Title: </span>%6<br/> <span style=" font-weight:600;">Location: </span>%7 (%1, %2, %3)<br/> <span style=" font-weight:600;">Players: </span>%4 (Crew %5)<br/> @@ -787,58 +767,58 @@ Y: %2 <span style=" font-weight:600;">建立於: </span>%8 - + Manage picture 管ç†åœ–片 - + &Manage 管ç†(&M) - + Close viewer 關閉檢視器 - + &Close 關閉(&C) - + Export as &Picture... 匯出æˆåœ–片(&P)... - + Export as &Snapmatic... åŒ¯å‡ºæˆ Snapmatic(&S)... - + &Edit Properties... 編輯屬性(&E) ... - + &Overwrite Image... 修改圖片(&O)... - + Open &Map Viewer... 開啟地圖檢視器(&M)... - + Open &JSON Editor... é–‹å•Ÿ JSON 編輯器(&J)... @@ -852,37 +832,37 @@ Arrow Keys - Navigate æ–¹å‘éµ - 導覽 - - + + Snapmatic Picture Viewer Snapmatic 圖片檢視器 - - + + Failed at %1 失敗: %1 - - + + No Players ç„¡ - - + + No Crew ç„¡ - + Unknown Location 未知地點 - + Avatar Preview Mode Press 1 for Default View 大頭貼é è¦½æ¨¡å¼ @@ -1092,9 +1072,9 @@ Press 1 for Default View - - - + + + Import... 匯入... @@ -1102,244 +1082,244 @@ Press 1 for Default View - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + Import 匯入 - - + + All image files (%1) 所有圖片 (%1) - - + + All files (**) 所有檔案 (**) - - + + Can't import %1 because file can't be open 無法匯入 %1,因為檔案無法開啟 - - + + Can't import %1 because file can't be parsed properly 無法匯入 %1ï¼Œå› ç‚ºæª”æ¡ˆç„¡æ³•æ­£ç¢ºè§£æž - + Enabled pictures: %1 of %2 開啟圖片 %1 å…± %2 - + Loading... 載入中... - + Snapmatic Loader Snapmatic 載入器 - + <h4>Following Snapmatic Pictures got repaired</h4>%1 <h4>下列的 Snapmatic 圖片已被更新</h4>%1 - + Importable files (%1) å¯åŒ¯å…¥çš„檔案 (%1) - + GTA V Export (*.g5e) GTA V Export (*.g5e) - + Savegames files (SGTA*) éŠæˆ²å­˜æª” (SGTA*) - + Snapmatic pictures (PGTA*) Snapmatic 圖片 (PGTA*) - - + + No valid file is selected 沒有é¸æ“‡æœ‰æ•ˆçš„檔案 - - + + Import file %1 of %2 files 匯入檔案 %1 å…± %2 個 - + Import failed with... %1 %1 匯入失敗 - + Failed to read Snapmatic picture ç„¡æ³•è®€å– Snapmatic 圖片 - + Failed to read Savegame file 無法讀å–éŠæˆ²å­˜æª” - + Can't import %1 because file format can't be detected 無法匯入 %1ï¼Œå› ç‚ºç„¡æ³•æª¢æ¸¬è©²æª”æ¡ˆæ ¼å¼ - + Failed to import the Snapmatic picture, file not begin with PGTA or end with .g5e 匯入 Snapmatic 圖片失敗,檔案ä¸æ˜¯ PGTA 開頭或附檔åä¸æ˜¯ .g5e - + Failed to import the Snapmatic picture, the picture is already in the game 匯入 Snapmatic 圖片失敗,圖片已經在éŠæˆ²ä¸­ - + Failed to import the Snapmatic picture, can't copy the file into profile 匯入 Snapmatic 圖片失敗,無法將該檔案複製到設定檔中 - + Failed to import the Savegame, can't copy the file into profile 匯入éŠæˆ²å­˜æª”失敗,無法將該檔案複製到設定檔中 - + Failed to import the Savegame, no Savegame slot is left 匯入éŠæˆ²å­˜æª”失敗,沒有éŠæˆ²å­˜æª”æ¬„ä½ - - - - - + + + + + Export selected... 匯出所é¸... - - + + JPG pictures and GTA Snapmatic JPG 圖片和 GTA Snapmatic - - + + JPG pictures only åªæœ‰ JPG 圖片 - - + + GTA Snapmatic only åªæœ‰ GTA Snapmatic - + %1Export Snapmatic pictures%2<br><br>JPG pictures make it possible to open the picture with a Image Viewer<br>GTA Snapmatic make it possible to import the picture into the game<br><br>Export as: %1 匯出 Snapmatic 圖片 %2<br><br>JPG 圖片å¯ä½¿ç”¨åœ–片檢視器開啟<br>GTA Snapmatic å¯ä»¥åŒ¯å…¥åˆ°éŠæˆ²ä¸­<br><br>匯出æˆ: - + Initialising export... åˆå§‹åŒ–... - + Export failed with... %1 %1 匯出失敗 - - + + No Snapmatic pictures or Savegames files are selected 未é¸æ“‡ Snapmatic 圖片或éŠæˆ²å­˜æª” - - - + + + Remove selected ç§»é™¤æ‰€é¸ - + You really want remove the selected Snapmatic picutres and Savegame files? 你想移除所é¸çš„ Snapmatic 圖片/存檔嗎? - + Failed to remove all selected Snapmatic pictures and/or Savegame files 無法移除所é¸æ“‡çš„ Snapmatic 圖片/éŠæˆ²å­˜æª” - - - - - - + + + + + + No Snapmatic pictures are selected 未é¸æ“‡ Snapmatic 圖片 - - - - - - + + + + + + %1 failed with... %2 @@ -1349,81 +1329,81 @@ Press 1 for Default View %2 - - + + Qualify as Avatar åˆæ ¼å¤§é ­è²¼ - - - - + + + + Patch selected... 修改所é¸... - - - - - - - - + + + + + + + + Patch file %1 of %2 files 修改檔案 %1 å…± %2 個檔案 - + Qualify %1 failed with... åˆæ ¼ - - + + Change Players... 更改玩家... - + Change Players %1 failed with... 更改玩家 - - - + + + Change Crew... 更改幫會... - + Failed to enter a valid Snapmatic Crew ID 輸入了無效的幫會 ID - + Change Crew %1 failed with... 更改幫會 - - - + + + Change Title... 更改標題... - + Failed to enter a valid Snapmatic title 輸入了無效的標題 - + Change Title %1 failed with... 更改標題 @@ -1447,7 +1427,7 @@ Press 1 for Default View é¸æ“‡çš„å­—é«”: %1 - + <h4>Welcome to %1!</h4>You want to configure %1 before you start using it? <h4>歡迎使用 %1!</h4> 你想在開始å‰å…ˆè¨­å®š %1 å—Ž? @@ -1525,37 +1505,37 @@ Press 1 for Default View 刪除 - + &View 檢視(&V) - + &Export 匯出(&E) - + &Remove 移除(&R) - + &Select é¸æ“‡(&S) - + &Deselect å–消é¸æ“‡(&D) - + Select &All é¸æ“‡å…¨éƒ¨(&A) - + &Deselect All å–消é¸æ“‡å…¨éƒ¨(&D) @@ -1655,7 +1635,7 @@ Press 1 for Default View - + Snapmatic Properties @@ -1738,7 +1718,7 @@ Press 1 for Default View - + Patching of Snapmatic Properties failed because of I/O Error @@ -1750,25 +1730,25 @@ Press 1 for Default View JSON 錯誤,未能更新 Snapmatic 屬性 - + Snapmatic Crew 幫會 - + New Snapmatic crew: 輸入新的幫會: - + Snapmatic Title 標題 - + New Snapmatic title: 輸入新的標題: @@ -1943,52 +1923,52 @@ Press 1 for Default View 刪除 - + Edi&t 編輯(&E) - + Show &In-game 在éŠæˆ²ä¸­é¡¯ç¤º(&I) - + Hide &In-game 在éŠæˆ²ä¸­éš±è—(&I) - + &Export 匯出(&E) - + &View 檢視(&V) - + &Remove 移除(&R) - + &Select é¸æ“‡(&S) - + &Deselect å–消é¸æ“‡(&D) - + Select &All é¸æ“‡å…¨éƒ¨(&A) - + &Deselect All å–消é¸æ“‡å…¨éƒ¨(&D) @@ -2013,29 +1993,6 @@ Press 1 for Default View 在éŠæˆ²ä¸­é¡¯ç¤ºåœ–片 %1 失敗 - - TelemetryDialog - - - You want help %1 to improve in the future by collection of data? - 你希望通éŽæ”¶é›†è³‡æ–™ä¾†å¹«åŠ©æ”¹å–„ %1 å—Ž? - - - - %1 User Statistics - %1 使用者統計 - - - - Yes, I would like to take part. - 是的,我想幫忙. - - - - &OK - 確定(&O) - - UserInterface @@ -2108,7 +2065,7 @@ Press 1 for Default View - + &About %1 關於 %1(&A) @@ -2170,7 +2127,7 @@ Press 1 for Default View - + Select GTA V Folder... @@ -2207,15 +2164,15 @@ Press 1 for Default View 更改玩家(&P)... - - + + Show In-game 在éŠæˆ²ä¸­é¡¯ç¤º - - + + Hide In-game 在éŠæˆ²ä¸­éš±è— @@ -2223,7 +2180,7 @@ Press 1 for Default View - + Select Profile é¸æ“‡è¨­å®šæª” diff --git a/res/gta5view.xpm b/res/gta5view.xpm deleted file mode 100644 index f1ee97b..0000000 --- a/res/gta5view.xpm +++ /dev/null @@ -1,135 +0,0 @@ -/* XPM */ -static char * C:\Users\Rafael\Documents\Projects\gta5view\res\gta5view_xpm[] = { -"128 128 4 1", -" c None", -". c #000000", -"+ c #FE0000", -"@ c #FF0000", -" ", -" ", -" ", -" ", -" ", -" ", -" ", -" ", -" ", -" ...................................................... ", -" ....................................................... ", -" ....................................................... ", -" ....................................................... ", -" ....................................................... ", -" ....................................................... ", -" ....................................................... ", -" ....................................................... ", -" ....................................................... ", -" ....................................................... ", -" ....................................................... ", -" ....................................................... ", -" ............. ", -" ............. ", -" ............. ", -" .............. ", -" ............. ", -" ............. ", -" ............. ", -" .............. ", -" .............. ", -" ............. ", -" ............. ", -" ............. ", -" .............. ", -" ............. ", -" ............. ", -" ............. ", -" ............. ", -" .............. ", -" ............. ", -" ............. ", -" ............. ", -" ............. ", -" .............. ", -" ............. ", -" ............. ", -" ............. ", -" .............. ", -" .............. ", -" ............. .. ", -" ................................ ", -" .................................... ", -" ........................................ ", -" .......................................... ", -" ............................................ ", -" ............................................. ", -" .............................................. ", -" ................................................. ", -" ................................................. ", -" .................................................. ", -" ..... ............................. ", -" ......................... ", -" ...................... ", -" ..................... ", -" ................... ", -" ................... ", -" .................. ", -" ................. ", -" ................ ", -" ............... ", -" ................ ", -" ................ ", -" ............... ", -" ............... ", -" ............... ", -" ............... ", -" .............. ", -" ++ .............. ", -" +@@@+ .............. ", -" @@@@@ .............. ", -" +@@@@@ .............. ", -" @@@@+ ............... ", -" @@@+ .............. ", -" .............. ", -" ", -" ", -" ", -" ", -" @@@@ @@@@ @@@ +++@@++ ++++ ++++ @@@@@ ", -" @@@@+ +@@@@ @@@@+ ++@@@@@@@@@+ @@@@+ +@@@@+ +@@@@+ ", -" @@@@+ @@@@+ @@@@+ +@@@@@@@@@@@@@ @@@@+ @@@@@@ @@@@@ ", -" +@@@+ +@@@@ +@@@@ +@@@@@@@@@@@@@@+ @@@@+ +@@@@@@ @@@@+ ", -" +@@@@ +@@@@+ +@@@@ @@@@@++ +@@@@@ @@@@+ @@@@@@@ +@@@@ ", -" +@@@@ +@@@+ +@@@+ +@@@@+ +@@@@+ @@@@+ +@@@+@@@ @@@@+ ", -" +@@@@ +@@@@+ @@@@+ +@@@@+ @@@@+ @@@@+ @@@++@@@ +@@@@ ", -" +@@@@ +@@@+ @@@@+ +@@@@+ +@@@+ @@@@+ @@@@ +@@@ @@@@+ ", -" @@@@ +@@@@+ +@@@@ +@@@@ @@@@+ @@@@@ @@@+ +@@@ +@@@@ ", -" @@@@+ @@@@+ +@@@@ +@@@@+ +@@@@+ +@@@+ +@@@ +@@@ +@@@+ ", -" @@@@+ +@@@@ +@@@+ +@@@@ @@@@+ @@@@+ @@@+ +@@@ +@@@@+ ", -" @@@@+ @@@@+ @@@@+ @@@@+ ++@@@@+ +@@@+ +@@@+ +@@@+ @@@@@ ", -" +@@@+ +@@@@ @@@@ +@@@@ ++@@@@@+ +@@@+ +@@@ +@@@+ @@@@+ ", -" +@@@+ @@@@+ +@@@@ +@@@@+++++++@@@@@@@+ +@@@+ +@@@+ +@@@+ +@@@@ ", -" +@@@@ +@@@@ +@@@+ @@@@@@@@@@@@@@@@@++ +@@@+ +@@@ +@@@+ @@@@+ ", -" +@@@@ @@@@+ @@@@+ @@@@@@@@@@@@@@@++ +@@@+ @@@+ @@@+ +@@@@ ", -" @@@@ +@@@+ @@@@+ +@@@@@@@@@@@+++ +@@@+ +@@@ @@@+ @@@@+ ", -" @@@@ +@@@@@ +@@@@ +@@@@++ +@@@+ @@@+ @@@+ +@@@@ ", -" @@@@ +@@@+ +@@@@ +@@@@ +@@@@ +@@@ @@@+ +@@@+ ", -" @@@@+ +@@@@+ +@@@+ +@@@@ +@@@@ @@@+ @@@+ @@@@ ", -" +@@@+ +@@@+ @@@@+ +@@@@ @@@@+ +@@@ @@@+ @@@@+ ", -" +@@@+ @@@@@ @@@@+ +@@@@ @@@+ @@@+ @@@+ @@@@ ", -" +@@@+ +@@@+ +@@@@ @@@@+ @@@+ +@@@+ @@@+ +@@@+ ", -" +@@@+ @@@@ +@@@@ @@@@+ @@@+ +@@+ @@@+ +@@@+ ", -" +@@@+ +@@@+ +@@@+ +@@@@+ @@@+ @@@+ @@@+ @@@+ ", -" @@@+ @@@@ @@@@+ +@@@@@ ++ @@@++@@+ +@@++@@@+ ", -" @@@++@@@+ @@@@+ +@@@@@+ ++@@@ @@@+@@@+ +@@++@@@ ", -" @@@@@@@@ +@@@@ @@@@@@@@@@@@@@@@@ @@@@@@@ +@@@@@@+ ", -" @@@@@@@+ +@@@@ +@@@@@@@@@@@@@@@ @@@@@@+ +@@@@@@ ", -" +@@@@@+ +@@@+ +@@@@@@@@@@@++ @@@@@@ +@@@@@+ ", -" @@@@@ @@@@ ++++@++++ @@@@@ @@@@@ ", -" ", -" ", -" ", -" ", -" ", -" ", -" ", -" ", -" "}; diff --git a/res/src/AvatarAreaProject.xcf b/res/src/AvatarAreaProject.xcf index d09d1e4..98c204e 100644 Binary files a/res/src/AvatarAreaProject.xcf and b/res/src/AvatarAreaProject.xcf differ diff --git a/res/src/mainui.png b/res/src/mainui.png new file mode 100644 index 0000000..3435476 Binary files /dev/null and b/res/src/mainui.png differ diff --git a/res/src/picture.png b/res/src/picture.png new file mode 100644 index 0000000..aac2057 Binary files /dev/null and b/res/src/picture.png differ diff --git a/res/src/prop.png b/res/src/prop.png new file mode 100644 index 0000000..817ab59 Binary files /dev/null and b/res/src/prop.png differ diff --git a/tmext/TelemetryClassAuthenticator.cpp b/tmext/TelemetryClassAuthenticator.cpp index 6fb5375..fc523f7 100644 --- a/tmext/TelemetryClassAuthenticator.cpp +++ b/tmext/TelemetryClassAuthenticator.cpp @@ -1,5 +1,5 @@ /***************************************************************************** -* gta5sync GRAND THEFT AUTO V SYNC +* gta5view Grand Theft Auto V Profile Viewer * Copyright (C) 2018 Syping * * This program is free software: you can redistribute it and/or modify diff --git a/tmext/TelemetryClassAuthenticator.h b/tmext/TelemetryClassAuthenticator.h index d2dd840..4180029 100644 --- a/tmext/TelemetryClassAuthenticator.h +++ b/tmext/TelemetryClassAuthenticator.h @@ -1,5 +1,5 @@ /***************************************************************************** -* gta5sync GRAND THEFT AUTO V SYNC +* gta5view Grand Theft Auto V Profile Viewer * Copyright (C) 2018 Syping * * This program is free software: you can redistribute it and/or modify diff --git a/uimod/UiModLabel.cpp b/uimod/UiModLabel.cpp index 27c6a7d..4a2c2d4 100644 --- a/uimod/UiModLabel.cpp +++ b/uimod/UiModLabel.cpp @@ -1,5 +1,5 @@ /***************************************************************************** -* gta5sync GRAND THEFT AUTO V SYNC +* gta5view Grand Theft Auto V Profile Viewer * Copyright (C) 2016-2017 Syping * * This program is free software: you can redistribute it and/or modify diff --git a/uimod/UiModLabel.h b/uimod/UiModLabel.h index 7d35e87..0988a4e 100644 --- a/uimod/UiModLabel.h +++ b/uimod/UiModLabel.h @@ -1,5 +1,5 @@ /***************************************************************************** -* gta5sync GRAND THEFT AUTO V SYNC +* gta5view Grand Theft Auto V Profile Viewer * Copyright (C) 2016-2017 Syping * * This program is free software: you can redistribute it and/or modify diff --git a/uimod/UiModWidget.cpp b/uimod/UiModWidget.cpp index b517463..75cddf7 100644 --- a/uimod/UiModWidget.cpp +++ b/uimod/UiModWidget.cpp @@ -1,5 +1,5 @@ /***************************************************************************** -* gta5sync GRAND THEFT AUTO V SYNC +* gta5view Grand Theft Auto V Profile Viewer * Copyright (C) 2017 Syping * * This program is free software: you can redistribute it and/or modify diff --git a/uimod/UiModWidget.h b/uimod/UiModWidget.h index d30637d..db3ae04 100644 --- a/uimod/UiModWidget.h +++ b/uimod/UiModWidget.h @@ -1,5 +1,5 @@ /***************************************************************************** -* gta5sync GRAND THEFT AUTO V SYNC +* gta5view Grand Theft Auto V Profile Viewer * Copyright (C) 2017 Syping * * This program is free software: you can redistribute it and/or modify