Comparar commits
30 Commits
| Autor | SHA1 | Data | |
|---|---|---|---|
| 5b95af8b69 | |||
| 0fe0c48036 | |||
| 078107801b | |||
| f96edf8651 | |||
| 45dd1d0acf | |||
| 552af7b94d | |||
| 8934979ba1 | |||
| b3e16e0eb0 | |||
| 7773380deb | |||
| e22050a434 | |||
| 7b0231bfce | |||
| edc58c045f | |||
| 035058934f | |||
| 9b1f46e560 | |||
| 9e7a8e619b | |||
| 9c0cd2b13e | |||
| 58ad781bd4 | |||
| 9d6701ecbe | |||
| d659c54798 | |||
| 0e9170cb36 | |||
| 8820bc1c17 | |||
| 74f67c97a9 | |||
| fd96b482c5 | |||
| 727e73d640 | |||
| 7d270cdfa9 | |||
| 59b94821d6 | |||
| c910af2de7 | |||
| 213e86842c | |||
| 6f0f2ddf5e | |||
| 109c9cd5c2 |
@@ -161,6 +161,12 @@ UpgradeLog*.htm
|
||||
*.mdf
|
||||
*.ldf
|
||||
|
||||
# WiX/MSI
|
||||
|
||||
*.wixpdb
|
||||
*.wixobj
|
||||
files.wxs # generated
|
||||
|
||||
# Microsoft Fakes
|
||||
FakesAssemblies/
|
||||
|
||||
|
||||
@@ -151,11 +151,6 @@ endif()
|
||||
|
||||
find_package(ZLIB)
|
||||
|
||||
find_package(LibsnoreQt5 0.6.0)
|
||||
if(LibsnoreQt5_FOUND)
|
||||
find_package(LibsnoreSettingsQt5)
|
||||
endif()
|
||||
|
||||
configure_file(config.h.in ${CMAKE_CURRENT_BINARY_DIR}/config.h)
|
||||
|
||||
configure_file(test/test_journal.db "${CMAKE_BINARY_DIR}/test/test_journal.db" COPYONLY)
|
||||
|
||||
@@ -1,5 +1,28 @@
|
||||
ChangeLog
|
||||
=========
|
||||
version 2.2.0 (release 2016-05-12)
|
||||
* Overlay icons: Refactoring - mainly for performance improvements
|
||||
* Improved error handling with Sync Journal on USB storages (#4632)
|
||||
* Sharing Completion: Improved UI of completion in sharing from desktop. (#3737)
|
||||
* Show server notifications on the client (#3733)
|
||||
* Improved Speed with small files by dynamic parallel request count (#4529)
|
||||
* LockWatcher: Make sure to sync files after apps released exclusive locks on Windows.
|
||||
* Improved handling of Win32 file locks and network files
|
||||
* Workaround Ubuntu 16.04 tray icon bug (#4693)
|
||||
* Removed the Alias field from the folder definition (#4695)
|
||||
* Improved netrc parser (#4691)
|
||||
* Improved user notifications about ignored files and conflicts (#4761, #3222)
|
||||
* Add warnings for old server versions (#4523)
|
||||
* Enable tranportation checksums if the server supports based on server capabilities (#3735)
|
||||
|
||||
* Default Chunk-size changed to 10MB (#4354)
|
||||
* Documentation Improvements, ie. about overlay icons
|
||||
* Translation fixes
|
||||
* Countless other bugfixes
|
||||
* Sqlite Update to recent version
|
||||
* Update of QtKeyChain to support Windows credential store
|
||||
* Packaging of dolphin overlay icon module for bleeding edge distros
|
||||
|
||||
version 2.1.1 (release 2016-02-10)
|
||||
* UI improvements for HiDPI screens, error messages, RTL languages
|
||||
* Fix occurences of "Connection Closed" when a new unauthenticated TCP socket is used
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
set( MIRALL_VERSION_MAJOR 2 )
|
||||
set( MIRALL_VERSION_MINOR 2 )
|
||||
set( MIRALL_VERSION_PATCH 0 )
|
||||
set( MIRALL_VERSION_PATCH 1 )
|
||||
set( MIRALL_VERSION_YEAR 2016 )
|
||||
set( MIRALL_SOVERSION 0 )
|
||||
|
||||
|
||||
@@ -0,0 +1,48 @@
|
||||
# vim: ts=4:sw=4
|
||||
|
||||
export WIXPATH := $(HOME)/Downloads/wix310
|
||||
export PATH := $(WIXPATH):$(PATH)
|
||||
|
||||
|
||||
# Customize here ############
|
||||
|
||||
MSI = owncloud.msi
|
||||
PRODUCT = ownCloud
|
||||
MANUFAC = ownCloud
|
||||
EXEC = owncloud.exe
|
||||
|
||||
# Leave this alone ##########
|
||||
|
||||
OBJ = files.wixobj product.wixobj
|
||||
EXE = $(MSI:.msi=.exe)
|
||||
PDB = $(MSI:.msi=.wixpdb)
|
||||
WXL = $(wildcard l10n/*.wxl)
|
||||
|
||||
HEAT_OPTS = -var var.SourceDir -nologo -cg Files -gg -dr FilesDir -template fragment -sw5150 -suid
|
||||
LIGHT_OPTS = -nologo -sval -cultures:en-us -loc l10n/en-us.wxl
|
||||
#LIGHT_OPTS = -nologo -sval -ext WixUIExtension -cultures:en-us
|
||||
|
||||
|
||||
# Fixme: Spaces not working, switch to .in?
|
||||
CANDLE_DEFINES = -dSourceDir=ownCloud -dProductName=$(PRODUCT) -dManufacturer=$(MANUFAC) -dInstallDir=$(PRODUCT) -dInfoURL=http://owncloud.com -dMainExecutable=$(EXEC)
|
||||
|
||||
$(MSI): $(OBJ) $(WXL)
|
||||
@echo Creating MSI $@ from $(OBJ)...
|
||||
light $(LIGHT_OPTS) $(OBJ) -out $@
|
||||
@chmod 664 $@
|
||||
|
||||
$(EXE): $(MSI)
|
||||
burn $< $@
|
||||
|
||||
%.wixobj: %.wxs
|
||||
@echo Creating $@ from $<...
|
||||
candle -nologo $(CANDLE_DEFINES) $<
|
||||
|
||||
files.wxs:
|
||||
@echo Harvesting files to $@...
|
||||
heat dir ownCloud $(HEAT_OPTS) -o files.wxs
|
||||
|
||||
.PHONY: clean
|
||||
|
||||
clean:
|
||||
rm -f $(MSI) $(OBJ) $(PDB) $(EXE) files.wxs
|
||||
@@ -0,0 +1,47 @@
|
||||
# MSI installer using WiX Installer Framework
|
||||
|
||||
## Introduction
|
||||
|
||||
At this point, the installer assumes a pre-assembled ownCloud installation in
|
||||
a subdirectory 'ownCloud' as well as an up to date version of WiX with bash
|
||||
wrappers. This will both need to change. The Makefile harvests the files
|
||||
and creates a simple installers.
|
||||
|
||||
## TODOs
|
||||
|
||||
At this point: pretty much everything:
|
||||
|
||||
- Add Explorer Integrations
|
||||
- VS Runtime (Fetch msm module(s), better: put aside)
|
||||
- Terminate running process on update
|
||||
- StartMenu
|
||||
- Auto Start
|
||||
- Metadata (take from NSIS)
|
||||
- Research PerUser (ALLUSERS="") obstacles
|
||||
- No VS global runtime
|
||||
- No HKLM entries (Explorer!)
|
||||
- Register COM components (HKLM -> HKLU)
|
||||
- Documentation
|
||||
- https://msdn.microsoft.com/en-us/library/windows/desktop/dd765197(v=vs.85).aspx
|
||||
- UI (optional!)
|
||||
- Options
|
||||
- Check if running the whole WiX suite on wine in production is feasable
|
||||
- Burn not working
|
||||
- Sanity checks not working
|
||||
- Ensure NSIS params get migrated (MSI properties?)
|
||||
- Sign MSI
|
||||
- Translations (https://github.com/sblaisot/wxl-po-tools)
|
||||
- Add CMake target
|
||||
|
||||
Potentially:
|
||||
|
||||
- WiX Firewall extension to allow port 80/443 outbound?
|
||||
- Single out crashreporter into extra component?
|
||||
|
||||
## Testing Scenarios
|
||||
|
||||
- Test Uninstall
|
||||
- Test Update
|
||||
- Test Upgrade (difference?)
|
||||
- "Update" from NSIS?
|
||||
|
||||
|
Depois Largura: | Altura: | Tamanho: 108 KiB |
@@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<WixLocalization Culture="en-us" xmlns="http://schemas.microsoft.com/wix/2006/localization">
|
||||
<String Id="noossupport" Overridable="yes">This application is only supported on Windows 7 or higher.</String>
|
||||
<String Id="newerinstalled" Overridable="yes">A newer version of this software is already installed.</String>
|
||||
</WixLocalization>
|
||||
@@ -0,0 +1,3 @@
|
||||
candle example.wxs
|
||||
light example.wixobj
|
||||
@pause
|
||||
|
Depois Largura: | Altura: | Tamanho: 66 KiB |
@@ -0,0 +1,342 @@
|
||||
<?xml version="1.0"?>
|
||||
<?define ProductVersion = "0.0.1"?> <!-- For Testing Purposes -->
|
||||
<?define ProductUpgradeCode = "EB15081D-1892-4DB5-872C-9424BFFFF22D"?>
|
||||
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
|
||||
<Product Id="*"
|
||||
UpgradeCode="$(var.ProductUpgradeCode)"
|
||||
Name="ownCloud Test Package"
|
||||
Version="$(var.ProductVersion)"
|
||||
Manufacturer="ownCloud, Inc."
|
||||
Language="1033">
|
||||
<Package
|
||||
Description='ownCloud Sync Client - Version $(var.ProductVersion)'
|
||||
InstallerVersion="200"
|
||||
Compressed="yes"
|
||||
Comments="Windows Installer Package"/>
|
||||
<Media Id="1" Cabinet="product.cab" EmbedCab="yes" CompressionLevel="high"/>
|
||||
<Icon Id="ProductIcon" SourceFile="owncloud.ico"/>
|
||||
<!-- Add/Remove Programs Info -->
|
||||
<!-- Icon in Add/Remove Programs -->
|
||||
<Property Id="ARPPRODUCTICON" Value="ProductIcon"/>
|
||||
<!-- Help Link in Add/Remove Programs -->
|
||||
<Property Id="ARPHELPLINK" Value="http://www.owncloud.org"/>
|
||||
<!-- Info Link in Add/Remove Programs -->
|
||||
<Property Id="ARPURLINFOABOUT" Value="http://www.owncloud.org"/>
|
||||
<!-- Update Info in Add/Remove Programs -->
|
||||
<Property Id="ARPURLUPDATEINFO" Value="http://www.owncloud.org/install" />
|
||||
<!-- Disable 'Repair' application -->
|
||||
<Property Id="ARPNOREPAIR" Value="1"/>
|
||||
<!-- Disable 'Modify' application -->
|
||||
<Property Id="ARPNOMODIFY" Value="1"/>
|
||||
<Upgrade Id="$(var.ProductUpgradeCode)">
|
||||
<UpgradeVersion
|
||||
Minimum="$(var.ProductVersion)"
|
||||
OnlyDetect="yes"
|
||||
Property="NEWERVERSIONDETECTED"/>
|
||||
<UpgradeVersion
|
||||
Minimum="0.0.0"
|
||||
Maximum="$(var.ProductVersion)"
|
||||
IncludeMinimum="yes"
|
||||
IncludeMaximum="no"
|
||||
Property="OLDERVERSIONBEINGUPGRADED"/>
|
||||
</Upgrade>
|
||||
<Condition Message="A newer version of this software is already installed.">NOT NEWERVERSIONDETECTED</Condition>
|
||||
|
||||
<!-- System Files -->
|
||||
<Directory Id="TARGETDIR" Name="SourceDir">
|
||||
<Directory Id="ProgramFilesFolder">
|
||||
<Directory Id="INSTALLDIR" Name="ownCloud">
|
||||
<Component Id="ZLIB1.DLLCOMP" Guid="{B6371BE1-0040-42A7-A8A1-B09500FDE655}" KeyPath="yes" SharedDllRefCount="yes">
|
||||
<File Id="zlib1.dll" Name="zlib1.dll" Source="SourceDir\File\zlib1.dll" />
|
||||
</Component>
|
||||
<Component Id="UNINSTALL.EXECOMP" Guid="{0658EC37-1612-4225-ADB7-0825CCA8AC99}" KeyPath="yes" SharedDllRefCount="yes">
|
||||
<File Id="uninstall.exe" Name="uninstall.exe" Source="SourceDir\File\uninstall.exe" />
|
||||
</Component>
|
||||
<Component Id="SYNC_EXCLUDE.LSTCOMP" Guid="{404E29FC-C4CC-4311-9850-515C2CB43D73}" KeyPath="yes" SharedDllRefCount="yes">
|
||||
<File Id="sync_exclude.lst" Name="sync-exclude.lst" Source="SourceDir\File\sync_exclude.lst" />
|
||||
</Component>
|
||||
<Component Id="QTKEYCHAIN_DE.QMCOMP" Guid="{F9E8A7D7-AD5A-4A8B-8CE3-A5A6D4205090}" KeyPath="yes" SharedDllRefCount="yes">
|
||||
<File Id="qtkeychain_de.qm" Name="qtkeychain_de.qm" Source="SourceDir\File\qtkeychain_de.qm" />
|
||||
</Component>
|
||||
<Component Id="QT_ZH_TW.QMCOMP" Guid="{84D4C871-13F6-4343-84B3-CF3744FC1892}" KeyPath="yes" SharedDllRefCount="yes">
|
||||
<File Id="qt_zh_TW.qm" Name="qt_zh_TW.qm" Source="SourceDir\File\qt_zh_TW.qm" />
|
||||
</Component>
|
||||
<Component Id="QT_ZH_CN.QMCOMP" Guid="{11E06B26-792C-40A9-980D-FD26D0F94625}" KeyPath="yes" SharedDllRefCount="yes">
|
||||
<File Id="qt_zh_CN.qm" Name="qt_zh_CN.qm" Source="SourceDir\File\qt_zh_CN.qm" />
|
||||
</Component>
|
||||
<Component Id="QT_UK.QMCOMP" Guid="{D7DACA78-6A62-4615-A657-31B9745029E9}" KeyPath="yes" SharedDllRefCount="yes">
|
||||
<File Id="qt_uk.qm" Name="qt_uk.qm" Source="SourceDir\File\qt_uk.qm" />
|
||||
</Component>
|
||||
<Component Id="QT_SV.QMCOMP" Guid="{5869489C-546D-47A1-BC5B-8272A5D36EE6}" KeyPath="yes" SharedDllRefCount="yes">
|
||||
<File Id="qt_sv.qm" Name="qt_sv.qm" Source="SourceDir\File\qt_sv.qm" />
|
||||
</Component>
|
||||
<Component Id="QT_SL.QMCOMP" Guid="{4A0188B2-B700-487E-A98F-533CF7372DE9}" KeyPath="yes" SharedDllRefCount="yes">
|
||||
<File Id="qt_sl.qm" Name="qt_sl.qm" Source="SourceDir\File\qt_sl.qm" />
|
||||
</Component>
|
||||
<Component Id="QT_SK.QMCOMP" Guid="{4638E9CD-176E-4C6E-A03B-8ED8B5E188BC}" KeyPath="yes" SharedDllRefCount="yes">
|
||||
<File Id="qt_sk.qm" Name="qt_sk.qm" Source="SourceDir\File\qt_sk.qm" />
|
||||
</Component>
|
||||
<Component Id="QT_RU.QMCOMP" Guid="{62E072EE-F540-4AFC-9E33-4E59B4B21DA9}" KeyPath="yes" SharedDllRefCount="yes">
|
||||
<File Id="qt_ru.qm" Name="qt_ru.qm" Source="SourceDir\File\qt_ru.qm" />
|
||||
</Component>
|
||||
<Component Id="QT_PT.QMCOMP" Guid="{46E5512B-2790-4FE0-A08F-DB721AAD126B}" KeyPath="yes" SharedDllRefCount="yes">
|
||||
<File Id="qt_pt.qm" Name="qt_pt.qm" Source="SourceDir\File\qt_pt.qm" />
|
||||
</Component>
|
||||
<Component Id="QT_PL.QMCOMP" Guid="{03170C97-C704-4998-8C9E-A7FE303542A2}" KeyPath="yes" SharedDllRefCount="yes">
|
||||
<File Id="qt_pl.qm" Name="qt_pl.qm" Source="SourceDir\File\qt_pl.qm" />
|
||||
</Component>
|
||||
<Component Id="QT_LT.QMCOMP" Guid="{084AF0FF-D6E1-43DE-AE1B-2DD19886F79B}" KeyPath="yes" SharedDllRefCount="yes">
|
||||
<File Id="qt_lt.qm" Name="qt_lt.qm" Source="SourceDir\File\qt_lt.qm" />
|
||||
</Component>
|
||||
<Component Id="QT_KO.QMCOMP" Guid="{F2C8204D-05B5-4BD2-ABB5-7F59E72E9D4E}" KeyPath="yes" SharedDllRefCount="yes">
|
||||
<File Id="qt_ko.qm" Name="qt_ko.qm" Source="SourceDir\File\qt_ko.qm" />
|
||||
</Component>
|
||||
<Component Id="QT_JA.QMCOMP" Guid="{4DC6061D-5C24-49C3-AA6C-1D545EC114AC}" KeyPath="yes" SharedDllRefCount="yes">
|
||||
<File Id="qt_ja.qm" Name="qt_ja.qm" Source="SourceDir\File\qt_ja.qm" />
|
||||
</Component>
|
||||
<Component Id="QT_HU.QMCOMP" Guid="{A7E08DA5-6842-4E85-8AAC-8ABB017FC8DB}" KeyPath="yes" SharedDllRefCount="yes">
|
||||
<File Id="qt_hu.qm" Name="qt_hu.qm" Source="SourceDir\File\qt_hu.qm" />
|
||||
</Component>
|
||||
<Component Id="QT_HE.QMCOMP" Guid="{B3CA8D1E-6441-44D0-B57E-E0A846F16B83}" KeyPath="yes" SharedDllRefCount="yes">
|
||||
<File Id="qt_he.qm" Name="qt_he.qm" Source="SourceDir\File\qt_he.qm" />
|
||||
</Component>
|
||||
<Component Id="QT_GL.QMCOMP" Guid="{A28B385A-A01E-430C-A1B7-5E3A270BA056}" KeyPath="yes" SharedDllRefCount="yes">
|
||||
<File Id="qt_gl.qm" Name="qt_gl.qm" Source="SourceDir\File\qt_gl.qm" />
|
||||
</Component>
|
||||
<Component Id="QT_FR.QMCOMP" Guid="{FAFCE3B1-C6D3-41A5-9CB5-606FCB7C588E}" KeyPath="yes" SharedDllRefCount="yes">
|
||||
<File Id="qt_fr.qm" Name="qt_fr.qm" Source="SourceDir\File\qt_fr.qm" />
|
||||
</Component>
|
||||
<Component Id="QT_FA.QMCOMP" Guid="{01CF76FF-222B-43C6-9B0E-4624B1F8F295}" KeyPath="yes" SharedDllRefCount="yes">
|
||||
<File Id="qt_fa.qm" Name="qt_fa.qm" Source="SourceDir\File\qt_fa.qm" />
|
||||
</Component>
|
||||
<Component Id="QT_ES.QMCOMP" Guid="{48BD7F9C-0F0D-44E5-907F-8B532F8A00BA}" KeyPath="yes" SharedDllRefCount="yes">
|
||||
<File Id="qt_es.qm" Name="qt_es.qm" Source="SourceDir\File\qt_es.qm" />
|
||||
</Component>
|
||||
<Component Id="QT_DE.QMCOMP" Guid="{5BB35070-582B-4289-9622-A2B0BCC5044F}" KeyPath="yes" SharedDllRefCount="yes">
|
||||
<File Id="qt_de.qm" Name="qt_de.qm" Source="SourceDir\File\qt_de.qm" />
|
||||
</Component>
|
||||
<Component Id="QT_DA.QMCOMP" Guid="{EAF504CB-C572-4C26-AA5A-59793E14AA11}" KeyPath="yes" SharedDllRefCount="yes">
|
||||
<File Id="qt_da.qm" Name="qt_da.qm" Source="SourceDir\File\qt_da.qm" />
|
||||
</Component>
|
||||
<Component Id="QT_CS.QMCOMP" Guid="{C67FA04F-A2AE-4711-B605-EA186B6F4DCE}" KeyPath="yes" SharedDllRefCount="yes">
|
||||
<File Id="qt_cs.qm" Name="qt_cs.qm" Source="SourceDir\File\qt_cs.qm" />
|
||||
</Component>
|
||||
<Component Id="QT_AR.QMCOMP" Guid="{6E5BF7A1-A9BF-4242-82E9-A67BF9820534}" KeyPath="yes" SharedDllRefCount="yes">
|
||||
<File Id="qt_ar.qm" Name="qt_ar.qm" Source="SourceDir\File\qt_ar.qm" />
|
||||
</Component>
|
||||
<Component Id="OWNCLOUD.EXECOMP" Guid="{88656DF5-254C-449C-96D3-9A84BA893C3C}" KeyPath="yes" SharedDllRefCount="yes">
|
||||
<File Id="owncloud.exe" Name="owncloud.exe" Vital="yes" Source="SourceDir\File\owncloud.exe" />
|
||||
<Shortcut Id="Shortcut0" Directory="ProgramMenuFolder" Name="owncloud" Target="[#owncloud.exe]" Icon="Icon1" IconIndex="0"/>
|
||||
<Shortcut Id="Shortcut1" Directory="DesktopFolder" Name="owncloud" Target="[#owncloud.exe]" Icon="Icon1" IconIndex="0" />
|
||||
</Component>
|
||||
<Component Id="MIRALL_ZH_TW.QMCOMP" Guid="{435224A2-3661-46A8-B015-B5BAAD003EE8}" KeyPath="yes" SharedDllRefCount="yes">
|
||||
<File Id="mirall_zh_TW.qm" Name="mirall_zh_TW.qm" Source="SourceDir\File\mirall_zh_TW.qm" />
|
||||
</Component>
|
||||
<Component Id="MIRALL_ZH_CN.QMCOMP" Guid="{67B075DA-4727-4B63-A63A-BCE51CDEB5B0}" KeyPath="yes" SharedDllRefCount="yes">
|
||||
<File Id="mirall_zh_CN.qm" Name="mirall_zh_CN.qm" Source="SourceDir\File\mirall_zh_CN.qm" />
|
||||
</Component>
|
||||
<Component Id="MIRALL_UK.QMCOMP" Guid="{5A67E4F1-A580-4122-BE12-152E28829397}" KeyPath="yes" SharedDllRefCount="yes">
|
||||
<File Id="mirall_uk.qm" Name="mirall_uk.qm" Source="SourceDir\File\mirall_uk.qm" />
|
||||
</Component>
|
||||
<Component Id="MIRALL_TH.QMCOMP" Guid="{3D7EA411-EBF3-4854-9ADF-14DACBBF33A4}" KeyPath="yes" SharedDllRefCount="yes">
|
||||
<File Id="mirall_th.qm" Name="mirall_th.qm" Source="SourceDir\File\mirall_th.qm" />
|
||||
</Component>
|
||||
<Component Id="MIRALL_SV.QMCOMP" Guid="{FF8EE4B5-7E73-4BE5-BB01-373CAF88F959}" KeyPath="yes" SharedDllRefCount="yes">
|
||||
<File Id="mirall_sv.qm" Name="mirall_sv.qm" Source="SourceDir\File\mirall_sv.qm" />
|
||||
</Component>
|
||||
<Component Id="MIRALL_SL.QMCOMP" Guid="{BF8D96E1-8280-4F5A-B6A8-D5C683D24946}" KeyPath="yes" SharedDllRefCount="yes">
|
||||
<File Id="mirall_sl.qm" Name="mirall_sl.qm" Source="SourceDir\File\mirall_sl.qm" />
|
||||
</Component>
|
||||
<Component Id="MIRALL_SK.QMCOMP" Guid="{FC623AA8-6A1E-4DA5-B4F4-019368B04512}" KeyPath="yes" SharedDllRefCount="yes">
|
||||
<File Id="mirall_sk.qm" Name="mirall_sk.qm" Source="SourceDir\File\mirall_sk.qm" />
|
||||
</Component>
|
||||
<Component Id="MIRALL_RU.QMCOMP" Guid="{BEB85E1C-6FE9-4041-B368-B8E660818651}" KeyPath="yes" SharedDllRefCount="yes">
|
||||
<File Id="mirall_ru.qm" Name="mirall_ru.qm" Source="SourceDir\File\mirall_ru.qm" />
|
||||
</Component>
|
||||
<Component Id="MIRALL_PT_BR.QMCOMP" Guid="{FC5B056C-B33D-4060-975A-A69FB57FFA9A}" KeyPath="yes" SharedDllRefCount="yes">
|
||||
<File Id="mirall_pt_BR.qm" Name="mirall_pt_BR.qm" Source="SourceDir\File\mirall_pt_BR.qm" />
|
||||
</Component>
|
||||
<Component Id="MIRALL_PT.QMCOMP" Guid="{D857446C-C0F5-4F46-B194-36A87A8B7E8D}" KeyPath="yes" SharedDllRefCount="yes">
|
||||
<File Id="mirall_pt.qm" Name="mirall_pt.qm" Source="SourceDir\File\mirall_pt.qm" />
|
||||
</Component>
|
||||
<Component Id="MIRALL_PL.QMCOMP" Guid="{9C495CA8-6A85-432C-B4D2-BA3D07C28D16}" KeyPath="yes" SharedDllRefCount="yes">
|
||||
<File Id="mirall_pl.qm" Name="mirall_pl.qm" Source="SourceDir\File\mirall_pl.qm" />
|
||||
</Component>
|
||||
<Component Id="MIRALL_NL.QMCOMP" Guid="{92871E56-A11A-4ED6-A00C-FBF9328CF2D5}" KeyPath="yes" SharedDllRefCount="yes">
|
||||
<File Id="mirall_nl.qm" Name="mirall_nl.qm" Source="SourceDir\File\mirall_nl.qm" />
|
||||
</Component>
|
||||
<Component Id="MIRALL_JA.QMCOMP" Guid="{5F716C63-FE18-4577-B5EC-4E262D387D32}" KeyPath="yes" SharedDllRefCount="yes">
|
||||
<File Id="mirall_ja.qm" Name="mirall_ja.qm" Source="SourceDir\File\mirall_ja.qm" />
|
||||
</Component>
|
||||
<Component Id="MIRALL_IT.QMCOMP" Guid="{5A826D32-AF44-4FB3-88C1-2BD9BE4F7711}" KeyPath="yes" SharedDllRefCount="yes">
|
||||
<File Id="mirall_it.qm" Name="mirall_it.qm" Source="SourceDir\File\mirall_it.qm" />
|
||||
</Component>
|
||||
<Component Id="MIRALL_HU.QMCOMP" Guid="{E0E41F5B-E313-49BF-BB6A-EB68E428CB0A}" KeyPath="yes" SharedDllRefCount="yes">
|
||||
<File Id="mirall_hu.qm" Name="mirall_hu.qm" Source="SourceDir\File\mirall_hu.qm" />
|
||||
</Component>
|
||||
<Component Id="MIRALL_GL.QMCOMP" Guid="{9D77F964-76B1-4663-98CF-D8C94EF2ABBF}" KeyPath="yes" SharedDllRefCount="yes">
|
||||
<File Id="mirall_gl.qm" Name="mirall_gl.qm" Source="SourceDir\File\mirall_gl.qm" />
|
||||
</Component>
|
||||
<Component Id="MIRALL_FR.QMCOMP" Guid="{35ACC137-F0F9-4AEF-B2CB-9D9633CB5377}" KeyPath="yes" SharedDllRefCount="yes">
|
||||
<File Id="mirall_fr.qm" Name="mirall_fr.qm" Source="SourceDir\File\mirall_fr.qm" />
|
||||
</Component>
|
||||
<Component Id="MIRALL_FI.QMCOMP" Guid="{F8B8A329-7D34-4B83-AA7E-D9040BB19012}" KeyPath="yes" SharedDllRefCount="yes">
|
||||
<File Id="mirall_fi.qm" Name="mirall_fi.qm" Source="SourceDir\File\mirall_fi.qm" />
|
||||
</Component>
|
||||
<Component Id="MIRALL_FA.QMCOMP" Guid="{95AEC502-807F-40EA-86EE-8F7B2A2D4CF3}" KeyPath="yes" SharedDllRefCount="yes">
|
||||
<File Id="mirall_fa.qm" Name="mirall_fa.qm" Source="SourceDir\File\mirall_fa.qm" />
|
||||
</Component>
|
||||
<Component Id="MIRALL_EU.QMCOMP" Guid="{0F6A4E73-86EC-4A58-9B5D-E92F48E38E54}" KeyPath="yes" SharedDllRefCount="yes">
|
||||
<File Id="mirall_eu.qm" Name="mirall_eu.qm" Source="SourceDir\File\mirall_eu.qm" />
|
||||
</Component>
|
||||
<Component Id="MIRALL_ET.QMCOMP" Guid="{F8D09BE8-626F-4233-8B4B-ED323A93B590}" KeyPath="yes" SharedDllRefCount="yes">
|
||||
<File Id="mirall_et.qm" Name="mirall_et.qm" Source="SourceDir\File\mirall_et.qm" />
|
||||
</Component>
|
||||
<Component Id="MIRALL_ES_AR.QMCOMP" Guid="{CB808B4B-DBDC-4C0F-B2B5-1C27A3B7C689}" KeyPath="yes" SharedDllRefCount="yes">
|
||||
<File Id="mirall_es_AR.qm" Name="mirall_es_AR.qm" Source="SourceDir\File\mirall_es_AR.qm" />
|
||||
</Component>
|
||||
<Component Id="MIRALL_ES.QMCOMP" Guid="{A1E18914-5B63-4A22-9240-EB763816B192}" KeyPath="yes" SharedDllRefCount="yes">
|
||||
<File Id="mirall_es.qm" Name="mirall_es.qm" Source="SourceDir\File\mirall_es.qm" />
|
||||
</Component>
|
||||
<Component Id="MIRALL_EN.QMCOMP" Guid="{431544FD-F185-480F-B7F3-38DBD2DBFC7E}" KeyPath="yes" SharedDllRefCount="yes">
|
||||
<File Id="mirall_en.qm" Name="mirall_en.qm" Source="SourceDir\File\mirall_en.qm" />
|
||||
</Component>
|
||||
<Component Id="MIRALL_EL.QMCOMP" Guid="{1B138B09-A29F-472B-849D-481179A4A82C}" KeyPath="yes" SharedDllRefCount="yes">
|
||||
<File Id="mirall_el.qm" Name="mirall_el.qm" Source="SourceDir\File\mirall_el.qm" />
|
||||
</Component>
|
||||
<Component Id="MIRALL_DE.QMCOMP" Guid="{9B69B743-85B9-435A-87CF-6EDD424C5BA4}" KeyPath="yes" SharedDllRefCount="yes">
|
||||
<File Id="mirall_de.qm" Name="mirall_de.qm" Source="SourceDir\File\mirall_de.qm" />
|
||||
</Component>
|
||||
<Component Id="MIRALL_CS.QMCOMP" Guid="{6126BAC8-909D-4084-8732-8B38D27D4EC6}" KeyPath="yes" SharedDllRefCount="yes">
|
||||
<File Id="mirall_cs.qm" Name="mirall_cs.qm" Source="SourceDir\File\mirall_cs.qm" />
|
||||
</Component>
|
||||
<Component Id="MIRALL_CA.QMCOMP" Guid="{917D61C5-6C18-42FD-9FE9-215145C90D90}" KeyPath="yes" SharedDllRefCount="yes">
|
||||
<File Id="mirall_ca.qm" Name="mirall_ca.qm" Source="SourceDir\File\mirall_ca.qm" />
|
||||
</Component>
|
||||
<Component Id="MIRALL_TW.QMCOMP" Guid="{93C71D0D-183A-488F-8459-136962231335}" KeyPath="yes" SharedDllRefCount="yes">
|
||||
<File Id="mirall_TW.qm" Name="mirall_TW.qm" Source="SourceDir\File\mirall_TW.qm" />
|
||||
</Component>
|
||||
<Component Id="LIBXML2_2.DLLCOMP" Guid="{A1F9E3D2-1768-43BA-B2DD-D3C6E77EFC9C}" KeyPath="yes" SharedDllRefCount="yes">
|
||||
<File Id="libxml2_2.dll" Name="libxml2-2.dll" Source="SourceDir\File\libxml2_2.dll" />
|
||||
</Component>
|
||||
<Component Id="LIBSTDC___6.DLLCOMP" Guid="{A87F8CB3-21F6-499B-8A52-3B4EE6618656}" KeyPath="yes" SharedDllRefCount="yes">
|
||||
<File Id="libstdc___6.dll" Name="libstdc++-6.dll" Source="SourceDir\File\libstdc___6.dll" />
|
||||
</Component>
|
||||
<Component Id="LIBSSL_10.DLLCOMP" Guid="{DAB36F0F-0D96-49F9-94FF-B987315BAB85}" KeyPath="yes" SharedDllRefCount="yes">
|
||||
<File Id="libssl_10.dll" Name="libssl-10.dll" Source="SourceDir\File\libssl_10.dll" />
|
||||
</Component>
|
||||
<Component Id="LIBSQLITE3_0.DLLCOMP" Guid="{BBAF2CAE-62E0-4891-8137-2311A11D1633}" KeyPath="yes" SharedDllRefCount="yes">
|
||||
<File Id="libsqlite3_0.dll" Name="libsqlite3-0.dll" Source="SourceDir\File\libsqlite3_0.dll" />
|
||||
</Component>
|
||||
<Component Id="LIBQTKEYCHAIN.DLLCOMP" Guid="{C6C88C23-07FD-4CD2-9688-BD4673DC93BF}" KeyPath="yes" SharedDllRefCount="yes">
|
||||
<File Id="libqtkeychain.dll" Name="libqtkeychain.dll" Source="SourceDir\File\libqtkeychain.dll" />
|
||||
</Component>
|
||||
<Component Id="LIBPROXY.DLLCOMP" Guid="{C97084BA-E4AE-4BC6-98A0-9916B8900207}" KeyPath="yes" SharedDllRefCount="yes">
|
||||
<File Id="libproxy.dll" Name="libproxy.dll" Source="SourceDir\File\libproxy.dll" />
|
||||
</Component>
|
||||
<Component Id="LIBPNG15_15.DLLCOMP" Guid="{6E497FCE-DB4C-47F1-A542-D464B3D1A7B1}" KeyPath="yes" SharedDllRefCount="yes">
|
||||
<File Id="libpng15_15.dll" Name="libpng15-15.dll" Source="SourceDir\File\libpng15_15.dll" />
|
||||
</Component>
|
||||
<Component Id="LIBOWNCLOUDSYNC.DLLCOMP" Guid="{5F05B5E2-41D2-4638-AC8E-52C6B1B15FE4}" KeyPath="yes" SharedDllRefCount="yes">
|
||||
<File Id="libowncloudsync.dll" Name="libowncloudsync.dll" Source="SourceDir\File\libowncloudsync.dll" />
|
||||
</Component>
|
||||
<Component Id="LIBOCSYNC.DLLCOMP" Guid="{2364B8D1-87E4-44F0-9FF6-4FBE6A42B85D}" KeyPath="yes" SharedDllRefCount="yes">
|
||||
<File Id="libocsync.dll" Name="libocsync.dll" Source="SourceDir\File\libocsync.dll" />
|
||||
</Component>
|
||||
<Component Id="LIBNEON_27.DLLCOMP" Guid="{DA095A0B-64B8-40F4-AD99-F33C2F89EA40}" KeyPath="yes" SharedDllRefCount="yes">
|
||||
<File Id="libneon_27.dll" Name="libneon-27.dll" Source="SourceDir\File\libneon_27.dll" />
|
||||
</Component>
|
||||
<Component Id="LIBMODMAN.DLLCOMP" Guid="{F173ABA5-F9F4-4EE7-898A-736EFD43D606}" KeyPath="yes" SharedDllRefCount="yes">
|
||||
<File Id="libmodman.dll" Name="libmodman.dll" Source="SourceDir\File\libmodman.dll" />
|
||||
</Component>
|
||||
<Component Id="LIBJPEG_8.DLLCOMP" Guid="{FD0E0C8F-953F-49A4-8FAE-E6A007B38E25}" KeyPath="yes" SharedDllRefCount="yes">
|
||||
<File Id="libjpeg_8.dll" Name="libjpeg-8.dll" Source="SourceDir\File\libjpeg_8.dll" />
|
||||
</Component>
|
||||
<Component Id="LIBINTL_8.DLLCOMP" Guid="{901751C7-DECB-4064-B77D-B749CCD5070F}" KeyPath="yes" SharedDllRefCount="yes">
|
||||
<File Id="libintl_8.dll" Name="libintl-8.dll" Source="SourceDir\File\libintl_8.dll" />
|
||||
</Component>
|
||||
<Component Id="LIBGCC_S_SJLJ_1.DLLCOMP" Guid="{3BF279F1-1117-46BC-9C07-8EC5CFAD6AC8}" KeyPath="yes" SharedDllRefCount="yes">
|
||||
<File Id="libgcc_s_sjlj_1.dll" Name="libgcc_s_sjlj-1.dll" Source="SourceDir\File\libgcc_s_sjlj_1.dll" />
|
||||
</Component>
|
||||
<Component Id="LIBCRYPTO_10.DLLCOMP" Guid="{72C56291-ABA9-41E6-BBCC-DEB31459ECEC}" KeyPath="yes" SharedDllRefCount="yes">
|
||||
<File Id="libcrypto_10.dll" Name="libcrypto-10.dll" Source="SourceDir\File\libcrypto_10.dll" />
|
||||
</Component>
|
||||
<Component Id="QTXML4.DLLCOMP" Guid="{0D7A2B10-83AE-4812-94E3-D238EEE3C877}" KeyPath="yes" SharedDllRefCount="yes">
|
||||
<File Id="QtXml4.dll" Name="QtXml4.dll" Source="SourceDir\File\QtXml4.dll" />
|
||||
</Component>
|
||||
<Component Id="QTWEBKIT4.DLLCOMP" Guid="{F15D5486-C429-4837-912F-B252063F0DD3}" KeyPath="yes" SharedDllRefCount="yes">
|
||||
<File Id="QtWebKit4.dll" Name="QtWebKit4.dll" Source="SourceDir\File\QtWebKit4.dll" />
|
||||
</Component>
|
||||
<Component Id="QTSQL4.DLLCOMP" Guid="{E5F88480-BC93-4EEE-ACBB-3CB4161CB040}" KeyPath="yes" SharedDllRefCount="yes">
|
||||
<File Id="QtSql4.dll" Name="QtSql4.dll" Source="SourceDir\File\QtSql4.dll" />
|
||||
</Component>
|
||||
<Component Id="QTNETWORK4.DLLCOMP" Guid="{C34CE47A-D4A4-481E-A8EF-6958D40AD4AC}" KeyPath="yes" SharedDllRefCount="yes">
|
||||
<File Id="QtNetwork4.dll" Name="QtNetwork4.dll" Source="SourceDir\File\QtNetwork4.dll" />
|
||||
</Component>
|
||||
<Component Id="QTGUI4.DLLCOMP" Guid="{12008DB8-26B1-46C9-90BD-6B40E6CB44B4}" KeyPath="yes" SharedDllRefCount="yes">
|
||||
<File Id="QtGui4.dll" Name="QtGui4.dll" Source="SourceDir\File\QtGui4.dll" />
|
||||
</Component>
|
||||
<Component Id="QTCORE4.DLLCOMP" Guid="{8507BF8A-12BF-46E5-946F-2CFA02303753}" KeyPath="yes" SharedDllRefCount="yes">
|
||||
<File Id="QtCore4.dll" Name="QtCore4.dll" Source="SourceDir\File\QtCore4.dll" />
|
||||
</Component>
|
||||
<Component Id="CPACK.GENERICLICENSE.TXTCOMP" Guid="{B731087C-DF1F-462A-945F-E2A7290FF936}" KeyPath="yes" SharedDllRefCount="yes">
|
||||
<File Id="CPack.GenericLicense.txt" Name="CPack.GenericLicense.txt" Source="SourceDir\File\CPack.GenericLicense.txt" />
|
||||
</Component>
|
||||
<Directory Id="SQLDRIVERS" Name="sqldrivers">
|
||||
<Component Id="QSQLITE4.DLLCOMP" Guid="{1BCD8406-7DA8-4D90-9F17-8656933243CF}" KeyPath="yes" SharedDllRefCount="yes">
|
||||
<File Id="qsqlite4.dll" Name="qsqlite4.dll" Source="SourceDir\File\qsqlite4.dll" />
|
||||
</Component>
|
||||
</Directory>
|
||||
<Directory Id="IMAGEFORMATS" Name="imageformats">
|
||||
<Component Id="QJPEG4.DLLCOMP" Guid="{AC9C1B28-CAAB-480D-A57E-4BD359F41ADE}" KeyPath="yes" SharedDllRefCount="yes">
|
||||
<File Id="qjpeg4.dll" Name="qjpeg4.dll" Source="SourceDir\File\qjpeg4.dll" />
|
||||
</Component>
|
||||
<Component Id="QICO4.DLLCOMP" Guid="{6C586BCA-68C1-47E4-9459-9D998CA56089}" KeyPath="yes" SharedDllRefCount="yes">
|
||||
<File Id="qico4.dll" Name="qico4.dll" Source="SourceDir\File\qico4.dll" />
|
||||
</Component>
|
||||
<Component Id="QGIF4.DLLCOMP" Guid="{39F4634F-663B-4D6C-B568-D20EA19D8DF8}" KeyPath="yes" SharedDllRefCount="yes">
|
||||
<File Id="qgif4.dll" Name="qgif4.dll" Source="SourceDir\File\qgif4.dll" />
|
||||
</Component>
|
||||
</Directory>
|
||||
<Directory Id="ACCESSIBLE" Name="accessible">
|
||||
<Component Id="QTACCESSIBLEWIDGETS4.DLLCOMP" Guid="{9B5432E9-EEA8-4FF2-8CEB-D714A2273DE7}" KeyPath="yes" SharedDllRefCount="yes">
|
||||
<File Id="qtaccessiblewidgets4.dll" Name="qtaccessiblewidgets4.dll" Source="SourceDir\File\qtaccessiblewidgets4.dll" />
|
||||
</Component>
|
||||
</Directory>
|
||||
</Directory>
|
||||
</Directory>
|
||||
<Directory Id="ProgramMenuFolder">
|
||||
<Directory Id="ProgramMenuSubfolder" Name="ownCloud">
|
||||
<Component Id="ApplicationShortcuts" Guid="22B7F9AF-DEC1-4385-935E-E865CD938213">
|
||||
<Shortcut Id="ApplicationShortcut1"
|
||||
Name="ownCloud"
|
||||
Description="ownCloud"
|
||||
Target="[INSTALLDIR]owncloud.exe"
|
||||
WorkingDirectory="INSTALLDIR"/>
|
||||
<RegistryValue Root="HKCU"
|
||||
Key="Software\ownCloud\ownCloud"
|
||||
Name="installed"
|
||||
Type="integer"
|
||||
Value="1"
|
||||
KeyPath="yes"/>
|
||||
<RegistryValue Root="HKCU"
|
||||
Key="Software\ownCloud\ownCloud"
|
||||
Name="skipAutoUpdate"
|
||||
Type="integer"
|
||||
Value="1"/>
|
||||
<RemoveFolder Id="ProgramMenuSubfolder" On="uninstall"/>
|
||||
</Component>
|
||||
</Directory>
|
||||
</Directory>
|
||||
</Directory>
|
||||
|
||||
<InstallExecuteSequence>
|
||||
<RemoveExistingProducts After="InstallValidate"/>
|
||||
</InstallExecuteSequence>
|
||||
|
||||
<Feature Id="DefaultFeature" Level="1">
|
||||
<ComponentRef Id="ApplicationFiles"/>
|
||||
<ComponentRef Id="ApplicationShortcuts"/>
|
||||
</Feature>
|
||||
</Product>
|
||||
</Wix>
|
||||
@@ -0,0 +1,67 @@
|
||||
<?xml version='1.0' encoding='windows-1252'?>
|
||||
<Wix xmlns='http://schemas.microsoft.com/wix/2006/wi'>
|
||||
<Product Name='$(var.ProductName)' Id='*'
|
||||
UpgradeCode='9667b86a-1d70-11e6-9cd9-172dcee9770c'
|
||||
Language='1033' Version='2.2.0' Manufacturer='$(var.Manufacturer)'>
|
||||
|
||||
<Package Id='*' InstallerVersion='500' Compressed='yes'
|
||||
InstallScope='perUser' InstallPrivileges='limited' />
|
||||
|
||||
<!-- Precondition checks -->
|
||||
<Condition Message="!(loc.noossupport)"><![CDATA[Installed OR (VersionNT >= 601)]]></Condition>
|
||||
<Condition Message="!(loc.newerinstalled)">NOT NEWERVERSIONDETECTED</Condition>
|
||||
|
||||
<Media Id='1' Cabinet='main.cab' EmbedCab='yes' />
|
||||
<Icon Id="icon.exe" SourceFile="icon.ico"/>
|
||||
|
||||
<SetProperty Id="ProgramFilesFolder" Value="[LocalAppDataFolder]" Before="CostFinalize"><![CDATA[NOT Privileged]]></SetProperty>
|
||||
|
||||
<!-- Add/Remove Programs Info -->
|
||||
|
||||
<!-- Icon in Add/Remove Programs -->
|
||||
<Property Id="ARPPRODUCTICON" Value="ProductIcon"/>
|
||||
<!-- Help Link in Add/Remove Programs -->
|
||||
<Property Id="ARPHELPLINK" Value="$(var.InfoURL)" />
|
||||
<!-- Info Link in Add/Remove Programs -->
|
||||
<Property Id="ARPURLINFOABOUT" Value="http://www.owncloud.org"/>
|
||||
<!-- Update Info in Add/Remove Programs -->
|
||||
<Property Id="ARPURLUPDATEINFO" Value="http://www.owncloud.org/install" />
|
||||
<!-- Remove repair action -->
|
||||
<Property Id="ARPNOREPAIR" Value="yes" Secure="yes" />
|
||||
<!-- Remove modify action -->
|
||||
<Property Id="ARPNOMODIFY" Value="yes" Secure="yes" />
|
||||
|
||||
<Directory Id='TARGETDIR' Name='SourceDir'>
|
||||
<Directory Id="ApplicationProgramsFolder" Name="$(var.ProductName)"/>
|
||||
<Directory Id='ProgramFilesFolder'>
|
||||
<Directory Id='INSTALLDIR' Name='$(var.InstallDir)'>
|
||||
<Directory Id="FilesDir"/>
|
||||
</Directory>
|
||||
</Directory>
|
||||
</Directory>
|
||||
|
||||
<DirectoryRef Id="ApplicationProgramsFolder">
|
||||
<Component Id="ApplicationShortcut" Guid="cc1d09ce-1d93-11e6-a534-0bc7b5e11a24">
|
||||
<Shortcut Id="ApplicationStartMenuShortcut"
|
||||
Name="$(var.ProductName)"
|
||||
Description="The $(var.ProductName) sync client"
|
||||
Target="[#$(var.MainExecutable)]"
|
||||
WorkingDirectory="APPLICATIONROOTDIRECTORY"/>
|
||||
<RemoveFolder Id="ApplicationProgramsFolder" On="uninstall"/>
|
||||
<RegistryValue Root="HKCU" Key="Software\$(var.Manufacturer)\$(var.ProductName)" Name="installed"
|
||||
Type="integer" Value="1" KeyPath="yes"/>
|
||||
</Component>
|
||||
</DirectoryRef>
|
||||
|
||||
<!-- Ensure old version is gone -->
|
||||
<InstallExecuteSequence>
|
||||
<RemoveExistingProducts After="InstallValidate"/>
|
||||
</InstallExecuteSequence>
|
||||
|
||||
<Feature Id='Complete' Level="1">
|
||||
<ComponentGroupRef Id="Files" />
|
||||
<ComponentRef Id="ApplicationShortcut" />
|
||||
</Feature>
|
||||
|
||||
</Product>
|
||||
</Wix>
|
||||
@@ -0,0 +1,27 @@
|
||||
<xsl:stylesheet version="1.0"
|
||||
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
||||
xmlns:wi="http://schemas.microsoft.com/wix/2006/wi">
|
||||
<xsl:key name="vIdToReplace" match="wi:ComponentGroup[@Id='Files']/wi:Component[wi:File[contains(@Source,'$MainExecutable')]]" use="@Id"/>
|
||||
|
||||
<xsl:template match="@*|node()">
|
||||
<xsl:copy>
|
||||
<xsl:apply-templates select="@*|node()" />
|
||||
</xsl:copy>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="node()[key('vIdToReplace', @Id)]">
|
||||
<xsl:copy>
|
||||
<xsl:attribute name="Id">Component_Main_Executable</xsl:attribute>
|
||||
<xsl:copy-of select="@*[name()!='Id']"/>
|
||||
<xsl:apply-templates />
|
||||
</xsl:copy>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="wi:ComponentGroup[@Id='Files']/wi:Component/wi:File[contains(@Source,'$MainExecutable')]">
|
||||
<xsl:copy>
|
||||
<xsl:attribute name="Id">Main_Executable</xsl:attribute>
|
||||
<xsl:copy-of select="@*[name()!='Id']"/>
|
||||
<xsl:apply-templates />
|
||||
</xsl:copy>
|
||||
</xsl:template>
|
||||
</xsl:stylesheet>
|
||||
@@ -41,7 +41,7 @@ master_doc = 'index'
|
||||
|
||||
# General information about the project.
|
||||
project = u'ownCloud Client Manual'
|
||||
copyright = u'2013, The ownCloud developers'
|
||||
copyright = u'2013-2016, The ownCloud developers'
|
||||
|
||||
# The version info for the project you're documenting, acts as replacement for
|
||||
# |version| and |release|, also used in various other places throughout the
|
||||
@@ -250,7 +250,7 @@ texinfo_documents = [
|
||||
epub_title = u'ownCloud Client Manual'
|
||||
epub_author = u'The ownCloud developers'
|
||||
epub_publisher = u'The ownCloud developers'
|
||||
epub_copyright = u'2013, The ownCloud developers'
|
||||
epub_copyright = u'2013-2016, The ownCloud developers'
|
||||
|
||||
# The language of the text. It defaults to the language option
|
||||
# or en if the language is not set.
|
||||
|
||||
|
Antes Largura: | Altura: | Tamanho: 86 KiB Depois Largura: | Altura: | Tamanho: 52 KiB |
|
Depois Largura: | Altura: | Tamanho: 82 KiB |
|
Antes Largura: | Altura: | Tamanho: 49 KiB Depois Largura: | Altura: | Tamanho: 58 KiB |
|
Antes Largura: | Altura: | Tamanho: 58 KiB Depois Largura: | Altura: | Tamanho: 224 KiB |
|
Antes Largura: | Altura: | Tamanho: 23 KiB Depois Largura: | Altura: | Tamanho: 20 KiB |
|
Antes Largura: | Altura: | Tamanho: 24 KiB Depois Largura: | Altura: | Tamanho: 34 KiB |
@@ -4,16 +4,16 @@ ownCloud Desktop Client Manual
|
||||
==============================
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 3
|
||||
:maxdepth: 2
|
||||
|
||||
introduction
|
||||
installing
|
||||
navigating
|
||||
advancedusage
|
||||
autoupdate
|
||||
|
||||
building
|
||||
architecture
|
||||
troubleshooting
|
||||
faq
|
||||
glossary
|
||||
glossary
|
||||
|
||||
@@ -12,26 +12,22 @@ Desktop Sync client enables you to:
|
||||
Your files are always automatically synchronized between your ownCloud server
|
||||
and local PC.
|
||||
|
||||
.. note:: Because of various technical issues, desktop sync clients older than
|
||||
1.7 will not allowed to connect and sync with the ownCloud 8.1+ server. It
|
||||
is highly recommended to keep your client updated.
|
||||
|
||||
Because of various technical issues, desktop sync clients older than 1.7 will
|
||||
not allowed to connect and sync with the ownCloud 8.1+ server. It is highly
|
||||
recommended to keep your client updated.
|
||||
|
||||
Improvements and New Features
|
||||
-----------------------------
|
||||
|
||||
The 2.1 release of the ownCloud desktop sync client has many new features and
|
||||
The 2.2 release of the ownCloud desktop sync client has many new features and
|
||||
improvements. (See the `complete changelog
|
||||
<https://owncloud.org/changelog/desktop/>`_.)
|
||||
|
||||
* Improved appearance on HiDPI screens
|
||||
* Improved error messages
|
||||
* Several fixes/improvements to the sharing dialog
|
||||
* Several fixes/improvements to the server activity tab
|
||||
* Allow changeable upload chunk size in owncloud.cfg
|
||||
* Forget password on explicit sign-out
|
||||
* Windows: Fix deleting and replacing of read-only files
|
||||
* Share with internal ownCloud users from your desktop
|
||||
* Separate views for server activity, sync activity, and errors
|
||||
* Don't re-upload *eml-files if size and checksum are unchanged
|
||||
* Improved upload/download progress indicator
|
||||
* Show server notifications on the client
|
||||
* Improved sync speed
|
||||
* Improved handling of Win32 file locks and network files
|
||||
* Improved user notifications about ignored files and conflicts
|
||||
* Add warnings for old server versions
|
||||
* Update of QtKeyChain to support Windows credential store
|
||||
* Packaging of dolphin overlay icon module for bleeding edge distros
|
||||
|
||||
@@ -62,6 +62,7 @@ This menu provides the following options:
|
||||
* Recent Changes, showing latest activities
|
||||
* Settings
|
||||
* Help menu
|
||||
* Pause synchronizations
|
||||
* An option to log in or log out of all of your accounts at once
|
||||
* Quit ownCloud, logging out and closing the client
|
||||
|
||||
@@ -83,7 +84,7 @@ have the following features:
|
||||
* Connection status, showing which ownCloud server you are connected to, and
|
||||
your ownCloud username.
|
||||
* An **Account** button, which contains a dropdown menu with **Add New**,
|
||||
**Log In/Log Out**, and **Remove**.
|
||||
**Log Out**, and **Remove**.
|
||||
* Used and available space on the server.
|
||||
* Current synchronization status.
|
||||
* **Add Folder Sync Connection** button, which is active only when you have
|
||||
@@ -93,26 +94,17 @@ The little button with three dots (the overflow menu) that sits to the right of
|
||||
the sync status bar offers four additional options:
|
||||
|
||||
* Open Folder
|
||||
* Choose What to Sync
|
||||
* Choose What to Sync (This appears only when your file tree is collapsed, and
|
||||
expands the file tree)
|
||||
* Pause Sync / Resume Sync
|
||||
* Remove folder sync connection
|
||||
|
||||
**Open Folder** opens a file explorer window displaying the client-side folder
|
||||
that is being synced.
|
||||
|
||||
**Choose What to Sync** opens the folder sync tree view. Use this to sync all
|
||||
or only some of the folders in the folder tree.
|
||||
**Open Folder** opens your local ownCloud sync folder.
|
||||
|
||||
**Pause Sync** pauses sync operations without making any changes to your
|
||||
account. It will continue to update file and folder lists, without
|
||||
downloading or updating files. To stop all sync activity use **Remove Sync**.
|
||||
|
||||
**Resume Sync** resumes sync operations.
|
||||
|
||||
**Remove Sync** removes the sync connection without removing the account. This
|
||||
stops all sync activity, including file and folder list updates. If you want to
|
||||
synchronize the folder tree again then click the **Add Folder Sync Connection**
|
||||
button, and re-select the folder tree that you want to sync.
|
||||
downloading or updating files. To stop all sync activity use **Remove
|
||||
Folder Sync Connection**.
|
||||
|
||||
.. figure:: images/client-7.png
|
||||
:alt: Extra options for sync operations
|
||||
@@ -125,12 +117,10 @@ button, and re-select the folder tree that you want to sync.
|
||||
Adding New Accounts
|
||||
^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
You may configure multiple ownCloud accounts in your desktop sync client.
|
||||
Simply
|
||||
You may configure multiple ownCloud accounts in your desktop sync client. Simply
|
||||
click the **Account** > **Add New** button on any account tab to add a new
|
||||
account, and then follow the account creation wizard. The new account will
|
||||
appear as a new tab in the settings dialog, where you can adjust its settings
|
||||
at
|
||||
appear as a new tab in the settings dialog, where you can adjust its settings at
|
||||
any time. Use **Account** > **Remove** to delete accounts.
|
||||
|
||||
File Manager Overlay Icons
|
||||
@@ -175,9 +165,7 @@ the ``owncloud-client-nautilus`` plugin.) You can create share links, and share
|
||||
with internal ownCloud users the same way as in your ownCloud Web interface.
|
||||
|
||||
.. figure:: images/mac-share.png
|
||||
:alt: Sync client integration in Finder on Mac OS X.
|
||||
|
||||
*Shared ownCloud files in Finder on Mac OS X*
|
||||
:alt: Sync client integration in Windows Explorer.
|
||||
|
||||
Right-click your systray icon, hover over the account you want to use, and
|
||||
left-click "Open folder [folder name] to quickly enter your local ownCloud
|
||||
@@ -206,6 +194,25 @@ such as files not synced.
|
||||
|
||||
.. figure:: images/client-8.png
|
||||
:alt: Activity windows logs all server and client activities.
|
||||
|
||||
Server Notifications
|
||||
--------------------
|
||||
|
||||
Starting with version 2.2.0, the client will display notifications from your
|
||||
ownCloud server that require manual interaction by you. For example, when a
|
||||
user on a remote ownCloud creates a new Federated share for you, you can accept
|
||||
it from your desktop client.
|
||||
|
||||
The desktop client automatically checks for available notifications
|
||||
automatically on a regular basis. Notifications are displayed in the Server
|
||||
Activity tab, and if you have **Show Desktop Notifications** enabled (General
|
||||
tab) you'll also see a systray notification.
|
||||
|
||||
.. figure:: images/client12.png
|
||||
:alt: Activity window with notification.
|
||||
|
||||
This also displays notifications sent to users by the ownCloud admin via the
|
||||
Announcements app.
|
||||
|
||||
General Window
|
||||
--------------
|
||||
|
||||
@@ -36,8 +36,7 @@ using namespace std;
|
||||
|
||||
OCClientInterface::ContextMenuInfo OCClientInterface::FetchInfo()
|
||||
{
|
||||
auto pipename = std::wstring(L"\\\\.\\pipe\\");
|
||||
pipename += L"ownCloud";
|
||||
auto pipename = CommunicationSocket::DefaultPipePath();
|
||||
|
||||
CommunicationSocket socket;
|
||||
if (!WaitNamedPipe(pipename.data(), PIPE_TIMEOUT)) {
|
||||
@@ -72,8 +71,7 @@ OCClientInterface::ContextMenuInfo OCClientInterface::FetchInfo()
|
||||
|
||||
void OCClientInterface::ShareObject(const std::wstring &path)
|
||||
{
|
||||
auto pipename = std::wstring(L"\\\\.\\pipe\\");
|
||||
pipename += L"ownCloud";
|
||||
auto pipename = CommunicationSocket::DefaultPipePath();
|
||||
|
||||
CommunicationSocket socket;
|
||||
if (!WaitNamedPipe(pipename.data(), PIPE_TIMEOUT)) {
|
||||
|
||||
@@ -24,11 +24,31 @@
|
||||
|
||||
#include <fstream>
|
||||
|
||||
#define BUFSIZE 1024
|
||||
#define DEFAULT_BUFLEN 4096
|
||||
|
||||
using namespace std;
|
||||
|
||||
#define DEFAULT_BUFLEN 4096
|
||||
namespace {
|
||||
|
||||
std::wstring getUserName() {
|
||||
DWORD len = DEFAULT_BUFLEN;
|
||||
TCHAR buf[DEFAULT_BUFLEN];
|
||||
if (GetUserName(buf, &len)) {
|
||||
return std::wstring(&buf[0], len);
|
||||
} else {
|
||||
return std::wstring();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
std::wstring CommunicationSocket::DefaultPipePath()
|
||||
{
|
||||
auto pipename = std::wstring(L"\\\\.\\pipe\\");
|
||||
pipename += L"ownCloud\\";
|
||||
pipename += getUserName();
|
||||
return pipename;
|
||||
}
|
||||
|
||||
CommunicationSocket::CommunicationSocket()
|
||||
: _pipe(INVALID_HANDLE_VALUE)
|
||||
|
||||
@@ -26,6 +26,8 @@
|
||||
class __declspec(dllexport) CommunicationSocket
|
||||
{
|
||||
public:
|
||||
static std::wstring DefaultPipePath();
|
||||
|
||||
CommunicationSocket();
|
||||
~CommunicationSocket();
|
||||
|
||||
@@ -43,4 +45,4 @@ private:
|
||||
bool _connected;
|
||||
};
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@@ -31,25 +31,10 @@
|
||||
|
||||
using namespace std;
|
||||
|
||||
#define BUFSIZE 512
|
||||
|
||||
std::wstring getUserName() {
|
||||
DWORD len = BUFSIZE;
|
||||
TCHAR buf[BUFSIZE];
|
||||
if (GetUserName(buf, &len)) {
|
||||
return std::wstring(&buf[0], len);
|
||||
} else {
|
||||
return std::wstring();
|
||||
}
|
||||
}
|
||||
|
||||
// This code is run in a thread
|
||||
void RemotePathChecker::workerThreadLoop()
|
||||
{
|
||||
auto pipename = std::wstring(L"\\\\.\\pipe\\");
|
||||
pipename += L"ownCloud\\";
|
||||
pipename += getUserName();
|
||||
|
||||
auto pipename = CommunicationSocket::DefaultPipePath();
|
||||
bool connected = false;
|
||||
CommunicationSocket socket;
|
||||
std::unordered_set<std::wstring> asked;
|
||||
|
||||
@@ -45,7 +45,7 @@ qt_wrap_ui(client_UI_SRCS ${client_UI})
|
||||
set(client_SRCS
|
||||
accountmanager.cpp
|
||||
accountsettings.cpp
|
||||
ocapplication.cpp
|
||||
application.cpp
|
||||
folder.cpp
|
||||
folderman.cpp
|
||||
folderstatusmodel.cpp
|
||||
@@ -212,10 +212,6 @@ if(QTKEYCHAIN_FOUND OR QT5KEYCHAIN_FOUND)
|
||||
list(APPEND libsync_LINK_TARGETS ${QTKEYCHAIN_LIBRARY})
|
||||
include_directories(${QTKEYCHAIN_INCLUDE_DIR})
|
||||
endif()
|
||||
if(LibsnoreQt5_FOUND)
|
||||
add_definitions(-DHAVE_LIBSNORE)
|
||||
|
||||
endif()
|
||||
|
||||
# add executable icon on windows and osx
|
||||
include( AddAppIconMacro )
|
||||
@@ -293,7 +289,6 @@ target_link_libraries( ${APPLICATION_EXECUTABLE} ${QT_LIBRARIES} )
|
||||
target_link_libraries( ${APPLICATION_EXECUTABLE} ${synclib_NAME} )
|
||||
target_link_libraries( ${APPLICATION_EXECUTABLE} updater )
|
||||
target_link_libraries( ${APPLICATION_EXECUTABLE} ${OS_SPECIFIC_LINK_LIBRARIES} )
|
||||
target_link_libraries( ${APPLICATION_EXECUTABLE} Snore::Libsnore Snore::LibsnoreSettings )
|
||||
|
||||
if(WITH_CRASHREPORTER)
|
||||
target_link_libraries( ${APPLICATION_EXECUTABLE} crashreporter-handler)
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
#include "folderstatusmodel.h"
|
||||
#include "folderstatusdelegate.h"
|
||||
#include "utility.h"
|
||||
#include "ocapplication.h"
|
||||
#include "application.h"
|
||||
#include "configfile.h"
|
||||
#include "account.h"
|
||||
#include "accountstate.h"
|
||||
|
||||
@@ -41,7 +41,7 @@ class ActivityListModel;
|
||||
namespace Ui {
|
||||
class ActivityWidget;
|
||||
}
|
||||
class oCApplication;
|
||||
class Application;
|
||||
|
||||
/**
|
||||
* @brief The ActivityWidget class
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
* for more details.
|
||||
*/
|
||||
|
||||
#include "ocapplication.h"
|
||||
#include "application.h"
|
||||
|
||||
#include <iostream>
|
||||
|
||||
@@ -91,7 +91,7 @@ QString applicationTrPath()
|
||||
|
||||
// ----------------------------------------------------------------------------------
|
||||
|
||||
oCApplication::oCApplication(int &argc, char **argv) :
|
||||
Application::Application(int &argc, char **argv) :
|
||||
SharedTools::QtSingleApplication(Theme::instance()->appName() ,argc, argv),
|
||||
_gui(0),
|
||||
_theme(Theme::instance()),
|
||||
@@ -202,7 +202,7 @@ oCApplication::oCApplication(int &argc, char **argv) :
|
||||
connect (this, SIGNAL(aboutToQuit()), SLOT(slotCleanup()));
|
||||
}
|
||||
|
||||
oCApplication::~oCApplication()
|
||||
Application::~Application()
|
||||
{
|
||||
// Make sure all folders are gone, otherwise removing the
|
||||
// accounts will remove the associated folders from the settings.
|
||||
@@ -214,7 +214,7 @@ oCApplication::~oCApplication()
|
||||
AccountManager::instance()->shutdown();
|
||||
}
|
||||
|
||||
void oCApplication::slotAccountStateRemoved(AccountState *accountState)
|
||||
void Application::slotAccountStateRemoved(AccountState *accountState)
|
||||
{
|
||||
if (_gui) {
|
||||
disconnect(accountState, SIGNAL(stateChanged(int)),
|
||||
@@ -237,7 +237,7 @@ void oCApplication::slotAccountStateRemoved(AccountState *accountState)
|
||||
}
|
||||
}
|
||||
|
||||
void oCApplication::slotAccountStateAdded(AccountState *accountState)
|
||||
void Application::slotAccountStateAdded(AccountState *accountState)
|
||||
{
|
||||
connect(accountState, SIGNAL(stateChanged(int)),
|
||||
_gui, SLOT(slotAccountStateChanged()));
|
||||
@@ -251,7 +251,7 @@ void oCApplication::slotAccountStateAdded(AccountState *accountState)
|
||||
_gui->slotTrayMessageIfServerUnsupported(accountState->account().data());
|
||||
}
|
||||
|
||||
void oCApplication::slotCleanup()
|
||||
void Application::slotCleanup()
|
||||
{
|
||||
AccountManager::instance()->save();
|
||||
FolderMan::instance()->unloadAndDeleteAllFolders();
|
||||
@@ -263,7 +263,7 @@ void oCApplication::slotCleanup()
|
||||
// FIXME: This is not ideal yet since a ConnectionValidator might already be running and is in
|
||||
// progress of timing out in some seconds.
|
||||
// Maybe we need 2 validators, one triggered by timer, one by network configuration changes?
|
||||
void oCApplication::slotSystemOnlineConfigurationChanged(QNetworkConfiguration cnf)
|
||||
void Application::slotSystemOnlineConfigurationChanged(QNetworkConfiguration cnf)
|
||||
{
|
||||
if (cnf.state() & QNetworkConfiguration::Active) {
|
||||
//qDebug() << "Trying fast reconnect";
|
||||
@@ -271,7 +271,7 @@ void oCApplication::slotSystemOnlineConfigurationChanged(QNetworkConfiguration c
|
||||
}
|
||||
}
|
||||
|
||||
void oCApplication::slotCheckConnection()
|
||||
void Application::slotCheckConnection()
|
||||
{
|
||||
auto list = AccountManager::instance()->accounts();
|
||||
foreach (const auto &accountState , list) {
|
||||
@@ -293,12 +293,12 @@ void oCApplication::slotCheckConnection()
|
||||
}
|
||||
}
|
||||
|
||||
void oCApplication::slotCrash()
|
||||
void Application::slotCrash()
|
||||
{
|
||||
Utility::crash();
|
||||
}
|
||||
|
||||
void oCApplication::slotownCloudWizardDone( int res )
|
||||
void Application::slotownCloudWizardDone( int res )
|
||||
{
|
||||
AccountManager *accountMan = AccountManager::instance();
|
||||
FolderMan *folderMan = FolderMan::instance();
|
||||
@@ -335,7 +335,7 @@ void oCApplication::slotownCloudWizardDone( int res )
|
||||
}
|
||||
}
|
||||
|
||||
void oCApplication::setupLogging()
|
||||
void Application::setupLogging()
|
||||
{
|
||||
// might be called from second instance
|
||||
Logger::instance()->setLogFile(_logFile);
|
||||
@@ -352,12 +352,12 @@ void oCApplication::setupLogging()
|
||||
|
||||
}
|
||||
|
||||
void oCApplication::slotUseMonoIconsChanged(bool)
|
||||
void Application::slotUseMonoIconsChanged(bool)
|
||||
{
|
||||
_gui->slotComputeOverallSyncStatus();
|
||||
}
|
||||
|
||||
void oCApplication::slotParseMessage(const QString &msg, QObject*)
|
||||
void Application::slotParseMessage(const QString &msg, QObject*)
|
||||
{
|
||||
if (msg.startsWith(QLatin1String("MSG_PARSEOPTIONS:"))) {
|
||||
const int lengthOfMsgPrefix = 17;
|
||||
@@ -375,7 +375,7 @@ void oCApplication::slotParseMessage(const QString &msg, QObject*)
|
||||
}
|
||||
}
|
||||
|
||||
void oCApplication::parseOptions(const QStringList &options)
|
||||
void Application::parseOptions(const QStringList &options)
|
||||
{
|
||||
QStringListIterator it(options);
|
||||
// skip file name;
|
||||
@@ -455,7 +455,7 @@ static void displayHelpText(const QString &t)
|
||||
}
|
||||
#endif
|
||||
|
||||
void oCApplication::showHelp()
|
||||
void Application::showHelp()
|
||||
{
|
||||
setHelp();
|
||||
QString helpText;
|
||||
@@ -473,7 +473,7 @@ void oCApplication::showHelp()
|
||||
displayHelpText(helpText);
|
||||
}
|
||||
|
||||
void oCApplication::showVersion()
|
||||
void Application::showVersion()
|
||||
{
|
||||
QString helpText;
|
||||
QTextStream stream(&helpText);
|
||||
@@ -485,7 +485,7 @@ void oCApplication::showVersion()
|
||||
displayHelpText(helpText);
|
||||
}
|
||||
|
||||
void oCApplication::showHint(std::string errorHint)
|
||||
void Application::showHint(std::string errorHint)
|
||||
{
|
||||
static QString binName = QFileInfo(QCoreApplication::applicationFilePath()).fileName();
|
||||
std::cerr << errorHint << std::endl;
|
||||
@@ -493,12 +493,12 @@ void oCApplication::showHint(std::string errorHint)
|
||||
std::exit(1);
|
||||
}
|
||||
|
||||
bool oCApplication::debugMode()
|
||||
bool Application::debugMode()
|
||||
{
|
||||
return _debugMode;
|
||||
}
|
||||
|
||||
void oCApplication::setHelp()
|
||||
void Application::setHelp()
|
||||
{
|
||||
_helpOnly = true;
|
||||
}
|
||||
@@ -518,7 +518,7 @@ QString substLang(const QString &lang)
|
||||
return lang;
|
||||
}
|
||||
|
||||
void oCApplication::setupTranslations()
|
||||
void Application::setupTranslations()
|
||||
{
|
||||
QStringList uiLanguages;
|
||||
// uiLanguages crashes on Windows with 4.8.0 release builds
|
||||
@@ -582,20 +582,21 @@ void oCApplication::setupTranslations()
|
||||
#endif
|
||||
}
|
||||
|
||||
bool oCApplication::giveHelp()
|
||||
bool Application::giveHelp()
|
||||
{
|
||||
return _helpOnly;
|
||||
}
|
||||
|
||||
bool oCApplication::versionOnly()
|
||||
bool Application::versionOnly()
|
||||
{
|
||||
return _versionOnly;
|
||||
}
|
||||
|
||||
void oCApplication::showSettingsDialog()
|
||||
void Application::showSettingsDialog()
|
||||
{
|
||||
_gui->slotShowSettings();
|
||||
}
|
||||
|
||||
|
||||
} // namespace OCC
|
||||
|
||||
@@ -12,8 +12,8 @@
|
||||
* for more details.
|
||||
*/
|
||||
|
||||
#ifndef OCAPPLICATION_H
|
||||
#define OCAPPLICATION_H
|
||||
#ifndef APPLICATION_H
|
||||
#define APPLICATION_H
|
||||
|
||||
#include <QApplication>
|
||||
#include <QPointer>
|
||||
@@ -49,12 +49,12 @@ class SslErrorDialog;
|
||||
* @brief The Application class
|
||||
* @ingroup gui
|
||||
*/
|
||||
class oCApplication : public SharedTools::QtSingleApplication
|
||||
class Application : public SharedTools::QtSingleApplication
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit oCApplication(int &argc, char **argv);
|
||||
~oCApplication();
|
||||
explicit Application(int &argc, char **argv);
|
||||
~Application();
|
||||
|
||||
bool giveHelp();
|
||||
void showHelp();
|
||||
@@ -29,7 +29,7 @@ class TestFolderMan;
|
||||
|
||||
namespace OCC {
|
||||
|
||||
class oCApplication;
|
||||
class Application;
|
||||
class SyncResult;
|
||||
class SocketApi;
|
||||
class LockWatcher;
|
||||
@@ -255,7 +255,7 @@ private:
|
||||
|
||||
static FolderMan *_instance;
|
||||
explicit FolderMan(QObject *parent = 0);
|
||||
friend class OCC::oCApplication;
|
||||
friend class OCC::Application;
|
||||
friend class ::TestFolderMan;
|
||||
};
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
|
||||
#include "theme.h"
|
||||
#include "configfile.h"
|
||||
#include "ocapplication.h"
|
||||
#include "application.h"
|
||||
#include "utility.h"
|
||||
#include "configfile.h"
|
||||
#include "owncloudsetupwizard.h"
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
#include <sys/resource.h>
|
||||
#endif
|
||||
|
||||
#include "ocapplication.h"
|
||||
#include "application.h"
|
||||
#include "theme.h"
|
||||
#include "utility.h"
|
||||
#include "cocoainitializer.h"
|
||||
@@ -63,7 +63,7 @@ int main(int argc, char **argv)
|
||||
#ifdef Q_OS_MAC
|
||||
Mac::CocoaInitializer cocoaInit; // RIIA
|
||||
#endif
|
||||
OCC::oCApplication app(argc, argv);
|
||||
OCC::Application app(argc, argv);
|
||||
|
||||
#ifdef Q_OS_WIN
|
||||
// The Windows style still has pixelated elements with Qt 5.6,
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
|
||||
#include "theme.h"
|
||||
#include "configfile.h"
|
||||
#include "ocapplication.h"
|
||||
#include "application.h"
|
||||
#include "utility.h"
|
||||
#include "configfile.h"
|
||||
#include "folderman.h"
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
* for more details.
|
||||
*/
|
||||
|
||||
#include "ocapplication.h"
|
||||
#include "application.h"
|
||||
#include "owncloudgui.h"
|
||||
#include "theme.h"
|
||||
#include "folderman.h"
|
||||
@@ -47,7 +47,7 @@ namespace OCC {
|
||||
|
||||
const char propertyAccountC[] = "oc_account";
|
||||
|
||||
ownCloudGui::ownCloudGui(oCApplication *parent) :
|
||||
ownCloudGui::ownCloudGui(Application *parent) :
|
||||
QObject(parent),
|
||||
_tray(0),
|
||||
#if defined(Q_OS_MAC)
|
||||
@@ -96,10 +96,10 @@ ownCloudGui::ownCloudGui(oCApplication *parent) :
|
||||
connect( AccountManager::instance(), SIGNAL(accountRemoved(AccountState*)),
|
||||
SLOT(setupContextMenu()));
|
||||
|
||||
connect( Logger::instance(), SIGNAL(guiLog(QString,QString, Logger::NotificationType)),
|
||||
SLOT(slotShowTrayMessage(QString,QString, Logger::NotificationType)));
|
||||
connect( Logger::instance(), SIGNAL(optionalGuiLog(QString,QString, Logger::NotificationType)),
|
||||
SLOT(slotShowOptionalTrayMessage(QString,QString,Logger::NotificationType)));
|
||||
connect( Logger::instance(), SIGNAL(guiLog(QString,QString)),
|
||||
SLOT(slotShowTrayMessage(QString,QString)));
|
||||
connect( Logger::instance(), SIGNAL(optionalGuiLog(QString,QString)),
|
||||
SLOT(slotShowOptionalTrayMessage(QString,QString)));
|
||||
connect( Logger::instance(), SIGNAL(guiMessage(QString,QString)),
|
||||
SLOT(slotShowGuiMessage(QString,QString)));
|
||||
|
||||
@@ -237,8 +237,7 @@ void ownCloudGui::slotTrayMessageIfServerUnsupported(Account* account)
|
||||
tr("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.")
|
||||
.arg(account->displayName(), account->serverVersion()),
|
||||
Logger::Critical );
|
||||
.arg(account->displayName(), account->serverVersion()));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -536,36 +535,19 @@ void ownCloudGui::setupContextMenu()
|
||||
}
|
||||
|
||||
|
||||
void ownCloudGui::slotShowTrayMessage(const QString &title, const QString &msg, Logger::NotificationType type)
|
||||
void ownCloudGui::slotShowTrayMessage(const QString &title, const QString &msg)
|
||||
{
|
||||
if( _tray ) {
|
||||
QSystemTrayIcon::MessageIcon trayIcon = QSystemTrayIcon::NoIcon;
|
||||
switch( type ) {
|
||||
case Logger::NoIcon:
|
||||
break;
|
||||
case Logger::Information:
|
||||
trayIcon = QSystemTrayIcon::Information;
|
||||
break;
|
||||
case Logger::SoftError:
|
||||
trayIcon = QSystemTrayIcon::Warning;
|
||||
break;
|
||||
case Logger::Error:
|
||||
case Logger::Critical:
|
||||
trayIcon = QSystemTrayIcon::Critical;
|
||||
break;
|
||||
}
|
||||
|
||||
_tray->showMessage(title, msg, trayIcon);
|
||||
} else {
|
||||
if( _tray )
|
||||
_tray->showMessage(title, msg);
|
||||
else
|
||||
qDebug() << "Tray not ready: " << msg;
|
||||
}
|
||||
}
|
||||
|
||||
void ownCloudGui::slotShowOptionalTrayMessage(const QString &title, const QString &msg, Logger::NotificationType type)
|
||||
void ownCloudGui::slotShowOptionalTrayMessage(const QString &title, const QString &msg)
|
||||
{
|
||||
ConfigFile cfg;
|
||||
if (cfg.optionalDesktopNotifications()) {
|
||||
slotShowTrayMessage(title, msg, type);
|
||||
slotShowTrayMessage(title, msg);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -17,7 +17,6 @@
|
||||
#include "systray.h"
|
||||
#include "connectionvalidator.h"
|
||||
#include "progressdispatcher.h"
|
||||
#include "logger.h"
|
||||
|
||||
#include <QObject>
|
||||
#include <QPointer>
|
||||
@@ -33,7 +32,7 @@ class Folder;
|
||||
class SettingsDialog;
|
||||
class SettingsDialogMac;
|
||||
class ShareDialog;
|
||||
class oCApplication;
|
||||
class Application;
|
||||
class LogBrowser;
|
||||
class AccountState;
|
||||
|
||||
@@ -45,7 +44,7 @@ class ownCloudGui : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit ownCloudGui(oCApplication *parent = 0);
|
||||
explicit ownCloudGui(Application *parent = 0);
|
||||
|
||||
bool checkAccountExists(bool openSettings);
|
||||
|
||||
@@ -59,8 +58,8 @@ signals:
|
||||
public slots:
|
||||
void setupContextMenu();
|
||||
void slotComputeOverallSyncStatus();
|
||||
void slotShowTrayMessage(const QString &title, const QString &msg, Logger::NotificationType type);
|
||||
void slotShowOptionalTrayMessage(const QString &title, const QString &msg, Logger::NotificationType type);
|
||||
void slotShowTrayMessage(const QString &title, const QString &msg);
|
||||
void slotShowOptionalTrayMessage(const QString &title, const QString &msg);
|
||||
void slotFolderOpenAction( const QString& alias );
|
||||
void slotRebuildRecentMenus();
|
||||
void slotUpdateProgress(const QString &folder, const ProgressInfo& progress);
|
||||
@@ -123,7 +122,7 @@ private:
|
||||
QSignalMapper *_folderOpenActionMapper;
|
||||
QSignalMapper *_recentItemsMapper;
|
||||
|
||||
oCApplication *_app;
|
||||
Application *_app;
|
||||
};
|
||||
|
||||
} // namespace OCC
|
||||
|
||||
@@ -31,7 +31,7 @@ class SyncResult;
|
||||
namespace Ui {
|
||||
class ProtocolWidget;
|
||||
}
|
||||
class oCApplication;
|
||||
class Application;
|
||||
|
||||
/**
|
||||
* @brief The ProtocolWidget class
|
||||
|
||||
@@ -33,7 +33,7 @@ namespace Ui {
|
||||
class SettingsDialog;
|
||||
}
|
||||
class AccountSettings;
|
||||
class oCApplication;
|
||||
class Application;
|
||||
class FolderMan;
|
||||
class ownCloudGui;
|
||||
class ActivitySettings;
|
||||
|
||||
@@ -56,6 +56,13 @@
|
||||
// The second number should be changed when there are new features.
|
||||
#define MIRALL_SOCKET_API_VERSION "1.0"
|
||||
|
||||
static inline QString removeTrailingSlash(QString path)
|
||||
{
|
||||
Q_ASSERT(path.endsWith(QLatin1Char('/')));
|
||||
path.truncate(path.length()-1);
|
||||
return path;
|
||||
}
|
||||
|
||||
namespace OCC {
|
||||
|
||||
#define DEBUG qDebug() << "SocketApi: "
|
||||
@@ -142,7 +149,7 @@ void SocketApi::slotNewConnection()
|
||||
|
||||
foreach( Folder *f, FolderMan::instance()->map() ) {
|
||||
if (f->canSync()) {
|
||||
QString message = buildRegisterPathMessage(f->path());
|
||||
QString message = buildRegisterPathMessage(removeTrailingSlash(f->path()));
|
||||
sendMessage(socket, message);
|
||||
}
|
||||
}
|
||||
@@ -189,7 +196,7 @@ void SocketApi::slotRegisterPath( const QString& alias )
|
||||
|
||||
Folder *f = FolderMan::instance()->folder(alias);
|
||||
if (f) {
|
||||
QString message = buildRegisterPathMessage(f->path());
|
||||
QString message = buildRegisterPathMessage(removeTrailingSlash(f->path()));
|
||||
foreach(QIODevice *socket, _listeners) {
|
||||
sendMessage(socket, message);
|
||||
}
|
||||
@@ -205,7 +212,7 @@ void SocketApi::slotUnregisterPath( const QString& alias )
|
||||
|
||||
Folder *f = FolderMan::instance()->folder(alias);
|
||||
if (f)
|
||||
broadcastMessage(QLatin1String("UNREGISTER_PATH"), f->path(), QString::null, true );
|
||||
broadcastMessage(QLatin1String("UNREGISTER_PATH"), removeTrailingSlash(f->path()), QString::null, true );
|
||||
|
||||
_registeredAliases.remove(alias);
|
||||
}
|
||||
@@ -225,10 +232,11 @@ void SocketApi::slotUpdateFolderView(Folder *f)
|
||||
f->syncResult().status() == SyncResult::Error ||
|
||||
f->syncResult().status() == SyncResult::SetupError ) {
|
||||
|
||||
broadcastMessage(QLatin1String("STATUS"), f->path() ,
|
||||
QString rootPath = removeTrailingSlash(f->path());
|
||||
broadcastMessage(QLatin1String("STATUS"), rootPath,
|
||||
f->syncEngine().syncFileStatusTracker().fileStatus("").toSocketAPIString());
|
||||
|
||||
broadcastMessage(QLatin1String("UPDATE_VIEW"), f->path() );
|
||||
broadcastMessage(QLatin1String("UPDATE_VIEW"), rootPath);
|
||||
} else {
|
||||
qDebug() << "Not sending UPDATE_VIEW for" << f->alias() << "because status() is" << f->syncResult().status();
|
||||
}
|
||||
@@ -302,8 +310,12 @@ void SocketApi::command_RETRIEVE_FILE_STATUS(const QString& argument, QIODevice*
|
||||
// this can happen in offline mode e.g.: nothing to worry about
|
||||
statusString = QLatin1String("NOP");
|
||||
} else {
|
||||
const QString file = QDir::cleanPath(argument).mid(syncFolder->cleanPath().length()+1);
|
||||
SyncFileStatus fileStatus = syncFolder->syncEngine().syncFileStatusTracker().fileStatus(file);
|
||||
QString relativePath = QDir::cleanPath(argument).mid(syncFolder->cleanPath().length()+1);
|
||||
if( relativePath.endsWith(QLatin1Char('/')) ) {
|
||||
relativePath.truncate(relativePath.length()-1);
|
||||
qWarning() << "Removed trailing slash for directory: " << relativePath << "Status pushes won't have one.";
|
||||
}
|
||||
SyncFileStatus fileStatus = syncFolder->syncEngine().syncFileStatusTracker().fileStatus(relativePath);
|
||||
|
||||
statusString = fileStatus.toSocketAPIString();
|
||||
}
|
||||
|
||||
@@ -12,15 +12,9 @@
|
||||
* for more details.
|
||||
*/
|
||||
|
||||
#ifdef HAVE_LIBSNORE
|
||||
#include <libsnore/application.h>
|
||||
#include <libsnore/notification/icon.h>
|
||||
#endif
|
||||
|
||||
#include "systray.h"
|
||||
#include "theme.h"
|
||||
#include <QDebug>
|
||||
#include <QPointer>
|
||||
|
||||
#ifdef USE_FDO_NOTIFICATIONS
|
||||
#include <QDBusConnection>
|
||||
@@ -34,54 +28,8 @@
|
||||
|
||||
namespace OCC {
|
||||
|
||||
Systray::Systray( )
|
||||
void Systray::showMessage(const QString & title, const QString & message, MessageIcon icon, int millisecondsTimeoutHint)
|
||||
{
|
||||
#ifdef HAVE_LIBSNORE
|
||||
Snore::SnoreCore &snore = Snore::SnoreCore::instance();
|
||||
snore.loadPlugins( Snore::SnorePlugin::Backend | Snore::SnorePlugin::SecondaryBackend );
|
||||
snore.setDefaultSettingsValue("Silent", true, Snore::LocalSetting );
|
||||
|
||||
_application = Snore::Application( Theme::instance()->appName(), Theme::instance()->applicationIcon() );
|
||||
_application.hints().setValue( "use-markup", true );
|
||||
_application.hints().setValue( "windows-app-id", Theme::instance()->appName() );
|
||||
_application.hints().setValue( "desktop-entry", Theme::instance()->appNameGUI() );
|
||||
_application.hints().setValue( "tray-icon", qVariantFromValue(QPointer<QSystemTrayIcon>(this)));
|
||||
|
||||
// register the Alerts.
|
||||
Snore::Alert alert( Theme::instance()->appNameGUI(), QIcon() );
|
||||
_alerts.insert( QSystemTrayIcon::NoIcon, alert);
|
||||
_application.addAlert(alert);
|
||||
Snore::Alert alert2( Theme::instance()->appNameGUI(), Theme::instance()->syncStateIcon(SyncResult::Success, false ));
|
||||
_alerts.insert( QSystemTrayIcon::Information, alert2);
|
||||
_application.addAlert(alert2);
|
||||
Snore::Alert alert3( Theme::instance()->appNameGUI(), Theme::instance()->syncStateIcon(SyncResult::Problem, false ));
|
||||
_alerts.insert( QSystemTrayIcon::Warning, alert3);
|
||||
_application.addAlert(alert3);
|
||||
Snore::Alert alert4( Theme::instance()->appNameGUI(), Theme::instance()->syncStateIcon(SyncResult::Error, false ));
|
||||
_alerts.insert( QSystemTrayIcon::Critical, alert4);
|
||||
_application.addAlert(alert4);
|
||||
|
||||
snore.registerApplication( _application );
|
||||
snore.setDefaultApplication( _application );
|
||||
|
||||
// connect( &snore, SIGNAL( actionInvoked( Snore::Notification ) ), this, SLOT( slotActionInvoked( Snore::Notification ) ) );
|
||||
#endif
|
||||
}
|
||||
|
||||
void Systray::showMessage(const QString & title, const QString & message, MessageIcon icon,
|
||||
int millisecondsTimeoutHint)
|
||||
{
|
||||
#ifdef HAVE_LIBSNORE
|
||||
Snore::Alert a = _alerts[NoIcon];
|
||||
if( _alerts.contains(icon) ) {
|
||||
a = _alerts[icon];
|
||||
}
|
||||
|
||||
Snore::Notification n( _application , a, title, message, a.icon() );
|
||||
Snore::SnoreCore::instance().broadcastNotification( n );
|
||||
|
||||
return;
|
||||
#endif
|
||||
|
||||
#ifdef USE_FDO_NOTIFICATIONS
|
||||
if(QDBusInterface(NOTIFICATIONS_SERVICE, NOTIFICATIONS_PATH, NOTIFICATIONS_IFACE).isValid()) {
|
||||
|
||||
@@ -15,13 +15,8 @@
|
||||
#ifndef SYSTRAY_H
|
||||
#define SYSTRAY_H
|
||||
|
||||
#include "logger.h"
|
||||
#include <QSystemTrayIcon>
|
||||
|
||||
#ifdef HAVE_LIBSNORE
|
||||
#include <libsnore/snore.h>
|
||||
#endif
|
||||
|
||||
class QIcon;
|
||||
|
||||
namespace OCC {
|
||||
@@ -39,17 +34,8 @@ class Systray : public QSystemTrayIcon
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit Systray();
|
||||
|
||||
void showMessage(const QString & title, const QString & message, MessageIcon icon = Information,
|
||||
int millisecondsTimeoutHint = 10000);
|
||||
void showMessage(const QString & title, const QString & message, MessageIcon icon = Information, int millisecondsTimeoutHint = 10000);
|
||||
void setToolTip(const QString &tip);
|
||||
|
||||
private:
|
||||
#ifdef HAVE_LIBSNORE
|
||||
Snore::Application _application;
|
||||
QHash<QSystemTrayIcon::MessageIcon, Snore::Alert> _alerts;
|
||||
#endif
|
||||
};
|
||||
|
||||
} // namespace OCC
|
||||
|
||||
@@ -74,14 +74,14 @@ Logger::~Logger() {
|
||||
}
|
||||
|
||||
|
||||
void Logger::postGuiLog(const QString &title, const QString &message, NotificationType type )
|
||||
void Logger::postGuiLog(const QString &title, const QString &message)
|
||||
{
|
||||
emit guiLog(title, message, type);
|
||||
emit guiLog(title, message);
|
||||
}
|
||||
|
||||
void Logger::postOptionalGuiLog(const QString &title, const QString &message, NotificationType type )
|
||||
void Logger::postOptionalGuiLog(const QString &title, const QString &message)
|
||||
{
|
||||
emit optionalGuiLog(title, message, type);
|
||||
emit optionalGuiLog(title, message);
|
||||
}
|
||||
|
||||
void Logger::postGuiMessage(const QString &title, const QString &message)
|
||||
|
||||
@@ -45,14 +45,6 @@ class OWNCLOUDSYNC_EXPORT Logger : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
enum NotificationType {
|
||||
NoIcon = 0,
|
||||
Information,
|
||||
SoftError,
|
||||
Error,
|
||||
Critical
|
||||
};
|
||||
|
||||
|
||||
bool isNoop() const;
|
||||
void log(Log log);
|
||||
@@ -65,8 +57,8 @@ public:
|
||||
|
||||
static Logger* instance();
|
||||
|
||||
void postGuiLog(const QString& title, const QString& message, NotificationType type = Information);
|
||||
void postOptionalGuiLog(const QString& title, const QString& message, NotificationType type = Information);
|
||||
void postGuiLog(const QString& title, const QString& message);
|
||||
void postOptionalGuiLog(const QString& title, const QString& message);
|
||||
void postGuiMessage(const QString& title, const QString& message);
|
||||
|
||||
void setLogFile( const QString & name );
|
||||
@@ -76,9 +68,9 @@ public:
|
||||
|
||||
signals:
|
||||
void newLog(const QString&);
|
||||
void guiLog(const QString&, const QString&, Logger::NotificationType type);
|
||||
void guiLog(const QString&, const QString&);
|
||||
void guiMessage(const QString&, const QString&);
|
||||
void optionalGuiLog(const QString&, const QString&, Logger::NotificationType type);
|
||||
void optionalGuiLog(const QString&, const QString&);
|
||||
|
||||
public slots:
|
||||
void enterNextLogFile();
|
||||
|
||||
@@ -92,15 +92,11 @@ SyncFileItem SyncFileStatusTracker::rootSyncFileItem()
|
||||
return fakeRootItem;
|
||||
}
|
||||
|
||||
SyncFileStatus SyncFileStatusTracker::fileStatus(const QString& systemFileName)
|
||||
SyncFileStatus SyncFileStatusTracker::fileStatus(const QString& relativePath)
|
||||
{
|
||||
QString fileName = systemFileName.normalized(QString::NormalizationForm_C);
|
||||
if( fileName.endsWith(QLatin1Char('/')) ) {
|
||||
fileName.truncate(fileName.length()-1);
|
||||
qDebug() << "Removed trailing slash: " << fileName;
|
||||
}
|
||||
Q_ASSERT(!relativePath.endsWith(QLatin1Char('/')));
|
||||
|
||||
if( fileName.isEmpty() ) {
|
||||
if (relativePath.isEmpty()) {
|
||||
// This is the root sync folder, it doesn't have an entry in the database and won't be walked by csync, so create one manually.
|
||||
return syncFileItemStatus(rootSyncFileItem());
|
||||
}
|
||||
@@ -111,22 +107,22 @@ SyncFileStatus SyncFileStatusTracker::fileStatus(const QString& systemFileName)
|
||||
// update the exclude list at runtime and doing it statically here removes
|
||||
// our ability to notify changes through the fileStatusChanged signal,
|
||||
// it's an acceptable compromize to treat all exclude types the same.
|
||||
if( _syncEngine->excludedFiles().isExcluded(_syncEngine->localPath() + fileName,
|
||||
if( _syncEngine->excludedFiles().isExcluded(_syncEngine->localPath() + relativePath,
|
||||
_syncEngine->localPath(),
|
||||
_syncEngine->ignoreHiddenFiles()) ) {
|
||||
return SyncFileStatus(SyncFileStatus::StatusWarning);
|
||||
}
|
||||
|
||||
if ( _dirtyPaths.contains(fileName) )
|
||||
if ( _dirtyPaths.contains(relativePath) )
|
||||
return SyncFileStatus::StatusSync;
|
||||
|
||||
SyncFileItem* item = _syncEngine->findSyncItem(fileName);
|
||||
SyncFileItem* item = _syncEngine->findSyncItem(relativePath);
|
||||
if (item) {
|
||||
return syncFileItemStatus(*item);
|
||||
}
|
||||
|
||||
// If we're not currently syncing that file, look it up in the database to know if it's shared
|
||||
SyncJournalFileRecord rec = _syncEngine->journal()->getFileRecord(fileName);
|
||||
SyncJournalFileRecord rec = _syncEngine->journal()->getFileRecord(relativePath);
|
||||
if (rec.isValid()) {
|
||||
return syncFileItemStatus(rec.toSyncFileItem());
|
||||
}
|
||||
@@ -158,7 +154,7 @@ void SyncFileStatusTracker::slotAboutToPropagate(SyncFileItemVector& items)
|
||||
} else if (showWarningInSocketApi(*item)) {
|
||||
_syncProblems[item->_file] = SyncFileStatus::StatusWarning;
|
||||
}
|
||||
emit fileStatusChanged(getSystemDestination(*item), syncFileItemStatus(*item));
|
||||
emit fileStatusChanged(getSystemDestination(item->destination()), syncFileItemStatus(*item));
|
||||
}
|
||||
|
||||
// Make sure to push any status that might have been resolved indirectly since the last sync
|
||||
@@ -170,7 +166,7 @@ void SyncFileStatusTracker::slotAboutToPropagate(SyncFileItemVector& items)
|
||||
SyncFileStatus::SyncFileStatusTag severity = it->second;
|
||||
if (severity == SyncFileStatus::StatusError)
|
||||
invalidateParentPaths(path);
|
||||
emit fileStatusChanged(_syncEngine->localPath() + path, fileStatus(path));
|
||||
emit fileStatusChanged(getSystemDestination(path), fileStatus(path));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -184,11 +180,10 @@ void SyncFileStatusTracker::slotItemCompleted(const SyncFileItem &item)
|
||||
} else if (showWarningInSocketApi(item)) {
|
||||
_syncProblems[item._file] = SyncFileStatus::StatusWarning;
|
||||
} else {
|
||||
// There is currently no situation where an error status set during discovery/update is fixed by propagation.
|
||||
Q_ASSERT(_syncProblems.find(item._file) == _syncProblems.end());
|
||||
_syncProblems.erase(item._file);
|
||||
}
|
||||
|
||||
emit fileStatusChanged(getSystemDestination(item), syncFileItemStatus(item));
|
||||
emit fileStatusChanged(getSystemDestination(item.destination()), syncFileItemStatus(item));
|
||||
}
|
||||
|
||||
void SyncFileStatusTracker::slotSyncEngineRunningChanged()
|
||||
@@ -236,20 +231,19 @@ void SyncFileStatusTracker::invalidateParentPaths(const QString& path)
|
||||
QStringList splitPath = path.split('/', QString::SkipEmptyParts);
|
||||
for (int i = 0; i < splitPath.size(); ++i) {
|
||||
QString parentPath = QStringList(splitPath.mid(0, i)).join(QLatin1String("/"));
|
||||
emit fileStatusChanged(_syncEngine->localPath() + parentPath, fileStatus(parentPath));
|
||||
emit fileStatusChanged(getSystemDestination(parentPath), fileStatus(parentPath));
|
||||
}
|
||||
}
|
||||
|
||||
QString SyncFileStatusTracker::getSystemDestination(const SyncFileItem& item)
|
||||
QString SyncFileStatusTracker::getSystemDestination(const QString& relativePath)
|
||||
{
|
||||
QString systemFileName = _syncEngine->localPath() + item.destination();
|
||||
// the trailing slash for directories must be appended as the filenames coming in
|
||||
// from the plugins have that too. Otherwise the matching entry item is not found
|
||||
// in the plugin.
|
||||
if( item._type == SyncFileItem::Type::Directory ) {
|
||||
systemFileName += QLatin1Char('/');
|
||||
QString systemPath = _syncEngine->localPath() + relativePath;
|
||||
// SyncEngine::localPath() has a trailing slash, make sure to remove it if the
|
||||
// destination is empty.
|
||||
if( systemPath.endsWith(QLatin1Char('/')) ) {
|
||||
systemPath.truncate(systemPath.length()-1);
|
||||
}
|
||||
return systemFileName;
|
||||
return systemPath;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -35,7 +35,7 @@ class OWNCLOUDSYNC_EXPORT SyncFileStatusTracker : public QObject
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit SyncFileStatusTracker(SyncEngine* syncEngine);
|
||||
SyncFileStatus fileStatus(const QString& systemFileName);
|
||||
SyncFileStatus fileStatus(const QString& relativePath);
|
||||
|
||||
public slots:
|
||||
void slotPathTouched(const QString& fileName);
|
||||
@@ -54,7 +54,7 @@ private:
|
||||
SyncFileItem rootSyncFileItem();
|
||||
|
||||
void invalidateParentPaths(const QString& path);
|
||||
QString getSystemDestination(const SyncFileItem& syncEnginePath);
|
||||
QString getSystemDestination(const QString& relativePath);
|
||||
|
||||
SyncEngine* _syncEngine;
|
||||
|
||||
|
||||
@@ -26,22 +26,23 @@ private slots:
|
||||
bool excludeHidden = true;
|
||||
bool keepHidden = false;
|
||||
|
||||
QVERIFY(!excluded.isExcluded("/a/b", "b", keepHidden));
|
||||
QVERIFY(!excluded.isExcluded("/a/b~", "b~", keepHidden));
|
||||
QVERIFY(!excluded.isExcluded("/a/.b", ".b", keepHidden));
|
||||
QVERIFY(excluded.isExcluded("/a/.b", ".b", excludeHidden));
|
||||
bool x = excluded.isExcluded("/a/b", "/a", keepHidden);
|
||||
QVERIFY(!excluded.isExcluded("/a/b", "/a", keepHidden));
|
||||
QVERIFY(!excluded.isExcluded("/a/b~", "/a", keepHidden));
|
||||
QVERIFY(!excluded.isExcluded("/a/.b", "/a", keepHidden));
|
||||
QVERIFY(excluded.isExcluded("/a/.b", "/a", excludeHidden));
|
||||
|
||||
QString path(BIN_PATH);
|
||||
path.append("/sync-exclude.lst");
|
||||
excluded.addExcludeFilePath(path);
|
||||
excluded.reloadExcludes();
|
||||
|
||||
QVERIFY(!excluded.isExcluded("/a/b", "b", keepHidden));
|
||||
QVERIFY(excluded.isExcluded("/a/b~", "b~", keepHidden));
|
||||
QVERIFY(!excluded.isExcluded("/a/.b", ".b", keepHidden));
|
||||
QVERIFY(excluded.isExcluded("/a/.Trashes", ".Trashes", keepHidden));
|
||||
QVERIFY(excluded.isExcluded("/a/foo_conflict-bar", "foo_conflict-bar", keepHidden));
|
||||
QVERIFY(excluded.isExcluded("/a/.b", ".b", excludeHidden));
|
||||
QVERIFY(!excluded.isExcluded("/a/b", "/a", keepHidden));
|
||||
QVERIFY(excluded.isExcluded("/a/b~", "/a", keepHidden));
|
||||
QVERIFY(!excluded.isExcluded("/a/.b", "/a", keepHidden));
|
||||
QVERIFY(excluded.isExcluded("/a/.Trashes", "/a", keepHidden));
|
||||
QVERIFY(excluded.isExcluded("/a/foo_conflict-bar", "/a", keepHidden));
|
||||
QVERIFY(excluded.isExcluded("/a/.b", "/a", excludeHidden));
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -121,7 +121,9 @@ private slots:
|
||||
// Current requires an X-Server
|
||||
return;
|
||||
}
|
||||
QString ver = versionOfInstalledBinary(BIN_PATH);
|
||||
// pass the binary name owncloud to the next call. This brakes branding,
|
||||
// but branding is not supposed to work with this.
|
||||
QString ver = versionOfInstalledBinary(BIN_PATH+QLatin1String("/owncloud"));
|
||||
qDebug() << "Version of installed ownCloud Binary: " << ver;
|
||||
QVERIFY( !ver.isEmpty());
|
||||
|
||||
@@ -134,34 +136,27 @@ private slots:
|
||||
|
||||
void testTimeAgo()
|
||||
{
|
||||
// Both times in local time
|
||||
// Both times in same timezone
|
||||
QDateTime d1 = QDateTime::fromString("2015-01-24T09:20:30+01:00", Qt::ISODate);
|
||||
QDateTime d2 = QDateTime::fromString("2015-01-23T09:20:30+01:00", Qt::ISODate);
|
||||
QString s = timeAgoInWords(d2, d1);
|
||||
QCOMPARE(s, QLatin1String("1 day(s) ago"));
|
||||
|
||||
//
|
||||
// Different timezones
|
||||
QDateTime earlyTS = QDateTime::fromString("2015-01-24T09:20:30+01:00", Qt::ISODate);
|
||||
earlyTS.setTimeSpec(Qt::UTC);
|
||||
QDateTime laterTS = earlyTS.toOffsetFromUtc(3600);
|
||||
laterTS.setTimeSpec(Qt::UTC);
|
||||
QDateTime laterTS = QDateTime::fromString("2015-01-24T09:20:30-01:00", Qt::ISODate);
|
||||
s = timeAgoInWords(earlyTS, laterTS);
|
||||
QCOMPARE(s, QLatin1String("1 hour(s) ago"));
|
||||
QCOMPARE(s, QLatin1String("2 hour(s) ago"));
|
||||
|
||||
// 'Now' in whatever timezone
|
||||
earlyTS = QDateTime::currentDateTime();
|
||||
|
||||
laterTS.setTimeSpec(Qt::LocalTime);
|
||||
laterTS.setTimeZone( QTimeZone("Pacific/Easter") );
|
||||
laterTS = earlyTS;
|
||||
|
||||
s = timeAgoInWords(earlyTS, laterTS );
|
||||
QCOMPARE(s, QLatin1String("now"));
|
||||
|
||||
earlyTS = earlyTS.addSecs(-6);
|
||||
s = timeAgoInWords(earlyTS, laterTS );
|
||||
QCOMPARE(s, QLatin1String("Less than a minute ago"));
|
||||
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -2559,7 +2559,7 @@ No és aconsellada usar-la.</translation>
|
||||
<context>
|
||||
<name>OCC::SocketApi</name>
|
||||
<message>
|
||||
<location filename="../src/gui/socketapi.cpp" line="441"/>
|
||||
<location filename="../src/gui/socketapi.cpp" line="453"/>
|
||||
<source>Share with %1</source>
|
||||
<comment>parameter is ownCloud</comment>
|
||||
<translation>Comparteix amb %1</translation>
|
||||
|
||||
@@ -2563,7 +2563,7 @@ Nedoporučuje se jí používat.</translation>
|
||||
<context>
|
||||
<name>OCC::SocketApi</name>
|
||||
<message>
|
||||
<location filename="../src/gui/socketapi.cpp" line="441"/>
|
||||
<location filename="../src/gui/socketapi.cpp" line="453"/>
|
||||
<source>Share with %1</source>
|
||||
<comment>parameter is ownCloud</comment>
|
||||
<translation>Sdílet s %1</translation>
|
||||
|
||||
@@ -2561,7 +2561,7 @@ Es ist nicht ratsam, diese zu benutzen.</translation>
|
||||
<context>
|
||||
<name>OCC::SocketApi</name>
|
||||
<message>
|
||||
<location filename="../src/gui/socketapi.cpp" line="441"/>
|
||||
<location filename="../src/gui/socketapi.cpp" line="453"/>
|
||||
<source>Share with %1</source>
|
||||
<comment>parameter is ownCloud</comment>
|
||||
<translation>Via %1 teilen</translation>
|
||||
|
||||
@@ -2561,7 +2561,7 @@ It is not advisable to use it.</source>
|
||||
<context>
|
||||
<name>OCC::SocketApi</name>
|
||||
<message>
|
||||
<location filename="../src/gui/socketapi.cpp" line="441"/>
|
||||
<location filename="../src/gui/socketapi.cpp" line="453"/>
|
||||
<source>Share with %1</source>
|
||||
<comment>parameter is ownCloud</comment>
|
||||
<translation>Διαμοιρασμός με %1</translation>
|
||||
|
||||
@@ -2582,7 +2582,7 @@ It is not advisable to use it.</source>
|
||||
<context>
|
||||
<name>OCC::SocketApi</name>
|
||||
<message>
|
||||
<location filename="../src/gui/socketapi.cpp" line="441"/>
|
||||
<location filename="../src/gui/socketapi.cpp" line="453"/>
|
||||
<source>Share with %1</source>
|
||||
<comment>parameter is ownCloud</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
|
||||
@@ -440,17 +440,17 @@
|
||||
<message numerus="yes">
|
||||
<location filename="../src/gui/activitywidget.cpp" line="351"/>
|
||||
<source>You received %n new notification(s) from %2.</source>
|
||||
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
|
||||
<translation><numerusform>Ha recibido %n nueva notificación de %2.</numerusform><numerusform>Ha recibido %n nueva notificacióne(s) de %2.</numerusform></translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<location filename="../src/gui/activitywidget.cpp" line="359"/>
|
||||
<source>You received %n new notification(s) from %1 and %2.</source>
|
||||
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
|
||||
<translation><numerusform>Ha recibido %n nueva notificación de %1 y de %2.</numerusform><numerusform>Ha recibido %n nuevas notificacióne(s) de %1 y de %2.</numerusform></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/activitywidget.cpp" line="361"/>
|
||||
<source>You received new notifications from %1, %2 and other accounts.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Ha recibido nuevas notificaciónes de %1, %2 y otras cuentas.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/activitywidget.cpp" line="365"/>
|
||||
@@ -1684,7 +1684,7 @@ for additional privileges during the process.</source>
|
||||
<message>
|
||||
<location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="51"/>
|
||||
<source>&Email</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>&Email</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="61"/>
|
||||
@@ -1952,7 +1952,7 @@ No se recomienda usarla.</translation>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagatedownload.cpp" line="552"/>
|
||||
<source>The downloaded file is empty despite the server announced it should have been %1.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>El archivo descargado está vacio aunque el servidor dice que deberia haber sido %1.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagatedownload.cpp" line="694"/>
|
||||
@@ -2384,7 +2384,7 @@ No se recomienda usarla.</translation>
|
||||
<message>
|
||||
<location filename="../src/gui/sharedialog.cpp" line="113"/>
|
||||
<source>Retrieving maximum possible sharing permissions from server...</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Descargando el maximo número de permisos compartidos del servidor...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/sharedialog.cpp" line="169"/>
|
||||
@@ -2562,7 +2562,7 @@ No se recomienda usarla.</translation>
|
||||
<context>
|
||||
<name>OCC::SocketApi</name>
|
||||
<message>
|
||||
<location filename="../src/gui/socketapi.cpp" line="441"/>
|
||||
<location filename="../src/gui/socketapi.cpp" line="453"/>
|
||||
<source>Share with %1</source>
|
||||
<comment>parameter is ownCloud</comment>
|
||||
<translation>Compartir con %1</translation>
|
||||
|
||||
@@ -2550,7 +2550,7 @@ It is not advisable to use it.</source>
|
||||
<context>
|
||||
<name>OCC::SocketApi</name>
|
||||
<message>
|
||||
<location filename="../src/gui/socketapi.cpp" line="441"/>
|
||||
<location filename="../src/gui/socketapi.cpp" line="453"/>
|
||||
<source>Share with %1</source>
|
||||
<comment>parameter is ownCloud</comment>
|
||||
<translation type="unfinished"/>
|
||||
|
||||
@@ -2551,7 +2551,7 @@ Selle kasutamine pole soovitatav.</translation>
|
||||
<context>
|
||||
<name>OCC::SocketApi</name>
|
||||
<message>
|
||||
<location filename="../src/gui/socketapi.cpp" line="441"/>
|
||||
<location filename="../src/gui/socketapi.cpp" line="453"/>
|
||||
<source>Share with %1</source>
|
||||
<comment>parameter is ownCloud</comment>
|
||||
<translation>Jagatud kasutajaga %1</translation>
|
||||
|
||||
@@ -2557,7 +2557,7 @@ Ez da gomendagarria erabltzea.</translation>
|
||||
<context>
|
||||
<name>OCC::SocketApi</name>
|
||||
<message>
|
||||
<location filename="../src/gui/socketapi.cpp" line="441"/>
|
||||
<location filename="../src/gui/socketapi.cpp" line="453"/>
|
||||
<source>Share with %1</source>
|
||||
<comment>parameter is ownCloud</comment>
|
||||
<translation type="unfinished"/>
|
||||
|
||||
@@ -2550,7 +2550,7 @@ It is not advisable to use it.</source>
|
||||
<context>
|
||||
<name>OCC::SocketApi</name>
|
||||
<message>
|
||||
<location filename="../src/gui/socketapi.cpp" line="441"/>
|
||||
<location filename="../src/gui/socketapi.cpp" line="453"/>
|
||||
<source>Share with %1</source>
|
||||
<comment>parameter is ownCloud</comment>
|
||||
<translation>اشتراکگذاری با %1</translation>
|
||||
|
||||
@@ -2558,7 +2558,7 @@ Osoitteen käyttäminen ei ole suositeltavaa.</translation>
|
||||
<context>
|
||||
<name>OCC::SocketApi</name>
|
||||
<message>
|
||||
<location filename="../src/gui/socketapi.cpp" line="441"/>
|
||||
<location filename="../src/gui/socketapi.cpp" line="453"/>
|
||||
<source>Share with %1</source>
|
||||
<comment>parameter is ownCloud</comment>
|
||||
<translation type="unfinished"/>
|
||||
|
||||
@@ -2563,7 +2563,7 @@ Il est déconseillé de l'utiliser.</translation>
|
||||
<context>
|
||||
<name>OCC::SocketApi</name>
|
||||
<message>
|
||||
<location filename="../src/gui/socketapi.cpp" line="441"/>
|
||||
<location filename="../src/gui/socketapi.cpp" line="453"/>
|
||||
<source>Share with %1</source>
|
||||
<comment>parameter is ownCloud</comment>
|
||||
<translation>Partager avec %1</translation>
|
||||
|
||||
@@ -2557,7 +2557,7 @@ Recomendámoslle que non o use.</translation>
|
||||
<context>
|
||||
<name>OCC::SocketApi</name>
|
||||
<message>
|
||||
<location filename="../src/gui/socketapi.cpp" line="441"/>
|
||||
<location filename="../src/gui/socketapi.cpp" line="453"/>
|
||||
<source>Share with %1</source>
|
||||
<comment>parameter is ownCloud</comment>
|
||||
<translation>Compartir con %1</translation>
|
||||
|
||||
@@ -2554,7 +2554,7 @@ It is not advisable to use it.</source>
|
||||
<context>
|
||||
<name>OCC::SocketApi</name>
|
||||
<message>
|
||||
<location filename="../src/gui/socketapi.cpp" line="441"/>
|
||||
<location filename="../src/gui/socketapi.cpp" line="453"/>
|
||||
<source>Share with %1</source>
|
||||
<comment>parameter is ownCloud</comment>
|
||||
<translation>Megosztás vele: %1</translation>
|
||||
|
||||
@@ -2562,7 +2562,7 @@ Non è consigliabile utilizzarlo.</translation>
|
||||
<context>
|
||||
<name>OCC::SocketApi</name>
|
||||
<message>
|
||||
<location filename="../src/gui/socketapi.cpp" line="441"/>
|
||||
<location filename="../src/gui/socketapi.cpp" line="453"/>
|
||||
<source>Share with %1</source>
|
||||
<comment>parameter is ownCloud</comment>
|
||||
<translation>Condividi con %1</translation>
|
||||
|
||||
@@ -2561,7 +2561,7 @@ It is not advisable to use it.</source>
|
||||
<context>
|
||||
<name>OCC::SocketApi</name>
|
||||
<message>
|
||||
<location filename="../src/gui/socketapi.cpp" line="441"/>
|
||||
<location filename="../src/gui/socketapi.cpp" line="453"/>
|
||||
<source>Share with %1</source>
|
||||
<comment>parameter is ownCloud</comment>
|
||||
<translation>%1 と共有</translation>
|
||||
|
||||
@@ -2563,7 +2563,7 @@ Det er ikke tilrådelig å bruke den.</translation>
|
||||
<context>
|
||||
<name>OCC::SocketApi</name>
|
||||
<message>
|
||||
<location filename="../src/gui/socketapi.cpp" line="441"/>
|
||||
<location filename="../src/gui/socketapi.cpp" line="453"/>
|
||||
<source>Share with %1</source>
|
||||
<comment>parameter is ownCloud</comment>
|
||||
<translation>Del med %1</translation>
|
||||
|
||||
@@ -631,42 +631,42 @@
|
||||
<message numerus="yes">
|
||||
<location filename="../src/gui/folder.cpp" line="494"/>
|
||||
<source>%1 and %n other file(s) have been removed.</source>
|
||||
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
|
||||
<translation><numerusform>%1 en %n ander bestand(en) zijn verwijderd.</numerusform><numerusform>%1 en %n andere bestand(en) zijn verwijderd.</numerusform></translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<location filename="../src/gui/folder.cpp" line="501"/>
|
||||
<source>%1 and %n other file(s) have been downloaded.</source>
|
||||
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
|
||||
<translation><numerusform>%1 en %n ander bestand(en) zijn gedownload.</numerusform><numerusform>%1 en %n andere bestand(en) zijn gedownload.</numerusform></translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<location filename="../src/gui/folder.cpp" line="508"/>
|
||||
<source>%1 and %n other file(s) have been updated.</source>
|
||||
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
|
||||
<translation><numerusform>%1 en %n ander bestand(en) zijn bijgewerkt.</numerusform><numerusform>%1 en %n andere bestand(en) zijn bijgewerkt.</numerusform></translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<location filename="../src/gui/folder.cpp" line="515"/>
|
||||
<source>%1 has been renamed to %2 and %n other file(s) have been renamed.</source>
|
||||
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
|
||||
<translation><numerusform>%1 is hernoemd naar %2 en %n ander bestand(en) is hernoemd.</numerusform><numerusform>%1 is hernoemd naar %2 en %n andere bestand(en) zijn hernoemd.</numerusform></translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<location filename="../src/gui/folder.cpp" line="522"/>
|
||||
<source>%1 has been moved to %2 and %n other file(s) have been moved.</source>
|
||||
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
|
||||
<translation><numerusform>%1 is verplaatst naar %2 en %n ander bestand(en) is verplaatst.</numerusform><numerusform>%1 is verplaatst naar %2 en %n andere bestand(en) zijn verplaatst.</numerusform></translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<location filename="../src/gui/folder.cpp" line="529"/>
|
||||
<source>%1 has and %n other file(s) have sync conflicts.</source>
|
||||
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
|
||||
<translation><numerusform>%1 en %n ander bestand(en) hebben een sync conflict.</numerusform><numerusform>%1 en %n andere bestand(en) hebben sync conflicten.</numerusform></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/folder.cpp" line="531"/>
|
||||
<source>%1 has a sync conflict. Please check the conflict file!</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>%1 heeft een sync conflict. Controleer het conflict bestand!</translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<location filename="../src/gui/folder.cpp" line="536"/>
|
||||
<source>%1 and %n other file(s) could not be synced due to errors. See the log for details.</source>
|
||||
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
|
||||
<translation><numerusform>%1 en %n ander bestand(en) konden niet worden gesynchroniseerd wegens fouten. Bekijk het log voor details.</numerusform><numerusform>%1 en %n andere bestand(en) konden niet worden gesynchroniseerd wegens fouten. Bekijk het log voor details.</numerusform></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/folder.cpp" line="538"/>
|
||||
@@ -1954,7 +1954,7 @@ We adviseren deze site niet te gebruiken.</translation>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagatedownload.cpp" line="552"/>
|
||||
<source>The downloaded file is empty despite the server announced it should have been %1.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Het gedownloade bestand is leeg, hoewel de server meldde dat het %1 zou moeten zijn.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagatedownload.cpp" line="694"/>
|
||||
@@ -2386,7 +2386,7 @@ We adviseren deze site niet te gebruiken.</translation>
|
||||
<message>
|
||||
<location filename="../src/gui/sharedialog.cpp" line="113"/>
|
||||
<source>Retrieving maximum possible sharing permissions from server...</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Maximum aantal mogelijke permissies van de server ophalen...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/sharedialog.cpp" line="169"/>
|
||||
@@ -2564,7 +2564,7 @@ We adviseren deze site niet te gebruiken.</translation>
|
||||
<context>
|
||||
<name>OCC::SocketApi</name>
|
||||
<message>
|
||||
<location filename="../src/gui/socketapi.cpp" line="441"/>
|
||||
<location filename="../src/gui/socketapi.cpp" line="453"/>
|
||||
<source>Share with %1</source>
|
||||
<comment>parameter is ownCloud</comment>
|
||||
<translation>Delen met %1</translation>
|
||||
@@ -3639,7 +3639,7 @@ We adviseren deze site niet te gebruiken.</translation>
|
||||
<message>
|
||||
<location filename="../src/libsync/progressdispatcher.cpp" line="37"/>
|
||||
<source>Server version downloaded, copied changed local file into conflict file</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Serverversie gedownload, gewijzigde lokale bestand gekopieerd in conflictbestand</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/progressdispatcher.cpp" line="39"/>
|
||||
|
||||
@@ -455,7 +455,7 @@
|
||||
<message>
|
||||
<location filename="../src/gui/activitywidget.cpp" line="365"/>
|
||||
<source>%1 Notifications - Action Required</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>%1 Powiadomień - Wymagana akcja</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -524,7 +524,7 @@
|
||||
<message>
|
||||
<location filename="../src/libsync/owncloudpropagator.cpp" line="772"/>
|
||||
<source>Error writing metadata to the database</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Błąd podczas zapisu metadanych do bazy</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -1920,7 +1920,7 @@ Niezalecane jest jego użycie.</translation>
|
||||
<message>
|
||||
<location filename="../src/libsync/owncloudpropagator.cpp" line="712"/>
|
||||
<source>Error writing metadata to the database</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Błąd podczas zapisu metadanych do bazy</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -1938,17 +1938,17 @@ Niezalecane jest jego użycie.</translation>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagatedownload.cpp" line="381"/>
|
||||
<source>Free space on disk is less than %1</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Wolne miejsce na dysku jest mniejsze niż %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagatedownload.cpp" line="496"/>
|
||||
<source>File was deleted from server</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Plik został usunięty z serwera</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagatedownload.cpp" line="545"/>
|
||||
<source>The file could not be downloaded completely.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Ten plik nie mógł być całkowicie pobrany.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagatedownload.cpp" line="552"/>
|
||||
@@ -1968,7 +1968,7 @@ Niezalecane jest jego użycie.</translation>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagatedownload.cpp" line="792"/>
|
||||
<source>Error writing metadata to the database</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Błąd podczas zapisu metadanych do bazy</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -2009,7 +2009,7 @@ Niezalecane jest jego użycie.</translation>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagatorjobs.cpp" line="181"/>
|
||||
<source>Error writing metadata to the database</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Błąd podczas zapisu metadanych do bazy</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -2040,7 +2040,7 @@ Niezalecane jest jego użycie.</translation>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagatorjobs.cpp" line="245"/>
|
||||
<source>Error writing metadata to the database</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Błąd podczas zapisu metadanych do bazy</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -2066,7 +2066,7 @@ Niezalecane jest jego użycie.</translation>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateremotemkdir.cpp" line="148"/>
|
||||
<source>Error writing metadata to the database</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Błąd podczas zapisu metadanych do bazy</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -2094,7 +2094,7 @@ Niezalecane jest jego użycie.</translation>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateremotemove.cpp" line="175"/>
|
||||
<source>Error writing metadata to the database</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Błąd podczas zapisu metadanych do bazy</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -2143,7 +2143,7 @@ Niezalecane jest jego użycie.</translation>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateupload.cpp" line="782"/>
|
||||
<source>Error writing metadata to the database</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Błąd podczas zapisu metadanych do bazy</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -2563,7 +2563,7 @@ Niezalecane jest jego użycie.</translation>
|
||||
<context>
|
||||
<name>OCC::SocketApi</name>
|
||||
<message>
|
||||
<location filename="../src/gui/socketapi.cpp" line="441"/>
|
||||
<location filename="../src/gui/socketapi.cpp" line="453"/>
|
||||
<source>Share with %1</source>
|
||||
<comment>parameter is ownCloud</comment>
|
||||
<translation>Współdzielone z %1</translation>
|
||||
|
||||
@@ -2562,7 +2562,7 @@ It is not advisable to use it.</source>
|
||||
<context>
|
||||
<name>OCC::SocketApi</name>
|
||||
<message>
|
||||
<location filename="../src/gui/socketapi.cpp" line="441"/>
|
||||
<location filename="../src/gui/socketapi.cpp" line="453"/>
|
||||
<source>Share with %1</source>
|
||||
<comment>parameter is ownCloud</comment>
|
||||
<translation>Partilhar com %1</translation>
|
||||
|
||||
@@ -2563,7 +2563,7 @@ It is not advisable to use it.</source>
|
||||
<context>
|
||||
<name>OCC::SocketApi</name>
|
||||
<message>
|
||||
<location filename="../src/gui/socketapi.cpp" line="441"/>
|
||||
<location filename="../src/gui/socketapi.cpp" line="453"/>
|
||||
<source>Share with %1</source>
|
||||
<comment>parameter is ownCloud</comment>
|
||||
<translation>Compartilhar com %1</translation>
|
||||
|
||||
@@ -2562,7 +2562,7 @@ It is not advisable to use it.</source>
|
||||
<context>
|
||||
<name>OCC::SocketApi</name>
|
||||
<message>
|
||||
<location filename="../src/gui/socketapi.cpp" line="441"/>
|
||||
<location filename="../src/gui/socketapi.cpp" line="453"/>
|
||||
<source>Share with %1</source>
|
||||
<comment>parameter is ownCloud</comment>
|
||||
<translation>Поделиться с %1</translation>
|
||||
|
||||
@@ -2555,7 +2555,7 @@ Nie je vhodné ju používať.</translation>
|
||||
<context>
|
||||
<name>OCC::SocketApi</name>
|
||||
<message>
|
||||
<location filename="../src/gui/socketapi.cpp" line="441"/>
|
||||
<location filename="../src/gui/socketapi.cpp" line="453"/>
|
||||
<source>Share with %1</source>
|
||||
<comment>parameter is ownCloud</comment>
|
||||
<translation>Zdieľať s %1</translation>
|
||||
|
||||
@@ -2560,7 +2560,7 @@ Uporaba ni priporočljiva.</translation>
|
||||
<context>
|
||||
<name>OCC::SocketApi</name>
|
||||
<message>
|
||||
<location filename="../src/gui/socketapi.cpp" line="441"/>
|
||||
<location filename="../src/gui/socketapi.cpp" line="453"/>
|
||||
<source>Share with %1</source>
|
||||
<comment>parameter is ownCloud</comment>
|
||||
<translation>Omogoči souporabo z %1</translation>
|
||||
|
||||
@@ -2556,7 +2556,7 @@ It is not advisable to use it.</source>
|
||||
<context>
|
||||
<name>OCC::SocketApi</name>
|
||||
<message>
|
||||
<location filename="../src/gui/socketapi.cpp" line="441"/>
|
||||
<location filename="../src/gui/socketapi.cpp" line="453"/>
|
||||
<source>Share with %1</source>
|
||||
<comment>parameter is ownCloud</comment>
|
||||
<translation>Подели са %1</translation>
|
||||
|
||||
@@ -2563,7 +2563,7 @@ Det är inte lämpligt använda den.</translation>
|
||||
<context>
|
||||
<name>OCC::SocketApi</name>
|
||||
<message>
|
||||
<location filename="../src/gui/socketapi.cpp" line="441"/>
|
||||
<location filename="../src/gui/socketapi.cpp" line="453"/>
|
||||
<source>Share with %1</source>
|
||||
<comment>parameter is ownCloud</comment>
|
||||
<translation>Dela med %1</translation>
|
||||
|
||||
@@ -2561,7 +2561,7 @@ It is not advisable to use it.</source>
|
||||
<context>
|
||||
<name>OCC::SocketApi</name>
|
||||
<message>
|
||||
<location filename="../src/gui/socketapi.cpp" line="441"/>
|
||||
<location filename="../src/gui/socketapi.cpp" line="453"/>
|
||||
<source>Share with %1</source>
|
||||
<comment>parameter is ownCloud</comment>
|
||||
<translation>แชร์กับ %1</translation>
|
||||
|
||||
@@ -2561,7 +2561,7 @@ Kullanmanız önerilmez.</translation>
|
||||
<context>
|
||||
<name>OCC::SocketApi</name>
|
||||
<message>
|
||||
<location filename="../src/gui/socketapi.cpp" line="441"/>
|
||||
<location filename="../src/gui/socketapi.cpp" line="453"/>
|
||||
<source>Share with %1</source>
|
||||
<comment>parameter is ownCloud</comment>
|
||||
<translation>%1 ile paylaş</translation>
|
||||
|
||||
@@ -2551,7 +2551,7 @@ It is not advisable to use it.</source>
|
||||
<context>
|
||||
<name>OCC::SocketApi</name>
|
||||
<message>
|
||||
<location filename="../src/gui/socketapi.cpp" line="441"/>
|
||||
<location filename="../src/gui/socketapi.cpp" line="453"/>
|
||||
<source>Share with %1</source>
|
||||
<comment>parameter is ownCloud</comment>
|
||||
<translation>Поділитися з %1</translation>
|
||||
|
||||
@@ -2560,7 +2560,7 @@ It is not advisable to use it.</source>
|
||||
<context>
|
||||
<name>OCC::SocketApi</name>
|
||||
<message>
|
||||
<location filename="../src/gui/socketapi.cpp" line="441"/>
|
||||
<location filename="../src/gui/socketapi.cpp" line="453"/>
|
||||
<source>Share with %1</source>
|
||||
<comment>parameter is ownCloud</comment>
|
||||
<translation>共享给 %1</translation>
|
||||
|
||||
@@ -2561,7 +2561,7 @@ It is not advisable to use it.</source>
|
||||
<context>
|
||||
<name>OCC::SocketApi</name>
|
||||
<message>
|
||||
<location filename="../src/gui/socketapi.cpp" line="441"/>
|
||||
<location filename="../src/gui/socketapi.cpp" line="453"/>
|
||||
<source>Share with %1</source>
|
||||
<comment>parameter is ownCloud</comment>
|
||||
<translation>與 %1 分享</translation>
|
||||
|
||||