mirror of
https://github.com/chylex/Nextcloud-Desktop.git
synced 2025-05-12 05:34:09 +02:00
Merge branch 'master' into tuchfarber/fix_empty_file_error_wording
This commit is contained in:
commit
4d61a7c263
.drone.yml
.tx/nextcloud.client-desktop
admin/linux
client.qrcresources
shell_integration/libcloudproviders
src
gui
cloudproviders
sharedialog.cppsharedialog.hsharelinkwidget.cppsharelinkwidget.hsharelinkwidget.uiwizard
libsync
test
translations
client_bg.tsclient_ca.tsclient_cs.tsclient_da.tsclient_de.tsclient_el.tsclient_en.tsclient_en_GB.tsclient_eo.tsclient_es.tsclient_es_AR.tsclient_es_CL.tsclient_es_CO.tsclient_es_CR.tsclient_es_DO.tsclient_es_EC.tsclient_es_GT.tsclient_es_HN.tsclient_es_MX.tsclient_es_SV.tsclient_et.tsclient_eu.tsclient_fa.tsclient_fi.tsclient_fr.tsclient_gl.tsclient_he.tsclient_hu.tsclient_is.tsclient_it.tsclient_ja.tsclient_lt_LT.tsclient_lv.tsclient_nb_NO.tsclient_nl.tsclient_pl.tsclient_pt.tsclient_pt_BR.tsclient_ru.tsclient_sk.tsclient_sl.tsclient_sr.tsclient_sv.tsclient_th.tsclient_tr.tsclient_uk.tsclient_zh_CN.tsclient_zh_TW.ts
561
.drone.yml
561
.drone.yml
@ -1,228 +1,347 @@
|
||||
clone:
|
||||
git:
|
||||
image: plugins/git
|
||||
tags: true
|
||||
depth: 1
|
||||
kind: pipeline
|
||||
name: qt-5.7
|
||||
|
||||
pipeline:
|
||||
qt-5.7:
|
||||
image: nextcloudci/client-5.7:client-5.7-4
|
||||
commands:
|
||||
# Install QtKeyChain
|
||||
- /bin/bash -c "
|
||||
source /opt/qt57/bin/qt57-env.sh &&
|
||||
cd /tmp &&
|
||||
git clone https://github.com/frankosterfeld/qtkeychain.git &&
|
||||
cd qtkeychain &&
|
||||
git checkout v0.9.1 &&
|
||||
mkdir build &&
|
||||
cd build &&
|
||||
cmake ../ &&
|
||||
make &&
|
||||
make install"
|
||||
# Build client
|
||||
- /bin/bash -c "
|
||||
source /opt/qt57/bin/qt57-env.sh &&
|
||||
mkdir build &&
|
||||
cd build &&
|
||||
cmake -D NO_SHIBBOLETH=1 -DCMAKE_BUILD_TYPE=Debug -DUNIT_TESTING=1 ../ &&
|
||||
make &&
|
||||
useradd -m -s /bin/bash test &&
|
||||
chown -R test:test . &&
|
||||
su -c 'ctest --output-on-failure' test"
|
||||
when:
|
||||
matrix:
|
||||
TESTS: qt-5.7
|
||||
qt-5.8:
|
||||
image: nextcloudci/client-5.8:client-5.8-4
|
||||
commands:
|
||||
# Install QtKeyChain
|
||||
- /bin/bash -c "
|
||||
source /opt/qt58/bin/qt58-env.sh &&
|
||||
cd /tmp &&
|
||||
git clone https://github.com/frankosterfeld/qtkeychain.git &&
|
||||
cd qtkeychain &&
|
||||
git checkout v0.9.1 &&
|
||||
mkdir build &&
|
||||
cd build &&
|
||||
cmake ../ &&
|
||||
make &&
|
||||
make install"
|
||||
# Build client
|
||||
- /bin/bash -c "
|
||||
source /opt/qt58/bin/qt58-env.sh &&
|
||||
mkdir build &&
|
||||
cd build &&
|
||||
cmake -D NO_SHIBBOLETH=1 -DCMAKE_BUILD_TYPE=Debug -DUNIT_TESTING=1 ../ &&
|
||||
make &&
|
||||
useradd -m -s /bin/bash test &&
|
||||
chown -R test:test . &&
|
||||
su -c 'ctest --output-on-failure' test"
|
||||
when:
|
||||
matrix:
|
||||
TESTS: qt-5.8
|
||||
qt-5.9:
|
||||
image: nextcloudci/client-5.9:client-5.9-5
|
||||
commands:
|
||||
# Install QtKeyChain
|
||||
- /bin/bash -c "
|
||||
source /opt/qt59/bin/qt59-env.sh &&
|
||||
cd /tmp &&
|
||||
git clone https://github.com/frankosterfeld/qtkeychain.git &&
|
||||
cd qtkeychain &&
|
||||
git checkout v0.9.1 &&
|
||||
mkdir build &&
|
||||
cd build &&
|
||||
cmake ../ &&
|
||||
make &&
|
||||
make install"
|
||||
# Build client
|
||||
- /bin/bash -c "
|
||||
source /opt/qt59/bin/qt59-env.sh &&
|
||||
mkdir build &&
|
||||
cd build &&
|
||||
cmake -D NO_SHIBBOLETH=1 -DCMAKE_BUILD_TYPE=Debug -DUNIT_TESTING=1 ../ &&
|
||||
make &&
|
||||
useradd -m -s /bin/bash test &&
|
||||
chown -R test:test . &&
|
||||
su -c 'ctest --output-on-failure' test"
|
||||
when:
|
||||
matrix:
|
||||
TESTS: qt-5.9
|
||||
qt-5.10:
|
||||
image: nextcloudci/client-5.10:client-5.10-3
|
||||
commands:
|
||||
# Install QtKeyChain
|
||||
- /bin/bash -c "
|
||||
export CC=gcc-7 &&
|
||||
export CXX=g++-7 &&
|
||||
source /opt/qt510/bin/qt510-env.sh &&
|
||||
cd /tmp &&
|
||||
git clone https://github.com/frankosterfeld/qtkeychain.git &&
|
||||
cd qtkeychain &&
|
||||
git checkout v0.9.1 &&
|
||||
mkdir build &&
|
||||
cd build &&
|
||||
cmake ../ &&
|
||||
make &&
|
||||
make install"
|
||||
# Build client
|
||||
- /bin/bash -c "
|
||||
export CC=gcc-7 &&
|
||||
export CXX=g++-7 &&
|
||||
source /opt/qt510/bin/qt510-env.sh &&
|
||||
mkdir build &&
|
||||
cd build &&
|
||||
cmake -D NO_SHIBBOLETH=1 -DCMAKE_BUILD_TYPE=Debug -DUNIT_TESTING=1 ../ &&
|
||||
make &&
|
||||
useradd -m -s /bin/bash test &&
|
||||
chown -R test:test . &&
|
||||
su -c 'ctest --output-on-failure' test"
|
||||
when:
|
||||
matrix:
|
||||
TESTS: qt-5.10
|
||||
qt-5.11:
|
||||
image: nextcloudci/client-5.11:client-5.11-3
|
||||
commands:
|
||||
# Install QtKeyChain
|
||||
- /bin/bash -c "
|
||||
export CC=gcc-7 &&
|
||||
export CXX=g++-7 &&
|
||||
source /opt/qt511/bin/qt511-env.sh &&
|
||||
cd /tmp &&
|
||||
git clone https://github.com/frankosterfeld/qtkeychain.git &&
|
||||
cd qtkeychain &&
|
||||
git checkout v0.9.1 &&
|
||||
mkdir build &&
|
||||
cd build &&
|
||||
cmake ../ &&
|
||||
make &&
|
||||
make install"
|
||||
# Build client
|
||||
- /bin/bash -c "
|
||||
export CC=gcc-7 &&
|
||||
export CXX=g++-7 &&
|
||||
source /opt/qt511/bin/qt511-env.sh &&
|
||||
mkdir build &&
|
||||
cd build &&
|
||||
cmake -D NO_SHIBBOLETH=1 -DCMAKE_BUILD_TYPE=Debug -DUNIT_TESTING=1 ../ &&
|
||||
make &&
|
||||
useradd -m -s /bin/bash test &&
|
||||
chown -R test:test . &&
|
||||
su -c 'ctest --output-on-failure' test"
|
||||
when:
|
||||
matrix:
|
||||
TESTS: qt-5.11
|
||||
steps:
|
||||
- name: build and test
|
||||
image: nextcloudci/client-5.7:client-5.7-4
|
||||
commands:
|
||||
# Install QtKeyChain
|
||||
- /bin/bash -c "
|
||||
source /opt/qt57/bin/qt57-env.sh &&
|
||||
cd /tmp &&
|
||||
git clone https://github.com/frankosterfeld/qtkeychain.git &&
|
||||
cd qtkeychain &&
|
||||
git checkout v0.9.1 &&
|
||||
mkdir build &&
|
||||
cd build &&
|
||||
cmake ../ &&
|
||||
make &&
|
||||
make install"
|
||||
# Build client
|
||||
- /bin/bash -c "
|
||||
source /opt/qt57/bin/qt57-env.sh &&
|
||||
mkdir build &&
|
||||
cd build &&
|
||||
cmake -D NO_SHIBBOLETH=1 -DCMAKE_BUILD_TYPE=Debug -DUNIT_TESTING=1 ../ &&
|
||||
make &&
|
||||
useradd -m -s /bin/bash test &&
|
||||
chown -R test:test . &&
|
||||
su -c 'ctest --output-on-failure' test"
|
||||
trigger:
|
||||
branch:
|
||||
- master
|
||||
event:
|
||||
- pull_request
|
||||
- push
|
||||
|
||||
qt-5.11-clang:
|
||||
image: nextcloudci/client-5.11:client-5.11-3
|
||||
commands:
|
||||
# Install QtKeyChain
|
||||
- /bin/bash -c "
|
||||
export CC=clang-6.0 &&
|
||||
export CXX=clang++-6.0 &&
|
||||
source /opt/qt511/bin/qt511-env.sh &&
|
||||
cd /tmp &&
|
||||
git clone https://github.com/frankosterfeld/qtkeychain.git &&
|
||||
cd qtkeychain &&
|
||||
git checkout v0.9.1 &&
|
||||
mkdir build &&
|
||||
cd build &&
|
||||
cmake ../ &&
|
||||
make &&
|
||||
make install"
|
||||
# Build client
|
||||
- /bin/bash -c "
|
||||
export CC=clang-6.0 &&
|
||||
export CXX=clang++-6.0 &&
|
||||
source /opt/qt511/bin/qt511-env.sh &&
|
||||
mkdir build &&
|
||||
cd build &&
|
||||
cmake -D NO_SHIBBOLETH=1 -DCMAKE_BUILD_TYPE=Debug -DUNIT_TESTING=1 ../ &&
|
||||
make &&
|
||||
useradd -m -s /bin/bash test &&
|
||||
chown -R test:test . &&
|
||||
su -c 'ctest --output-on-failure' test"
|
||||
when:
|
||||
matrix:
|
||||
TESTS: qt-5.11-clang
|
||||
---
|
||||
kind: pipeline
|
||||
name: qt-5.8
|
||||
|
||||
AppImage:
|
||||
image: nextcloudci/client-5.11:client-5.11-3
|
||||
commands:
|
||||
- /bin/bash -c "./admin/linux/build-appimage.sh"
|
||||
when:
|
||||
matrix:
|
||||
BUILD: AppImage
|
||||
steps:
|
||||
- name: build and test
|
||||
image: nextcloudci/client-5.8:client-5.8-4
|
||||
commands:
|
||||
# Install QtKeyChain
|
||||
- /bin/bash -c "
|
||||
source /opt/qt58/bin/qt58-env.sh &&
|
||||
cd /tmp &&
|
||||
git clone https://github.com/frankosterfeld/qtkeychain.git &&
|
||||
cd qtkeychain &&
|
||||
git checkout v0.9.1 &&
|
||||
mkdir build &&
|
||||
cd build &&
|
||||
cmake ../ &&
|
||||
make &&
|
||||
make install"
|
||||
# Build client
|
||||
- /bin/bash -c "
|
||||
source /opt/qt58/bin/qt58-env.sh &&
|
||||
mkdir build &&
|
||||
cd build &&
|
||||
cmake -D NO_SHIBBOLETH=1 -DCMAKE_BUILD_TYPE=Debug -DUNIT_TESTING=1 ../ &&
|
||||
make &&
|
||||
useradd -m -s /bin/bash test &&
|
||||
chown -R test:test . &&
|
||||
su -c 'ctest --output-on-failure' test"
|
||||
trigger:
|
||||
branch:
|
||||
- master
|
||||
event:
|
||||
- pull_request
|
||||
- push
|
||||
|
||||
Debian:
|
||||
image: nextcloudci/client-debian-ci:client-debian-ci-2
|
||||
commands:
|
||||
- /bin/bash -c "./admin/linux/debian/drone-build.sh"
|
||||
secrets: [ DEBIAN_SECRET_KEY, DEBIAN_SECRET_IV ]
|
||||
when:
|
||||
matrix:
|
||||
BUILD: Debian
|
||||
---
|
||||
kind: pipeline
|
||||
name: qt-5.9
|
||||
|
||||
documentation:
|
||||
image: nextcloudci/documentation:documentation-5
|
||||
commands:
|
||||
- cd doc
|
||||
- make html
|
||||
when:
|
||||
matrix:
|
||||
TESTS: documentation
|
||||
steps:
|
||||
- name: build and test
|
||||
image: nextcloudci/client-5.9:client-5.9-5
|
||||
commands:
|
||||
# Install QtKeyChain
|
||||
- /bin/bash -c "
|
||||
source /opt/qt59/bin/qt59-env.sh &&
|
||||
cd /tmp &&
|
||||
git clone https://github.com/frankosterfeld/qtkeychain.git &&
|
||||
cd qtkeychain &&
|
||||
git checkout v0.9.1 &&
|
||||
mkdir build &&
|
||||
cd build &&
|
||||
cmake ../ &&
|
||||
make &&
|
||||
make install"
|
||||
# Build client
|
||||
- /bin/bash -c "
|
||||
source /opt/qt59/bin/qt59-env.sh &&
|
||||
mkdir build &&
|
||||
cd build &&
|
||||
cmake -D NO_SHIBBOLETH=1 -DCMAKE_BUILD_TYPE=Debug -DUNIT_TESTING=1 ../ &&
|
||||
make &&
|
||||
useradd -m -s /bin/bash test &&
|
||||
chown -R test:test . &&
|
||||
su -c 'ctest --output-on-failure' test"
|
||||
trigger:
|
||||
branch:
|
||||
- master
|
||||
event:
|
||||
- pull_request
|
||||
- push
|
||||
|
||||
matrix:
|
||||
include:
|
||||
- TESTS: qt-5.7
|
||||
- TESTS: qt-5.8
|
||||
- TESTS: qt-5.9
|
||||
- TESTS: qt-5.10
|
||||
- TESTS: qt-5.11
|
||||
- TESTS: qt-5.11-clang
|
||||
- BUILD: AppImage
|
||||
- BUILD: Debian
|
||||
- TESTS: documentation
|
||||
---
|
||||
kind: pipeline
|
||||
name: qt-5.10
|
||||
|
||||
branches: [ master, 2.* ]
|
||||
steps:
|
||||
- name: build and test
|
||||
image: nextcloudci/client-5.10:client-5.10-3
|
||||
commands:
|
||||
# Install QtKeyChain
|
||||
- /bin/bash -c "
|
||||
export CC=gcc-7 &&
|
||||
export CXX=g++-7 &&
|
||||
source /opt/qt510/bin/qt510-env.sh &&
|
||||
cd /tmp &&
|
||||
git clone https://github.com/frankosterfeld/qtkeychain.git &&
|
||||
cd qtkeychain &&
|
||||
git checkout v0.9.1 &&
|
||||
mkdir build &&
|
||||
cd build &&
|
||||
cmake ../ &&
|
||||
make &&
|
||||
make install"
|
||||
# Build client
|
||||
- /bin/bash -c "
|
||||
export CC=gcc-7 &&
|
||||
export CXX=g++-7 &&
|
||||
source /opt/qt510/bin/qt510-env.sh &&
|
||||
mkdir build &&
|
||||
cd build &&
|
||||
cmake -D NO_SHIBBOLETH=1 -DCMAKE_BUILD_TYPE=Debug -DUNIT_TESTING=1 ../ &&
|
||||
make &&
|
||||
useradd -m -s /bin/bash test &&
|
||||
chown -R test:test . &&
|
||||
su -c 'ctest --output-on-failure' test"
|
||||
trigger:
|
||||
branch:
|
||||
- master
|
||||
event:
|
||||
- pull_request
|
||||
- push
|
||||
|
||||
---
|
||||
kind: pipeline
|
||||
name: qt-5.11
|
||||
|
||||
steps:
|
||||
- name: build and test
|
||||
image: nextcloudci/client-5.11:client-5.11-3
|
||||
commands:
|
||||
# Install QtKeyChain
|
||||
- /bin/bash -c "
|
||||
export CC=gcc-7 &&
|
||||
export CXX=g++-7 &&
|
||||
source /opt/qt511/bin/qt511-env.sh &&
|
||||
cd /tmp &&
|
||||
git clone https://github.com/frankosterfeld/qtkeychain.git &&
|
||||
cd qtkeychain &&
|
||||
git checkout v0.9.1 &&
|
||||
mkdir build &&
|
||||
cd build &&
|
||||
cmake ../ &&
|
||||
make &&
|
||||
make install"
|
||||
# Build client
|
||||
- /bin/bash -c "
|
||||
export CC=gcc-7 &&
|
||||
export CXX=g++-7 &&
|
||||
source /opt/qt511/bin/qt511-env.sh &&
|
||||
mkdir build &&
|
||||
cd build &&
|
||||
cmake -D NO_SHIBBOLETH=1 -DCMAKE_BUILD_TYPE=Debug -DUNIT_TESTING=1 ../ &&
|
||||
make &&
|
||||
useradd -m -s /bin/bash test &&
|
||||
chown -R test:test . &&
|
||||
su -c 'ctest --output-on-failure' test"
|
||||
trigger:
|
||||
branch:
|
||||
- master
|
||||
event:
|
||||
- pull_request
|
||||
- push
|
||||
|
||||
---
|
||||
kind: pipeline
|
||||
name: qt-5.11-clang
|
||||
|
||||
steps:
|
||||
- name: build and test
|
||||
image: nextcloudci/client-5.11:client-5.11-3
|
||||
commands:
|
||||
# Install QtKeyChain
|
||||
- /bin/bash -c "
|
||||
export CC=clang-6.0 &&
|
||||
export CXX=clang++-6.0 &&
|
||||
source /opt/qt511/bin/qt511-env.sh &&
|
||||
cd /tmp &&
|
||||
git clone https://github.com/frankosterfeld/qtkeychain.git &&
|
||||
cd qtkeychain &&
|
||||
git checkout v0.9.1 &&
|
||||
mkdir build &&
|
||||
cd build &&
|
||||
cmake ../ &&
|
||||
make &&
|
||||
make install"
|
||||
# Build client
|
||||
- /bin/bash -c "
|
||||
export CC=clang-6.0 &&
|
||||
export CXX=clang++-6.0 &&
|
||||
source /opt/qt511/bin/qt511-env.sh &&
|
||||
mkdir build &&
|
||||
cd build &&
|
||||
cmake -D NO_SHIBBOLETH=1 -DCMAKE_BUILD_TYPE=Debug -DUNIT_TESTING=1 ../ &&
|
||||
make &&
|
||||
useradd -m -s /bin/bash test &&
|
||||
chown -R test:test . &&
|
||||
su -c 'ctest --output-on-failure' test"
|
||||
trigger:
|
||||
branch:
|
||||
- master
|
||||
event:
|
||||
- pull_request
|
||||
- push
|
||||
|
||||
---
|
||||
kind: pipeline
|
||||
name: qt-5.12
|
||||
|
||||
steps:
|
||||
- name: build and test
|
||||
image: nextcloudci/client-5.12:client-5.12-2
|
||||
commands:
|
||||
# Install QtKeyChain
|
||||
- /bin/bash -c "
|
||||
export CC=gcc-7 &&
|
||||
export CXX=g++-7 &&
|
||||
source /opt/qt512/bin/qt512-env.sh &&
|
||||
cd /tmp &&
|
||||
git clone https://github.com/frankosterfeld/qtkeychain.git &&
|
||||
cd qtkeychain &&
|
||||
git checkout v0.9.1 &&
|
||||
mkdir build &&
|
||||
cd build &&
|
||||
cmake ../ &&
|
||||
make &&
|
||||
make install"
|
||||
# Build client
|
||||
- /bin/bash -c "
|
||||
export CC=gcc-7 &&
|
||||
export CXX=g++-7 &&
|
||||
source /opt/qt512/bin/qt512-env.sh &&
|
||||
mkdir build &&
|
||||
cd build &&
|
||||
cmake -D NO_SHIBBOLETH=1 -DCMAKE_BUILD_TYPE=Debug -DUNIT_TESTING=1 ../ &&
|
||||
make &&
|
||||
useradd -m -s /bin/bash test &&
|
||||
chown -R test:test . &&
|
||||
su -c 'ctest --output-on-failure' test"
|
||||
trigger:
|
||||
branch:
|
||||
- master
|
||||
event:
|
||||
- pull_request
|
||||
- push
|
||||
|
||||
---
|
||||
kind: pipeline
|
||||
name: qt-5.12-clang
|
||||
|
||||
steps:
|
||||
- name: build and test
|
||||
image: nextcloudci/client-5.12:client-5.12-2
|
||||
commands:
|
||||
# Install QtKeyChain
|
||||
- /bin/bash -c "
|
||||
export CC=clang-6.0 &&
|
||||
export CXX=clang++-6.0 &&
|
||||
source /opt/qt512/bin/qt512-env.sh &&
|
||||
cd /tmp &&
|
||||
git clone https://github.com/frankosterfeld/qtkeychain.git &&
|
||||
cd qtkeychain &&
|
||||
git checkout v0.9.1 &&
|
||||
mkdir build &&
|
||||
cd build &&
|
||||
cmake ../ &&
|
||||
make &&
|
||||
make install"
|
||||
# Build client
|
||||
- /bin/bash -c "
|
||||
export CC=clang-6.0 &&
|
||||
export CXX=clang++-6.0 &&
|
||||
source /opt/qt512/bin/qt512-env.sh &&
|
||||
mkdir build &&
|
||||
cd build &&
|
||||
cmake -D NO_SHIBBOLETH=1 -DCMAKE_BUILD_TYPE=Debug -DUNIT_TESTING=1 ../ &&
|
||||
make &&
|
||||
useradd -m -s /bin/bash test &&
|
||||
chown -R test:test . &&
|
||||
su -c 'ctest --output-on-failure' test"
|
||||
trigger:
|
||||
branch:
|
||||
- master
|
||||
event:
|
||||
- pull_request
|
||||
- push
|
||||
|
||||
---
|
||||
kind: pipeline
|
||||
name: AppImage
|
||||
|
||||
steps:
|
||||
- name: build
|
||||
image: nextcloudci/client-5.12:client-5.12-2
|
||||
commands:
|
||||
- /bin/bash -c "./admin/linux/build-appimage.sh"
|
||||
trigger:
|
||||
branch:
|
||||
- master
|
||||
event:
|
||||
- pull_request
|
||||
- push
|
||||
|
||||
---
|
||||
kind: pipeline
|
||||
name: Documentation
|
||||
|
||||
steps:
|
||||
- name: build
|
||||
image: nextcloudci/documentation:documentation-5
|
||||
commands:
|
||||
- cd doc
|
||||
- make html
|
||||
trigger:
|
||||
branch:
|
||||
- master
|
||||
event:
|
||||
- pull_request
|
||||
- push
|
||||
|
201
.tx/nextcloud.client-desktop/ar_translation
Normal file
201
.tx/nextcloud.client-desktop/ar_translation
Normal file
@ -0,0 +1,201 @@
|
||||
[Desktop Entry]
|
||||
Categories=Utility;X-SuSE-SyncUtility;
|
||||
Type=Application
|
||||
Exec=@APPLICATION_EXECUTABLE@
|
||||
Name=@APPLICATION_NAME@ desktop sync client
|
||||
Comment=@APPLICATION_NAME@ desktop synchronization client
|
||||
GenericName=Folder Sync
|
||||
Icon=@APPLICATION_ICON_NAME@
|
||||
Keywords=@APPLICATION_NAME@;syncing;file;sharing;
|
||||
X-GNOME-Autostart-Delay=3
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
GenericName[ar]=مزامنة المجلد
|
@ -199,6 +199,6 @@ X-GNOME-Autostart-Delay=3
|
||||
|
||||
# Translations
|
||||
Icon[ca]=@APPLICATION_ICON_NAME@
|
||||
Name[ca]=@APPLICATION_NAME@ client de sincro d'escriptori
|
||||
Name[ca]=@APPLICATION_NAME@ client de sincronització d'escriptori
|
||||
Comment[ca]=@APPLICATION_NAME@ client de sincronització d'escriptori
|
||||
GenericName[ca]=Directori de sincronització
|
||||
|
@ -201,4 +201,4 @@ X-GNOME-Autostart-Delay=3
|
||||
Icon[da]=@APPLICATION_ICON_NAME@
|
||||
Name[da]=@APPLICATION_NAME@ Arbejdsstationsssynkroniseringsklient
|
||||
Comment[da]=@APPLICATION_NAME@ Arbejdsstationsssynkroniseringsklient
|
||||
GenericName[da]=Mappe sync
|
||||
GenericName[da]=Mappesynkronisering
|
||||
|
@ -198,7 +198,7 @@ X-GNOME-Autostart-Delay=3
|
||||
|
||||
|
||||
# Translations
|
||||
Icon[de_DE]=@APPLICATION_ICON_NAME@
|
||||
Name[de_DE]=@APPLICATION_NAME@ Client zur Desktop-Synchronisation
|
||||
Comment[de_DE]=@APPLICATION_NAME@ Client zur Desktop-Synchronisation
|
||||
GenericName[de_DE]=Synchronisationsordner
|
||||
Icon[de]=@APPLICATION_ICON_NAME@
|
||||
Name[de]=@APPLICATION_NAME@ Client zur Desktop-Synchronisation
|
||||
Comment[de]=@APPLICATION_NAME@ Client zur Desktop-Synchronisation
|
||||
GenericName[de]=Synchronisationsordner
|
||||
|
@ -199,6 +199,6 @@ X-GNOME-Autostart-Delay=3
|
||||
|
||||
# Translations
|
||||
Icon[hu_HU]=@APPLICATION_ICON_NAME@
|
||||
Name[hu_HU]=@APPLICATION_NAME@ Asztali szinkronizáló kliens
|
||||
Comment[hu_HU]=@APPLICATION_NAME@ Asztali szinkronizáló kliens
|
||||
GenericName[hu_HU]=Mappa szinkronizálás
|
||||
Name[hu_HU]=@APPLICATION_NAME@ asztali szinkronizálási kliens
|
||||
Comment[hu_HU]=@APPLICATION_NAME@ asztali szinkronizálási kliens
|
||||
GenericName[hu_HU]=Mappaszinkronizálás
|
||||
|
@ -5,8 +5,8 @@ set -xe
|
||||
mkdir /app
|
||||
mkdir /build
|
||||
|
||||
#Set Qt-5.11
|
||||
export QT_BASE_DIR=/opt/qt511
|
||||
#Set Qt-5.12
|
||||
export QT_BASE_DIR=/opt/qt512
|
||||
export QTDIR=$QT_BASE_DIR
|
||||
export PATH=$QT_BASE_DIR/bin:$PATH
|
||||
export LD_LIBRARY_PATH=$QT_BASE_DIR/lib/x86_64-linux-gnu:$QT_BASE_DIR/lib:$LD_LIBRARY_PATH
|
||||
|
@ -37,6 +37,7 @@
|
||||
<file>resources/confirm.svg</file>
|
||||
<file>resources/copy.svg</file>
|
||||
<file>resources/state-sync.svg</file>
|
||||
<file>resources/add.png</file>
|
||||
</qresource>
|
||||
<qresource prefix="/"/>
|
||||
</RCC>
|
||||
|
BIN
resources/add.png
Normal file
BIN
resources/add.png
Normal file
Binary file not shown.
After ![]() (image error) Size: 16 KiB |
@ -41,6 +41,7 @@ macro(libcloudproviders_add_config _sources)
|
||||
endmacro(libcloudproviders_add_config _sources)
|
||||
|
||||
|
||||
find_package(Qt5 5.6 COMPONENTS DBus)
|
||||
IF (UNIX AND Qt5DBus_FOUND AND LIBCLOUDPROVIDERS_FOUND)
|
||||
STRING(TOLOWER "${APPLICATION_VENDOR}" DBUS_VENDOR)
|
||||
STRING(REGEX REPLACE "[^A-z0-9]" "" DBUS_VENDOR "${DBUS_VENDOR}")
|
||||
|
@ -24,7 +24,7 @@ extern "C" {
|
||||
|
||||
CloudProvidersProviderExporter *_providerExporter;
|
||||
|
||||
void on_bus_acquired (GDBusConnection *connection, const gchar *name, gpointer user_data)
|
||||
void on_name_acquired (GDBusConnection *connection, const gchar *name, gpointer user_data)
|
||||
{
|
||||
Q_UNUSED(name);
|
||||
CloudProviderManager *self;
|
||||
@ -34,6 +34,14 @@ void on_bus_acquired (GDBusConnection *connection, const gchar *name, gpointer u
|
||||
self->registerSignals();
|
||||
}
|
||||
|
||||
void on_name_lost (GDBusConnection *connection, const gchar *name, gpointer user_data)
|
||||
{
|
||||
Q_UNUSED(connection);
|
||||
Q_UNUSED(name);
|
||||
Q_UNUSED(user_data);
|
||||
g_clear_object (&_providerExporter);
|
||||
}
|
||||
|
||||
void CloudProviderManager::registerSignals()
|
||||
{
|
||||
OCC::FolderMan *folderManager = OCC::FolderMan::instance();
|
||||
@ -45,7 +53,7 @@ CloudProviderManager::CloudProviderManager(QObject *parent) : QObject(parent)
|
||||
{
|
||||
_map = new QMap<QString, CloudProviderWrapper*>();
|
||||
QString busName = QString(LIBCLOUDPROVIDERS_DBUS_BUS_NAME);
|
||||
g_bus_own_name (G_BUS_TYPE_SESSION, busName.toAscii().data(), G_BUS_NAME_OWNER_FLAGS_NONE, on_bus_acquired, nullptr, nullptr, this, nullptr);
|
||||
g_bus_own_name (G_BUS_TYPE_SESSION, busName.toAscii().data(), G_BUS_NAME_OWNER_FLAGS_NONE, nullptr, on_name_acquired, nullptr, this, nullptr);
|
||||
}
|
||||
|
||||
void CloudProviderManager::slotFolderListChanged(const Folder::Map &folderMap)
|
||||
|
@ -33,33 +33,25 @@ using namespace OCC;
|
||||
|
||||
GSimpleActionGroup *actionGroup = nullptr;
|
||||
|
||||
static
|
||||
gchar* qstring_to_gchar(const QString &string)
|
||||
{
|
||||
QByteArray ba = string.toUtf8();
|
||||
char* data = ba.data();
|
||||
return g_strdup(data);
|
||||
}
|
||||
|
||||
CloudProviderWrapper::CloudProviderWrapper(QObject *parent, Folder *folder, CloudProvidersProviderExporter* cloudprovider) : QObject(parent)
|
||||
, _folder(folder)
|
||||
{
|
||||
GMenuModel *model;
|
||||
GActionGroup *action_group;
|
||||
_recentlyChanged = new QList<QPair<QString, QString>>();
|
||||
gchar *accountName = g_strdup_printf ("Account%sFolder%s",
|
||||
qstring_to_gchar(folder->alias()),
|
||||
qstring_to_gchar(folder->accountState()->account()->id()));
|
||||
QString accountName = QString("Account%1Folder%2").arg(folder->alias(), folder->accountState()->account()->id());
|
||||
|
||||
_cloudProvider = CLOUD_PROVIDERS_PROVIDER_EXPORTER(cloudprovider);
|
||||
_cloudProviderAccount = cloud_providers_account_exporter_new(_cloudProvider, accountName);
|
||||
_cloudProviderAccount = cloud_providers_account_exporter_new(_cloudProvider, accountName.toUtf8().data());
|
||||
|
||||
gchar* folderName = qstring_to_gchar(folder->shortGuiLocalPath());
|
||||
gchar* folderPath = qstring_to_gchar(folder->cleanPath());
|
||||
cloud_providers_account_exporter_set_name (_cloudProviderAccount, folderName);
|
||||
cloud_providers_account_exporter_set_name (_cloudProviderAccount, folder->shortGuiLocalPath().toUtf8().data());
|
||||
cloud_providers_account_exporter_set_icon (_cloudProviderAccount, g_icon_new_for_string(APPLICATION_ICON_NAME, nullptr));
|
||||
cloud_providers_account_exporter_set_path (_cloudProviderAccount, folderPath);
|
||||
cloud_providers_account_exporter_set_path (_cloudProviderAccount, folder->cleanPath().toUtf8().data());
|
||||
cloud_providers_account_exporter_set_status (_cloudProviderAccount, CLOUD_PROVIDERS_ACCOUNT_STATUS_IDLE);
|
||||
cloud_providers_account_exporter_set_menu_model (_cloudProviderAccount, getMenuModel());
|
||||
cloud_providers_account_exporter_set_action_group (_cloudProviderAccount, getActionGroup());
|
||||
model = getMenuModel();
|
||||
cloud_providers_account_exporter_set_menu_model (_cloudProviderAccount, model);
|
||||
action_group = getActionGroup();
|
||||
cloud_providers_account_exporter_set_action_group (_cloudProviderAccount, action_group);
|
||||
|
||||
connect(ProgressDispatcher::instance(), SIGNAL(progressInfo(QString, ProgressInfo)), this, SLOT(slotUpdateProgress(QString, ProgressInfo)));
|
||||
connect(_folder, SIGNAL(syncStarted()), this, SLOT(slotSyncStarted()));
|
||||
@ -68,10 +60,8 @@ CloudProviderWrapper::CloudProviderWrapper(QObject *parent, Folder *folder, Clou
|
||||
|
||||
_paused = _folder->syncPaused();
|
||||
updatePauseStatus();
|
||||
|
||||
g_free(accountName);
|
||||
g_free(folderName);
|
||||
g_free(folderPath);
|
||||
g_clear_object (&model);
|
||||
g_clear_object (&action_group);
|
||||
}
|
||||
|
||||
CloudProviderWrapper::~CloudProviderWrapper()
|
||||
@ -93,6 +83,16 @@ static bool shouldShowInRecentsMenu(const SyncFileItem &item)
|
||||
&& item._instruction != CSYNC_INSTRUCTION_NONE;
|
||||
}
|
||||
|
||||
static GMenuItem *menu_item_new(const QString &label, const gchar *detailed_action)
|
||||
{
|
||||
return g_menu_item_new(label.toUtf8 ().data(), detailed_action);
|
||||
}
|
||||
|
||||
static GMenuItem *menu_item_new_submenu(const QString &label, GMenuModel *submenu)
|
||||
{
|
||||
return g_menu_item_new_submenu(label.toUtf8 ().data(), submenu);
|
||||
}
|
||||
|
||||
void CloudProviderWrapper::slotUpdateProgress(const QString &folder, const ProgressInfo &progress)
|
||||
{
|
||||
// Only update progress for the current folder
|
||||
@ -154,30 +154,25 @@ void CloudProviderWrapper::slotUpdateProgress(const QString &folder, const Progr
|
||||
if(!_recentlyChanged->isEmpty()) {
|
||||
QList<QPair<QString, QString>>::iterator i;
|
||||
for (i = _recentlyChanged->begin(); i != _recentlyChanged->end(); i++) {
|
||||
gchar *file;
|
||||
QString label = i->first;
|
||||
QString fullPath = i->second;
|
||||
file = g_strdup(qstring_to_gchar(label));
|
||||
item = g_menu_item_new(file, "cloudprovider.showfile");
|
||||
g_menu_item_set_action_and_target_value(item, "cloudprovider.showfile", g_variant_new_string(qstring_to_gchar(fullPath)));
|
||||
item = menu_item_new(label, "cloudprovider.showfile");
|
||||
g_menu_item_set_action_and_target_value(item, "cloudprovider.showfile", g_variant_new_string(fullPath.toUtf8().data()));
|
||||
g_menu_append_item(_recentMenu, item);
|
||||
g_clear_object (&item);
|
||||
}
|
||||
} else {
|
||||
item = g_menu_item_new("No recently changed files", nullptr);
|
||||
item = menu_item_new(tr("No recently changed files"), nullptr);
|
||||
g_menu_append_item(_recentMenu, item);
|
||||
g_clear_object (&item);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void CloudProviderWrapper::updateStatusText(QString statusText)
|
||||
{
|
||||
char* state = qstring_to_gchar(_folder->accountState()->stateString(_folder->accountState()->state()));
|
||||
char* statusChar = qstring_to_gchar(statusText);
|
||||
char* status = g_strdup_printf("%s - %s", state, statusChar);
|
||||
cloud_providers_account_exporter_set_status_details(_cloudProviderAccount, status);
|
||||
g_free(state);
|
||||
g_free(statusChar);
|
||||
g_free(status);
|
||||
QString status = QString("%1 - %2").arg(_folder->accountState()->stateString(_folder->accountState()->state()), statusText);
|
||||
cloud_providers_account_exporter_set_status_details(_cloudProviderAccount, status.toUtf8().data());
|
||||
}
|
||||
|
||||
void CloudProviderWrapper::updatePauseStatus()
|
||||
@ -217,38 +212,53 @@ GMenuModel* CloudProviderWrapper::getMenuModel() {
|
||||
|
||||
GMenu* section;
|
||||
GMenuItem* item;
|
||||
QString item_label;
|
||||
|
||||
_mainMenu = g_menu_new();
|
||||
|
||||
section = g_menu_new();
|
||||
item = g_menu_item_new("Open website", "cloudprovider.openwebsite");
|
||||
item = menu_item_new(tr("Open website"), "cloudprovider.openwebsite");
|
||||
g_menu_append_item(section, item);
|
||||
g_clear_object (&item);
|
||||
g_menu_append_section(_mainMenu, nullptr, G_MENU_MODEL(section));
|
||||
g_clear_object (§ion);
|
||||
|
||||
_recentMenu = g_menu_new();
|
||||
item = g_menu_item_new("No recently changed files", nullptr);
|
||||
item = menu_item_new(tr("No recently changed files"), nullptr);
|
||||
g_menu_append_item(_recentMenu, item);
|
||||
section = g_menu_new();
|
||||
item = g_menu_item_new_submenu("Recently changed", G_MENU_MODEL(_recentMenu));
|
||||
g_menu_append_item(section, item);
|
||||
g_menu_append_section(_mainMenu, nullptr, G_MENU_MODEL(section));
|
||||
g_clear_object (&item);
|
||||
|
||||
section = g_menu_new();
|
||||
item = g_menu_item_new("Pause synchronization", "cloudprovider.pause");
|
||||
item = menu_item_new_submenu(tr("Recently changed"), G_MENU_MODEL(_recentMenu));
|
||||
g_menu_append_item(section, item);
|
||||
g_clear_object (&item);
|
||||
g_menu_append_section(_mainMenu, nullptr, G_MENU_MODEL(section));
|
||||
g_clear_object (§ion);
|
||||
|
||||
section = g_menu_new();
|
||||
item = g_menu_item_new("Help", "cloudprovider.openhelp");
|
||||
g_menu_append_item(section, item);
|
||||
item = g_menu_item_new("Settings", "cloudprovider.opensettings");
|
||||
g_menu_append_item(section, item);
|
||||
item = g_menu_item_new("Log out", "cloudprovider.logout");
|
||||
g_menu_append_item(section, item);
|
||||
item = g_menu_item_new("Quit sync client", "cloudprovider.quit");
|
||||
item = menu_item_new(tr("Pause synchronization"), "cloudprovider.pause");
|
||||
g_menu_append_item(section, item);
|
||||
g_clear_object (&item);
|
||||
g_menu_append_section(_mainMenu, nullptr, G_MENU_MODEL(section));
|
||||
g_clear_object (§ion);
|
||||
|
||||
section = g_menu_new();
|
||||
item = menu_item_new(tr("Help"), "cloudprovider.openhelp");
|
||||
g_menu_append_item(section, item);
|
||||
g_clear_object (&item);
|
||||
item = menu_item_new(tr("Settings"), "cloudprovider.opensettings");
|
||||
g_menu_append_item(section, item);
|
||||
g_clear_object (&item);
|
||||
item = menu_item_new(tr("Log out"), "cloudprovider.logout");
|
||||
g_menu_append_item(section, item);
|
||||
g_clear_object (&item);
|
||||
item = menu_item_new(tr("Quit sync client"), "cloudprovider.quit");
|
||||
g_menu_append_item(section, item);
|
||||
g_clear_object (&item);
|
||||
g_menu_append_section(_mainMenu, nullptr, G_MENU_MODEL(section));
|
||||
g_clear_object (§ion);
|
||||
|
||||
g_clear_object (&_recentMenu);
|
||||
return G_MENU_MODEL(_mainMenu);
|
||||
}
|
||||
|
||||
@ -277,11 +287,10 @@ activate_action_open (GSimpleAction *action, GVariant *parameter, gpointer user_
|
||||
}
|
||||
|
||||
if(g_str_equal(name, "showfile")) {
|
||||
gchar *path;
|
||||
g_variant_get (parameter, "s", &path);
|
||||
g_print("showfile => %s\n", path);
|
||||
showInFileManager(QString(path));
|
||||
}
|
||||
const gchar *path = g_variant_get_string (parameter, NULL);
|
||||
g_print("showfile => %s\n", path);
|
||||
showInFileManager(QString(path));
|
||||
}
|
||||
|
||||
if(g_str_equal(name, "logout")) {
|
||||
self->folder()->accountState()->signOutByUi();
|
||||
@ -331,12 +340,13 @@ static GActionEntry actions[] = {
|
||||
|
||||
GActionGroup* CloudProviderWrapper::getActionGroup()
|
||||
{
|
||||
g_clear_object (&actionGroup);
|
||||
actionGroup = g_simple_action_group_new ();
|
||||
g_action_map_add_action_entries (G_ACTION_MAP (actionGroup), actions, G_N_ELEMENTS (actions), this);
|
||||
bool state = _folder->syncPaused();
|
||||
GAction *pause = g_action_map_lookup_action(G_ACTION_MAP(actionGroup), "pause");
|
||||
g_simple_action_set_state(G_SIMPLE_ACTION(pause), g_variant_new_boolean(state));
|
||||
return G_ACTION_GROUP (actionGroup);
|
||||
return G_ACTION_GROUP (g_object_ref (actionGroup));
|
||||
}
|
||||
|
||||
void CloudProviderWrapper::slotSyncPausedChanged(Folder *folder, bool state)
|
||||
|
@ -18,6 +18,8 @@
|
||||
#include "sharelinkwidget.h"
|
||||
#include "shareusergroupwidget.h"
|
||||
|
||||
#include "sharemanager.h"
|
||||
|
||||
#include "account.h"
|
||||
#include "accountstate.h"
|
||||
#include "configfile.h"
|
||||
@ -49,7 +51,8 @@ ShareDialog::ShareDialog(QPointer<AccountState> accountState,
|
||||
, _maxSharingPermissions(maxSharingPermissions)
|
||||
, _privateLinkUrl(accountState->account()->deprecatedPrivateLinkUrl(numericFileId).toString(QUrl::FullyEncoded))
|
||||
, _startPage(startPage)
|
||||
, _linkWidget(nullptr)
|
||||
, _linkWidgetList({})
|
||||
, _emptyShareLinkWidget(nullptr)
|
||||
, _userGroupWidget(nullptr)
|
||||
, _progressIndicator(nullptr)
|
||||
{
|
||||
@ -101,11 +104,6 @@ ShareDialog::ShareDialog(QPointer<AccountState> accountState,
|
||||
this->setWindowTitle(tr("%1 Sharing").arg(Theme::instance()->appNameGUI()));
|
||||
|
||||
if (!accountState->account()->capabilities().shareAPI()) {
|
||||
// TODO do we want to display it?
|
||||
//auto label = new QLabel(tr("The server does not allow sharing"));
|
||||
//label->setWordWrap(true);
|
||||
//label->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
|
||||
//layout()->replaceWidget(_ui->shareWidgets, label);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -115,14 +113,6 @@ ShareDialog::ShareDialog(QPointer<AccountState> accountState,
|
||||
job->start();
|
||||
}
|
||||
|
||||
//TODO Progress Indicator where should it go?
|
||||
// _progressIndicator = new QProgressIndicator(this);
|
||||
// _progressIndicator->startAnimation();
|
||||
// _progressIndicator->setToolTip(tr("Retrieving maximum possible sharing permissions from server..."));
|
||||
// _ui->buttonBoxLayout->insertWidget(0, _progressIndicator);
|
||||
|
||||
// Server versions >= 9.1 support the "share-permissions" property
|
||||
// older versions will just return share-permissions: ""
|
||||
auto job = new PropfindJob(accountState->account(), _sharePath);
|
||||
job->setProperties(
|
||||
QList<QByteArray>()
|
||||
@ -133,10 +123,103 @@ ShareDialog::ShareDialog(QPointer<AccountState> accountState,
|
||||
connect(job, &PropfindJob::result, this, &ShareDialog::slotPropfindReceived);
|
||||
connect(job, &PropfindJob::finishedWithError, this, &ShareDialog::slotPropfindError);
|
||||
job->start();
|
||||
|
||||
bool sharingPossible = true;
|
||||
if (!accountState->account()->capabilities().sharePublicLink()) {
|
||||
qCWarning(lcSharing) << "Link shares have been disabled";
|
||||
sharingPossible = false;
|
||||
} else if (!(maxSharingPermissions & SharePermissionShare)) {
|
||||
qCWarning(lcSharing) << "The file can not be shared because it was shared without sharing permission.";
|
||||
sharingPossible = false;
|
||||
}
|
||||
|
||||
if (sharingPossible) {
|
||||
_manager = new ShareManager(accountState->account(), this);
|
||||
connect(_manager, &ShareManager::sharesFetched, this, &ShareDialog::slotSharesFetched);
|
||||
connect(_manager, &ShareManager::linkShareCreated, this, &ShareDialog::slotAddLinkShareWidget);
|
||||
}
|
||||
}
|
||||
|
||||
void ShareDialog::addLinkShareWidget(const QSharedPointer<LinkShare> &linkShare){
|
||||
_linkWidgetList.append(new ShareLinkWidget(_accountState->account(), _sharePath, _localPath, _maxSharingPermissions, this));
|
||||
int index = _linkWidgetList.size()-1;
|
||||
_linkWidgetList.at(index)->setLinkShare(linkShare);
|
||||
|
||||
connect(linkShare.data(), &Share::serverError, _linkWidgetList.at(index), &ShareLinkWidget::slotServerError);
|
||||
connect(linkShare.data(), &Share::shareDeleted, _linkWidgetList.at(index), &ShareLinkWidget::slotDeleteShareFetched);
|
||||
connect(_manager, &ShareManager::linkShareRequiresPassword, _linkWidgetList.at(index), &ShareLinkWidget::slotCreateShareRequiresPassword);
|
||||
connect(_manager, &ShareManager::serverError, _linkWidgetList.at(index), &ShareLinkWidget::slotServerError);
|
||||
|
||||
// Connect all shares signals to gui slots
|
||||
connect(this, &ShareDialog::toggleAnimation, _linkWidgetList.at(index), &ShareLinkWidget::slotToggleAnimation);
|
||||
connect(_linkWidgetList.at(index), &ShareLinkWidget::createLinkShare, this, &ShareDialog::slotCreateLinkShare);
|
||||
connect(_linkWidgetList.at(index), &ShareLinkWidget::deleteLinkShare, this, &ShareDialog::slotDeleteShare);
|
||||
//connect(_linkWidgetList.at(index), &ShareLinkWidget::resizeRequested, this, &ShareDialog::slotAdjustScrollWidgetSize);
|
||||
|
||||
_ui->verticalLayout->insertWidget(_linkWidgetList.size()+1, _linkWidgetList.at(index));
|
||||
_linkWidgetList.at(index)->setupUiOptions();
|
||||
}
|
||||
|
||||
void ShareDialog::initLinkShareWidget(){
|
||||
if(_linkWidgetList.size() == 0){
|
||||
_emptyShareLinkWidget = new ShareLinkWidget(_accountState->account(), _sharePath, _localPath, _maxSharingPermissions, this);
|
||||
_linkWidgetList.append(_emptyShareLinkWidget);
|
||||
|
||||
// connect(_emptyShareLinkWidget, &ShareLinkWidget::resizeRequested, this, &ShareDialog::slotAdjustScrollWidgetSize);
|
||||
// connect(this, &ShareDialog::toggleAnimation, _emptyShareLinkWidget, &ShareLinkWidget::slotToggleAnimation);
|
||||
connect(_emptyShareLinkWidget, &ShareLinkWidget::createLinkShare, this, &ShareDialog::slotCreateLinkShare);
|
||||
|
||||
_ui->verticalLayout->insertWidget(_linkWidgetList.size()+1, _emptyShareLinkWidget);
|
||||
_emptyShareLinkWidget->show();
|
||||
|
||||
} else if(_emptyShareLinkWidget) {
|
||||
_emptyShareLinkWidget->hide();
|
||||
_ui->verticalLayout->removeWidget(_emptyShareLinkWidget);
|
||||
_linkWidgetList.removeAll(_emptyShareLinkWidget);
|
||||
_emptyShareLinkWidget = nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
void ShareDialog::slotAddLinkShareWidget(const QSharedPointer<LinkShare> &linkShare){
|
||||
emit toggleAnimation(true);
|
||||
addLinkShareWidget(linkShare);
|
||||
initLinkShareWidget();
|
||||
emit toggleAnimation(false);
|
||||
}
|
||||
|
||||
void ShareDialog::slotSharesFetched(const QList<QSharedPointer<Share>> &shares)
|
||||
{
|
||||
emit toggleAnimation(true);
|
||||
|
||||
const QString versionString = _accountState->account()->serverVersion();
|
||||
qCInfo(lcSharing) << versionString << "Fetched" << shares.count() << "shares";
|
||||
foreach (auto share, shares) {
|
||||
if (share->getShareType() != Share::TypeLink) {
|
||||
continue;
|
||||
}
|
||||
|
||||
QSharedPointer<LinkShare> linkShare = qSharedPointerDynamicCast<LinkShare>(share);
|
||||
addLinkShareWidget(linkShare);
|
||||
}
|
||||
|
||||
initLinkShareWidget();
|
||||
emit toggleAnimation(false);
|
||||
}
|
||||
|
||||
// TODO
|
||||
void ShareDialog::slotAdjustScrollWidgetSize()
|
||||
{
|
||||
int count = this->findChildren<ShareLinkWidget *>().count();
|
||||
_ui->scrollArea->setVisible(count > 0);
|
||||
if (count > 0 && count <= 3) {
|
||||
_ui->scrollArea->setFixedHeight(_ui->scrollArea->widget()->sizeHint().height());
|
||||
}
|
||||
_ui->scrollArea->setFrameShape(count > 3 ? QFrame::StyledPanel : QFrame::NoFrame);
|
||||
}
|
||||
|
||||
ShareDialog::~ShareDialog()
|
||||
{
|
||||
_linkWidgetList.clear();
|
||||
delete _ui;
|
||||
}
|
||||
|
||||
@ -178,8 +261,6 @@ void ShareDialog::slotPropfindError()
|
||||
|
||||
void ShareDialog::showSharingUi()
|
||||
{
|
||||
//_progressIndicator->stopAnimation();
|
||||
|
||||
auto theme = Theme::instance();
|
||||
|
||||
// There's no difference between being unable to reshare and
|
||||
@ -205,15 +286,25 @@ void ShareDialog::showSharingUi()
|
||||
}
|
||||
|
||||
if (theme->linkSharing()) {
|
||||
_linkWidget = new ShareLinkWidget(_accountState->account(), _sharePath, _localPath, _maxSharingPermissions, this);
|
||||
_ui->verticalLayout->insertWidget(2, _linkWidget);
|
||||
_linkWidget->getShares();
|
||||
|
||||
if (_startPage == ShareDialogStartPage::PublicLinks)
|
||||
_ui->verticalLayout->insertWidget(3, _linkWidget);
|
||||
_manager->fetchShares(_sharePath);
|
||||
}
|
||||
}
|
||||
|
||||
void ShareDialog::slotCreateLinkShare()
|
||||
{
|
||||
_manager->createLinkShare(_sharePath, QString(), QString());
|
||||
}
|
||||
|
||||
|
||||
void ShareDialog::slotDeleteShare()
|
||||
{
|
||||
auto sharelinkWidget = dynamic_cast<ShareLinkWidget*>(sender());
|
||||
sharelinkWidget->hide();
|
||||
_ui->verticalLayout->removeWidget(sharelinkWidget);
|
||||
_linkWidgetList.removeAll(sharelinkWidget);
|
||||
initLinkShareWidget();
|
||||
}
|
||||
|
||||
void ShareDialog::slotThumbnailFetched(const int &statusCode, const QByteArray &reply)
|
||||
{
|
||||
if (statusCode != 200) {
|
||||
@ -237,8 +328,10 @@ void ShareDialog::slotAccountStateChanged(int state)
|
||||
_userGroupWidget->setEnabled(enabled);
|
||||
}
|
||||
|
||||
if (_linkWidget != nullptr) {
|
||||
_linkWidget->setEnabled(enabled);
|
||||
if(_linkWidgetList.size() > 0){
|
||||
foreach(ShareLinkWidget *widget, _linkWidgetList){
|
||||
widget->setEnabled(state);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -19,6 +19,7 @@
|
||||
#include "sharepermissions.h"
|
||||
#include "owncloudgui.h"
|
||||
|
||||
#include <QSharedPointer>
|
||||
#include <QPointer>
|
||||
#include <QString>
|
||||
#include <QDialog>
|
||||
@ -34,6 +35,9 @@ namespace Ui {
|
||||
|
||||
class ShareLinkWidget;
|
||||
class ShareUserGroupWidget;
|
||||
class ShareManager;
|
||||
class LinkShare;
|
||||
class Share;
|
||||
|
||||
class ShareDialog : public QDialog
|
||||
{
|
||||
@ -56,8 +60,19 @@ private slots:
|
||||
void slotThumbnailFetched(const int &statusCode, const QByteArray &reply);
|
||||
void slotAccountStateChanged(int state);
|
||||
|
||||
void slotSharesFetched(const QList<QSharedPointer<Share>> &shares);
|
||||
void slotAddLinkShareWidget(const QSharedPointer<LinkShare> &linkShare);
|
||||
void slotDeleteShare();
|
||||
void slotCreateLinkShare();
|
||||
void slotAdjustScrollWidgetSize();
|
||||
|
||||
signals:
|
||||
void toggleAnimation(bool);
|
||||
|
||||
private:
|
||||
void showSharingUi();
|
||||
void addLinkShareWidget(const QSharedPointer<LinkShare> &linkShare);
|
||||
void initLinkShareWidget();
|
||||
|
||||
Ui::ShareDialog *_ui;
|
||||
|
||||
@ -68,8 +83,10 @@ private:
|
||||
QByteArray _numericFileId;
|
||||
QString _privateLinkUrl;
|
||||
ShareDialogStartPage _startPage;
|
||||
ShareManager *_manager;
|
||||
|
||||
ShareLinkWidget *_linkWidget;
|
||||
QList<ShareLinkWidget*> _linkWidgetList;
|
||||
ShareLinkWidget* _emptyShareLinkWidget;
|
||||
ShareUserGroupWidget *_userGroupWidget;
|
||||
QProgressIndicator *_progressIndicator;
|
||||
};
|
||||
|
@ -17,9 +17,8 @@
|
||||
#include "sharelinkwidget.h"
|
||||
#include "account.h"
|
||||
#include "capabilities.h"
|
||||
|
||||
#include "sharemanager.h"
|
||||
#include "guiutility.h"
|
||||
#include "sharemanager.h"
|
||||
|
||||
#include "QProgressIndicator.h"
|
||||
#include <QBuffer>
|
||||
@ -29,9 +28,12 @@
|
||||
#include <QMessageBox>
|
||||
#include <QMenu>
|
||||
#include <QToolButton>
|
||||
#include <QPropertyAnimation>
|
||||
|
||||
namespace OCC {
|
||||
|
||||
Q_LOGGING_CATEGORY(lcShareLink, "nextcloud.gui.sharelink", QtInfoMsg)
|
||||
|
||||
ShareLinkWidget::ShareLinkWidget(AccountPtr account,
|
||||
const QString &sharePath,
|
||||
const QString &localPath,
|
||||
@ -42,13 +44,11 @@ ShareLinkWidget::ShareLinkWidget(AccountPtr account,
|
||||
, _account(account)
|
||||
, _sharePath(sharePath)
|
||||
, _localPath(localPath)
|
||||
, _manager(nullptr)
|
||||
, _linkShare(nullptr)
|
||||
, _passwordRequired(false)
|
||||
, _expiryRequired(false)
|
||||
, _namesSupported(true)
|
||||
, _linkContextMenu(nullptr)
|
||||
, _copyLinkAction(nullptr)
|
||||
, _readOnlyLinkAction(nullptr)
|
||||
, _allowEditingLinkAction(nullptr)
|
||||
, _allowUploadEditingLinkAction(nullptr)
|
||||
@ -68,26 +68,26 @@ ShareLinkWidget::ShareLinkWidget(AccountPtr account,
|
||||
QFileInfo fi(localPath);
|
||||
_isFile = fi.isFile();
|
||||
|
||||
connect(_ui->enableShareLink, &QCheckBox::toggled, this, &ShareLinkWidget::slotCreateOrDeleteShareLink);
|
||||
connect(_ui->enableShareLink, &QPushButton::clicked, this, &ShareLinkWidget::slotCreateShareLink);
|
||||
connect(_ui->lineEdit_password, &QLineEdit::returnPressed, this, &ShareLinkWidget::slotCreatePassword);
|
||||
connect(_ui->confirmPassword, &QAbstractButton::clicked, this, &ShareLinkWidget::slotCreatePassword);
|
||||
connect(_ui->confirmExpirationDate, &QAbstractButton::clicked, this, &ShareLinkWidget::slotSetExpireDate);
|
||||
connect(_ui->calendar, &QDateTimeEdit::dateChanged, this, &ShareLinkWidget::slotExpireDateChanged);
|
||||
connect(_ui->calendar, &QDateTimeEdit::dateChanged, this, &ShareLinkWidget::slotSetExpireDate);
|
||||
|
||||
_ui->errorLabel->hide();
|
||||
|
||||
bool sharingPossible = true;
|
||||
if (!_account->capabilities().sharePublicLink()) {
|
||||
qCWarning(lcSharing) << "Link shares have been disabled";
|
||||
qCWarning(lcShareLink) << "Link shares have been disabled";
|
||||
sharingPossible = false;
|
||||
} else if (!(maxSharingPermissions & SharePermissionShare)) {
|
||||
qCWarning(lcSharing) << "The file can not be shared because it was shared without sharing permission.";
|
||||
qCWarning(lcShareLink) << "The file can not be shared because it was shared without sharing permission.";
|
||||
sharingPossible = false;
|
||||
}
|
||||
|
||||
_ui->createShareButton->setVisible(sharingPossible);
|
||||
_ui->enableShareLink->setVisible(sharingPossible);
|
||||
_ui->shareLinkToolButton->setVisible(sharingPossible);
|
||||
_ui->enableShareLink->setChecked(false);
|
||||
_ui->shareLinkToolButton->setEnabled(false);
|
||||
_ui->shareLinkToolButton->hide();
|
||||
|
||||
// Older servers don't support multiple public link shares
|
||||
if (!_account->capabilities().sharePublicLinkMultiple()) {
|
||||
@ -100,34 +100,9 @@ ShareLinkWidget::ShareLinkWidget(AccountPtr account,
|
||||
|
||||
// check if the file is already inside of a synced folder
|
||||
if (sharePath.isEmpty()) {
|
||||
// The file is not yet in an ownCloud synced folder. We could automatically
|
||||
// copy it over, but that is skipped as not all questions can be answered that
|
||||
// are involved in that, see https://github.com/owncloud/client/issues/2732
|
||||
//
|
||||
// _ui->checkBox_shareLink->setEnabled(false);
|
||||
// uploadExternalFile();
|
||||
qCWarning(lcSharing) << "Unable to share files not in a sync folder.";
|
||||
qCWarning(lcShareLink) << "Unable to share files not in a sync folder.";
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
// TODO File Drop
|
||||
// File can't have public upload set; we also hide it if the capability isn't there
|
||||
// _ui->widget_editing->setVisible(
|
||||
// !_isFile && _account->capabilities().sharePublicLinkAllowUpload());
|
||||
//_ui->radio_uploadOnly->setVisible(
|
||||
//_account->capabilities().sharePublicLinkSupportsUploadOnly());
|
||||
|
||||
/*
|
||||
* Create the share manager and connect it properly
|
||||
*/
|
||||
if (sharingPossible) {
|
||||
_manager = new ShareManager(_account, this);
|
||||
connect(_manager, &ShareManager::sharesFetched, this, &ShareLinkWidget::slotSharesFetched);
|
||||
connect(_manager, &ShareManager::linkShareCreated, this, &ShareLinkWidget::slotCreateShareFetched);
|
||||
connect(_manager, &ShareManager::linkShareRequiresPassword, this, &ShareLinkWidget::slotCreateShareRequiresPassword);
|
||||
connect(_manager, &ShareManager::serverError, this, &ShareLinkWidget::slotServerError);
|
||||
}
|
||||
}
|
||||
|
||||
ShareLinkWidget::~ShareLinkWidget()
|
||||
@ -135,7 +110,7 @@ ShareLinkWidget::~ShareLinkWidget()
|
||||
delete _ui;
|
||||
}
|
||||
|
||||
void ShareLinkWidget::toggleAnimation(bool start){
|
||||
void ShareLinkWidget::slotToggleAnimation(bool start){
|
||||
if (start) {
|
||||
if (!_ui->progressIndicator->isAnimated())
|
||||
_ui->progressIndicator->startAnimation();
|
||||
@ -144,218 +119,170 @@ void ShareLinkWidget::toggleAnimation(bool start){
|
||||
}
|
||||
}
|
||||
|
||||
void ShareLinkWidget::getShares()
|
||||
{
|
||||
if (_manager) {
|
||||
toggleAnimation(true);
|
||||
_manager->fetchShares(_sharePath);
|
||||
}
|
||||
void ShareLinkWidget::setLinkShare(QSharedPointer<LinkShare> linkShare){
|
||||
_linkShare = linkShare;
|
||||
}
|
||||
|
||||
void ShareLinkWidget::slotSharesFetched(const QList<QSharedPointer<Share>> &shares)
|
||||
{
|
||||
const QString versionString = _account->serverVersion();
|
||||
qCInfo(lcSharing) << versionString << "Fetched" << shares.count() << "shares";
|
||||
|
||||
foreach (auto share, shares) {
|
||||
if (share->getShareType() != Share::TypeLink) {
|
||||
continue;
|
||||
}
|
||||
_linkShare = qSharedPointerDynamicCast<LinkShare>(share);
|
||||
|
||||
// Connect all shares signals to gui slots
|
||||
connect(share.data(), &Share::serverError, this, &ShareLinkWidget::slotServerError);
|
||||
connect(share.data(), &Share::shareDeleted, this, &ShareLinkWidget::slotDeleteShareFetched);
|
||||
connect(_linkShare.data(), &LinkShare::expireDateSet, this, &ShareLinkWidget::slotExpireDateSet);
|
||||
connect(_linkShare.data(), &LinkShare::passwordSet, this, &ShareLinkWidget::slotPasswordSet);
|
||||
connect(_linkShare.data(), &LinkShare::passwordSetError, this, &ShareLinkWidget::slotPasswordSetError);
|
||||
|
||||
// Prepare permissions check and create group action
|
||||
bool checked = false;
|
||||
SharePermissions perm = _linkShare->getPermissions();
|
||||
QActionGroup *permissionsGroup = new QActionGroup(this);
|
||||
|
||||
// Prepare sharing menu
|
||||
_linkContextMenu = new QMenu(this);
|
||||
|
||||
// radio button style
|
||||
permissionsGroup->setExclusive(true);
|
||||
|
||||
if(_isFile){
|
||||
checked = perm & (SharePermissionRead & SharePermissionUpdate);
|
||||
_allowEditingLinkAction = _linkContextMenu->addAction(tr("Allow Editing"));
|
||||
_allowEditingLinkAction->setCheckable(true);
|
||||
_allowEditingLinkAction->setChecked(checked);
|
||||
|
||||
} else {
|
||||
checked = perm & SharePermissionRead;
|
||||
_readOnlyLinkAction = permissionsGroup->addAction(tr("Read only"));
|
||||
_readOnlyLinkAction->setCheckable(true);
|
||||
_readOnlyLinkAction->setChecked(checked);
|
||||
|
||||
checked = perm & (SharePermissionRead &
|
||||
SharePermissionCreate &
|
||||
SharePermissionUpdate &
|
||||
SharePermissionDelete);
|
||||
_allowUploadEditingLinkAction = permissionsGroup->addAction(tr("Allow Upload && Editing"));
|
||||
_allowUploadEditingLinkAction->setCheckable(true);
|
||||
_allowUploadEditingLinkAction->setChecked(checked);
|
||||
|
||||
checked = perm & SharePermissionCreate;
|
||||
_allowUploadLinkAction = permissionsGroup->addAction(tr("File Drop (Upload Only)"));
|
||||
_allowUploadLinkAction->setCheckable(true);
|
||||
_allowUploadLinkAction->setChecked(checked);
|
||||
}
|
||||
|
||||
// Add copy action (icon only)
|
||||
_copyLinkAction = _linkContextMenu->addAction(QIcon(":/client/resources/copy.svg"),
|
||||
tr("Copy link"));
|
||||
|
||||
// Adds permissions actions (radio button style)
|
||||
if(_isFile){
|
||||
_linkContextMenu->addAction(_allowEditingLinkAction);
|
||||
} else {
|
||||
_linkContextMenu->addAction(_readOnlyLinkAction);
|
||||
_linkContextMenu->addAction(_allowUploadEditingLinkAction);
|
||||
_linkContextMenu->addAction(_allowUploadLinkAction);
|
||||
}
|
||||
|
||||
|
||||
// Adds action to display password widget (check box)
|
||||
_passwordProtectLinkAction = _linkContextMenu->addAction(tr("Password Protect"));
|
||||
_passwordProtectLinkAction->setCheckable(true);
|
||||
|
||||
if(_linkShare->isPasswordSet()){
|
||||
_passwordProtectLinkAction->setChecked(true);
|
||||
_ui->lineEdit_password->setPlaceholderText("********");
|
||||
showPasswordOptions(true);
|
||||
}
|
||||
|
||||
// If password is enforced then don't allow users to disable it
|
||||
if (_account->capabilities().sharePublicLinkEnforcePassword()) {
|
||||
_passwordProtectLinkAction->setChecked(true);
|
||||
_passwordProtectLinkAction->setEnabled(false);
|
||||
_passwordRequired = true;
|
||||
}
|
||||
|
||||
// Adds action to display expiration date widget (check box)
|
||||
_expirationDateLinkAction = _linkContextMenu->addAction(tr("Expiration Date"));
|
||||
_expirationDateLinkAction->setCheckable(true);
|
||||
if(_linkShare->getExpireDate().isValid()){
|
||||
_ui->calendar->setDate(_linkShare->getExpireDate());
|
||||
_expirationDateLinkAction->setChecked(true);
|
||||
showExpireDateOptions(true);
|
||||
}
|
||||
|
||||
|
||||
// If expiredate is enforced do not allow disable and set max days
|
||||
if (_account->capabilities().sharePublicLinkEnforceExpireDate()) {
|
||||
_ui->calendar->setMaximumDate(QDate::currentDate().addDays(
|
||||
_account->capabilities().sharePublicLinkExpireDateDays()));
|
||||
_expirationDateLinkAction->setChecked(true);
|
||||
_expirationDateLinkAction->setEnabled(false);
|
||||
_expiryRequired = true;
|
||||
}
|
||||
|
||||
// Adds action to unshare widget (check box)
|
||||
_unshareLinkAction = _linkContextMenu->addAction(QIcon(":/client/resources/delete.png"),
|
||||
tr("Unshare"));
|
||||
|
||||
connect(_linkContextMenu, &QMenu::triggered,
|
||||
this, &ShareLinkWidget::slotLinkContextMenuActionTriggered);
|
||||
|
||||
_ui->shareLinkToolButton->setMenu(_linkContextMenu);
|
||||
_ui->shareLinkToolButton->setEnabled(true);
|
||||
_ui->enableShareLink->setEnabled(true);
|
||||
_ui->enableShareLink->setChecked(true);
|
||||
|
||||
// show sharing options
|
||||
_ui->shareLinkToolButton->show();
|
||||
}
|
||||
|
||||
toggleAnimation(false);
|
||||
QSharedPointer<LinkShare> ShareLinkWidget::getLinkShare(){
|
||||
return _linkShare;
|
||||
}
|
||||
|
||||
void ShareLinkWidget::setExpireDate(const QDate &date)
|
||||
{
|
||||
if (_linkShare) {
|
||||
toggleAnimation(true);
|
||||
_ui->errorLabel->hide();
|
||||
_linkShare->setExpireDate(date);
|
||||
void ShareLinkWidget::setupUiOptions(){
|
||||
connect(_linkShare.data(), &LinkShare::expireDateSet, this, &ShareLinkWidget::slotExpireDateSet);
|
||||
connect(_linkShare.data(), &LinkShare::passwordSet, this, &ShareLinkWidget::slotPasswordSet);
|
||||
connect(_linkShare.data(), &LinkShare::passwordSetError, this, &ShareLinkWidget::slotPasswordSetError);
|
||||
|
||||
// Prepare permissions check and create group action
|
||||
const QDate expireDate = _linkShare.data()->getExpireDate().isValid()? _linkShare.data()->getExpireDate() : QDate();
|
||||
const SharePermissions perm = _linkShare.data()->getPermissions();
|
||||
bool checked = false;
|
||||
QActionGroup *permissionsGroup = new QActionGroup(this);
|
||||
|
||||
// Prepare sharing menu
|
||||
_linkContextMenu = new QMenu(this);
|
||||
|
||||
// radio button style
|
||||
permissionsGroup->setExclusive(true);
|
||||
|
||||
if(_isFile){
|
||||
checked = perm & (SharePermissionRead & SharePermissionUpdate);
|
||||
_allowEditingLinkAction = _linkContextMenu->addAction(tr("Allow Editing"));
|
||||
_allowEditingLinkAction->setCheckable(true);
|
||||
_allowEditingLinkAction->setChecked(checked);
|
||||
|
||||
} else {
|
||||
checked = perm & SharePermissionRead;
|
||||
_readOnlyLinkAction = permissionsGroup->addAction(tr("Read only"));
|
||||
_readOnlyLinkAction->setCheckable(true);
|
||||
_readOnlyLinkAction->setChecked(checked);
|
||||
|
||||
checked = perm & (SharePermissionRead &
|
||||
SharePermissionCreate &
|
||||
SharePermissionUpdate &
|
||||
SharePermissionDelete);
|
||||
_allowUploadEditingLinkAction = permissionsGroup->addAction(tr("Allow Upload && Editing"));
|
||||
_allowUploadEditingLinkAction->setCheckable(true);
|
||||
_allowUploadEditingLinkAction->setChecked(checked);
|
||||
|
||||
checked = perm & SharePermissionCreate;
|
||||
_allowUploadLinkAction = permissionsGroup->addAction(tr("File Drop (Upload Only)"));
|
||||
_allowUploadLinkAction->setCheckable(true);
|
||||
_allowUploadLinkAction->setChecked(checked);
|
||||
}
|
||||
|
||||
// Adds permissions actions (radio button style)
|
||||
if(_isFile){
|
||||
_linkContextMenu->addAction(_allowEditingLinkAction);
|
||||
} else {
|
||||
_linkContextMenu->addAction(_readOnlyLinkAction);
|
||||
_linkContextMenu->addAction(_allowUploadEditingLinkAction);
|
||||
_linkContextMenu->addAction(_allowUploadLinkAction);
|
||||
}
|
||||
|
||||
// Adds action to display password widget (check box)
|
||||
_passwordProtectLinkAction = _linkContextMenu->addAction(tr("Password Protect"));
|
||||
_passwordProtectLinkAction->setCheckable(true);
|
||||
|
||||
if(_linkShare.data()->isPasswordSet()){
|
||||
_passwordProtectLinkAction->setChecked(true);
|
||||
_ui->lineEdit_password->setPlaceholderText("********");
|
||||
showPasswordOptions(true);
|
||||
}
|
||||
|
||||
// If password is enforced then don't allow users to disable it
|
||||
if (_account->capabilities().sharePublicLinkEnforcePassword()) {
|
||||
_passwordProtectLinkAction->setChecked(true);
|
||||
_passwordProtectLinkAction->setEnabled(false);
|
||||
_passwordRequired = true;
|
||||
}
|
||||
|
||||
// Adds action to display expiration date widget (check box)
|
||||
_expirationDateLinkAction = _linkContextMenu->addAction(tr("Expiration Date"));
|
||||
_expirationDateLinkAction->setCheckable(true);
|
||||
if(!expireDate.isNull()){
|
||||
_ui->calendar->setDate(expireDate);
|
||||
_expirationDateLinkAction->setChecked(true);
|
||||
showExpireDateOptions(true);
|
||||
}
|
||||
|
||||
// If expiredate is enforced do not allow disable and set max days
|
||||
if (_account->capabilities().sharePublicLinkEnforceExpireDate()) {
|
||||
_ui->calendar->setMaximumDate(QDate::currentDate().addDays(
|
||||
_account->capabilities().sharePublicLinkExpireDateDays()));
|
||||
_expirationDateLinkAction->setChecked(true);
|
||||
_expirationDateLinkAction->setEnabled(false);
|
||||
_expiryRequired = true;
|
||||
}
|
||||
|
||||
// Adds action to unshare widget (check box)
|
||||
_unshareLinkAction = _linkContextMenu->addAction(QIcon(":/client/resources/delete.png"),
|
||||
tr("Unshare"));
|
||||
|
||||
_linkContextMenu->addSeparator();
|
||||
|
||||
_addAnotherLinkAction = _linkContextMenu->addAction(QIcon(":/client/resources/add.png"),
|
||||
tr("Add another link"));
|
||||
|
||||
_ui->enableShareLink->setIcon(QIcon(":/client/resources/copy.svg"));
|
||||
disconnect(_ui->enableShareLink, &QPushButton::clicked, this, &ShareLinkWidget::slotCreateShareLink);
|
||||
connect(_ui->enableShareLink, &QPushButton::clicked, this, &ShareLinkWidget::slotCopyLinkShare);
|
||||
|
||||
connect(_linkContextMenu, &QMenu::triggered,
|
||||
this, &ShareLinkWidget::slotLinkContextMenuActionTriggered);
|
||||
|
||||
_ui->shareLinkToolButton->setMenu(_linkContextMenu);
|
||||
_ui->shareLinkToolButton->setEnabled(true);
|
||||
_ui->enableShareLink->setEnabled(true);
|
||||
_ui->enableShareLink->setChecked(true);
|
||||
|
||||
// show sharing options
|
||||
_ui->shareLinkToolButton->show();
|
||||
|
||||
//TO DO
|
||||
//startAnimation(0, height());
|
||||
}
|
||||
|
||||
void ShareLinkWidget::slotCopyLinkShare(bool clicked){
|
||||
Q_UNUSED(clicked);
|
||||
|
||||
QApplication::clipboard()->setText(_linkShare->getLink().toString());
|
||||
}
|
||||
|
||||
void ShareLinkWidget::slotExpireDateSet()
|
||||
{
|
||||
toggleAnimation(false);
|
||||
}
|
||||
|
||||
void ShareLinkWidget::slotExpireDateChanged(const QDate &date)
|
||||
{
|
||||
setExpireDate(date);
|
||||
slotToggleAnimation(false);
|
||||
}
|
||||
|
||||
void ShareLinkWidget::slotSetExpireDate()
|
||||
{
|
||||
slotExpireDateChanged(_ui->calendar->date());
|
||||
if(!_linkShare){
|
||||
return;
|
||||
}
|
||||
|
||||
slotToggleAnimation(true);
|
||||
_ui->errorLabel->hide();
|
||||
_linkShare->setExpireDate(_ui->calendar->date());
|
||||
}
|
||||
|
||||
void ShareLinkWidget::slotCreatePassword()
|
||||
{
|
||||
if (!_manager) {
|
||||
return;
|
||||
}
|
||||
|
||||
toggleAnimation(true);
|
||||
|
||||
if (!_linkShare) {
|
||||
// If share creation requires a password, we'll be in this case
|
||||
if (_ui->lineEdit_password->text().isEmpty()) {
|
||||
_ui->lineEdit_password->setFocus();
|
||||
return;
|
||||
}
|
||||
|
||||
_manager->createLinkShare(_sharePath, QString(), _ui->lineEdit_password->text());
|
||||
} else {
|
||||
setPassword(_ui->lineEdit_password->text());
|
||||
}
|
||||
}
|
||||
|
||||
void ShareLinkWidget::slotCreateOrDeleteShareLink(bool checked)
|
||||
{
|
||||
if (!_manager) {
|
||||
qCWarning(lcSharing) << "No share manager set.";
|
||||
return;
|
||||
}
|
||||
|
||||
toggleAnimation(true);
|
||||
|
||||
if(checked){
|
||||
_manager->createLinkShare(_sharePath, QString(), QString());
|
||||
} else {
|
||||
if (!_linkShare) {
|
||||
qCWarning(lcSharing) << "No public link set.";
|
||||
return;
|
||||
}
|
||||
confirmAndDeleteShare();
|
||||
}
|
||||
slotToggleAnimation(true);
|
||||
_ui->errorLabel->hide();
|
||||
_linkShare->setPassword(_ui->lineEdit_password->text());
|
||||
}
|
||||
|
||||
void ShareLinkWidget::setPassword(const QString &password)
|
||||
void ShareLinkWidget::slotCreateShareLink(bool clicked)
|
||||
{
|
||||
if (_linkShare) {
|
||||
toggleAnimation(true);
|
||||
|
||||
_ui->errorLabel->hide();
|
||||
_linkShare->setPassword(password);
|
||||
}
|
||||
slotToggleAnimation(true);
|
||||
emit createLinkShare();
|
||||
}
|
||||
|
||||
void ShareLinkWidget::slotPasswordSet()
|
||||
{
|
||||
if (!_linkShare)
|
||||
return;
|
||||
|
||||
_ui->lineEdit_password->setText(QString());
|
||||
if (_linkShare->isPasswordSet()) {
|
||||
_ui->lineEdit_password->setPlaceholderText("********");
|
||||
@ -364,39 +291,55 @@ void ShareLinkWidget::slotPasswordSet()
|
||||
_ui->lineEdit_password->setPlaceholderText(QString());
|
||||
}
|
||||
|
||||
toggleAnimation(false);
|
||||
slotToggleAnimation(false);
|
||||
}
|
||||
|
||||
/*
|
||||
* When setting/deleting a password from a share the old share is
|
||||
* deleted and a new one is created. So we need to refetch the shares
|
||||
* at this point.
|
||||
*
|
||||
* NOTE: I don't see this happening with oC > 10
|
||||
*/
|
||||
getShares();
|
||||
void ShareLinkWidget::startAnimation(const int start, const int end){
|
||||
|
||||
QPropertyAnimation *animation = new QPropertyAnimation(this, "maximumHeight", this);
|
||||
|
||||
animation->setDuration(500);
|
||||
animation->setStartValue(start);
|
||||
animation->setEndValue(end);
|
||||
|
||||
connect(animation, &QAbstractAnimation::finished, this, &ShareLinkWidget::slotAnimationFinished);
|
||||
if(end < start) // that is to remove the widget, not to show it
|
||||
connect(animation, &QAbstractAnimation::finished, this, &ShareLinkWidget::slotDeleteAnimationFinished);
|
||||
connect(animation, &QVariantAnimation::valueChanged, this, &ShareLinkWidget::resizeRequested);
|
||||
|
||||
animation->start();
|
||||
}
|
||||
|
||||
void ShareLinkWidget::slotDeleteShareFetched()
|
||||
{
|
||||
toggleAnimation(true);
|
||||
slotToggleAnimation(false);
|
||||
|
||||
// TODO
|
||||
//startAnimation(height(), 0);
|
||||
|
||||
_linkShare.clear();
|
||||
_ui->enableShareLink->setChecked(false);
|
||||
_ui->shareLinkToolButton->setEnabled(false);
|
||||
_ui->shareLinkToolButton->hide();
|
||||
togglePasswordOptions(false);
|
||||
toggleExpireDateOptions(false);
|
||||
getShares();
|
||||
emit deleteLinkShare();
|
||||
}
|
||||
|
||||
void ShareLinkWidget::slotCreateShareFetched()
|
||||
void ShareLinkWidget::slotAnimationFinished()
|
||||
{
|
||||
toggleAnimation(true);
|
||||
getShares();
|
||||
emit resizeRequested();
|
||||
deleteLater();
|
||||
}
|
||||
|
||||
void ShareLinkWidget::slotDeleteAnimationFinished()
|
||||
{
|
||||
// There is a painting bug where a small line of this widget isn't
|
||||
// properly cleared. This explicit repaint() call makes sure any trace of
|
||||
// the share widget is removed once it's destroyed. #4189
|
||||
connect(this, SIGNAL(destroyed(QObject *)), parentWidget(), SLOT(repaint()));
|
||||
}
|
||||
|
||||
void ShareLinkWidget::slotCreateShareRequiresPassword(const QString &message)
|
||||
{
|
||||
toggleAnimation(true);
|
||||
slotToggleAnimation(true);
|
||||
|
||||
showPasswordOptions(true);
|
||||
if (!message.isEmpty()) {
|
||||
@ -468,8 +411,10 @@ void ShareLinkWidget::confirmAndDeleteShare()
|
||||
|
||||
connect(messageBox, &QMessageBox::finished, this,
|
||||
[messageBox, yesButton, this]() {
|
||||
if (messageBox->clickedButton() == yesButton)
|
||||
if (messageBox->clickedButton() == yesButton) {
|
||||
this->slotToggleAnimation(true);
|
||||
this->_linkShare->deleteShare();
|
||||
}
|
||||
});
|
||||
messageBox->open();
|
||||
}
|
||||
@ -495,8 +440,8 @@ void ShareLinkWidget::slotLinkContextMenuActionTriggered(QAction *action)
|
||||
bool state = action->isChecked();
|
||||
SharePermissions perm = SharePermissionRead;
|
||||
|
||||
if (action == _copyLinkAction) {
|
||||
QApplication::clipboard()->setText(_linkShare->getLink().toString());
|
||||
if(action == _addAnotherLinkAction){
|
||||
emit createLinkShare();
|
||||
|
||||
} else if (action == _readOnlyLinkAction && state) {
|
||||
_linkShare->setPermissions(perm);
|
||||
@ -520,13 +465,13 @@ void ShareLinkWidget::slotLinkContextMenuActionTriggered(QAction *action)
|
||||
toggleExpireDateOptions(state);
|
||||
|
||||
} else if (action == _unshareLinkAction) {
|
||||
slotCreateOrDeleteShareLink(state);
|
||||
confirmAndDeleteShare();
|
||||
}
|
||||
}
|
||||
|
||||
void ShareLinkWidget::slotServerError(int code, const QString &message)
|
||||
{
|
||||
toggleAnimation(false);
|
||||
slotToggleAnimation(false);
|
||||
|
||||
qCWarning(lcSharing) << "Error from server" << code << message;
|
||||
displayError(message);
|
||||
|
@ -37,7 +37,6 @@ class QuotaInfo;
|
||||
class SyncResult;
|
||||
class LinkShare;
|
||||
class Share;
|
||||
class ShareManager;
|
||||
|
||||
/**
|
||||
* @brief The ShareDialog class
|
||||
@ -54,44 +53,51 @@ public:
|
||||
SharePermissions maxSharingPermissions,
|
||||
QWidget *parent = nullptr);
|
||||
~ShareLinkWidget();
|
||||
void getShares();
|
||||
|
||||
void toggleButton(bool show);
|
||||
void setupUiOptions();
|
||||
|
||||
void setLinkShare(QSharedPointer<LinkShare> linkShare);
|
||||
QSharedPointer<LinkShare> getLinkShare();
|
||||
|
||||
public slots:
|
||||
void slotDeleteShareFetched();
|
||||
void slotToggleAnimation(bool start);
|
||||
void slotServerError(int code, const QString &message);
|
||||
void slotCreateShareRequiresPassword(const QString &message);
|
||||
|
||||
private slots:
|
||||
void slotSharesFetched(const QList<QSharedPointer<Share>> &shares);
|
||||
//void slotShareSelectionChanged();
|
||||
void slotCreateShareLink(bool clicked);
|
||||
|
||||
void slotCreateOrDeleteShareLink(bool checked);
|
||||
void slotCreatePassword();
|
||||
void slotPasswordSet();
|
||||
void slotPasswordSetError(int code, const QString &message);
|
||||
|
||||
void slotExpireDateChanged(const QDate &date);
|
||||
void slotSetExpireDate();
|
||||
void slotExpireDateSet();
|
||||
|
||||
void slotContextMenuButtonClicked();
|
||||
void slotLinkContextMenuActionTriggered(QAction *action);
|
||||
|
||||
void slotDeleteShareFetched();
|
||||
void slotCreateShareFetched();
|
||||
void slotCreateShareRequiresPassword(const QString &message);
|
||||
void slotDeleteAnimationFinished();
|
||||
void slotAnimationFinished();
|
||||
|
||||
void slotPasswordSet();
|
||||
void slotExpireDateSet();
|
||||
|
||||
void slotServerError(int code, const QString &message);
|
||||
void slotPasswordSetError(int code, const QString &message);
|
||||
signals:
|
||||
void createLinkShare();
|
||||
void deleteLinkShare();
|
||||
void resizeRequested();
|
||||
void visualDeletionDone();
|
||||
|
||||
private:
|
||||
void displayError(const QString &errMsg);
|
||||
|
||||
void showPasswordOptions(bool show);
|
||||
void togglePasswordOptions(bool enable);
|
||||
void setPassword(const QString &password);
|
||||
|
||||
void showExpireDateOptions(bool show);
|
||||
void toggleExpireDateOptions(bool enable);
|
||||
void setExpireDate(const QDate &date);
|
||||
|
||||
void copyShareLink(const QUrl &url);
|
||||
void slotCopyLinkShare(bool clicked);
|
||||
|
||||
/** Confirm with the user and then delete the share */
|
||||
void confirmAndDeleteShare();
|
||||
@ -99,7 +105,7 @@ private:
|
||||
/** Retrieve a share's name, accounting for _namesSupported */
|
||||
QString shareName() const;
|
||||
|
||||
void toggleAnimation(bool start);
|
||||
void startAnimation(const int start, const int end);
|
||||
|
||||
Ui::ShareLinkWidget *_ui;
|
||||
AccountPtr _account;
|
||||
@ -107,7 +113,6 @@ private:
|
||||
QString _localPath;
|
||||
QString _shareUrl;
|
||||
|
||||
ShareManager *_manager;
|
||||
QSharedPointer<LinkShare> _linkShare;
|
||||
|
||||
bool _isFile;
|
||||
@ -116,7 +121,6 @@ private:
|
||||
bool _namesSupported;
|
||||
|
||||
QMenu *_linkContextMenu;
|
||||
QAction *_copyLinkAction;
|
||||
QAction *_readOnlyLinkAction;
|
||||
QAction *_allowEditingLinkAction;
|
||||
QAction *_allowUploadEditingLinkAction;
|
||||
@ -124,6 +128,7 @@ private:
|
||||
QAction *_passwordProtectLinkAction;
|
||||
QAction *_expirationDateLinkAction;
|
||||
QAction *_unshareLinkAction;
|
||||
QAction *_addAnotherLinkAction;
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -7,7 +7,7 @@
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>350</width>
|
||||
<height>126</height>
|
||||
<height>136</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="sizePolicy">
|
||||
@ -68,7 +68,7 @@
|
||||
</spacer>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QProgressIndicator" name="progressIndicator"/>
|
||||
<widget class="QProgressIndicator" name="progressIndicator" native="true"/>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="horizontalSpacer_2">
|
||||
@ -84,9 +84,19 @@
|
||||
</spacer>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="enableShareLink">
|
||||
<widget class="QPushButton" name="enableShareLink">
|
||||
<property name="text">
|
||||
<string>Enable</string>
|
||||
<string/>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset resource="../../client.qrc">
|
||||
<normaloff>:/client/resources/add.png</normaloff>:/client/resources/add.png</iconset>
|
||||
</property>
|
||||
<property name="checkable">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="flat">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
|
@ -382,7 +382,7 @@ qint64 OwncloudAdvancedSetupPage::availableLocalSpace() const
|
||||
|
||||
QString OwncloudAdvancedSetupPage::checkLocalSpace(qint64 remoteSize) const
|
||||
{
|
||||
return (availableLocalSpace()>remoteSize) ? QString() : tr("There is no enough free space in the local folder!");
|
||||
return (availableLocalSpace()>remoteSize) ? QString() : tr("There isn't enough free space in the local folder!");
|
||||
}
|
||||
|
||||
} // namespace OCC
|
||||
|
@ -750,7 +750,7 @@ void ConfigFile::setMoveToTrash(bool isChecked)
|
||||
bool ConfigFile::promptDeleteFiles() const
|
||||
{
|
||||
QSettings settings(configFile(), QSettings::IniFormat);
|
||||
return settings.value(QLatin1String(promptDeleteC), true).toBool();
|
||||
return settings.value(QLatin1String(promptDeleteC), false).toBool();
|
||||
}
|
||||
|
||||
void ConfigFile::setPromptDeleteFiles(bool promptDeleteFiles)
|
||||
|
@ -26,6 +26,8 @@
|
||||
#include "propagateremotedelete.h"
|
||||
#include "propagatedownload.h"
|
||||
#include "common/asserts.h"
|
||||
#include "configfile.h"
|
||||
|
||||
|
||||
#ifdef Q_OS_WIN
|
||||
#include <windows.h>
|
||||
@ -1035,7 +1037,8 @@ void SyncEngine::slotDiscoveryJobFinished(int discoveryResult)
|
||||
}
|
||||
}
|
||||
|
||||
if (!_hasNoneFiles && _hasRemoveFile) {
|
||||
ConfigFile cfgFile;
|
||||
if (!_hasNoneFiles && _hasRemoveFile && cfgFile.promptDeleteFiles()) {
|
||||
qCInfo(lcEngine) << "All the files are going to be changed, asking the user";
|
||||
bool cancel = false;
|
||||
emit aboutToRemoveAllFiles(syncItems.first()->_direction, &cancel);
|
||||
|
@ -8,6 +8,7 @@
|
||||
#include <QtTest>
|
||||
#include "syncenginetestutils.h"
|
||||
#include <syncengine.h>
|
||||
#include <configfile.h>
|
||||
|
||||
using namespace OCC;
|
||||
|
||||
@ -48,6 +49,8 @@ private slots:
|
||||
{
|
||||
QFETCH(bool, deleteOnRemote);
|
||||
FakeFolder fakeFolder{FileInfo::A12_B12_C12_S12()};
|
||||
ConfigFile config;
|
||||
config.setPromptDeleteFiles(true);
|
||||
|
||||
//Just set a blacklist so we can check it is still there. This directory does not exists but
|
||||
// that does not matter for our purposes.
|
||||
|
@ -1871,8 +1871,8 @@ for additional privileges during the process.</source>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.cpp" line="385"/>
|
||||
<source>There is no enough free space in the local folder!</source>
|
||||
<translation>В локалната папка няма достатъчно свободно място!</translation>
|
||||
<source>There isn't enough free space in the local folder!</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@ -2563,7 +2563,7 @@ It is not advisable to use it.</source>
|
||||
<message>
|
||||
<location filename="../src/gui/settingsdialogmac.cpp" line="155"/>
|
||||
<source>Activity</source>
|
||||
<translation>Активности</translation>
|
||||
<translation>Активност</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/settingsdialogmac.cpp" line="106"/>
|
||||
@ -3760,7 +3760,7 @@ It is not advisable to use it.</source>
|
||||
<message>
|
||||
<location filename="../src/gui/wizard/owncloudsetupnocredspage.ui" line="288"/>
|
||||
<source>Server Address</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Адрес на сървъра</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/wizard/owncloudsetupnocredspage.ui" line="304"/>
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1886,7 +1886,7 @@ můžete být požádáni o dodatečná oprávnění.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.cpp" line="385"/>
|
||||
<source>There is no enough free space in the local folder!</source>
|
||||
<source>There isn't enough free space in the local folder!</source>
|
||||
<translation>V místní složce není dostatek volného místa!</translation>
|
||||
</message>
|
||||
</context>
|
||||
|
4124
translations/client_da.ts
Normal file
4124
translations/client_da.ts
Normal file
File diff suppressed because it is too large
Load Diff
@ -1886,7 +1886,7 @@ for additional privileges during the process.</source>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.cpp" line="385"/>
|
||||
<source>There is no enough free space in the local folder!</source>
|
||||
<source>There isn't enough free space in the local folder!</source>
|
||||
<translation>Nicht genug freier Platz im lokalen Verzeichnis vorhanden!</translation>
|
||||
</message>
|
||||
</context>
|
||||
|
@ -1876,7 +1876,7 @@ for additional privileges during the process.</source>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.cpp" line="385"/>
|
||||
<source>There is no enough free space in the local folder!</source>
|
||||
<source>There isn't enough free space in the local folder!</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
|
@ -1893,7 +1893,7 @@ for additional privileges during the process.</source>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.cpp" line="385"/>
|
||||
<source>There is no enough free space in the local folder!</source>
|
||||
<source>There isn't enough free space in the local folder!</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
|
@ -1887,8 +1887,8 @@ for additional privileges during the process.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.cpp" line="385"/>
|
||||
<source>There is no enough free space in the local folder!</source>
|
||||
<translation>There is no enough free space in the local folder!</translation>
|
||||
<source>There isn't enough free space in the local folder!</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
@ -298,7 +298,7 @@
|
||||
<message>
|
||||
<location filename="../src/gui/accountsettings.cpp" line="931"/>
|
||||
<source>%1 as <i>%2</i></source>
|
||||
<translation>%1 kun la konto <i>%2</i></translation>
|
||||
<translation>%1 per la konto <i>%2</i></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/accountsettings.cpp" line="937"/>
|
||||
@ -1329,7 +1329,7 @@ Se vi plu sinkronigas, la sinkronigo anstataŭigos ĉiujn viajn dosierojn per an
|
||||
<message>
|
||||
<location filename="../src/gui/generalsettings.ui" line="75"/>
|
||||
<source>Use &Monochrome Icons</source>
|
||||
<translation>&Uzu unukolorajn piktogramojn</translation>
|
||||
<translation>&Uzi unukolorajn piktogramojn</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/generalsettings.ui" line="171"/>
|
||||
@ -1886,7 +1886,7 @@ for additional privileges during the process.</source>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.cpp" line="385"/>
|
||||
<source>There is no enough free space in the local folder!</source>
|
||||
<source>There isn't enough free space in the local folder!</source>
|
||||
<translation>Ne estas sufiĉe da libera spaco en la loka dosierujo!</translation>
|
||||
</message>
|
||||
</context>
|
||||
@ -3379,7 +3379,7 @@ Uzi ĝin ne konsilindas.</translation>
|
||||
<message>
|
||||
<location filename="../src/gui/creds/webflowcredentials.cpp" line="124"/>
|
||||
<source>You have been logged out of %1 as user %2. Please login again</source>
|
||||
<translation>Vi estis ensalutita de %1 kiel uzanto %2. Bv. re-ensaluti.</translation>
|
||||
<translation>Vi estis elsalutita de %1 kiel uzanto %2. Bv. re-ensaluti.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/creds/webflowcredentials.cpp" line="141"/>
|
||||
@ -3991,7 +3991,7 @@ Uzi ĝin ne konsilindas.</translation>
|
||||
<message>
|
||||
<location filename="../src/libsync/progressdispatcher.cpp" line="37"/>
|
||||
<source>Server version downloaded, copied changed local file into conflict file</source>
|
||||
<translation>Servila versio elŝutita, la ŝanĝita loka dosiero estis kopiita en konfliktan dosieron</translation>
|
||||
<translation>Servila versio elŝutita; la ŝanĝita loka dosiero estis kopiita en konfliktan dosieron</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/progressdispatcher.cpp" line="39"/>
|
||||
|
@ -1886,8 +1886,8 @@ for additional privileges during the process.</source>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.cpp" line="385"/>
|
||||
<source>There is no enough free space in the local folder!</source>
|
||||
<translation>No hay suficiente espacio libre en la carpeta local!</translation>
|
||||
<source>There isn't enough free space in the local folder!</source>
|
||||
<translation>¡No hay suficiente espacio libre en la carpeta local!</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
@ -1867,7 +1867,7 @@ for additional privileges during the process.</source>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.cpp" line="385"/>
|
||||
<source>There is no enough free space in the local folder!</source>
|
||||
<source>There isn't enough free space in the local folder!</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
|
@ -1877,7 +1877,7 @@ mas privilegios durante el proceso.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.cpp" line="385"/>
|
||||
<source>There is no enough free space in the local folder!</source>
|
||||
<source>There isn't enough free space in the local folder!</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
|
@ -1877,7 +1877,7 @@ mas privilegios durante el proceso.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.cpp" line="385"/>
|
||||
<source>There is no enough free space in the local folder!</source>
|
||||
<source>There isn't enough free space in the local folder!</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
|
@ -1877,7 +1877,7 @@ mas privilegios durante el proceso.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.cpp" line="385"/>
|
||||
<source>There is no enough free space in the local folder!</source>
|
||||
<source>There isn't enough free space in the local folder!</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
|
@ -1877,7 +1877,7 @@ mas privilegios durante el proceso.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.cpp" line="385"/>
|
||||
<source>There is no enough free space in the local folder!</source>
|
||||
<source>There isn't enough free space in the local folder!</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
|
@ -1877,7 +1877,7 @@ mas privilegios durante el proceso.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.cpp" line="385"/>
|
||||
<source>There is no enough free space in the local folder!</source>
|
||||
<source>There isn't enough free space in the local folder!</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
|
@ -1877,7 +1877,7 @@ mas privilegios durante el proceso.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.cpp" line="385"/>
|
||||
<source>There is no enough free space in the local folder!</source>
|
||||
<source>There isn't enough free space in the local folder!</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
|
@ -1877,7 +1877,7 @@ mas privilegios durante el proceso.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.cpp" line="385"/>
|
||||
<source>There is no enough free space in the local folder!</source>
|
||||
<source>There isn't enough free space in the local folder!</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
|
@ -1877,7 +1877,7 @@ mas privilegios durante el proceso.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.cpp" line="385"/>
|
||||
<source>There is no enough free space in the local folder!</source>
|
||||
<source>There isn't enough free space in the local folder!</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
|
@ -1877,7 +1877,7 @@ mas privilegios durante el proceso.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.cpp" line="385"/>
|
||||
<source>There is no enough free space in the local folder!</source>
|
||||
<source>There isn't enough free space in the local folder!</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
|
@ -1867,7 +1867,7 @@ for additional privileges during the process.</source>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.cpp" line="385"/>
|
||||
<source>There is no enough free space in the local folder!</source>
|
||||
<source>There isn't enough free space in the local folder!</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
|
@ -1871,7 +1871,7 @@ for additional privileges during the process.</source>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.cpp" line="385"/>
|
||||
<source>There is no enough free space in the local folder!</source>
|
||||
<source>There isn't enough free space in the local folder!</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
|
@ -1874,7 +1874,7 @@ for additional privileges during the process.</source>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.cpp" line="385"/>
|
||||
<source>There is no enough free space in the local folder!</source>
|
||||
<source>There isn't enough free space in the local folder!</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
|
@ -4,12 +4,12 @@
|
||||
<message>
|
||||
<location filename="../src/gui/cloudproviders/cloudproviderwrapper.cpp" line="107"/>
|
||||
<source>%1 (%2, %3)</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>%1 (%2, %3)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/cloudproviders/cloudproviderwrapper.cpp" line="124"/>
|
||||
<source>Checking for changes in '%1'</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Tarkistetaan muutoksia kohteessa '%1'</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/cloudproviders/cloudproviderwrapper.cpp" line="129"/>
|
||||
@ -39,7 +39,7 @@
|
||||
<message>
|
||||
<location filename="../src/gui/cloudproviders/cloudproviderwrapper.cpp" line="189"/>
|
||||
<source>Syncing</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Synkronoidaan</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@ -66,7 +66,7 @@
|
||||
<location filename="../src/common/filesystembase.cpp" line="459"/>
|
||||
<location filename="../src/common/filesystembase.cpp" line="465"/>
|
||||
<source>Could not move '%1' to '%2'</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>'%1' siirtäminen kohteeseen '%2' ei onnistunut</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/common/filesystembase.cpp" line="502"/>
|
||||
@ -1507,7 +1507,7 @@ Kohteet, joiden poisto on sallittu, poistetaan, jos ne estävät kansion poistam
|
||||
<message>
|
||||
<location filename="../src/gui/legalnotice.cpp" line="30"/>
|
||||
<source><p>Licensed under the GNU General Public License (GPL) Version 2.0 or any later version.</p></source>
|
||||
<translation type="unfinished"/>
|
||||
<translation><p>Lisensoitu GNU General Public -lisenssin (GPL) versiolla 2.0 tai uudemmalla.</p></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@ -1871,7 +1871,7 @@ for additional privileges during the process.</source>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.cpp" line="385"/>
|
||||
<source>There is no enough free space in the local folder!</source>
|
||||
<source>There isn't enough free space in the local folder!</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
@ -2670,7 +2670,7 @@ Osoitteen käyttäminen ei ole suositeltavaa.</translation>
|
||||
<message>
|
||||
<location filename="../src/gui/sharelinkwidget.cpp" line="205"/>
|
||||
<source>File Drop (Upload Only)</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Tiedoston pudotus (Vain lähetys)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/sharelinkwidget.cpp" line="212"/>
|
||||
@ -3761,7 +3761,7 @@ Osoitteen käyttäminen ei ole suositeltavaa.</translation>
|
||||
<message>
|
||||
<location filename="../src/gui/wizard/owncloudsetupnocredspage.ui" line="288"/>
|
||||
<source>Server Address</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Palvelimen osoite</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/wizard/owncloudsetupnocredspage.ui" line="304"/>
|
||||
|
@ -1889,7 +1889,7 @@ L'assistant de mise à jour peut vous demandez des autorisations supplémen
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.cpp" line="385"/>
|
||||
<source>There is no enough free space in the local folder!</source>
|
||||
<source>There isn't enough free space in the local folder!</source>
|
||||
<translation>L'espace libre dans le dossier local est insuffisant !</translation>
|
||||
</message>
|
||||
</context>
|
||||
|
@ -176,7 +176,7 @@
|
||||
<message>
|
||||
<location filename="../src/gui/accountsettings.ui" line="152"/>
|
||||
<source>Unchecked folders will be <b>removed</b> from your local file system and will not be synchronized to this computer anymore</source>
|
||||
<translation>Os cartafoles non seleccionados van seren <b>eliminados</b> do seu sistema de ficheiros local e non volverán sincronizarse con esta computadora</translation>
|
||||
<translation>Os cartafoles non seleccionados van seren <b>eliminados</b> do seu sistema de ficheiros local e non volverán sincronizarse con este computador</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/accountsettings.ui" line="198"/>
|
||||
@ -1888,7 +1888,7 @@ actualización pode pedir privilexios adicionais durante o procedemento.</transl
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.cpp" line="385"/>
|
||||
<source>There is no enough free space in the local folder!</source>
|
||||
<source>There isn't enough free space in the local folder!</source>
|
||||
<translation>Non hai espazo libre abondo no cartafol local!</translation>
|
||||
</message>
|
||||
</context>
|
||||
@ -2127,7 +2127,7 @@ Recomendámoslle que non o use.</translation>
|
||||
<message>
|
||||
<location filename="../src/gui/owncloudsetupwizard.cpp" line="532"/>
|
||||
<source>The remote folder creation failed because the provided credentials are wrong!<br/>Please go back and check your credentials.</p></source>
|
||||
<translation>A creación do cartafol remoto fracasou por por de seren incorrectas as credenciais!<br/>Volva atrás e comprobe as súas credenciais.</p></translation>
|
||||
<translation>A creación do cartafol remoto fracasou por mor de seren incorrectas as credenciais!<br/>Volva atrás e comprobe as súas credenciais.</p></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/owncloudsetupwizard.cpp" line="536"/>
|
||||
@ -2243,7 +2243,7 @@ Recomendámoslle que non o use.</translation>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagatedownload.cpp" line="602"/>
|
||||
<source>File was deleted from server</source>
|
||||
<translation>O ficheiro vai seren eliminado do servidor</translation>
|
||||
<translation>O ficheiro vai ser eliminado do servidor</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagatedownload.cpp" line="655"/>
|
||||
@ -2263,7 +2263,7 @@ Recomendámoslle que non o use.</translation>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagatedownload.cpp" line="882"/>
|
||||
<source>File has changed since discovery</source>
|
||||
<translation>O ficheiro cambiou após seren atopado</translation>
|
||||
<translation>O ficheiro cambiou após ser atopado</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagatedownload.cpp" line="938"/>
|
||||
@ -3825,22 +3825,22 @@ Recomendámoslle que non o use.</translation>
|
||||
<message numerus="yes">
|
||||
<location filename="../src/common/utility.cpp" line="437"/>
|
||||
<source>%n day ago</source>
|
||||
<translation><numerusform>vai %n día</numerusform><numerusform>vai %n días</numerusform></translation>
|
||||
<translation><numerusform>hai %n día</numerusform><numerusform>hai %n días</numerusform></translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<location filename="../src/common/utility.cpp" line="439"/>
|
||||
<source>%n days ago</source>
|
||||
<translation><numerusform>vai %n día</numerusform><numerusform>vai %n días</numerusform></translation>
|
||||
<translation><numerusform>hai %n día</numerusform><numerusform>hai %n días</numerusform></translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<location filename="../src/common/utility.cpp" line="449"/>
|
||||
<source>%n hour ago</source>
|
||||
<translation><numerusform>vai %n hora</numerusform><numerusform>vai %n horas</numerusform></translation>
|
||||
<translation><numerusform>hai %n hora</numerusform><numerusform>hai %n horas</numerusform></translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<location filename="../src/common/utility.cpp" line="451"/>
|
||||
<source>%n hours ago</source>
|
||||
<translation><numerusform>vai %n hora</numerusform><numerusform>vai %n horas</numerusform></translation>
|
||||
<translation><numerusform>hai %n hora</numerusform><numerusform>hai %n horas</numerusform></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/common/utility.cpp" line="458"/>
|
||||
@ -3850,22 +3850,22 @@ Recomendámoslle que non o use.</translation>
|
||||
<message>
|
||||
<location filename="../src/common/utility.cpp" line="460"/>
|
||||
<source>Less than a minute ago</source>
|
||||
<translation>Vai menos dun minuto</translation>
|
||||
<translation>Hai menos dun minuto</translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<location filename="../src/common/utility.cpp" line="464"/>
|
||||
<source>%n minute ago</source>
|
||||
<translation><numerusform>vai %n minuto</numerusform><numerusform>vai %n minutos</numerusform></translation>
|
||||
<translation><numerusform>hai %n minuto</numerusform><numerusform>hai %n minutos</numerusform></translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<location filename="../src/common/utility.cpp" line="466"/>
|
||||
<source>%n minutes ago</source>
|
||||
<translation><numerusform>vai %n minuto</numerusform><numerusform>vai %n minutos</numerusform></translation>
|
||||
<translation><numerusform>hai %n minuto</numerusform><numerusform>hai %n minutos</numerusform></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/common/utility.cpp" line="470"/>
|
||||
<source>Some time ago</source>
|
||||
<translation>Vai algún tempo</translation>
|
||||
<translation>Hai algún tempo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/syncresult.cpp" line="145"/>
|
||||
@ -3899,32 +3899,32 @@ Recomendámoslle que non o use.</translation>
|
||||
<message numerus="yes">
|
||||
<location filename="../src/common/utility.cpp" line="310"/>
|
||||
<source>%n year(s)</source>
|
||||
<translation><numerusform>vai %n ano</numerusform><numerusform>vai %n anos</numerusform></translation>
|
||||
<translation><numerusform>vai %n ano</numerusform><numerusform>hai %n anos</numerusform></translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<location filename="../src/common/utility.cpp" line="311"/>
|
||||
<source>%n month(s)</source>
|
||||
<translation><numerusform>vai %n mes</numerusform><numerusform>vai %n meses</numerusform></translation>
|
||||
<translation><numerusform>vai %n mes</numerusform><numerusform>hai %n meses</numerusform></translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<location filename="../src/common/utility.cpp" line="312"/>
|
||||
<source>%n day(s)</source>
|
||||
<translation><numerusform>vai %n día</numerusform><numerusform>vai %n días</numerusform></translation>
|
||||
<translation><numerusform>vai %n día</numerusform><numerusform>hai %n días</numerusform></translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<location filename="../src/common/utility.cpp" line="313"/>
|
||||
<source>%n hour(s)</source>
|
||||
<translation><numerusform>vai %n hora</numerusform><numerusform>vai %n horas</numerusform></translation>
|
||||
<translation><numerusform>vai %n hora</numerusform><numerusform>hai %n horas</numerusform></translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<location filename="../src/common/utility.cpp" line="314"/>
|
||||
<source>%n minute(s)</source>
|
||||
<translation><numerusform>vai %n minuto</numerusform><numerusform>vai %n minutos</numerusform></translation>
|
||||
<translation><numerusform>vai %n minuto</numerusform><numerusform>hai %n minutos</numerusform></translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<location filename="../src/common/utility.cpp" line="315"/>
|
||||
<source>%n second(s)</source>
|
||||
<translation><numerusform>vai %n segundo</numerusform><numerusform>vai %n segundos</numerusform></translation>
|
||||
<translation><numerusform>vai %n segundo</numerusform><numerusform>hai %n segundos</numerusform></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/common/utility.cpp" line="339"/>
|
||||
|
4126
translations/client_he.ts
Normal file
4126
translations/client_he.ts
Normal file
File diff suppressed because it is too large
Load Diff
@ -1886,8 +1886,8 @@ for additional privileges during the process.</source>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.cpp" line="385"/>
|
||||
<source>There is no enough free space in the local folder!</source>
|
||||
<translation>Nincs elég szabad hely a helyi mappában.</translation>
|
||||
<source>There isn't enough free space in the local folder!</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@ -3776,7 +3776,7 @@ Használata nem ajánlott.</translation>
|
||||
<message>
|
||||
<location filename="../src/gui/wizard/owncloudsetupnocredspage.ui" line="288"/>
|
||||
<source>Server Address</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Kiszolgálócím</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/wizard/owncloudsetupnocredspage.ui" line="304"/>
|
||||
|
@ -525,7 +525,7 @@ skráakerfið eða sameignarmöppur, gætu verið með önnur takmörk.</transla
|
||||
<message>
|
||||
<location filename="../src/gui/activitywidget.cpp" line="183"/>
|
||||
<source>Synced</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Samstillt</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/activitywidget.cpp" line="218"/>
|
||||
@ -1880,7 +1880,7 @@ aðgerð til að leysa málið!</small></p></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.cpp" line="385"/>
|
||||
<source>There is no enough free space in the local folder!</source>
|
||||
<source>There isn't enough free space in the local folder!</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
|
@ -1888,8 +1888,8 @@ for additional privileges during the process.</source>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.cpp" line="385"/>
|
||||
<source>There is no enough free space in the local folder!</source>
|
||||
<translation>Non c'è spazio sufficiente nella cartella locale!</translation>
|
||||
<source>There isn't enough free space in the local folder!</source>
|
||||
<translation>Non c'è spazio libero sufficiente nella cartella locale!</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
@ -519,7 +519,7 @@
|
||||
<message>
|
||||
<location filename="../src/gui/activitywidget.cpp" line="183"/>
|
||||
<source>Synced</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>同期した</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/activitywidget.cpp" line="218"/>
|
||||
@ -1289,7 +1289,7 @@ Continuing the sync as normal will cause all your files to be overwritten by an
|
||||
<message>
|
||||
<location filename="../src/gui/generalsettings.ui" line="89"/>
|
||||
<source>Show Server &Notifications</source>
|
||||
<translation>サーバーと通知を表示する</translation>
|
||||
<translation>サーバーと通知を表示(&N)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/generalsettings.ui" line="163"/>
|
||||
@ -1299,7 +1299,7 @@ Continuing the sync as normal will cause all your files to be overwritten by an
|
||||
<message>
|
||||
<location filename="../src/gui/generalsettings.ui" line="195"/>
|
||||
<source>Ask for confirmation before synchronizing folders larger than</source>
|
||||
<translation>指定された容量以上のフォルダーは同期前に確認する</translation>
|
||||
<translation>指定された容量以上のフォルダーは同期前に確認</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/generalsettings.ui" line="215"/>
|
||||
@ -1310,7 +1310,7 @@ Continuing the sync as normal will cause all your files to be overwritten by an
|
||||
<message>
|
||||
<location filename="../src/gui/generalsettings.ui" line="239"/>
|
||||
<source>Ask for confirmation before synchronizing external storages</source>
|
||||
<translation>外部ストレージと同期する前に確認する</translation>
|
||||
<translation>外部ストレージと同期する前に確認</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/generalsettings.ui" line="82"/>
|
||||
@ -1873,7 +1873,7 @@ for additional privileges during the process.</source>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.cpp" line="385"/>
|
||||
<source>There is no enough free space in the local folder!</source>
|
||||
<source>There isn't enough free space in the local folder!</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
@ -2379,7 +2379,7 @@ It is not advisable to use it.</source>
|
||||
<location filename="../src/libsync/propagateupload.cpp" line="225"/>
|
||||
<location filename="../src/libsync/propagateupload.cpp" line="602"/>
|
||||
<source>Upload of %1 exceeds the quota for the folder</source>
|
||||
<translation>%1 をアップロードするとフォルダーのクォータを超えます</translation>
|
||||
<translation>%1 をアップロードするとフォルダーのクオータを超えます</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateupload.cpp" line="334"/>
|
||||
@ -3194,7 +3194,7 @@ It is not advisable to use it.</source>
|
||||
<message>
|
||||
<location filename="../src/libsync/syncengine.cpp" line="483"/>
|
||||
<source>Symbolic links are not supported in syncing.</source>
|
||||
<translation>同期機能はシンボリックリンクをサポートしていません。</translation>
|
||||
<translation>同期機能はシンボリックリンクをサポートしていません</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/syncengine.cpp" line="486"/>
|
||||
@ -3646,7 +3646,7 @@ It is not advisable to use it.</source>
|
||||
<message>
|
||||
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="148"/>
|
||||
<source>Ask for confirmation before synchroni&zing folders larger than</source>
|
||||
<translation>指定された容量以上のフォルダーは同期前に確認する</translation>
|
||||
<translation>指定された容量以上のフォルダーは同期前に確認</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="165"/>
|
||||
@ -3657,7 +3657,7 @@ It is not advisable to use it.</source>
|
||||
<message>
|
||||
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="174"/>
|
||||
<source>Ask for confirmation before synchronizing e&xternal storages</source>
|
||||
<translation>外部ストレージと同期する前に確認する(&X)</translation>
|
||||
<translation>外部ストレージと同期する前に確認(&X)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="198"/>
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1869,7 +1869,7 @@ for additional privileges during the process.</source>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.cpp" line="385"/>
|
||||
<source>There is no enough free space in the local folder!</source>
|
||||
<source>There isn't enough free space in the local folder!</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
|
@ -1877,8 +1877,8 @@ kan be om flere rettigheter under behandlingen.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.cpp" line="385"/>
|
||||
<source>There is no enough free space in the local folder!</source>
|
||||
<translation>Det er ikke nok ledig plass i den lokale mappen!</translation>
|
||||
<source>There isn't enough free space in the local folder!</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@ -3505,7 +3505,7 @@ Det er ikke tilrådelig å bruke den.</translation>
|
||||
<location filename="../src/gui/owncloudgui.cpp" line="308"/>
|
||||
<location filename="../src/gui/owncloudgui.cpp" line="361"/>
|
||||
<source>Synchronization is paused</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Synkronisering er satt på pause</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/owncloudgui.cpp" line="356"/>
|
||||
@ -3566,7 +3566,7 @@ Det er ikke tilrådelig å bruke den.</translation>
|
||||
<message>
|
||||
<location filename="../src/gui/owncloudgui.cpp" line="841"/>
|
||||
<source>Apps</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Apper</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/owncloudgui.cpp" line="898"/>
|
||||
|
@ -1891,8 +1891,8 @@ vragen om extra autorisaties tijdens installatie.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.cpp" line="385"/>
|
||||
<source>There is no enough free space in the local folder!</source>
|
||||
<translation>Er is niet genoeg vrije ruimte in de lokale map!</translation>
|
||||
<source>There isn't enough free space in the local folder!</source>
|
||||
<translation>Er is niet genoeg ruimte beschikbaar in de lokale map!</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@ -3781,7 +3781,7 @@ We adviseren deze site niet te gebruiken.</translation>
|
||||
<message>
|
||||
<location filename="../src/gui/wizard/owncloudsetupnocredspage.ui" line="288"/>
|
||||
<source>Server Address</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Serveradres</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/wizard/owncloudsetupnocredspage.ui" line="304"/>
|
||||
|
@ -1460,9 +1460,9 @@ Kontynuacja synchronizacji w normalny sposób spowoduje, że wszystkie twoje pli
|
||||
<source>Files or folders matching a pattern will not be synchronized.
|
||||
|
||||
Items where deletion is allowed will be deleted if they prevent a directory from being removed. This is useful for meta data.</source>
|
||||
<translation>Pliki lub foldery pasujące do szablonu nie będą zsynchronizowane.
|
||||
<translation>Pliki lub katalogi pasujące do szablonu nie będą zsynchronizowane.
|
||||
|
||||
Pozycje, dla których usuwanie jest dozwolone zostaną usunięte, jeżeli uprawnienia katalogu dopuszczają usuwanie.</translation>
|
||||
Elementy, dla których usuwanie jest dozwolone zostaną usunięte, jeżeli uprawnienia katalogu dopuszczają usuwanie. Jest to przydatne dla metadanych.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/ignorelisteditor.cpp" line="133"/>
|
||||
@ -1887,8 +1887,8 @@ o dodatkowe uprawnienia podczas procesu aktualizacji.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.cpp" line="385"/>
|
||||
<source>There is no enough free space in the local folder!</source>
|
||||
<translation>Brakuje wolnego miejsca w folderze lokalnym!</translation>
|
||||
<source>There isn't enough free space in the local folder!</source>
|
||||
<translation>W katalogu lokalnym nie ma wystarczającej ilości wolnego miejsca!</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@ -2105,7 +2105,7 @@ Niezalecane jest jego użycie.</translation>
|
||||
<message>
|
||||
<location filename="../src/gui/owncloudsetupwizard.cpp" line="508"/>
|
||||
<source>creating folder on Nextcloud: %1</source>
|
||||
<translation>tworzenie folderu w usłudze NextCloud: %1</translation>
|
||||
<translation>tworzenie katalogu w Nextcloud: %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/owncloudsetupwizard.cpp" line="524"/>
|
||||
@ -3316,7 +3316,7 @@ Niezalecane jest jego użycie.</translation>
|
||||
<message>
|
||||
<location filename="../src/libsync/syncengine.cpp" line="1482"/>
|
||||
<source>Move not allowed, item restored</source>
|
||||
<translation>Przenoszenie niedozwolone, obiekt przywrócony</translation>
|
||||
<translation>Przenoszenie niedozwolone, element przywrócony</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/syncengine.cpp" line="1493"/>
|
||||
@ -4137,7 +4137,7 @@ Kliknij</translation>
|
||||
<message>
|
||||
<location filename="../src/gui/guiutility.cpp" line="58"/>
|
||||
<source>Could not open email client</source>
|
||||
<translation>Nie można uruchomić klienta email</translation>
|
||||
<translation>Nie można uruchomić klienta e-mail</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/guiutility.cpp" line="59"/>
|
||||
|
@ -1876,7 +1876,7 @@ poderá pedir por privilégios adicionais durante o processo.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.cpp" line="385"/>
|
||||
<source>There is no enough free space in the local folder!</source>
|
||||
<source>There isn't enough free space in the local folder!</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
|
@ -233,7 +233,7 @@
|
||||
<message>
|
||||
<location filename="../src/gui/accountsettings.cpp" line="234"/>
|
||||
<source>Show E2E mnemonic</source>
|
||||
<translation>Mostrar mnemônico E2E</translation>
|
||||
<translation>Exibir mnemônico E2E</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/accountsettings.cpp" line="542"/>
|
||||
@ -1298,7 +1298,7 @@ Continuar a sincronização como normal fará com que todos os seus arquivos sej
|
||||
<message>
|
||||
<location filename="../src/gui/generalsettings.ui" line="89"/>
|
||||
<source>Show Server &Notifications</source>
|
||||
<translation>Mostrar &Notificações do Servidor</translation>
|
||||
<translation>Exibir &Notificações do Servidor</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/generalsettings.ui" line="163"/>
|
||||
@ -1339,7 +1339,7 @@ Continuar a sincronização como normal fará com que todos os seus arquivos sej
|
||||
<message>
|
||||
<location filename="../src/gui/generalsettings.ui" line="250"/>
|
||||
<source>Show sync folders in &Explorer's Navigation Pane</source>
|
||||
<translation>Mostrar pastas de sincronização no &Painel de Navegação do Explorer</translation>
|
||||
<translation>Exibir pastas de sincronização no Painel de Navegação do &Explorer</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/generalsettings.ui" line="267"/>
|
||||
@ -1887,8 +1887,8 @@ pode solicitar por privilégios adicionais durante o processo.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.cpp" line="385"/>
|
||||
<source>There is no enough free space in the local folder!</source>
|
||||
<translation>Não há espaço suficiente na pasta local!</translation>
|
||||
<source>There isn't enough free space in the local folder!</source>
|
||||
<translation>Não há espaço livre na pasta local!</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
@ -102,7 +102,7 @@
|
||||
<message>
|
||||
<location filename="../src/gui/folderwizardtargetpage.ui" line="131"/>
|
||||
<source>Select a remote destination folder</source>
|
||||
<translation>Выберите папку на сервере, с которой выполняться синхронизация</translation>
|
||||
<translation>Выберите папку на сервере, с которой будет выполняться синхронизация</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/folderwizardtargetpage.ui" line="143"/>
|
||||
@ -1881,8 +1881,8 @@ for additional privileges during the process.</source>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.cpp" line="385"/>
|
||||
<source>There is no enough free space in the local folder!</source>
|
||||
<translation>Недостаточно свободного места в локальной папке.</translation>
|
||||
<source>There isn't enough free space in the local folder!</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@ -3362,12 +3362,12 @@ It is not advisable to use it.</source>
|
||||
<message>
|
||||
<location filename="../src/gui/wizard/webview.cpp" line="199"/>
|
||||
<source>Invalid certificate detected</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Обнаружен недействительный сертификат</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/wizard/webview.cpp" line="200"/>
|
||||
<source>The host "%1" provided an invalid certitiface. Continue?</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Хост «%1» предоставил недействительный сертификат. Продолжить?</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@ -3771,7 +3771,7 @@ It is not advisable to use it.</source>
|
||||
<message>
|
||||
<location filename="../src/gui/wizard/owncloudsetupnocredspage.ui" line="288"/>
|
||||
<source>Server Address</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Адрес сервера</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/wizard/owncloudsetupnocredspage.ui" line="304"/>
|
||||
|
@ -9,27 +9,27 @@
|
||||
<message>
|
||||
<location filename="../src/gui/cloudproviders/cloudproviderwrapper.cpp" line="124"/>
|
||||
<source>Checking for changes in '%1'</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Kontrolujú sa zmeny v „%1“</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/cloudproviders/cloudproviderwrapper.cpp" line="129"/>
|
||||
<source>Syncing %1 of %2 (%3 left)</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Synchronizuje sa %1 z %2 (zostáva %3)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/cloudproviders/cloudproviderwrapper.cpp" line="134"/>
|
||||
<source>Syncing %1 of %2</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Synchronizuje sa %1 z %2</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/cloudproviders/cloudproviderwrapper.cpp" line="141"/>
|
||||
<source>Syncing %1 (%2 left)</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Synchronizuje sa %1 (zostáva %2)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/cloudproviders/cloudproviderwrapper.cpp" line="144"/>
|
||||
<source>Syncing %1</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Synchronizuje sa %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/cloudproviders/cloudproviderwrapper.cpp" line="186"/>
|
||||
@ -47,7 +47,7 @@
|
||||
<message>
|
||||
<location filename="../src/gui/mnemonicdialog.ui" line="23"/>
|
||||
<source>Dialog</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Dialóg</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/mnemonicdialog.ui" line="58"/>
|
||||
@ -1876,7 +1876,7 @@ môžu byť vyžadované dodatočné oprávnenia.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.cpp" line="385"/>
|
||||
<source>There is no enough free space in the local folder!</source>
|
||||
<source>There isn't enough free space in the local folder!</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
@ -3766,7 +3766,7 @@ Nie je vhodné ju používať.</translation>
|
||||
<message>
|
||||
<location filename="../src/gui/wizard/owncloudsetupnocredspage.ui" line="288"/>
|
||||
<source>Server Address</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Adresa servera</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/wizard/owncloudsetupnocredspage.ui" line="304"/>
|
||||
@ -3813,22 +3813,22 @@ Nie je vhodné ju používať.</translation>
|
||||
<message numerus="yes">
|
||||
<location filename="../src/common/utility.cpp" line="437"/>
|
||||
<source>%n day ago</source>
|
||||
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
|
||||
<translation><numerusform>pred %n dňom</numerusform><numerusform>pred %n dňami</numerusform><numerusform>pred %n dňami</numerusform><numerusform>pred %n dňami</numerusform></translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<location filename="../src/common/utility.cpp" line="439"/>
|
||||
<source>%n days ago</source>
|
||||
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
|
||||
<translation><numerusform>pred %n dňom</numerusform><numerusform>pred %n dňami</numerusform><numerusform>pred %n dňami</numerusform><numerusform>pred %n dňami</numerusform></translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<location filename="../src/common/utility.cpp" line="449"/>
|
||||
<source>%n hour ago</source>
|
||||
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
|
||||
<translation><numerusform>pred %n hodinou</numerusform><numerusform>pred %n hodinami</numerusform><numerusform>pred %n hodinami</numerusform><numerusform>pred %n hodinami</numerusform></translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<location filename="../src/common/utility.cpp" line="451"/>
|
||||
<source>%n hours ago</source>
|
||||
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
|
||||
<translation><numerusform>pred %n hodinou</numerusform><numerusform>pred %n hodinami</numerusform><numerusform>pred %n hodinami</numerusform><numerusform>pred %n hodinami</numerusform></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/common/utility.cpp" line="458"/>
|
||||
@ -3843,12 +3843,12 @@ Nie je vhodné ju používať.</translation>
|
||||
<message numerus="yes">
|
||||
<location filename="../src/common/utility.cpp" line="464"/>
|
||||
<source>%n minute ago</source>
|
||||
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
|
||||
<translation><numerusform>pred %n minútou</numerusform><numerusform>pred %n minútami</numerusform><numerusform>pred %n minútami</numerusform><numerusform>pred %n minútami</numerusform></translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<location filename="../src/common/utility.cpp" line="466"/>
|
||||
<source>%n minutes ago</source>
|
||||
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
|
||||
<translation><numerusform>pred %n minútou</numerusform><numerusform>pred %n minútami</numerusform><numerusform>pred %n minútami</numerusform><numerusform>pred %n minútami</numerusform></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/common/utility.cpp" line="470"/>
|
||||
@ -3925,17 +3925,17 @@ Nie je vhodné ju používať.</translation>
|
||||
<message>
|
||||
<location filename="../src/common/checksums.cpp" line="233"/>
|
||||
<source>The checksum header is malformed.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Hlavička kontrolného súčtu je poškodená.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/common/checksums.cpp" line="248"/>
|
||||
<source>The checksum header contained an unknown checksum type '%1'</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Hlavička kontrolného súčtu obsahovala neznámy typ kontrolného súčtu „%1“</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/common/checksums.cpp" line="252"/>
|
||||
<source>The downloaded file does not match the checksum, it will be resumed.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Stiahnutý súbor nemá správny kontrolný súčet, bude stiahnutý znovu.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@ -3964,7 +3964,7 @@ Nie je vhodné ju používať.</translation>
|
||||
<message>
|
||||
<location filename="../src/libsync/theme.cpp" line="328"/>
|
||||
<source><p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p></source>
|
||||
<translation type="unfinished"/>
|
||||
<translation><p><small>Zostavené z Git revízie <a href="%1">%2</a> na %3, %4 s použitím Qt %5, %6</small></p></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@ -4120,7 +4120,7 @@ Nie je vhodné ju používať.</translation>
|
||||
<message>
|
||||
<location filename="../src/gui/guiutility.cpp" line="35"/>
|
||||
<source>There was an error when launching the browser to go to URL %1. Maybe no default browser is configured?</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Pri spustení prehliadača sa vyskytla chyba, keď sa má prejsť na adresu URL %1. Možno nie je nakonfigurovaný žiadny predvolený prehliadač?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/guiutility.cpp" line="58"/>
|
||||
@ -4130,7 +4130,7 @@ Nie je vhodné ju používať.</translation>
|
||||
<message>
|
||||
<location filename="../src/gui/guiutility.cpp" line="59"/>
|
||||
<source>There was an error when launching the email client to create a new message. Maybe no default email client is configured?</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Pri vytváraní novej správy sa pri spustení e-mailového klienta vyskytla chyba. Možno nie je nakonfigurovaný žiadny predvolený e-mailový klient?</translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
@ -1876,7 +1876,7 @@ zahteva skrbniška dovoljenja za dokončanje opravila.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.cpp" line="385"/>
|
||||
<source>There is no enough free space in the local folder!</source>
|
||||
<source>There isn't enough free space in the local folder!</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
|
@ -830,7 +830,10 @@ This means that the synchronization client might not upload local changes immedi
|
||||
These deletes will be synchronized to your local sync folder, making such files unavailable unless you have a right to restore.
|
||||
If you decide to keep the files, they will be re-synced with the server if you have rights to do so.
|
||||
If you decide to delete the files, they will be unavailable to you, unless you are the owner.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Сви фајлови из синхронизационе фасцикле '%1' су избрисани на серверу.
|
||||
Ово брисање ће бити синхронизовано са локалном синхронизационом фасциклом и тиме ће ови фајлови постати недоступни, осим ако немате право њиховог враћања.
|
||||
Ако одлучите да задржите фајлове, они ће бити опет синхронизовани назад са сервером, уколико имате права то да урадите.
|
||||
Ако одлучите да обришете фајлове, они ће Вам постати недоступни, осим ако нисте власник.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/folder.cpp" line="1080"/>
|
||||
@ -1392,7 +1395,7 @@ Continuing the sync as normal will cause all your files to be overwritten by an
|
||||
<message>
|
||||
<location filename="../src/gui/creds/httpcredentialsgui.cpp" line="114"/>
|
||||
<source>Reading from keychain failed with error: '%1'</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Читање са привеска неуспело уз грешку: '%1'</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/creds/httpcredentialsgui.cpp" line="120"/>
|
||||
@ -1457,7 +1460,9 @@ Continuing the sync as normal will cause all your files to be overwritten by an
|
||||
<source>Files or folders matching a pattern will not be synchronized.
|
||||
|
||||
Items where deletion is allowed will be deleted if they prevent a directory from being removed. This is useful for meta data.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Фајлови или фасцикле које одговарају шаблону неће бити синхронизоване.
|
||||
|
||||
Ставке над којима је дозвољено брисања ће бити избрисане уколико ометају да се директоријум избрише. Ово је корисно за мета податке.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/ignorelisteditor.cpp" line="133"/>
|
||||
@ -1510,12 +1515,12 @@ Items where deletion is allowed will be deleted if they prevent a directory from
|
||||
<message>
|
||||
<location filename="../src/gui/legalnotice.cpp" line="27"/>
|
||||
<source><p>Copyright 2017-2018 Nextcloud GmbH<br />Copyright 2012-2018 ownCloud GmbH</p></source>
|
||||
<translation type="unfinished"/>
|
||||
<translation><p>Ауторска права 2017-2018 Nextcloud GmbH<br />Ауторска права 2012-2018 ownCloud GmbH</p></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/legalnotice.cpp" line="30"/>
|
||||
<source><p>Licensed under the GNU General Public License (GPL) Version 2.0 or any later version.</p></source>
|
||||
<translation type="unfinished"/>
|
||||
<translation><p>Објављено под ГНУ општом јавном лиценцом (ОЈЛ) верзија 2.0 или било која новија верзија.</p></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@ -1550,7 +1555,9 @@ Items where deletion is allowed will be deleted if they prevent a directory from
|
||||
<source>When this option is enabled and no other logging is configured, logs will be written to a temporary folder and expire after a few hours. This setting persists across client restarts.
|
||||
|
||||
Logs will be written to %1</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Када је ова опција укључена, и ниједно друго логовање није подешено, логови ће бити уписани у привремену фасциклу и истицаће после неколико сати. Ово подешавање се задржава након поновних стартовања клијента.
|
||||
|
||||
Логови ће бити уписани у %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/logbrowser.cpp" line="115"/>
|
||||
@ -1880,7 +1887,7 @@ for additional privileges during the process.</source>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.cpp" line="385"/>
|
||||
<source>There is no enough free space in the local folder!</source>
|
||||
<source>There isn't enough free space in the local folder!</source>
|
||||
<translation>Нема довољно слободног места у локалној фасцикли!</translation>
|
||||
</message>
|
||||
</context>
|
||||
@ -3262,7 +3269,7 @@ It is not advisable to use it.</source>
|
||||
<message>
|
||||
<location filename="../src/libsync/syncengine.cpp" line="862"/>
|
||||
<source>Unable to read the blacklist from the local database</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Не могу да читам листу ставки игнорисаних за синхронизацију из локалне базе</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/syncengine.cpp" line="903"/>
|
||||
@ -3361,12 +3368,12 @@ It is not advisable to use it.</source>
|
||||
<message>
|
||||
<location filename="../src/gui/wizard/webview.cpp" line="199"/>
|
||||
<source>Invalid certificate detected</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Детектован неисправан сертификат</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/wizard/webview.cpp" line="200"/>
|
||||
<source>The host "%1" provided an invalid certitiface. Continue?</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Сервер „%1“ је понудио неисправан сертификат. Наставити?</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@ -3472,7 +3479,7 @@ It is not advisable to use it.</source>
|
||||
<message>
|
||||
<location filename="../src/gui/owncloudgui.cpp" line="234"/>
|
||||
<source>The server on account %1 runs an old and unsupported version %2. Using this client with unsupported server versions is untested and potentially dangerous. Proceed at your own risk.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Сервер на налогу %1 ради са старом и неподржаном верзијом %2. Коришћење овог клијента са неподржаном серверском верзијом није тестирано и може потенцијално бити опасно. Настављате на сопствену одговорност.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/owncloudgui.cpp" line="273"/>
|
||||
@ -3770,7 +3777,7 @@ It is not advisable to use it.</source>
|
||||
<message>
|
||||
<location filename="../src/gui/wizard/owncloudsetupnocredspage.ui" line="288"/>
|
||||
<source>Server Address</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Адреса сервера</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/wizard/owncloudsetupnocredspage.ui" line="304"/>
|
||||
|
@ -1887,7 +1887,7 @@ ytterligare rättigheter under processen.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.cpp" line="385"/>
|
||||
<source>There is no enough free space in the local folder!</source>
|
||||
<source>There isn't enough free space in the local folder!</source>
|
||||
<translation>Det finns inte tillräckligt med ledigt utrymme i den lokala mappen!</translation>
|
||||
</message>
|
||||
</context>
|
||||
|
@ -1876,7 +1876,7 @@ for additional privileges during the process.</source>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.cpp" line="385"/>
|
||||
<source>There is no enough free space in the local folder!</source>
|
||||
<source>There isn't enough free space in the local folder!</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
|
@ -1886,7 +1886,7 @@ güncelleyici başka izinler isteyebilir.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.cpp" line="385"/>
|
||||
<source>There is no enough free space in the local folder!</source>
|
||||
<source>There isn't enough free space in the local folder!</source>
|
||||
<translation>Yerel klasörde yeterli boş alan yok!</translation>
|
||||
</message>
|
||||
</context>
|
||||
|
@ -1867,7 +1867,7 @@ for additional privileges during the process.</source>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.cpp" line="385"/>
|
||||
<source>There is no enough free space in the local folder!</source>
|
||||
<source>There isn't enough free space in the local folder!</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
|
@ -181,7 +181,7 @@
|
||||
<message>
|
||||
<location filename="../src/gui/accountsettings.ui" line="198"/>
|
||||
<source>Synchronize all</source>
|
||||
<translation>同步全部</translation>
|
||||
<translation>同步所有</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/accountsettings.ui" line="205"/>
|
||||
@ -1886,7 +1886,7 @@ for additional privileges during the process.</source>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.cpp" line="385"/>
|
||||
<source>There is no enough free space in the local folder!</source>
|
||||
<source>There isn't enough free space in the local folder!</source>
|
||||
<translation>本地文件夹可用空间不足!</translation>
|
||||
</message>
|
||||
</context>
|
||||
|
@ -1870,7 +1870,7 @@ for additional privileges during the process.</source>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.cpp" line="385"/>
|
||||
<source>There is no enough free space in the local folder!</source>
|
||||
<source>There isn't enough free space in the local folder!</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
|
Loading…
Reference in New Issue
Block a user