Compare commits
317 Commits
cwtch-alph
...
master
Author | SHA1 | Date |
---|---|---|
Sarah Jamie Lewis | 12a6cb4610 | |
Dan Ballard | 8e92a6ae42 | |
erinn | 211e388a7d | |
Dan Ballard | dc3872fc8a | |
erinn | bc55d472d1 | |
Sarah Jamie Lewis | 60af2930b5 | |
Dan Ballard | 1f98899f6b | |
Dan Ballard | b586248bda | |
Sarah Jamie Lewis | f44cb450a5 | |
Sarah Jamie Lewis | f354f5a81a | |
Dan Ballard | e6145d6e12 | |
Sarah Jamie Lewis | ee1a8dbed5 | |
Dan Ballard | 4bb5a52b9f | |
Sarah Jamie Lewis | bf27590afe | |
erinn | 4cdb507e5e | |
Dan Ballard | 3dbcf07396 | |
Dan Ballard | afcceac8cf | |
Sarah Jamie Lewis | 66c46714b7 | |
Dan Ballard | 288e14ede2 | |
Dan Ballard | 1962cf9df5 | |
Dan Ballard | ae8702cda2 | |
Dan Ballard | 85dc5b5714 | |
Dan Ballard | 4932c728ec | |
Dan Ballard | 0f15141f73 | |
Dan Ballard | db0e8a2395 | |
Dan Ballard | be1959b60c | |
Sarah Jamie Lewis | dfb12a2ab0 | |
erinn | 17c946de6d | |
Sarah Jamie Lewis | 9958bb605b | |
Sarah Jamie Lewis | 826c8b3a1d | |
erinn | bb84e8f46f | |
Sarah Jamie Lewis | f168f6aee9 | |
erinn | bc33356ca4 | |
Sarah Jamie Lewis | dfdce13e46 | |
erinn | fa430b7d7c | |
Sarah Jamie Lewis | 4d927c133d | |
erinn | 0663488d6d | |
erinn | 6263dbf1fa | |
erinn | 1a556d05ce | |
erinn | 49bee4deb1 | |
erinn | 240eb56ebe | |
Dan Ballard | 79052038e6 | |
erinn | e5fce8634e | |
erinn | 09079dd224 | |
Dan Ballard | b920d3ab8b | |
erinn | 8b6e8d2e98 | |
erinn | 473e0a02d0 | |
Dan Ballard | b837757617 | |
Sarah Jamie Lewis | 6292b5a1b9 | |
Dan Ballard | cfe0105992 | |
erinn | bbedeb81c7 | |
erinn | 3687ead49f | |
erinn | c3deeaa227 | |
erinn | 96aaf1f0e9 | |
erinn | 79a8bfb0cf | |
Dan Ballard | 23eece4424 | |
Sarah Jamie Lewis | 0de8bd19bb | |
Sarah Jamie Lewis | e9b98f2aea | |
Dan Ballard | 12bed09d4e | |
Dan Ballard | 8e6f5e813a | |
Sarah Jamie Lewis | 4b081a0db6 | |
Sarah Jamie Lewis | a942bfbba1 | |
Dan Ballard | 2035e44cfd | |
Sarah Jamie Lewis | 07cbb1054b | |
Dan Ballard | 0e965d630a | |
Dan Ballard | d4d88ff541 | |
Dan Ballard | d0f90a9b7f | |
Dan Ballard | 3cdb2b2455 | |
Dan Ballard | f02083e0d6 | |
Dan Ballard | c62891b8d9 | |
erinn | 04aae4d093 | |
erinn | 9cc81b1f29 | |
Dan Ballard | 93dbc6d270 | |
Dan Ballard | 8b004543ed | |
erinn | d4e5546079 | |
erinn | ba7bb704cd | |
Dan Ballard | 752e21f89e | |
erinn | 7aa7f67fd3 | |
erinn | 6e6045d911 | |
Sarah Jamie Lewis | 16ee1635f5 | |
Dan Ballard | 9aa4f6d75d | |
erinn | 38923ef814 | |
erinn | 24a7abacd1 | |
Sarah Jamie Lewis | eef74ae8b3 | |
Sarah Jamie Lewis | 05cd440036 | |
Sarah Jamie Lewis | c1bc5a7806 | |
Sarah Jamie Lewis | d25aadbb2b | |
erinn | 7485837669 | |
erinn | f8d3277a6f | |
erinn | 0634d34bf2 | |
Dan Ballard | 1eec8dbfe0 | |
Sarah Jamie Lewis | dd5995628a | |
Dan Ballard | d5e81e9ae3 | |
Sarah Jamie Lewis | 4e0ecd72c4 | |
Sarah Jamie Lewis | 6b8a8b8da1 | |
Sarah Jamie Lewis | 1d86c3d326 | |
Sarah Jamie Lewis | ef58f002b3 | |
Sarah Jamie Lewis | 1eb391ecc1 | |
Sarah Jamie Lewis | e74d599d95 | |
erinn | 1515fb7998 | |
Dan Ballard | 78400a17c6 | |
Dan Ballard | 2f6395697e | |
Dan Ballard | e493a18f3f | |
Dan Ballard | 44e0f9ebab | |
Sarah Jamie Lewis | de1b3319b1 | |
Dan Ballard | 4f4df63e51 | |
erinn | bbea51b561 | |
Dan Ballard | 3d509c6810 | |
Sarah Jamie Lewis | 76df3c286d | |
Dan Ballard | de56f8be15 | |
erinn | 9e4917ac5b | |
Dan Ballard | f402f515da | |
erinn | a0081c9d4e | |
erinn | 94381cb076 | |
erinn | a0bbfa7721 | |
erinn | 4179e2798b | |
Sarah Jamie Lewis | 8340b7aed3 | |
Sarah Jamie Lewis | e74a0e8dc2 | |
Sarah Jamie Lewis | 228a9b6ebd | |
Sarah Jamie Lewis | b4b10ca75f | |
Dan Ballard | 46ed17eec2 | |
erinn | a54aa8e0af | |
Sarah Jamie Lewis | a5c96964e8 | |
Sarah Jamie Lewis | cb932d3ca3 | |
Sarah Jamie Lewis | 72457d138b | |
Dan Ballard | 454d10e28c | |
Dan Ballard | aadcb0d7c6 | |
Sarah Jamie Lewis | 4805507014 | |
Sarah Jamie Lewis | eb33e46e3d | |
Sarah Jamie Lewis | 45acecf9d7 | |
Dan Ballard | 483d765146 | |
Dan Ballard | 36a4e13184 | |
Dan Ballard | 5cb284c99c | |
Sarah Jamie Lewis | 7f011663d7 | |
Dan Ballard | 918e44fdb6 | |
erinn | 1c463f235c | |
Dan Ballard | 9701380e3c | |
Sarah Jamie Lewis | 01428b1371 | |
Dan Ballard | 568b979698 | |
Sarah Jamie Lewis | c11e541f4e | |
Dan Ballard | 162ee96a1f | |
erinn | 0be9447a07 | |
Dan Ballard | 0e5d78cbb9 | |
erinn | 98d58ebd62 | |
Dan Ballard | 5ca904b675 | |
erinn | d144f0d8b0 | |
Sarah Jamie Lewis | a276d5732a | |
erinn | fd45f72a09 | |
Dan Ballard | 843790c27b | |
Sarah Jamie Lewis | 9721999e9b | |
Dan Ballard | 6117486808 | |
erinn | b80ecc0a7d | |
erinn | 2433c667d8 | |
Sarah Jamie Lewis | 143dd9693c | |
Sarah Jamie Lewis | 91c182b880 | |
Sarah Jamie Lewis | 48d375f007 | |
erinn | 223936cda8 | |
Dan Ballard | f2a4c61610 | |
Dan Ballard | a247fd91c0 | |
Sarah Jamie Lewis | 1b0d69dfb2 | |
Dan Ballard | fec49cf1fd | |
Sarah Jamie Lewis | bfb431cbaf | |
Sarah Jamie Lewis | ada9dc7bb9 | |
Dan Ballard | 93776e0ca8 | |
erinn | 1de7e5bd6a | |
Dan Ballard | 1b57b5b0c6 | |
Dan Ballard | 4fb726a926 | |
Dan Ballard | 4580d616de | |
erinn | a52794d562 | |
erinn | cd241e45c4 | |
erinn | e09ad91ab5 | |
erinn | 7bb2198879 | |
erinn | 7398bec25b | |
erinn | db315f8de1 | |
Sarah Jamie Lewis | e2ab860c72 | |
Dan Ballard | e3717dd175 | |
Sarah Jamie Lewis | c4d5d889b6 | |
Dan Ballard | 9e784ba4ea | |
Sarah Jamie Lewis | 325c959b69 | |
Sarah Jamie Lewis | 35cd963ec3 | |
erinn | 59dd9c34d6 | |
Dan Ballard | 733efb5d1d | |
Dan Ballard | 78e3859b64 | |
erinn | a814dee7af | |
erinn | bd10a2c303 | |
Dan Ballard | c580597c8d | |
Dan Ballard | 31abd0020e | |
erinn | c55a6b196a | |
Dan Ballard | 27a09dd8cb | |
erinn | 21201d2e68 | |
Dan Ballard | 0ba6a200cc | |
Dan Ballard | af3c593228 | |
Dan Ballard | f91f932c00 | |
erinn | 02c2900aa0 | |
Dan Ballard | 08722d7b97 | |
Sarah Jamie Lewis | 66676076e9 | |
Dan Ballard | 5694dfe23e | |
Sarah Jamie Lewis | b0aad3a1cc | |
Dan Ballard | 94e30f4962 | |
Dan Ballard | 315c66009e | |
Dan Ballard | b8ffa85fac | |
Sarah Jamie Lewis | 1337f97345 | |
Sarah Jamie Lewis | 310d313034 | |
Dan Ballard | 37dab30d5e | |
Dan Ballard | 9c8134e0c3 | |
Dan Ballard | ec60073ce2 | |
Dan Ballard | 8dacea29bb | |
Dan Ballard | da72629387 | |
Dan Ballard | de2604b578 | |
erinn | 5cf1d6a1db | |
erinn | ebfa5352b4 | |
erinn | f609dcaac4 | |
erinn | 219065dde5 | |
erinn | 3ffdaa1ca3 | |
erinn | 533b0d3fe0 | |
erinn | 282cc9d516 | |
erinn | 92adc2a61d | |
Sarah Jamie Lewis | ba22cf93c7 | |
Dan Ballard | d0d8d4bd3b | |
Sarah Jamie Lewis | 02d4e04804 | |
Dan Ballard | 40e0c5f700 | |
Sarah Jamie Lewis | 4ccf48a50f | |
Dan Ballard | 3221e30701 | |
Dan Ballard | 22814ed160 | |
Sarah Jamie Lewis | d77c33a485 | |
Sarah Jamie Lewis | 0c65ec9c8e | |
Dan Ballard | 1b82054e76 | |
Dan Ballard | 92a1561a12 | |
Sarah Jamie Lewis | 2aa2eabf48 | |
Sarah Jamie Lewis | 73d8951d6e | |
Dan Ballard | 1af5662416 | |
Dan Ballard | 1319674940 | |
Sarah Jamie Lewis | 65de146c34 | |
Sarah Jamie Lewis | 4bb5ef6a1c | |
Dan Ballard | 427808b646 | |
Sarah Jamie Lewis | 00522884ae | |
Sarah Jamie Lewis | ce8e46a4dd | |
Sarah Jamie Lewis | 0a9b2ed6f5 | |
Dan Ballard | 5343348aa9 | |
Sarah Jamie Lewis | 2f251aa4da | |
Dan Ballard | 7495a6dca4 | |
Dan Ballard | 522f395d86 | |
Dan Ballard | cef2ae28d2 | |
erinn | 481c8ca701 | |
erinn | bf213cc863 | |
erinn | 975ad0a8ac | |
erinn | 3d7ebf64af | |
Dan Ballard | 2037fc6d21 | |
Dan Ballard | 2abd9ba53b | |
Sarah Jamie Lewis | 632136f193 | |
Dan Ballard | fc3bdb76f6 | |
Dan Ballard | 631810df5b | |
Sarah Jamie Lewis | 64ff9aed24 | |
Dan Ballard | 35246ed364 | |
Sarah Jamie Lewis | 2a1209c07a | |
Dan Ballard | b834d536c5 | |
Sarah Jamie Lewis | dbb7a563f1 | |
Dan Ballard | 9fcca6580d | |
Sarah Jamie Lewis | ccf6df326e | |
Dan Ballard | 94f5dd20bd | |
Dan Ballard | 449bccd626 | |
Dan Ballard | 4e7173f878 | |
Dan Ballard | 35e53a4d60 | |
Dan Ballard | da3c93792c | |
Sarah Jamie Lewis | 0eb27d6525 | |
erinn | a4ae5dcbed | |
Dan Ballard | fee151cf26 | |
Sarah Jamie Lewis | f5f6d4b947 | |
Dan Ballard | 9397131967 | |
Sarah Jamie Lewis | e635a3a384 | |
Dan Ballard | 8d9681e130 | |
Dan Ballard | 8e347d79b8 | |
Dan Ballard | a9041c6485 | |
Sarah Jamie Lewis | cedf39aaa6 | |
Dan Ballard | aa81c40e50 | |
Dan Ballard | 7e0945583e | |
Dan Ballard | 13239c094c | |
Dan Ballard | d77851a835 | |
Sarah Jamie Lewis | 5ca2fa6332 | |
Dan Ballard | fbecb20e05 | |
Dan Ballard | 541f4f7da4 | |
Dan Ballard | ba14e8ad72 | |
Sarah Jamie Lewis | 5df3fd4cf4 | |
Dan Ballard | 1b20c9ed02 | |
Dan Ballard | d3e178474d | |
Dan Ballard | 7a7be2777b | |
Sarah Jamie Lewis | 434907ea0d | |
Dan Ballard | bac4accb1b | |
Sarah Jamie Lewis | 91f397d9e1 | |
Dan Ballard | 606f7c7eb6 | |
Dan Ballard | c77737be1d | |
Sarah Jamie Lewis | 6dd346fe96 | |
Sarah Jamie Lewis | 54918e612f | |
Dan Ballard | 35fa0adb67 | |
Sarah Jamie Lewis | 4f205f7c4f | |
Dan Ballard | d6eebe82bd | |
Sarah Jamie Lewis | 628e414376 | |
Dan Ballard | 0964363b89 | |
Sarah Jamie Lewis | e2c3a82ea0 | |
Dan Ballard | f0099acb2b | |
Dan Ballard | 30b8d9ab6d | |
Dan Ballard | 1bf2910b4d | |
Dan Ballard | 5bea6bdc47 | |
Sarah Jamie Lewis | 1ad9d5be20 | |
Dan Ballard | ee30a3227d | |
Sarah Jamie Lewis | 121a62c142 | |
Dan Ballard | 3fd5755ed9 | |
Dan Ballard | 1773e52cbd | |
Dan Ballard | a75f7778be | |
Dan Ballard | b80500da35 | |
erinn | cf10647d4c | |
Dan Ballard | ab92e68628 | |
Sarah Jamie Lewis | 62911b03fa | |
Dan Ballard | f3a453f5a6 | |
Sarah Jamie Lewis | 45973dfaf4 | |
Dan Ballard | db817dbed2 | |
Sarah Jamie Lewis | c3189553c8 |
132
.drone.yml
|
@ -14,26 +14,29 @@ pipeline:
|
|||
- QT_DIR=/opt/Qt
|
||||
- QT_DOCKER='true'
|
||||
- QT_API=5.13.0
|
||||
- GO111MODULE=on
|
||||
commands:
|
||||
- export GOPATH=$GOPATH:/media/sf_GOPATH1/
|
||||
- export PATH=$PATH:/home/user/work/bin:/media/sf_GOPATH1/bin
|
||||
- apt-get -qq update && apt-get --no-install-recommends -qq -y install ca-certificates curl git openssh-client
|
||||
- go get -d
|
||||
- go mod download
|
||||
- $QT_DIR/$QT_API/gcc_64/bin/lrelease ui.pro
|
||||
- git fetch --tags
|
||||
- export VERSION=`git describe --tags`
|
||||
- export BUILDDATE=`date +%G-%m-%d-%H-%M`
|
||||
- go mod vendor
|
||||
- qtdeploy -ldflags "-X main.buildVer=$VERSION -X main.buildDate=$BUILDDATE" build linux
|
||||
- cp README.md deploy/linux
|
||||
- cp -R assets deploy/linux/
|
||||
- export FILENAME=cwtch-linux-$BUILDDATE.tar.gz
|
||||
- cd deploy
|
||||
- mv linux cwtch
|
||||
- tar -czf $FILENAME cwtch
|
||||
- sha256sum $FILENAME > $FILENAME.sha256
|
||||
- rm -r cwtch
|
||||
build-android:
|
||||
build-android-arm-v7a:
|
||||
mem_limit: 3G
|
||||
image: therecipe/qt:android
|
||||
secrets: [upload_jks_file,upload_jks_pass]
|
||||
when:
|
||||
repo: cwtch.im/ui
|
||||
branch: master
|
||||
|
@ -44,23 +47,34 @@ pipeline:
|
|||
- QT_API=5.13.0
|
||||
- ANDROID_NDK_DIR=/home/user/android-ndk-r18b
|
||||
- ANDROID_SDK_DIR=/home/user/android-sdk-linux
|
||||
- GO111MODULE=on
|
||||
commands:
|
||||
- export GOPATH=$GOPATH:/media/sf_GOPATH1/
|
||||
- export PATH=$PATH:/home/user/work/bin:/media/sf_GOPATH1/bin
|
||||
- apt-get -qq update && apt-get --no-install-recommends -qq -y install ca-certificates curl git
|
||||
- find -iname 'moc*' | xargs rm
|
||||
- find -iname 'rcc*' | xargs rm
|
||||
- go get -d
|
||||
- rm -r vendor/
|
||||
- make clean
|
||||
- echo "cwtch-upload" > android/jks_alias
|
||||
- echo $UPLOAD_JKS_PASS > android/jks_pass
|
||||
- echo $UPLOAD_JKS_FILE | tr -d '\n ' > android/ui.jks.b64
|
||||
- base64 --decode android/ui.jks.b64 > android/ui.jks
|
||||
- export GOARCH=arm
|
||||
- go mod download
|
||||
- export VERSION=`git describe --tags`
|
||||
- export BUILDDATE=`date +%G-%m-%d-%H-%M`
|
||||
- qtdeploy -ldflags "-X main.buildVer=$VERSION -X main.buildDate=$BUILDDATE" build android
|
||||
- go mod vendor
|
||||
- qtsetup generate android
|
||||
- mv assets android/
|
||||
- ANDROID_MODULES_INCLUDE="Core,Gui,Svg,QuickWidgets,Xml" qtdeploy -ldflags "-X main.buildVer=$VERSION -X main.buildDate=$BUILDDATE" build android
|
||||
- mv android/assets assets
|
||||
- cd deploy
|
||||
- export FILENAME=cwtch-android-$BUILDDATE.apk
|
||||
- cp android/build-debug.apk $FILENAME
|
||||
- export FILENAME=cwtch-android-arm-v7a-$BUILDDATE.apk
|
||||
- cp android/build-release-signed.apk $FILENAME
|
||||
- sha256sum $FILENAME > $FILENAME.sha256
|
||||
build-windows:
|
||||
- rm -r android
|
||||
build-android-arm64-v8a:
|
||||
mem_limit: 3G
|
||||
image: therecipe/qt:windows_64_static
|
||||
image: therecipe/qt:android
|
||||
secrets: [upload_jks_file,upload_jks_pass]
|
||||
when:
|
||||
repo: cwtch.im/ui
|
||||
branch: master
|
||||
|
@ -69,24 +83,87 @@ pipeline:
|
|||
- QT_DIR=/opt/Qt
|
||||
- QT_DOCKER='true'
|
||||
- QT_API=5.13.0
|
||||
- ANDROID_NDK_DIR=/home/user/android-ndk-r18b
|
||||
- ANDROID_SDK_DIR=/home/user/android-sdk-linux
|
||||
- GO111MODULE=on
|
||||
commands:
|
||||
- export GOPATH=$GOPATH:/media/sf_GOPATH1/
|
||||
- export PATH=$PATH:/home/user/work/bin:/media/sf_GOPATH1/bin
|
||||
- apt-get -qq update && apt-get --no-install-recommends -qq -y install ca-certificates curl git zip
|
||||
- find -iname 'moc*' | xargs rm
|
||||
- find -iname 'rcc*' | xargs rm
|
||||
- go get -d
|
||||
- apt-get -qq update && apt-get --no-install-recommends -qq -y install ca-certificates curl git
|
||||
- rm -r vendor/
|
||||
- make clean
|
||||
- echo "cwtch-upload" > android/jks_alias
|
||||
- echo $UPLOAD_JKS_PASS > android/jks_pass
|
||||
- echo $UPLOAD_JKS_FILE | tr -d '\n ' > android/ui.jks.b64
|
||||
- base64 --decode android/ui.jks.b64 > android/ui.jks
|
||||
- export GOARCH=arm64
|
||||
- perl -pe 's/versionCode="(\d+)"/"versionCode=\"" .($1+1)."\""/eg' android/AndroidManifest.xml > android/AndroidManifest.xml.inc
|
||||
- rm android/AndroidManifest.xml
|
||||
- mv android/AndroidManifest.xml.inc android/AndroidManifest.xml
|
||||
- go mod download
|
||||
- export VERSION=`git describe --tags`
|
||||
- export BUILDDATE=`date +%G-%m-%d-%H-%M`
|
||||
- go mod vendor
|
||||
- qtsetup generate android
|
||||
- mv assets android/
|
||||
- ANDROID_MODULES_INCLUDE="Core,Gui,Svg,QuickWidgets,Xml" qtdeploy -ldflags "-X main.buildVer=$VERSION -X main.buildDate=$BUILDDATE" build android
|
||||
- mv android/assets assets
|
||||
- cd deploy
|
||||
- export FILENAME=cwtch-android-arm64-v8a-$BUILDDATE.apk
|
||||
- cp android/build-release-signed.apk $FILENAME
|
||||
- sha256sum $FILENAME > $FILENAME.sha256
|
||||
- rm -r android
|
||||
build-windows:
|
||||
mem_limit: 3G
|
||||
image: therecipe/qt:windows_64_static
|
||||
when:
|
||||
repo: cwtch.im/ui
|
||||
branch: [ master, windows_build ]
|
||||
event: push
|
||||
environment:
|
||||
- QT_DIR=/opt/Qt
|
||||
- QT_DOCKER='true'
|
||||
- QT_API=5.13.0
|
||||
- GO111MODULE=on
|
||||
commands:
|
||||
- export PATH=$PATH:/home/user/work/bin:/media/sf_GOPATH1/bin
|
||||
- apt-get -qq update && apt-get --no-install-recommends -qq -y install ca-certificates curl git zip
|
||||
- rm -r vendor || true
|
||||
- make clean || true
|
||||
- go mod download
|
||||
- export VERSION=`git describe --tags`
|
||||
- export BUILDDATE=`date +%G-%m-%d-%H-%M`
|
||||
- go mod vendor
|
||||
- export QT_DEBUG=true
|
||||
- export CONSOLE=true
|
||||
- export QT_DEBUG_QML=true
|
||||
- qtdeploy -ldflags "-X main.buildVer=$VERSION -X main.buildDate=$BUILDDATE" build windows
|
||||
- cp README.md deploy/windows
|
||||
- cp -R assets deploy/windows/
|
||||
- cp -r windows/* deploy/windows
|
||||
- cd deploy
|
||||
- mv windows cwtch
|
||||
- export FILENAME=cwtch-windows-$BUILDDATE.zip
|
||||
- zip -r $FILENAME cwtch
|
||||
- sha256sum $FILENAME > $FILENAME.sha256
|
||||
- rm -r cwtch
|
||||
- mv cwtch windows
|
||||
package-windows:
|
||||
mem_limit: 3G
|
||||
image: hp41/nsis:latest
|
||||
when:
|
||||
repo: cwtch.im/ui
|
||||
branch: [ master, windows_build ]
|
||||
event: push
|
||||
environment:
|
||||
commands:
|
||||
- cp nsis/cwtch-installer.nsi deploy/
|
||||
- cd deploy
|
||||
- makensis -V3 cwtch-installer.nsi
|
||||
- export BUILDDATE=`date +%G-%m-%d-%H-%M`
|
||||
- export FILENAME=cwtch-installer-$BUILDDATE.exe
|
||||
- mv cwtch-installer.exe $FILENAME
|
||||
- sha256sum $FILENAME > $FILENAME.sha256
|
||||
- rm cwtch-installer.nsi
|
||||
- rm -r windows
|
||||
deploy-buildfiles:
|
||||
image: pivotaldata/concourse-ssh
|
||||
secrets: [buildfiles_key]
|
||||
|
@ -105,6 +182,25 @@ pipeline:
|
|||
- mkdir $DIR
|
||||
- mv cwtch* $DIR/
|
||||
- scp -r -o StrictHostKeyChecking=no -i ~/id_rsa $DIR buildfiles@openprivacy.ca:/home/buildfiles/buildfiles/
|
||||
deploy-windows-build:
|
||||
image: pivotaldata/concourse-ssh
|
||||
secrets: [buildfiles_key]
|
||||
when:
|
||||
repo: cwtch.im/ui
|
||||
branch: windows_build
|
||||
event: push
|
||||
status: [ success ]
|
||||
commands:
|
||||
- apk add --no-cache git
|
||||
- echo $BUILDFILES_KEY > ~/id_rsab64
|
||||
- base64 -d ~/id_rsab64 > ~/id_rsa
|
||||
- chmod 400 ~/id_rsa
|
||||
- git fetch --tags
|
||||
- export DIR=`date +%G.%m.%d-%H.%M`-`git describe --tags`
|
||||
- cd deploy
|
||||
- mkdir -p windows_build/$DIR
|
||||
- mv cwtch* windows_build/$DIR/
|
||||
- scp -r -o StrictHostKeyChecking=no -i ~/id_rsa windows_build buildfiles@openprivacy.ca:/home/buildfiles/buildfiles/
|
||||
notify-email:
|
||||
image: drillster/drone-email
|
||||
host: build.openprivacy.ca
|
||||
|
|
|
@ -6,3 +6,4 @@ rcc*
|
|||
*.jsc
|
||||
vendor/
|
||||
.directory
|
||||
cwtch_log.txt
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
[submodule "qml/opaque"]
|
||||
path = qml/opaque
|
||||
url = https://git.openprivacy.ca/openprivacy/opaque
|
|
@ -0,0 +1,89 @@
|
|||
# Notes on Android Debugging
|
||||
|
||||
If you are reading this you are probably interested in developing Cwtch for Android! Awesome.
|
||||
|
||||
The Cwtch UI app is intended to be a single codebase that runs on multiple platforms. This
|
||||
complicates the build process in favour of simplifying the code (so goes the theory).
|
||||
|
||||
We make use of https://github.com/therecipe/qt/ for deploying Go/Qt code to Android. Before you venture into the weeds
|
||||
of this README please take a look at the [Installation](https://github.com/therecipe/qt/wiki/Installation)
|
||||
and [Setup instructions](https://github.com/therecipe/qt/wiki/Deploying-Linux-to-Android) in therecipe/qt.
|
||||
|
||||
## Building
|
||||
|
||||
Check out and follow the instructions at https://github.com/therecipe/qt/wiki/Deploying-Linux-to-Android as they are sufficient,
|
||||
below you will find high-level notes regarding the process.
|
||||
|
||||
You need to run `qtsetup --qt_version=<vesion> full android` for the non-docker setup. You will need to do this
|
||||
for every major version change of therecipe dependencies.
|
||||
|
||||
You will also need the Android 28 SDK (Pie), the NDK, SDK build tools and platform tools, gradle and **JDK 8**
|
||||
|
||||
JAVA_JDK=/path/to/jre8
|
||||
ANDROID_NDK_DIR=/path/to/ndk
|
||||
|
||||
Once all that setup is done you should be able to run:
|
||||
|
||||
ANDROID_MODULES_INCLUDE="Core,Gui,Svg,QuickWidgets,Xml" qtdeploy build android
|
||||
|
||||
2-4 minutes later an android apk will pop out in `./deploy/android/build-debug.apk`.
|
||||
|
||||
### Build Setup Issues we have seen
|
||||
|
||||
* `Could not determine java version from <blah>` - this is thrown by gradle inside the `androiddeployqt` process when the
|
||||
Java version is *not* JRE8. Ensure that JAVA_HOME is pointed to the correct java installation.
|
||||
* ` readelf <blah> "is not an ordinary file"` - this isn't actually an error that will stop the build, but sometimes
|
||||
because of the very long debug log output you will come across it when trying to find the *actual* error (which is
|
||||
probably a Java version issue). It can be safely ignored.
|
||||
* `could not find QAndroid...` / `CPP build errors` - you will need to run `qtsetup` full android` for the Qt version
|
||||
you are using.
|
||||
* Example: androidextras_android.cpp:9:10: fatal error: 'QAndroidActivityResultReceiver' file not found
|
||||
|
||||
## Testing on a Real Device
|
||||
|
||||
Consult the Android documentation on setting up your device for development.
|
||||
|
||||
You will need an android sdk, setup your device for USB Debugging and then with `adb` you can do:
|
||||
|
||||
adb install -r ./deploy/android/build-debug.apk
|
||||
|
||||
To get the logs you can run
|
||||
|
||||
adb logcat
|
||||
|
||||
Android Studio provides a nice logcat interface for quickly filtering log files that can be very useful when trying to
|
||||
debug complex behavior, but command line tools like `grep` and the built-in [logcat filtering](https://developer.android.com/studio/command-line/logcat)
|
||||
should also suffice.
|
||||
|
||||
*Important*: Cwtch UI technically runs *3* different applications: Cwtch Frontend (application client),
|
||||
Cwtch Backend (application server) and Tor. When filtering logcat you should be aware that some of your messages might
|
||||
be getting logged by a different process.
|
||||
|
||||
(*Ctrl-F Helper: "Why are log messages missing"*)
|
||||
|
||||
# Bundled Libraries
|
||||
|
||||
There seems to be a bug in Qt (https://bugreports.qt.io/browse/QTBUG-84371) that prevents the use of
|
||||
`AndroidExtras` in `ANDROID_MODULES_INCLUDE` so we bundle it in `android/libQt5AndroidExtras.so` along with
|
||||
`libtor` for Tor support.
|
||||
|
||||
## Non-SDK Interfaces
|
||||
|
||||
e.g. java.lang.NoSuchFieldException: No field mPivotX in class Landroid/graphics/drawable/RotateDrawable$RotateState;
|
||||
|
||||
* https://bugreports.qt.io/browse/QTBUG-71590
|
||||
|
||||
## Plugins
|
||||
|
||||
Theoretically speaking it should be possible to use `ANDROID_EXTRA_PLUGINS` to include support for e.g.
|
||||
SVG images on Android. However, we have been unable to make it work. If you would like to try, the following
|
||||
issues might be helpful:
|
||||
|
||||
* https://bugreports.qt.io/browse/QTBUG-60022
|
||||
|
||||
## Notifications
|
||||
|
||||
- Android 8 (API Level 26) forces you to call setChannelId()
|
||||
- Android 9 "Do Not Disturb" mode also hides all notifications
|
||||
- Setting up notification channels only seems possible *once* per install. any changes you need to make
|
||||
require that the app is reinstalled, or the actual channel deleted and changed.
|
2
LICENSE
|
@ -1,4 +1,4 @@
|
|||
All code in this repositorym, unless otherwise indicated, is distributed under the following license:
|
||||
All code in this repository, unless otherwise indicated, is distributed under the following license:
|
||||
|
||||
Copyright 2019 Open Privacy Research Society
|
||||
|
||||
|
|
32
Makefile
|
@ -1,7 +1,33 @@
|
|||
all:
|
||||
.PHONY: all clean linux windows android
|
||||
|
||||
default: all
|
||||
DEFAULT_GOAL: linux
|
||||
|
||||
SHELL := env QT_BUILD_VERSION=$(QT_BUILD_VERSION) $(SHELL)
|
||||
QT_BUILD_VERSION ?= "5.13.4"
|
||||
|
||||
all: clean linux windows android
|
||||
|
||||
clean:
|
||||
find -iname "moc*" | xargs rm
|
||||
rm -r vendor || true
|
||||
find -type f -iname "moc*" | xargs rm
|
||||
find -iname "rcc*" | xargs rm
|
||||
|
||||
linux:
|
||||
date
|
||||
qtdeploy -qt_version $(QT_BUILD_VERSION) build linux 2>&1 | tee qtdeploy.log | pv
|
||||
date
|
||||
cp -R assets deploy/linux/
|
||||
|
||||
windows:
|
||||
date
|
||||
qtdeploy -qt_version $(QT_BUILD_VERSION) build windows 2>&1 | tee qtdeploy.log | pv
|
||||
date
|
||||
cp -R assets deploy/windows/
|
||||
|
||||
android:
|
||||
cp -R assets android/
|
||||
date
|
||||
## TODO have this also include AndroidExtras (see ANDROID_DEBUGGING) for full notes.
|
||||
env ANDROID_MODULES_INCLUDE="Core,Gui,Svg,QuickWidgets,Xml" qtdeploy -debug -qt_version $(QT_BUILD_VERSION) build android 2>&1 | tee qtdeploy.log | pv
|
||||
date
|
||||
|
||||
|
|
|
@ -0,0 +1,10 @@
|
|||
# Settings List / Flickable
|
||||
|
||||
Content not scrolling: Flickable does some reparenting behind the scenes and so
|
||||
in the top level child of the Flickable you will need:
|
||||
|
||||
parent: root.contentItem
|
||||
|
||||
And in the flickable you will need to set the contentHeight:
|
||||
|
||||
contentHeight: <childId>.height + <padding>
|
15
README.md
|
@ -1,5 +1,5 @@
|
|||
# Cwtch - UI
|
||||
|
||||
|
||||
This codebase provides a graphical user interface for Desktop and Android for [Cwtch: Privacy Preserving Infrastructure for Asynchronous, Decentralized and Metadata Resistant Applications](https://git.openprivacy.ca/cwtch.im/cwtch)
|
||||
|
||||
# Security
|
||||
|
@ -15,11 +15,16 @@ The UI is built using QT so you will need the development libraries and tools fo
|
|||
|
||||
This code relies on [therecipe/qt](https://github.com/therecipe/qt) before getting started consult the [Installation](https://github.com/therecipe/qt/wiki/Installation) and [Getting Started](https://github.com/therecipe/qt/wiki/Getting-Started) documentation to get that up and running. It will make building this much easier.
|
||||
|
||||
We are aiming to use Go module support for versioning but it has some issues working with therecipe/qt so we aren't there yet. For now build with GO111MODULE=off using just the GOPATH for dependancies.
|
||||
Cwtch UI uses the Go module system for dependancies, and git submodules for includin QML components
|
||||
|
||||
```
|
||||
git submodule init
|
||||
git submodule update
|
||||
```
|
||||
|
||||
## Linux
|
||||
|
||||
go get -d
|
||||
go mod vendor
|
||||
qtdeploy build linux
|
||||
./deploy/linux/ui -local -debug 2>&1 | grep -v 'Detected anchors on an item that is managed by a layout.'
|
||||
|
||||
|
@ -33,7 +38,7 @@ The grep statement filters out some QML noise.
|
|||
|
||||
We supply an arm-pie version of tor in `android/libs/armeabi-v7a` with the name `libtor.so`
|
||||
|
||||
go get -d
|
||||
go mod vendor
|
||||
qtdeploy -docker build android
|
||||
adb install deploy/android/build-debug.apk
|
||||
|
||||
|
@ -52,7 +57,7 @@ We supply an arm-pie version of tor in `android/libs/armeabi-v7a` with the name
|
|||
|
||||
If all that is done, then check out cwtch.im/ui
|
||||
|
||||
go get -d
|
||||
go mod vendor
|
||||
qtdeploy
|
||||
deploy/windows/ui
|
||||
|
||||
|
|
|
@ -1,9 +1,20 @@
|
|||
<?xml version="1.0"?>
|
||||
<manifest package="ca.openprivacy.cwtch.ui" xmlns:android="http://schemas.android.com/apk/res/android" android:versionName="1.0" android:versionCode="1" android:installLocation="auto">
|
||||
<application android:hardwareAccelerated="true" android:name="org.qtproject.qt5.android.bindings.QtApplication" android:label="cwtch" android:icon="@drawable/ic_launcher">
|
||||
<manifest package="ca.openprivacy.cwtch.ui" xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:versionName="1.0"
|
||||
android:versionCode="4"
|
||||
android:installLocation="auto">
|
||||
<application android:hardwareAccelerated="true"
|
||||
android:name="org.qtproject.qt5.android.bindings.QtApplication"
|
||||
android:label="cwtch"
|
||||
android:icon="@drawable/knot">
|
||||
|
||||
<activity android:configChanges="orientation|uiMode|screenLayout|screenSize|smallestScreenSize|layoutDirection|locale|fontScale|keyboard|keyboardHidden|navigation"
|
||||
android:name="ca.openprivacy.cwtch.ui.CwtchActivity"
|
||||
android:label="cwtch" android:theme="@style/AppTheme" android:screenOrientation="unspecified" android:launchMode="singleTop" android:windowSoftInputMode="adjustResize">
|
||||
android:label="cwtch"
|
||||
android:theme="@style/AppTheme"
|
||||
android:screenOrientation="unspecified"
|
||||
android:launchMode="singleTop"
|
||||
android:windowSoftInputMode="adjustResize">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN"/>
|
||||
<category android:name="android.intent.category.LAUNCHER"/>
|
||||
|
@ -110,7 +121,7 @@
|
|||
|
||||
</application>
|
||||
|
||||
<uses-sdk android:minSdkVersion="21" /><!-- android:targetSdkVersion="26"/> -->
|
||||
<uses-sdk android:minSdkVersion="23" android:targetSdkVersion="29"/> -->
|
||||
<supports-screens android:largeScreens="true" android:normalScreens="true" android:anyDensity="true" android:smallScreens="true"/>
|
||||
|
||||
<uses-permission android:name="android.permission.INTERNET"/>
|
||||
|
|
|
@ -0,0 +1,150 @@
|
|||
buildscript {
|
||||
repositories {
|
||||
google()
|
||||
jcenter()
|
||||
}
|
||||
|
||||
dependencies {
|
||||
classpath 'com.android.tools.build:gradle:3.2.0'
|
||||
}
|
||||
}
|
||||
|
||||
repositories {
|
||||
google()
|
||||
jcenter()
|
||||
}
|
||||
|
||||
apply plugin: 'com.android.application'
|
||||
|
||||
dependencies {
|
||||
implementation fileTree(dir: 'libs', include: ['*.jar', '*.aar'])
|
||||
}
|
||||
|
||||
android {
|
||||
/*******************************************************
|
||||
* The following variables:
|
||||
* - androidBuildToolsVersion,
|
||||
* - androidCompileSdkVersion
|
||||
* - qt5AndroidDir - holds the path to qt android files
|
||||
* needed to build any Qt application
|
||||
* on Android.
|
||||
*
|
||||
* are defined in gradle.properties file. This file is
|
||||
* updated by QtCreator and androiddeployqt tools.
|
||||
* Changing them manually might break the compilation!
|
||||
*******************************************************/
|
||||
|
||||
compileSdkVersion androidCompileSdkVersion.toInteger()
|
||||
|
||||
buildToolsVersion '28.0.3'
|
||||
|
||||
sourceSets {
|
||||
main {
|
||||
manifest.srcFile 'AndroidManifest.xml'
|
||||
java.srcDirs = [qt5AndroidDir + '/src', 'src', 'java']
|
||||
aidl.srcDirs = [qt5AndroidDir + '/src', 'src', 'aidl']
|
||||
res.srcDirs = [qt5AndroidDir + '/res', 'res']
|
||||
resources.srcDirs = ['src']
|
||||
renderscript.srcDirs = ['src']
|
||||
assets.srcDirs = ['assets']
|
||||
jniLibs.srcDirs = ['libs']
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// kinda of cheaty, would prefer to use if (System.getEnv("GOARCH") == "arm64") {
|
||||
// but it doesn't want to work in this context
|
||||
if (qt5AndroidDir.contains("arm64")) {
|
||||
|
||||
splits {
|
||||
|
||||
// Configures multiple APKs based on ABI.
|
||||
abi {
|
||||
|
||||
// Enables building multiple APKs per ABI.
|
||||
enable true
|
||||
|
||||
// By default all ABIs are included, so use reset() and include to specify that we only
|
||||
// want APKs for x86 and x86_64.
|
||||
|
||||
// Resets the list of ABIs that Gradle should create APKs for to none.
|
||||
reset()
|
||||
|
||||
// Specifies a list of ABIs that Gradle should create APKs for.
|
||||
// Note that because of the way that therecipe/qt bundles libraries
|
||||
// only the specific architecture specified by GOARCH /GOARM will *actually*
|
||||
// work so we currently have to do separate builds for each arch - this needs to be fixed.
|
||||
include "arm64-v8a"
|
||||
|
||||
// Specifies that we do not want to also generate a universal APK that includes all ABIs.
|
||||
// QT deploy has to be run twice to generate the libgo_base.so for each arch
|
||||
universalApk false
|
||||
}
|
||||
}
|
||||
|
||||
task linkBuildDebugArm64(type: Exec) {
|
||||
workingDir '../build/build/outputs/apk/debug/'
|
||||
commandLine 'ln', '-sf', 'build-arm64-v8a-debug.apk', 'build-debug.apk'
|
||||
}
|
||||
|
||||
task renameBuildReleaseArm64(type: Exec) {
|
||||
workingDir '../build/build/outputs/apk/release/'
|
||||
commandLine 'mv', 'build-arm64-v8a-release-unsigned.apk', 'build-release-unsigned.apk'
|
||||
}
|
||||
|
||||
afterEvaluate {
|
||||
assembleDebug.finalizedBy(linkBuildDebugArm64)
|
||||
assembleRelease.finalizedBy(renameBuildReleaseArm64)
|
||||
}
|
||||
|
||||
} else {
|
||||
|
||||
splits {
|
||||
|
||||
// Configures multiple APKs based on ABI.
|
||||
abi {
|
||||
|
||||
// Enables building multiple APKs per ABI.
|
||||
enable true
|
||||
|
||||
// By default all ABIs are included, so use reset() and include to specify that we only
|
||||
// want APKs for x86 and x86_64.
|
||||
|
||||
// Resets the list of ABIs that Gradle should create APKs for to none.
|
||||
reset()
|
||||
|
||||
// Specifies a list of ABIs that Gradle should create APKs for.
|
||||
// Note that because of the way that therecipe/qt bundles libraries
|
||||
// only the specific architecture specified by GOARCH /GOARM will *actually*
|
||||
// work so we currently have to do separate builds for each arch - this needs to be fixed.
|
||||
include "armeabi-v7a"
|
||||
|
||||
// Specifies that we do not want to also generate a universal APK that includes all ABIs.
|
||||
// QT deploy has to be run twice to generate the libgo_base.so for each arch
|
||||
universalApk false
|
||||
}
|
||||
}
|
||||
|
||||
task linkBuildDebugArm7(type: Exec) {
|
||||
workingDir '../build/build/outputs/apk/debug/'
|
||||
commandLine 'ln', '-sf', 'build-armeabi-v7a-debug.apk', 'build-debug.apk'
|
||||
}
|
||||
|
||||
task renameBuildReleaseArm7(type: Exec) {
|
||||
workingDir '../build/build/outputs/apk/release/'
|
||||
commandLine 'mv', 'build-armeabi-v7a-release-unsigned.apk', 'build-release-unsigned.apk'
|
||||
}
|
||||
|
||||
afterEvaluate {
|
||||
assembleDebug.finalizedBy(linkBuildDebugArm7)
|
||||
assembleRelease.finalizedBy(renameBuildReleaseArm7)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
lintOptions {
|
||||
abortOnError true
|
||||
}
|
||||
|
||||
}
|
||||
|
After Width: | Height: | Size: 5.0 KiB |
After Width: | Height: | Size: 3.7 KiB |
|
@ -2,11 +2,14 @@
|
|||
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item>
|
||||
<shape android:shape="rectangle" >
|
||||
<solid android:color="#FFFFFFFF"/>
|
||||
<solid android:color="#FFFDF3FC"/>
|
||||
</shape>
|
||||
</item>
|
||||
|
||||
<!-- It would be nice to find a way to use a transition and trigger it but I haven't yet -->
|
||||
<item>
|
||||
<bitmap android:src="@drawable/cwtch_logo"
|
||||
android:gravity="center" />
|
||||
<bitmap android:src="@drawable/splash_350"
|
||||
android:gravity="center" />
|
||||
</item>
|
||||
|
||||
</layer-list>
|
||||
|
|
After Width: | Height: | Size: 13 KiB |
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<style name="AppTheme" parent="@android:style/Theme.DeviceDefault.Light.NoActionBar">
|
||||
<style name="AppTheme" parent="@android:style/Theme.NoTitleBar.Fullscreen">
|
||||
<item name="android:windowBackground">@drawable/splash</item>
|
||||
</style>
|
||||
</resources>
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="loading_tor">Loading tor...</string>
|
||||
</resources>
|
||||
|
|
@ -23,20 +23,13 @@ import static android.app.Notification.CATEGORY_SERVICE;
|
|||
public class CwtchActivity extends org.qtproject.qt5.android.bindings.QtActivity
|
||||
{
|
||||
private static NotificationManager m_notificationManager;
|
||||
private static Notification.Builder m_builder;
|
||||
private static Notification.Builder m_builderOngoing;
|
||||
private static CwtchActivity m_instance;
|
||||
|
||||
private static int PRIORITY_MIN = -2; // From NotificationCompat
|
||||
private static int PRIORITY_DEFAULT = 0; // From NotificationCompat
|
||||
|
||||
private static String NOTIFICATION_CHANNEL_ID = "cwtch_notification_channel";
|
||||
private static int CONTENT_NOTIFICATION_ID = 2;
|
||||
private static String CONTENT_NOTIFICATION_ID_NAME = "Notifications from Peers";
|
||||
|
||||
private static int ONGOING_NOTIFICATION_ID = 0;
|
||||
private static String ONGOING_NOTIFICATION_ID_NAME = "ongoing";
|
||||
|
||||
private static int CONTENT_NOTIFICATION_ID = 1;
|
||||
private static String CONTENT_NOTIFICATION_ID_NAME = "content";
|
||||
|
||||
|
||||
public CwtchActivity() {
|
||||
|
@ -57,66 +50,47 @@ public class CwtchActivity extends org.qtproject.qt5.android.bindings.QtActivity
|
|||
}
|
||||
}
|
||||
|
||||
public static void notify(String s)
|
||||
public static void notify(String s, String o)
|
||||
{
|
||||
if (m_notificationManager == null) {
|
||||
m_notificationManager = (NotificationManager)m_instance.getSystemService(Context.NOTIFICATION_SERVICE);
|
||||
createNotificationChannel();
|
||||
}
|
||||
|
||||
if (m_builder == null) {
|
||||
m_builder = new Notification.Builder(m_instance);
|
||||
m_builder.setSmallIcon(R.drawable.ic_launcher);
|
||||
m_builder.setContentTitle("Cwtch");
|
||||
m_builder.setPriority(PRIORITY_DEFAULT);
|
||||
// Apparently thr android documentation is just wrong and we need to provide a setGroupSummary
|
||||
// notification regardless of targetted support version...
|
||||
Notification groupSummary =
|
||||
new Notification.Builder(m_instance)
|
||||
.setContentTitle("Cwtch")
|
||||
.setContentText("New Message from Peer: " + o)
|
||||
.setGroupSummary(true)
|
||||
.setWhen(System.currentTimeMillis())
|
||||
.setSmallIcon(R.drawable.ic_launcher)
|
||||
.setGroup(NOTIFICATION_CHANNEL_ID)
|
||||
.setChannelId(NOTIFICATION_CHANNEL_ID)
|
||||
.build();
|
||||
m_notificationManager.notify(1, groupSummary);
|
||||
|
||||
}
|
||||
Notification.Builder m_builder = new Notification.Builder(m_instance)
|
||||
.setSmallIcon(R.drawable.ic_launcher)
|
||||
.setChannelId(NOTIFICATION_CHANNEL_ID)
|
||||
.setGroup(NOTIFICATION_CHANNEL_ID)
|
||||
.setWhen(System.currentTimeMillis())
|
||||
.setAutoCancel(true)
|
||||
.setContentTitle("New Message from Peer: " + o)
|
||||
.setContentText("[redacted: Open Cwtch App to see the Message]");
|
||||
m_notificationManager.notify(CONTENT_NOTIFICATION_ID++, m_builder.build());
|
||||
|
||||
m_builder.setContentText(s);
|
||||
m_notificationManager.notify(CONTENT_NOTIFICATION_ID, m_builder.build());
|
||||
}
|
||||
|
||||
public static void ongoingNotify(String s)
|
||||
{
|
||||
if (m_notificationManager == null) {
|
||||
m_notificationManager = (NotificationManager)m_instance.getSystemService(Context.NOTIFICATION_SERVICE);
|
||||
createNotificationChannel();
|
||||
}
|
||||
|
||||
if (m_builderOngoing == null) {
|
||||
m_builderOngoing = new Notification.Builder(m_instance);
|
||||
m_builderOngoing.setSmallIcon(R.drawable.ic_launcher);
|
||||
m_builderOngoing.setContentTitle("Cwtch");
|
||||
m_builderOngoing.setPriority(PRIORITY_MIN);
|
||||
|
||||
m_builderOngoing.setWhen(0); // Don't show the time
|
||||
m_builderOngoing.setOngoing(true);
|
||||
if (SDK_INT >= 21) {
|
||||
m_builderOngoing.setCategory(CATEGORY_SERVICE);
|
||||
//m_builder.setVisibility(VISIBILITY_SECRET);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
m_builderOngoing.setContentText(s);
|
||||
m_notificationManager.notify(ONGOING_NOTIFICATION_ID, m_builderOngoing.build());
|
||||
}
|
||||
|
||||
private static void createNotificationChannel() {
|
||||
// Create the NotificationChannel, but only on API 26+ because
|
||||
// the NotificationChannel class is new and not in the support library
|
||||
if (SDK_INT >= 26) {
|
||||
String description = "Cwtch Ongoing Notification Channel";
|
||||
int importance = NotificationManager.IMPORTANCE_LOW;
|
||||
NotificationChannel channel = new NotificationChannel(NOTIFICATION_CHANNEL_ID, ONGOING_NOTIFICATION_ID_NAME, importance);
|
||||
channel.setDescription(description);
|
||||
// Register the channel with the system; you can't change the importance
|
||||
// or other notification behaviors after this
|
||||
m_notificationManager.createNotificationChannel(channel);
|
||||
|
||||
description = "Cwtch Content Notification Channel";
|
||||
importance = NotificationManager.IMPORTANCE_DEFAULT;
|
||||
channel = new NotificationChannel(NOTIFICATION_CHANNEL_ID, CONTENT_NOTIFICATION_ID_NAME, importance);
|
||||
String description = "Cwtch Notification Channel";
|
||||
NotificationChannel channel = new NotificationChannel(NOTIFICATION_CHANNEL_ID, CONTENT_NOTIFICATION_ID_NAME, NotificationManager.IMPORTANCE_HIGH);
|
||||
channel.setDescription(description);
|
||||
// Register the channel with the system; you can't change the importance
|
||||
// or other notification behaviors after this
|
||||
|
|
|
@ -0,0 +1,19 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 24.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
viewBox="0 0 24 24" style="enable-background:new 0 0 24 24;" xml:space="preserve">
|
||||
<style type="text/css">
|
||||
.st0{fill:none;}
|
||||
.st1{fill:#BCB6BC;}
|
||||
</style>
|
||||
<path class="st0" d="M0,0h24v24H0V0z"/>
|
||||
<g>
|
||||
<path class="st0" d="M12,5c-1.7,0-3,1.3-3,3s1.3,3,3,3c0.1,0,0.1,0,0.1,0l2.7-4C14.4,5.8,13.3,5,12,5z"/>
|
||||
<path class="st0" d="M12,19.2c2.5,0,4.7-1.3,6-3.2c0-1.7-3.1-2.8-5.2-3l-3.8,5.6C10,19,11,19.2,12,19.2z"/>
|
||||
<path class="st0" d="M6,16c0.4,0.7,1,1.2,1.6,1.7l3.2-4.7C8.7,13.3,6,14.3,6,16z"/>
|
||||
<path class="st1" d="M6,16c0-1.6,2.7-2.7,4.8-3l1.4-2c-0.1,0-0.1,0-0.1,0c-1.7,0-3-1.3-3-3s1.3-3,3-3c1.3,0,2.4,0.8,2.8,2l2.4-3.5
|
||||
C15.7,2.5,13.9,2,12,2C6.5,2,2,6.5,2,12c0,3.3,1.6,6.2,4.1,8l1.6-2.3C7,17.2,6.4,16.6,6,16z"/>
|
||||
<path class="st1" d="M18.5,4.4L12.8,13c2.1,0.2,5.1,1.3,5.2,3c-1.3,1.9-3.5,3.2-6,3.2c-1,0-2-0.2-2.9-0.6l-1.6,2.4
|
||||
C8.8,21.6,10.4,22,12,22c5.5,0,10-4.5,10-10C22,9,20.7,6.3,18.5,4.4z"/>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 1.0 KiB |
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0V0z"/><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 3c1.66 0 3 1.34 3 3s-1.34 3-3 3-3-1.34-3-3 1.34-3 3-3zm0 14.2c-2.5 0-4.71-1.28-6-3.22.03-1.99 4-3.08 6-3.08 1.99 0 5.97 1.09 6 3.08-1.29 1.94-3.5 3.22-6 3.22z"/></svg>
|
After Width: | Height: | Size: 367 B |
After Width: | Height: | Size: 774 B |
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 0 24 24" width="24"><path d="M0 0h24v24H0V0z" fill="none"/><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zM7.07 18.28c.43-.9 3.05-1.78 4.93-1.78s4.51.88 4.93 1.78C15.57 19.36 13.86 20 12 20s-3.57-.64-4.93-1.72zm11.29-1.45c-1.43-1.74-4.9-2.33-6.36-2.33s-4.93.59-6.36 2.33C4.62 15.49 4 13.82 4 12c0-4.41 3.59-8 8-8s8 3.59 8 8c0 1.82-.62 3.49-1.64 4.83zM12 6c-1.94 0-3.5 1.56-3.5 3.5S10.06 13 12 13s3.5-1.56 3.5-3.5S13.94 6 12 6zm0 5c-.83 0-1.5-.67-1.5-1.5S11.17 8 12 8s1.5.67 1.5 1.5S12.83 11 12 11z"/></svg>
|
After Width: | Height: | Size: 597 B |
After Width: | Height: | Size: 1.1 KiB |
|
@ -0,0 +1,22 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 24.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
viewBox="0 0 24 24" style="enable-background:new 0 0 24 24;" xml:space="preserve">
|
||||
<style type="text/css">
|
||||
.st0{fill:none;}
|
||||
</style>
|
||||
<path class="st0" d="M0,0h24v24H0V0z"/>
|
||||
<g>
|
||||
<circle class="st0" cx="12" cy="9.5" r="1.5"/>
|
||||
<path class="st0" d="M10.7,12.7c-1.3-0.5-2.2-1.8-2.2-3.2C8.5,7.6,10.1,6,12,6c1.7,0,3.2,1.3,3.4,2.9l2.7-2.1C16.6,5.1,14.4,4,12,4
|
||||
c-4.4,0-8,3.6-8,8c0,1.8,0.6,3.5,1.6,4.7L10.7,12.7z"/>
|
||||
<path class="st0" d="M12,16.5c-1.9,0-4.5,0.9-4.9,1.8c1.3,1.1,3,1.7,4.9,1.7s3.6-0.6,4.9-1.7C16.5,17.4,13.9,16.5,12,16.5z"/>
|
||||
<path class="st0" d="M18.6,7.4l-3.1,2.4C15.3,11.6,13.8,13,12,13c-0.1,0-0.3,0-0.4,0l-2.5,2c1.1-0.3,2.2-0.4,2.9-0.4
|
||||
c1.5,0,4.9,0.6,6.4,2.3c1-1.3,1.6-3,1.6-4.8C20,10.3,19.5,8.7,18.6,7.4z"/>
|
||||
<path d="M12,3.4c-4.7,0-8.6,3.8-8.6,8.6c0,4.7,3.8,8.6,8.6,8.6c4.7,0,8.6-3.8,8.6-8.6C20.6,7.3,16.7,3.4,12,3.4z M12,4
|
||||
c2.4,0,4.6,1.1,6.1,2.8l-2.7,2.1C15.2,7.3,13.7,6,12,6c-1.9,0-3.5,1.6-3.5,3.5c0,1.4,0.9,2.7,2.2,3.2l-5.1,4c-1-1.3-1.6-3-1.6-4.7
|
||||
C4,7.6,7.6,4,12,4z M10.5,9.5C10.5,8.7,11.2,8,12,8s1.5,0.7,1.5,1.5S12.8,11,12,11S10.5,10.3,10.5,9.5z M12,20
|
||||
c-1.9,0-3.6-0.6-4.9-1.7c0.4-0.9,3-1.8,4.9-1.8s4.5,0.9,4.9,1.8C15.6,19.4,13.9,20,12,20z M12,14.5c-0.7,0-1.8,0.1-2.9,0.4l2.5-2
|
||||
c0.1,0,0.3,0,0.4,0c1.8,0,3.3-1.4,3.5-3.1l3.1-2.4C19.5,8.7,20,10.3,20,12c0,1.8-0.6,3.5-1.6,4.8C16.9,15.1,13.5,14.5,12,14.5z"/>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 1.6 KiB |
After Width: | Height: | Size: 1.0 KiB |
|
@ -0,0 +1,20 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 24.0.2, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
viewBox="0 0 24 24" style="enable-background:new 0 0 24 24;" xml:space="preserve">
|
||||
<style type="text/css">
|
||||
.st0{fill:none;}
|
||||
</style>
|
||||
<path class="st0" d="M0,0h24v24H0V0z"/>
|
||||
<g>
|
||||
<circle class="st0" cx="12" cy="9.5" r="1.5"/>
|
||||
<path class="st0" d="M12,4c-4.4,0-8,3.6-8,8c0,1.8,0.6,3.5,1.6,4.8c1.4-1.7,4.9-2.3,6.4-2.3s4.9,0.6,6.4,2.3c1-1.3,1.6-3,1.6-4.8
|
||||
C20,7.6,16.4,4,12,4z M12,13c-1.9,0-3.5-1.6-3.5-3.5S10.1,6,12,6s3.5,1.6,3.5,3.5S13.9,13,12,13z"/>
|
||||
<path class="st0" d="M12,16.5c-1.9,0-4.5,0.9-4.9,1.8C8.4,19.4,10.1,20,12,20s3.6-0.6,4.9-1.7C16.5,17.4,13.9,16.5,12,16.5z"/>
|
||||
<path d="M12,6c-1.9,0-3.5,1.6-3.5,3.5S10.1,13,12,13s3.5-1.6,3.5-3.5S13.9,6,12,6z M12,11c-0.8,0-1.5-0.7-1.5-1.5S11.2,8,12,8
|
||||
s1.5,0.7,1.5,1.5S12.8,11,12,11z"/>
|
||||
<path d="M12,3.4c-4.7,0-8.6,3.8-8.6,8.6c0,4.7,3.8,8.6,8.6,8.6c4.7,0,8.6-3.8,8.6-8.6C20.6,7.3,16.7,3.4,12,3.4z M12,20
|
||||
c-1.9,0-3.6-0.6-4.9-1.7c0.4-0.9,3-1.8,4.9-1.8s4.5,0.9,4.9,1.8C15.6,19.4,13.9,20,12,20z M12,14.5c-1.5,0-4.9,0.6-6.4,2.3
|
||||
c-1-1.3-1.6-3-1.6-4.8c0-4.4,3.6-8,8-8s8,3.6,8,8c0,1.8-0.6,3.5-1.6,4.8C16.9,15.1,13.5,14.5,12,14.5z"/>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 998 B |
|
@ -0,0 +1,17 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 24.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
viewBox="0 0 24 24" style="enable-background:new 0 0 24 24;" xml:space="preserve">
|
||||
<style type="text/css">
|
||||
.st0{fill:none;}
|
||||
</style>
|
||||
<g id="Layer_1">
|
||||
<path class="st0" d="M0,0h24v24H0V0z"/>
|
||||
<g>
|
||||
<circle cx="12" cy="8" r="3"/>
|
||||
<path d="M12,12.9c-2,0-6,1.1-6,3.1c1.3,1.9,3.5,3.2,6,3.2s4.7-1.3,6-3.2C18,14,14,12.9,12,12.9z"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="Layer_2">
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 635 B |
After Width: | Height: | Size: 396 B |
|
@ -0,0 +1,23 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 24.0.2, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
viewBox="0 0 24 24" style="enable-background:new 0 0 24 24;" xml:space="preserve">
|
||||
<style type="text/css">
|
||||
.st0{fill:none;}
|
||||
.st1{fill:#FF0000;}
|
||||
</style>
|
||||
<g>
|
||||
<path class="st0" d="M5.6,16.8C5.6,16.8,5.6,16.8,5.6,16.8c1.5-1.7,4.9-2.3,6.4-2.3C10.5,14.5,7.1,15.1,5.6,16.8z"/>
|
||||
<circle class="st0" cx="12" cy="9.5" r="1.5"/>
|
||||
<path class="st0" d="M12,16.5c-1.9,0-4.4,0.9-4.9,1.8c1.3,1.1,3,1.7,4.9,1.7s3.5-0.6,4.9-1.7C16.4,17.4,13.9,16.5,12,16.5z"/>
|
||||
<path d="M12,6c-1.9,0-3.5,1.6-3.5,3.5S10.1,13,12,13s3.5-1.6,3.5-3.5S13.9,6,12,6z M12,11c-0.8,0-1.5-0.7-1.5-1.5S11.2,8,12,8
|
||||
s1.5,0.7,1.5,1.5S12.8,11,12,11z"/>
|
||||
<path d="M12,11c0.8,0,1.5-0.7,1.5-1.5C13.5,10.3,12.8,11,12,11z"/>
|
||||
<path d="M10.5,9.5c0,0.8,0.7,1.5,1.5,1.5C11.2,11,10.5,10.3,10.5,9.5z"/>
|
||||
<path d="M12,8c0.8,0,1.5,0.7,1.5,1.5C13.5,8.7,12.8,8,12,8z"/>
|
||||
<path d="M12,8c-0.8,0-1.5,0.7-1.5,1.5C10.5,8.7,11.2,8,12,8z"/>
|
||||
<path d="M5.6,16.8c0.4,0.6,0.9,1.1,1.5,1.5c0.4-0.9,3-1.8,4.9-1.8c1.9,0,4.4,0.9,4.9,1.8c0.6-0.4,1.1-0.9,1.5-1.5
|
||||
c-1.5-1.7-4.9-2.3-6.4-2.3S7.2,15.1,5.6,16.8z"/>
|
||||
<path class="st1" d="M5.6,16.8C5.6,16.8,5.6,16.8,5.6,16.8C5.6,16.8,5.6,16.8,5.6,16.8C5.6,16.8,5.6,16.8,5.6,16.8z"/>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 1.4 KiB |
After Width: | Height: | Size: 478 B |
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0V0z"/><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm5 11h-4v4h-2v-4H7v-2h4V7h2v4h4v2z"/></svg>
|
After Width: | Height: | Size: 240 B |
After Width: | Height: | Size: 512 B |
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M16.5 6v11.5c0 2.21-1.79 4-4 4s-4-1.79-4-4V5c0-1.38 1.12-2.5 2.5-2.5s2.5 1.12 2.5 2.5v10.5c0 .55-.45 1-1 1s-1-.45-1-1V6H10v9.5c0 1.38 1.12 2.5 2.5 2.5s2.5-1.12 2.5-2.5V5c0-2.21-1.79-4-4-4S7 2.79 7 5v12.5c0 3.04 2.46 5.5 5.5 5.5s5.5-2.46 5.5-5.5V6h-1.5z"/></svg>
|
After Width: | Height: | Size: 353 B |
After Width: | Height: | Size: 530 B |
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 0 24 24" width="24"><path d="M0 0h24v24H0V0z" fill="none"/><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zM4 12c0-4.42 3.58-8 8-8 1.85 0 3.55.63 4.9 1.69L5.69 16.9C4.63 15.55 4 13.85 4 12zm8 8c-1.85 0-3.55-.63-4.9-1.69L18.31 7.1C19.37 8.45 20 10.15 20 12c0 4.42-3.58 8-8 8z"/></svg>
|
After Width: | Height: | Size: 373 B |
After Width: | Height: | Size: 868 B |
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 0 24 24" width="24"><path d="M0 0h24v24H0V0z" fill="none"/><path d="M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41L9 16.17z"/></svg>
|
After Width: | Height: | Size: 197 B |
After Width: | Height: | Size: 258 B |
After Width: | Height: | Size: 393 B |
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0V0z"/><path d="M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12l4.58-4.59z"/></svg>
|
After Width: | Height: | Size: 195 B |
After Width: | Height: | Size: 234 B |
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 0 24 24" width="24"><path d="M0 0h24v24H0V0z" fill="none"/><path d="M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41z"/></svg>
|
After Width: | Height: | Size: 249 B |
After Width: | Height: | Size: 308 B |
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 0 24 24" width="24"><path d="M0 0h24v24H0V0z" fill="none"/><path d="M6 21h12V7H6v14zM19 4h-3.5l-1-1h-5l-1 1H5v2h14V4z"/></svg>
|
After Width: | Height: | Size: 189 B |
After Width: | Height: | Size: 166 B |
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 0 24 24" width="24"><path d="M0 0h24v24H0V0z" fill="none"/><path d="M9 16.2L4.8 12l-1.4 1.4L9 19 21 7l-1.4-1.4L9 16.2z"/></svg>
|
After Width: | Height: | Size: 190 B |
After Width: | Height: | Size: 270 B |
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 0 24 24" width="24"><path d="M0 0h24v24H0V0z" fill="none"/><path d="M11 18c0 1.1-.9 2-2 2s-2-.9-2-2 .9-2 2-2 2 .9 2 2zm-2-8c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0-6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm6 4c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"/></svg>
|
After Width: | Height: | Size: 431 B |
After Width: | Height: | Size: 218 B |
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0V0z"/><path d="M3 17.25V21h3.75L17.81 9.94l-3.75-3.75L3 17.25zM21.41 6.34l-3.75-3.75-2.53 2.54 3.75 3.75 2.53-2.54z"/></svg>
|
After Width: | Height: | Size: 240 B |
After Width: | Height: | Size: 268 B |
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0V0z"/><path d="M12 21.35l-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86-8.55 11.54L12 21.35z"/></svg>
|
After Width: | Height: | Size: 314 B |
After Width: | Height: | Size: 532 B |
Before Width: | Height: | Size: 826 B After Width: | Height: | Size: 826 B |
After Width: | Height: | Size: 33 KiB |
Before Width: | Height: | Size: 792 B After Width: | Height: | Size: 792 B |
After Width: | Height: | Size: 20 KiB |
Before Width: | Height: | Size: 766 B After Width: | Height: | Size: 766 B |
After Width: | Height: | Size: 23 KiB |
Before Width: | Height: | Size: 848 B After Width: | Height: | Size: 848 B |
After Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 599 B After Width: | Height: | Size: 599 B |
After Width: | Height: | Size: 18 KiB |
Before Width: | Height: | Size: 634 B After Width: | Height: | Size: 634 B |
After Width: | Height: | Size: 8.0 KiB |
Before Width: | Height: | Size: 564 B After Width: | Height: | Size: 564 B |
After Width: | Height: | Size: 7.5 KiB |
|
@ -0,0 +1,21 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 25.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
viewBox="0 0 24 24" style="enable-background:new 0 0 24 24;" xml:space="preserve">
|
||||
<style type="text/css">
|
||||
.st0{fill:none;}
|
||||
</style>
|
||||
<g>
|
||||
<path d="M8.9,12.9c-0.3,0-0.6,0-0.9,0c-2.1,0-6.3,1-6.3,3.1v2.2h5.4V16C7.1,14.7,7.8,13.7,8.9,12.9z"/>
|
||||
<path d="M8,11.1c1.5,0,2.7-1.2,2.7-2.7c0-1.5-1.2-2.7-2.7-2.7c-1.5,0-2.7,1.2-2.7,2.7C5.3,9.9,6.5,11.1,8,11.1z"/>
|
||||
<path d="M14.3,11.1c1.5,0,2.7-1.2,2.7-2.7c0-1.5-1.2-2.7-2.7-2.7s-2.7,1.2-2.7,2.7C11.7,9.9,12.8,11.1,14.3,11.1z"/>
|
||||
<path d="M15.4,13c-0.4,0-0.7-0.1-1.1-0.1c-2.1,0-6-0.4-6.3,3.1v2.2h4.8c0-0.2,0-0.3,0-0.5C12.8,15.8,13.8,14,15.4,13z"/>
|
||||
</g>
|
||||
<path class="st0" d="M0,0h24v24H0V0z"/>
|
||||
<path d="M22.1,18.3c0-0.1,0-0.3,0-0.4c0-0.2,0-0.3,0-0.4l1-0.7c0.1-0.1,0.1-0.2,0.1-0.3l-0.9-1.6c-0.1-0.1-0.2-0.1-0.3-0.1l-1.1,0.5
|
||||
c-0.2-0.2-0.5-0.3-0.8-0.4l-0.2-1.2c0-0.1-0.1-0.2-0.2-0.2h-1.8c-0.1,0-0.2,0.1-0.2,0.2l-0.2,1.2c-0.3,0.1-0.5,0.3-0.8,0.4l-1.1-0.5
|
||||
c-0.1,0-0.2,0-0.3,0.1l-0.9,1.6c-0.1,0.1,0,0.2,0.1,0.3l1,0.7c0,0.1,0,0.3,0,0.4s0,0.3,0,0.4l-1,0.7c-0.1,0.1-0.1,0.2-0.1,0.3
|
||||
l0.9,1.6c0.1,0.1,0.2,0.1,0.3,0.1l1.1-0.5c0.2,0.2,0.5,0.3,0.8,0.4l0.2,1.2c0,0.1,0.1,0.2,0.2,0.2h1.8c0.1,0,0.2-0.1,0.2-0.2L20,21
|
||||
c0.3-0.1,0.5-0.3,0.8-0.4l1.1,0.5c0.1,0,0.2,0,0.3-0.1l0.9-1.6c0.1-0.1,0-0.2-0.1-0.3L22.1,18.3z M18.7,19.5c-0.9,0-1.7-0.8-1.7-1.7
|
||||
c0-0.9,0.8-1.7,1.7-1.7c0.9,0,1.7,0.8,1.7,1.7C20.5,18.8,19.7,19.5,18.7,19.5z"/>
|
||||
</svg>
|
After Width: | Height: | Size: 1.6 KiB |
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0V0z"/><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-6h2v6zm0-8h-2V7h2v2z"/></svg>
|
After Width: | Height: | Size: 236 B |
After Width: | Height: | Size: 510 B |
After Width: | Height: | Size: 445 B |
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="none"><path d="M0 0h24v24H0V0z"/><path opacity=".87" d="M0 0h24v24H0V0z"/></g><path d="M20 8h-3V6.21c0-2.61-1.91-4.94-4.51-5.19C9.51.74 7 3.08 7 6v2H4v14h16V8zm-8 9c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2zM9 8V6c0-1.66 1.34-3 3-3s3 1.34 3 3v2H9z"/></svg>
|
After Width: | Height: | Size: 349 B |
After Width: | Height: | Size: 366 B |
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0V0z"/><path d="M20 8h-3V6.21c0-2.61-1.91-4.94-4.51-5.19C9.51.74 7 3.08 7 6h2c0-1.13.6-2.24 1.64-2.7C12.85 2.31 15 3.9 15 6v2H4v14h16V8zm-2 12H6V10h12v10zm-6-3c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2z"/></svg>
|
After Width: | Height: | Size: 327 B |
After Width: | Height: | Size: 376 B |
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 0 24 24" width="24"><path d="M0 0h24v24H0V0z" fill="none"/><path d="M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z"/></svg>
|
After Width: | Height: | Size: 185 B |
After Width: | Height: | Size: 134 B |
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0V0z"/><path d="M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8zm3.5-9c.83 0 1.5-.67 1.5-1.5S16.33 8 15.5 8 14 8.67 14 9.5s.67 1.5 1.5 1.5zm-7 0c.83 0 1.5-.67 1.5-1.5S9.33 8 8.5 8 7 8.67 7 9.5 7.67 11 8.5 11zm3.5 6.5c2.33 0 4.31-1.46 5.11-3.5H6.89c.8 2.04 2.78 3.5 5.11 3.5z"/></svg>
|
After Width: | Height: | Size: 493 B |
After Width: | Height: | Size: 984 B |
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 0 24 24" width="24"><path d="M0 0h24v24H0V0z" fill="none"/><path d="M12 8c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"/></svg>
|
After Width: | Height: | Size: 285 B |
After Width: | Height: | Size: 194 B |
|
@ -0,0 +1,13 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 24.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
viewBox="0 0 24 24" style="enable-background:new 0 0 24 24;" xml:space="preserve">
|
||||
<style type="text/css">
|
||||
.st0{fill:none;}
|
||||
</style>
|
||||
<path class="st0" d="M0,0h24v24H0V0z"/>
|
||||
<path id="Subtraction_1" d="M18.5,16L18.5,16L5.3,4.4C6.3,3.5,7.6,3,9,3c1.7,0,3.3,0.7,4.4,2c1.1-1.3,2.7-2,4.4-2
|
||||
C20.6,3,23,5.3,23,8.2c0,0,0,0.1,0,0.1c0,0.6-0.1,1.3-0.3,1.9c-0.2,0.7-0.5,1.3-0.9,1.9C21.1,13.2,20.1,14.4,18.5,16L18.5,16z"/>
|
||||
<path d="M20.2,18.6L2.3,3.1L1,4.6l2.6,2.2C3.2,7.5,3,8.4,3,9.2c0,3.7,3.3,6.6,8.3,11.2l1.4,1.3l1.4-1.3c0.9-0.8,1.7-1.6,2.5-2.3
|
||||
l2.3,2L20.2,18.6z"/>
|
||||
</svg>
|
After Width: | Height: | Size: 840 B |
After Width: | Height: | Size: 834 B |
|
@ -0,0 +1,19 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 25.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
viewBox="0 0 24 24" style="enable-background:new 0 0 24 24;" xml:space="preserve">
|
||||
<style type="text/css">
|
||||
.st0{fill:none;}
|
||||
</style>
|
||||
<path class="st0" d="M0,0h24v24H0V0z"/>
|
||||
<g>
|
||||
<path d="M13.6,13.8c-1-0.2-2-0.3-2.8-0.3c-2.7,0-8,1.3-8,4v2h9.8c-0.3-0.6-0.4-1.3-0.4-2.1C12.2,15.9,12.7,14.7,13.6,13.8z"/>
|
||||
<circle cx="10.8" cy="7.4" r="4"/>
|
||||
</g>
|
||||
<path d="M21.1,17.9c0-0.1,0-0.3,0-0.4c0-0.2,0-0.3,0-0.4l1-0.7c0.1-0.1,0.1-0.2,0.1-0.3l-0.9-1.6c-0.1-0.1-0.2-0.1-0.3-0.1l-1.1,0.5
|
||||
c-0.2-0.2-0.5-0.3-0.8-0.4l-0.2-1.2c0-0.1-0.1-0.2-0.2-0.2h-1.8c-0.1,0-0.2,0.1-0.2,0.2l-0.2,1.2c-0.3,0.1-0.5,0.3-0.8,0.4l-1.1-0.5
|
||||
c-0.1,0-0.2,0-0.3,0.1L13.4,16c-0.1,0.1,0,0.2,0.1,0.3l1,0.7c0,0.1,0,0.3,0,0.4c0,0.1,0,0.3,0,0.4l-1,0.7c-0.1,0.1-0.1,0.2-0.1,0.3
|
||||
l0.9,1.6c0.1,0.1,0.2,0.1,0.3,0.1l1.1-0.5c0.2,0.2,0.5,0.3,0.8,0.4l0.2,1.2c0,0.1,0.1,0.2,0.2,0.2h1.8c0.1,0,0.2-0.1,0.2-0.2
|
||||
l0.2-1.2c0.3-0.1,0.5-0.3,0.8-0.4l1.1,0.5c0.1,0,0.2,0,0.3-0.1l0.9-1.6c0.1-0.1,0-0.2-0.1-0.3L21.1,17.9z M17.7,19.2
|
||||
c-0.9,0-1.7-0.8-1.7-1.7c0-0.9,0.8-1.7,1.7-1.7c0.9,0,1.7,0.8,1.7,1.7C19.4,18.4,18.7,19.2,17.7,19.2z"/>
|
||||
</svg>
|
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 678 B |
Before Width: | Height: | Size: 787 B After Width: | Height: | Size: 787 B |
After Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 686 B After Width: | Height: | Size: 686 B |
After Width: | Height: | Size: 30 KiB |
Before Width: | Height: | Size: 974 B After Width: | Height: | Size: 974 B |
After Width: | Height: | Size: 9.7 KiB |
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 0 24 24" width="24"><path d="M0 0h24v24H0V0z" fill="none"/><path d="M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z"/></svg>
|
After Width: | Height: | Size: 374 B |
After Width: | Height: | Size: 616 B |
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0V0z"/><path d="M2.01 21L23 12 2.01 3 2 10l15 2-15 2 .01 7z"/></svg>
|
After Width: | Height: | Size: 183 B |
After Width: | Height: | Size: 262 B |