mirror of
https://github.com/RetroShare/RetroShare.git
synced 2025-09-23 22:34:42 -04:00
merged with upstream/master
This commit is contained in:
commit
d2193812a9
279 changed files with 3040 additions and 1552 deletions
71
.github/workflows/ci-mingw64-Qt6.yml
vendored
Normal file
71
.github/workflows/ci-mingw64-Qt6.yml
vendored
Normal file
|
@ -0,0 +1,71 @@
|
||||||
|
name: MINGW64 Qt6 Build
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
paths-ignore:
|
||||||
|
- '**/*.md'
|
||||||
|
pull_request:
|
||||||
|
paths-ignore:
|
||||||
|
- '**/*.md'
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: ${{ github.workflow}}-${{ github.head_ref }}
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
runs-on: windows-latest
|
||||||
|
permissions:
|
||||||
|
actions: write
|
||||||
|
defaults:
|
||||||
|
run:
|
||||||
|
shell: msys2 {0}
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout repository
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
persist-credentials: false
|
||||||
|
|
||||||
|
- name: Setup MSYS2
|
||||||
|
uses: msys2/setup-msys2@40677d36a502eb2cf0fb808cc9dec31bf6152638 # v2.28.0
|
||||||
|
with:
|
||||||
|
msystem: MINGW64
|
||||||
|
update: true
|
||||||
|
install: >-
|
||||||
|
base-devel
|
||||||
|
git
|
||||||
|
wget
|
||||||
|
p7zip
|
||||||
|
gcc
|
||||||
|
perl
|
||||||
|
ruby
|
||||||
|
doxygen
|
||||||
|
cmake
|
||||||
|
mingw-w64-x86_64-toolchain
|
||||||
|
mingw-w64-x86_64-miniupnpc
|
||||||
|
mingw-w64-x86_64-libxslt
|
||||||
|
mingw-w64-x86_64-xapian-core
|
||||||
|
mingw-w64-x86_64-sqlcipher
|
||||||
|
mingw-w64-x86_64-qt6-base
|
||||||
|
mingw-w64-x86_64-qt6-multimedia
|
||||||
|
mingw-w64-x86_64-qt6
|
||||||
|
mingw-w64-x86_64-ccmake
|
||||||
|
mingw-w64-x86_64-rapidjson
|
||||||
|
mingw-w64-x86_64-json-c
|
||||||
|
mingw-w64-x86_64-libbotan
|
||||||
|
mingw-w64-x86_64-asio
|
||||||
|
|
||||||
|
- name: Checkout submodules
|
||||||
|
run: |
|
||||||
|
env
|
||||||
|
git submodule update --init --remote libbitdht/ libretroshare/ retroshare-webui/
|
||||||
|
git submodule update --init supportlibs/librnp supportlibs/rapidjson supportlibs/restbed
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: |
|
||||||
|
qmake6 . -r -spec win32-g++ "CONFIG+=release" "CONFIG+=rs_autologin" "CONFIG+=no_rs_sam3" "CONFIG+=no_rs_sam3_libsam3"
|
||||||
|
mingw32-make -j3
|
70
.github/workflows/ci-mingw64.yml
vendored
Normal file
70
.github/workflows/ci-mingw64.yml
vendored
Normal file
|
@ -0,0 +1,70 @@
|
||||||
|
name: MINGW64 Qt5 Build
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
paths-ignore:
|
||||||
|
- '**/*.md'
|
||||||
|
pull_request:
|
||||||
|
paths-ignore:
|
||||||
|
- '**/*.md'
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: ${{ github.workflow}}-${{ github.head_ref }}
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
runs-on: windows-latest
|
||||||
|
permissions:
|
||||||
|
actions: write
|
||||||
|
defaults:
|
||||||
|
run:
|
||||||
|
shell: msys2 {0}
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout repository
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
persist-credentials: false
|
||||||
|
|
||||||
|
- name: Setup MSYS2
|
||||||
|
uses: msys2/setup-msys2@40677d36a502eb2cf0fb808cc9dec31bf6152638 # v2.28.0
|
||||||
|
with:
|
||||||
|
msystem: MINGW64
|
||||||
|
update: true
|
||||||
|
install: >-
|
||||||
|
base-devel
|
||||||
|
git
|
||||||
|
wget
|
||||||
|
p7zip
|
||||||
|
gcc
|
||||||
|
perl
|
||||||
|
ruby
|
||||||
|
doxygen
|
||||||
|
cmake
|
||||||
|
mingw-w64-x86_64-toolchain
|
||||||
|
mingw-w64-x86_64-miniupnpc
|
||||||
|
mingw-w64-x86_64-libxslt
|
||||||
|
mingw-w64-x86_64-xapian-core
|
||||||
|
mingw-w64-x86_64-sqlcipher
|
||||||
|
mingw-w64-x86_64-qt5-base
|
||||||
|
mingw-w64-x86_64-qt5-multimedia
|
||||||
|
mingw-w64-x86_64-ccmake
|
||||||
|
mingw-w64-x86_64-rapidjson
|
||||||
|
mingw-w64-x86_64-json-c
|
||||||
|
mingw-w64-x86_64-libbotan
|
||||||
|
mingw-w64-x86_64-asio
|
||||||
|
|
||||||
|
- name: Checkout submodules
|
||||||
|
run: |
|
||||||
|
env
|
||||||
|
git submodule update --init --remote libbitdht/ libretroshare/ retroshare-webui/
|
||||||
|
git submodule update --init supportlibs/librnp supportlibs/rapidjson supportlibs/restbed
|
||||||
|
|
||||||
|
- name: CI-Build
|
||||||
|
run: |
|
||||||
|
qmake . -r -spec win32-g++ "CONFIG+=release" "CONFIG+=rs_autologin" "CONFIG+=no_rs_sam3" "CONFIG+=no_rs_sam3_libsam3"
|
||||||
|
mingw32-make -j3
|
70
.github/workflows/ci-ucrt64.yml
vendored
Normal file
70
.github/workflows/ci-ucrt64.yml
vendored
Normal file
|
@ -0,0 +1,70 @@
|
||||||
|
name: UCRT64 Qt5 Build
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
paths-ignore:
|
||||||
|
- '**/*.md'
|
||||||
|
pull_request:
|
||||||
|
paths-ignore:
|
||||||
|
- '**/*.md'
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: ${{ github.workflow}}-${{ github.head_ref }}
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
runs-on: windows-latest
|
||||||
|
permissions:
|
||||||
|
actions: write
|
||||||
|
defaults:
|
||||||
|
run:
|
||||||
|
shell: msys2 {0}
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout repository
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
persist-credentials: false
|
||||||
|
|
||||||
|
- name: Setup MSYS2
|
||||||
|
uses: msys2/setup-msys2@40677d36a502eb2cf0fb808cc9dec31bf6152638 # v2.28.0
|
||||||
|
with:
|
||||||
|
msystem: UCRT64
|
||||||
|
update: true
|
||||||
|
install: >-
|
||||||
|
base-devel
|
||||||
|
git
|
||||||
|
wget
|
||||||
|
p7zip
|
||||||
|
gcc
|
||||||
|
perl
|
||||||
|
ruby
|
||||||
|
doxygen
|
||||||
|
cmake
|
||||||
|
mingw-w64-ucrt-x86_64-toolchain
|
||||||
|
mingw-w64-ucrt-x86_64-miniupnpc
|
||||||
|
mingw-w64-ucrt-x86_64-libxslt
|
||||||
|
mingw-w64-ucrt-x86_64-xapian-core
|
||||||
|
mingw-w64-ucrt-x86_64-sqlcipher
|
||||||
|
mingw-w64-ucrt-x86_64-qt5-base
|
||||||
|
mingw-w64-ucrt-x86_64-qt5-multimedia
|
||||||
|
mingw-w64-ucrt-x86_64-ccmake
|
||||||
|
mingw-w64-ucrt-x86_64-rapidjson
|
||||||
|
mingw-w64-ucrt-x86_64-json-c
|
||||||
|
mingw-w64-ucrt-x86_64-libbotan
|
||||||
|
mingw-w64-ucrt-x86_64-asio
|
||||||
|
|
||||||
|
- name: Checkout submodules
|
||||||
|
run: |
|
||||||
|
env
|
||||||
|
git submodule update --init --remote libbitdht/ libretroshare/ retroshare-webui/
|
||||||
|
git submodule update --init supportlibs/librnp supportlibs/rapidjson supportlibs/restbed
|
||||||
|
|
||||||
|
- name: CI-Build
|
||||||
|
run: |
|
||||||
|
qmake . -r -spec win32-g++ "CONFIG+=release" "CONFIG+=rs_autologin" "CONFIG+=no_rs_sam3" "CONFIG+=no_rs_sam3_libsam3"
|
||||||
|
mingw32-make -j3
|
40
.github/workflows/ubuntu-qt5_c-cpp.yml
vendored
Normal file
40
.github/workflows/ubuntu-qt5_c-cpp.yml
vendored
Normal file
|
@ -0,0 +1,40 @@
|
||||||
|
name: Ubuntu Qt 5 C/C++ CI
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
paths-ignore:
|
||||||
|
- '**/*.md'
|
||||||
|
pull_request:
|
||||||
|
paths-ignore:
|
||||||
|
- '**/*.md'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
|
||||||
|
runs-on: ubuntu-22.04
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- name: git init
|
||||||
|
run: git submodule update --init --remote libbitdht/ libretroshare/ openpgpsdk/ retroshare-webui/ && git --no-pager log --max-count 1
|
||||||
|
- name: git submodule supportlibs
|
||||||
|
run: git submodule update --init supportlibs/librnp supportlibs/restbed #supportlibs/rapidjson
|
||||||
|
- name: run apt update
|
||||||
|
run: sudo apt-get update
|
||||||
|
- name: apt install
|
||||||
|
run: sudo apt-get install g++ cmake qt5-qmake qtmultimedia5-dev libqt5x11extras5-dev libasio-dev libbz2-dev libjson-c-dev libssl-dev libsqlcipher-dev libupnp-dev libxss-dev rapidjson-dev libbotan-2-dev doxygen libsecret-1-dev libxml2-dev libxslt1-dev libcurl4-openssl-dev
|
||||||
|
- name: print working directory
|
||||||
|
run: pwd && ls -la
|
||||||
|
- name: qmake
|
||||||
|
run: |
|
||||||
|
qmake CONFIG+=debug \
|
||||||
|
CONFIG+=rs_autologin \
|
||||||
|
CONFIG+=rs_webui \
|
||||||
|
CONFIG+=rs_jsonapi \
|
||||||
|
CONFIG+=wikipoos \
|
||||||
|
CONFIG+=gxsthewire \
|
||||||
|
CONFIG+=retroshare_plugins
|
||||||
|
- name: make
|
||||||
|
run: make
|
||||||
|
- name: make check
|
||||||
|
run: make check
|
40
.github/workflows/ubuntu-qt6_c-cpp.yml
vendored
Normal file
40
.github/workflows/ubuntu-qt6_c-cpp.yml
vendored
Normal file
|
@ -0,0 +1,40 @@
|
||||||
|
name: Ubuntu Qt 6 C/C++ CI
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
paths-ignore:
|
||||||
|
- '**/*.md'
|
||||||
|
pull_request:
|
||||||
|
paths-ignore:
|
||||||
|
- '**/*.md'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
|
||||||
|
runs-on: ubuntu-24.04
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- name: git init
|
||||||
|
run: git submodule update --init --remote libbitdht/ libretroshare/ openpgpsdk/ retroshare-webui/ && git --no-pager log --max-count 1
|
||||||
|
- name: git submodule supportlibs
|
||||||
|
run: git submodule update --init supportlibs/librnp supportlibs/restbed #supportlibs/rapidjson
|
||||||
|
- name: run apt update
|
||||||
|
run: sudo apt-get update
|
||||||
|
- name: apt install
|
||||||
|
run: sudo apt-get install g++ cmake qt6-base-dev qt6-multimedia-dev libasio-dev libbz2-dev libjson-c-dev libssl-dev libsqlcipher-dev libupnp-dev libxss-dev rapidjson-dev libbotan-2-dev doxygen qt6-5compat-dev libqt6core5compat6-dev libsecret-1-dev libxml2-dev libxslt1-dev libcurl4-openssl-dev
|
||||||
|
- name: print working directory
|
||||||
|
run: pwd && ls -la
|
||||||
|
- name: qmake
|
||||||
|
run: |
|
||||||
|
qmake6 CONFIG+=debug \
|
||||||
|
CONFIG+=rs_autologin \
|
||||||
|
CONFIG+=rs_webui \
|
||||||
|
CONFIG+=rs_jsonapi \
|
||||||
|
CONFIG+=wikipoos \
|
||||||
|
CONFIG+=gxsthewire \
|
||||||
|
CONFIG+=retroshare_plugins
|
||||||
|
- name: make
|
||||||
|
run: make
|
||||||
|
- name: make check
|
||||||
|
run: make check
|
2
.gitmodules
vendored
2
.gitmodules
vendored
|
@ -36,6 +36,8 @@
|
||||||
[submodule "retroshare-webui"]
|
[submodule "retroshare-webui"]
|
||||||
path = retroshare-webui
|
path = retroshare-webui
|
||||||
url = https://github.com/RetroShare/RSNewWebUI.git
|
url = https://github.com/RetroShare/RSNewWebUI.git
|
||||||
|
branch = master
|
||||||
[submodule "supportlibs/librnp"]
|
[submodule "supportlibs/librnp"]
|
||||||
path = supportlibs/librnp
|
path = supportlibs/librnp
|
||||||
url = https://github.com/rnpgp/rnp.git
|
url = https://github.com/rnpgp/rnp.git
|
||||||
|
branch = main
|
||||||
|
|
|
@ -1,67 +0,0 @@
|
||||||
// SPDX-FileCopyrightText: Retroshare Team <contact@retroshare.cc>
|
|
||||||
// SPDX-License-Identifier: CC-BY-SA-4.0
|
|
||||||
|
|
||||||
= RetroShare
|
|
||||||
|
|
||||||
RetroShare is a decentralized, private, secure, cross-platform, communication
|
|
||||||
toolkit.
|
|
||||||
RetroShare provides file sharing, chat, messages, forums, channels and more.
|
|
||||||
|
|
||||||
.Build Status
|
|
||||||
|===============================================================================
|
|
||||||
|GNU/Linux (via Gitlab CI) | image:https://gitlab.com/RetroShare/RetroShare/badges/master/pipeline.svg[link="https://gitlab.com/RetroShare/RetroShare/-/commits/master",title="pipeline status"]
|
|
||||||
|Windows (via AppVeyor) | image:https://ci.appveyor.com/api/projects/status/github/RetroShare/RetroShare?svg=true[link="https://ci.appveyor.com/project/RetroShare58622/retroshare"]
|
|
||||||
|macOS, (via Travis CI) | image:https://app.travis-ci.com/RetroShare/RetroShare.svg?branch=master[link="https://app.travis-ci.com/github/RetroShare/RetroShare"]
|
|
||||||
|libretroshare GNU/Linux, Android (via Gitlab CI) | image:https://gitlab.com/RetroShare/libretroshare/badges/master/pipeline.svg[link="https://gitlab.com/RetroShare/libretroshare/-/commits/master",title="pipeline status"]
|
|
||||||
|===============================================================================
|
|
||||||
|
|
||||||
== Get the source
|
|
||||||
|
|
||||||
Clone this repository, enter the directory and then get the submodules with the
|
|
||||||
following command
|
|
||||||
|
|
||||||
[source,bash]
|
|
||||||
--------
|
|
||||||
git submodule update --init --remote --force libbitdht/ libretroshare/ openpgpsdk/
|
|
||||||
--------
|
|
||||||
|
|
||||||
|
|
||||||
== Compilation
|
|
||||||
|
|
||||||
Short of comprehensive and updated documentation on how to build RetroShare
|
|
||||||
(for the many supported platforms it runs on), scripts and recipes are provided
|
|
||||||
in the aim of creating packages for the supported platforms (and more)
|
|
||||||
in the `build_scripts` directory of this repository.
|
|
||||||
|
|
||||||
Those packaging receipts together with the continuous integration files
|
|
||||||
`.travis.yml` and `appveyor.yml` are a good source of knowledge on how to
|
|
||||||
compile RetroShare on different platforms.
|
|
||||||
|
|
||||||
|
|
||||||
== Using RetroShare on a headless computer with web UI
|
|
||||||
|
|
||||||
WARNING: This section is outdated need to be adapted to the new web UI
|
|
||||||
|
|
||||||
The web UI needs to be enabled as a parameter option to the retroshare-service:
|
|
||||||
|
|
||||||
[source,bash]
|
|
||||||
--------
|
|
||||||
./retroshare-nogui --webinterface 9090 --docroot /usr/share/retroshare/webui/
|
|
||||||
--------
|
|
||||||
|
|
||||||
The web UI is only accessible on localhost:9090. It is advised to keep it that way so that your RS
|
|
||||||
cannot be controlled using an untrusted connection.
|
|
||||||
|
|
||||||
To access your web UI from a distance, just open a SSH tunnel to it:
|
|
||||||
|
|
||||||
[source,bash]
|
|
||||||
--------
|
|
||||||
distant_machine:~/ > ssh rs_host -L 9090:localhost:9090 -N
|
|
||||||
--------
|
|
||||||
|
|
||||||
"rs_host" is the machine running `retroshare-nogui`. Then on the distant machine, access your web UI on
|
|
||||||
|
|
||||||
|
|
||||||
http://localhost:9090
|
|
||||||
|
|
||||||
(This can also be done from the RetroShare GUI.)
|
|
53
README.md
Normal file
53
README.md
Normal file
|
@ -0,0 +1,53 @@
|
||||||
|
## RetroShare
|
||||||
|
|
||||||
|
RetroShare is a decentralized, private, secure, cross-platform, communication
|
||||||
|
toolkit.
|
||||||
|
RetroShare provides file sharing, chat, messages, forums, channels, boards and more.
|
||||||
|
|
||||||
|
[](https://github.com/retroshare/retroshare/releases/latest)
|
||||||
|
[](https://github.com/retroshare/retroshare/releases/latest)
|
||||||
|
[](https://github.com/RetroShare/RetroShare/actions/workflows/ci-mingw64.yml)
|
||||||
|
[](https://github.com/RetroShare/RetroShare/actions/workflows/ci-ucrt64.yml)
|
||||||
|
[](https://github.com/RetroShare/RetroShare/actions/workflows/ci-mingw64-Qt6.yml)
|
||||||
|
[](https://gitlab.com/RetroShare/RetroShare/-/commits/master)
|
||||||
|
[](https://gitlab.com/RetroShare/libretroshare/-/commits/master)
|
||||||
|
[](https://deepwiki.com/RetroShare/RetroShare)
|
||||||
|
|
||||||
|
## Get the source
|
||||||
|
|
||||||
|
Clone this repository, enter the directory and then get the submodules with the
|
||||||
|
following command
|
||||||
|
|
||||||
|
git submodule update --init --remote --force libbitdht/ libretroshare/ openpgpsdk/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Compilation
|
||||||
|
|
||||||
|
Short of comprehensive and updated documentation on how to build RetroShare
|
||||||
|
(for the many supported platforms it runs on), scripts and recipes are provided
|
||||||
|
in the aim of creating packages for the supported platforms (and more)
|
||||||
|
in the [build_scripts](https://github.com/RetroShare/RetroShare/tree/master/build_scripts) directory of this repository.
|
||||||
|
|
||||||
|
## Compilation on Windows
|
||||||
|
Follow this file : [WindowsMSys2_InstallGuide.md](https://github.com/RetroShare/RetroShare/blob/master/build_scripts/Windows-msys2/WindowsMSys2_InstallGuide.md)
|
||||||
|
|
||||||
|
## Compilation on MacOSX
|
||||||
|
|
||||||
|
Follow this file : [MacOS_X_InstallGuide](https://github.com/RetroShare/RetroShare/blob/master/build_scripts/OSX/MacOS_X_InstallGuide.md)
|
||||||
|
|
||||||
|
## Compilation on Linux
|
||||||
|
|
||||||
|
Follow this file : [Linux_InstallGuide](https://github.com/RetroShare/RetroShare/blob/master/build_scripts/Debian+Ubuntu/Linux_InstallGuide.md)
|
||||||
|
|
||||||
|
## Releases
|
||||||
|
|
||||||
|
Latest release [here](https://github.com/RetroShare/RetroShare/releases)
|
||||||
|
|
||||||
|
Other Builds [RetroShare Downloads](https://retroshare.cc/downloads.html)
|
||||||
|
|
||||||
|
|
||||||
|
## Documentation
|
||||||
|
|
||||||
|
- [RetroShare Docs](https://retrosharedocs.readthedocs.io/en/latest/)
|
||||||
|
|
312
appveyor.yml
312
appveyor.yml
|
@ -1,312 +0,0 @@
|
||||||
# SPDX-FileCopyrightText: (C) 2004-2019 Retroshare Team <contact@retroshare.cc>
|
|
||||||
# SPDX-License-Identifier: CC0-1.0
|
|
||||||
|
|
||||||
# Notes:
|
|
||||||
# - Minimal appveyor.yml file is an empty file. All sections are optional.
|
|
||||||
# - Indent each level of configuration with 2 spaces. Do not use tabs!
|
|
||||||
# - All section names are case-sensitive.
|
|
||||||
# - Section names should be unique on each level.
|
|
||||||
# from example:
|
|
||||||
# https://github.com/Phonations/Joker/blob/master/appveyor.yml
|
|
||||||
# https://github.com/unicorn-engine/autobuild/blob/master/.appveyor.yml
|
|
||||||
|
|
||||||
#---------------------------------#
|
|
||||||
# general configuration #
|
|
||||||
#---------------------------------#
|
|
||||||
|
|
||||||
# version format
|
|
||||||
version: RetroShare-git-{branch}-{build}
|
|
||||||
image: Visual Studio 2019
|
|
||||||
|
|
||||||
# you can use {branch} name in version format too
|
|
||||||
# version: 1.0.{build}-{branch}
|
|
||||||
|
|
||||||
# branches to build
|
|
||||||
branches:
|
|
||||||
# whitelist
|
|
||||||
#only:
|
|
||||||
# - master
|
|
||||||
|
|
||||||
# blacklist
|
|
||||||
except:
|
|
||||||
- /^skipthisbranch$/
|
|
||||||
|
|
||||||
# Do not build on tags (GitHub only)
|
|
||||||
skip_tags: true
|
|
||||||
|
|
||||||
# Skipping commits with particular message or from user
|
|
||||||
skip_commits:
|
|
||||||
message: /Created.*\.(png|jpg|jpeg|bmp|gif)/ # Regex for matching commit message
|
|
||||||
#author: Anonymous # Commit author's username, name, email or regexp maching one of these.
|
|
||||||
|
|
||||||
#---------------------------------#
|
|
||||||
# environment configuration #
|
|
||||||
#---------------------------------#
|
|
||||||
|
|
||||||
# Operating system (build VM template)
|
|
||||||
#os: Windows Server 2012
|
|
||||||
|
|
||||||
# scripts that are called at very beginning, before repo cloning
|
|
||||||
init:
|
|
||||||
- git config --global core.autocrlf input
|
|
||||||
#To get RDP while compiling
|
|
||||||
- ps: iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1'))
|
|
||||||
on_finish:
|
|
||||||
#To get RDP running after compiling
|
|
||||||
#- ps: $blockRdp = $true; iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1'))
|
|
||||||
|
|
||||||
# clone directory
|
|
||||||
clone_folder: C:\projects\RetroShare
|
|
||||||
|
|
||||||
# fetch repository as zip archive
|
|
||||||
#shallow_clone: true # default is "false"
|
|
||||||
|
|
||||||
# set clone depth
|
|
||||||
clone_depth: 2000 # clone entire repository history if not defined
|
|
||||||
|
|
||||||
environment:
|
|
||||||
global:
|
|
||||||
## Qt: https://www.appveyor.com/docs/installed-software#qt
|
|
||||||
# QTDIR: C:\Qt\5.10.1\mingw53_32
|
|
||||||
MSYS2_ARCH: i686
|
|
||||||
TARGET: i686_32-pc-msys
|
|
||||||
MINGW_PREFIX: C:\msys64\mingw32
|
|
||||||
RS_DEPLOY: RetroShare_deploy
|
|
||||||
|
|
||||||
|
|
||||||
# build cache to preserve files/folders between builds
|
|
||||||
#cache:
|
|
||||||
# Disabled because it's bigger then supported by appveyor free plan
|
|
||||||
# - C:\msys64\var\cache\pacman\pkg
|
|
||||||
|
|
||||||
# scripts that run after cloning repository
|
|
||||||
#install:
|
|
||||||
# # by default, all script lines are interpreted as batch
|
|
||||||
# - echo This is batch
|
|
||||||
# # to run script as a PowerShell command prepend it with ps:
|
|
||||||
# - ps: Write-Host 'This is PowerShell'
|
|
||||||
# # batch commands start from cmd:
|
|
||||||
# - cmd: echo This is batch again
|
|
||||||
# - cmd: set MY_VAR=12345
|
|
||||||
install:
|
|
||||||
# We cannot get OBS submodule as it use illegal folder name for windows.
|
|
||||||
#- git submodule update --init
|
|
||||||
# Configuring MSys2
|
|
||||||
- set PATH=C:\msys64\usr\bin;%PATH%
|
|
||||||
- set PATH=C:\msys64\mingw32\bin;%PATH%
|
|
||||||
- >
|
|
||||||
pacman --noconfirm -Sy
|
|
||||||
mingw-w64-i686-qt5 mingw-w64-i686-miniupnpc mingw-w64-i686-rapidjson
|
|
||||||
mingw-w64-i686-sqlcipher mingw-w64-i686-xapian-core mingw-w64-i686-cmark
|
|
||||||
#- set PATH=C:\msys64\mingw32\qt5-static\bin\;%PATH%
|
|
||||||
|
|
||||||
# Configuring Qt
|
|
||||||
# - set PATH=%QTDIR%\bin;C:\Qt\Tools\mingw491_32\bin;%PATH%
|
|
||||||
|
|
||||||
# Hack for new MSys2
|
|
||||||
- copy C:\msys64\mingw32\i686-w64-mingw32\bin\ar.exe C:\msys64\mingw32\bin\i686-w64-mingw32-ar.exe
|
|
||||||
- copy C:\msys64\mingw32\i686-w64-mingw32\bin\ranlib.exe C:\msys64\mingw32\bin\i686-w64-mingw32-ranlib.exe
|
|
||||||
- copy C:\msys64\mingw32\bin\windres.exe C:\msys64\mingw32\bin\i686-w64-mingw32-windres.exe
|
|
||||||
- copy C:\msys64\mingw64\x86_64-w64-mingw32\bin\ar.exe C:\msys64\mingw64\bin\x86_64-w64-mingw32-ar.exe
|
|
||||||
- copy C:\msys64\mingw64\x86_64-w64-mingw32\bin\ranlib.exe C:\msys64\mingw64\bin\x86_64-w64-mingw32-ranlib.exe
|
|
||||||
- copy C:\msys64\mingw64\bin\windres.exe C:\msys64\mingw64\bin\x86_64-w64-mingw32-windres.exe
|
|
||||||
|
|
||||||
# Work-around linker looking for Qt dll in wrong place
|
|
||||||
- copy C:\msys64\mingw32\bin\Qt5PrintSupport.dll C:\msys64\mingw32\lib\Qt5PrintSupport.dll
|
|
||||||
- copy C:\msys64\mingw32\bin\Qt5Widgets.dll C:\msys64\mingw32\lib\Qt5Widgets.dll
|
|
||||||
- copy C:\msys64\mingw32\bin\Qt5Multimedia.dll C:\msys64\mingw32\lib\Qt5Multimedia.dll
|
|
||||||
- copy C:\msys64\mingw32\bin\Qt5Gui.dll C:\msys64\mingw32\lib\Qt5Gui.dll
|
|
||||||
- copy C:\msys64\mingw32\bin\Qt5Network.dll C:\msys64\mingw32\lib\Qt5Network.dll
|
|
||||||
- copy C:\msys64\mingw32\bin\Qt5Xml.dll C:\msys64\mingw32\lib\Qt5Xml.dll
|
|
||||||
- copy C:\msys64\mingw32\bin\Qt5Core.dll C:\msys64\mingw32\lib\Qt5Core.dll
|
|
||||||
|
|
||||||
|
|
||||||
#---------------------------------#
|
|
||||||
# build configuration #
|
|
||||||
#---------------------------------#
|
|
||||||
|
|
||||||
# build platform, i.e. x86, x64, Any CPU. This setting is optional.
|
|
||||||
platform: x86
|
|
||||||
|
|
||||||
# to add several platforms to build matrix:
|
|
||||||
#platform:
|
|
||||||
# - x86
|
|
||||||
# - Any CPU
|
|
||||||
|
|
||||||
# build Configuration, i.e. Debug, Release, etc.
|
|
||||||
configuration: Release
|
|
||||||
|
|
||||||
# to add several configurations to build matrix:
|
|
||||||
#configuration:
|
|
||||||
# - Debug
|
|
||||||
# - Release
|
|
||||||
|
|
||||||
# scripts to run before build
|
|
||||||
before_build:
|
|
||||||
- cd C:\projects\RetroShare
|
|
||||||
- git submodule update --init
|
|
||||||
- cd C:\projects\
|
|
||||||
- mkdir RetroShare-build
|
|
||||||
- cd RetroShare-build
|
|
||||||
# - find C:\ > filelist.txt
|
|
||||||
|
|
||||||
# scripts to run *after* solution is built and *before* automatic packaging occurs (web apps, NuGet packages, Azure Cloud Services)
|
|
||||||
before_package:
|
|
||||||
|
|
||||||
# to run your custom scripts instead of automatic MSBuild
|
|
||||||
build_script:
|
|
||||||
- env
|
|
||||||
- qmake ../RetroShare -spec win32-g++ "CONFIG+=debug"
|
|
||||||
- mingw32-make -j3
|
|
||||||
|
|
||||||
# scripts to run after build
|
|
||||||
after_build:
|
|
||||||
- find .
|
|
||||||
|
|
||||||
- mkdir %RS_DEPLOY%
|
|
||||||
- copy retroshare-gui\src\debug\retroshare.exe %RS_DEPLOY%\
|
|
||||||
- copy retroshare-service\src\debug\retroshare-service.exe %RS_DEPLOY%\
|
|
||||||
# - copy retroshare-service\src\retroshare-service.exe %RS_DEPLOY%\
|
|
||||||
# - copy retroshare-gui\src\retroshare.exe %RS_DEPLOY%\
|
|
||||||
|
|
||||||
## In Debug build winedeplyqt forget the non debug Qt libs
|
|
||||||
- copy C:\msys64\mingw32\bin\Qt5Svg.dll %RS_DEPLOY%\
|
|
||||||
- copy C:\msys64\mingw32\bin\Qt5Core.dll %RS_DEPLOY%\
|
|
||||||
- copy C:\msys64\mingw32\bin\Qt5Multimedia.dll %RS_DEPLOY%\
|
|
||||||
- copy C:\msys64\mingw32\bin\Qt5Widgets.dll %RS_DEPLOY%\
|
|
||||||
- copy C:\msys64\mingw32\bin\Qt5Xml.dll %RS_DEPLOY%\
|
|
||||||
- copy C:\msys64\mingw32\bin\Qt5PrintSupport.dll %RS_DEPLOY%\
|
|
||||||
- copy C:\msys64\mingw32\bin\Qt5Gui.dll %RS_DEPLOY%\
|
|
||||||
- copy C:\msys64\mingw32\bin\Qt5Network.dll %RS_DEPLOY%\
|
|
||||||
|
|
||||||
- mkdir %RS_DEPLOY%\playlistformats\
|
|
||||||
- copy C:\msys64\mingw32\share\qt5\plugins\playlistformats\qtmultimedia_m3u.dll %RS_DEPLOY%\playlistformats
|
|
||||||
|
|
||||||
- mkdir %RS_DEPLOY%\printsupport\
|
|
||||||
- copy C:\msys64\mingw32\share\qt5\plugins\printsupport\windowsprintersupport.dll %RS_DEPLOY%\printsupport\
|
|
||||||
|
|
||||||
- mkdir %RS_DEPLOY%\iconengines\
|
|
||||||
- copy C:\msys64\mingw32\share\qt5\plugins\iconengines\qsvgicon.dll %RS_DEPLOY%\iconengines\
|
|
||||||
|
|
||||||
- mkdir %RS_DEPLOY%\bearer\
|
|
||||||
- copy C:\msys64\mingw32\share\qt5\plugins\bearer\qgenericbearer.dll %RS_DEPLOY%\bearer\
|
|
||||||
|
|
||||||
- mkdir %RS_DEPLOY%\mediaservice\
|
|
||||||
- copy C:\msys64\mingw32\share\qt5\plugins\mediaservice\qtmedia_audioengine.dll %RS_DEPLOY%\mediaservice\
|
|
||||||
- copy C:\msys64\mingw32\share\qt5\plugins\mediaservice\dsengine.dll %RS_DEPLOY%\mediaservice\
|
|
||||||
|
|
||||||
- mkdir %RS_DEPLOY%\styles\
|
|
||||||
- copy C:\msys64\mingw32\share\qt5\plugins\styles\qwindowsvistastyle.dll %RS_DEPLOY%\styles\
|
|
||||||
|
|
||||||
- mkdir %RS_DEPLOY%\imageformats\
|
|
||||||
- copy C:\msys64\mingw32\share\qt5\plugins\imageformats\qwebp.dll %RS_DEPLOY%\imageformats\
|
|
||||||
- copy C:\msys64\mingw32\share\qt5\plugins\imageformats\qicns.dll %RS_DEPLOY%\imageformats\
|
|
||||||
- copy C:\msys64\mingw32\share\qt5\plugins\imageformats\qjpeg.dll %RS_DEPLOY%\imageformats\
|
|
||||||
- copy C:\msys64\mingw32\share\qt5\plugins\imageformats\qtiff.dll %RS_DEPLOY%\imageformats\
|
|
||||||
- copy C:\msys64\mingw32\share\qt5\plugins\imageformats\qtga.dll %RS_DEPLOY%\imageformats\
|
|
||||||
- copy C:\msys64\mingw32\share\qt5\plugins\imageformats\qjp2.dll %RS_DEPLOY%\imageformats\
|
|
||||||
- copy C:\msys64\mingw32\share\qt5\plugins\imageformats\qico.dll %RS_DEPLOY%\imageformats\
|
|
||||||
- copy C:\msys64\mingw32\share\qt5\plugins\imageformats\qwbmp.dll %RS_DEPLOY%\imageformats\
|
|
||||||
- copy C:\msys64\mingw32\share\qt5\plugins\imageformats\qicns.dll %RS_DEPLOY%\imageformats\
|
|
||||||
- copy C:\msys64\mingw32\share\qt5\plugins\imageformats\qgif.dll %RS_DEPLOY%\imageformats\
|
|
||||||
- copy C:\msys64\mingw32\share\qt5\plugins\imageformats\qsvg.dll %RS_DEPLOY%\imageformats\
|
|
||||||
|
|
||||||
- mkdir %RS_DEPLOY%\platforms\
|
|
||||||
- copy C:\msys64\mingw32\share\qt5\plugins\platforms\qwindows.dll %RS_DEPLOY%\platforms\
|
|
||||||
|
|
||||||
- mkdir %RS_DEPLOY%\audio\
|
|
||||||
- copy C:\msys64\mingw32\share\qt5\plugins\audio\qtaudio_windows.dll %RS_DEPLOY%\audio\
|
|
||||||
|
|
||||||
- windeployqt %RS_DEPLOY%\retroshare.exe
|
|
||||||
|
|
||||||
- copy C:\msys64\mingw32\bin\libbz2*.dll %RS_DEPLOY%\
|
|
||||||
#- copy C:\msys64\mingw32\bin\libeay32.dll %RS_DEPLOY%\
|
|
||||||
- copy C:\OpenSSL-Win32\libeay32.dll %RS_DEPLOY%\
|
|
||||||
- copy C:\msys64\mingw32\bin\libminiupnpc.dll %RS_DEPLOY%\
|
|
||||||
- copy C:\msys64\mingw32\bin\libsqlcipher*.dll %RS_DEPLOY%\
|
|
||||||
- copy C:\msys64\mingw32\bin\libsqlite3*.dll %RS_DEPLOY%\
|
|
||||||
#- copy C:\msys64\mingw32\bin\ssleay32.dll %RS_DEPLOY%\
|
|
||||||
- copy C:\OpenSSL-Win32\ssleay32.dll %RS_DEPLOY%\
|
|
||||||
- copy C:\msys64\mingw32\bin\zlib*.dll %RS_DEPLOY%\
|
|
||||||
- copy C:\msys64\mingw32\bin\libgcc_s_dw2*.dll %RS_DEPLOY%\
|
|
||||||
- copy C:\msys64\mingw32\bin\libstdc*.dll %RS_DEPLOY%\
|
|
||||||
- copy C:\msys64\mingw32\bin\libwinpthread*.dll %RS_DEPLOY%\
|
|
||||||
- copy C:\msys64\mingw32\bin\libicu*.dll %RS_DEPLOY%\
|
|
||||||
- copy C:\msys64\mingw32\bin\libpcre*.dll %RS_DEPLOY%\
|
|
||||||
- copy C:\msys64\mingw32\bin\libharfbuzz*.dll %RS_DEPLOY%\
|
|
||||||
- copy C:\msys64\mingw32\bin\libpng*.dll %RS_DEPLOY%\
|
|
||||||
- copy C:\msys64\mingw32\bin\libfreetype*.dll %RS_DEPLOY%\
|
|
||||||
- copy C:\msys64\mingw32\bin\libglib*.dll %RS_DEPLOY%\
|
|
||||||
- copy C:\msys64\mingw32\bin\libgraphite2.dll %RS_DEPLOY%\
|
|
||||||
- copy C:\msys64\mingw32\bin\libintl*.dll %RS_DEPLOY%\
|
|
||||||
- copy C:\msys64\mingw32\bin\libiconv*.dll %RS_DEPLOY%\
|
|
||||||
- copy C:\msys64\mingw32\bin\libjasper*.dll %RS_DEPLOY%\
|
|
||||||
- copy C:\msys64\mingw32\bin\libjpeg*.dll %RS_DEPLOY%\
|
|
||||||
- copy C:\msys64\mingw32\bin\libtiff*.dll %RS_DEPLOY%\
|
|
||||||
- copy C:\msys64\mingw32\bin\libwebp*.dll %RS_DEPLOY%\
|
|
||||||
- copy C:\msys64\mingw32\bin\libwebpdemux*.dll %RS_DEPLOY%\
|
|
||||||
- copy C:\msys64\mingw32\bin\liblzma*.dll %RS_DEPLOY%\
|
|
||||||
|
|
||||||
## Needed for cmark
|
|
||||||
- copy C:\msys64\mingw32\bin\libcmark*.dll %RS_DEPLOY%\
|
|
||||||
- copy C:\msys64\mingw32\bin\libdouble-conversion*.dll %RS_DEPLOY%\
|
|
||||||
|
|
||||||
# to disable automatic builds
|
|
||||||
#build: off
|
|
||||||
|
|
||||||
#---------------------------------#
|
|
||||||
# artifacts configuration #
|
|
||||||
#---------------------------------#
|
|
||||||
|
|
||||||
artifacts:
|
|
||||||
- path: '**\*.exe'
|
|
||||||
- path: filelist.txt
|
|
||||||
- path: $(RS_DEPLOY)
|
|
||||||
|
|
||||||
#
|
|
||||||
# # pushing a single file
|
|
||||||
# - path: test.zip
|
|
||||||
#
|
|
||||||
# # pushing a single file with environment variable in path and "Deployment name" specified
|
|
||||||
# - path: MyProject\bin\$(configuration)
|
|
||||||
# name: myapp
|
|
||||||
#
|
|
||||||
# # pushing entire folder as a zip archive
|
|
||||||
# - path: logs
|
|
||||||
|
|
||||||
|
|
||||||
#---------------------------------#
|
|
||||||
# deployment configuration #
|
|
||||||
#---------------------------------#
|
|
||||||
#No deployment under unknown computer!!!
|
|
||||||
|
|
||||||
#---------------------------------#
|
|
||||||
# global handlers #
|
|
||||||
#---------------------------------#
|
|
||||||
|
|
||||||
# on successful build
|
|
||||||
#on_success:
|
|
||||||
# - do something
|
|
||||||
|
|
||||||
# on build failure
|
|
||||||
#on_failure:
|
|
||||||
# - do something
|
|
||||||
|
|
||||||
# after build failure or success
|
|
||||||
#on_finish:
|
|
||||||
# - do something
|
|
||||||
|
|
||||||
|
|
||||||
#---------------------------------#
|
|
||||||
# notifications #
|
|
||||||
#---------------------------------#
|
|
||||||
|
|
||||||
notifications:
|
|
||||||
|
|
||||||
# Email
|
|
||||||
- provider: Email
|
|
||||||
to:
|
|
||||||
- retrosharephenom@gmail.com
|
|
||||||
subject: 'Build {{status}}' # optional
|
|
||||||
message: "{{message}}, {{commitId}}, ..." # optional
|
|
||||||
on_build_status_changed: true
|
|
171
build_scripts/Debian+Ubuntu/Linux_InstallGuide.md
Normal file
171
build_scripts/Debian+Ubuntu/Linux_InstallGuide.md
Normal file
|
@ -0,0 +1,171 @@
|
||||||
|
|
||||||
|
## Compilation on Linux
|
||||||
|
|
||||||
|
|
||||||
|
### Install package dependencies:
|
||||||
|
#### Debian/Ubuntu
|
||||||
|
```bash
|
||||||
|
sudo apt-get install g++ cmake libbz2-dev libjson-c-dev libssl-dev libsqlcipher-dev \
|
||||||
|
libupnp-dev libxss-dev rapidjson-dev libbotan-2-dev libasio-dev
|
||||||
|
```
|
||||||
|
|
||||||
|
To compile with Qt5:
|
||||||
|
```bash
|
||||||
|
sudo apt-get install qt5-qmake qtmultimedia5-dev qt6-5compat-dev libqt5x11extras5-dev
|
||||||
|
```
|
||||||
|
|
||||||
|
To compile with Qt6:
|
||||||
|
```bash
|
||||||
|
sudo apt-get install qt6-base-dev qt6-multimedia-dev qt6-5compat-dev
|
||||||
|
```
|
||||||
|
|
||||||
|
Additional dependencies for Feedreader plugin:
|
||||||
|
```bash
|
||||||
|
sudo apt-get install libxml2-dev libxslt1-dev libcurl4-openssl-dev
|
||||||
|
```
|
||||||
|
|
||||||
|
Additional dependencies for Voip plugin:
|
||||||
|
```bash
|
||||||
|
sudo apt-get install libavcodec-dev libcurl4-openssl-dev \
|
||||||
|
libqt5multimedia5-plugins libspeexdsp-dev
|
||||||
|
```
|
||||||
|
|
||||||
|
Autologin:
|
||||||
|
```bash
|
||||||
|
sudo apt install libsecret-1-dev
|
||||||
|
```
|
||||||
|
|
||||||
|
#### openSUSE
|
||||||
|
```bash
|
||||||
|
sudo zypper install git gcc-c++ cmake libqt5-qtbase-devel \
|
||||||
|
libqt5-qtmultimedia-devel libqt5-qtx11extras-devel libbz2-devel \
|
||||||
|
libopenssl-devel libupnp-devel libXss-devel sqlcipher-devel rapidjson-devel \
|
||||||
|
json-c botan bzip2
|
||||||
|
```
|
||||||
|
|
||||||
|
Additional packages to compile with Qt6:
|
||||||
|
```bash
|
||||||
|
sudo zypper install qt6-base-devel qt6-multimedia-devel qt6-qt5compat-devel
|
||||||
|
```
|
||||||
|
|
||||||
|
Additional dependencies for plugins:
|
||||||
|
```bash
|
||||||
|
sudo zypper install ffmpeg-4-libavcodec-devel libcurl-devel libxml2-devel \
|
||||||
|
libxslt-devel speex-devel speexdsp-devel
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Linux Mint
|
||||||
|
```bash
|
||||||
|
sudo apt-get install git g++ cmake qt5-qmake qtmultimedia5-dev \
|
||||||
|
libqt5x11extras5-dev libupnp-dev libxss-dev libssl-dev libsqlcipher-dev \
|
||||||
|
rapidjson-dev doxygen libbz2-dev libjson-c-dev libbotan-2-dev libasio-dev
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Arch Linux
|
||||||
|
```bash
|
||||||
|
pacman -S base-devel libgnome-keyring cmake qt5-tools qt5-multimedia qt5-x11extras \
|
||||||
|
rapidjson libupnp libxslt libxss sqlcipher botan2 bzip2 json-c
|
||||||
|
```
|
||||||
|
|
||||||
|
### Checkout the source code
|
||||||
|
```bash
|
||||||
|
cd ~
|
||||||
|
git clone https://github.com/RetroShare/RetroShare.git retroshare
|
||||||
|
```
|
||||||
|
|
||||||
|
### Checkout the submodules
|
||||||
|
```bash
|
||||||
|
cd retroshare
|
||||||
|
git submodule update --init --remote libbitdht/ libretroshare/ openpgpsdk/ retroshare-webui/
|
||||||
|
git submodule update --init --remote supportlibs/librnp supportlibs/restbed supportlibs/rapidjson
|
||||||
|
```
|
||||||
|
|
||||||
|
### Compile
|
||||||
|
```bash
|
||||||
|
qmake CONFIG+=release CONFIG+=rs_jsonapi CONFIG+=rs_webui
|
||||||
|
make
|
||||||
|
```
|
||||||
|
|
||||||
|
The executable produced will be:
|
||||||
|
```bash
|
||||||
|
./retroshare-gui/src/retroshare
|
||||||
|
```
|
||||||
|
|
||||||
|
### Install
|
||||||
|
```bash
|
||||||
|
sudo make install
|
||||||
|
```
|
||||||
|
|
||||||
|
The executable produced will be:
|
||||||
|
```bash
|
||||||
|
~/usr/bin/RetroShare
|
||||||
|
```
|
||||||
|
|
||||||
|
### For packagers
|
||||||
|
|
||||||
|
Packagers can use PREFIX and LIB\_DIR to customize the installation paths:
|
||||||
|
```bash
|
||||||
|
qmake PREFIX=/usr LIB_DIR=/usr/lib64 "CONFIG-=debug" "CONFIG+=release"
|
||||||
|
make
|
||||||
|
make INSTALL_ROOT=${PKGDIR} install
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
### libsqlcipher
|
||||||
|
If libsqlcipher is not available as a package
|
||||||
|
|
||||||
|
You need to place sqlcipher so that the hierarchy is:
|
||||||
|
|
||||||
|
~Home
|
||||||
|
|
|
||||||
|
+--- retroshare
|
||||||
|
|
|
||||||
|
+--- lib
|
||||||
|
|
|
||||||
|
+---- sqlcipher
|
||||||
|
```bash
|
||||||
|
mkdir lib
|
||||||
|
cd lib
|
||||||
|
git clone https://github.com/sqlcipher/sqlcipher.git --depth=1 --branch v3.4.1
|
||||||
|
cd sqlcipher
|
||||||
|
./configure --enable-tempstore=yes CFLAGS="-DSQLITE_HAS_CODEC" LDFLAGS="-lcrypto"
|
||||||
|
make
|
||||||
|
cd ..
|
||||||
|
```
|
||||||
|
|
||||||
|
### Build infos
|
||||||
|
|
||||||
|
For the `FeedReader` it is required to append the config option `CONFIG+=retroshare_plugins`.
|
||||||
|
Make sure `plugins/plugins.pro` contains `FeedReader` in the list of plugins to compile.
|
||||||
|
|
||||||
|
Do not mix plugins compiled with Qt5 with those compiled with Qt6. They work only if they are compiled
|
||||||
|
with the same Qt version as RetroShare.
|
||||||
|
|
||||||
|
Voip is outdated and is not compileable on the latest Debian.
|
||||||
|
|
||||||
|
For `Autologin` it is required to append the config option `CONFIG+=rs_autologin`.
|
||||||
|
|
||||||
|
|
||||||
|
### Build options
|
||||||
|
|
||||||
|
* Mandatory
|
||||||
|
* release or debug: normally you would like to use the release option
|
||||||
|
* Extra features (optional)
|
||||||
|
* rs_autologin: enable autologin
|
||||||
|
* retroshare_plugins: build plugins
|
||||||
|
* rs_webui: enable Web interface
|
||||||
|
* rs_jsonapi: enable json api interface, required by rs_webui
|
||||||
|
* gxsthewire: enable Wire service (experimental)
|
||||||
|
* wikipoos: enable Wiki service (experimental)
|
||||||
|
* rs_use_native_dialogs: enable native dialogs (may cause crashes with some versions of Gtk)
|
||||||
|
* rs_deep_channels_index: build with deep channel indexing support
|
||||||
|
* rs_deep_files_index: build with deep file indexing support
|
||||||
|
* "CONFIG+=..." enable other extra compile time features, you can find the almost complete list in file *<sourcefolder>\retroshare.pri*
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
```batch
|
||||||
|
qmake CONFIG-=debug CONFIG+=release CONFIG+=rs_use_native_dialog CONFIG+=rs_gui_cmark
|
||||||
|
qmake CONFIG+=rs_jsonapi CONFIG+=rs_webui CONFIG+=rs_autologin
|
||||||
|
qmake CONFIG+=rs_deep_channels_index CONFIG += gxsthewire CONFIG += wikipoos
|
||||||
|
```
|
|
@ -2,13 +2,15 @@
|
||||||
|
|
||||||
## Qt Installation
|
## Qt Installation
|
||||||
|
|
||||||
Install Qt via: [Qt Download](http://www.qt.io/download/)
|
Qt 5.15 is not available as install package.
|
||||||
|
|
||||||
Use default options. And add Qt Script support.
|
Download Qt 5.15.x from here: [Qt 5.15.17](https://download.qt.io/archive/qt/5.15/5.15.17/single/qt-everywhere-opensource-src-5.15.17.tar.xz)
|
||||||
|
|
||||||
|
Instruction howto Build Qt 5.15.x on macOS: [macOS Building](https://doc.qt.io/archives/qt-5.15/macos-building.html)
|
||||||
|
## Set the Environment Variables
|
||||||
Add to the PATH environment variable by editing your *~/.profile* file.
|
Add to the PATH environment variable by editing your *~/.profile* file.
|
||||||
|
|
||||||
export PATH="/users/$USER/Qt/5.14.1/clang_64/bin:$PATH"
|
export PATH="/users/$USER/Qt/5.15.17/clang_64/bin:$PATH"
|
||||||
|
|
||||||
Depends on which version of Qt you use.
|
Depends on which version of Qt you use.
|
||||||
|
|
||||||
|
@ -32,11 +34,9 @@ In GitHub Desktop -> Clone Repository -> URL
|
||||||
|
|
||||||
## ***Get XCode & MacOSX SDK***
|
## ***Get XCode & MacOSX SDK***
|
||||||
|
|
||||||
Install XCode following this guide: [XCode](http://guide.macports.org/#installing.xcode)
|
|
||||||
|
|
||||||
To identify the correct version of Xcode to install, you need to know which OS you are running. Go to the [x] menu -> "About This Mac" and read the macOS version number.
|
To identify the correct version of Xcode to install, you need to know which OS you are running. Go to the [x] menu -> "About This Mac" and read the macOS version number.
|
||||||
|
|
||||||
If you are running the macOS Catalina >= 10.15, you can install Xcode directly from App Store using the instructions below.
|
If you are running macOS Ventura 13.5 or later, you can install Xcode directly from App Store using the instructions below.
|
||||||
|
|
||||||
You can find older versions of Xcode at [Apple Developer Downloads](https://developer.apple.com/downloads/). Find the appropriate .xip file for your macOS version
|
You can find older versions of Xcode at [Apple Developer Downloads](https://developer.apple.com/downloads/). Find the appropriate .xip file for your macOS version
|
||||||
|
|
||||||
|
@ -53,27 +53,12 @@ Install XCode command line developer tools:
|
||||||
|
|
||||||
Start XCode to get it updated and to able C compiler to create executables.
|
Start XCode to get it updated and to able C compiler to create executables.
|
||||||
|
|
||||||
Get Your MacOSX SDK if missing: [MacOSX-SDKs](https://github.com/phracker/MacOSX-SDKs)
|
Older MacOSX SDK is available from here: [MacOSX-SDKs](https://github.com/phracker/MacOSX-SDKs)
|
||||||
|
|
||||||
## ***Choose if you use MacPort or HomeBrew***
|
|
||||||
|
|
||||||
### MacPort Installation
|
### MacPort Installation
|
||||||
|
|
||||||
Install MacPort following this guide: [MacPort](http://guide.macports.org/#installing.xcode)
|
Install MacPort following this guide: [MacPort](http://guide.macports.org/#installing.xcode)
|
||||||
|
|
||||||
#### Install libraries
|
|
||||||
|
|
||||||
$ sudo port -v selfupdate
|
|
||||||
$ sudo port install openssl
|
|
||||||
$ sudo port install miniupnpc
|
|
||||||
|
|
||||||
For VOIP Plugin:
|
|
||||||
|
|
||||||
$ sudo port install speex-devel
|
|
||||||
$ sudo port install opencv
|
|
||||||
$ sudo port install ffmpeg
|
|
||||||
|
|
||||||
|
|
||||||
### HOMEBREW Installation
|
### HOMEBREW Installation
|
||||||
|
|
||||||
Install HomeBrew following this guide: [HomeBrew](http://brew.sh/)
|
Install HomeBrew following this guide: [HomeBrew](http://brew.sh/)
|
||||||
|
|
128
build_scripts/RedHat+Fedora/Linux_RedHat_InstallGuide.md
Normal file
128
build_scripts/RedHat+Fedora/Linux_RedHat_InstallGuide.md
Normal file
|
@ -0,0 +1,128 @@
|
||||||
|
|
||||||
|
## Compilation on Red Hat-based Linux
|
||||||
|
|
||||||
|
|
||||||
|
### Install package dependencies:
|
||||||
|
#### RedHat/Fedora
|
||||||
|
```bash
|
||||||
|
sudo dnf install mesa-libGL-devel gcc cmake rapidjson-devel \
|
||||||
|
libupnp openssl sqlcipher sqlcipher-devel \
|
||||||
|
botan2 botan2-devel json-c-devel bzip2-devel asio-devel libsecret libXScrnSaver-devel
|
||||||
|
```
|
||||||
|
|
||||||
|
To compile with Qt5:
|
||||||
|
```bash
|
||||||
|
sudo dnf install qt5-qtbase-devel qt5-qtmultimedia qt5-qtx11extras
|
||||||
|
```
|
||||||
|
|
||||||
|
To compile with Qt6:
|
||||||
|
```bash
|
||||||
|
sudo dnf install qt6-qtbase-devel qt6-qtmultimedia-devel qt6-qt5compat-devel
|
||||||
|
```
|
||||||
|
|
||||||
|
Additional dependencies for Feedreader plugin:
|
||||||
|
```bash
|
||||||
|
sudo dnf install libxml2-devel libxslt-devel libcurl-devel
|
||||||
|
```
|
||||||
|
|
||||||
|
### Checkout the source code
|
||||||
|
```bash
|
||||||
|
cd ~
|
||||||
|
git clone https://github.com/RetroShare/RetroShare.git retroshare
|
||||||
|
```
|
||||||
|
|
||||||
|
### Checkout the submodules
|
||||||
|
```bash
|
||||||
|
cd retroshare
|
||||||
|
git submodule update --init --remote libbitdht/ libretroshare/ openpgpsdk/ retroshare-webui/
|
||||||
|
git submodule update --init --remote supportlibs/librnp supportlibs/restbed supportlibs/rapidjson
|
||||||
|
```
|
||||||
|
|
||||||
|
### Compile
|
||||||
|
```bash
|
||||||
|
qmake CONFIG+=release CONFIG+=rs_jsonapi CONFIG+=rs_webui
|
||||||
|
make
|
||||||
|
```
|
||||||
|
|
||||||
|
The executable produced will be:
|
||||||
|
```bash
|
||||||
|
./retroshare-gui/src/retroshare
|
||||||
|
```
|
||||||
|
|
||||||
|
### Install
|
||||||
|
```bash
|
||||||
|
sudo make install
|
||||||
|
```
|
||||||
|
|
||||||
|
The executable produced will be:
|
||||||
|
```bash
|
||||||
|
~/usr/bin/RetroShare
|
||||||
|
```
|
||||||
|
|
||||||
|
### For packagers
|
||||||
|
|
||||||
|
Packagers can use PREFIX and LIB\_DIR to customize the installation paths:
|
||||||
|
```bash
|
||||||
|
qmake PREFIX=/usr LIB_DIR=/usr/lib64 "CONFIG-=debug" "CONFIG+=release"
|
||||||
|
make
|
||||||
|
make INSTALL_ROOT=${PKGDIR} install
|
||||||
|
```
|
||||||
|
|
||||||
|
### SQLCipher
|
||||||
|
If libsqlcipher is not available as a package
|
||||||
|
|
||||||
|
You need to place sqlcipher so that the hierarchy is:
|
||||||
|
|
||||||
|
~Home
|
||||||
|
|
|
||||||
|
+--- retroshare
|
||||||
|
|
|
||||||
|
+--- lib
|
||||||
|
|
|
||||||
|
+---- sqlcipher
|
||||||
|
```bash
|
||||||
|
mkdir lib
|
||||||
|
cd lib
|
||||||
|
git clone https://github.com/sqlcipher/sqlcipher.git --depth=1 --branch v3.4.1
|
||||||
|
cd sqlcipher
|
||||||
|
./configure --enable-tempstore=yes CFLAGS="-DSQLITE_HAS_CODEC" LDFLAGS="-lcrypto"
|
||||||
|
make
|
||||||
|
cd ..
|
||||||
|
```
|
||||||
|
|
||||||
|
### Build infos
|
||||||
|
|
||||||
|
For the `FeedReader` it is required to append the config option `CONFIG+=retroshare_plugins`.
|
||||||
|
Make sure `plugins/plugins.pro` contains `FeedReader` in the list of plugins to compile.
|
||||||
|
|
||||||
|
Do not mix plugins compiled with Qt5 with those compiled with Qt6. They work only if they are compiled
|
||||||
|
with the same Qt version as RetroShare.
|
||||||
|
|
||||||
|
Voip is outdated and is not compileable on the latest Debian.
|
||||||
|
|
||||||
|
For `Autologin` it is required to append the config option `CONFIG+=rs_autologin`.
|
||||||
|
|
||||||
|
|
||||||
|
### Build options
|
||||||
|
|
||||||
|
* Mandatory
|
||||||
|
* release or debug: normally you would like to use the release option
|
||||||
|
* Extra features (optional)
|
||||||
|
* rs_autologin: enable autologin
|
||||||
|
* retroshare_plugins: build plugins
|
||||||
|
* rs_webui: enable Web interface
|
||||||
|
* rs_jsonapi: enable json api interface, required by rs_webui
|
||||||
|
* gxsthewire: enable Wire service (experimental)
|
||||||
|
* wikipoos: enable Wiki service (experimental)
|
||||||
|
* rs_use_native_dialogs: enable native dialogs (may cause crashes with some versions of Gtk)
|
||||||
|
* rs_deep_channels_index: build with deep channel indexing support
|
||||||
|
* rs_deep_files_index: build with deep file indexing support
|
||||||
|
* "CONFIG+=..." enable other extra compile time features, you can find the almost complete list in file *<sourcefolder>\retroshare.pri*
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
```batch
|
||||||
|
qmake CONFIG-=debug CONFIG+=release CONFIG+=rs_use_native_dialog CONFIG+=rs_gui_cmark
|
||||||
|
qmake CONFIG+=rs_jsonapi CONFIG+=rs_webui CONFIG+=rs_autologin
|
||||||
|
qmake CONFIG+=rs_deep_channels_index CONFIG += gxsthewire CONFIG += wikipoos
|
||||||
|
```
|
|
@ -1,10 +1,11 @@
|
||||||
[Desktop Entry]
|
[Desktop Entry]
|
||||||
|
Encoding=UTF-8
|
||||||
Version=1.0
|
Version=1.0
|
||||||
Name=RetroShare
|
Name=RetroShare
|
||||||
Comment=Securely share files with your friends
|
Comment=Securely communicate with your friends
|
||||||
Exec=/usr/bin/retroshare %U
|
Exec=/usr/bin/retroshare %U
|
||||||
Icon=/usr/share/pixmaps/retroshare.xpm
|
Icon=retroshare.xpm
|
||||||
Terminal=false
|
Terminal=false
|
||||||
Type=Application
|
Type=Application
|
||||||
Categories=Network;P2P;
|
Categories=Network;Email;InstantMessaging;Chat;Feed;FileTransfer;P2P
|
||||||
MimeType=x-scheme-handler/retroshare;
|
MimeType=x-scheme-handler/retroshare;
|
||||||
|
|
|
@ -18,8 +18,8 @@ At the end, you'll get at ..\\*-msys2\deploy\ the Portable 7zip file.
|
||||||
|
|
||||||
### MSYS2 INSTALLATION (for editing or debugging)
|
### MSYS2 INSTALLATION (for editing or debugging)
|
||||||
|
|
||||||
Download MSYS2 from [MSYS2](http://www.msys2.org/). Get the i686 version
|
Download MSYS2 from [MSYS2](http://www.msys2.org/). Installing
|
||||||
if you run a 32-bit Windows or the x86_64 if you run a 64-bit Windows.
|
MSYS2 requires 64 bit Windows 10 or newer.
|
||||||
|
|
||||||
Run the installer and install MSYS2.
|
Run the installer and install MSYS2.
|
||||||
|
|
||||||
|
@ -40,26 +40,29 @@ Run MSYS2 MSYS again and finish updating with:
|
||||||
|
|
||||||
Install the default programs needed to build:
|
Install the default programs needed to build:
|
||||||
|
|
||||||
pacman -S base-devel git wget p7zip gcc perl ruby python2 doxygen cmake
|
pacman -S base-devel git wget p7zip gcc perl ruby doxygen cmake
|
||||||
|
|
||||||
Install the 32-bit toolchain:
|
Install the 64-bit toolchain:
|
||||||
|
|
||||||
pacman -S mingw-w64-i686-toolchain
|
pacman -S mingw-w64-x86_64-toolchain
|
||||||
|
|
||||||
Install all needed dependencies:
|
Install all needed dependencies:
|
||||||
|
|
||||||
pacman -S mingw-w64-i686-miniupnpc
|
pacman -S mingw-w64-x86_64-miniupnpc
|
||||||
pacman -S mingw-w64-i686-libmicrohttpd
|
pacman -S mingw-w64-x86_64-libxslt
|
||||||
pacman -S mingw-w64-i686-libxslt
|
pacman -S mingw-w64-x86_64-xapian-core
|
||||||
pacman -S mingw-w64-i686-xapian-core
|
pacman -S mingw-w64-x86_64-sqlcipher
|
||||||
pacman -S mingw-w64-i686-sqlcipher
|
pacman -S mingw-w64-x86_64-qt5-base
|
||||||
pacman -S mingw-w64-i686-qt5
|
pacman -S mingw-w64-x86_64-qt5-multimedia
|
||||||
pacman -S mingw32/mingw-w64-i686-cmake
|
pacman -S mingw-w64-x86_64-ccmake
|
||||||
pacman -S mingw-w64-i686-rapidjson
|
pacman -S mingw-w64-x86_64-rapidjson
|
||||||
|
pacman -S mingw-w64-x86_64-json-c
|
||||||
|
pacman -S mingw-w64-x86_64-libbotan
|
||||||
|
pacman -S mingw-w64-x86_64-asio
|
||||||
|
|
||||||
If you want to use QtCreator as IDE, prefer using this one publish by MSYS2 as all build Kit are already setted.
|
If you want to use QtCreator as IDE, prefer using this one publish by MSYS2 as all build Kit are already setted.
|
||||||
|
|
||||||
pacman -S mingw-w64-i686-qt-creator
|
pacman -S mingw-w64-x86_64-qt-creator
|
||||||
*You can start it from MSYS2 terminal.*
|
*You can start it from MSYS2 terminal.*
|
||||||
|
|
||||||
|
|
||||||
|
@ -67,7 +70,7 @@ We're done installing MSYS2, close the shell terminal.
|
||||||
|
|
||||||
### BUILDING RETROSHARE
|
### BUILDING RETROSHARE
|
||||||
|
|
||||||
Now run the MSYS2 MinGW 32-bit shell terminal (it's in the start menu).
|
Now run the MSYS2 MinGW 64-bit shell terminal (it's in the start menu).
|
||||||
We will use it to checkout Retroshare and build it:
|
We will use it to checkout Retroshare and build it:
|
||||||
|
|
||||||
git clone https://github.com/RetroShare/RetroShare.git
|
git clone https://github.com/RetroShare/RetroShare.git
|
||||||
|
|
|
@ -43,7 +43,9 @@ set NSIS_PARAM=%NSIS_PARAM% /DDEPLOYDIR="%RsDeployPath%"
|
||||||
set NSIS_PARAM=%NSIS_PARAM% /DOUTDIR="%RsPackPath%"
|
set NSIS_PARAM=%NSIS_PARAM% /DOUTDIR="%RsPackPath%"
|
||||||
set NSIS_PARAM=%NSIS_PARAM% /DINSTALLERADD="%RsArchiveAdd%"
|
set NSIS_PARAM=%NSIS_PARAM% /DINSTALLERADD="%RsArchiveAdd%"
|
||||||
set NSIS_PARAM=%NSIS_PARAM% /DARCHITECTURE="%RsArchitecture%"
|
set NSIS_PARAM=%NSIS_PARAM% /DARCHITECTURE="%RsArchitecture%"
|
||||||
|
set NSIS_PARAM=%NSIS_PARAM% /DTOOLCHAIN="%RsToolchain%"
|
||||||
set NSIS_PARAM=%NSIS_PARAM% /DREVISION=%RsVersion.Extra%
|
set NSIS_PARAM=%NSIS_PARAM% /DREVISION=%RsVersion.Extra%
|
||||||
|
set NSIS_PARAM=%NSIS_PARAM% /DQTVERSION=%QtVersion%
|
||||||
|
|
||||||
set QtMainVersion=%QtVersion:~0,1%
|
set QtMainVersion=%QtVersion:~0,1%
|
||||||
|
|
||||||
|
@ -53,7 +55,10 @@ rem makensis %NSIS_PARAM% "%SourcePath%\build_scripts\Windows-msys2\installer\re
|
||||||
rem pushd "%SourcePath%\build_scripts\Windows-msys2\installer"
|
rem pushd "%SourcePath%\build_scripts\Windows-msys2\installer"
|
||||||
rem %EnvMSYS2Cmd% "makensis $0 retroshare-Qt%QtMainVersion%.nsi" "%NSIS_PARAM%"
|
rem %EnvMSYS2Cmd% "makensis $0 retroshare-Qt%QtMainVersion%.nsi" "%NSIS_PARAM%"
|
||||||
rem popd
|
rem popd
|
||||||
"%RsMinGWPath%\bin\makensis" %NSIS_PARAM% "%SourcePath%\build_scripts\Windows-msys2\installer\retroshare-Qt%QtMainVersion%.nsi"
|
|
||||||
|
rem Currently no need for separate nsi files
|
||||||
|
rem "%RsMinGWPath%\bin\makensis" %NSIS_PARAM% "%SourcePath%\build_scripts\Windows-msys2\installer\retroshare-Qt%QtMainVersion%.nsi"
|
||||||
|
"%RsMinGWPath%\bin\makensis" %NSIS_PARAM% "%SourcePath%\build_scripts\Windows-msys2\installer\retroshare.nsi"
|
||||||
|
|
||||||
exit /B %ERRORLEVEL%
|
exit /B %ERRORLEVEL%
|
||||||
|
|
||||||
|
|
|
@ -15,20 +15,22 @@ call "%~dp0env-base.bat" %*
|
||||||
if errorlevel 2 exit /B 2
|
if errorlevel 2 exit /B 2
|
||||||
if errorlevel 1 goto error_env
|
if errorlevel 1 goto error_env
|
||||||
|
|
||||||
|
title Build - %SourceName%-%RsBuildConfig% Qt-%QtVersion% %RsToolchain% [Prerequisites]
|
||||||
|
|
||||||
if not "%ParamNoupdate%"=="1" (
|
if not "%ParamNoupdate%"=="1" (
|
||||||
:: Install needed things
|
:: Install needed things
|
||||||
%EnvMSYS2Cmd% "pacman --noconfirm --needed -S make git mingw-w64-%RsMSYS2Architecture%-toolchain mingw-w64-%RsMSYS2Architecture%-qt5 mingw-w64-%RsMSYS2Architecture%-miniupnpc mingw-w64-%RsMSYS2Architecture%-sqlcipher mingw-w64-%RsMSYS2Architecture%-cmake mingw-w64-%RsMSYS2Architecture%-rapidjson"
|
%EnvMSYS2Cmd% "pacman --noconfirm --needed -S make git mingw-w64-%RsMSYS2Architecture%-toolchain mingw-w64-%RsMSYS2Architecture%-qt%ParamQtVersion% mingw-w64-%RsMSYS2Architecture%-miniupnpc mingw-w64-%RsMSYS2Architecture%-sqlcipher mingw-w64-%RsMSYS2Architecture%-cmake mingw-w64-%RsMSYS2Architecture%-rapidjson"
|
||||||
:: rnp
|
:: rnp
|
||||||
%EnvMSYS2Cmd% "pacman --noconfirm --needed -S mingw-w64-%RsMSYS2Architecture%-json-c mingw-w64-%RsMSYS2Architecture%-libbotan"
|
%EnvMSYS2Cmd% "pacman --noconfirm --needed -S mingw-w64-%RsMSYS2Architecture%-json-c mingw-w64-%RsMSYS2Architecture%-libbotan"
|
||||||
|
|
||||||
:: Webui
|
:: Webui
|
||||||
if "%ParamWebui%"=="1" %EnvMSYS2Cmd% "pacman --noconfirm --needed -S mingw-w64-%RsMSYS2Architecture%-doxygen"
|
if "%ParamWebui%"=="1" %EnvMSYS2Cmd% "pacman --noconfirm --needed -S mingw-w64-%RsMSYS2Architecture%-doxygen mingw-w64-%RsMSYS2Architecture%-asio"
|
||||||
|
|
||||||
:: Plugins
|
:: Plugins
|
||||||
if "%ParamPlugins%"=="1" %EnvMSYS2Cmd% "pacman --noconfirm --needed -S mingw-w64-%RsMSYS2Architecture%-speex mingw-w64-%RsMSYS2Architecture%-speexdsp mingw-w64-%RsMSYS2Architecture%-curl mingw-w64-%RsMSYS2Architecture%-libxslt mingw-w64-%RsMSYS2Architecture%-opencv mingw-w64-%RsMSYS2Architecture%-ffmpeg"
|
if "%ParamPlugins%"=="1" %EnvMSYS2Cmd% "pacman --noconfirm --needed -S mingw-w64-%RsMSYS2Architecture%-speex mingw-w64-%RsMSYS2Architecture%-speexdsp mingw-w64-%RsMSYS2Architecture%-curl mingw-w64-%RsMSYS2Architecture%-libxslt mingw-w64-%RsMSYS2Architecture%-opencv mingw-w64-%RsMSYS2Architecture%-ffmpeg"
|
||||||
|
|
||||||
:: Clang
|
:: Clang
|
||||||
if "%ParamClang%"=="1" %EnvMSYS2Cmd% "pacman --noconfirm --needed -S mingw-w64-%RsMSYS2Architecture%-clang"
|
if "%ClangCompiler%"=="1" %EnvMSYS2Cmd% "pacman --noconfirm --needed -S mingw-w64-%RsMSYS2Architecture%-clang"
|
||||||
|
|
||||||
:: Indexing
|
:: Indexing
|
||||||
if "%ParamIndexing%"=="1" %EnvMSYS2Cmd% "pacman --noconfirm --needed -S mingw-w64-%RsMSYS2Architecture%-xapian-core mingw-w64-%RsMSYS2Architecture%-libvorbis mingw-w64-%RsMSYS2Architecture%-flac mingw-w64-%RsMSYS2Architecture%-taglib"
|
if "%ParamIndexing%"=="1" %EnvMSYS2Cmd% "pacman --noconfirm --needed -S mingw-w64-%RsMSYS2Architecture%-xapian-core mingw-w64-%RsMSYS2Architecture%-libvorbis mingw-w64-%RsMSYS2Architecture%-flac mingw-w64-%RsMSYS2Architecture%-taglib"
|
||||||
|
@ -53,7 +55,7 @@ echo.
|
||||||
echo === Version
|
echo === Version
|
||||||
echo.
|
echo.
|
||||||
|
|
||||||
title Build - %SourceName%-%RsBuildConfig% [Version]
|
title Build - %SourceName%-%RsBuildConfig% Qt-%QtVersion% %RsToolchain% [Version]
|
||||||
|
|
||||||
pushd "%SourcePath%\retroshare-gui\src\gui\images"
|
pushd "%SourcePath%\retroshare-gui\src\gui\images"
|
||||||
:: Touch resource file
|
:: Touch resource file
|
||||||
|
@ -67,7 +69,7 @@ echo.
|
||||||
echo === qmake
|
echo === qmake
|
||||||
echo.
|
echo.
|
||||||
|
|
||||||
title Build - %SourceName%-%RsBuildConfig% [qmake]
|
title Build - %SourceName%-%RsBuildConfig% Qt-%QtVersion% %RsToolchain% [qmake]
|
||||||
|
|
||||||
set RS_QMAKE_CONFIG=%RS_QMAKE_CONFIG% "CONFIG+=%RsBuildConfig%"
|
set RS_QMAKE_CONFIG=%RS_QMAKE_CONFIG% "CONFIG+=%RsBuildConfig%"
|
||||||
if "%ParamAutologin%"=="1" set RS_QMAKE_CONFIG=%RS_QMAKE_CONFIG% "CONFIG+=rs_autologin"
|
if "%ParamAutologin%"=="1" set RS_QMAKE_CONFIG=%RS_QMAKE_CONFIG% "CONFIG+=rs_autologin"
|
||||||
|
@ -79,14 +81,13 @@ echo %RsBuildConfig% >> buildinfo.txt
|
||||||
echo %RsArchitecture% >> buildinfo.txt
|
echo %RsArchitecture% >> buildinfo.txt
|
||||||
echo Qt %QtVersion% >> buildinfo.txt
|
echo Qt %QtVersion% >> buildinfo.txt
|
||||||
echo %RsToolchain% >> buildinfo.txt
|
echo %RsToolchain% >> buildinfo.txt
|
||||||
echo %RsCompiler% >> buildinfo.txt
|
|
||||||
|
|
||||||
call "%ToolsPath%\msys2-path.bat" "%SourcePath%" MSYS2SourcePath
|
call "%ToolsPath%\msys2-path.bat" "%SourcePath%" MSYS2SourcePath
|
||||||
call "%ToolsPath%\msys2-path.bat" "%EnvMSYS2Path%" MSYS2EnvMSYS2Path
|
call "%ToolsPath%\msys2-path.bat" "%EnvMSYS2Path%" MSYS2EnvMSYS2Path
|
||||||
if "%ParamClang%"=="1" (
|
if "%ClangCompiler%"=="1" (
|
||||||
%EnvMSYS2Cmd% "qmake "%MSYS2SourcePath%/RetroShare.pro" -r -spec win32-clang-g++ %RS_QMAKE_CONFIG%"
|
%EnvMSYS2Cmd% "%QMakeCmd% "%MSYS2SourcePath%/RetroShare.pro" -r -spec win32-clang-g++ %RS_QMAKE_CONFIG%"
|
||||||
) else (
|
) else (
|
||||||
%EnvMSYS2Cmd% "qmake "%MSYS2SourcePath%/RetroShare.pro" -r -spec win32-g++ %RS_QMAKE_CONFIG%"
|
%EnvMSYS2Cmd% "%QMakeCmd% "%MSYS2SourcePath%/RetroShare.pro" -r -spec win32-g++ %RS_QMAKE_CONFIG%"
|
||||||
)
|
)
|
||||||
if errorlevel 1 goto error
|
if errorlevel 1 goto error
|
||||||
|
|
||||||
|
@ -94,7 +95,7 @@ echo.
|
||||||
echo === make
|
echo === make
|
||||||
echo.
|
echo.
|
||||||
|
|
||||||
title Build - %SourceName%-%RsBuildConfig% [make]
|
title Build - %SourceName%-%RsBuildConfig% Qt-%QtVersion% %RsToolchain% [make]
|
||||||
|
|
||||||
%EnvMSYS2Cmd% "make -j %CoreCount%"
|
%EnvMSYS2Cmd% "make -j %CoreCount%"
|
||||||
if errorlevel 1 goto error
|
if errorlevel 1 goto error
|
||||||
|
|
|
@ -5,14 +5,16 @@ set ParamAutologin=0
|
||||||
set ParamPlugins=0
|
set ParamPlugins=0
|
||||||
set ParamTor=0
|
set ParamTor=0
|
||||||
set ParamWebui=0
|
set ParamWebui=0
|
||||||
set ParamClang=0
|
set ClangCompiler=0
|
||||||
set ParamIndexing=0
|
set ParamIndexing=0
|
||||||
set ParamFriendserver=0
|
set ParamFriendserver=0
|
||||||
set ParamNoupdate=0
|
set ParamNoupdate=0
|
||||||
set CoreCount=%NUMBER_OF_PROCESSORS%
|
set CoreCount=%NUMBER_OF_PROCESSORS%
|
||||||
set RS_QMAKE_CONFIG=
|
set RS_QMAKE_CONFIG=
|
||||||
set RsToolchain=
|
set RsToolchain=
|
||||||
|
set ParamQtVersion=5
|
||||||
set tcc=0
|
set tcc=0
|
||||||
|
set QtVersionCount=0
|
||||||
|
|
||||||
:parameter_loop
|
:parameter_loop
|
||||||
if "%~1" NEQ "" (
|
if "%~1" NEQ "" (
|
||||||
|
@ -43,6 +45,12 @@ if "%~1" NEQ "" (
|
||||||
set /A tcc=tcc+1
|
set /A tcc=tcc+1
|
||||||
) else if "%%~a"=="release" (
|
) else if "%%~a"=="release" (
|
||||||
set ParamRelease=1
|
set ParamRelease=1
|
||||||
|
) else if "%%~a"=="qt5" (
|
||||||
|
set ParamQtVersion=5
|
||||||
|
set /A QtVersionCount+=1
|
||||||
|
) else if "%%~a"=="qt6" (
|
||||||
|
set ParamQtVersion=6
|
||||||
|
set /A QtVersionCount+=1
|
||||||
) else if "%%~a"=="debug" (
|
) else if "%%~a"=="debug" (
|
||||||
set ParamDebug=1
|
set ParamDebug=1
|
||||||
) else if "%%~a"=="autologin" (
|
) else if "%%~a"=="autologin" (
|
||||||
|
@ -55,8 +63,6 @@ if "%~1" NEQ "" (
|
||||||
set ParamWebui=1
|
set ParamWebui=1
|
||||||
) else if "%%~a"=="singlethread" (
|
) else if "%%~a"=="singlethread" (
|
||||||
set CoreCount=1
|
set CoreCount=1
|
||||||
) else if "%%~a"=="clang" (
|
|
||||||
set ParamClang=1
|
|
||||||
) else if "%%~a"=="indexing" (
|
) else if "%%~a"=="indexing" (
|
||||||
set ParamIndexing=1
|
set ParamIndexing=1
|
||||||
) else if "%%~a"=="friendserver" (
|
) else if "%%~a"=="friendserver" (
|
||||||
|
@ -80,6 +86,16 @@ if %tcc% NEQ 1 (
|
||||||
goto :usage
|
goto :usage
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if %QtVersionCount% GTR 1 (
|
||||||
|
echo Multiple Qt versions specified
|
||||||
|
goto :usage
|
||||||
|
)
|
||||||
|
|
||||||
|
if "%ParamQtVersion%" NEQ "5" if "%ParamQtVersion%" NEQ "6" (
|
||||||
|
echo Wrong Qt version specified
|
||||||
|
goto :usage
|
||||||
|
)
|
||||||
|
|
||||||
if "%RsToolchain%"=="mingw32" (
|
if "%RsToolchain%"=="mingw32" (
|
||||||
set RsArchitecture=x86
|
set RsArchitecture=x86
|
||||||
set RsMSYS2Architecture=i686
|
set RsMSYS2Architecture=i686
|
||||||
|
@ -96,24 +112,18 @@ if "%RsToolchain%"=="mingw32" (
|
||||||
set RsArchitecture=x64
|
set RsArchitecture=x64
|
||||||
set RsMSYS2Architecture=clang-x86_64
|
set RsMSYS2Architecture=clang-x86_64
|
||||||
set MSYSTEM=CLANG64
|
set MSYSTEM=CLANG64
|
||||||
set ParamClang=1
|
set ClangCompiler=1
|
||||||
) else if "%RsToolchain%"=="clang32" (
|
) else if "%RsToolchain%"=="clang32" (
|
||||||
set RsArchitecture=x86
|
set RsArchitecture=x86
|
||||||
set RsMSYS2Architecture=clang-i686
|
set RsMSYS2Architecture=clang-i686
|
||||||
set MSYSTEM=CLANG32
|
set MSYSTEM=CLANG32
|
||||||
set ParamClang=1
|
set ClangCompiler=1
|
||||||
) else if "%RsToolchain%"=="clangarm64" (
|
) else if "%RsToolchain%"=="clangarm64" (
|
||||||
set RsArchitecture=arm64
|
set RsArchitecture=arm64
|
||||||
set RsMSYS2Architecture=clang-aarch64
|
set RsMSYS2Architecture=clang-aarch64
|
||||||
set MSYSTEM=CLANGARM64
|
set MSYSTEM=CLANGARM64
|
||||||
)
|
)
|
||||||
|
|
||||||
if "%ParamClang%"=="1" (
|
|
||||||
set RsCompiler=Clang
|
|
||||||
) else (
|
|
||||||
set RsCompiler=GCC
|
|
||||||
)
|
|
||||||
|
|
||||||
if "%ParamRelease%"=="1" (
|
if "%ParamRelease%"=="1" (
|
||||||
if "%ParamDebug%"=="1" (
|
if "%ParamDebug%"=="1" (
|
||||||
echo.
|
echo.
|
||||||
|
@ -148,7 +158,7 @@ exit /B 0
|
||||||
|
|
||||||
:usage
|
:usage
|
||||||
echo.
|
echo.
|
||||||
echo Usage: 32^|64^|other release^|debug [autologin plugins webui singlethread clang indexing friendserver noupdate] ["CONFIG+=..."]
|
echo Usage: 32^|64^|other release^|debug qt5^|qt6 [autologin plugins webui singlethread clang indexing friendserver noupdate] ["CONFIG+=..."]
|
||||||
echo.
|
echo.
|
||||||
echo Mandatory parameter
|
echo Mandatory parameter
|
||||||
echo 32^|64 32-bit or 64-bit version (same as mingw32 or mingw64)
|
echo 32^|64 32-bit or 64-bit version (same as mingw32 or mingw64)
|
||||||
|
@ -156,13 +166,13 @@ echo Or you can specify any other toolchain supported by msys
|
||||||
echo mingw32^|mingw64^|clang32^|clang64^|ucrt64^|clangarm64
|
echo mingw32^|mingw64^|clang32^|clang64^|ucrt64^|clangarm64
|
||||||
echo More info: https://www.msys2.org/docs/environments
|
echo More info: https://www.msys2.org/docs/environments
|
||||||
echo release^|debug Build release or debug version
|
echo release^|debug Build release or debug version
|
||||||
|
echo qt5^|qt6 Build with Qt 5 (default) or Qt 6
|
||||||
echo.
|
echo.
|
||||||
echo Optional parameter (need clean when changed)
|
echo Optional parameter (need clean when changed)
|
||||||
echo autologin Build with autologin
|
echo autologin Build with autologin
|
||||||
echo plugins Build plugins
|
echo plugins Build plugins
|
||||||
echo webui Enable JsonAPI and pack webui files
|
echo webui Enable JsonAPI and pack webui files
|
||||||
echo singlethread Use only 1 thread for building
|
echo singlethread Use only 1 thread for building
|
||||||
echo clang Use clang compiler instead of GCC
|
|
||||||
echo indexing Build with deep channel and file indexing support
|
echo indexing Build with deep channel and file indexing support
|
||||||
echo friendserver Enable friendserver support
|
echo friendserver Enable friendserver support
|
||||||
echo noupdate Skip updating the libraries
|
echo noupdate Skip updating the libraries
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
call "%~dp0env-base.bat" %*
|
call "%~dp0env-base.bat" %*
|
||||||
if errorlevel 2 exit /B 2
|
if errorlevel 2 exit /B 2
|
||||||
if errorlevel 1 goto error_env
|
if errorlevel 1 exit /B 1
|
||||||
|
|
||||||
set BuildPath=%EnvRootPath%\builds
|
set BuildPath=%EnvRootPath%\builds
|
||||||
set DeployPath=%EnvRootPath%\deploy
|
set DeployPath=%EnvRootPath%\deploy
|
||||||
|
@ -8,14 +8,20 @@ set DeployPath=%EnvRootPath%\deploy
|
||||||
if not exist "%BuildPath%" mkdir "%BuildPath%"
|
if not exist "%BuildPath%" mkdir "%BuildPath%"
|
||||||
if not exist "%DeployPath%" mkdir "%DeployPath%"
|
if not exist "%DeployPath%" mkdir "%DeployPath%"
|
||||||
|
|
||||||
|
set QMakeCmd=
|
||||||
|
if "%ParamQtVersion%"=="5" set QMakeCmd=qmake
|
||||||
|
if "%ParamQtVersion%"=="6" set QMakeCmd=qmake6
|
||||||
|
if "%QMakeCmd%"=="" %cecho% error "Unknown Qt version %ParamQtVersion%." & exit /B 1
|
||||||
|
|
||||||
:: Get Qt version
|
:: Get Qt version
|
||||||
call "%ToolsPath%\get-qt-version.bat" QtVersion
|
call "%ToolsPath%\get-qt-version.bat" QtVersion %QMakeCmd%
|
||||||
|
if errorlevel 1 %cecho% error "Cannot get Qt version." & exit /B 1
|
||||||
if "%QtVersion%"=="" %cecho% error "Cannot get Qt version." & exit /B 1
|
if "%QtVersion%"=="" %cecho% error "Cannot get Qt version." & exit /B 1
|
||||||
|
|
||||||
set RsMinGWPath=%EnvMSYS2BasePath%\%RsToolchain%
|
set RsMinGWPath=%EnvMSYS2BasePath%\%RsToolchain%
|
||||||
|
|
||||||
set RsBuildPath=%BuildPath%\Qt-%QtVersion%-%RsToolchain%-%RsCompiler%-%RsBuildConfig%
|
set RsBuildPath=%BuildPath%\Qt-%QtVersion%-%RsToolchain%-%RsBuildConfig%
|
||||||
set RsDeployPath=%DeployPath%\Qt-%QtVersion%%RsType%-%RsToolchain%-%RsCompiler%-%RsBuildConfig%
|
set RsDeployPath=%DeployPath%\Qt-%QtVersion%-%RsToolchain%%RsType%-%RsBuildConfig%
|
||||||
set RsPackPath=%DeployPath%
|
set RsPackPath=%DeployPath%
|
||||||
set RsArchiveAdd=
|
set RsArchiveAdd=
|
||||||
set RsWebuiBuildPath=%RsBuildPath%\retroshare-webui\webui
|
set RsWebuiBuildPath=%RsBuildPath%\retroshare-webui\webui
|
||||||
|
|
|
@ -55,25 +55,28 @@ set RsVersion=%RsVersion.Major%.%RsVersion.Minor%.%RsVersion.Mini%
|
||||||
:: Check WMIC is available
|
:: Check WMIC is available
|
||||||
wmic.exe alias /? >nul 2>&1 || echo WMIC is not available.&& goto error
|
wmic.exe alias /? >nul 2>&1 || echo WMIC is not available.&& goto error
|
||||||
|
|
||||||
:: Use WMIC to retrieve date in format YYYYMMDD
|
:: Get date
|
||||||
set RsDate=
|
call "%ToolsPath%\get-rs-date.bat" "%SourcePath%" RsDate
|
||||||
for /f "tokens=2 delims==" %%I in ('wmic os get localdatetime /format:list') do set RsDate=%%I
|
if errorlevel 1 %cecho% error "Could not get date."& goto error
|
||||||
set RsDate=%RsDate:~0,4%%RsDate:~4,2%%RsDate:~6,2%
|
|
||||||
|
if "%RsDate%"=="" %cecho% error "Could not get date."& goto error
|
||||||
|
|
||||||
set QtMainVersion=%QtVersion:~0,1%
|
set QtMainVersion=%QtVersion:~0,1%
|
||||||
set QtSharePath=%RsMinGWPath%\share\qt%QtMainVersion%\
|
set QtSharePath=%RsMinGWPath%\share\qt%QtMainVersion%\
|
||||||
|
|
||||||
rem Qt 4 = QtSvg4.dll
|
rem Qt 4 = QtSvg4.dll
|
||||||
rem Qt 5 = Qt5Svg.dll
|
rem Qt 5 = Qt5Svg.dll
|
||||||
|
rem Qt 6 = Qt6Svg.dll
|
||||||
set QtMainVersion1=
|
set QtMainVersion1=
|
||||||
set QtMainVersion2=
|
set QtMainVersion2=
|
||||||
if "%QtMainVersion%"=="4" set QtMainVersion2=4
|
if "%QtMainVersion%"=="4" set QtMainVersion2=4
|
||||||
if "%QtMainVersion%"=="5" set QtMainVersion1=5
|
if "%QtMainVersion%"=="5" set QtMainVersion1=5
|
||||||
|
if "%QtMainVersion%"=="6" set QtMainVersion1=6
|
||||||
|
|
||||||
if "%RsBuildConfig%" NEQ "release" (
|
if "%RsBuildConfig%" NEQ "release" (
|
||||||
set Archive=%RsPackPath%\RetroShare-%RsVersion%-Windows-Portable-%RsDate%-%RsVersion.Extra%-%RsArchitecture%-msys2%RsType%%RsArchiveAdd%-%RsBuildConfig%.7z
|
set Archive=%RsPackPath%\RetroShare-%RsVersion%-Windows-Portable-%RsDate%-%RsVersion.Extra%-Qt-%QtVersion%-%RsToolchain%-msys2%RsType%%RsArchiveAdd%-%RsBuildConfig%.7z
|
||||||
) else (
|
) else (
|
||||||
set Archive=%RsPackPath%\RetroShare-%RsVersion%-Windows-Portable-%RsDate%-%RsVersion.Extra%-%RsArchitecture%-msys2%RsType%%RsArchiveAdd%.7z
|
set Archive=%RsPackPath%\RetroShare-%RsVersion%-Windows-Portable-%RsDate%-%RsVersion.Extra%-Qt-%QtVersion%-%RsToolchain%-msys2%RsType%%RsArchiveAdd%.7z
|
||||||
)
|
)
|
||||||
|
|
||||||
if exist "%Archive%" del /Q "%Archive%"
|
if exist "%Archive%" del /Q "%Archive%"
|
||||||
|
@ -81,7 +84,7 @@ if exist "%Archive%" del /Q "%Archive%"
|
||||||
:: Create deploy path
|
:: Create deploy path
|
||||||
mkdir "%RsDeployPath%"
|
mkdir "%RsDeployPath%"
|
||||||
|
|
||||||
title Pack - %SourceName%%RsType%-%RsBuildConfig% [copy files]
|
title Pack - %SourceName%%RsType%-%RsBuildConfig% Qt-%QtVersion% %RsToolchain% [copy files]
|
||||||
|
|
||||||
set ExtensionsFile=%SourcePath%\libretroshare\src\rsserver\rsinit.cc
|
set ExtensionsFile=%SourcePath%\libretroshare\src\rsserver\rsinit.cc
|
||||||
set Extensions=
|
set Extensions=
|
||||||
|
@ -118,18 +121,24 @@ for /D %%D in ("%RsBuildPath%\plugins\*") do (
|
||||||
echo copy Qt DLL's
|
echo copy Qt DLL's
|
||||||
copy "%RsMinGWPath%\bin\Qt%QtMainVersion1%Svg%QtMainVersion2%.dll" "%RsDeployPath%" %Quite%
|
copy "%RsMinGWPath%\bin\Qt%QtMainVersion1%Svg%QtMainVersion2%.dll" "%RsDeployPath%" %Quite%
|
||||||
|
|
||||||
if "%QtMainVersion%"=="5" (
|
if %QtMainVersion% GEQ 5 (
|
||||||
mkdir "%RsDeployPath%\platforms"
|
mkdir "%RsDeployPath%\platforms"
|
||||||
copy "%QtSharePath%\plugins\platforms\qwindows.dll" "%RsDeployPath%\platforms" %Quite%
|
copy "%QtSharePath%\plugins\platforms\qwindows.dll" "%RsDeployPath%\platforms" %Quite%
|
||||||
|
)
|
||||||
|
|
||||||
|
if "%QtMainVersion%"=="5" (
|
||||||
mkdir "%RsDeployPath%\audio"
|
mkdir "%RsDeployPath%\audio"
|
||||||
copy "%QtSharePath%\plugins\audio\qtaudio_windows.dll" "%RsDeployPath%\audio" %Quite%
|
copy "%QtSharePath%\plugins\audio\qtaudio_windows.dll" "%RsDeployPath%\audio" %Quite%
|
||||||
)
|
)
|
||||||
|
|
||||||
if exist "%QtSharePath%\plugins\styles\qwindowsvistastyle.dll" (
|
echo copy styles
|
||||||
echo copy styles
|
mkdir "%RsDeployPath%\styles" %Quite%
|
||||||
mkdir "%RsDeployPath%\styles" %Quite%
|
if "%QtMainVersion%"=="5" (
|
||||||
copy "%QtSharePath%\plugins\styles\qwindowsvistastyle.dll" "%RsDeployPath%\styles" %Quite%
|
copy "%QtSharePath%\plugins\styles\qwindowsvistastyle.dll" "%RsDeployPath%\styles" %Quite%
|
||||||
)
|
)
|
||||||
|
if "%QtMainVersion%"=="6" (
|
||||||
|
copy "%QtSharePath%\plugins\styles\qmodernwindowsstyle.dll" "%RsDeployPath%\styles" %Quite%
|
||||||
|
)
|
||||||
|
|
||||||
copy "%QtSharePath%\plugins\imageformats\*.dll" "%RsDeployPath%\imageformats" %Quite%
|
copy "%QtSharePath%\plugins\imageformats\*.dll" "%RsDeployPath%\imageformats" %Quite%
|
||||||
del /Q "%RsDeployPath%\imageformats\*d?.dll" %Quite%
|
del /Q "%RsDeployPath%\imageformats\*d?.dll" %Quite%
|
||||||
|
@ -170,11 +179,13 @@ xcopy /S "%SourcePath%\retroshare-gui\src\license" "%RsDeployPath%\license" %Qui
|
||||||
echo copy translation
|
echo copy translation
|
||||||
copy "%SourcePath%\retroshare-gui\src\translations\qt_tr.qm" "%RsDeployPath%\translations" %Quite%
|
copy "%SourcePath%\retroshare-gui\src\translations\qt_tr.qm" "%RsDeployPath%\translations" %Quite%
|
||||||
copy "%QtSharePath%\translations\qt_*.qm" "%RsDeployPath%\translations" %Quite%
|
copy "%QtSharePath%\translations\qt_*.qm" "%RsDeployPath%\translations" %Quite%
|
||||||
if "%QtMainVersion%"=="5" (
|
if "%QtMainVersion%"=="6" (
|
||||||
copy "%QtSharePath%\translations\qtbase_*.qm" "%RsDeployPath%\translations" %Quite%
|
copy "%QtSharePath%\translations\qtbase_*.qm" "%RsDeployPath%\translations" %Quite%
|
||||||
copy "%QtSharePath%\translations\qtscript_*.qm" "%RsDeployPath%\translations" %Quite%
|
|
||||||
copy "%QtSharePath%\translations\qtquick1_*.qm" "%RsDeployPath%\translations" %Quite%
|
copy "%QtSharePath%\translations\qtquick1_*.qm" "%RsDeployPath%\translations" %Quite%
|
||||||
copy "%QtSharePath%\translations\qtmultimedia_*.qm" "%RsDeployPath%\translations" %Quite%
|
copy "%QtSharePath%\translations\qtmultimedia_*.qm" "%RsDeployPath%\translations" %Quite%
|
||||||
|
)
|
||||||
|
if "%QtMainVersion%"=="5" (
|
||||||
|
copy "%QtSharePath%\translations\qtscript_*.qm" "%RsDeployPath%\translations" %Quite%
|
||||||
copy "%QtSharePath%\translations\qtxmlpatterns_*.qm" "%RsDeployPath%\translations" %Quite%
|
copy "%QtSharePath%\translations\qtxmlpatterns_*.qm" "%RsDeployPath%\translations" %Quite%
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -199,7 +210,7 @@ if "%ParamWebui%"=="1" (
|
||||||
)
|
)
|
||||||
|
|
||||||
rem pack files
|
rem pack files
|
||||||
title Pack - %SourceName%%RsType%-%RsBuildConfig% [pack files]
|
title Pack - %SourceName%%RsType%-%RsBuildConfig% Qt-%QtVersion% %RsToolchain% [pack files]
|
||||||
|
|
||||||
"%EnvSevenZipExe%" a -mx=9 -t7z "%Archive%" "%RsDeployPath%\*"
|
"%EnvSevenZipExe%" a -mx=9 -t7z "%Archive%" "%RsDeployPath%\*"
|
||||||
|
|
||||||
|
|
|
@ -16,7 +16,7 @@ if "%~1"=="clean" (
|
||||||
goto exit
|
goto exit
|
||||||
)
|
)
|
||||||
|
|
||||||
set MSYS2Version=20241208
|
set MSYS2Version=20250622
|
||||||
|
|
||||||
set MSYS2Install=msys2-base-x86_64-%MSYS2Version%.sfx.exe
|
set MSYS2Install=msys2-base-x86_64-%MSYS2Version%.sfx.exe
|
||||||
set MSYS2Url=https://github.com/msys2/msys2-installer/releases/download/%MSYS2Version:~0,4%-%MSYS2Version:~4,2%-%MSYS2Version:~6,2%/%MSYS2Install%
|
set MSYS2Url=https://github.com/msys2/msys2-installer/releases/download/%MSYS2Version:~0,4%-%MSYS2Version:~4,2%-%MSYS2Version:~6,2%/%MSYS2Install%
|
||||||
|
|
|
@ -9,6 +9,7 @@
|
||||||
;!define REVISION ""
|
;!define REVISION ""
|
||||||
;!define DEPLOYDIR ""
|
;!define DEPLOYDIR ""
|
||||||
;!define ARCHITECTURE ""
|
;!define ARCHITECTURE ""
|
||||||
|
;!define TOOLCHAIN ""
|
||||||
|
|
||||||
# Optional defines
|
# Optional defines
|
||||||
;!define OUTDIR ""
|
;!define OUTDIR ""
|
||||||
|
@ -21,6 +22,9 @@
|
||||||
!ifndef ARCHITECTURE
|
!ifndef ARCHITECTURE
|
||||||
!error "ARCHITECTURE is not defined"
|
!error "ARCHITECTURE is not defined"
|
||||||
!endif
|
!endif
|
||||||
|
!ifndef TOOLCHAIN
|
||||||
|
!error "TOOLCHAIN is not defined"
|
||||||
|
!endif
|
||||||
|
|
||||||
# Check optional defines
|
# Check optional defines
|
||||||
!ifdef OUTDIR
|
!ifdef OUTDIR
|
||||||
|
@ -72,7 +76,7 @@ ${!defineifexist} TOR_EXISTS "${DEPLOYDIR}\tor.exe"
|
||||||
# Main Install settings
|
# Main Install settings
|
||||||
Name "${APPNAMEANDVERSION}"
|
Name "${APPNAMEANDVERSION}"
|
||||||
InstallDirRegKey HKLM "Software\${APPNAME}" ""
|
InstallDirRegKey HKLM "Software\${APPNAME}" ""
|
||||||
OutFile "${OUTDIR_}RetroShare-${VERSION}-${Date}-${REVISION}-${ARCHITECTURE}${RSTYPE}${INSTALLERADD}-setup.exe"
|
OutFile "${OUTDIR_}RetroShare-${VERSION}-${Date}-${REVISION}-Qt-${QTVERSION}-${TOOLCHAIN}-msys2${RSTYPE}${INSTALLERADD}-setup.exe"
|
||||||
BrandingText "${APPNAMEANDVERSION}"
|
BrandingText "${APPNAMEANDVERSION}"
|
||||||
RequestExecutionlevel highest
|
RequestExecutionlevel highest
|
||||||
# Use compression
|
# Use compression
|
|
@ -44,8 +44,9 @@ Run the scripts in this order:
|
||||||
**Always delete the build artifacts folder if you enable or disable extra features after the build command: <sourcefolder>-msys2\deploy\builds**
|
**Always delete the build artifacts folder if you enable or disable extra features after the build command: <sourcefolder>-msys2\deploy\builds**
|
||||||
|
|
||||||
* Mandatory
|
* Mandatory
|
||||||
* 32 or 64: 32 or 64 bit version
|
* 32, 64, mingw32, mingw64, ucrt64, clang32, clang64 or clangarm64: It sets the msys2 build environment to the selected value. 32 is a shortcut for mingw32, 64 is a shortcut for mingw64. Default in build.bat and buil-tor.bat is 64.
|
||||||
* release or debug: normally you would like to use the release option
|
* release or debug: normally you would like to use the release option
|
||||||
|
* qt5 or qt6: build with Qt 5 (default) or Qt 6
|
||||||
* Extra features (optional)
|
* Extra features (optional)
|
||||||
* autologin: enable autologin
|
* autologin: enable autologin
|
||||||
* plugins: build plugins
|
* plugins: build plugins
|
||||||
|
@ -55,7 +56,6 @@ Run the scripts in this order:
|
||||||
* "CONFIG+=..." enable other extra compile time features, you can find the almost complete list in file *<sourcefolder>\retroshare.pri*
|
* "CONFIG+=..." enable other extra compile time features, you can find the almost complete list in file *<sourcefolder>\retroshare.pri*
|
||||||
* For fixing compile problems (optional)
|
* For fixing compile problems (optional)
|
||||||
* singlethread: use only 1 thread for building, slow but useful if you don't find the error message in the console
|
* singlethread: use only 1 thread for building, slow but useful if you don't find the error message in the console
|
||||||
* clang: use clang compiler instead of GCC
|
|
||||||
* noupdate: skip the msys2 update step, sometimes some msys2 packages are broken, you can manually switch back to the older package, and this option will prevent updating to the broken version again
|
* noupdate: skip the msys2 update step, sometimes some msys2 packages are broken, you can manually switch back to the older package, and this option will prevent updating to the broken version again
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
:: Usage:
|
:: Usage:
|
||||||
:: call get-qt-version.bat variable
|
:: call get-qt-version.bat variable qmake
|
||||||
|
|
||||||
setlocal
|
setlocal
|
||||||
|
|
||||||
|
@ -10,9 +10,16 @@ if "%Var%"=="" (
|
||||||
exit /B 1
|
exit /B 1
|
||||||
)
|
)
|
||||||
|
|
||||||
|
set QMakeCmd=%~2
|
||||||
|
if "%QMakeCmd%"=="" (
|
||||||
|
echo.
|
||||||
|
echo Parameter error.
|
||||||
|
exit /B 1
|
||||||
|
)
|
||||||
|
|
||||||
set QtVersion=
|
set QtVersion=
|
||||||
|
|
||||||
%EnvMSYS2Cmd% "qmake -version" >"%~dp0qtversion.tmp"
|
%EnvMSYS2Cmd% "%QMakeCmd% -version" >"%~dp0qtversion.tmp"
|
||||||
for /F "tokens=1,2,3,4" %%A in (%~sdp0qtversion.tmp) do (
|
for /F "tokens=1,2,3,4" %%A in (%~sdp0qtversion.tmp) do (
|
||||||
if "%%A"=="Using" (
|
if "%%A"=="Using" (
|
||||||
set QtVersion=%%D
|
set QtVersion=%%D
|
||||||
|
|
32
build_scripts/Windows-msys2/tools/get-rs-date.bat
Normal file
32
build_scripts/Windows-msys2/tools/get-rs-date.bat
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
REM Usage:
|
||||||
|
REM call get-rs-date.bat SourcePath Variable
|
||||||
|
|
||||||
|
setlocal
|
||||||
|
|
||||||
|
set SourcePath=%~1
|
||||||
|
set Variable=%~2
|
||||||
|
if "%Variable%"=="" (
|
||||||
|
echo.
|
||||||
|
echo Parameter error
|
||||||
|
exit /B 1
|
||||||
|
)
|
||||||
|
|
||||||
|
:: Check git executable
|
||||||
|
set GitPath=
|
||||||
|
call "%~dp0find-in-path.bat" GitPath git.exe
|
||||||
|
if "%GitPath%"=="" (
|
||||||
|
echo.
|
||||||
|
echo Git executable not found in PATH.
|
||||||
|
exit /B 1
|
||||||
|
)
|
||||||
|
|
||||||
|
set Date=
|
||||||
|
|
||||||
|
pushd "%SourcePath%"
|
||||||
|
rem This doesn't work: git log -1 --date=format:"%Y%m%d" --format="%ad"
|
||||||
|
for /F "tokens=1,2,3* delims=-" %%A in ('git log -1 --date^=short --format^="%%ad"') do set Date=%%A%%B%%C
|
||||||
|
popd
|
||||||
|
|
||||||
|
:exit
|
||||||
|
endlocal & set %Variable%=%Date%
|
||||||
|
exit /B 0
|
35
build_scripts/Windows/Windows-QtCreator-InstallGuide.md
Normal file
35
build_scripts/Windows/Windows-QtCreator-InstallGuide.md
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
## Build Retroshare with QtCreator & Qt 6.9 on Windows
|
||||||
|
|
||||||
|
### Qt 6.9 Installation
|
||||||
|
|
||||||
|
Download Qt 6.9 from: https://www.qt.io/download-dev
|
||||||
|
|
||||||
|
Run the installer and install Qt 6.9
|
||||||
|
|
||||||
|
Add GCC.exe to Path
|
||||||
|
|
||||||
|
C:\Qt\Tools\mingw1310_64\bin
|
||||||
|
|
||||||
|
Compile the external libs start build-libs.bat:
|
||||||
|
|
||||||
|
Open Qt Command Prompt:
|
||||||
|
|
||||||
|
cd C:\Users\User\Documents\GitHub\RetroShare\build_scripts\Windows\build-libs
|
||||||
|
|
||||||
|
Type (this will take some time to build all libs):
|
||||||
|
|
||||||
|
build-libs.bat
|
||||||
|
|
||||||
|
Open Qt Creator
|
||||||
|
|
||||||
|
Open project -> RetroShare.pro
|
||||||
|
|
||||||
|
After Project loaded, go to:
|
||||||
|
|
||||||
|
Projects->Build->Build Steps->Additional arguments:
|
||||||
|
|
||||||
|
Add EXTERNAL_LIB_DIR:
|
||||||
|
|
||||||
|
"EXTERNAL_LIB_DIR=%{sourceDir}\..\RetroShare-env\build-libs\gcc-13.1.0\x64\libs"
|
||||||
|
|
||||||
|
After done, Build Project
|
|
@ -2,17 +2,19 @@ ZLIB_VERSION=1.2.11
|
||||||
BZIP2_VERSION=1.0.8
|
BZIP2_VERSION=1.0.8
|
||||||
MINIUPNPC_VERSION=2.2.3
|
MINIUPNPC_VERSION=2.2.3
|
||||||
OPENSSL_VERSION=1.1.1w
|
OPENSSL_VERSION=1.1.1w
|
||||||
SPEEX_VERSION=1.2.0
|
SPEEX_VERSION=1.2.1
|
||||||
SPEEXDSP_VERSION=1.2.0
|
SPEEXDSP_VERSION=1.2.1
|
||||||
LIBXML2_VERSION=2.9.12
|
LIBXML2_MAIN_VERSION=2.14
|
||||||
LIBXSLT_VERSION=1.1.34
|
LIBXML2_VERSION=$(LIBXML2_MAIN_VERSION).5
|
||||||
CURL_VERSION=7.81.0
|
LIBXSLT_MAIN_VERSION=1.1
|
||||||
|
LIBXSLT_VERSION=$(LIBXSLT_MAIN_VERSION).43
|
||||||
|
CURL_VERSION=8.9.1
|
||||||
TCL_VERSION=8.6.10
|
TCL_VERSION=8.6.10
|
||||||
SQLCIPHER_VERSION=4.5.0
|
SQLCIPHER_VERSION=4.5.0
|
||||||
LIBMICROHTTPD_VERSION=0.9.75
|
FFMPEG_VERSION=4.4.6
|
||||||
FFMPEG_VERSION=4.4
|
|
||||||
RAPIDJSON_VERSION=1.1.0
|
RAPIDJSON_VERSION=1.1.0
|
||||||
XAPIAN_VERSION=1.4.19
|
XAPIAN_VERSION=1.4.29
|
||||||
|
ASIO_VERSION=1-34-2
|
||||||
#RNP_VERSION=0.17.1
|
#RNP_VERSION=0.17.1
|
||||||
|
|
||||||
# libaries for rnp
|
# libaries for rnp
|
||||||
|
@ -23,7 +25,7 @@ DOWNLOAD_PATH?=download
|
||||||
BUILD_PATH=build
|
BUILD_PATH=build
|
||||||
LIBS_PATH?=libs
|
LIBS_PATH?=libs
|
||||||
|
|
||||||
all: dirs zlib bzip2 miniupnpc openssl speex speexdsp libxml2 libxslt curl sqlcipher libmicrohttpd ffmpeg rapidjson xapian jsonc botan copylibs
|
all: dirs zlib bzip2 miniupnpc openssl speex speexdsp libxml curl sqlcipher ffmpeg rapidjson xapian jsonc botan asio copylibs
|
||||||
#rnp
|
#rnp
|
||||||
|
|
||||||
download: \
|
download: \
|
||||||
|
@ -33,13 +35,12 @@ download: \
|
||||||
$(DOWNLOAD_PATH)/openssl-$(OPENSSL_VERSION).tar.gz \
|
$(DOWNLOAD_PATH)/openssl-$(OPENSSL_VERSION).tar.gz \
|
||||||
$(DOWNLOAD_PATH)/speex-$(SPEEX_VERSION).tar.gz \
|
$(DOWNLOAD_PATH)/speex-$(SPEEX_VERSION).tar.gz \
|
||||||
$(DOWNLOAD_PATH)/speexdsp-$(SPEEXDSP_VERSION).tar.gz \
|
$(DOWNLOAD_PATH)/speexdsp-$(SPEEXDSP_VERSION).tar.gz \
|
||||||
$(DOWNLOAD_PATH)/libxml2-$(LIBXML2_VERSION).tar.gz \
|
$(DOWNLOAD_PATH)/libxml2-$(LIBXML2_VERSION).tar.xz \
|
||||||
$(DOWNLOAD_PATH)/libxslt-$(LIBXSLT_VERSION).tar.gz \
|
$(DOWNLOAD_PATH)/libxslt-$(LIBXSLT_VERSION).tar.xz \
|
||||||
$(DOWNLOAD_PATH)/curl-$(CURL_VERSION).tar.gz \
|
$(DOWNLOAD_PATH)/curl-$(CURL_VERSION).tar.gz \
|
||||||
$(DOWNLOAD_PATH)/tcl$(TCL_VERSION)-src.tar.gz \
|
$(DOWNLOAD_PATH)/tcl$(TCL_VERSION)-src.tar.gz \
|
||||||
$(DOWNLOAD_PATH)/sqlcipher-$(SQLCIPHER_VERSION).tar.gz \
|
$(DOWNLOAD_PATH)/sqlcipher-$(SQLCIPHER_VERSION).tar.gz \
|
||||||
$(DOWNLOAD_PATH)/libmicrohttpd-$(LIBMICROHTTPD_VERSION).tar.gz \
|
$(DOWNLOAD_PATH)/ffmpeg-$(FFMPEG_VERSION).tar.xz \
|
||||||
$(DOWNLOAD_PATH)/ffmpeg-$(FFMPEG_VERSION).tar.gz \
|
|
||||||
$(DOWNLOAD_PATH)/rapidjson-$(RAPIDJSON_VERSION).tar.gz \
|
$(DOWNLOAD_PATH)/rapidjson-$(RAPIDJSON_VERSION).tar.gz \
|
||||||
$(DOWNLOAD_PATH)/xapian-core-$(XAPIAN_VERSION).tar.xz
|
$(DOWNLOAD_PATH)/xapian-core-$(XAPIAN_VERSION).tar.xz
|
||||||
|
|
||||||
|
@ -62,8 +63,7 @@ $(BUILD_PATH)/zlib-$(ZLIB_VERSION): $(DOWNLOAD_PATH)/zlib-$(ZLIB_VERSION).tar.gz
|
||||||
rm -r -f $(BUILD_PATH)/zlib-*
|
rm -r -f $(BUILD_PATH)/zlib-*
|
||||||
tar xvf $(DOWNLOAD_PATH)/zlib-$(ZLIB_VERSION).tar.gz
|
tar xvf $(DOWNLOAD_PATH)/zlib-$(ZLIB_VERSION).tar.gz
|
||||||
# build
|
# build
|
||||||
cd zlib-$(ZLIB_VERSION) && make -f win32/Makefile.gcc libz.a
|
cd zlib-$(ZLIB_VERSION) && make -j -f win32/Makefile.gcc libz.a
|
||||||
cd zlib-$(ZLIB_VERSION) && make
|
|
||||||
# copy files
|
# copy files
|
||||||
mkdir -p $(BUILD_PATH)/zlib-$(ZLIB_VERSION).tmp/include
|
mkdir -p $(BUILD_PATH)/zlib-$(ZLIB_VERSION).tmp/include
|
||||||
cp zlib-$(ZLIB_VERSION)/zlib.h $(BUILD_PATH)/zlib-$(ZLIB_VERSION).tmp/include/
|
cp zlib-$(ZLIB_VERSION)/zlib.h $(BUILD_PATH)/zlib-$(ZLIB_VERSION).tmp/include/
|
||||||
|
@ -85,7 +85,7 @@ $(BUILD_PATH)/bzip2-$(BZIP2_VERSION): $(DOWNLOAD_PATH)/bzip2-$(BZIP2_VERSION).ta
|
||||||
tar xvf $(DOWNLOAD_PATH)/bzip2-$(BZIP2_VERSION).tar.gz
|
tar xvf $(DOWNLOAD_PATH)/bzip2-$(BZIP2_VERSION).tar.gz
|
||||||
# build
|
# build
|
||||||
#cd bzip2-$(BZIP2_VERSION) && make install PREFIX="`pwd`/../$(BUILD_PATH)"
|
#cd bzip2-$(BZIP2_VERSION) && make install PREFIX="`pwd`/../$(BUILD_PATH)"
|
||||||
cd bzip2-$(BZIP2_VERSION) && make
|
cd bzip2-$(BZIP2_VERSION) && make -j
|
||||||
# copy files
|
# copy files
|
||||||
mkdir -p $(BUILD_PATH)/bzip2-$(BZIP2_VERSION).tmp/include
|
mkdir -p $(BUILD_PATH)/bzip2-$(BZIP2_VERSION).tmp/include
|
||||||
cp bzip2-$(BZIP2_VERSION)/bzlib.h $(BUILD_PATH)/bzip2-$(BZIP2_VERSION).tmp/include/
|
cp bzip2-$(BZIP2_VERSION)/bzlib.h $(BUILD_PATH)/bzip2-$(BZIP2_VERSION).tmp/include/
|
||||||
|
@ -105,7 +105,7 @@ $(BUILD_PATH)/miniupnpc-$(MINIUPNPC_VERSION): $(DOWNLOAD_PATH)/miniupnpc-$(MINIU
|
||||||
rm -r -f $(BUILD_PATH)/miniupnpc-*
|
rm -r -f $(BUILD_PATH)/miniupnpc-*
|
||||||
tar xvf $(DOWNLOAD_PATH)/miniupnpc-$(MINIUPNPC_VERSION).tar.gz
|
tar xvf $(DOWNLOAD_PATH)/miniupnpc-$(MINIUPNPC_VERSION).tar.gz
|
||||||
# build
|
# build
|
||||||
cd miniupnpc-$(MINIUPNPC_VERSION) && export CC=gcc && export PATH=.:$$PATH && make -f Makefile.mingw libminiupnpc.a miniupnpc.dll
|
cd miniupnpc-$(MINIUPNPC_VERSION) && export CC=gcc && export PATH=.:$$PATH && make -j -f Makefile.mingw libminiupnpc.a miniupnpc.dll
|
||||||
# copy files
|
# copy files
|
||||||
mkdir -p $(BUILD_PATH)/miniupnpc-$(MINIUPNPC_VERSION).tmp/include/miniupnpc
|
mkdir -p $(BUILD_PATH)/miniupnpc-$(MINIUPNPC_VERSION).tmp/include/miniupnpc
|
||||||
cp miniupnpc-$(MINIUPNPC_VERSION)/include/*.h $(BUILD_PATH)/miniupnpc-$(MINIUPNPC_VERSION).tmp/include/miniupnpc/
|
cp miniupnpc-$(MINIUPNPC_VERSION)/include/*.h $(BUILD_PATH)/miniupnpc-$(MINIUPNPC_VERSION).tmp/include/miniupnpc/
|
||||||
|
@ -130,7 +130,7 @@ $(BUILD_PATH)/openssl-$(OPENSSL_VERSION): $(DOWNLOAD_PATH)/openssl-$(OPENSSL_VER
|
||||||
#cd openssl-$(OPENSSL_VERSION) && ./config --prefix="`pwd`/../$(BUILD_PATH)"
|
#cd openssl-$(OPENSSL_VERSION) && ./config --prefix="`pwd`/../$(BUILD_PATH)"
|
||||||
#cd openssl-$(OPENSSL_VERSION) && make install
|
#cd openssl-$(OPENSSL_VERSION) && make install
|
||||||
cd openssl-$(OPENSSL_VERSION) && ./config shared
|
cd openssl-$(OPENSSL_VERSION) && ./config shared
|
||||||
cd openssl-$(OPENSSL_VERSION) && make
|
cd openssl-$(OPENSSL_VERSION) && make -j
|
||||||
# copy files
|
# copy files
|
||||||
mkdir -p $(BUILD_PATH)/openssl-$(OPENSSL_VERSION).tmp/include/openssl
|
mkdir -p $(BUILD_PATH)/openssl-$(OPENSSL_VERSION).tmp/include/openssl
|
||||||
cp openssl-$(OPENSSL_VERSION)/include/openssl/*.h $(BUILD_PATH)/openssl-$(OPENSSL_VERSION).tmp/include/openssl/
|
cp openssl-$(OPENSSL_VERSION)/include/openssl/*.h $(BUILD_PATH)/openssl-$(OPENSSL_VERSION).tmp/include/openssl/
|
||||||
|
@ -159,7 +159,7 @@ $(BUILD_PATH)/speex-$(SPEEX_VERSION): $(DOWNLOAD_PATH)/speex-$(SPEEX_VERSION).ta
|
||||||
# build
|
# build
|
||||||
cd speex-$(SPEEX_VERSION) && ./configure
|
cd speex-$(SPEEX_VERSION) && ./configure
|
||||||
#cd speex-$(SPEEX_VERSION) && make install exec_prefix="`pwd`/../$(BUILD_PATH)"
|
#cd speex-$(SPEEX_VERSION) && make install exec_prefix="`pwd`/../$(BUILD_PATH)"
|
||||||
cd speex-$(SPEEX_VERSION) && make
|
cd speex-$(SPEEX_VERSION) && make -j
|
||||||
# copy files
|
# copy files
|
||||||
mkdir -p $(BUILD_PATH)/speex-$(SPEEX_VERSION).tmp/include/speex
|
mkdir -p $(BUILD_PATH)/speex-$(SPEEX_VERSION).tmp/include/speex
|
||||||
cp speex-$(SPEEX_VERSION)/include/speex/*.h $(BUILD_PATH)/speex-$(SPEEX_VERSION).tmp/include/speex/
|
cp speex-$(SPEEX_VERSION)/include/speex/*.h $(BUILD_PATH)/speex-$(SPEEX_VERSION).tmp/include/speex/
|
||||||
|
@ -180,7 +180,7 @@ $(BUILD_PATH)/speexdsp-$(SPEEXDSP_VERSION): $(DOWNLOAD_PATH)/speexdsp-$(SPEEXDSP
|
||||||
tar xvf $(DOWNLOAD_PATH)/speexdsp-$(SPEEXDSP_VERSION).tar.gz
|
tar xvf $(DOWNLOAD_PATH)/speexdsp-$(SPEEXDSP_VERSION).tar.gz
|
||||||
# build
|
# build
|
||||||
cd speexdsp-$(SPEEXDSP_VERSION) && ./configure
|
cd speexdsp-$(SPEEXDSP_VERSION) && ./configure
|
||||||
cd speexdsp-$(SPEEXDSP_VERSION) && make
|
cd speexdsp-$(SPEEXDSP_VERSION) && make -j
|
||||||
# copy files
|
# copy files
|
||||||
mkdir -p $(BUILD_PATH)/speexdsp-$(SPEEXDSP_VERSION).tmp/include/speex
|
mkdir -p $(BUILD_PATH)/speexdsp-$(SPEEXDSP_VERSION).tmp/include/speex
|
||||||
cp speexdsp-$(SPEEXDSP_VERSION)/include/speex/*.h $(BUILD_PATH)/speexdsp-$(SPEEXDSP_VERSION).tmp/include/speex/
|
cp speexdsp-$(SPEEXDSP_VERSION)/include/speex/*.h $(BUILD_PATH)/speexdsp-$(SPEEXDSP_VERSION).tmp/include/speex/
|
||||||
|
@ -190,50 +190,52 @@ $(BUILD_PATH)/speexdsp-$(SPEEXDSP_VERSION): $(DOWNLOAD_PATH)/speexdsp-$(SPEEXDSP
|
||||||
rm -r -f speexdsp-$(SPEEXDSP_VERSION)
|
rm -r -f speexdsp-$(SPEEXDSP_VERSION)
|
||||||
mv $(BUILD_PATH)/speexdsp-$(SPEEXDSP_VERSION).tmp $(BUILD_PATH)/speexdsp-$(SPEEXDSP_VERSION)
|
mv $(BUILD_PATH)/speexdsp-$(SPEEXDSP_VERSION).tmp $(BUILD_PATH)/speexdsp-$(SPEEXDSP_VERSION)
|
||||||
|
|
||||||
libxml2: $(BUILD_PATH)/libxml2-$(LIBXML2_VERSION)
|
libxml: \
|
||||||
|
$(BUILD_PATH)/libxml2-$(LIBXML2_VERSION) \
|
||||||
|
$(BUILD_PATH)/libxslt-$(LIBXSLT_VERSION)
|
||||||
|
|
||||||
$(DOWNLOAD_PATH)/libxml2-$(LIBXML2_VERSION).tar.gz:
|
$(DOWNLOAD_PATH)/libxml2-$(LIBXML2_VERSION).tar.xz:
|
||||||
wget ftp://xmlsoft.org/libxml2/libxml2-$(LIBXML2_VERSION).tar.gz -O $(DOWNLOAD_PATH)/libxml2-$(LIBXML2_VERSION).tar.gz
|
wget --no-check-certificate https://download.gnome.org/sources/libxml2/$(LIBXML2_MAIN_VERSION)/libxml2-$(LIBXML2_VERSION).tar.xz -O $(DOWNLOAD_PATH)/libxml2-$(LIBXML2_VERSION).tar.xz
|
||||||
|
|
||||||
$(BUILD_PATH)/libxml2-$(LIBXML2_VERSION): $(DOWNLOAD_PATH)/libxml2-$(LIBXML2_VERSION).tar.gz
|
$(DOWNLOAD_PATH)/libxslt-$(LIBXSLT_VERSION).tar.xz:
|
||||||
# prepare
|
wget --no-check-certificate https://download.gnome.org/sources/libxslt/$(LIBXSLT_MAIN_VERSION)/libxslt-$(LIBXSLT_VERSION).tar.xz -O $(DOWNLOAD_PATH)/libxslt-$(LIBXSLT_VERSION).tar.xz
|
||||||
|
|
||||||
|
$(BUILD_PATH)/libxml2-$(LIBXML2_VERSION) $(BUILD_PATH)/libxslt-$(LIBXSLT_VERSION): \
|
||||||
|
$(DOWNLOAD_PATH)/libxml2-$(LIBXML2_VERSION).tar.xz \
|
||||||
|
$(DOWNLOAD_PATH)/libxslt-$(LIBXSLT_VERSION).tar.xz
|
||||||
|
# libxml2: prepare
|
||||||
|
pacman --needed --noconfirm -S python3 pkg-config
|
||||||
rm -r -f $(BUILD_PATH)/libxml2-*
|
rm -r -f $(BUILD_PATH)/libxml2-*
|
||||||
tar xvf $(DOWNLOAD_PATH)/libxml2-$(LIBXML2_VERSION).tar.gz
|
tar xvf $(DOWNLOAD_PATH)/libxml2-$(LIBXML2_VERSION).tar.xz
|
||||||
# build
|
# libxslt: prepare
|
||||||
|
rm -r -f $(BUILD_PATH)/libxslt-*
|
||||||
|
tar xvf $(DOWNLOAD_PATH)/libxml2-$(LIBXML2_VERSION).tar.xz
|
||||||
|
tar xvf $(DOWNLOAD_PATH)/libxslt-$(LIBXSLT_VERSION).tar.xz
|
||||||
|
# libxml2: build
|
||||||
cd libxml2-$(LIBXML2_VERSION) && ./configure --without-iconv -enable-shared=no
|
cd libxml2-$(LIBXML2_VERSION) && ./configure --without-iconv -enable-shared=no
|
||||||
#cd libxml2-$(LIBXML2_VERSION) && make install exec_prefix="`pwd`/../$(BUILD_PATH)"
|
#cd libxml2-$(LIBXML2_VERSION) && make install exec_prefix="`pwd`/../$(BUILD_PATH)"
|
||||||
cd libxml2-$(LIBXML2_VERSION) && make
|
cd libxml2-$(LIBXML2_VERSION) && make -j libxml2.la
|
||||||
# copy files
|
# libxslt: build
|
||||||
|
cd libxslt-$(LIBXSLT_VERSION) && ./configure --with-libxml-src=../libxml2-$(LIBXML2_VERSION) -enable-shared=no CFLAGS=-DLIBXML_STATIC
|
||||||
|
cd libxslt-$(LIBXSLT_VERSION)/libxslt && make -j
|
||||||
|
cd libxslt-$(LIBXSLT_VERSION)/libexslt && make -j
|
||||||
|
# libxml2: copy files
|
||||||
mkdir -p $(BUILD_PATH)/libxml2-$(LIBXML2_VERSION).tmp/include/libxml
|
mkdir -p $(BUILD_PATH)/libxml2-$(LIBXML2_VERSION).tmp/include/libxml
|
||||||
cp libxml2-$(LIBXML2_VERSION)/include/libxml/*.h $(BUILD_PATH)/libxml2-$(LIBXML2_VERSION).tmp/include/libxml/
|
cp libxml2-$(LIBXML2_VERSION)/include/libxml/*.h $(BUILD_PATH)/libxml2-$(LIBXML2_VERSION).tmp/include/libxml/
|
||||||
mkdir -p $(BUILD_PATH)/libxml2-$(LIBXML2_VERSION).tmp/lib
|
mkdir -p $(BUILD_PATH)/libxml2-$(LIBXML2_VERSION).tmp/lib
|
||||||
cp libxml2-$(LIBXML2_VERSION)/.libs/libxml2.a $(BUILD_PATH)/libxml2-$(LIBXML2_VERSION).tmp/lib/
|
cp libxml2-$(LIBXML2_VERSION)/.libs/libxml2.a $(BUILD_PATH)/libxml2-$(LIBXML2_VERSION).tmp/lib/
|
||||||
# cleanup
|
# libxslt: copy files
|
||||||
#rm -r -f libxml2-$(LIBXML2_VERSION) # see libxslt
|
|
||||||
mv $(BUILD_PATH)/libxml2-$(LIBXML2_VERSION).tmp $(BUILD_PATH)/libxml2-$(LIBXML2_VERSION)
|
|
||||||
|
|
||||||
libxslt: $(BUILD_PATH)/libxslt-$(LIBXSLT_VERSION)
|
|
||||||
|
|
||||||
$(DOWNLOAD_PATH)/libxslt-$(LIBXSLT_VERSION).tar.gz:
|
|
||||||
wget ftp://xmlsoft.org/libxml2/libxslt-$(LIBXSLT_VERSION).tar.gz -O $(DOWNLOAD_PATH)/libxslt-$(LIBXSLT_VERSION).tar.gz
|
|
||||||
|
|
||||||
$(BUILD_PATH)/libxslt-$(LIBXSLT_VERSION): $(DOWNLOAD_PATH)/libxml2-$(LIBXML2_VERSION).tar.gz $(DOWNLOAD_PATH)/libxslt-$(LIBXSLT_VERSION).tar.gz
|
|
||||||
# prepare
|
|
||||||
rm -r -f $(BUILD_PATH)/libxslt-*
|
|
||||||
tar xvf $(DOWNLOAD_PATH)/libxml2-$(LIBXML2_VERSION).tar.gz
|
|
||||||
tar xvf $(DOWNLOAD_PATH)/libxslt-$(LIBXSLT_VERSION).tar.gz
|
|
||||||
# build
|
|
||||||
cd libxslt-$(LIBXSLT_VERSION) && ./configure --with-libxml-src=../libxml2-$(LIBXML2_VERSION) -enable-shared=no CFLAGS=-DLIBXML_STATIC
|
|
||||||
cd libxslt-$(LIBXSLT_VERSION) && make
|
|
||||||
# copy files
|
|
||||||
mkdir -p $(BUILD_PATH)/libxslt-$(LIBXSLT_VERSION).tmp/include/libxslt
|
mkdir -p $(BUILD_PATH)/libxslt-$(LIBXSLT_VERSION).tmp/include/libxslt
|
||||||
cp libxslt-$(LIBXSLT_VERSION)/libxslt/*.h $(BUILD_PATH)/libxslt-$(LIBXSLT_VERSION).tmp/include/libxslt/
|
cp libxslt-$(LIBXSLT_VERSION)/libxslt/*.h $(BUILD_PATH)/libxslt-$(LIBXSLT_VERSION).tmp/include/libxslt/
|
||||||
mkdir -p $(BUILD_PATH)/libxslt-$(LIBXSLT_VERSION).tmp/lib
|
mkdir -p $(BUILD_PATH)/libxslt-$(LIBXSLT_VERSION).tmp/lib
|
||||||
cp libxslt-$(LIBXSLT_VERSION)/libxslt/.libs/libxslt.a $(BUILD_PATH)/libxslt-$(LIBXSLT_VERSION).tmp/lib/
|
cp libxslt-$(LIBXSLT_VERSION)/libxslt/.libs/libxslt.a $(BUILD_PATH)/libxslt-$(LIBXSLT_VERSION).tmp/lib/
|
||||||
cp libxslt-$(LIBXSLT_VERSION)/libexslt/.libs/libexslt.a $(BUILD_PATH)/libxslt-$(LIBXSLT_VERSION).tmp/lib/
|
cp libxslt-$(LIBXSLT_VERSION)/libexslt/.libs/libexslt.a $(BUILD_PATH)/libxslt-$(LIBXSLT_VERSION).tmp/lib/
|
||||||
# cleanup
|
# libxml2: cleanup
|
||||||
rm -r -f libxml2-$(LIBXML2_VERSION)
|
rm -r -f libxml2-$(LIBXML2_VERSION)
|
||||||
|
# libxslt: cleanup
|
||||||
rm -r -f libxslt-$(LIBXSLT_VERSION)
|
rm -r -f libxslt-$(LIBXSLT_VERSION)
|
||||||
|
# finish
|
||||||
|
mv $(BUILD_PATH)/libxml2-$(LIBXML2_VERSION).tmp $(BUILD_PATH)/libxml2-$(LIBXML2_VERSION)
|
||||||
mv $(BUILD_PATH)/libxslt-$(LIBXSLT_VERSION).tmp $(BUILD_PATH)/libxslt-$(LIBXSLT_VERSION)
|
mv $(BUILD_PATH)/libxslt-$(LIBXSLT_VERSION).tmp $(BUILD_PATH)/libxslt-$(LIBXSLT_VERSION)
|
||||||
|
|
||||||
curl: $(BUILD_PATH)/curl-$(CURL_VERSION)
|
curl: $(BUILD_PATH)/curl-$(CURL_VERSION)
|
||||||
|
@ -248,7 +250,7 @@ $(BUILD_PATH)/curl-$(CURL_VERSION): $(DOWNLOAD_PATH)/curl-$(CURL_VERSION).tar.gz
|
||||||
# build
|
# build
|
||||||
cd curl-$(CURL_VERSION) && ./configure --disable-shared --with-ssl="`pwd`/../$(BUILD_PATH)/openssl-$(OPENSSL_VERSION)"
|
cd curl-$(CURL_VERSION) && ./configure --disable-shared --with-ssl="`pwd`/../$(BUILD_PATH)/openssl-$(OPENSSL_VERSION)"
|
||||||
#cd curl-$(CURL_VERSION) && make install exec_prefix="`pwd`/../$(BUILD_PATH)"
|
#cd curl-$(CURL_VERSION) && make install exec_prefix="`pwd`/../$(BUILD_PATH)"
|
||||||
cd curl-$(CURL_VERSION) && make
|
cd curl-$(CURL_VERSION)/lib && make -j
|
||||||
# copy files
|
# copy files
|
||||||
mkdir -p $(BUILD_PATH)/curl-$(CURL_VERSION).tmp/include/curl
|
mkdir -p $(BUILD_PATH)/curl-$(CURL_VERSION).tmp/include/curl
|
||||||
cp curl-$(CURL_VERSION)/include/curl/*.h $(BUILD_PATH)/curl-$(CURL_VERSION).tmp/include/curl/
|
cp curl-$(CURL_VERSION)/include/curl/*.h $(BUILD_PATH)/curl-$(CURL_VERSION).tmp/include/curl/
|
||||||
|
@ -273,14 +275,14 @@ $(BUILD_PATH)/sqlcipher-$(SQLCIPHER_VERSION): $(DOWNLOAD_PATH)/tcl$(TCL_VERSION)
|
||||||
tar xvf $(DOWNLOAD_PATH)/tcl$(TCL_VERSION)-src.tar.gz
|
tar xvf $(DOWNLOAD_PATH)/tcl$(TCL_VERSION)-src.tar.gz
|
||||||
mkdir -p tcl$(TCL_VERSION)/build
|
mkdir -p tcl$(TCL_VERSION)/build
|
||||||
cd tcl$(TCL_VERSION)/build && ../win/configure
|
cd tcl$(TCL_VERSION)/build && ../win/configure
|
||||||
cd tcl$(TCL_VERSION)/build && make
|
cd tcl$(TCL_VERSION)/build && make -j
|
||||||
#sqlcipher
|
#sqlcipher
|
||||||
tar xvf $(DOWNLOAD_PATH)/sqlcipher-$(SQLCIPHER_VERSION).tar.gz
|
tar xvf $(DOWNLOAD_PATH)/sqlcipher-$(SQLCIPHER_VERSION).tar.gz
|
||||||
cd sqlcipher-$(SQLCIPHER_VERSION) && ln -s ../tcl$(TCL_VERSION)/build/tclsh86.exe tclsh
|
cd sqlcipher-$(SQLCIPHER_VERSION) && ln -s ../tcl$(TCL_VERSION)/build/tclsh86.exe tclsh
|
||||||
mkdir -p tcl$(TCL_VERSION)/lib
|
mkdir -p tcl$(TCL_VERSION)/lib
|
||||||
ln -s `pwd`/tcl$(TCL_VERSION)/library `pwd`/tcl$(TCL_VERSION)/lib/tcl8.6
|
ln -s `pwd`/tcl$(TCL_VERSION)/library `pwd`/tcl$(TCL_VERSION)/lib/tcl8.6
|
||||||
# build
|
# build
|
||||||
cd sqlcipher-$(SQLCIPHER_VERSION) && PATH=.:$$PATH:`pwd`/../tcl$(TCL_VERSION)/build && export LIBS="-L`pwd`/../$(BUILD_PATH)/openssl-$(OPENSSL_VERSION)/lib -lgdi32 $$LIBS" && ./configure --disable-shared --enable-static --enable-tempstore=yes CFLAGS="-DSQLITE_HAS_CODEC -I`pwd`/../$(BUILD_PATH)/openssl-$(OPENSSL_VERSION)/include -I`pwd`/../tcl$(TCL_VERSION)/generic" LDFLAGS="-L`pwd`/../$(BUILD_PATH)/openssl-$(OPENSSL_VERSION)/lib -lcrypto -lgdi32" --with-tcl="`pwd`/../tcl$(TCL_VERSION)/build" && make install prefix="`pwd`/install"
|
cd sqlcipher-$(SQLCIPHER_VERSION) && PATH=.:$$PATH:`pwd`/../tcl$(TCL_VERSION)/build && export LIBS="-L`pwd`/../$(BUILD_PATH)/openssl-$(OPENSSL_VERSION)/lib -lgdi32 $$LIBS" && ./configure --disable-shared --enable-static --enable-tempstore=yes CFLAGS="-DSQLITE_HAS_CODEC -I`pwd`/../$(BUILD_PATH)/openssl-$(OPENSSL_VERSION)/include -I`pwd`/../tcl$(TCL_VERSION)/generic" LDFLAGS="-L`pwd`/../$(BUILD_PATH)/openssl-$(OPENSSL_VERSION)/lib -lcrypto -lgdi32" --with-tcl="`pwd`/../tcl$(TCL_VERSION)/build" && make -j install prefix="`pwd`/install"
|
||||||
# copy files
|
# copy files
|
||||||
mkdir -p $(BUILD_PATH)/sqlcipher-$(SQLCIPHER_VERSION).tmp/include
|
mkdir -p $(BUILD_PATH)/sqlcipher-$(SQLCIPHER_VERSION).tmp/include
|
||||||
cp -r sqlcipher-$(SQLCIPHER_VERSION)/install/include/* $(BUILD_PATH)/sqlcipher-$(SQLCIPHER_VERSION).tmp/include/
|
cp -r sqlcipher-$(SQLCIPHER_VERSION)/install/include/* $(BUILD_PATH)/sqlcipher-$(SQLCIPHER_VERSION).tmp/include/
|
||||||
|
@ -293,34 +295,18 @@ $(BUILD_PATH)/sqlcipher-$(SQLCIPHER_VERSION): $(DOWNLOAD_PATH)/tcl$(TCL_VERSION)
|
||||||
rm -r -f tcl$(TCL_VERSION)
|
rm -r -f tcl$(TCL_VERSION)
|
||||||
mv $(BUILD_PATH)/sqlcipher-$(SQLCIPHER_VERSION).tmp $(BUILD_PATH)/sqlcipher-$(SQLCIPHER_VERSION)
|
mv $(BUILD_PATH)/sqlcipher-$(SQLCIPHER_VERSION).tmp $(BUILD_PATH)/sqlcipher-$(SQLCIPHER_VERSION)
|
||||||
|
|
||||||
libmicrohttpd: $(BUILD_PATH)/libmicrohttpd-$(LIBMICROHTTPD_VERSION)
|
|
||||||
|
|
||||||
$(DOWNLOAD_PATH)/libmicrohttpd-$(LIBMICROHTTPD_VERSION).tar.gz:
|
|
||||||
wget --no-check-certificate http://ftp.gnu.org/gnu/libmicrohttpd/libmicrohttpd-$(LIBMICROHTTPD_VERSION).tar.gz -O $(DOWNLOAD_PATH)/libmicrohttpd-$(LIBMICROHTTPD_VERSION).tar.gz
|
|
||||||
|
|
||||||
$(BUILD_PATH)/libmicrohttpd-$(LIBMICROHTTPD_VERSION): $(DOWNLOAD_PATH)/libmicrohttpd-$(LIBMICROHTTPD_VERSION).tar.gz
|
|
||||||
# prepare
|
|
||||||
rm -r -f $(BUILD_PATH)/libmicrohttpd-*
|
|
||||||
tar xvf $(DOWNLOAD_PATH)/libmicrohttpd-$(LIBMICROHTTPD_VERSION).tar.gz
|
|
||||||
# build
|
|
||||||
cd libmicrohttpd-$(LIBMICROHTTPD_VERSION) && ./configure --disable-shared --enable-static --prefix="`pwd`/../$(BUILD_PATH)/libmicrohttpd-$(LIBMICROHTTPD_VERSION).tmp"
|
|
||||||
cd libmicrohttpd-$(LIBMICROHTTPD_VERSION) && make install
|
|
||||||
# cleanup
|
|
||||||
rm -r -f libmicrohttpd-$(LIBMICROHTTPD_VERSION)
|
|
||||||
mv $(BUILD_PATH)/libmicrohttpd-$(LIBMICROHTTPD_VERSION).tmp $(BUILD_PATH)/libmicrohttpd-$(LIBMICROHTTPD_VERSION)
|
|
||||||
|
|
||||||
ffmpeg: $(BUILD_PATH)/ffmpeg-$(FFMPEG_VERSION)
|
ffmpeg: $(BUILD_PATH)/ffmpeg-$(FFMPEG_VERSION)
|
||||||
|
|
||||||
$(DOWNLOAD_PATH)/ffmpeg-$(FFMPEG_VERSION).tar.gz:
|
$(DOWNLOAD_PATH)/ffmpeg-$(FFMPEG_VERSION).tar.xz:
|
||||||
wget --no-check-certificate https://ffmpeg.org/releases/ffmpeg-$(FFMPEG_VERSION).tar.gz -O $(DOWNLOAD_PATH)/ffmpeg-$(FFMPEG_VERSION).tar.gz
|
wget --no-check-certificate https://ffmpeg.org/releases/ffmpeg-$(FFMPEG_VERSION).tar.xz -O $(DOWNLOAD_PATH)/ffmpeg-$(FFMPEG_VERSION).tar.xz
|
||||||
|
|
||||||
$(BUILD_PATH)/ffmpeg-$(FFMPEG_VERSION): $(DOWNLOAD_PATH)/ffmpeg-$(FFMPEG_VERSION).tar.gz
|
$(BUILD_PATH)/ffmpeg-$(FFMPEG_VERSION): $(DOWNLOAD_PATH)/ffmpeg-$(FFMPEG_VERSION).tar.xz
|
||||||
# prepare
|
# prepare
|
||||||
rm -r -f $(BUILD_PATH)/ffmpeg-*
|
rm -r -f $(BUILD_PATH)/ffmpeg-*
|
||||||
tar xvf $(DOWNLOAD_PATH)/ffmpeg-$(FFMPEG_VERSION).tar.gz
|
tar xvf $(DOWNLOAD_PATH)/ffmpeg-$(FFMPEG_VERSION).tar.xz
|
||||||
# build
|
# build
|
||||||
cd ffmpeg-$(FFMPEG_VERSION) && ./configure --disable-shared --enable-static --disable-programs --disable-ffmpeg --disable-ffplay --disable-ffprobe --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-yasm --disable-everything --enable-encoder=mpeg4 --enable-decoder=mpeg4 --prefix="`pwd`/../$(BUILD_PATH)/ffmpeg-$(FFMPEG_VERSION).tmp"
|
cd ffmpeg-$(FFMPEG_VERSION) && ./configure --disable-shared --enable-static --disable-programs --disable-ffmpeg --disable-ffplay --disable-ffprobe --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-yasm --disable-everything --enable-encoder=mpeg4 --enable-decoder=mpeg4 --prefix="`pwd`/../$(BUILD_PATH)/ffmpeg-$(FFMPEG_VERSION).tmp"
|
||||||
cd ffmpeg-$(FFMPEG_VERSION) && make install
|
cd ffmpeg-$(FFMPEG_VERSION) && make -j install
|
||||||
# cleanup
|
# cleanup
|
||||||
rm -r -f ffmpeg-$(FFMPEG_VERSION)
|
rm -r -f ffmpeg-$(FFMPEG_VERSION)
|
||||||
mv $(BUILD_PATH)/ffmpeg-$(FFMPEG_VERSION).tmp $(BUILD_PATH)/ffmpeg-$(FFMPEG_VERSION)
|
mv $(BUILD_PATH)/ffmpeg-$(FFMPEG_VERSION).tmp $(BUILD_PATH)/ffmpeg-$(FFMPEG_VERSION)
|
||||||
|
@ -358,7 +344,7 @@ $(BUILD_PATH)/xapian-core-$(XAPIAN_VERSION): $(DOWNLOAD_PATH)/xapian-core-$(XAPI
|
||||||
#cd xapian-core-$(XAPIAN_VERSION) && ./configure --disable-shared --enable-static --prefix="`pwd`/../$(BUILD_PATH)/xapian-core-$(XAPIAN_VERSION).tmp"
|
#cd xapian-core-$(XAPIAN_VERSION) && ./configure --disable-shared --enable-static --prefix="`pwd`/../$(BUILD_PATH)/xapian-core-$(XAPIAN_VERSION).tmp"
|
||||||
#cd xapian-core-$(XAPIAN_VERSION) && make install
|
#cd xapian-core-$(XAPIAN_VERSION) && make install
|
||||||
cd xapian-core-$(XAPIAN_VERSION) && ./configure --disable-shared --enable-static
|
cd xapian-core-$(XAPIAN_VERSION) && ./configure --disable-shared --enable-static
|
||||||
cd xapian-core-$(XAPIAN_VERSION) && make
|
cd xapian-core-$(XAPIAN_VERSION) && make -j
|
||||||
# copy files
|
# copy files
|
||||||
mkdir -p $(BUILD_PATH)/xapian-core-$(XAPIAN_VERSION).tmp/include
|
mkdir -p $(BUILD_PATH)/xapian-core-$(XAPIAN_VERSION).tmp/include
|
||||||
cp -r xapian-core-$(XAPIAN_VERSION)/include/* $(BUILD_PATH)/xapian-core-$(XAPIAN_VERSION).tmp/include/
|
cp -r xapian-core-$(XAPIAN_VERSION)/include/* $(BUILD_PATH)/xapian-core-$(XAPIAN_VERSION).tmp/include/
|
||||||
|
@ -378,7 +364,7 @@ $(BUILD_PATH)/json-c-$(JSON_C_VERSION):
|
||||||
# build
|
# build
|
||||||
mkdir -p json-c-$(JSON_C_VERSION)/build
|
mkdir -p json-c-$(JSON_C_VERSION)/build
|
||||||
cd json-c-$(JSON_C_VERSION)/build && cmake .. -G"MSYS Makefiles" -Wno-dev -DCMAKE_BUILD_TYPE="release" -DBUILD_SHARED_LIBS=off -DBUILD_STATIC_LIBS=on -DBUILD_TESTING=off -DCMAKE_CXX_FLAGS="-D__MINGW_USE_VC2005_COMPAT" -DCMAKE_INSTALL_PREFIX="`pwd`/install" -DCMAKE_INSTALL_PREFIX="`pwd`/../../$(BUILD_PATH)/json-c-$(JSON_C_VERSION).tmp"
|
cd json-c-$(JSON_C_VERSION)/build && cmake .. -G"MSYS Makefiles" -Wno-dev -DCMAKE_BUILD_TYPE="release" -DBUILD_SHARED_LIBS=off -DBUILD_STATIC_LIBS=on -DBUILD_TESTING=off -DCMAKE_CXX_FLAGS="-D__MINGW_USE_VC2005_COMPAT" -DCMAKE_INSTALL_PREFIX="`pwd`/install" -DCMAKE_INSTALL_PREFIX="`pwd`/../../$(BUILD_PATH)/json-c-$(JSON_C_VERSION).tmp"
|
||||||
cd json-c-$(JSON_C_VERSION)/build && make install
|
cd json-c-$(JSON_C_VERSION)/build && make -j install
|
||||||
# cleanup
|
# cleanup
|
||||||
rm -r -f json-c-$(JSON_C_VERSION)
|
rm -r -f json-c-$(JSON_C_VERSION)
|
||||||
mv $(BUILD_PATH)/json-c-$(JSON_C_VERSION).tmp $(BUILD_PATH)/json-c-$(JSON_C_VERSION)
|
mv $(BUILD_PATH)/json-c-$(JSON_C_VERSION).tmp $(BUILD_PATH)/json-c-$(JSON_C_VERSION)
|
||||||
|
@ -393,11 +379,25 @@ $(BUILD_PATH)/botan-$(BOTAN_VERSION):
|
||||||
# build
|
# build
|
||||||
if [ $(MSYSTEM) = "MINGW32" ] ; then cd botan-$(BOTAN_VERSION) && ./configure.py --os=mingw --cpu=x86_32 --disable-shared-library --enable-static-library --extra-cxxflags="-D__MINGW_USE_VC2005_COMPAT" --prefix="`pwd`/../$(BUILD_PATH)/botan-$(BOTAN_VERSION).tmp" ; fi
|
if [ $(MSYSTEM) = "MINGW32" ] ; then cd botan-$(BOTAN_VERSION) && ./configure.py --os=mingw --cpu=x86_32 --disable-shared-library --enable-static-library --extra-cxxflags="-D__MINGW_USE_VC2005_COMPAT" --prefix="`pwd`/../$(BUILD_PATH)/botan-$(BOTAN_VERSION).tmp" ; fi
|
||||||
if [ $(MSYSTEM) = "MINGW64" ] ; then cd botan-$(BOTAN_VERSION) && ./configure.py --os=mingw --cpu=x86_64 --disable-shared-library --enable-static-library --prefix="`pwd`/../$(BUILD_PATH)/botan-$(BOTAN_VERSION).tmp" ; fi
|
if [ $(MSYSTEM) = "MINGW64" ] ; then cd botan-$(BOTAN_VERSION) && ./configure.py --os=mingw --cpu=x86_64 --disable-shared-library --enable-static-library --prefix="`pwd`/../$(BUILD_PATH)/botan-$(BOTAN_VERSION).tmp" ; fi
|
||||||
cd botan-$(BOTAN_VERSION) && make install
|
cd botan-$(BOTAN_VERSION) && make -j install
|
||||||
# cleanup
|
# cleanup
|
||||||
rm -r -f botan-$(BOTAN_VERSION)
|
rm -r -f botan-$(BOTAN_VERSION)
|
||||||
mv $(BUILD_PATH)/botan-$(BOTAN_VERSION).tmp $(BUILD_PATH)/botan-$(BOTAN_VERSION)
|
mv $(BUILD_PATH)/botan-$(BOTAN_VERSION).tmp $(BUILD_PATH)/botan-$(BOTAN_VERSION)
|
||||||
|
|
||||||
|
asio: $(BUILD_PATH)/asio-$(ASIO_VERSION)
|
||||||
|
|
||||||
|
$(BUILD_PATH)/asio-$(ASIO_VERSION):
|
||||||
|
# prepare
|
||||||
|
rm -r -f $(BUILD_PATH)/asio-*
|
||||||
|
[ -d "asio-$(ASIO_VERSION)" ] || git clone https://github.com/chriskohlhoff/asio.git --depth=1 --branch asio-$(ASIO_VERSION) "asio-$(ASIO_VERSION)"
|
||||||
|
# copy files
|
||||||
|
mkdir -p $(BUILD_PATH)/asio-$(ASIO_VERSION).tmp/include/asio
|
||||||
|
cp asio-$(ASIO_VERSION)/asio/include/*.hpp $(BUILD_PATH)/asio-$(ASIO_VERSION).tmp/include/
|
||||||
|
cp -r asio-$(ASIO_VERSION)/asio/include/asio/* $(BUILD_PATH)/asio-$(ASIO_VERSION).tmp/include/asio/
|
||||||
|
# cleanup
|
||||||
|
rm -r -f asio-$(ASIO_VERSION)
|
||||||
|
mv $(BUILD_PATH)/asio-$(ASIO_VERSION).tmp $(BUILD_PATH)/asio-$(ASIO_VERSION)
|
||||||
|
|
||||||
rnp: $(BUILD_PATH)/rnp-$(RNP_VERSION)
|
rnp: $(BUILD_PATH)/rnp-$(RNP_VERSION)
|
||||||
|
|
||||||
$(BUILD_PATH)/rnp-$(RNP_VERSION):
|
$(BUILD_PATH)/rnp-$(RNP_VERSION):
|
||||||
|
@ -423,5 +423,5 @@ $(BUILD_PATH)/rnp-$(RNP_VERSION):
|
||||||
copylibs:
|
copylibs:
|
||||||
rm -r -f $(LIBS_PATH) ; \
|
rm -r -f $(LIBS_PATH) ; \
|
||||||
mkdir -p $(LIBS_PATH) ; \
|
mkdir -p $(LIBS_PATH) ; \
|
||||||
cp $(BUILD_PATH)/gcc-version $(LIBS_PATH) ; \
|
cp -p $(BUILD_PATH)/gcc-version $(LIBS_PATH) ; \
|
||||||
find $(BUILD_PATH) -mindepth 1 -maxdepth 1 -type d -not -name "*.tmp" -print -exec cp -r {}/. $(LIBS_PATH) \; ; \
|
find $(BUILD_PATH) -mindepth 1 -maxdepth 1 -type d -not -name "*.tmp" -print -exec cp -r -p {}/. $(LIBS_PATH) \; ; \
|
||||||
|
|
|
@ -33,7 +33,7 @@ echo.
|
||||||
echo === Version
|
echo === Version
|
||||||
echo.
|
echo.
|
||||||
|
|
||||||
title Build - %SourceName%-%RsBuildConfig% [Version]
|
title Build - %SourceName%-%RsBuildConfig% Qt-%QtVersion%-%GCCArchitecture% [Version]
|
||||||
|
|
||||||
pushd "%SourcePath%\retroshare-gui\src\gui\images"
|
pushd "%SourcePath%\retroshare-gui\src\gui\images"
|
||||||
:: Touch resource file
|
:: Touch resource file
|
||||||
|
@ -47,7 +47,7 @@ echo.
|
||||||
echo === qmake
|
echo === qmake
|
||||||
echo.
|
echo.
|
||||||
|
|
||||||
title Build - %SourceName%-%RsBuildConfig% [qmake]
|
title Build - %SourceName%-%RsBuildConfig% Qt-%QtVersion%-%GCCArchitecture% [qmake]
|
||||||
|
|
||||||
set RS_QMAKE_CONFIG=%RsBuildConfig%
|
set RS_QMAKE_CONFIG=%RsBuildConfig%
|
||||||
if "%ParamAutologin%"=="1" set RS_QMAKE_CONFIG=%RS_QMAKE_CONFIG% rs_autologin
|
if "%ParamAutologin%"=="1" set RS_QMAKE_CONFIG=%RS_QMAKE_CONFIG% rs_autologin
|
||||||
|
@ -66,7 +66,7 @@ echo.
|
||||||
echo === make
|
echo === make
|
||||||
echo.
|
echo.
|
||||||
|
|
||||||
title Build - %SourceName%-%RsBuildConfig% [make]
|
title Build - %SourceName%-%RsBuildConfig% Qt-%QtVersion%-%GCCArchitecture% [make]
|
||||||
|
|
||||||
mingw32-make -j %CoreCount%
|
mingw32-make -j %CoreCount%
|
||||||
if errorlevel 1 goto error
|
if errorlevel 1 goto error
|
||||||
|
@ -75,7 +75,7 @@ echo.
|
||||||
echo === Changelog
|
echo === Changelog
|
||||||
echo.
|
echo.
|
||||||
|
|
||||||
title Build - %SourceName%-%RsBuildConfig% [changelog]
|
title Build - %SourceName%-%RsBuildConfig% Qt-%QtVersion%-%GCCArchitecture% [changelog]
|
||||||
call "%ToolsPath%\generate-changelog.bat" "%SourcePath%" "%RsBuildPath%\changelog.txt"
|
call "%ToolsPath%\generate-changelog.bat" "%SourcePath%" "%RsBuildPath%\changelog.txt"
|
||||||
|
|
||||||
:error
|
:error
|
||||||
|
|
|
@ -59,10 +59,12 @@ set QtMainVersion=%QtVersion:~0,1%
|
||||||
|
|
||||||
rem Qt 4 = QtSvg4.dll
|
rem Qt 4 = QtSvg4.dll
|
||||||
rem Qt 5 = Qt5Svg.dll
|
rem Qt 5 = Qt5Svg.dll
|
||||||
|
rem Qt 6 = Qt6Svg.dll
|
||||||
set QtMainVersion1=
|
set QtMainVersion1=
|
||||||
set QtMainVersion2=
|
set QtMainVersion2=
|
||||||
if "%QtMainVersion%"=="4" set QtMainVersion2=4
|
if "%QtMainVersion%"=="4" set QtMainVersion2=4
|
||||||
if "%QtMainVersion%"=="5" set QtMainVersion1=5
|
if "%QtMainVersion%"=="5" set QtMainVersion1=5
|
||||||
|
if "%QtMainVersion%"=="6" set QtMainVersion1=6
|
||||||
|
|
||||||
if "%RsBuildConfig%" NEQ "release" (
|
if "%RsBuildConfig%" NEQ "release" (
|
||||||
set Archive=%RsPackPath%\RetroShare-%RsVersion%-Windows-Portable-%RsDate%-%RsVersion.Extra%-Qt-%QtVersion%-%GCCArchitecture%%RsType%%RsArchiveAdd%-%RsBuildConfig%.7z
|
set Archive=%RsPackPath%\RetroShare-%RsVersion%-Windows-Portable-%RsDate%-%RsVersion.Extra%-Qt-%QtVersion%-%GCCArchitecture%%RsType%%RsArchiveAdd%-%RsBuildConfig%.7z
|
||||||
|
@ -75,7 +77,7 @@ if exist "%Archive%" del /Q "%Archive%"
|
||||||
:: Create deploy path
|
:: Create deploy path
|
||||||
mkdir "%RsDeployPath%"
|
mkdir "%RsDeployPath%"
|
||||||
|
|
||||||
title Pack - %SourceName%%RsType%-%RsBuildConfig% [copy files]
|
title Pack - %SourceName%%RsType%-%RsBuildConfig% Qt-%QtVersion%-%GCCArchitecture% [copy files]
|
||||||
|
|
||||||
set ExtensionsFile=%SourcePath%\libretroshare\src\rsserver\rsinit.cc
|
set ExtensionsFile=%SourcePath%\libretroshare\src\rsserver\rsinit.cc
|
||||||
set Extensions=
|
set Extensions=
|
||||||
|
@ -131,18 +133,24 @@ if exist "%RsDeployPath%\retroshare.dll" call :copy_dependencies "%RsDeployPath%
|
||||||
echo copy Qt DLL's
|
echo copy Qt DLL's
|
||||||
copy "%QtPath%\Qt%QtMainVersion1%Svg%QtMainVersion2%.dll" "%RsDeployPath%" %Quite%
|
copy "%QtPath%\Qt%QtMainVersion1%Svg%QtMainVersion2%.dll" "%RsDeployPath%" %Quite%
|
||||||
|
|
||||||
if "%QtMainVersion%"=="5" (
|
if %QtMainVersion% GEQ 5 (
|
||||||
mkdir "%RsDeployPath%\platforms"
|
mkdir "%RsDeployPath%\platforms"
|
||||||
copy "%QtPath%\..\plugins\platforms\qwindows.dll" "%RsDeployPath%\platforms" %Quite%
|
copy "%QtPath%\..\plugins\platforms\qwindows.dll" "%RsDeployPath%\platforms" %Quite%
|
||||||
|
)
|
||||||
|
|
||||||
|
if "%QtMainVersion%"=="5" (
|
||||||
mkdir "%RsDeployPath%\audio"
|
mkdir "%RsDeployPath%\audio"
|
||||||
copy "%QtPath%\..\plugins\audio\qtaudio_windows.dll" "%RsDeployPath%\audio" %Quite%
|
copy "%QtPath%\..\plugins\audio\qtaudio_windows.dll" "%RsDeployPath%\audio" %Quite%
|
||||||
)
|
)
|
||||||
|
|
||||||
if exist "%QtPath%\..\plugins\styles\qwindowsvistastyle.dll" (
|
echo Copy styles
|
||||||
echo Copy styles
|
mkdir "%RsDeployPath%\styles" %Quite%
|
||||||
mkdir "%RsDeployPath%\styles" %Quite%
|
if "%QtMainVersion%"=="5" (
|
||||||
copy "%QtPath%\..\plugins\styles\qwindowsvistastyle.dll" "%RsDeployPath%\styles" %Quite%
|
copy "%QtPath%\..\plugins\styles\qwindowsvistastyle.dll" "%RsDeployPath%\styles" %Quite%
|
||||||
)
|
)
|
||||||
|
if "%QtMainVersion%"=="6" (
|
||||||
|
copy "%QtPath%\..\plugins\styles\qmodernwindowsstyle.dll" "%RsDeployPath%\styles" %Quite%
|
||||||
|
)
|
||||||
|
|
||||||
copy "%QtPath%\..\plugins\imageformats\*.dll" "%RsDeployPath%\imageformats" %Quite%
|
copy "%QtPath%\..\plugins\imageformats\*.dll" "%RsDeployPath%\imageformats" %Quite%
|
||||||
del /Q "%RsDeployPath%\imageformats\*d?.dll" %Quite%
|
del /Q "%RsDeployPath%\imageformats\*d?.dll" %Quite%
|
||||||
|
@ -169,10 +177,12 @@ xcopy /S "%SourcePath%\retroshare-gui\src\license" "%RsDeployPath%\license" %Qui
|
||||||
echo copy translation
|
echo copy translation
|
||||||
copy "%SourcePath%\retroshare-gui\src\translations\qt_tr.qm" "%RsDeployPath%\translations" %Quite%
|
copy "%SourcePath%\retroshare-gui\src\translations\qt_tr.qm" "%RsDeployPath%\translations" %Quite%
|
||||||
copy "%QtPath%\..\translations\qt_*.qm" "%RsDeployPath%\translations" %Quite%
|
copy "%QtPath%\..\translations\qt_*.qm" "%RsDeployPath%\translations" %Quite%
|
||||||
if "%QtMainVersion%"=="5" (
|
if %QtMainVersion% GEQ 5 (
|
||||||
copy "%QtPath%\..\translations\qtbase_*.qm" "%RsDeployPath%\translations" %Quite%
|
copy "%QtPath%\..\translations\qtbase_*.qm" "%RsDeployPath%\translations" %Quite%
|
||||||
copy "%QtPath%\..\translations\qtscript_*.qm" "%RsDeployPath%\translations" %Quite%
|
|
||||||
copy "%QtPath%\..\translations\qtmultimedia_*.qm" "%RsDeployPath%\translations" %Quite%
|
copy "%QtPath%\..\translations\qtmultimedia_*.qm" "%RsDeployPath%\translations" %Quite%
|
||||||
|
)
|
||||||
|
if "%QtMainVersion%"=="5" (
|
||||||
|
copy "%QtPath%\..\translations\qtscript_*.qm" "%RsDeployPath%\translations" %Quite%
|
||||||
copy "%QtPath%\..\translations\qtxmlpatterns_*.qm" "%RsDeployPath%\translations" %Quite%
|
copy "%QtPath%\..\translations\qtxmlpatterns_*.qm" "%RsDeployPath%\translations" %Quite%
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -196,7 +206,7 @@ if "%ParamTor%"=="1" (
|
||||||
)
|
)
|
||||||
|
|
||||||
rem pack files
|
rem pack files
|
||||||
title Pack - %SourceName%%RsType%-%RsBuildConfig% [pack files]
|
title Pack - %SourceName%%RsType%-%RsBuildConfig% Qt-%QtVersion%-%GCCArchitecture% [pack files]
|
||||||
|
|
||||||
"%EnvSevenZipExe%" a -mx=9 -t7z "%Archive%" "%RsDeployPath%\*"
|
"%EnvSevenZipExe%" a -mx=9 -t7z "%Archive%" "%RsDeployPath%\*"
|
||||||
|
|
||||||
|
|
|
@ -16,7 +16,7 @@ if "%~1"=="clean" (
|
||||||
goto exit
|
goto exit
|
||||||
)
|
)
|
||||||
|
|
||||||
set MSYS2Version=20241208
|
set MSYS2Version=20250622
|
||||||
|
|
||||||
set MSYS2Install=msys2-base-x86_64-%MSYS2Version%.sfx.exe
|
set MSYS2Install=msys2-base-x86_64-%MSYS2Version%.sfx.exe
|
||||||
set MSYS2Url=https://github.com/msys2/msys2-installer/releases/download/%MSYS2Version:~0,4%-%MSYS2Version:~4,2%-%MSYS2Version:~6,2%/%MSYS2Install%
|
set MSYS2Url=https://github.com/msys2/msys2-installer/releases/download/%MSYS2Version:~0,4%-%MSYS2Version:~4,2%-%MSYS2Version:~6,2%/%MSYS2Install%
|
||||||
|
|
|
@ -232,7 +232,7 @@ Section $(Section_Main) Section_Main
|
||||||
|
|
||||||
; Qt styles
|
; Qt styles
|
||||||
SetOutPath "$INSTDIR\styles"
|
SetOutPath "$INSTDIR\styles"
|
||||||
File /NONFATAL "${QTDIR}\plugins\styles\qwindowsvistastyle.dll"
|
File "${QTDIR}\plugins\styles\qwindowsvistastyle.dll"
|
||||||
|
|
||||||
; MinGW binaries
|
; MinGW binaries
|
||||||
SetOutPath "$INSTDIR"
|
SetOutPath "$INSTDIR"
|
||||||
|
|
622
build_scripts/Windows/installer/retroshare-Qt6.nsi
Normal file
622
build_scripts/Windows/installer/retroshare-Qt6.nsi
Normal file
|
@ -0,0 +1,622 @@
|
||||||
|
; Script generated with the Venis Install Wizard & modified by defnax
|
||||||
|
; Reworked by Thunder
|
||||||
|
|
||||||
|
!include ifexist.nsh
|
||||||
|
|
||||||
|
# Needed defines
|
||||||
|
;!define REVISION ""
|
||||||
|
;!define RELEASEDIR ""
|
||||||
|
;!define QTDIR ""
|
||||||
|
;!define MINGWDIR ""
|
||||||
|
|
||||||
|
# Optional defines
|
||||||
|
;!define OUTDIR ""
|
||||||
|
|
||||||
|
# Check needed defines
|
||||||
|
!ifndef RELEASEDIR
|
||||||
|
!error "RELEASEDIR is not defined"
|
||||||
|
!endif
|
||||||
|
!ifndef QTDIR
|
||||||
|
!error "QTDIR is not defined"
|
||||||
|
!endif
|
||||||
|
!ifndef MINGWDIR
|
||||||
|
!error "MINGWDIR is not defined"
|
||||||
|
!endif
|
||||||
|
!ifndef ARCHITECTURE
|
||||||
|
!error "Architecture is not defined"
|
||||||
|
!endif
|
||||||
|
|
||||||
|
# Check optional defines
|
||||||
|
!ifdef OUTDIR
|
||||||
|
!define OUTDIR_ "${OUTDIR}\"
|
||||||
|
!else
|
||||||
|
!define OUTDIR ""
|
||||||
|
!define OUTDIR_ ""
|
||||||
|
!endif
|
||||||
|
|
||||||
|
!ifndef INSTALLERADD
|
||||||
|
!define INSTALLERADD ""
|
||||||
|
!endif
|
||||||
|
|
||||||
|
# Source directory
|
||||||
|
!define SOURCEDIR "..\..\.."
|
||||||
|
|
||||||
|
# Get version from executable
|
||||||
|
!GetDllVersion "${RELEASEDIR}\retroshare-gui\src\release\retroshare.exe" VERSION_
|
||||||
|
!define VERSION ${VERSION_1}.${VERSION_2}.${VERSION_3}
|
||||||
|
;!define REVISION ${VERSION_4}
|
||||||
|
|
||||||
|
# Get version of Qt
|
||||||
|
!GetDllVersion "${QTDIR}\bin\Qt6Core.dll" QTVERSION_
|
||||||
|
!define QTVERSION ${QTVERSION_1}.${QTVERSION_2}.${QTVERSION_3}
|
||||||
|
|
||||||
|
# Check version
|
||||||
|
!ifndef REVISION
|
||||||
|
!error "REVISION is not defined"
|
||||||
|
!endif
|
||||||
|
|
||||||
|
# Date
|
||||||
|
!ifndef DATE
|
||||||
|
!define /date DATE "%Y%m%d"
|
||||||
|
!endif
|
||||||
|
|
||||||
|
# Service
|
||||||
|
${!defineifexist} SERVICE_EXISTS "${RELEASEDIR}\retroshare-service\src\release\retroshare-service.exe"
|
||||||
|
|
||||||
|
# Tor
|
||||||
|
!ifdef TORDIR
|
||||||
|
${!defineifexist} TOR_EXISTS "${TORDIR}\tor.exe"
|
||||||
|
!ifndef TOR_EXISTS
|
||||||
|
!error "tor.exe not found"
|
||||||
|
!endif
|
||||||
|
!endif
|
||||||
|
|
||||||
|
# WebUI
|
||||||
|
!ifdef WEBUIDIR
|
||||||
|
${!defineifexist} WEBUI_EXISTS "${WEBUIDIR}\index.html"
|
||||||
|
!ifndef WEBUI_EXISTS
|
||||||
|
!error "WebUI files not found"
|
||||||
|
!endif
|
||||||
|
!endif
|
||||||
|
|
||||||
|
# Friend Server
|
||||||
|
!ifdef TOR_EXISTS
|
||||||
|
# Add Friend Server with Tor only
|
||||||
|
#${!defineifexist} FRIENDSERVER_EXISTS "${RELEASEDIR}\retroshare-friendserver\src\release\retroshare-friendserver.exe"
|
||||||
|
!endif
|
||||||
|
|
||||||
|
# Application name and version
|
||||||
|
!define APPNAME "RetroShare"
|
||||||
|
!define APPNAMEANDVERSION "${APPNAME} ${VERSION}"
|
||||||
|
!define PUBLISHER "RetroShare Team"
|
||||||
|
|
||||||
|
# Install path
|
||||||
|
!if ${ARCHITECTURE} == "x86"
|
||||||
|
!define INSTDIR_NORMAL "$ProgramFiles32\${APPNAME}"
|
||||||
|
!endif
|
||||||
|
!if ${ARCHITECTURE} == "x64"
|
||||||
|
!define INSTDIR_NORMAL "$ProgramFiles64\${APPNAME}"
|
||||||
|
!endif
|
||||||
|
!define INSTDIR_PORTABLE "$Desktop\${APPNAME}"
|
||||||
|
|
||||||
|
!define DATADIR_NORMAL "$APPDATA\${APPNAME}"
|
||||||
|
!define DATADIR_PORTABLE "$INSTDIR\Data"
|
||||||
|
|
||||||
|
# Main Install settings
|
||||||
|
Name "${APPNAMEANDVERSION}"
|
||||||
|
InstallDirRegKey HKLM "Software\${APPNAME}" ""
|
||||||
|
OutFile "${OUTDIR_}RetroShare-${VERSION}-${DATE}-${REVISION}-Qt-${QTVERSION}-${ARCHITECTURE}${INSTALLERADD}-setup.exe"
|
||||||
|
BrandingText "${APPNAMEANDVERSION}"
|
||||||
|
RequestExecutionlevel highest
|
||||||
|
# Use compression
|
||||||
|
SetCompressor /SOLID LZMA
|
||||||
|
|
||||||
|
# Global variables
|
||||||
|
Var PortableMode
|
||||||
|
Var InstDirNormal
|
||||||
|
Var InstDirPortable
|
||||||
|
Var DataDir
|
||||||
|
Var StyleSheetDir
|
||||||
|
|
||||||
|
# Modern interface settings
|
||||||
|
!include Sections.nsh
|
||||||
|
!include nsDialogs.nsh
|
||||||
|
!include "MUI.nsh"
|
||||||
|
|
||||||
|
# Interface Settings
|
||||||
|
!define MUI_ABORTWARNING
|
||||||
|
!define MUI_HEADERIMAGE
|
||||||
|
!define MUI_HEADERIMAGE_BITMAP "${SOURCEDIR}\build_scripts\Windows\installer\HeaderImage.bmp"
|
||||||
|
;!define MUI_WELCOMEFINISHPAGE_BITMAP "...bmp"
|
||||||
|
|
||||||
|
# MUI defines
|
||||||
|
!define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\orange-install.ico"
|
||||||
|
!define MUI_FINISHPAGE_NOAUTOCLOSE
|
||||||
|
!define MUI_LICENSEPAGE_RADIOBUTTONS
|
||||||
|
!define MUI_COMPONENTSPAGE_SMALLDESC
|
||||||
|
!define MUI_FINISHPAGE_LINK "Visit the RetroShare forum for the latest news and support"
|
||||||
|
!define MUI_FINISHPAGE_LINK_LOCATION "http://retroshare.sourceforge.net/forum/"
|
||||||
|
!define MUI_FINISHPAGE_RUN "$INSTDIR\retroshare.exe"
|
||||||
|
!define MUI_FINISHPAGE_SHOWREADME $INSTDIR\changelog.txt
|
||||||
|
!define MUI_FINISHPAGE_SHOWREADME_TEXT changelog.txt
|
||||||
|
;!define MUI_FINISHPAGE_SHOWREADME_NOTCHECKED
|
||||||
|
!define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\orange-uninstall.ico"
|
||||||
|
!define MUI_UNFINISHPAGE_NOAUTOCLOSE
|
||||||
|
;!define MUI_LANGDLL_REGISTRY_ROOT HKLM
|
||||||
|
;!define MUI_LANGDLL_REGISTRY_KEY ${REGKEY}
|
||||||
|
;!define MUI_LANGDLL_REGISTRY_VALUENAME InstallerLanguage
|
||||||
|
|
||||||
|
# Defines the un-/installer logo of RetroShare
|
||||||
|
!insertmacro MUI_DEFAULT MUI_WELCOMEFINISHPAGE_BITMAP "${NSISDIR}\Contrib\Graphics\Wizard\orange.bmp"
|
||||||
|
!insertmacro MUI_DEFAULT MUI_UNWELCOMEFINISHPAGE_BITMAP "${NSISDIR}\Contrib\Graphics\Wizard\orange-uninstall.bmp"
|
||||||
|
|
||||||
|
# Installer pages
|
||||||
|
!insertmacro MUI_PAGE_WELCOME
|
||||||
|
!insertmacro MUI_PAGE_LICENSE "$(myLicenseData)"
|
||||||
|
Page Custom PortableModePageCreate PortableModePageLeave
|
||||||
|
!define MUI_PAGE_CUSTOMFUNCTION_LEAVE dir_leave
|
||||||
|
!insertmacro MUI_PAGE_DIRECTORY
|
||||||
|
!insertmacro MUI_PAGE_COMPONENTS
|
||||||
|
!insertmacro MUI_PAGE_INSTFILES
|
||||||
|
!insertmacro MUI_PAGE_FINISH
|
||||||
|
!insertmacro MUI_UNPAGE_CONFIRM
|
||||||
|
!insertmacro MUI_UNPAGE_INSTFILES
|
||||||
|
|
||||||
|
# Set languages (first is default language)
|
||||||
|
!insertmacro MUI_RESERVEFILE_LANGDLL
|
||||||
|
|
||||||
|
# Installer languages
|
||||||
|
!define MUI_LANGDLL_ALLLANGUAGES
|
||||||
|
|
||||||
|
# Translations
|
||||||
|
!macro LANG_LOAD LANGUAGE LANGCODE LANGID LICENCEFILE
|
||||||
|
!insertmacro MUI_LANGUAGE "${LANGUAGE}"
|
||||||
|
; !verbose off
|
||||||
|
!define LANG "${LANGUAGE}"
|
||||||
|
!include "lang\${LANGCODE}.nsh"
|
||||||
|
LangString LANGUAGEID "${LANG_${LANG}}" "1031"
|
||||||
|
LicenseLangString myLicenseData ${LANGCODE} ${LICENCEFILE}
|
||||||
|
; !verbose on
|
||||||
|
!undef LANG
|
||||||
|
!macroend
|
||||||
|
|
||||||
|
!macro LANG_STRING NAME VALUE
|
||||||
|
LangString "${NAME}" "${LANG_${LANG}}" "${VALUE}"
|
||||||
|
!macroend
|
||||||
|
|
||||||
|
!insertmacro LANG_LOAD "English" "en" "1033" "${SOURCEDIR}\retroshare-gui\src\license\license.txt"
|
||||||
|
!insertmacro LANG_LOAD "French" "fr" "1036" "${SOURCEDIR}\retroshare-gui\src\license\license-FR.txt"
|
||||||
|
!insertmacro LANG_LOAD "German" "de" "1031" "${SOURCEDIR}\retroshare-gui\src\license\license-GER.txt"
|
||||||
|
!insertmacro LANG_LOAD "Turkish" "tr" "1055" "${SOURCEDIR}\retroshare-gui\src\license\license-TR.txt"
|
||||||
|
!insertmacro LANG_LOAD "SimpChinese" "zh_CN" "2052" "${SOURCEDIR}\retroshare-gui\src\license\license.txt"
|
||||||
|
!insertmacro LANG_LOAD "Polish" "pl" "1045" "${SOURCEDIR}\retroshare-gui\src\license\license.txt"
|
||||||
|
!insertmacro LANG_LOAD "Spanish" "es" "1034" "${SOURCEDIR}\retroshare-gui\src\license\license.txt"
|
||||||
|
!insertmacro LANG_LOAD "Russian" "ru" "1049" "${SOURCEDIR}\retroshare-gui\src\license\license.txt"
|
||||||
|
!insertmacro LANG_LOAD "Catalan" "ca_ES" "1027" "${SOURCEDIR}\retroshare-gui\src\license\license.txt"
|
||||||
|
|
||||||
|
LicenseData $(myLicenseData)
|
||||||
|
|
||||||
|
# Main binaries
|
||||||
|
Section $(Section_Main) Section_Main
|
||||||
|
;Set Section required
|
||||||
|
SectionIn RO
|
||||||
|
|
||||||
|
; Set Section properties
|
||||||
|
SetOverwrite on
|
||||||
|
|
||||||
|
; Clears previous error logs
|
||||||
|
; Delete "$INSTDIR\*.log"
|
||||||
|
|
||||||
|
; Main binaries
|
||||||
|
SetOutPath "$INSTDIR"
|
||||||
|
File "${RELEASEDIR}\retroshare-gui\src\release\retroshare.exe"
|
||||||
|
File /nonfatal "${RELEASEDIR}\libretroshare\src\lib\retroshare.dll"
|
||||||
|
|
||||||
|
; Qt binaries
|
||||||
|
File "${QTDIR}\bin\Qt6Core.dll"
|
||||||
|
File "${QTDIR}\bin\Qt6Core5Compat.dll"
|
||||||
|
File "${QTDIR}\bin\Qt6Gui.dll"
|
||||||
|
File "${QTDIR}\bin\Qt6Multimedia.dll"
|
||||||
|
File "${QTDIR}\bin\Qt6Network.dll"
|
||||||
|
File "${QTDIR}\bin\Qt6PrintSupport.dll"
|
||||||
|
File "${QTDIR}\bin\Qt6Svg.dll"
|
||||||
|
File "${QTDIR}\bin\Qt6Widgets.dll"
|
||||||
|
File "${QTDIR}\bin\Qt6Xml.dll"
|
||||||
|
|
||||||
|
; Qt platforms
|
||||||
|
SetOutPath "$INSTDIR\platforms"
|
||||||
|
File "${QTDIR}\plugins\platforms\qwindows.dll"
|
||||||
|
|
||||||
|
; Qt styles
|
||||||
|
SetOutPath "$INSTDIR\styles"
|
||||||
|
File "${QTDIR}\plugins\styles\qmodernwindowsstyle.dll"
|
||||||
|
|
||||||
|
; MinGW binaries
|
||||||
|
SetOutPath "$INSTDIR"
|
||||||
|
File "${MINGWDIR}\bin\libstdc++-6.dll"
|
||||||
|
!if ${ARCHITECTURE} == "x86"
|
||||||
|
File "${MINGWDIR}\bin\libgcc_s_dw2-1.dll"
|
||||||
|
!endif
|
||||||
|
!if ${ARCHITECTURE} == "x64"
|
||||||
|
File "${MINGWDIR}\bin\libgcc_s_seh-1.dll"
|
||||||
|
!endif
|
||||||
|
File "${MINGWDIR}\bin\libwinpthread-1.dll"
|
||||||
|
|
||||||
|
; External binaries
|
||||||
|
File "${EXTERNAL_LIB_DIR}\bin\miniupnpc.dll"
|
||||||
|
File "${RELEASEDIR}\supportlibs\librnp\Build\src\lib\librnp.dll"
|
||||||
|
!if ${ARCHITECTURE} == "x86"
|
||||||
|
File "${EXTERNAL_LIB_DIR}\bin\libcrypto-1_1.dll"
|
||||||
|
File "${EXTERNAL_LIB_DIR}\bin\libssl-1_1.dll"
|
||||||
|
!endif
|
||||||
|
!if ${ARCHITECTURE} == "x64"
|
||||||
|
File "${EXTERNAL_LIB_DIR}\bin\libcrypto-1_1-x64.dll"
|
||||||
|
File "${EXTERNAL_LIB_DIR}\bin\libssl-1_1-x64.dll"
|
||||||
|
!endif
|
||||||
|
|
||||||
|
; Other files
|
||||||
|
File "${RELEASEDIR}\changelog.txt"
|
||||||
|
File "${SOURCEDIR}\libbitdht\src\bitdht\bdboot.txt"
|
||||||
|
|
||||||
|
; License
|
||||||
|
SetOutPath "$INSTDIR\license"
|
||||||
|
File "${SOURCEDIR}\retroshare-gui\src\license\*.*"
|
||||||
|
|
||||||
|
; Image formats
|
||||||
|
SetOutPath "$INSTDIR\imageformats"
|
||||||
|
File /r "${QTDIR}\plugins\imageformats\qgif.dll"
|
||||||
|
File /r "${QTDIR}\plugins\imageformats\qicns.dll"
|
||||||
|
File /r "${QTDIR}\plugins\imageformats\qico.dll"
|
||||||
|
File /r "${QTDIR}\plugins\imageformats\qjpeg.dll"
|
||||||
|
File /r "${QTDIR}\plugins\imageformats\qsvg.dll"
|
||||||
|
File /r "${QTDIR}\plugins\imageformats\qtga.dll"
|
||||||
|
File /r "${QTDIR}\plugins\imageformats\qtiff.dll"
|
||||||
|
File /r "${QTDIR}\plugins\imageformats\qwbmp.dll"
|
||||||
|
File /r "${QTDIR}\plugins\imageformats\qwebp.dll"
|
||||||
|
|
||||||
|
; Sounds
|
||||||
|
SetOutPath "$INSTDIR\sounds"
|
||||||
|
File /r "${SOURCEDIR}\retroshare-gui\src\sounds\*.*"
|
||||||
|
|
||||||
|
; Translations
|
||||||
|
SetOutPath "$INSTDIR\translations"
|
||||||
|
File /r "${SOURCEDIR}\retroshare-gui\src\translations\*.qm"
|
||||||
|
File /r "${QTDIR}\translations\qt_*.qm"
|
||||||
|
File /r "${QTDIR}\translations\qtbase_*.qm"
|
||||||
|
File /r "${QTDIR}\translations\qtmultimedia_*.qm"
|
||||||
|
|
||||||
|
; WebUI
|
||||||
|
; SetOutPath "$INSTDIR\webui"
|
||||||
|
; File /r "${SOURCEDIR}\libresapi\src\webui\*.*"
|
||||||
|
|
||||||
|
; License
|
||||||
|
SetOutPath "$INSTDIR\license"
|
||||||
|
File /r "${SOURCEDIR}\retroshare-gui\src\license\*.*"
|
||||||
|
SectionEnd
|
||||||
|
|
||||||
|
# Service
|
||||||
|
!ifdef SERVICE_EXISTS
|
||||||
|
Section /o $(Section_Service) Section_Service
|
||||||
|
SetOutPath "$INSTDIR"
|
||||||
|
File "${RELEASEDIR}\retroshare-service\src\release\retroshare-service.exe"
|
||||||
|
SectionEnd
|
||||||
|
!endif
|
||||||
|
|
||||||
|
# Friend Server
|
||||||
|
!ifdef FRIENDSERVER_EXISTS
|
||||||
|
Section /o $(Section_FriendServer) Section_FriendServer
|
||||||
|
SetOutPath "$INSTDIR"
|
||||||
|
File "${RELEASEDIR}\retroshare-friendserver\src\release\retroshare-friendserver.exe"
|
||||||
|
SectionEnd
|
||||||
|
!endif
|
||||||
|
|
||||||
|
# Tor
|
||||||
|
!ifdef TOR_EXISTS
|
||||||
|
Section /o $(Section_Tor) Section_Tor
|
||||||
|
SetOutPath "$INSTDIR\tor"
|
||||||
|
File "${TORDIR}\*"
|
||||||
|
SectionEnd
|
||||||
|
!endif
|
||||||
|
|
||||||
|
# WebUI
|
||||||
|
!ifdef WEBUI_EXISTS
|
||||||
|
Section /o $(Section_WebUI) Section_WebUI
|
||||||
|
SetOutPath "$INSTDIR\webui"
|
||||||
|
File /r "${WEBUIDIR}\*"
|
||||||
|
SectionEnd
|
||||||
|
!endif
|
||||||
|
|
||||||
|
# Plugins
|
||||||
|
${!defineifexist} PLUGIN_FEEDREADER_EXISTS "${RELEASEDIR}\plugins\FeedReader\lib\FeedReader.dll"
|
||||||
|
${!defineifexist} PLUGIN_VOIP_EXISTS "${RELEASEDIR}\plugins\VOIP\lib\VOIP.dll"
|
||||||
|
|
||||||
|
!ifdef PLUGIN_FEEDREADER_EXISTS
|
||||||
|
!define /ifndef PLUGIN_EXISTS
|
||||||
|
!endif
|
||||||
|
!ifdef PLUGIN_VOIP_EXISTS
|
||||||
|
!define /ifndef PLUGIN_EXISTS
|
||||||
|
!endif
|
||||||
|
|
||||||
|
!ifdef PLUGIN_EXISTS
|
||||||
|
SectionGroup $(Section_Plugins) Section_Plugins
|
||||||
|
!ifdef PLUGIN_FEEDREADER_EXISTS
|
||||||
|
Section $(Section_Plugin_FeedReader) Section_Plugin_FeedReader
|
||||||
|
SetOutPath "$DataDir\extensions6"
|
||||||
|
File "${RELEASEDIR}\plugins\FeedReader\lib\FeedReader.dll"
|
||||||
|
SectionEnd
|
||||||
|
!endif
|
||||||
|
|
||||||
|
!ifdef PLUGIN_VOIP_EXISTS
|
||||||
|
Section $(Section_Plugin_VOIP) Section_Plugin_VOIP
|
||||||
|
SetOutPath "$DataDir\extensions6"
|
||||||
|
File "${RELEASEDIR}\plugins\VOIP\lib\VOIP.dll"
|
||||||
|
SetOutPath "$INSTDIR\sounds"
|
||||||
|
File /r "${SOURCEDIR}\plugins\VOIP\gui\sounds\*.*"
|
||||||
|
SectionEnd
|
||||||
|
!endif
|
||||||
|
SectionGroupEnd
|
||||||
|
!endif
|
||||||
|
|
||||||
|
# Data (Styles)
|
||||||
|
Section $(Section_Data) Section_Data
|
||||||
|
; Set Section properties
|
||||||
|
SetOverwrite on
|
||||||
|
|
||||||
|
; Chat style
|
||||||
|
SetOutPath "$StyleSheetDir\stylesheets\Bubble"
|
||||||
|
File /r "${SOURCEDIR}\retroshare-gui\src\gui\qss\chat\Bubble\*.*"
|
||||||
|
SetOutPath "$StyleSheetDir\stylesheets\Bubble_Compact"
|
||||||
|
File /r "${SOURCEDIR}\retroshare-gui\src\gui\qss\chat\Bubble_Compact\*.*"
|
||||||
|
|
||||||
|
; Stylesheets
|
||||||
|
SetOutPath "$INSTDIR\qss"
|
||||||
|
File /nonfatal /r "${SOURCEDIR}\retroshare-gui\src\qss\*.*"
|
||||||
|
SectionEnd
|
||||||
|
|
||||||
|
;Section $(Section_Link) Section_Link
|
||||||
|
; Delete any existing keys
|
||||||
|
|
||||||
|
; Write the file association
|
||||||
|
; WriteRegStr HKCR .pqi "" retroshare
|
||||||
|
; WriteRegStr HKCR retroshare "" "PQI File"
|
||||||
|
; WriteRegBin HKCR retroshare EditFlags 00000100
|
||||||
|
; WriteRegStr HKCR "retroshare\shell" "" open
|
||||||
|
; WriteRegStr HKCR "retroshare\shell\open\command" "" `"$INSTDIR\retroshare.exe" "%1"`
|
||||||
|
;SectionEnd
|
||||||
|
|
||||||
|
# Shortcuts
|
||||||
|
SectionGroup $(Section_Shortcuts) Section_Shortcuts
|
||||||
|
Section $(Section_StartMenu) Section_StartMenu
|
||||||
|
SetOutPath "$INSTDIR"
|
||||||
|
CreateDirectory "$SMPROGRAMS\${APPNAME}"
|
||||||
|
CreateShortCut "$SMPROGRAMS\${APPNAME}\$(Link_Uninstall).lnk" "$INSTDIR\uninstall.exe" "" "$INSTDIR\uninstall.exe" 0
|
||||||
|
CreateShortCut "$SMPROGRAMS\${APPNAME}\${APPNAME}.lnk" "$INSTDIR\retroshare.exe" "" "$INSTDIR\retroshare.exe" 0
|
||||||
|
|
||||||
|
!ifdef SERVICE_EXISTS
|
||||||
|
SectionGetFlags ${Section_Service} $0
|
||||||
|
IntOp $0 $0 & ${SF_SELECTED}
|
||||||
|
${If} $0 == ${SF_SELECTED}
|
||||||
|
CreateShortCut "$SMPROGRAMS\${APPNAME}\${APPNAME} Service.lnk" "$INSTDIR\retroshare-service.exe" "" "$INSTDIR\retroshare-service.exe" 0
|
||||||
|
${EndIf}
|
||||||
|
!endif
|
||||||
|
|
||||||
|
!ifdef FRIENDSERVER_EXISTS
|
||||||
|
SectionGetFlags ${Section_FriendServer} $0
|
||||||
|
IntOp $0 $0 & ${SF_SELECTED}
|
||||||
|
${If} $0 == ${SF_SELECTED}
|
||||||
|
CreateShortCut "$SMPROGRAMS\${APPNAME}\${APPNAME} Friend Server.lnk" "$INSTDIR\retroshare-friendserver.exe" "" "$INSTDIR\retroshare-friendserver.exe" 0
|
||||||
|
${EndIf}
|
||||||
|
!endif
|
||||||
|
SectionEnd
|
||||||
|
|
||||||
|
Section $(Section_Desktop) Section_Desktop
|
||||||
|
CreateShortCut "$DESKTOP\${APPNAME}.lnk" "$INSTDIR\retroshare.exe" "" "$INSTDIR\retroshare.exe" 0
|
||||||
|
SectionEnd
|
||||||
|
|
||||||
|
Section $(Section_QuickLaunch) Section_QuickLaunch
|
||||||
|
CreateShortCut "$QUICKLAUNCH\${APPNAME}.lnk" "$INSTDIR\retroshare.exe" "" "$INSTDIR\retroshare.exe" 0
|
||||||
|
SectionEnd
|
||||||
|
SectionGroupEnd
|
||||||
|
|
||||||
|
Section $(Section_AutoStart) Section_AutoStart
|
||||||
|
WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Run" "RetroShare" "$INSTDIR\retroshare.exe -m"
|
||||||
|
SectionEnd
|
||||||
|
|
||||||
|
;Section $(Section_AutoStart) Section_AutoStart
|
||||||
|
; CreateShortCut "$SMSTARTUP\${APPNAME}.lnk" "$INSTDIR\retroshare.exe" "" "$INSTDIR\retroshare.exe -m" 0
|
||||||
|
;SectionEnd
|
||||||
|
|
||||||
|
Section -FinishSection
|
||||||
|
${If} $PortableMode = 0
|
||||||
|
WriteRegStr HKLM "Software\${APPNAME}" "" "$INSTDIR"
|
||||||
|
WriteRegStr HKLM "Software\${APPNAME}" "Version" "${VERSION}"
|
||||||
|
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "DisplayName" "${APPNAME}"
|
||||||
|
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "DisplayVersion" "${VERSION}"
|
||||||
|
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "DisplayIcon" "$INSTDIR\retroshare.exe"
|
||||||
|
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "Publisher" "${PUBLISHER}"
|
||||||
|
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "NoModify" "1"
|
||||||
|
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "NoRepair" "1"
|
||||||
|
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "UninstallString" "$INSTDIR\uninstall.exe"
|
||||||
|
WriteUninstaller "$INSTDIR\uninstall.exe"
|
||||||
|
${Else}
|
||||||
|
; Create the file the application uses to detect portable mode
|
||||||
|
FileOpen $0 "$INSTDIR\portable" w
|
||||||
|
FileClose $0
|
||||||
|
${EndIf}
|
||||||
|
SectionEnd
|
||||||
|
|
||||||
|
# Descriptions
|
||||||
|
!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
|
||||||
|
!insertmacro MUI_DESCRIPTION_TEXT ${Section_Main} $(Section_Main_Desc)
|
||||||
|
!insertmacro MUI_DESCRIPTION_TEXT ${Section_Data} $(Section_Data_Desc)
|
||||||
|
!insertmacro MUI_DESCRIPTION_TEXT ${Section_Shortcuts} $(Section_Shortcuts_Desc)
|
||||||
|
!insertmacro MUI_DESCRIPTION_TEXT ${Section_StartMenu} $(Section_StartMenu_Desc)
|
||||||
|
!insertmacro MUI_DESCRIPTION_TEXT ${Section_Desktop} $(Section_Desktop_Desc)
|
||||||
|
!insertmacro MUI_DESCRIPTION_TEXT ${Section_QuickLaunch} $(Section_QuickLaunch_Desc)
|
||||||
|
!insertmacro MUI_DESCRIPTION_TEXT ${Section_Plugins} $(Section_Plugins_Desc)
|
||||||
|
!insertmacro MUI_DESCRIPTION_TEXT ${Section_Plugin_FeedReader} $(Section_Plugin_FeedReader_Desc)
|
||||||
|
!insertmacro MUI_DESCRIPTION_TEXT ${Section_Plugin_VOIP} $(Section_Plugin_VOIP_Desc)
|
||||||
|
; !insertmacro MUI_DESCRIPTION_TEXT ${Section_Link} $(Section_Link_Desc)
|
||||||
|
!insertmacro MUI_DESCRIPTION_TEXT ${Section_AutoStart} $(Section_AutoStart_Desc)
|
||||||
|
!insertmacro MUI_DESCRIPTION_TEXT ${Section_Tor} $(Section_Tor_Desc)
|
||||||
|
!insertmacro MUI_DESCRIPTION_TEXT ${Section_WebUI} $(Section_WebUI_Desc)
|
||||||
|
!insertmacro MUI_DESCRIPTION_TEXT ${Section_Service} $(Section_Service_Desc)
|
||||||
|
!insertmacro MUI_DESCRIPTION_TEXT ${Section_FriendServer} $(Section_FriendServer_Desc)
|
||||||
|
!insertmacro MUI_FUNCTION_DESCRIPTION_END
|
||||||
|
|
||||||
|
# Uninstall
|
||||||
|
Section "Uninstall"
|
||||||
|
; Remove file association registry keys
|
||||||
|
; DeleteRegKey HKCR .pqi
|
||||||
|
DeleteRegKey HKCR RetroShare
|
||||||
|
|
||||||
|
; Remove program/uninstall regsitry keys
|
||||||
|
DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}"
|
||||||
|
DeleteRegKey HKLM SOFTWARE\${APPNAME}
|
||||||
|
|
||||||
|
DeleteRegValue HKCU "Software\Microsoft\Windows\CurrentVersion\Run" "RetroShare"
|
||||||
|
|
||||||
|
; Remove shortcuts, if any
|
||||||
|
Delete "$SMPROGRAMS\${APPNAME}\*.*"
|
||||||
|
|
||||||
|
; Remove desktop shortcut
|
||||||
|
Delete "$DESKTOP\${APPNAME}.lnk"
|
||||||
|
|
||||||
|
; Remove Quicklaunch shortcut
|
||||||
|
Delete "$QUICKLAUNCH\${APPNAME}.lnk"
|
||||||
|
|
||||||
|
; Remove Autstart
|
||||||
|
Delete "$SMSTARTUP\${APPNAME}.lnk"
|
||||||
|
|
||||||
|
; Remove directories used
|
||||||
|
RMDir "$SMPROGRAMS\${APPNAME}"
|
||||||
|
RMDir /r "$INSTDIR"
|
||||||
|
|
||||||
|
; Don't remove the directory, otherwise
|
||||||
|
; we lose the XPGP keys.
|
||||||
|
; Should make this an option though...
|
||||||
|
RMDir /r "${DATADIR_NORMAL}\extensions6"
|
||||||
|
RMDir /r "${DATADIR_NORMAL}\stylesheets"
|
||||||
|
SectionEnd
|
||||||
|
|
||||||
|
Function .onInit
|
||||||
|
StrCpy $InstDirNormal "${INSTDIR_NORMAL}"
|
||||||
|
StrCpy $InstDirPortable "${INSTDIR_PORTABLE}"
|
||||||
|
|
||||||
|
StrCpy $PortableMode 0
|
||||||
|
StrCpy $INSTDIR "$InstDirNormal"
|
||||||
|
StrCpy $DataDir "${DATADIR_NORMAL}"
|
||||||
|
|
||||||
|
InitPluginsDir
|
||||||
|
Push $R1
|
||||||
|
File /oname=$PLUGINSDIR\spltmp.bmp "${SOURCEDIR}\retroshare-gui\src\gui\images\logo\logo_splash.png"
|
||||||
|
advsplash::show 1200 1000 1000 -1 $PLUGINSDIR\spltmp
|
||||||
|
Pop $R1
|
||||||
|
Pop $R1
|
||||||
|
!insertmacro MUI_LANGDLL_DISPLAY
|
||||||
|
FunctionEnd
|
||||||
|
|
||||||
|
!ifdef FRIENDSERVER_EXISTS
|
||||||
|
Function .onSelChange
|
||||||
|
SectionGetFlags ${Section_FriendServer} $0
|
||||||
|
IntOp $0 $0 & ${SF_SELECTED}
|
||||||
|
${If} $0 == ${SF_SELECTED}
|
||||||
|
# Activate Tor and set readonly
|
||||||
|
SectionGetFlags ${Section_Tor} $1
|
||||||
|
IntOp $1 $1 | ${SF_SELECTED}
|
||||||
|
IntOp $1 $1 | ${SF_RO}
|
||||||
|
SectionSetFlags ${Section_Tor} $1
|
||||||
|
${Else}
|
||||||
|
# Remove readonly from Tor
|
||||||
|
SectionGetFlags ${Section_Tor} $1
|
||||||
|
IntOp $2 ${SF_RO} ~
|
||||||
|
IntOp $1 $1 & $2
|
||||||
|
SectionSetFlags ${Section_Tor} $1
|
||||||
|
${EndIf}
|
||||||
|
FunctionEnd
|
||||||
|
!endif
|
||||||
|
|
||||||
|
# Installation mode
|
||||||
|
|
||||||
|
Function RequireAdmin
|
||||||
|
UserInfo::GetAccountType
|
||||||
|
Pop $8
|
||||||
|
${If} $8 != "admin"
|
||||||
|
MessageBox MB_ICONSTOP "You need administrator rights to install ${APPNAME}"
|
||||||
|
SetErrorLevel 740 ;ERROR_ELEVATION_REQUIRED
|
||||||
|
Abort
|
||||||
|
${EndIf}
|
||||||
|
FunctionEnd
|
||||||
|
|
||||||
|
Function SetModeDestinationFromInstdir
|
||||||
|
${If} $PortableMode = 0
|
||||||
|
StrCpy $InstDirNormal $INSTDIR
|
||||||
|
${Else}
|
||||||
|
StrCpy $InstDirPortable $INSTDIR
|
||||||
|
${EndIf}
|
||||||
|
FunctionEnd
|
||||||
|
|
||||||
|
Function PortableModePageCreate
|
||||||
|
Call SetModeDestinationFromInstdir ; If the user clicks BACK on the directory page we will remember their mode specific directory
|
||||||
|
!insertmacro MUI_HEADER_TEXT $(Page_InstallMode) $(Page_InstallMode_Desc)
|
||||||
|
nsDialogs::Create 1018
|
||||||
|
Pop $0
|
||||||
|
${NSD_CreateRadioButton} 5u 25u -10u 8u $(Page_InstallMode_Standard)
|
||||||
|
Pop $1
|
||||||
|
${NSD_CreateLabel} 18u 40u -10u 24u $(Page_InstallMode_Standard_Desc)
|
||||||
|
Pop $0
|
||||||
|
${NSD_CreateRadioButton} 5u 75u -10u 8u $(Page_InstallMode_Portable)
|
||||||
|
Pop $2
|
||||||
|
${NSD_CreateLabel} 18u 90u -10u 24u $(Page_InstallMode_Portable_Desc)
|
||||||
|
Pop $0
|
||||||
|
${If} $PortableMode = 0
|
||||||
|
SendMessage $1 ${BM_SETCHECK} ${BST_CHECKED} 0
|
||||||
|
${Else}
|
||||||
|
SendMessage $2 ${BM_SETCHECK} ${BST_CHECKED} 0
|
||||||
|
${EndIf}
|
||||||
|
nsDialogs::Show
|
||||||
|
FunctionEnd
|
||||||
|
|
||||||
|
Function PortableModePageLeave
|
||||||
|
${NSD_GetState} $1 $0
|
||||||
|
${If} $0 <> ${BST_UNCHECKED}
|
||||||
|
StrCpy $PortableMode 0
|
||||||
|
StrCpy $INSTDIR $InstDirNormal
|
||||||
|
Call RequireAdmin
|
||||||
|
; Enable sections
|
||||||
|
SectionSetText ${Section_Shortcuts} $(Section_Shortcuts)
|
||||||
|
SectionSetText ${Section_StartMenu} $(Section_StartMenu)
|
||||||
|
SectionSetText ${Section_Desktop} $(Section_Desktop)
|
||||||
|
SectionSetText ${Section_QuickLaunch} $(Section_QuickLaunch)
|
||||||
|
SectionSetText ${Section_AutoStart} $(Section_AutoStart)
|
||||||
|
!insertmacro SelectSection ${Section_Shortcuts}
|
||||||
|
!insertmacro SelectSection ${Section_AutoStart}
|
||||||
|
!insertmacro SelectSection ${Section_StartMenu}
|
||||||
|
!insertmacro SelectSection ${Section_Desktop}
|
||||||
|
!insertmacro SelectSection ${Section_QuickLaunch}
|
||||||
|
${Else}
|
||||||
|
StrCpy $PortableMode 1
|
||||||
|
StrCpy $INSTDIR $InstDirPortable
|
||||||
|
; Disable sections
|
||||||
|
!insertmacro UnselectSection ${Section_Shortcuts}
|
||||||
|
!insertmacro UnselectSection ${Section_AutoStart}
|
||||||
|
!insertmacro UnselectSection ${Section_StartMenu}
|
||||||
|
!insertmacro UnselectSection ${Section_Desktop}
|
||||||
|
!insertmacro UnselectSection ${Section_QuickLaunch}
|
||||||
|
SectionSetText ${Section_Shortcuts} ""
|
||||||
|
SectionSetText ${Section_StartMenu} ""
|
||||||
|
SectionSetText ${Section_Desktop} ""
|
||||||
|
SectionSetText ${Section_QuickLaunch} ""
|
||||||
|
SectionSetText ${Section_AutoStart} ""
|
||||||
|
${EndIf}
|
||||||
|
FunctionEnd
|
||||||
|
|
||||||
|
Function dir_leave
|
||||||
|
${If} $PortableMode = 0
|
||||||
|
StrCpy $DataDir "${DATADIR_NORMAL}"
|
||||||
|
StrCpy $StyleSheetDir $DataDir
|
||||||
|
${Else}
|
||||||
|
StrCpy $DataDir "${DATADIR_PORTABLE}"
|
||||||
|
StrCpy $StyleSheetDir $INSTDIR
|
||||||
|
${EndIf}
|
||||||
|
FunctionEnd
|
|
@ -4,8 +4,8 @@ Version=1.0
|
||||||
Name=RetroShare
|
Name=RetroShare
|
||||||
Comment=Securely communicate with your friends
|
Comment=Securely communicate with your friends
|
||||||
Exec=/usr/bin/retroshare %U
|
Exec=/usr/bin/retroshare %U
|
||||||
Icon=/usr/share/pixmaps/retroshare.xpm
|
Icon=retroshare.xpm
|
||||||
Terminal=false
|
Terminal=false
|
||||||
Type=Application
|
Type=Application
|
||||||
Categories=Application;Network;Email;InstantMessaging;Chat;Feed;FileTransfer;P2P
|
Categories=Network;Email;InstantMessaging;Chat;Feed;FileTransfer;P2P
|
||||||
MimeType=x-scheme-handler/retroshare;
|
MimeType=x-scheme-handler/retroshare;
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
Subproject commit 2a4df811f6bfe1904bc3956f285aa0fc891f9fd4
|
Subproject commit da6b849a41f3cf6e60f6f76e1f3c4463876a8741
|
|
@ -1 +1 @@
|
||||||
Subproject commit df542663d8bd698a8b5541fc6db07da6c59f1c3a
|
Subproject commit 178aa8ebcef47e3271d5a5ca5c07e45d3b71c81d
|
|
@ -28,6 +28,8 @@ greaterThan(QT_MAJOR_VERSION, 4) {
|
||||||
QT += widgets
|
QT += widgets
|
||||||
}
|
}
|
||||||
|
|
||||||
|
greaterThan(QT_MAJOR_VERSION,5): QT += core5compat
|
||||||
|
|
||||||
target.files = lib/libFeedReader.so
|
target.files = lib/libFeedReader.so
|
||||||
|
|
||||||
SOURCES = FeedReaderPlugin.cpp \
|
SOURCES = FeedReaderPlugin.cpp \
|
||||||
|
@ -45,6 +47,7 @@ SOURCES = FeedReaderPlugin.cpp \
|
||||||
gui/FeedReaderUserNotify.cpp \
|
gui/FeedReaderUserNotify.cpp \
|
||||||
gui/FeedReaderFeedItem.cpp \
|
gui/FeedReaderFeedItem.cpp \
|
||||||
gui/FeedTreeWidget.cpp \
|
gui/FeedTreeWidget.cpp \
|
||||||
|
gui/ProxyWidget.cpp \
|
||||||
util/CURLWrapper.cpp \
|
util/CURLWrapper.cpp \
|
||||||
util/XMLWrapper.cpp \
|
util/XMLWrapper.cpp \
|
||||||
util/HTMLWrapper.cpp \
|
util/HTMLWrapper.cpp \
|
||||||
|
@ -66,6 +69,7 @@ HEADERS = FeedReaderPlugin.h \
|
||||||
gui/FeedReaderUserNotify.h \
|
gui/FeedReaderUserNotify.h \
|
||||||
gui/FeedReaderFeedItem.h \
|
gui/FeedReaderFeedItem.h \
|
||||||
gui/FeedTreeWidget.h \
|
gui/FeedTreeWidget.h \
|
||||||
|
gui/ProxyWidget.h \
|
||||||
util/CURLWrapper.h \
|
util/CURLWrapper.h \
|
||||||
util/XMLWrapper.h \
|
util/XMLWrapper.h \
|
||||||
util/HTMLWrapper.h \
|
util/HTMLWrapper.h \
|
||||||
|
@ -76,7 +80,8 @@ FORMS = gui/FeedReaderDialog.ui \
|
||||||
gui/AddFeedDialog.ui \
|
gui/AddFeedDialog.ui \
|
||||||
gui/PreviewFeedDialog.ui \
|
gui/PreviewFeedDialog.ui \
|
||||||
gui/FeedReaderConfig.ui \
|
gui/FeedReaderConfig.ui \
|
||||||
gui/FeedReaderFeedItem.ui
|
gui/FeedReaderFeedItem.ui \
|
||||||
|
gui/ProxyWidget.ui
|
||||||
|
|
||||||
TARGET = FeedReader
|
TARGET = FeedReader
|
||||||
|
|
||||||
|
@ -125,7 +130,7 @@ win32 {
|
||||||
|
|
||||||
isEmpty(QMAKE_SH) {
|
isEmpty(QMAKE_SH) {
|
||||||
# MinGW
|
# MinGW
|
||||||
LIBS += -lcrypt32
|
LIBS += -lcrypt32 -lbcrypt
|
||||||
}
|
}
|
||||||
|
|
||||||
# Check for msys2
|
# Check for msys2
|
||||||
|
|
|
@ -28,6 +28,7 @@
|
||||||
#include "FeedReaderStringDefs.h"
|
#include "FeedReaderStringDefs.h"
|
||||||
#include "gui/settings/rsharesettings.h"
|
#include "gui/settings/rsharesettings.h"
|
||||||
#include "gui/common/UIStateHelper.h"
|
#include "gui/common/UIStateHelper.h"
|
||||||
|
#include "util/DateTime.h"
|
||||||
|
|
||||||
#include <retroshare/rsgxsforums.h>
|
#include <retroshare/rsgxsforums.h>
|
||||||
#include <retroshare/rsposted.h>
|
#include <retroshare/rsposted.h>
|
||||||
|
@ -180,8 +181,7 @@ void AddFeedDialog::useStandardUpdateIntervalToggled()
|
||||||
void AddFeedDialog::useStandardProxyToggled()
|
void AddFeedDialog::useStandardProxyToggled()
|
||||||
{
|
{
|
||||||
bool checked = ui->useStandardProxyCheckBox->isChecked();
|
bool checked = ui->useStandardProxyCheckBox->isChecked();
|
||||||
ui->proxyAddressLineEdit->setEnabled(!checked);
|
ui->proxyWidget->setEnabled(!checked);
|
||||||
ui->proxyPortSpinBox->setEnabled(!checked);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void AddFeedDialog::typeForumToggled()
|
void AddFeedDialog::typeForumToggled()
|
||||||
|
@ -335,13 +335,12 @@ bool AddFeedDialog::fillFeed(uint32_t feedId)
|
||||||
ui->passwordLineEdit->setText(QString::fromUtf8(feedInfo.password.c_str()));
|
ui->passwordLineEdit->setText(QString::fromUtf8(feedInfo.password.c_str()));
|
||||||
|
|
||||||
ui->useStandardProxyCheckBox->setChecked(feedInfo.flag.standardProxy);
|
ui->useStandardProxyCheckBox->setChecked(feedInfo.flag.standardProxy);
|
||||||
ui->proxyAddressLineEdit->setText(QString::fromUtf8(feedInfo.proxyAddress.c_str()));
|
ui->proxyWidget->setAddress(QString::fromUtf8(feedInfo.proxyAddress.c_str()));
|
||||||
ui->proxyPortSpinBox->setValue(feedInfo.proxyPort);
|
ui->proxyWidget->setPort(feedInfo.proxyPort);
|
||||||
|
|
||||||
ui->useStandardUpdateInterval->setChecked(feedInfo.flag.standardUpdateInterval);
|
ui->useStandardUpdateInterval->setChecked(feedInfo.flag.standardUpdateInterval);
|
||||||
ui->updateIntervalSpinBox->setValue(feedInfo.updateInterval / 60);
|
ui->updateIntervalSpinBox->setValue(feedInfo.updateInterval / 60);
|
||||||
QDateTime dateTime;
|
QDateTime dateTime = DateTime::DateTimeFromTime_t(feedInfo.lastUpdate);
|
||||||
dateTime.setTime_t(feedInfo.lastUpdate);
|
|
||||||
ui->lastUpdate->setText(dateTime.toString());
|
ui->lastUpdate->setText(dateTime.toString());
|
||||||
|
|
||||||
ui->useStandardStorageTimeCheckBox->setChecked(feedInfo.flag.standardStorageTime);
|
ui->useStandardStorageTimeCheckBox->setChecked(feedInfo.flag.standardStorageTime);
|
||||||
|
@ -425,8 +424,8 @@ void AddFeedDialog::getFeedInfo(FeedInfo &feedInfo)
|
||||||
feedInfo.password = ui->passwordLineEdit->text().toUtf8().constData();
|
feedInfo.password = ui->passwordLineEdit->text().toUtf8().constData();
|
||||||
|
|
||||||
feedInfo.flag.standardProxy = ui->useStandardProxyCheckBox->isChecked();
|
feedInfo.flag.standardProxy = ui->useStandardProxyCheckBox->isChecked();
|
||||||
feedInfo.proxyAddress = ui->proxyAddressLineEdit->text().toUtf8().constData();
|
feedInfo.proxyAddress = ui->proxyWidget->address().toUtf8().constData();
|
||||||
feedInfo.proxyPort = ui->proxyPortSpinBox->value();
|
feedInfo.proxyPort = ui->proxyWidget->port();
|
||||||
|
|
||||||
feedInfo.flag.standardUpdateInterval = ui->useStandardUpdateInterval->isChecked();
|
feedInfo.flag.standardUpdateInterval = ui->useStandardUpdateInterval->isChecked();
|
||||||
feedInfo.updateInterval = ui->updateIntervalSpinBox->value() * 60;
|
feedInfo.updateInterval = ui->updateIntervalSpinBox->value() * 60;
|
||||||
|
|
|
@ -133,37 +133,16 @@
|
||||||
<property name="title">
|
<property name="title">
|
||||||
<string>Proxy</string>
|
<string>Proxy</string>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QGridLayout" name="gridLayout_6">
|
<layout class="QVBoxLayout" name="verticalLayout_3">
|
||||||
<item row="0" column="0" colspan="2">
|
<item>
|
||||||
<widget class="QCheckBox" name="useStandardProxyCheckBox">
|
<widget class="QCheckBox" name="useStandardProxyCheckBox">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Use standard proxy</string>
|
<string>Use standard proxy</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="1" column="0">
|
<item>
|
||||||
<widget class="QLabel" name="serverLabel">
|
<widget class="ProxyWidget" name="proxyWidget" native="true"/>
|
||||||
<property name="text">
|
|
||||||
<string>Server</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="1" column="1">
|
|
||||||
<widget class="QLineEdit" name="proxyAddressLineEdit"/>
|
|
||||||
</item>
|
|
||||||
<item row="1" column="2">
|
|
||||||
<widget class="QLabel" name="portLabel">
|
|
||||||
<property name="text">
|
|
||||||
<string>:</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="1" column="3">
|
|
||||||
<widget class="QSpinBox" name="proxyPortSpinBox">
|
|
||||||
<property name="maximum">
|
|
||||||
<number>65535</number>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
|
@ -465,6 +444,12 @@
|
||||||
<extends>QComboBox</extends>
|
<extends>QComboBox</extends>
|
||||||
<header>gui/common/RSComboBox.h</header>
|
<header>gui/common/RSComboBox.h</header>
|
||||||
</customwidget>
|
</customwidget>
|
||||||
|
<customwidget>
|
||||||
|
<class>ProxyWidget</class>
|
||||||
|
<extends>QWidget</extends>
|
||||||
|
<header>gui/ProxyWidget.h</header>
|
||||||
|
<container>1</container>
|
||||||
|
</customwidget>
|
||||||
</customwidgets>
|
</customwidgets>
|
||||||
<tabstops>
|
<tabstops>
|
||||||
<tabstop>urlLineEdit</tabstop>
|
<tabstop>urlLineEdit</tabstop>
|
||||||
|
@ -494,8 +479,7 @@
|
||||||
<tabstop>useStandardUpdateInterval</tabstop>
|
<tabstop>useStandardUpdateInterval</tabstop>
|
||||||
<tabstop>updateIntervalSpinBox</tabstop>
|
<tabstop>updateIntervalSpinBox</tabstop>
|
||||||
<tabstop>useStandardProxyCheckBox</tabstop>
|
<tabstop>useStandardProxyCheckBox</tabstop>
|
||||||
<tabstop>proxyAddressLineEdit</tabstop>
|
<tabstop>proxyWidget</tabstop>
|
||||||
<tabstop>proxyPortSpinBox</tabstop>
|
|
||||||
</tabstops>
|
</tabstops>
|
||||||
<resources/>
|
<resources/>
|
||||||
<connections/>
|
<connections/>
|
||||||
|
|
|
@ -31,8 +31,7 @@ FeedReaderConfig::FeedReaderConfig(QWidget *parent, Qt::WindowFlags flags)
|
||||||
/* Invoke the Qt Designer generated object setup routine */
|
/* Invoke the Qt Designer generated object setup routine */
|
||||||
ui->setupUi(this);
|
ui->setupUi(this);
|
||||||
|
|
||||||
ui->proxyAddressLineEdit->setEnabled(false);
|
ui->proxyWidget->setEnabled(false);
|
||||||
ui->proxyPortSpinBox->setEnabled(false);
|
|
||||||
|
|
||||||
/* Connect signals */
|
/* Connect signals */
|
||||||
connect(ui->updateIntervalSpinBox, (void(QSpinBox::*)(int))&QSpinBox::valueChanged, this, [this]() {
|
connect(ui->updateIntervalSpinBox, (void(QSpinBox::*)(int))&QSpinBox::valueChanged, this, [this]() {
|
||||||
|
@ -51,8 +50,7 @@ FeedReaderConfig::FeedReaderConfig(QWidget *parent, Qt::WindowFlags flags)
|
||||||
Settings->setValueToGroup("FeedReaderDialog", "OpenAllInNewTab", ui->openAllInNewTabCheckBox->isChecked());
|
Settings->setValueToGroup("FeedReaderDialog", "OpenAllInNewTab", ui->openAllInNewTabCheckBox->isChecked());
|
||||||
});
|
});
|
||||||
connect(ui->useProxyCheckBox, &QCheckBox::toggled, this, &FeedReaderConfig::updateProxy);
|
connect(ui->useProxyCheckBox, &QCheckBox::toggled, this, &FeedReaderConfig::updateProxy);
|
||||||
connect(ui->proxyAddressLineEdit, &QLineEdit::textChanged, this, &FeedReaderConfig::updateProxy);
|
connect(ui->proxyWidget, &ProxyWidget::changed, this, &FeedReaderConfig::updateProxy);
|
||||||
connect(ui->proxyPortSpinBox, (void(QSpinBox::*)(int))&QSpinBox::valueChanged, this, &FeedReaderConfig::updateProxy);
|
|
||||||
|
|
||||||
connect(ui->useProxyCheckBox, SIGNAL(toggled(bool)), this, SLOT(useProxyToggled()));
|
connect(ui->useProxyCheckBox, SIGNAL(toggled(bool)), this, SLOT(useProxyToggled()));
|
||||||
}
|
}
|
||||||
|
@ -75,8 +73,8 @@ void FeedReaderConfig::load()
|
||||||
std::string proxyAddress;
|
std::string proxyAddress;
|
||||||
uint16_t proxyPort;
|
uint16_t proxyPort;
|
||||||
whileBlocking(ui->useProxyCheckBox)->setChecked(rsFeedReader->getStandardProxy(proxyAddress, proxyPort));
|
whileBlocking(ui->useProxyCheckBox)->setChecked(rsFeedReader->getStandardProxy(proxyAddress, proxyPort));
|
||||||
whileBlocking(ui->proxyAddressLineEdit)->setText(QString::fromUtf8(proxyAddress.c_str()));
|
whileBlocking(ui->proxyWidget)->setAddress(QString::fromUtf8(proxyAddress.c_str()));
|
||||||
whileBlocking(ui->proxyPortSpinBox)->setValue(proxyPort);
|
whileBlocking(ui->proxyWidget)->setPort(proxyPort);
|
||||||
|
|
||||||
loaded = true;
|
loaded = true;
|
||||||
|
|
||||||
|
@ -87,11 +85,10 @@ void FeedReaderConfig::useProxyToggled()
|
||||||
{
|
{
|
||||||
bool enabled = ui->useProxyCheckBox->isChecked();
|
bool enabled = ui->useProxyCheckBox->isChecked();
|
||||||
|
|
||||||
ui->proxyAddressLineEdit->setEnabled(enabled);
|
ui->proxyWidget->setEnabled(enabled);
|
||||||
ui->proxyPortSpinBox->setEnabled(enabled);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void FeedReaderConfig::updateProxy()
|
void FeedReaderConfig::updateProxy()
|
||||||
{
|
{
|
||||||
rsFeedReader->setStandardProxy(ui->useProxyCheckBox->isChecked(), ui->proxyAddressLineEdit->text().toUtf8().constData(), ui->proxyPortSpinBox->value());
|
rsFeedReader->setStandardProxy(ui->useProxyCheckBox->isChecked(), ui->proxyWidget->address().toUtf8().constData(), ui->proxyWidget->port());
|
||||||
}
|
}
|
||||||
|
|
|
@ -36,7 +36,7 @@ class FeedReaderConfig : public ConfigPage
|
||||||
|
|
||||||
public:
|
public:
|
||||||
/** Default Constructor */
|
/** Default Constructor */
|
||||||
FeedReaderConfig(QWidget *parent = 0, Qt::WindowFlags flags = 0);
|
FeedReaderConfig(QWidget *parent = 0, Qt::WindowFlags flags = Qt::WindowFlags());
|
||||||
/** Default Destructor */
|
/** Default Destructor */
|
||||||
virtual ~FeedReaderConfig();
|
virtual ~FeedReaderConfig();
|
||||||
|
|
||||||
|
|
|
@ -77,37 +77,16 @@
|
||||||
<property name="title">
|
<property name="title">
|
||||||
<string>Proxy</string>
|
<string>Proxy</string>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QGridLayout" name="gridLayout">
|
<layout class="QVBoxLayout" name="verticalLayout_2">
|
||||||
<item row="0" column="0" colspan="4">
|
<item>
|
||||||
<widget class="QCheckBox" name="useProxyCheckBox">
|
<widget class="QCheckBox" name="useProxyCheckBox">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Use proxy</string>
|
<string>Use proxy</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="1" column="0">
|
<item>
|
||||||
<widget class="QLabel" name="serverLabel">
|
<widget class="ProxyWidget" name="proxyWidget" native="true"/>
|
||||||
<property name="text">
|
|
||||||
<string>Server</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="1" column="1">
|
|
||||||
<widget class="QLineEdit" name="proxyAddressLineEdit"/>
|
|
||||||
</item>
|
|
||||||
<item row="1" column="3">
|
|
||||||
<widget class="QSpinBox" name="proxyPortSpinBox">
|
|
||||||
<property name="maximum">
|
|
||||||
<number>65535</number>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="1" column="2">
|
|
||||||
<widget class="QLabel" name="potLabel">
|
|
||||||
<property name="text">
|
|
||||||
<string>:</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
|
@ -157,12 +136,19 @@
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
|
<customwidgets>
|
||||||
|
<customwidget>
|
||||||
|
<class>ProxyWidget</class>
|
||||||
|
<extends>QWidget</extends>
|
||||||
|
<header>gui/ProxyWidget.h</header>
|
||||||
|
<container>1</container>
|
||||||
|
</customwidget>
|
||||||
|
</customwidgets>
|
||||||
<tabstops>
|
<tabstops>
|
||||||
<tabstop>updateIntervalSpinBox</tabstop>
|
<tabstop>updateIntervalSpinBox</tabstop>
|
||||||
<tabstop>storageTimeSpinBox</tabstop>
|
<tabstop>storageTimeSpinBox</tabstop>
|
||||||
<tabstop>useProxyCheckBox</tabstop>
|
<tabstop>useProxyCheckBox</tabstop>
|
||||||
<tabstop>proxyAddressLineEdit</tabstop>
|
<tabstop>proxyWidget</tabstop>
|
||||||
<tabstop>proxyPortSpinBox</tabstop>
|
|
||||||
<tabstop>saveInBackgroundCheckBox</tabstop>
|
<tabstop>saveInBackgroundCheckBox</tabstop>
|
||||||
<tabstop>setMsgToReadOnActivate</tabstop>
|
<tabstop>setMsgToReadOnActivate</tabstop>
|
||||||
<tabstop>openAllInNewTabCheckBox</tabstop>
|
<tabstop>openAllInNewTabCheckBox</tabstop>
|
||||||
|
|
|
@ -27,6 +27,7 @@
|
||||||
#include "FeedReaderFeedItem.h"
|
#include "FeedReaderFeedItem.h"
|
||||||
#include "gui/settings/rsharesettings.h"
|
#include "gui/settings/rsharesettings.h"
|
||||||
#include "retroshare/rsiface.h"
|
#include "retroshare/rsiface.h"
|
||||||
|
#include "util/DateTime.h"
|
||||||
|
|
||||||
FeedReaderFeedNotify::FeedReaderFeedNotify(RsFeedReader *feedReader, FeedReaderNotify *notify, QObject *parent) :
|
FeedReaderFeedNotify::FeedReaderFeedNotify(RsFeedReader *feedReader, FeedReaderNotify *notify, QObject *parent) :
|
||||||
FeedNotify(parent), mFeedReader(feedReader), mNotify(notify)
|
FeedNotify(parent), mFeedReader(feedReader), mNotify(notify)
|
||||||
|
@ -135,7 +136,7 @@ FeedItem *FeedReaderFeedNotify::testFeedItem(FeedHolder */*parent*/)
|
||||||
FeedMsgInfo msgInfo;
|
FeedMsgInfo msgInfo;
|
||||||
msgInfo.title = tr("Test message").toUtf8().constData();
|
msgInfo.title = tr("Test message").toUtf8().constData();
|
||||||
msgInfo.description = tr("This is a test message.").toUtf8().constData();
|
msgInfo.description = tr("This is a test message.").toUtf8().constData();
|
||||||
msgInfo.pubDate = QDateTime::currentDateTime().toTime_t();
|
msgInfo.pubDate = DateTime::DateTimeToTime_t(QDateTime::currentDateTime());
|
||||||
|
|
||||||
//TODO: parent?
|
//TODO: parent?
|
||||||
return new FeedReaderFeedItem(mFeedReader, mNotify, feedInfo, msgInfo);
|
return new FeedReaderFeedItem(mFeedReader, mNotify, feedInfo, msgInfo);
|
||||||
|
|
|
@ -36,11 +36,12 @@
|
||||||
#include "gui/common/RSTreeWidgetItem.h"
|
#include "gui/common/RSTreeWidgetItem.h"
|
||||||
#include "gui/settings/rsharesettings.h"
|
#include "gui/settings/rsharesettings.h"
|
||||||
#include "util/HandleRichText.h"
|
#include "util/HandleRichText.h"
|
||||||
#include "util/QtVersion.h"
|
#include "util/RsQtVersion.h"
|
||||||
#include "gui/Posted/PostedCreatePostDialog.h"
|
#include "gui/Posted/PostedCreatePostDialog.h"
|
||||||
#include "gui/gxsforums/CreateGxsForumMsg.h"
|
#include "gui/gxsforums/CreateGxsForumMsg.h"
|
||||||
#include "gui/common/FilesDefs.h"
|
#include "gui/common/FilesDefs.h"
|
||||||
#include "util/imageutil.h"
|
#include "util/imageutil.h"
|
||||||
|
#include "util/DateTime.h"
|
||||||
|
|
||||||
#include "retroshare/rsiface.h"
|
#include "retroshare/rsiface.h"
|
||||||
#include "retroshare/rsgxsforums.h"
|
#include "retroshare/rsgxsforums.h"
|
||||||
|
@ -476,8 +477,7 @@ void FeedReaderMessageWidget::calculateMsgIconsAndFonts(QTreeWidgetItem *item)
|
||||||
void FeedReaderMessageWidget::updateMsgItem(QTreeWidgetItem *item, FeedMsgInfo &info)
|
void FeedReaderMessageWidget::updateMsgItem(QTreeWidgetItem *item, FeedMsgInfo &info)
|
||||||
{
|
{
|
||||||
QString title = QString::fromUtf8(info.title.c_str());
|
QString title = QString::fromUtf8(info.title.c_str());
|
||||||
QDateTime qdatetime;
|
QDateTime qdatetime = DateTime::DateTimeFromTime_t(info.pubDate);
|
||||||
qdatetime.setTime_t(info.pubDate);
|
|
||||||
|
|
||||||
/* add string to all data */
|
/* add string to all data */
|
||||||
QString sort = QString("%1_%2_%3").arg(title, qdatetime.toString("yyyyMMdd_hhmmss")).arg(info.feedId);
|
QString sort = QString("%1_%2_%3").arg(title, qdatetime.toString("yyyyMMdd_hhmmss")).arg(info.feedId);
|
||||||
|
|
142
plugins/FeedReader/gui/ProxyWidget.cpp
Normal file
142
plugins/FeedReader/gui/ProxyWidget.cpp
Normal file
|
@ -0,0 +1,142 @@
|
||||||
|
#include "ProxyWidget.h"
|
||||||
|
#include "ui_ProxyWidget.h"
|
||||||
|
|
||||||
|
ProxyWidget::ProxyWidget(QWidget *parent)
|
||||||
|
: QWidget(parent)
|
||||||
|
, ui(new Ui::ProxyWidget)
|
||||||
|
{
|
||||||
|
ui->setupUi(this);
|
||||||
|
|
||||||
|
/* Connect signals */
|
||||||
|
connectUi(true);
|
||||||
|
connect(ui->portSpinBox, (void(QSpinBox::*)(int))&QSpinBox::valueChanged, this, &ProxyWidget::changed);
|
||||||
|
|
||||||
|
/* Initialize types */
|
||||||
|
ui->schemeComboBox->addItem("", "");
|
||||||
|
ui->schemeComboBox->addItem("HTTP", "http://");
|
||||||
|
ui->schemeComboBox->setItemData(ui->schemeComboBox->count() - 1, tr("HTTP Proxy."), Qt::ToolTipRole);
|
||||||
|
ui->schemeComboBox->addItem("HTTPS", "https://");
|
||||||
|
ui->schemeComboBox->setItemData(ui->schemeComboBox->count() - 1, tr("HTTPS Proxy."), Qt::ToolTipRole);
|
||||||
|
ui->schemeComboBox->addItem("SOCKS4", "socks4://");
|
||||||
|
ui->schemeComboBox->setItemData(ui->schemeComboBox->count() - 1, tr("SOCKS4 Proxy."), Qt::ToolTipRole);
|
||||||
|
ui->schemeComboBox->addItem("SOCKS4a", "socks4a://");
|
||||||
|
ui->schemeComboBox->setItemData(ui->schemeComboBox->count() - 1, tr("SOCKS4a Proxy. Proxy resolves URL hostname."), Qt::ToolTipRole);
|
||||||
|
ui->schemeComboBox->addItem("SOCKS5", "socks5://");
|
||||||
|
ui->schemeComboBox->setItemData(ui->schemeComboBox->count() - 1, tr("SOCKS5 Proxy."), Qt::ToolTipRole);
|
||||||
|
ui->schemeComboBox->addItem("SOCKS5h", "socks5h://");
|
||||||
|
ui->schemeComboBox->setItemData(ui->schemeComboBox->count() - 1, tr("SOCKS5 Proxy. Proxy resolves URL hostname."), Qt::ToolTipRole);
|
||||||
|
}
|
||||||
|
|
||||||
|
ProxyWidget::~ProxyWidget()
|
||||||
|
{
|
||||||
|
delete ui;
|
||||||
|
}
|
||||||
|
|
||||||
|
void ProxyWidget::connectUi(bool doConnect)
|
||||||
|
{
|
||||||
|
if (doConnect) {
|
||||||
|
if (!mAddressConnection) {
|
||||||
|
mAddressConnection = connect(ui->addressLineEdit, &QLineEdit::textChanged, this, &ProxyWidget::addressChanged);
|
||||||
|
}
|
||||||
|
if (!mSchemeConnection) {
|
||||||
|
mSchemeConnection = connect(ui->schemeComboBox, (void(QComboBox::*)(int))&QComboBox::currentIndexChanged, this, &ProxyWidget::changed);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (mAddressConnection) {
|
||||||
|
disconnect(mAddressConnection);
|
||||||
|
}
|
||||||
|
if (mSchemeConnection) {
|
||||||
|
disconnect(mSchemeConnection);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
QString ProxyWidget::address()
|
||||||
|
{
|
||||||
|
QString host = ui->addressLineEdit->text();
|
||||||
|
if (host.isEmpty()) {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
QString value;
|
||||||
|
|
||||||
|
QString scheme = ui->schemeComboBox->currentData().toString();
|
||||||
|
if (!scheme.isEmpty()) {
|
||||||
|
value = scheme;
|
||||||
|
}
|
||||||
|
|
||||||
|
value += ui->addressLineEdit->text();
|
||||||
|
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
|
void ProxyWidget::setAddress(const QString &value)
|
||||||
|
{
|
||||||
|
int schemeIndex;
|
||||||
|
QString host;
|
||||||
|
|
||||||
|
splitAddress(value, schemeIndex, host);
|
||||||
|
|
||||||
|
connectUi(false);
|
||||||
|
ui->schemeComboBox->setCurrentIndex(schemeIndex);
|
||||||
|
ui->addressLineEdit->setText(host);
|
||||||
|
connectUi(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
int ProxyWidget::port()
|
||||||
|
{
|
||||||
|
return ui->portSpinBox->value();
|
||||||
|
}
|
||||||
|
|
||||||
|
void ProxyWidget::setPort(int value)
|
||||||
|
{
|
||||||
|
ui->portSpinBox->setValue(value);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ProxyWidget::addressChanged(const QString &value)
|
||||||
|
{
|
||||||
|
int schemeIndex;
|
||||||
|
QString host;
|
||||||
|
|
||||||
|
splitAddress(value, schemeIndex, host);
|
||||||
|
|
||||||
|
connectUi(false);
|
||||||
|
ui->schemeComboBox->setCurrentIndex(schemeIndex);
|
||||||
|
if (host != ui->addressLineEdit->text()) {
|
||||||
|
ui->addressLineEdit->setText(host);
|
||||||
|
}
|
||||||
|
connectUi(true);
|
||||||
|
|
||||||
|
emit changed();
|
||||||
|
}
|
||||||
|
|
||||||
|
void ProxyWidget::splitAddress(const QString &value, int &schemeIndex, QString &host)
|
||||||
|
{
|
||||||
|
if (value.isEmpty()) {
|
||||||
|
schemeIndex = ui->schemeComboBox->currentIndex();
|
||||||
|
host = value;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
QString scheme;
|
||||||
|
int index = value.indexOf("://");
|
||||||
|
if (index >= 0) {
|
||||||
|
scheme = value.left(index + 3);
|
||||||
|
host = value.mid(index + 3);
|
||||||
|
} else {
|
||||||
|
if (ui->schemeComboBox->currentIndex() == 0) {
|
||||||
|
// Default to HTTP
|
||||||
|
scheme = "http://";
|
||||||
|
} else {
|
||||||
|
scheme = ui->schemeComboBox->currentData().toString();
|
||||||
|
}
|
||||||
|
host = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
schemeIndex = ui->schemeComboBox->findData(scheme);
|
||||||
|
if (schemeIndex < 0) {
|
||||||
|
/* Unknown scheme */
|
||||||
|
schemeIndex = 0;
|
||||||
|
host = value;
|
||||||
|
}
|
||||||
|
}
|
40
plugins/FeedReader/gui/ProxyWidget.h
Normal file
40
plugins/FeedReader/gui/ProxyWidget.h
Normal file
|
@ -0,0 +1,40 @@
|
||||||
|
#ifndef PROXYWIDGET_H
|
||||||
|
#define PROXYWIDGET_H
|
||||||
|
|
||||||
|
#include <QWidget>
|
||||||
|
|
||||||
|
namespace Ui {
|
||||||
|
class ProxyWidget;
|
||||||
|
}
|
||||||
|
|
||||||
|
class ProxyWidget : public QWidget
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
explicit ProxyWidget(QWidget *parent = nullptr);
|
||||||
|
~ProxyWidget();
|
||||||
|
|
||||||
|
QString address();
|
||||||
|
void setAddress(const QString &value);
|
||||||
|
|
||||||
|
int port();
|
||||||
|
void setPort(int value);
|
||||||
|
|
||||||
|
Q_SIGNALS:
|
||||||
|
void changed();
|
||||||
|
|
||||||
|
private Q_SLOTS:
|
||||||
|
void addressChanged(const QString &value);
|
||||||
|
|
||||||
|
private:
|
||||||
|
void connectUi(bool doConnect);
|
||||||
|
void splitAddress(const QString &value, int &schemeIndex, QString &host);
|
||||||
|
|
||||||
|
private:
|
||||||
|
Ui::ProxyWidget *ui;
|
||||||
|
QMetaObject::Connection mAddressConnection;
|
||||||
|
QMetaObject::Connection mSchemeConnection;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // PROXYWIDGET_H
|
53
plugins/FeedReader/gui/ProxyWidget.ui
Normal file
53
plugins/FeedReader/gui/ProxyWidget.ui
Normal file
|
@ -0,0 +1,53 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<ui version="4.0">
|
||||||
|
<class>ProxyWidget</class>
|
||||||
|
<widget class="QWidget" name="ProxyWidget">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>400</width>
|
||||||
|
<height>22</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="windowTitle">
|
||||||
|
<string notr="true"/>
|
||||||
|
</property>
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||||
|
<property name="leftMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="topMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="rightMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<item>
|
||||||
|
<widget class="QComboBox" name="schemeComboBox"/>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QLineEdit" name="addressLineEdit"/>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="portLabel">
|
||||||
|
<property name="text">
|
||||||
|
<string notr="true">:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QSpinBox" name="portSpinBox">
|
||||||
|
<property name="maximum">
|
||||||
|
<number>65535</number>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
<resources/>
|
||||||
|
<connections/>
|
||||||
|
</ui>
|
|
@ -9,7 +9,7 @@
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+398"/>
|
<location line="+377"/>
|
||||||
<source>Board</source>
|
<source>Board</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
@ -34,7 +34,7 @@
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="-391"/>
|
<location line="-370"/>
|
||||||
<source>Authentication (not yet supported)</source>
|
<source>Authentication (not yet supported)</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
@ -59,7 +59,7 @@
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+50"/>
|
<location line="+29"/>
|
||||||
<source>Update interval</source>
|
<source>Update interval</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
@ -89,7 +89,7 @@
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="-216"/>
|
<location line="-195"/>
|
||||||
<source>Storage time</source>
|
<source>Storage time</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
@ -114,17 +114,7 @@
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+7"/>
|
<location line="+196"/>
|
||||||
<source>Server</source>
|
|
||||||
<translation type="unfinished"></translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<location line="+10"/>
|
|
||||||
<source>:</source>
|
|
||||||
<translation type="unfinished"></translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<location line="+200"/>
|
|
||||||
<source>Type</source>
|
<source>Type</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
@ -199,7 +189,7 @@
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+211"/>
|
<location line="+208"/>
|
||||||
<location line="+152"/>
|
<location line="+152"/>
|
||||||
<location line="+15"/>
|
<location line="+15"/>
|
||||||
<source>Edit feed</source>
|
<source>Edit feed</source>
|
||||||
|
@ -264,17 +254,7 @@
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+7"/>
|
<location line="+13"/>
|
||||||
<source>Server</source>
|
|
||||||
<translation type="unfinished"></translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<location line="+17"/>
|
|
||||||
<source>:</source>
|
|
||||||
<translation type="unfinished"></translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<location line="+10"/>
|
|
||||||
<source>Misc</source>
|
<source>Misc</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
@ -317,12 +297,12 @@
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/FeedReaderDialog.cpp" line="+101"/>
|
<location filename="../gui/FeedReaderDialog.cpp" line="+105"/>
|
||||||
<source>Message Folders</source>
|
<source>Message Folders</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+197"/>
|
<location line="+199"/>
|
||||||
<source>New</source>
|
<source>New</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
@ -372,7 +352,7 @@
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+241"/>
|
<location line="+259"/>
|
||||||
<source>Add new folder</source>
|
<source>Add new folder</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
@ -535,7 +515,7 @@
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+26"/>
|
<location line="+26"/>
|
||||||
<location filename="../gui/FeedReaderMessageWidget.cpp" line="+117"/>
|
<location filename="../gui/FeedReaderMessageWidget.cpp" line="+126"/>
|
||||||
<source>Title</source>
|
<source>Title</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
@ -551,6 +531,11 @@
|
||||||
<source>Author</source>
|
<source>Author</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<location line="+121"/>
|
||||||
|
<source>Copy Link Location</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/FeedReaderMessageWidget.cpp" line="-2"/>
|
<location filename="../gui/FeedReaderMessageWidget.cpp" line="-2"/>
|
||||||
<source>Search Title</source>
|
<source>Search Title</source>
|
||||||
|
@ -567,7 +552,7 @@
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+12"/>
|
<location line="+16"/>
|
||||||
<source>Open link in browser</source>
|
<source>Open link in browser</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
@ -577,7 +562,7 @@
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+127"/>
|
<location line="+131"/>
|
||||||
<source>The messages will be added to the forum</source>
|
<source>The messages will be added to the forum</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
@ -637,7 +622,7 @@
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+374"/>
|
<location line="+412"/>
|
||||||
<source>Hide</source>
|
<source>Hide</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
@ -957,4 +942,37 @@
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
|
<context>
|
||||||
|
<name>ProxyWidget</name>
|
||||||
|
<message>
|
||||||
|
<location filename="../gui/ProxyWidget.cpp" line="+17"/>
|
||||||
|
<source>HTTP Proxy.</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location line="+2"/>
|
||||||
|
<source>HTTPS Proxy.</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location line="+2"/>
|
||||||
|
<source>SOCKS4 Proxy.</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location line="+2"/>
|
||||||
|
<source>SOCKS4a Proxy. Proxy resolves URL hostname.</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location line="+2"/>
|
||||||
|
<source>SOCKS5 Proxy.</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location line="+2"/>
|
||||||
|
<source>SOCKS5 Proxy. Proxy resolves URL hostname.</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
</context>
|
||||||
</TS>
|
</TS>
|
||||||
|
|
|
@ -37,6 +37,7 @@ QVideoInputDevice::QVideoInputDevice(QWidget *parent)
|
||||||
_capture_device = NULL ;
|
_capture_device = NULL ;
|
||||||
_video_processor = NULL ;
|
_video_processor = NULL ;
|
||||||
_echo_output_device = NULL ;
|
_echo_output_device = NULL ;
|
||||||
|
_image_capture = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
QVideoInputDevice::~QVideoInputDevice()
|
QVideoInputDevice::~QVideoInputDevice()
|
||||||
|
|
|
@ -18,6 +18,10 @@
|
||||||
|
|
||||||
TEMPLATE = subdirs
|
TEMPLATE = subdirs
|
||||||
|
|
||||||
|
win32-g++:isEmpty(QMAKE_SH):lessThan(QT_MAJOR_VERSION,6) {
|
||||||
|
# Qt 5 Windows native build
|
||||||
SUBDIRS += \
|
SUBDIRS += \
|
||||||
VOIP \
|
VOIP \
|
||||||
|
}
|
||||||
|
SUBDIRS += \
|
||||||
FeedReader
|
FeedReader
|
||||||
|
|
|
@ -512,7 +512,7 @@ list(
|
||||||
src/util/misc.h
|
src/util/misc.h
|
||||||
src/util/HandleRichText.h
|
src/util/HandleRichText.h
|
||||||
src/util/ObjectPainter.h
|
src/util/ObjectPainter.h
|
||||||
src/util/QtVersion.h
|
src/util/RsQtVersion.h
|
||||||
src/util/RsFile.h
|
src/util/RsFile.h
|
||||||
src/util/qtthreadsutils.h
|
src/util/qtthreadsutils.h
|
||||||
src/util/ClickableLabel.h
|
src/util/ClickableLabel.h
|
||||||
|
|
|
@ -33,6 +33,7 @@
|
||||||
#include <retroshare/rsdisc.h>
|
#include <retroshare/rsdisc.h>
|
||||||
#include <retroshare/rspeers.h>
|
#include <retroshare/rspeers.h>
|
||||||
#include "settings/rsharesettings.h"
|
#include "settings/rsharesettings.h"
|
||||||
|
#include "util/RsQtVersion.h"
|
||||||
|
|
||||||
#include <QClipboard>
|
#include <QClipboard>
|
||||||
#include <QSysInfo>
|
#include <QSysInfo>
|
||||||
|
@ -42,6 +43,9 @@
|
||||||
#include <QMessageBox>
|
#include <QMessageBox>
|
||||||
#include <QStyle>
|
#include <QStyle>
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
|
#if QT_VERSION >= QT_VERSION_CHECK (6, 0, 0)
|
||||||
|
#include <QRandomGenerator>
|
||||||
|
#endif
|
||||||
|
|
||||||
AboutWidget::AboutWidget(QWidget* parent)
|
AboutWidget::AboutWidget(QWidget* parent)
|
||||||
: QWidget(parent)
|
: QWidget(parent)
|
||||||
|
@ -49,7 +53,7 @@ AboutWidget::AboutWidget(QWidget* parent)
|
||||||
setupUi(this);
|
setupUi(this);
|
||||||
|
|
||||||
QHBoxLayout* l = new QHBoxLayout();
|
QHBoxLayout* l = new QHBoxLayout();
|
||||||
l->setMargin(0);
|
l->setContentsMargins(0, 0, 0, 0);
|
||||||
l->addStretch(1);
|
l->addStretch(1);
|
||||||
l->addStretch(1);
|
l->addStretch(1);
|
||||||
specialFrame->setContentsMargins(0, 0, 0, 0);
|
specialFrame->setContentsMargins(0, 0, 0, 0);
|
||||||
|
@ -211,7 +215,7 @@ void AWidget::initImages()
|
||||||
if(height() == 0) return ;
|
if(height() == 0) return ;
|
||||||
|
|
||||||
image1 = QImage(width(),height(),QImage::Format_ARGB32);
|
image1 = QImage(width(),height(),QImage::Format_ARGB32);
|
||||||
image1.fill(palette().color(QPalette::Background));
|
image1.fill(palette().color(QPalette::Window));
|
||||||
|
|
||||||
//QImage image(":/images/logo/logo_info.png");
|
//QImage image(":/images/logo/logo_info.png");
|
||||||
QPixmap image(":/images/logo/logo_splash.png");
|
QPixmap image(":/images/logo/logo_splash.png");
|
||||||
|
@ -267,7 +271,7 @@ void AWidget::initGoL()
|
||||||
|
|
||||||
void AWidget::drawBitField()
|
void AWidget::drawBitField()
|
||||||
{
|
{
|
||||||
image2.fill(palette().color(QPalette::Background));
|
image2.fill(palette().color(QPalette::Window));
|
||||||
QPainter p(&image2) ;
|
QPainter p(&image2) ;
|
||||||
|
|
||||||
p.setPen(QColor(200,200,200));
|
p.setPen(QColor(200,200,200));
|
||||||
|
@ -306,7 +310,7 @@ void AWidget::drawBitField()
|
||||||
AWidget::AWidget()
|
AWidget::AWidget()
|
||||||
: page(0), density(5)
|
: page(0), density(5)
|
||||||
, mImagesReady(false), mState(0), mTimerId(0)
|
, mImagesReady(false), mState(0), mTimerId(0)
|
||||||
, mStep(1.0f), mMaxStep(QFontMetricsF(font()).width(' '))
|
, mStep(1.0f), mMaxStep(QFontMetrics_horizontalAdvance(QFontMetricsF(font()), ' '))
|
||||||
{
|
{
|
||||||
setMouseTracking(true);
|
setMouseTracking(true);
|
||||||
//startTimer(15);
|
//startTimer(15);
|
||||||
|
@ -774,7 +778,7 @@ void TBoard::showNextPiece() {
|
||||||
|
|
||||||
QPixmap pixmap(dx * squareWidth(), dy * squareHeight());
|
QPixmap pixmap(dx * squareWidth(), dy * squareHeight());
|
||||||
QPainter painter(&pixmap);
|
QPainter painter(&pixmap);
|
||||||
painter.fillRect(pixmap.rect(), nextPieceLabel->palette().background());
|
painter.fillRect(pixmap.rect(), nextPieceLabel->palette().window());
|
||||||
|
|
||||||
for (int i = 0; i < 4; ++i) {
|
for (int i = 0; i < 4; ++i) {
|
||||||
int x = nextPiece.x(i) - nextPiece.minX();
|
int x = nextPiece.x(i) - nextPiece.minX();
|
||||||
|
@ -809,18 +813,23 @@ void TBoard::drawSquare(QPainter &painter, int x, int y, TPiece::Shape shape) {
|
||||||
QColor color = colorTable[int(shape)];
|
QColor color = colorTable[int(shape)];
|
||||||
painter.fillRect(x + 1, y + 1, squareWidth() - 2, squareHeight() - 2, color);
|
painter.fillRect(x + 1, y + 1, squareWidth() - 2, squareHeight() - 2, color);
|
||||||
|
|
||||||
painter.setPen(color.light());
|
painter.setPen(color.lighter());
|
||||||
painter.drawLine(x, y + squareHeight() - 1, x, y);
|
painter.drawLine(x, y + squareHeight() - 1, x, y);
|
||||||
painter.drawLine(x, y, x + squareWidth() - 1, y);
|
painter.drawLine(x, y, x + squareWidth() - 1, y);
|
||||||
|
|
||||||
painter.setPen(color.dark());
|
painter.setPen(color.darker());
|
||||||
painter.drawLine(x + 1, y + squareHeight() - 1, x + squareWidth() - 1, y + squareHeight() - 1);
|
painter.drawLine(x + 1, y + squareHeight() - 1, x + squareWidth() - 1, y + squareHeight() - 1);
|
||||||
painter.drawLine(x + squareWidth() - 1, y + squareHeight() - 1, x + squareWidth() - 1, y + 1);
|
painter.drawLine(x + squareWidth() - 1, y + squareHeight() - 1, x + squareWidth() - 1, y + 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void TPiece::setRandomShape() {
|
void TPiece::setRandomShape() {
|
||||||
setShape(TPiece::Shape(qrand() % 7 + 1));
|
#if QT_VERSION >= QT_VERSION_CHECK (6, 0, 0)
|
||||||
|
int rand = QRandomGenerator::global()->generate();
|
||||||
|
#else
|
||||||
|
int rand = qrand();
|
||||||
|
#endif
|
||||||
|
setShape(TPiece::Shape(rand % 7 + 1));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -905,7 +914,7 @@ TPiece TPiece::rotatedRight() const {
|
||||||
NextPieceLabel::NextPieceLabel( QWidget* parent /* = 0*/ ) : QLabel(parent)
|
NextPieceLabel::NextPieceLabel( QWidget* parent /* = 0*/ ) : QLabel(parent)
|
||||||
{
|
{
|
||||||
QPalette p = palette();
|
QPalette p = palette();
|
||||||
p.setColor(QPalette::Background, Qt::white);
|
p.setColor(QPalette::Window, Qt::white);
|
||||||
setPalette(p);
|
setPalette(p);
|
||||||
setFrameShape(QFrame::Box);
|
setFrameShape(QFrame::Box);
|
||||||
setAlignment(Qt::AlignCenter);
|
setAlignment(Qt::AlignCenter);
|
||||||
|
|
|
@ -37,6 +37,7 @@
|
||||||
#include "util/misc.h"
|
#include "util/misc.h"
|
||||||
#include "util/qtthreadsutils.h"
|
#include "util/qtthreadsutils.h"
|
||||||
#include "util/QtVersion.h"
|
#include "util/QtVersion.h"
|
||||||
|
#include "util/RsQtVersion.h"
|
||||||
|
|
||||||
#include "retroshare/rsmsgs.h"
|
#include "retroshare/rsmsgs.h"
|
||||||
#include "retroshare/rspeers.h"
|
#include "retroshare/rspeers.h"
|
||||||
|
@ -456,7 +457,7 @@ static void updateItem(QTreeWidget *treeWidget, QTreeWidgetItem *item, ChatLobby
|
||||||
if(lobby_flags & RS_CHAT_LOBBY_FLAGS_PGP_SIGNED)
|
if(lobby_flags & RS_CHAT_LOBBY_FLAGS_PGP_SIGNED)
|
||||||
{
|
{
|
||||||
tooltipstr += QObject::tr("\nSecurity: no anonymous IDs") ;
|
tooltipstr += QObject::tr("\nSecurity: no anonymous IDs") ;
|
||||||
QColor foreground = QColor(0, 128, 0); // green
|
QColor foreground = QColor(16, 157, 0); // green
|
||||||
for (int column = 0; column < COLUMN_COUNT; ++column)
|
for (int column = 0; column < COLUMN_COUNT; ++column)
|
||||||
item->setData(column, Qt::ForegroundRole, foreground);
|
item->setData(column, Qt::ForegroundRole, foreground);
|
||||||
}
|
}
|
||||||
|
|
|
@ -38,6 +38,7 @@
|
||||||
#include "gui/gxs/GxsIdDetails.h"
|
#include "gui/gxs/GxsIdDetails.h"
|
||||||
#include "gui/Identity/IdDialog.h"
|
#include "gui/Identity/IdDialog.h"
|
||||||
#include "gui/Identity/IdEditDialog.h"
|
#include "gui/Identity/IdEditDialog.h"
|
||||||
|
#include "util/RsQtVersion.h"
|
||||||
|
|
||||||
//#define DEBUG_CREATE_CIRCLE_DIALOG 1
|
//#define DEBUG_CREATE_CIRCLE_DIALOG 1
|
||||||
|
|
||||||
|
@ -74,7 +75,7 @@ CreateCircleDialog::CreateCircleDialog()
|
||||||
ui.IdFilter->addFilter(QIcon(), headerText, RSCIRCLEID_COL_KEYID, QString("%1 %2").arg(tr("Search"), headerText));
|
ui.IdFilter->addFilter(QIcon(), headerText, RSCIRCLEID_COL_KEYID, QString("%1 %2").arg(tr("Search"), headerText));
|
||||||
|
|
||||||
/* Set initial column width */
|
/* Set initial column width */
|
||||||
int fontWidth = QFontMetricsF(ui.treeWidget_IdList->font()).width("W");
|
int fontWidth = QFontMetrics_horizontalAdvance(QFontMetricsF(ui.treeWidget_IdList->font()), "W");
|
||||||
ui.treeWidget_IdList->setColumnWidth(RSCIRCLEID_COL_NICKNAME, 17 * fontWidth);
|
ui.treeWidget_IdList->setColumnWidth(RSCIRCLEID_COL_NICKNAME, 17 * fontWidth);
|
||||||
ui.treeWidget_membership->setColumnWidth(RSCIRCLEID_COL_NICKNAME, 17 * fontWidth);
|
ui.treeWidget_membership->setColumnWidth(RSCIRCLEID_COL_NICKNAME, 17 * fontWidth);
|
||||||
|
|
||||||
|
|
|
@ -24,6 +24,7 @@
|
||||||
#include "retroshare/rsfiles.h"
|
#include "retroshare/rsfiles.h"
|
||||||
|
|
||||||
#include "BannedFilesDialog.h"
|
#include "BannedFilesDialog.h"
|
||||||
|
#include "util/DateTime.h"
|
||||||
|
|
||||||
#define COLUMN_FILE_NAME 0
|
#define COLUMN_FILE_NAME 0
|
||||||
#define COLUMN_FILE_HASH 1
|
#define COLUMN_FILE_HASH 1
|
||||||
|
@ -80,7 +81,7 @@ void BannedFilesDialog::fillFilesList()
|
||||||
ui.bannedFiles_TW->setItem(row, COLUMN_FILE_NAME, new QTableWidgetItem(QIcon(),QString::fromUtf8(it->second.mFilename.c_str()),0));
|
ui.bannedFiles_TW->setItem(row, COLUMN_FILE_NAME, new QTableWidgetItem(QIcon(),QString::fromUtf8(it->second.mFilename.c_str()),0));
|
||||||
ui.bannedFiles_TW->setItem(row, COLUMN_FILE_HASH, new QTableWidgetItem(QIcon(),QString::fromStdString(it->first.toStdString()),0));
|
ui.bannedFiles_TW->setItem(row, COLUMN_FILE_HASH, new QTableWidgetItem(QIcon(),QString::fromStdString(it->first.toStdString()),0));
|
||||||
ui.bannedFiles_TW->setItem(row, COLUMN_FILE_SIZE, new QTableWidgetItem(QIcon(),QString::number(it->second.mSize),0));
|
ui.bannedFiles_TW->setItem(row, COLUMN_FILE_SIZE, new QTableWidgetItem(QIcon(),QString::number(it->second.mSize),0));
|
||||||
ui.bannedFiles_TW->setItem(row, COLUMN_FILE_TIME, new QTableWidgetItem(QIcon(),QDateTime::fromTime_t(it->second.mBanTimeStamp).toString(),0));
|
ui.bannedFiles_TW->setItem(row, COLUMN_FILE_TIME, new QTableWidgetItem(QIcon(),DateTime::DateTimeFromTime_t(it->second.mBanTimeStamp).toString(),0));
|
||||||
|
|
||||||
ui.bannedFiles_TW->item(row, COLUMN_FILE_HASH)->setData(Qt::UserRole, QString::fromStdString(it->first.toStdString()));
|
ui.bannedFiles_TW->item(row, COLUMN_FILE_HASH)->setData(Qt::UserRole, QString::fromStdString(it->first.toStdString()));
|
||||||
|
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
#include <retroshare/rstypes.h>
|
#include <retroshare/rstypes.h>
|
||||||
#include <QModelIndex>
|
#include <QModelIndex>
|
||||||
#include <QPainter>
|
#include <QPainter>
|
||||||
#include <QStyleOptionProgressBarV2>
|
#include <QStyleOptionProgressBar>
|
||||||
#include <QProgressBar>
|
#include <QProgressBar>
|
||||||
#include <QApplication>
|
#include <QApplication>
|
||||||
#include <QDateTime>
|
#include <QDateTime>
|
||||||
|
@ -29,6 +29,8 @@
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
|
|
||||||
#include "DLListDelegate.h"
|
#include "DLListDelegate.h"
|
||||||
|
#include "util/DateTime.h"
|
||||||
|
#include "util/RsQtVersion.h"
|
||||||
|
|
||||||
Q_DECLARE_METATYPE(FileProgressInfo)
|
Q_DECLARE_METATYPE(FileProgressInfo)
|
||||||
|
|
||||||
|
@ -42,7 +44,7 @@ void DLListDelegate::paint(QPainter * painter, const QStyleOptionViewItem & opti
|
||||||
{
|
{
|
||||||
QString byteUnits[4] = {tr("B"), tr("KB"), tr("MB"), tr("GB")};
|
QString byteUnits[4] = {tr("B"), tr("KB"), tr("MB"), tr("GB")};
|
||||||
QStyleOptionViewItem opt = option;
|
QStyleOptionViewItem opt = option;
|
||||||
QStyleOptionProgressBarV2 newopt;
|
QStyleOptionProgressBar newopt;
|
||||||
QRect pixmapRect;
|
QRect pixmapRect;
|
||||||
QPixmap pixmap;
|
QPixmap pixmap;
|
||||||
qlonglong fileSize;
|
qlonglong fileSize;
|
||||||
|
@ -59,7 +61,7 @@ void DLListDelegate::paint(QPainter * painter, const QStyleOptionViewItem & opti
|
||||||
painter->setClipRect(opt.rect);
|
painter->setClipRect(opt.rect);
|
||||||
|
|
||||||
//set text color
|
//set text color
|
||||||
QVariant value = index.data(Qt::TextColorRole);
|
QVariant value = index.data(Qt::ForegroundRole);
|
||||||
if(value.isValid() && qvariant_cast<QColor>(value).isValid()) {
|
if(value.isValid() && qvariant_cast<QColor>(value).isValid()) {
|
||||||
opt.palette.setColor(QPalette::Text, qvariant_cast<QColor>(value));
|
opt.palette.setColor(QPalette::Text, qvariant_cast<QColor>(value));
|
||||||
}
|
}
|
||||||
|
@ -94,7 +96,7 @@ void DLListDelegate::paint(QPainter * painter, const QStyleOptionViewItem & opti
|
||||||
for(int i = 0; i < 4; ++i) {
|
for(int i = 0; i < 4; ++i) {
|
||||||
if (fileSize < 1024) {
|
if (fileSize < 1024) {
|
||||||
fileSize = index.data().toLongLong();
|
fileSize = index.data().toLongLong();
|
||||||
temp.sprintf("%.2f ", fileSize / multi);
|
temp = QString::asprintf("%.2f ", fileSize / multi);
|
||||||
temp += byteUnits[i];
|
temp += byteUnits[i];
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -113,7 +115,7 @@ void DLListDelegate::paint(QPainter * painter, const QStyleOptionViewItem & opti
|
||||||
for(int i = 0; i < 4; ++i) {
|
for(int i = 0; i < 4; ++i) {
|
||||||
if (remaining < 1024) {
|
if (remaining < 1024) {
|
||||||
remaining = index.data().toLongLong();
|
remaining = index.data().toLongLong();
|
||||||
temp.sprintf("%.2f ", remaining / multi);
|
temp = QString::asprintf("%.2f ", remaining / multi);
|
||||||
temp += byteUnits[i];
|
temp += byteUnits[i];
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -132,7 +134,7 @@ void DLListDelegate::paint(QPainter * painter, const QStyleOptionViewItem & opti
|
||||||
for(int i = 0; i < 4; ++i) {
|
for(int i = 0; i < 4; ++i) {
|
||||||
if (completed < 1024) {
|
if (completed < 1024) {
|
||||||
completed = index.data().toLongLong();
|
completed = index.data().toLongLong();
|
||||||
temp.sprintf("%.2f ", completed / multi);
|
temp = QString::asprintf("%.2f ", completed / multi);
|
||||||
temp += byteUnits[i];
|
temp += byteUnits[i];
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -148,7 +150,7 @@ void DLListDelegate::paint(QPainter * painter, const QStyleOptionViewItem & opti
|
||||||
temp = "";
|
temp = "";
|
||||||
} else {
|
} else {
|
||||||
temp.clear();
|
temp.clear();
|
||||||
temp.sprintf("%.2f", dlspeed/1024.);
|
temp = QString::asprintf("%.2f", dlspeed/1024.);
|
||||||
temp += " KB/s";
|
temp += " KB/s";
|
||||||
}
|
}
|
||||||
painter->drawText(option.rect, Qt::AlignRight | Qt::AlignVCenter, temp);
|
painter->drawText(option.rect, Qt::AlignRight | Qt::AlignVCenter, temp);
|
||||||
|
@ -261,7 +263,7 @@ void DLListDelegate::paint(QPainter * painter, const QStyleOptionViewItem & opti
|
||||||
break;
|
break;
|
||||||
qi64Value = index.data().value<qint64>();
|
qi64Value = index.data().value<qint64>();
|
||||||
if (qi64Value < std::numeric_limits<qint64>::max()){
|
if (qi64Value < std::numeric_limits<qint64>::max()){
|
||||||
QDateTime qdtLastDL = QDateTime::fromTime_t(qi64Value);
|
QDateTime qdtLastDL = DateTime::DateTimeFromTime_t(qi64Value);
|
||||||
painter->drawText(option.rect, Qt::AlignCenter, qdtLastDL.toString("yyyy-MM-dd_hh:mm:ss"));
|
painter->drawText(option.rect, Qt::AlignCenter, qdtLastDL.toString("yyyy-MM-dd_hh:mm:ss"));
|
||||||
} else {
|
} else {
|
||||||
painter->drawText(option.rect, Qt::AlignCenter, tr("File Never Seen"));
|
painter->drawText(option.rect, Qt::AlignCenter, tr("File Never Seen"));
|
||||||
|
@ -277,7 +279,7 @@ void DLListDelegate::paint(QPainter * painter, const QStyleOptionViewItem & opti
|
||||||
|
|
||||||
QSize DLListDelegate::sizeHint(const QStyleOptionViewItem & option, const QModelIndex & index) const
|
QSize DLListDelegate::sizeHint(const QStyleOptionViewItem & option, const QModelIndex & index) const
|
||||||
{
|
{
|
||||||
float w = QFontMetricsF(option.font).width(index.data(Qt::DisplayRole).toString());
|
float w = QFontMetrics_horizontalAdvance(QFontMetricsF(option.font), index.data(Qt::DisplayRole).toString());
|
||||||
|
|
||||||
int S = QFontMetricsF(option.font).height()*1.5 ;
|
int S = QFontMetricsF(option.font).height()*1.5 ;
|
||||||
return QSize(w,S);
|
return QSize(w,S);
|
||||||
|
|
|
@ -29,6 +29,7 @@
|
||||||
#include "FileTransferInfoWidget.h"
|
#include "FileTransferInfoWidget.h"
|
||||||
#include "gui/RetroShareLink.h"
|
#include "gui/RetroShareLink.h"
|
||||||
#include "gui/common/FilesDefs.h"
|
#include "gui/common/FilesDefs.h"
|
||||||
|
#include "gui/settings/rsharesettings.h"
|
||||||
|
|
||||||
// Variables to decide of display behaviour. All variables are expressed as a factor of font height
|
// Variables to decide of display behaviour. All variables are expressed as a factor of font height
|
||||||
//
|
//
|
||||||
|
@ -84,7 +85,7 @@ void FileTransferInfoWidget::updateDisplay()
|
||||||
setFixedHeight(maxHeight);
|
setFixedHeight(maxHeight);
|
||||||
|
|
||||||
QPainter painter(&pixmap);
|
QPainter painter(&pixmap);
|
||||||
painter.initFrom(this);
|
painter.begin(this);
|
||||||
|
|
||||||
float S = QFontMetricsF(font()).height();
|
float S = QFontMetricsF(font()).height();
|
||||||
int chunk_square_size = S*chunk_square_size_factor;
|
int chunk_square_size = S*chunk_square_size_factor;
|
||||||
|
@ -132,7 +133,13 @@ void FileTransferInfoWidget::draw(const FileInfo& nfo,const FileChunksInfo& info
|
||||||
int ch_num_size = ch_num_size_factor*S ;
|
int ch_num_size = ch_num_size_factor*S ;
|
||||||
int tab_size = tab_size_factor*S ;
|
int tab_size = tab_size_factor*S ;
|
||||||
|
|
||||||
painter->setPen(QColor::fromRgb(0,0,0)) ;
|
if (Settings->getSheetName() == ":Standard_Dark"){
|
||||||
|
penColor = Qt::gray ;
|
||||||
|
} else {
|
||||||
|
penColor = Qt::black ;
|
||||||
|
}
|
||||||
|
|
||||||
|
painter->setPen(penColor) ;
|
||||||
y += text_height ;
|
y += text_height ;
|
||||||
painter->drawText(0,y,tr("Chunk map") + ":") ;
|
painter->drawText(0,y,tr("Chunk map") + ":") ;
|
||||||
y += block_sep ;
|
y += block_sep ;
|
||||||
|
@ -176,13 +183,13 @@ void FileTransferInfoWidget::draw(const FileInfo& nfo,const FileChunksInfo& info
|
||||||
uint32_t sizeY = 1*S ;
|
uint32_t sizeY = 1*S ;
|
||||||
y += block_sep ;
|
y += block_sep ;
|
||||||
y += text_height ;
|
y += text_height ;
|
||||||
painter->setPen(QColor::fromRgb(0,0,0)) ;
|
painter->setPen(penColor) ;
|
||||||
painter->drawText(0,y,tr("Active chunks") + ":") ;
|
painter->drawText(0,y,tr("Active chunks") + ":") ;
|
||||||
y += block_sep ;
|
y += block_sep ;
|
||||||
|
|
||||||
for(uint i=0;i<info.active_chunks.size();++i)
|
for(uint i=0;i<info.active_chunks.size();++i)
|
||||||
{
|
{
|
||||||
painter->setPen(QColor::fromRgb(0,0,0)) ;
|
painter->setPen(penColor) ;
|
||||||
painter->drawText(0.5*S,y+text_height*0.9,QString::number(info.active_chunks[i].first)) ;
|
painter->drawText(0.5*S,y+text_height*0.9,QString::number(info.active_chunks[i].first)) ;
|
||||||
|
|
||||||
int size_of_this_chunk = ( info.active_chunks[i].first == info.chunks.size()-1 && ((info.file_size % blockSize)>0) )?(info.file_size % blockSize):blockSize ;
|
int size_of_this_chunk = ( info.active_chunks[i].first == info.chunks.size()-1 && ((info.file_size % blockSize)>0) )?(info.file_size % blockSize):blockSize ;
|
||||||
|
@ -212,7 +219,7 @@ void FileTransferInfoWidget::draw(const FileInfo& nfo,const FileChunksInfo& info
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
painter->setPen(QColor::fromRgb(0,0,0)) ;
|
painter->setPen(penColor) ;
|
||||||
float percent = (size_of_this_chunk - info.active_chunks[i].second)*100.0/size_of_this_chunk ;
|
float percent = (size_of_this_chunk - info.active_chunks[i].second)*100.0/size_of_this_chunk ;
|
||||||
|
|
||||||
painter->drawText(sizeX+5.5*S,y+text_height*0.9,QString::number(percent,'f',2) + " %") ;
|
painter->drawText(sizeX+5.5*S,y+text_height*0.9,QString::number(percent,'f',2) + " %") ;
|
||||||
|
@ -227,7 +234,7 @@ void FileTransferInfoWidget::draw(const FileInfo& nfo,const FileChunksInfo& info
|
||||||
|
|
||||||
y += block_sep ;
|
y += block_sep ;
|
||||||
y += text_height ;
|
y += text_height ;
|
||||||
painter->setPen(QColor::fromRgb(0,0,0)) ;
|
painter->setPen(penColor) ;
|
||||||
painter->drawText(0,y,(info.compressed_peer_availability_maps.size() == 1 ? tr("Availability map (%1 active source)") : tr("Availability map (%1 active sources)")).arg(info.compressed_peer_availability_maps.size())) ;
|
painter->drawText(0,y,(info.compressed_peer_availability_maps.size() == 1 ? tr("Availability map (%1 active source)") : tr("Availability map (%1 active sources)")).arg(info.compressed_peer_availability_maps.size())) ;
|
||||||
y += block_sep ;
|
y += block_sep ;
|
||||||
|
|
||||||
|
@ -254,7 +261,8 @@ void FileTransferInfoWidget::draw(const FileInfo& nfo,const FileChunksInfo& info
|
||||||
|
|
||||||
// various info:
|
// various info:
|
||||||
//
|
//
|
||||||
painter->setPen(QColor::fromRgb(0,0,0)) ;
|
painter->setPen(penColor) ;
|
||||||
|
|
||||||
y += text_height ; painter->drawText(0,y,tr("File info") + ":") ;
|
y += text_height ; painter->drawText(0,y,tr("File info") + ":") ;
|
||||||
y += block_sep ;
|
y += block_sep ;
|
||||||
y += text_height ; painter->drawText(2*S,y,tr("File name") + ":") ; painter->drawText(tab_size,y,QString::fromUtf8(nfo.fname.c_str())) ;
|
y += text_height ; painter->drawText(2*S,y,tr("File name") + ":") ; painter->drawText(tab_size,y,QString::fromUtf8(nfo.fname.c_str())) ;
|
||||||
|
|
|
@ -24,6 +24,7 @@
|
||||||
#include <QWidget>
|
#include <QWidget>
|
||||||
#include <QPainter>
|
#include <QPainter>
|
||||||
#include <QBitmap>
|
#include <QBitmap>
|
||||||
|
#include <QColor>
|
||||||
|
|
||||||
#include <retroshare-gui/RsAutoUpdatePage.h>
|
#include <retroshare-gui/RsAutoUpdatePage.h>
|
||||||
#include <retroshare/rstypes.h>
|
#include <retroshare/rstypes.h>
|
||||||
|
@ -36,7 +37,7 @@ class FileTransferInfoWidget : public RsAutoUpdatePage
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
FileTransferInfoWidget(QWidget * parent = 0, Qt::WindowFlags f = 0 );
|
FileTransferInfoWidget(QWidget * parent = 0, Qt::WindowFlags f = Qt::WindowFlags() );
|
||||||
|
|
||||||
void setFileHash(const RsFileHash& hash) { _file_hash = hash ; }
|
void setFileHash(const RsFileHash& hash) { _file_hash = hash ; }
|
||||||
|
|
||||||
|
@ -58,6 +59,7 @@ private:
|
||||||
QPixmap downloadingPixmap;
|
QPixmap downloadingPixmap;
|
||||||
QPixmap notDownloadPixmap;
|
QPixmap notDownloadPixmap;
|
||||||
QPixmap checkingPixmap;
|
QPixmap checkingPixmap;
|
||||||
|
QColor penColor;
|
||||||
|
|
||||||
RsFileHash _file_hash ;
|
RsFileHash _file_hash ;
|
||||||
};
|
};
|
||||||
|
|
|
@ -36,7 +36,7 @@
|
||||||
#include "gui/settings/rsharesettings.h"
|
#include "gui/settings/rsharesettings.h"
|
||||||
#include "gui/advsearch/advancedsearchdialog.h"
|
#include "gui/advsearch/advancedsearchdialog.h"
|
||||||
#include "gui/common/RSTreeWidgetItem.h"
|
#include "gui/common/RSTreeWidgetItem.h"
|
||||||
#include "util/QtVersion.h"
|
#include "util/RsQtVersion.h"
|
||||||
#include "util/qtthreadsutils.h"
|
#include "util/qtthreadsutils.h"
|
||||||
#include "util/misc.h"
|
#include "util/misc.h"
|
||||||
|
|
||||||
|
@ -898,7 +898,7 @@ void SearchDialog::searchKeywords(const QString& keywords)
|
||||||
if (keywords.length() < 3)
|
if (keywords.length() < 3)
|
||||||
return ;
|
return ;
|
||||||
|
|
||||||
QStringList qWords = keywords.split(" ", QString::SkipEmptyParts);
|
QStringList qWords = keywords.split(" ", QtSkipEmptyParts);
|
||||||
std::list<std::string> words;
|
std::list<std::string> words;
|
||||||
QStringListIterator qWordsIter(qWords);
|
QStringListIterator qWordsIter(qWords);
|
||||||
while (qWordsIter.hasNext())
|
while (qWordsIter.hasNext())
|
||||||
|
@ -1236,7 +1236,7 @@ void SearchDialog::insertFile(qulonglong searchId, const FileDetail& file, int s
|
||||||
int friendSource = 0;
|
int friendSource = 0;
|
||||||
int anonymousSource = 0;
|
int anonymousSource = 0;
|
||||||
QString resultCount = it->text(SR_SOURCES_COL);
|
QString resultCount = it->text(SR_SOURCES_COL);
|
||||||
QStringList modifiedResultCount = resultCount.split("/", QString::SkipEmptyParts);
|
QStringList modifiedResultCount = resultCount.split("/", QtSkipEmptyParts);
|
||||||
if(searchType == FRIEND_SEARCH)
|
if(searchType == FRIEND_SEARCH)
|
||||||
{
|
{
|
||||||
friendSource = modifiedResultCount.at(0).toInt() + 1;
|
friendSource = modifiedResultCount.at(0).toInt() + 1;
|
||||||
|
|
|
@ -32,7 +32,7 @@
|
||||||
#include "gui/gxsforums/GxsForumsDialog.h"
|
#include "gui/gxsforums/GxsForumsDialog.h"
|
||||||
#include "gui/settings/AddFileAssociationDialog.h"
|
#include "gui/settings/AddFileAssociationDialog.h"
|
||||||
#include "gui/settings/rsharesettings.h"
|
#include "gui/settings/rsharesettings.h"
|
||||||
#include "util/QtVersion.h"
|
#include "util/RsQtVersion.h"
|
||||||
#include "util/RsAction.h"
|
#include "util/RsAction.h"
|
||||||
#include "util/qtthreadsutils.h"
|
#include "util/qtthreadsutils.h"
|
||||||
#include "util/misc.h"
|
#include "util/misc.h"
|
||||||
|
@ -145,7 +145,7 @@ public:
|
||||||
{
|
{
|
||||||
Q_ASSERT(index.isValid());
|
Q_ASSERT(index.isValid());
|
||||||
|
|
||||||
QStyleOptionViewItemV4 opt = option;
|
QStyleOptionViewItem opt = option;
|
||||||
initStyleOption(&opt, index);
|
initStyleOption(&opt, index);
|
||||||
// disable default icon
|
// disable default icon
|
||||||
opt.icon = QIcon();
|
opt.icon = QIcon();
|
||||||
|
@ -227,7 +227,7 @@ SharedFilesDialog::SharedFilesDialog(bool remote_mode, QWidget *parent)
|
||||||
tree_proxyModel->setSortRole(RetroshareDirModel::SortRole);
|
tree_proxyModel->setSortRole(RetroshareDirModel::SortRole);
|
||||||
tree_proxyModel->sort(SHARED_FILES_DIALOG_COLUMN_NAME);
|
tree_proxyModel->sort(SHARED_FILES_DIALOG_COLUMN_NAME);
|
||||||
tree_proxyModel->setFilterRole(RetroshareDirModel::FilterRole);
|
tree_proxyModel->setFilterRole(RetroshareDirModel::FilterRole);
|
||||||
tree_proxyModel->setFilterRegExp(QRegExp(QString(SHARED_FILES_DIALOG_FILTER_STRING))) ;
|
QSortFilterProxyModel_setFilterRegularExpression(tree_proxyModel, QString(SHARED_FILES_DIALOG_FILTER_STRING)) ;
|
||||||
|
|
||||||
flat_proxyModel = new SFDSortFilterProxyModel(flat_model, this);
|
flat_proxyModel = new SFDSortFilterProxyModel(flat_model, this);
|
||||||
flat_proxyModel->setSourceModel(flat_model);
|
flat_proxyModel->setSourceModel(flat_model);
|
||||||
|
@ -235,7 +235,7 @@ SharedFilesDialog::SharedFilesDialog(bool remote_mode, QWidget *parent)
|
||||||
flat_proxyModel->setSortRole(RetroshareDirModel::SortRole);
|
flat_proxyModel->setSortRole(RetroshareDirModel::SortRole);
|
||||||
flat_proxyModel->sort(SHARED_FILES_DIALOG_COLUMN_NAME);
|
flat_proxyModel->sort(SHARED_FILES_DIALOG_COLUMN_NAME);
|
||||||
flat_proxyModel->setFilterRole(RetroshareDirModel::FilterRole);
|
flat_proxyModel->setFilterRole(RetroshareDirModel::FilterRole);
|
||||||
flat_proxyModel->setFilterRegExp(QRegExp(QString(SHARED_FILES_DIALOG_FILTER_STRING))) ;
|
QSortFilterProxyModel_setFilterRegularExpression(flat_proxyModel, QString(SHARED_FILES_DIALOG_FILTER_STRING)) ;
|
||||||
|
|
||||||
connect(ui.filterClearButton, SIGNAL(clicked()), this, SLOT(clearFilter()));
|
connect(ui.filterClearButton, SIGNAL(clicked()), this, SLOT(clearFilter()));
|
||||||
connect(ui.filterStartButton, SIGNAL(clicked()), this, SLOT(startFilter()));
|
connect(ui.filterStartButton, SIGNAL(clicked()), this, SLOT(startFilter()));
|
||||||
|
@ -1046,7 +1046,7 @@ void SharedFilesDialog::recursExpandAll(const QModelIndex& index)
|
||||||
|
|
||||||
for(int row=0;row<ui.dirTreeView->model()->rowCount(index);++row)
|
for(int row=0;row<ui.dirTreeView->model()->rowCount(index);++row)
|
||||||
{
|
{
|
||||||
QModelIndex idx(index.child(row,0)) ;
|
QModelIndex idx(ui.dirTreeView->model()->index(row,0,index)) ;
|
||||||
|
|
||||||
if(ui.dirTreeView->model()->rowCount(idx) > 0)
|
if(ui.dirTreeView->model()->rowCount(idx) > 0)
|
||||||
recursExpandAll(idx) ;
|
recursExpandAll(idx) ;
|
||||||
|
@ -1159,7 +1159,10 @@ void SharedFilesDialog::postModDirectories(bool local)
|
||||||
#ifdef DEBUG_SHARED_FILES_DIALOG
|
#ifdef DEBUG_SHARED_FILES_DIALOG
|
||||||
std::cerr << "****** updated directories! Re-enabling sorting ******" << std::endl;
|
std::cerr << "****** updated directories! Re-enabling sorting ******" << std::endl;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if QT_VERSION < QT_VERSION_CHECK (6, 0, 0)
|
||||||
QCoreApplication::flush();
|
QCoreApplication::flush();
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
class ChannelCompare
|
class ChannelCompare
|
||||||
|
@ -1647,7 +1650,7 @@ void SharedFilesDialog::FilterItems()
|
||||||
return ;
|
return ;
|
||||||
|
|
||||||
//FileSearchFlags flags = isRemote()?RS_FILE_HINTS_REMOTE:RS_FILE_HINTS_LOCAL;
|
//FileSearchFlags flags = isRemote()?RS_FILE_HINTS_REMOTE:RS_FILE_HINTS_LOCAL;
|
||||||
QStringList lst = text.split(" ",QString::SkipEmptyParts) ;
|
QStringList lst = text.split(" ",QtSkipEmptyParts) ;
|
||||||
std::list<std::string> keywords ;
|
std::list<std::string> keywords ;
|
||||||
|
|
||||||
for(auto it(lst.begin());it!=lst.end();++it)
|
for(auto it(lst.begin());it!=lst.end();++it)
|
||||||
|
|
|
@ -37,9 +37,10 @@
|
||||||
#include "gui/FileTransfer/xprogressbar.h"
|
#include "gui/FileTransfer/xprogressbar.h"
|
||||||
#include "gui/settings/rsharesettings.h"
|
#include "gui/settings/rsharesettings.h"
|
||||||
#include "util/misc.h"
|
#include "util/misc.h"
|
||||||
#include "util/QtVersion.h"
|
#include "util/RsQtVersion.h"
|
||||||
#include "util/RsFile.h"
|
#include "util/RsFile.h"
|
||||||
#include "util/qtthreadsutils.h"
|
#include "util/qtthreadsutils.h"
|
||||||
|
#include "util/DateTime.h"
|
||||||
|
|
||||||
#include "retroshare/rsdisc.h"
|
#include "retroshare/rsdisc.h"
|
||||||
#include "retroshare/rsfiles.h"
|
#include "retroshare/rsfiles.h"
|
||||||
|
@ -286,7 +287,7 @@ public:
|
||||||
{
|
{
|
||||||
case Qt::SizeHintRole: return sizeHintRole(index.column()) ;
|
case Qt::SizeHintRole: return sizeHintRole(index.column()) ;
|
||||||
case Qt::TextAlignmentRole:
|
case Qt::TextAlignmentRole:
|
||||||
case Qt::TextColorRole:
|
case Qt::ForegroundRole:
|
||||||
case Qt::WhatsThisRole:
|
case Qt::WhatsThisRole:
|
||||||
case Qt::EditRole:
|
case Qt::EditRole:
|
||||||
case Qt::ToolTipRole:
|
case Qt::ToolTipRole:
|
||||||
|
@ -434,7 +435,7 @@ public:
|
||||||
|
|
||||||
//Get Last Access on File
|
//Get Last Access on File
|
||||||
if (file.exists())
|
if (file.exists())
|
||||||
qi64LastDL = file.lastModified().toTime_t();
|
qi64LastDL = DateTime::DateTimeToTime_t(file.lastModified());
|
||||||
}
|
}
|
||||||
return QVariant(qi64LastDL) ;
|
return QVariant(qi64LastDL) ;
|
||||||
}
|
}
|
||||||
|
@ -2646,5 +2647,5 @@ void TransfersDialog::filterChanged(const QString& /*text*/)
|
||||||
int filterColumn = ui.filterLineEdit->currentFilter();
|
int filterColumn = ui.filterLineEdit->currentFilter();
|
||||||
QString text = ui.filterLineEdit->text();
|
QString text = ui.filterLineEdit->text();
|
||||||
DLLFilterModel->setFilterKeyColumn(filterColumn);
|
DLLFilterModel->setFilterKeyColumn(filterColumn);
|
||||||
DLLFilterModel->setFilterRegExp(text);
|
QSortFilterProxyModel_setFilterRegularExpression(DLLFilterModel, text);
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,6 +22,7 @@
|
||||||
|
|
||||||
#include "ULListDelegate.h"
|
#include "ULListDelegate.h"
|
||||||
#include "xprogressbar.h"
|
#include "xprogressbar.h"
|
||||||
|
#include "util/RsQtVersion.h"
|
||||||
|
|
||||||
Q_DECLARE_METATYPE(FileProgressInfo)
|
Q_DECLARE_METATYPE(FileProgressInfo)
|
||||||
|
|
||||||
|
@ -39,7 +40,7 @@ void ULListDelegate::paint(QPainter * painter, const QStyleOptionViewItem & opti
|
||||||
{
|
{
|
||||||
QString byteUnits[4] = {tr("B"), tr("KB"), tr("MB"), tr("GB")};
|
QString byteUnits[4] = {tr("B"), tr("KB"), tr("MB"), tr("GB")};
|
||||||
QStyleOptionViewItem opt = option;
|
QStyleOptionViewItem opt = option;
|
||||||
QStyleOptionProgressBarV2 newopt;
|
QStyleOptionProgressBar newopt;
|
||||||
QRect pixmapRect;
|
QRect pixmapRect;
|
||||||
QPixmap pixmap;
|
QPixmap pixmap;
|
||||||
qlonglong fileSize;
|
qlonglong fileSize;
|
||||||
|
@ -52,7 +53,7 @@ void ULListDelegate::paint(QPainter * painter, const QStyleOptionViewItem & opti
|
||||||
painter->setClipRect(opt.rect);
|
painter->setClipRect(opt.rect);
|
||||||
|
|
||||||
//set text color
|
//set text color
|
||||||
QVariant value = index.data(Qt::TextColorRole);
|
QVariant value = index.data(Qt::ForegroundRole);
|
||||||
if(value.isValid() && qvariant_cast<QColor>(value).isValid()) {
|
if(value.isValid() && qvariant_cast<QColor>(value).isValid()) {
|
||||||
opt.palette.setColor(QPalette::Text, qvariant_cast<QColor>(value));
|
opt.palette.setColor(QPalette::Text, qvariant_cast<QColor>(value));
|
||||||
}
|
}
|
||||||
|
@ -93,7 +94,7 @@ void ULListDelegate::paint(QPainter * painter, const QStyleOptionViewItem & opti
|
||||||
for(int i = 0; i < 4; ++i) {
|
for(int i = 0; i < 4; ++i) {
|
||||||
if (fileSize < 1024) {
|
if (fileSize < 1024) {
|
||||||
fileSize = index.data().toLongLong();
|
fileSize = index.data().toLongLong();
|
||||||
temp.sprintf("%.2f ", fileSize / multi);
|
temp = QString::asprintf("%.2f ", fileSize / multi);
|
||||||
temp += byteUnits[i];
|
temp += byteUnits[i];
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -112,7 +113,7 @@ void ULListDelegate::paint(QPainter * painter, const QStyleOptionViewItem & opti
|
||||||
for(int i = 0; i < 4; ++i) {
|
for(int i = 0; i < 4; ++i) {
|
||||||
if (transferred < 1024) {
|
if (transferred < 1024) {
|
||||||
transferred = index.data().toLongLong();
|
transferred = index.data().toLongLong();
|
||||||
temp.sprintf("%.2f ", transferred / multi);
|
temp = QString::asprintf("%.2f ", transferred / multi);
|
||||||
temp += byteUnits[i];
|
temp += byteUnits[i];
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -128,7 +129,7 @@ void ULListDelegate::paint(QPainter * painter, const QStyleOptionViewItem & opti
|
||||||
temp = "";
|
temp = "";
|
||||||
} else {
|
} else {
|
||||||
temp.clear();
|
temp.clear();
|
||||||
temp.sprintf("%.2f", ulspeed/1024.);
|
temp = QString::asprintf("%.2f", ulspeed/1024.);
|
||||||
temp += " KB/s";
|
temp += " KB/s";
|
||||||
}
|
}
|
||||||
painter->drawText(option.rect, Qt::AlignRight | Qt::AlignVCenter, temp);
|
painter->drawText(option.rect, Qt::AlignRight | Qt::AlignVCenter, temp);
|
||||||
|
@ -179,7 +180,7 @@ void ULListDelegate::paint(QPainter * painter, const QStyleOptionViewItem & opti
|
||||||
|
|
||||||
QSize ULListDelegate::sizeHint(const QStyleOptionViewItem & option, const QModelIndex & index) const
|
QSize ULListDelegate::sizeHint(const QStyleOptionViewItem & option, const QModelIndex & index) const
|
||||||
{
|
{
|
||||||
float w = QFontMetricsF(option.font).width(index.data(Qt::DisplayRole).toString());
|
float w = QFontMetrics_horizontalAdvance(QFontMetricsF(option.font), index.data(Qt::DisplayRole).toString());
|
||||||
|
|
||||||
int S = QFontMetricsF(option.font).height()*1.5 ;
|
int S = QFontMetricsF(option.font).height()*1.5 ;
|
||||||
return QSize(w,S);
|
return QSize(w,S);
|
||||||
|
|
|
@ -234,9 +234,19 @@ void FriendsDialog::chatMessageReceived(const ChatMessage &msg)
|
||||||
|
|
||||||
if(ui.chatWidget->isActive())
|
if(ui.chatWidget->isActive())
|
||||||
{
|
{
|
||||||
// clear the chat notify when control returns to the Qt event loop
|
QDateTime sendTime = DateTime::DateTimeFromTime_t(msg.sendTime);
|
||||||
// we have to do this later, because we don't know if we or the notify receives the chat message first
|
QDateTime recvTime = DateTime::DateTimeFromTime_t(msg.recvTime);
|
||||||
QMetaObject::invokeMethod(this, "clearChatNotify", Qt::QueuedConnection);
|
QString message = QString::fromUtf8(msg.msg.c_str());
|
||||||
|
QString name = QString::fromUtf8(rsPeers->getPeerName(msg.broadcast_peer_id).c_str());
|
||||||
|
|
||||||
|
ui.chatWidget->addChatMsg(msg.incoming, name, sendTime, recvTime, message, ChatWidget::MSGTYPE_NORMAL);
|
||||||
|
|
||||||
|
if(ui.chatWidget->isActive())
|
||||||
|
{
|
||||||
|
// clear the chat notify when control returns to the Qt event loop
|
||||||
|
// we have to do this later, because we don't know if we or the notify receives the chat message first
|
||||||
|
QMetaObject::invokeMethod(this, "clearChatNotify", Qt::QueuedConnection);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -102,7 +102,7 @@
|
||||||
<enum>Qt::NoFocus</enum>
|
<enum>Qt::NoFocus</enum>
|
||||||
</property>
|
</property>
|
||||||
<property name="icon">
|
<property name="icon">
|
||||||
<iconset resource="images.qrc">
|
<iconset resource="icons.qrc">
|
||||||
<normaloff>:/icons/help_64.png</normaloff>:/icons/help_64.png</iconset>
|
<normaloff>:/icons/help_64.png</normaloff>:/icons/help_64.png</iconset>
|
||||||
</property>
|
</property>
|
||||||
<property name="checkable">
|
<property name="checkable">
|
||||||
|
@ -132,10 +132,10 @@
|
||||||
<string notr="true"/>
|
<string notr="true"/>
|
||||||
</property>
|
</property>
|
||||||
<property name="frameShape">
|
<property name="frameShape">
|
||||||
<enum>QFrame::Box</enum>
|
<enum>QFrame::StyledPanel</enum>
|
||||||
</property>
|
</property>
|
||||||
<property name="frameShadow">
|
<property name="frameShadow">
|
||||||
<enum>QFrame::Sunken</enum>
|
<enum>QFrame::Raised</enum>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QGridLayout" name="headerBFrame_GL">
|
<layout class="QGridLayout" name="headerBFrame_GL">
|
||||||
<property name="leftMargin">
|
<property name="leftMargin">
|
||||||
|
@ -401,8 +401,8 @@
|
||||||
</customwidget>
|
</customwidget>
|
||||||
</customwidgets>
|
</customwidgets>
|
||||||
<resources>
|
<resources>
|
||||||
<include location="images.qrc"/>
|
|
||||||
<include location="icons.qrc"/>
|
<include location="icons.qrc"/>
|
||||||
|
<include location="images.qrc"/>
|
||||||
</resources>
|
</resources>
|
||||||
<connections/>
|
<connections/>
|
||||||
</ui>
|
</ui>
|
||||||
|
|
|
@ -613,7 +613,9 @@ void GenCertDialog::genPerson()
|
||||||
std::cout << "Waiting ed->processEvents()" << std::endl;
|
std::cout << "Waiting ed->processEvents()" << std::endl;
|
||||||
#endif
|
#endif
|
||||||
time_t waitEnd = time(NULL) + 10;//Wait no more than 10 sec to processEvents
|
time_t waitEnd = time(NULL) + 10;//Wait no more than 10 sec to processEvents
|
||||||
|
#if QT_VERSION < QT_VERSION_CHECK (6, 0, 0)
|
||||||
if (ed->hasPendingEvents())
|
if (ed->hasPendingEvents())
|
||||||
|
#endif
|
||||||
while(ed->processEvents(QEventLoop::AllEvents) && (time(NULL) < waitEnd));
|
while(ed->processEvents(QEventLoop::AllEvents) && (time(NULL) < waitEnd));
|
||||||
|
|
||||||
std::string email_str = "" ;
|
std::string email_str = "" ;
|
||||||
|
|
|
@ -332,95 +332,8 @@ void GetStartedDialog::emailSupport()
|
||||||
QString text = QString("Hello") + "\n";
|
QString text = QString("Hello") + "\n";
|
||||||
text += "\n";
|
text += "\n";
|
||||||
|
|
||||||
QString sysVersion;
|
QString sysVersion = QSysInfo::prettyProductName();
|
||||||
|
|
||||||
#ifdef __APPLE__
|
|
||||||
|
|
||||||
#ifdef Q_OS_MAC
|
|
||||||
switch(QSysInfo::MacintoshVersion)
|
|
||||||
{
|
|
||||||
case QSysInfo::MV_9:
|
|
||||||
sysVersion = "Mac OS 9";
|
|
||||||
break;
|
|
||||||
case QSysInfo::MV_10_0:
|
|
||||||
sysVersion = "Mac OSX 10.0";
|
|
||||||
break;
|
|
||||||
case QSysInfo::MV_10_1:
|
|
||||||
sysVersion = "Mac OSX 10.1";
|
|
||||||
break;
|
|
||||||
case QSysInfo::MV_10_2:
|
|
||||||
sysVersion = "Mac OSX 10.2";
|
|
||||||
break;
|
|
||||||
case QSysInfo::MV_10_3:
|
|
||||||
sysVersion = "Mac OSX 10.3";
|
|
||||||
break;
|
|
||||||
case QSysInfo::MV_10_4:
|
|
||||||
sysVersion = "Mac OSX 10.4";
|
|
||||||
break;
|
|
||||||
case QSysInfo::MV_10_5:
|
|
||||||
sysVersion = "Mac OSX 10.5";
|
|
||||||
break;
|
|
||||||
case QSysInfo::MV_10_6:
|
|
||||||
sysVersion = "Mac OSX 10.6";
|
|
||||||
break;
|
|
||||||
// case QSysInfo::MV_10_7:
|
|
||||||
// sysVersion = "Mac OSX 10.7";
|
|
||||||
// break;
|
|
||||||
default:
|
|
||||||
sysVersion = "Mac Unknown";
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
sysVersion = "OSX Unknown";
|
|
||||||
#endif
|
|
||||||
#else
|
|
||||||
#if defined(_WIN32) || defined(__MINGW32__)
|
|
||||||
// Windows
|
|
||||||
#ifdef Q_OS_WIN
|
|
||||||
switch(QSysInfo::windowsVersion())
|
|
||||||
{
|
|
||||||
case QSysInfo::WV_32s:
|
|
||||||
sysVersion = "Windows 2.1";
|
|
||||||
break;
|
|
||||||
case QSysInfo::WV_95:
|
|
||||||
sysVersion = "Windows 95";
|
|
||||||
break;
|
|
||||||
case QSysInfo::WV_98:
|
|
||||||
sysVersion = "Windows 98";
|
|
||||||
break;
|
|
||||||
case QSysInfo::WV_Me:
|
|
||||||
sysVersion = "Windows Me";
|
|
||||||
break;
|
|
||||||
case QSysInfo::WV_NT:
|
|
||||||
sysVersion = "Windows NT";
|
|
||||||
break;
|
|
||||||
case QSysInfo::WV_2000:
|
|
||||||
sysVersion = "Windows 2000";
|
|
||||||
break;
|
|
||||||
case QSysInfo::WV_XP:
|
|
||||||
sysVersion = "Windows XP";
|
|
||||||
break;
|
|
||||||
case QSysInfo::WV_2003:
|
|
||||||
sysVersion = "Windows 2003";
|
|
||||||
break;
|
|
||||||
case QSysInfo::WV_VISTA:
|
|
||||||
sysVersion = "Windows Vista";
|
|
||||||
break;
|
|
||||||
case QSysInfo::WV_WINDOWS7:
|
|
||||||
sysVersion = "Windows 7";
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
sysVersion = "Windows";
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
sysVersion = "Windows Unknown";
|
|
||||||
#endif
|
|
||||||
#else
|
|
||||||
// Linux
|
|
||||||
sysVersion = "Linux";
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
text += QString("My RetroShare Configuration is: (%1, %2, %3)").arg(RsApplication::retroshareVersion(true)
|
text += QString("My RetroShare Configuration is: (%1, %2, %3)").arg(RsApplication::retroshareVersion(true)
|
||||||
, sysVersion
|
, sysVersion
|
||||||
).arg(static_cast<typename std::underlying_type<RsConfigUserLvl>::type>(userLevel)) + "\n";
|
).arg(static_cast<typename std::underlying_type<RsConfigUserLvl>::type>(userLevel)) + "\n";
|
||||||
|
|
|
@ -27,11 +27,13 @@
|
||||||
#include "util/misc.h"
|
#include "util/misc.h"
|
||||||
|
|
||||||
#include "gui/notifyqt.h"
|
#include "gui/notifyqt.h"
|
||||||
|
#include "gui/common/FilesDefs.h"
|
||||||
#include "gui/msgs/MessageComposer.h"
|
#include "gui/msgs/MessageComposer.h"
|
||||||
#include "gui/connect/ConnectFriendWizard.h"
|
#include "gui/connect/ConnectFriendWizard.h"
|
||||||
#include "gui/connect/ConfCertDialog.h"
|
#include "gui/connect/ConfCertDialog.h"
|
||||||
#include <gui/QuickStartWizard.h>
|
#include <gui/QuickStartWizard.h>
|
||||||
#include "gui/connect/FriendRecommendDialog.h"
|
#include "gui/connect/FriendRecommendDialog.h"
|
||||||
|
#include "settings/rsharesettings.h"
|
||||||
|
|
||||||
#if QT_VERSION >= QT_VERSION_CHECK(5,0,0)
|
#if QT_VERSION >= QT_VERSION_CHECK(5,0,0)
|
||||||
#include <QUrlQuery>
|
#include <QUrlQuery>
|
||||||
|
@ -63,6 +65,9 @@ HomePage::HomePage(QWidget *parent) :
|
||||||
QAction *RecAction = new QAction(QIcon(),tr("Recommend friends to each others"), this);
|
QAction *RecAction = new QAction(QIcon(),tr("Recommend friends to each others"), this);
|
||||||
connect(RecAction, SIGNAL(triggered()), this, SLOT(recommendFriends()));
|
connect(RecAction, SIGNAL(triggered()), this, SLOT(recommendFriends()));
|
||||||
|
|
||||||
|
QAction *SaveAction = new QAction(QIcon(),tr("Save to File"), this);
|
||||||
|
connect(SaveAction, SIGNAL(triggered()), this, SLOT(saveCert()));
|
||||||
|
|
||||||
QAction *SendAction = new QAction(QIcon(),tr("Send via Email"), this);
|
QAction *SendAction = new QAction(QIcon(),tr("Send via Email"), this);
|
||||||
connect(SendAction, SIGNAL(triggered()), this, SLOT(runEmailClient()));
|
connect(SendAction, SIGNAL(triggered()), this, SLOT(runEmailClient()));
|
||||||
|
|
||||||
|
@ -73,6 +78,7 @@ HomePage::HomePage(QWidget *parent) :
|
||||||
menu->addAction(CopyIdAction);
|
menu->addAction(CopyIdAction);
|
||||||
|
|
||||||
menu->addSeparator();
|
menu->addSeparator();
|
||||||
|
menu->addAction(SaveAction);
|
||||||
menu->addAction(SendAction);
|
menu->addAction(SendAction);
|
||||||
menu->addAction(WebMailAction);
|
menu->addAction(WebMailAction);
|
||||||
menu->addAction(RecAction);
|
menu->addAction(RecAction);
|
||||||
|
@ -135,6 +141,8 @@ HomePage::HomePage(QWidget *parent) :
|
||||||
rsEvents->registerEventsHandler( [this](std::shared_ptr<const RsEvent> event) { handleEvent(event); }, mEventHandlerId, RsEventType::NETWORK );
|
rsEvents->registerEventsHandler( [this](std::shared_ptr<const RsEvent> event) { handleEvent(event); }, mEventHandlerId, RsEventType::NETWORK );
|
||||||
|
|
||||||
updateOwnCert();
|
updateOwnCert();
|
||||||
|
|
||||||
|
updateHomeLogo();
|
||||||
}
|
}
|
||||||
|
|
||||||
void HomePage::handleEvent(std::shared_ptr<const RsEvent> e)
|
void HomePage::handleEvent(std::shared_ptr<const RsEvent> e)
|
||||||
|
@ -344,7 +352,11 @@ void HomePage::saveCert()
|
||||||
//Todo: move save to file to p3Peers::SaveCertificateToFile
|
//Todo: move save to file to p3Peers::SaveCertificateToFile
|
||||||
|
|
||||||
QTextStream ts(&file);
|
QTextStream ts(&file);
|
||||||
|
#if QT_VERSION >= QT_VERSION_CHECK (6, 0, 0)
|
||||||
|
ts.setEncoding(QStringConverter::Utf8);
|
||||||
|
#else
|
||||||
ts.setCodec(QTextCodec::codecForName("UTF-8"));
|
ts.setCodec(QTextCodec::codecForName("UTF-8"));
|
||||||
|
#endif
|
||||||
ts << ui->retroshareid->text();
|
ts << ui->retroshareid->text();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -377,3 +389,18 @@ void HomePage::openWebHelp()
|
||||||
{
|
{
|
||||||
QDesktopServices::openUrl(QUrl(QString("https://retrosharedocs.readthedocs.io/en/latest/")));
|
QDesktopServices::openUrl(QUrl(QString("https://retrosharedocs.readthedocs.io/en/latest/")));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void HomePage::showEvent(QShowEvent *event)
|
||||||
|
{
|
||||||
|
if (!event->spontaneous()) {
|
||||||
|
updateHomeLogo();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void HomePage::updateHomeLogo()
|
||||||
|
{
|
||||||
|
if (Settings->getSheetName() == ":Standard_Dark")
|
||||||
|
ui->label->setPixmap(FilesDefs::getPixmapFromQtResourcePath(":images/logo/logo_web_nobackground_black.png"));
|
||||||
|
else
|
||||||
|
ui->label->setPixmap(FilesDefs::getPixmapFromQtResourcePath(":images/logo/logo_web_nobackground.png"));
|
||||||
|
}
|
||||||
|
|
|
@ -51,6 +51,8 @@ public:
|
||||||
void getOwnCert(QString& invite,QString& description) const;
|
void getOwnCert(QString& invite,QString& description) const;
|
||||||
RetroshareInviteFlags currentInviteFlags() const ;
|
RetroshareInviteFlags currentInviteFlags() const ;
|
||||||
|
|
||||||
|
virtual void showEvent(QShowEvent *) override;
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
#ifdef DEAD_CODE
|
#ifdef DEAD_CODE
|
||||||
void certContextMenu(QPoint);
|
void certContextMenu(QPoint);
|
||||||
|
@ -63,7 +65,8 @@ private slots:
|
||||||
void addFriend();
|
void addFriend();
|
||||||
void webMail();
|
void webMail();
|
||||||
void openWebHelp() ;
|
void openWebHelp() ;
|
||||||
void recommendFriends();
|
void recommendFriends();
|
||||||
|
void updateHomeLogo();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Ui::HomePage *ui;
|
Ui::HomePage *ui;
|
||||||
|
|
|
@ -28,6 +28,7 @@
|
||||||
#include "gui/common/FilesDefs.h"
|
#include "gui/common/FilesDefs.h"
|
||||||
#include "gui/msgs/MessageComposer.h"
|
#include "gui/msgs/MessageComposer.h"
|
||||||
#include "gui/RetroShareLink.h"
|
#include "gui/RetroShareLink.h"
|
||||||
|
#include "util/DateTime.h"
|
||||||
|
|
||||||
#include <retroshare/rspeers.h>
|
#include <retroshare/rspeers.h>
|
||||||
|
|
||||||
|
@ -148,7 +149,7 @@ void IdDetailsDialog::loadIdentity(RsGxsIdGroup data)
|
||||||
ui->autoBanIdentities_CB->setVisible(!data.mPgpId.isNull()) ;
|
ui->autoBanIdentities_CB->setVisible(!data.mPgpId.isNull()) ;
|
||||||
ui->banoption_label->setVisible(!data.mPgpId.isNull()) ;
|
ui->banoption_label->setVisible(!data.mPgpId.isNull()) ;
|
||||||
|
|
||||||
ui->lineEdit_Created->setText(QDateTime::fromMSecsSinceEpoch(qint64(1000)*data.mMeta.mPublishTs).toString(Qt::SystemLocaleShortDate));
|
ui->lineEdit_Created->setText(QLocale::system().toString(DateTime::DateTimeFromTime_t(data.mMeta.mPublishTs), QLocale::ShortFormat));
|
||||||
|
|
||||||
time_t now = time(NULL) ;
|
time_t now = time(NULL) ;
|
||||||
ui->lineEdit_LastUsed->setText(getHumanReadableDuration(now - data.mLastUsageTS)) ;
|
ui->lineEdit_LastUsed->setText(getHumanReadableDuration(now - data.mLastUsageTS)) ;
|
||||||
|
|
|
@ -47,9 +47,10 @@
|
||||||
#include "util/qtthreadsutils.h"
|
#include "util/qtthreadsutils.h"
|
||||||
#include "retroshare-gui/RsAutoUpdatePage.h"
|
#include "retroshare-gui/RsAutoUpdatePage.h"
|
||||||
#include "util/misc.h"
|
#include "util/misc.h"
|
||||||
#include "util/QtVersion.h"
|
#include "util/RsQtVersion.h"
|
||||||
#include "util/rstime.h"
|
#include "util/rstime.h"
|
||||||
#include "util/rsdebug.h"
|
#include "util/rsdebug.h"
|
||||||
|
#include "util/DateTime.h"
|
||||||
|
|
||||||
#include "retroshare/rsgxsflags.h"
|
#include "retroshare/rsgxsflags.h"
|
||||||
#include "retroshare/rsmsgs.h"
|
#include "retroshare/rsmsgs.h"
|
||||||
|
@ -230,7 +231,7 @@ IdDialog::IdDialog(QWidget *parent)
|
||||||
mProxyModel->setSortRole(RsIdentityListModel::SortRole);
|
mProxyModel->setSortRole(RsIdentityListModel::SortRole);
|
||||||
mProxyModel->setSortCaseSensitivity(Qt::CaseInsensitive);
|
mProxyModel->setSortCaseSensitivity(Qt::CaseInsensitive);
|
||||||
mProxyModel->setFilterRole(RsIdentityListModel::FilterRole);
|
mProxyModel->setFilterRole(RsIdentityListModel::FilterRole);
|
||||||
mProxyModel->setFilterRegExp(QRegExp(RsIdentityListModel::FilterString));
|
QSortFilterProxyModel_setFilterRegularExpression(mProxyModel, RsIdentityListModel::FilterString);
|
||||||
|
|
||||||
ui->idTreeWidget->setModel(mProxyModel);
|
ui->idTreeWidget->setModel(mProxyModel);
|
||||||
//ui->idTreeWidget->setSelectionModel(new QItemSelectionModel(mProxyModel));// useless in Qt5.
|
//ui->idTreeWidget->setSelectionModel(new QItemSelectionModel(mProxyModel));// useless in Qt5.
|
||||||
|
@ -393,7 +394,7 @@ IdDialog::IdDialog(QWidget *parent)
|
||||||
|
|
||||||
/* Set initial section sizes */
|
/* Set initial section sizes */
|
||||||
QHeaderView * circlesheader = ui->treeWidget_membership->header () ;
|
QHeaderView * circlesheader = ui->treeWidget_membership->header () ;
|
||||||
circlesheader->resizeSection (CIRCLEGROUP_CIRCLE_COL_GROUPNAME, fm.width("Circle name")*1.5) ;
|
circlesheader->resizeSection (CIRCLEGROUP_CIRCLE_COL_GROUPNAME, QFontMetrics_horizontalAdvance(fm, "Circle name")*1.5) ;
|
||||||
ui->treeWidget_membership->setColumnWidth(CIRCLEGROUP_CIRCLE_COL_GROUPNAME, 270);
|
ui->treeWidget_membership->setColumnWidth(CIRCLEGROUP_CIRCLE_COL_GROUPNAME, 270);
|
||||||
|
|
||||||
/* Setup tree */
|
/* Setup tree */
|
||||||
|
@ -1653,7 +1654,7 @@ void IdDialog::loadIdentity(RsGxsIdGroup data)
|
||||||
/* get GPG Details from rsPeers */
|
/* get GPG Details from rsPeers */
|
||||||
RsPgpId ownPgpId = rsPeers->getGPGOwnId();
|
RsPgpId ownPgpId = rsPeers->getGPGOwnId();
|
||||||
|
|
||||||
ui->lineEdit_PublishTS->setText(QDateTime::fromMSecsSinceEpoch(qint64(1000)*data.mMeta.mPublishTs).toString(Qt::SystemLocaleShortDate));
|
ui->lineEdit_PublishTS->setText(QLocale::system().toString(DateTime::DateTimeFromTime_t(data.mMeta.mPublishTs), QLocale::ShortFormat));
|
||||||
//ui->lineEdit_Nickname->setText(QString::fromUtf8(data.mMeta.mGroupName.c_str()).left(RSID_MAXIMUM_NICKNAME_SIZE));
|
//ui->lineEdit_Nickname->setText(QString::fromUtf8(data.mMeta.mGroupName.c_str()).left(RSID_MAXIMUM_NICKNAME_SIZE));
|
||||||
ui->lineEdit_KeyId->setText(QString::fromStdString(data.mMeta.mGroupId.toStdString()));
|
ui->lineEdit_KeyId->setText(QString::fromStdString(data.mMeta.mGroupId.toStdString()));
|
||||||
//ui->lineEdit_GpgHash->setText(QString::fromStdString(data.mPgpIdHash.toStdString()));
|
//ui->lineEdit_GpgHash->setText(QString::fromStdString(data.mPgpIdHash.toStdString()));
|
||||||
|
@ -2165,7 +2166,7 @@ void IdDialog::headerContextMenuRequested(QPoint)
|
||||||
|
|
||||||
// create menu header
|
// create menu header
|
||||||
//QHBoxLayout *hbox = new QHBoxLayout(widget);
|
//QHBoxLayout *hbox = new QHBoxLayout(widget);
|
||||||
//hbox->setMargin(0);
|
//hbox->setContentsMargins(0, 0, 0, 0);
|
||||||
//hbox->setSpacing(6);
|
//hbox->setSpacing(6);
|
||||||
|
|
||||||
auto addEntry = [&](const QString& name,RsIdentityListModel::Columns col)
|
auto addEntry = [&](const QString& name,RsIdentityListModel::Columns col)
|
||||||
|
@ -2264,7 +2265,7 @@ void IdDialog::IdListCustomPopupMenu( QPoint )
|
||||||
|
|
||||||
// create menu header
|
// create menu header
|
||||||
QHBoxLayout *hbox = new QHBoxLayout(widget);
|
QHBoxLayout *hbox = new QHBoxLayout(widget);
|
||||||
hbox->setMargin(0);
|
hbox->setContentsMargins(0, 0, 0, 0);
|
||||||
hbox->setSpacing(6);
|
hbox->setSpacing(6);
|
||||||
|
|
||||||
QLabel *iconLabel = new QLabel(widget);
|
QLabel *iconLabel = new QLabel(widget);
|
||||||
|
@ -2719,7 +2720,7 @@ void IdDialog::recursSaveExpandedItems_idTreeView(const QModelIndex& proxy_index
|
||||||
expanded.insert(local_path) ;
|
expanded.insert(local_path) ;
|
||||||
|
|
||||||
for(int row=0;row<mProxyModel->rowCount(proxy_index);++row)
|
for(int row=0;row<mProxyModel->rowCount(proxy_index);++row)
|
||||||
recursSaveExpandedItems_idTreeView(proxy_index.child(row,0),local_path,expanded,selected) ;
|
recursSaveExpandedItems_idTreeView(mProxyModel->index(row,0,proxy_index),local_path,expanded,selected) ;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(ui->idTreeWidget->selectionModel()->isSelected(proxy_index))
|
if(ui->idTreeWidget->selectionModel()->isSelected(proxy_index))
|
||||||
|
@ -2751,7 +2752,7 @@ void IdDialog::recursRestoreExpandedItems_idTreeView(const QModelIndex& proxy_in
|
||||||
ui->idTreeWidget->setExpanded(proxy_index,true) ;
|
ui->idTreeWidget->setExpanded(proxy_index,true) ;
|
||||||
|
|
||||||
for(int row=0;row<mProxyModel->rowCount(proxy_index);++row)
|
for(int row=0;row<mProxyModel->rowCount(proxy_index);++row)
|
||||||
recursRestoreExpandedItems_idTreeView(proxy_index.child(row,0),local_path,expanded,selected) ;
|
recursRestoreExpandedItems_idTreeView(mProxyModel->index(row,0,proxy_index),local_path,expanded,selected) ;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(selected.find(local_path) != selected.end())
|
if(selected.find(local_path) != selected.end())
|
||||||
|
|
|
@ -35,6 +35,7 @@
|
||||||
#include "retroshare/rspeers.h"
|
#include "retroshare/rspeers.h"
|
||||||
#include "gui/common/FilesDefs.h"
|
#include "gui/common/FilesDefs.h"
|
||||||
#include "util/imageutil.h"
|
#include "util/imageutil.h"
|
||||||
|
#include "util/RsQtVersion.h"
|
||||||
|
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
|
||||||
|
@ -700,8 +701,8 @@ void IdEditDialog::removeAvatar()
|
||||||
|
|
||||||
void IdEditDialog::updateInterface()
|
void IdEditDialog::updateInterface()
|
||||||
{
|
{
|
||||||
const QPixmap *pixmap = ui->avatarLabel->pixmap();
|
QPixmap pixmap = QLabel_pixmap(ui->avatarLabel);
|
||||||
if (pixmap && !pixmap->isNull()) {
|
if (!pixmap.isNull()) {
|
||||||
ui->removeButton->setEnabled(true);
|
ui->removeButton->setEnabled(true);
|
||||||
} else if (mEditGroup.mImage.mSize > 0) {
|
} else if (mEditGroup.mImage.mSize > 0) {
|
||||||
ui->removeButton->setEnabled(true);
|
ui->removeButton->setEnabled(true);
|
||||||
|
|
|
@ -80,7 +80,7 @@ void LogoBar::init() {
|
||||||
);
|
);
|
||||||
|
|
||||||
QGridLayout * layout = new QGridLayout(this);
|
QGridLayout * layout = new QGridLayout(this);
|
||||||
layout->setMargin(0);
|
layout->setContentsMargins(0, 0, 0, 0);
|
||||||
layout->setSpacing(0);
|
layout->setSpacing(0);
|
||||||
|
|
||||||
layout->addWidget(FillLabel1, 0, 0);
|
layout->addWidget(FillLabel1, 0, 0);
|
||||||
|
|
|
@ -29,6 +29,7 @@
|
||||||
#include <QUrl>
|
#include <QUrl>
|
||||||
#include <QtDebug>
|
#include <QtDebug>
|
||||||
#include <QMenuBar>
|
#include <QMenuBar>
|
||||||
|
#include <QActionGroup>
|
||||||
|
|
||||||
#include "retroshare/rsplugin.h"
|
#include "retroshare/rsplugin.h"
|
||||||
#include "retroshare/rsconfig.h"
|
#include "retroshare/rsconfig.h"
|
||||||
|
@ -262,7 +263,7 @@ MainWindow::MainWindow(QWidget* parent, Qt::WindowFlags flags)
|
||||||
QWidget *widget = new QWidget();
|
QWidget *widget = new QWidget();
|
||||||
widget->setObjectName("trans_statusComboBoxFrame");
|
widget->setObjectName("trans_statusComboBoxFrame");
|
||||||
QHBoxLayout *hbox = new QHBoxLayout();
|
QHBoxLayout *hbox = new QHBoxLayout();
|
||||||
hbox->setMargin(0);
|
hbox->setContentsMargins(0, 0, 0, 0);
|
||||||
hbox->setSpacing(6);
|
hbox->setSpacing(6);
|
||||||
hbox->addWidget(statusComboBox);
|
hbox->addWidget(statusComboBox);
|
||||||
widget->setLayout(hbox);
|
widget->setLayout(hbox);
|
||||||
|
@ -982,7 +983,9 @@ void MainWindow::postModDirectories(bool /*update_local*/)
|
||||||
{
|
{
|
||||||
//RSettingsPage::postModDirectories(update_local);
|
//RSettingsPage::postModDirectories(update_local);
|
||||||
|
|
||||||
|
#if QT_VERSION < QT_VERSION_CHECK (6, 0, 0)
|
||||||
QCoreApplication::flush();
|
QCoreApplication::flush();
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef WINDOWS_SYS
|
#ifdef WINDOWS_SYS
|
||||||
|
|
|
@ -39,7 +39,7 @@ public slots:
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
/** Default Constructor */
|
/** Default Constructor */
|
||||||
MessengerWindow(QWidget *parent = 0, Qt::WindowFlags flags = 0);
|
MessengerWindow(QWidget *parent = 0, Qt::WindowFlags flags = Qt::WindowFlags());
|
||||||
/** Default Destructor */
|
/** Default Destructor */
|
||||||
~MessengerWindow();
|
~MessengerWindow();
|
||||||
|
|
||||||
|
|
|
@ -42,7 +42,7 @@
|
||||||
#include "connect/PGPKeyDialog.h"
|
#include "connect/PGPKeyDialog.h"
|
||||||
#include "settings/rsharesettings.h"
|
#include "settings/rsharesettings.h"
|
||||||
#include "RetroShareLink.h"
|
#include "RetroShareLink.h"
|
||||||
#include "util/QtVersion.h"
|
#include "util/RsQtVersion.h"
|
||||||
|
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
|
|
||||||
|
|
|
@ -44,7 +44,7 @@ pgpid_item_proxy::pgpid_item_proxy(QObject *parent) :
|
||||||
void pgpid_item_proxy::use_only_trusted_keys(bool val)
|
void pgpid_item_proxy::use_only_trusted_keys(bool val)
|
||||||
{
|
{
|
||||||
only_trusted_keys = val;
|
only_trusted_keys = val;
|
||||||
filterChanged();
|
invalidateFilter();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool pgpid_item_proxy::filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const
|
bool pgpid_item_proxy::filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const
|
||||||
|
|
|
@ -35,6 +35,7 @@
|
||||||
#include "util/HandleRichText.h"
|
#include "util/HandleRichText.h"
|
||||||
#include "gui/Identity/IdDialog.h"
|
#include "gui/Identity/IdDialog.h"
|
||||||
#include "gui/MainWindow.h"
|
#include "gui/MainWindow.h"
|
||||||
|
#include "util/DateTime.h"
|
||||||
|
|
||||||
#include "ui_BoardPostDisplayWidget_compact.h"
|
#include "ui_BoardPostDisplayWidget_compact.h"
|
||||||
#include "ui_BoardPostDisplayWidget_card.h"
|
#include "ui_BoardPostDisplayWidget_card.h"
|
||||||
|
@ -194,16 +195,14 @@ void BoardPostDisplayWidgetBase::baseSetup()
|
||||||
voteDownButton()->setDisabled(true);
|
voteDownButton()->setDisabled(true);
|
||||||
fromLabel()->setId(mPost.mMeta.mAuthorId);
|
fromLabel()->setId(mPost.mMeta.mAuthorId);
|
||||||
titleLabel()->setText(tr( "<p><font color=\"#ff0000\"><b>The author of this message (with ID %1) is banned.</b>").arg(QString::fromStdString(mPost.mMeta.mAuthorId.toStdString()))) ;
|
titleLabel()->setText(tr( "<p><font color=\"#ff0000\"><b>The author of this message (with ID %1) is banned.</b>").arg(QString::fromStdString(mPost.mMeta.mAuthorId.toStdString()))) ;
|
||||||
QDateTime qtime;
|
QDateTime qtime = DateTime::DateTimeFromTime_t(mPost.mMeta.mPublishTs);
|
||||||
qtime.setTime_t(mPost.mMeta.mPublishTs);
|
|
||||||
QString timestamp = qtime.toString("hh:mm dd-MMM-yyyy");
|
QString timestamp = qtime.toString("hh:mm dd-MMM-yyyy");
|
||||||
dateLabel()->setText(timestamp);
|
dateLabel()->setText(timestamp);
|
||||||
pictureLabel()->setDisabled(true);
|
pictureLabel()->setDisabled(true);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
QDateTime qtime;
|
QDateTime qtime = DateTime::DateTimeFromTime_t(mPost.mMeta.mPublishTs);
|
||||||
qtime.setTime_t(mPost.mMeta.mPublishTs);
|
|
||||||
QString timestamp = qtime.toString("hh:mm dd-MMM-yyyy");
|
QString timestamp = qtime.toString("hh:mm dd-MMM-yyyy");
|
||||||
QString timestamp2 = misc::timeRelativeToNow(mPost.mMeta.mPublishTs) + " " + tr("ago");
|
QString timestamp2 = misc::timeRelativeToNow(mPost.mMeta.mPublishTs) + " " + tr("ago");
|
||||||
dateLabel()->setText(timestamp);
|
dateLabel()->setText(timestamp);
|
||||||
|
|
|
@ -31,6 +31,7 @@
|
||||||
#include "gui/common/FilesDefs.h"
|
#include "gui/common/FilesDefs.h"
|
||||||
#include "util/qtthreadsutils.h"
|
#include "util/qtthreadsutils.h"
|
||||||
#include "util/HandleRichText.h"
|
#include "util/HandleRichText.h"
|
||||||
|
#include "util/DateTime.h"
|
||||||
|
|
||||||
#include "ui_PostedCardView.h"
|
#include "ui_PostedCardView.h"
|
||||||
|
|
||||||
|
@ -186,8 +187,7 @@ void PostedCardView::fill()
|
||||||
ui->picture_frame->hide();
|
ui->picture_frame->hide();
|
||||||
ui->fromLabel->setId(mPost.mMeta.mAuthorId);
|
ui->fromLabel->setId(mPost.mMeta.mAuthorId);
|
||||||
ui->titleLabel->setText(tr( "<p><font color=\"#ff0000\"><b>The author of this message (with ID %1) is banned.</b>").arg(QString::fromStdString(mPost.mMeta.mAuthorId.toStdString()))) ;
|
ui->titleLabel->setText(tr( "<p><font color=\"#ff0000\"><b>The author of this message (with ID %1) is banned.</b>").arg(QString::fromStdString(mPost.mMeta.mAuthorId.toStdString()))) ;
|
||||||
QDateTime qtime;
|
QDateTime qtime = DateTime::DateTimeFromTime_t(mPost.mMeta.mPublishTs);
|
||||||
qtime.setTime_t(mPost.mMeta.mPublishTs);
|
|
||||||
QString timestamp = qtime.toString("hh:mm dd-MMM-yyyy");
|
QString timestamp = qtime.toString("hh:mm dd-MMM-yyyy");
|
||||||
ui->dateLabel->setText(timestamp);
|
ui->dateLabel->setText(timestamp);
|
||||||
} else {
|
} else {
|
||||||
|
@ -198,8 +198,7 @@ void PostedCardView::fill()
|
||||||
//int desired_height = 1.5*(ui->voteDownButton->height() + ui->voteUpButton->height() + ui->scoreLabel->height());
|
//int desired_height = 1.5*(ui->voteDownButton->height() + ui->voteUpButton->height() + ui->scoreLabel->height());
|
||||||
//int desired_width = sqpixmap2.width()*desired_height/(float)sqpixmap2.height();
|
//int desired_width = sqpixmap2.width()*desired_height/(float)sqpixmap2.height();
|
||||||
|
|
||||||
QDateTime qtime;
|
QDateTime qtime = DateTime::DateTimeFromTime_t(mPost.mMeta.mPublishTs);
|
||||||
qtime.setTime_t(mPost.mMeta.mPublishTs);
|
|
||||||
QString timestamp = qtime.toString("hh:mm dd-MMM-yyyy");
|
QString timestamp = qtime.toString("hh:mm dd-MMM-yyyy");
|
||||||
QString timestamp2 = misc::timeRelativeToNow(mPost.mMeta.mPublishTs);
|
QString timestamp2 = misc::timeRelativeToNow(mPost.mMeta.mPublishTs);
|
||||||
ui->dateLabel->setText(timestamp2);
|
ui->dateLabel->setText(timestamp2);
|
||||||
|
|
|
@ -37,6 +37,7 @@
|
||||||
#include "PhotoView.h"
|
#include "PhotoView.h"
|
||||||
#include "gui/Posted/PostedDialog.h"
|
#include "gui/Posted/PostedDialog.h"
|
||||||
#include "ui_PostedItem.h"
|
#include "ui_PostedItem.h"
|
||||||
|
#include "util/DateTime.h"
|
||||||
|
|
||||||
#include <retroshare/rsposted.h>
|
#include <retroshare/rsposted.h>
|
||||||
|
|
||||||
|
@ -498,8 +499,7 @@ void PostedItem::fill()
|
||||||
ui->thumbnailLabel->setPicture( FilesDefs::getPixmapFromQtResourcePath(":/images/thumb-default.png"));
|
ui->thumbnailLabel->setPicture( FilesDefs::getPixmapFromQtResourcePath(":/images/thumb-default.png"));
|
||||||
ui->fromLabel->setId(mPost.mMeta.mAuthorId);
|
ui->fromLabel->setId(mPost.mMeta.mAuthorId);
|
||||||
ui->titleLabel->setText(tr( "<p><font color=\"#ff0000\"><b>The author of this message (with ID %1) is banned.</b>").arg(QString::fromStdString(mPost.mMeta.mAuthorId.toStdString()))) ;
|
ui->titleLabel->setText(tr( "<p><font color=\"#ff0000\"><b>The author of this message (with ID %1) is banned.</b>").arg(QString::fromStdString(mPost.mMeta.mAuthorId.toStdString()))) ;
|
||||||
QDateTime qtime;
|
QDateTime qtime = DateTime::DateTimeFromTime_t(mPost.mMeta.mPublishTs);
|
||||||
qtime.setTime_t(mPost.mMeta.mPublishTs);
|
|
||||||
QString timestamp = qtime.toString("hh:mm dd-MMM-yyyy");
|
QString timestamp = qtime.toString("hh:mm dd-MMM-yyyy");
|
||||||
ui->dateLabel->setText(timestamp);
|
ui->dateLabel->setText(timestamp);
|
||||||
} else {
|
} else {
|
||||||
|
@ -514,8 +514,7 @@ void PostedItem::fill()
|
||||||
|
|
||||||
ui->thumbnailLabel->setFixedSize(desired_width,desired_height);
|
ui->thumbnailLabel->setFixedSize(desired_width,desired_height);
|
||||||
|
|
||||||
QDateTime qtime;
|
QDateTime qtime = DateTime::DateTimeFromTime_t(mPost.mMeta.mPublishTs);
|
||||||
qtime.setTime_t(mPost.mMeta.mPublishTs);
|
|
||||||
QString timestamp = qtime.toString("hh:mm dd-MMM-yyyy");
|
QString timestamp = qtime.toString("hh:mm dd-MMM-yyyy");
|
||||||
QString timestamp2 = misc::timeRelativeToNow(mPost.mMeta.mPublishTs);
|
QString timestamp2 = misc::timeRelativeToNow(mPost.mMeta.mPublishTs);
|
||||||
ui->dateLabel->setText(timestamp2);
|
ui->dateLabel->setText(timestamp2);
|
||||||
|
|
|
@ -44,10 +44,10 @@
|
||||||
<bool>false</bool>
|
<bool>false</bool>
|
||||||
</property>
|
</property>
|
||||||
<property name="frameShape">
|
<property name="frameShape">
|
||||||
<enum>QFrame::Box</enum>
|
<enum>QFrame::StyledPanel</enum>
|
||||||
</property>
|
</property>
|
||||||
<property name="frameShadow">
|
<property name="frameShadow">
|
||||||
<enum>QFrame::Sunken</enum>
|
<enum>QFrame::Raised</enum>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QGridLayout" name="feedFrame_GL">
|
<layout class="QGridLayout" name="feedFrame_GL">
|
||||||
<property name="leftMargin">
|
<property name="leftMargin">
|
||||||
|
@ -725,17 +725,17 @@
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
<customwidgets>
|
<customwidgets>
|
||||||
|
<customwidget>
|
||||||
|
<class>GxsIdLabel</class>
|
||||||
|
<extends>QLabel</extends>
|
||||||
|
<header>gui/gxs/GxsIdLabel.h</header>
|
||||||
|
</customwidget>
|
||||||
<customwidget>
|
<customwidget>
|
||||||
<class>ElidedLabel</class>
|
<class>ElidedLabel</class>
|
||||||
<extends>QLabel</extends>
|
<extends>QLabel</extends>
|
||||||
<header>gui/common/ElidedLabel.h</header>
|
<header>gui/common/ElidedLabel.h</header>
|
||||||
<container>1</container>
|
<container>1</container>
|
||||||
</customwidget>
|
</customwidget>
|
||||||
<customwidget>
|
|
||||||
<class>GxsIdLabel</class>
|
|
||||||
<extends>QLabel</extends>
|
|
||||||
<header>gui/gxs/GxsIdLabel.h</header>
|
|
||||||
</customwidget>
|
|
||||||
<customwidget>
|
<customwidget>
|
||||||
<class>ZoomableLabel</class>
|
<class>ZoomableLabel</class>
|
||||||
<extends>QLabel</extends>
|
<extends>QLabel</extends>
|
||||||
|
@ -743,9 +743,9 @@
|
||||||
</customwidget>
|
</customwidget>
|
||||||
</customwidgets>
|
</customwidgets>
|
||||||
<resources>
|
<resources>
|
||||||
<include location="../icons.qrc"/>
|
|
||||||
<include location="Posted_images.qrc"/>
|
|
||||||
<include location="../images.qrc"/>
|
<include location="../images.qrc"/>
|
||||||
|
<include location="Posted_images.qrc"/>
|
||||||
|
<include location="../icons.qrc"/>
|
||||||
</resources>
|
</resources>
|
||||||
<connections/>
|
<connections/>
|
||||||
</ui>
|
</ui>
|
||||||
|
|
|
@ -45,6 +45,7 @@
|
||||||
#include "util/DateTime.h"
|
#include "util/DateTime.h"
|
||||||
#include "util/qtthreadsutils.h"
|
#include "util/qtthreadsutils.h"
|
||||||
#include "gui/common/FilesDefs.h"
|
#include "gui/common/FilesDefs.h"
|
||||||
|
#include "util/RsQtVersion.h"
|
||||||
|
|
||||||
#include "gui/MainWindow.h"
|
#include "gui/MainWindow.h"
|
||||||
|
|
||||||
|
@ -417,7 +418,7 @@ void PostedListWidgetWithModel::updateShowLabel()
|
||||||
|
|
||||||
void PostedListWidgetWithModel::filterItems(QString text)
|
void PostedListWidgetWithModel::filterItems(QString text)
|
||||||
{
|
{
|
||||||
QStringList lst = text.split(" ",QString::SkipEmptyParts) ;
|
QStringList lst = text.split(" ",QtSkipEmptyParts) ;
|
||||||
|
|
||||||
uint32_t count;
|
uint32_t count;
|
||||||
mPostedPostsModel->setFilter(lst,count) ;
|
mPostedPostsModel->setFilter(lst,count) ;
|
||||||
|
@ -1022,7 +1023,7 @@ void PostedListWidget::createPostItemFromMetaData(const RsGxsMsgMetaData& meta,b
|
||||||
post.mOlderVersions.insert(post.mMeta.mMsgId);
|
post.mOlderVersions.insert(post.mMeta.mMsgId);
|
||||||
|
|
||||||
GxsChannelPostItem *item = new GxsChannelPostItem(this, 0, post, true, false,post.mOlderVersions);
|
GxsChannelPostItem *item = new GxsChannelPostItem(this, 0, post, true, false,post.mOlderVersions);
|
||||||
ui->feedWidget->addFeedItem(item, ROLE_PUBLISH, QDateTime::fromTime_t(post.mMeta.mPublishTs));
|
ui->feedWidget->addFeedItem(item, ROLE_PUBLISH, DateTime::DateTimeFromTime_t(post.mMeta.mPublishTs));
|
||||||
|
|
||||||
return ;
|
return ;
|
||||||
}
|
}
|
||||||
|
@ -1036,12 +1037,12 @@ void PostedListWidget::createPostItemFromMetaData(const RsGxsMsgMetaData& meta,b
|
||||||
if (item)
|
if (item)
|
||||||
{
|
{
|
||||||
item->setPost(post);
|
item->setPost(post);
|
||||||
ui->feedWidget->setSort(item, ROLE_PUBLISH, QDateTime::fromTime_t(meta.mPublishTs));
|
ui->feedWidget->setSort(item, ROLE_PUBLISH, DateTime::DateTimeFromTime_t(meta.mPublishTs));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
GxsChannelPostItem *item = new GxsChannelPostItem(this, 0, meta.mGroupId,meta.mMsgId, true, true);
|
GxsChannelPostItem *item = new GxsChannelPostItem(this, 0, meta.mGroupId,meta.mMsgId, true, true);
|
||||||
ui->feedWidget->addFeedItem(item, ROLE_PUBLISH, QDateTime::fromTime_t(post.mMeta.mPublishTs));
|
ui->feedWidget->addFeedItem(item, ROLE_PUBLISH, DateTime::DateTimeFromTime_t(post.mMeta.mPublishTs));
|
||||||
}
|
}
|
||||||
#ifdef TODO
|
#ifdef TODO
|
||||||
ui->fileWidget->addFiles(post, related);
|
ui->fileWidget->addFiles(post, related);
|
||||||
|
@ -1067,7 +1068,7 @@ void PostedListWidget::createPostItem(const RsGxsChannelPost& post, bool related
|
||||||
older_versions.insert(meta.mMsgId);
|
older_versions.insert(meta.mMsgId);
|
||||||
|
|
||||||
GxsChannelPostItem *item = new GxsChannelPostItem(this, 0, mGroup.mMeta,meta.mMsgId, true, false,older_versions);
|
GxsChannelPostItem *item = new GxsChannelPostItem(this, 0, mGroup.mMeta,meta.mMsgId, true, false,older_versions);
|
||||||
ui->feedWidget->addFeedItem(item, ROLE_PUBLISH, QDateTime::fromTime_t(meta.mPublishTs));
|
ui->feedWidget->addFeedItem(item, ROLE_PUBLISH, DateTime::DateTimeFromTime_t(meta.mPublishTs));
|
||||||
|
|
||||||
return ;
|
return ;
|
||||||
}
|
}
|
||||||
|
@ -1081,12 +1082,12 @@ void PostedListWidget::createPostItem(const RsGxsChannelPost& post, bool related
|
||||||
if (item)
|
if (item)
|
||||||
{
|
{
|
||||||
item->setPost(post);
|
item->setPost(post);
|
||||||
ui->feedWidget->setSort(item, ROLE_PUBLISH, QDateTime::fromTime_t(meta.mPublishTs));
|
ui->feedWidget->setSort(item, ROLE_PUBLISH, DateTime::DateTimeFromTime_t(meta.mPublishTs));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
GxsChannelPostItem *item = new GxsChannelPostItem(this, 0, mGroup.mMeta,meta.mMsgId, true, true);
|
GxsChannelPostItem *item = new GxsChannelPostItem(this, 0, mGroup.mMeta,meta.mMsgId, true, true);
|
||||||
ui->feedWidget->addFeedItem(item, ROLE_PUBLISH, QDateTime::fromTime_t(meta.mPublishTs));
|
ui->feedWidget->addFeedItem(item, ROLE_PUBLISH, DateTime::DateTimeFromTime_t(meta.mPublishTs));
|
||||||
}
|
}
|
||||||
|
|
||||||
ui->fileWidget->addFiles(post, related);
|
ui->fileWidget->addFiles(post, related);
|
||||||
|
|
|
@ -25,7 +25,7 @@
|
||||||
#include "gui/common/RSComboBox.h"
|
#include "gui/common/RSComboBox.h"
|
||||||
#endif
|
#endif
|
||||||
#include "settings/rsharesettings.h"
|
#include "settings/rsharesettings.h"
|
||||||
#include "util/QtVersion.h"
|
#include "util/RsQtVersion.h"
|
||||||
|
|
||||||
#include "retroshare/rsfiles.h"
|
#include "retroshare/rsfiles.h"
|
||||||
#include "retroshare/rsconfig.h"
|
#include "retroshare/rsconfig.h"
|
||||||
|
|
|
@ -54,7 +54,7 @@ class RSHumanReadableDelegate: public QAbstractItemDelegate
|
||||||
// This part of the code is copied from DLListDelegate.cpp
|
// This part of the code is copied from DLListDelegate.cpp
|
||||||
//
|
//
|
||||||
QPalette::ColorGroup cg = option.state & QStyle::State_Enabled ? QPalette::Normal : QPalette::Disabled;
|
QPalette::ColorGroup cg = option.state & QStyle::State_Enabled ? QPalette::Normal : QPalette::Disabled;
|
||||||
QVariant value = index.data(Qt::TextColorRole);
|
QVariant value = index.data(Qt::ForegroundRole);
|
||||||
|
|
||||||
if(value.isValid() && qvariant_cast<QColor>(value).isValid())
|
if(value.isValid() && qvariant_cast<QColor>(value).isValid())
|
||||||
option.palette.setColor(QPalette::Text, qvariant_cast<QColor>(value));
|
option.palette.setColor(QPalette::Text, qvariant_cast<QColor>(value));
|
||||||
|
@ -75,7 +75,7 @@ class RSHumanReadableDelegate: public QAbstractItemDelegate
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
value = index.data(Qt::BackgroundColorRole);
|
value = index.data(Qt::BackgroundRole);
|
||||||
|
|
||||||
if(value.isValid() && qvariant_cast<QColor>(value).isValid())
|
if(value.isValid() && qvariant_cast<QColor>(value).isValid())
|
||||||
painter->fillRect(option.rect, qvariant_cast<QColor>(value));
|
painter->fillRect(option.rect, qvariant_cast<QColor>(value));
|
||||||
|
|
|
@ -825,7 +825,7 @@ QVariant RetroshareDirModel::data(const QModelIndex &index, int role) const
|
||||||
if (role == RetroshareDirModel::FileNameRole) /* end of FileNameRole */
|
if (role == RetroshareDirModel::FileNameRole) /* end of FileNameRole */
|
||||||
return QString::fromUtf8(details.name.c_str()) ;
|
return QString::fromUtf8(details.name.c_str()) ;
|
||||||
|
|
||||||
if (role == Qt::TextColorRole)
|
if (role == Qt::ForegroundRole)
|
||||||
{
|
{
|
||||||
if((details.type == DIR_TYPE_FILE || details.type == DIR_TYPE_EXTRA_FILE) && details.hash.isNull())
|
if((details.type == DIR_TYPE_FILE || details.type == DIR_TYPE_EXTRA_FILE) && details.hash.isNull())
|
||||||
return QVariant(QColor(Qt::green)) ;
|
return QVariant(QColor(Qt::green)) ;
|
||||||
|
|
|
@ -36,7 +36,7 @@
|
||||||
#include "gui/common/GroupSelectionBox.h"
|
#include "gui/common/GroupSelectionBox.h"
|
||||||
#include "gui/common/GroupDefs.h"
|
#include "gui/common/GroupDefs.h"
|
||||||
#include "gui/notifyqt.h"
|
#include "gui/notifyqt.h"
|
||||||
#include "util/QtVersion.h"
|
#include "util/RsQtVersion.h"
|
||||||
#include "util/misc.h"
|
#include "util/misc.h"
|
||||||
#include "util/qtthreadsutils.h"
|
#include "util/qtthreadsutils.h"
|
||||||
#include "gui/common/FilesDefs.h"
|
#include "gui/common/FilesDefs.h"
|
||||||
|
@ -260,7 +260,7 @@ void ShareManager::load()
|
||||||
listWidget->setCellWidget(row, COLUMN_SHARE_FLAGS, widget);
|
listWidget->setCellWidget(row, COLUMN_SHARE_FLAGS, widget);
|
||||||
|
|
||||||
listWidget->setItem(row, COLUMN_GROUPS, new QTableWidgetItem()) ;
|
listWidget->setItem(row, COLUMN_GROUPS, new QTableWidgetItem()) ;
|
||||||
listWidget->item(row,COLUMN_GROUPS)->setBackgroundColor(QColor(183,236,181)) ;
|
listWidget->item(row,COLUMN_GROUPS)->setBackground(QColor(183,236,181)) ;
|
||||||
|
|
||||||
connect(widget,SIGNAL(flagsChanged(FileStorageFlags)),this,SLOT(updateFlags())) ;
|
connect(widget,SIGNAL(flagsChanged(FileStorageFlags)),this,SLOT(updateFlags())) ;
|
||||||
|
|
||||||
|
|
|
@ -21,12 +21,22 @@
|
||||||
#include <QApplication>
|
#include <QApplication>
|
||||||
#include <QFile>
|
#include <QFile>
|
||||||
#include <QProcess>
|
#include <QProcess>
|
||||||
#include <QSound>
|
|
||||||
#include <QDir>
|
#include <QDir>
|
||||||
|
|
||||||
|
#if QT_VERSION >= QT_VERSION_CHECK (6, 0, 0)
|
||||||
|
#include <QAudioDevice>
|
||||||
|
#include <QMediaDevices>
|
||||||
|
#include <QUrl>
|
||||||
|
#elif QT_VERSION >= QT_VERSION_CHECK (5, 0, 0)
|
||||||
|
#include <QAudioDeviceInfo>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if QT_VERSION < QT_VERSION_CHECK (6, 0, 0)
|
||||||
|
#include <QSound>
|
||||||
|
#endif
|
||||||
|
|
||||||
#if QT_VERSION >= QT_VERSION_CHECK (5, 0, 0)
|
#if QT_VERSION >= QT_VERSION_CHECK (5, 0, 0)
|
||||||
#include <QAudio>
|
#include <QAudio>
|
||||||
#include <QAudioDeviceInfo>
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// #ifdef QMEDIAPLAYER
|
// #ifdef QMEDIAPLAYER
|
||||||
|
@ -241,15 +251,25 @@ void SoundManager::playFile(const QString &filename)
|
||||||
|
|
||||||
QString playFilename = realFilename(filename);
|
QString playFilename = realFilename(filename);
|
||||||
bool played = false ;
|
bool played = false ;
|
||||||
|
|
||||||
#if QT_VERSION >= QT_VERSION_CHECK (5, 0, 0)
|
#if QT_VERSION >= QT_VERSION_CHECK (6, 0, 0)
|
||||||
|
if (!QMediaDevices::audioOutputs().isEmpty())
|
||||||
|
#elif QT_VERSION >= QT_VERSION_CHECK (5, 0, 0)
|
||||||
if (!QAudioDeviceInfo::availableDevices(QAudio::AudioOutput).isEmpty())
|
if (!QAudioDeviceInfo::availableDevices(QAudio::AudioOutput).isEmpty())
|
||||||
#else
|
#else
|
||||||
if (QSound::isAvailable())
|
if (QSound::isAvailable())
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
|
#if QT_VERSION >= QT_VERSION_CHECK (6, 0, 0)
|
||||||
|
if (soundManager) {
|
||||||
|
soundManager->mSoundEffect.setSource(QUrl::fromLocalFile(playFilename));
|
||||||
|
soundManager->mSoundEffect.play();
|
||||||
|
played = true;
|
||||||
|
}
|
||||||
|
#else
|
||||||
QSound::play(playFilename);
|
QSound::play(playFilename);
|
||||||
played = true ;
|
played = true ;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!played) // let's go for the hard core stuff
|
if(!played) // let's go for the hard core stuff
|
||||||
|
|
|
@ -24,6 +24,10 @@
|
||||||
#include <QObject>
|
#include <QObject>
|
||||||
#include <QMap>
|
#include <QMap>
|
||||||
|
|
||||||
|
#if QT_VERSION >= QT_VERSION_CHECK (6, 0, 0)
|
||||||
|
#include <QSoundEffect>
|
||||||
|
#endif
|
||||||
|
|
||||||
#define SOUND_NEW_CHAT_MESSAGE "NewChatMessage"
|
#define SOUND_NEW_CHAT_MESSAGE "NewChatMessage"
|
||||||
#define SOUND_USER_ONLINE "User_go_Online"
|
#define SOUND_USER_ONLINE "User_go_Online"
|
||||||
#define SOUND_MESSAGE_ARRIVED "MessageArrived"
|
#define SOUND_MESSAGE_ARRIVED "MessageArrived"
|
||||||
|
@ -91,6 +95,10 @@ public:
|
||||||
|
|
||||||
private:
|
private:
|
||||||
SoundManager();
|
SoundManager();
|
||||||
|
|
||||||
|
#if QT_VERSION >= QT_VERSION_CHECK (6, 0, 0)
|
||||||
|
QSoundEffect mSoundEffect;
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
extern SoundManager *soundManager;
|
extern SoundManager *soundManager;
|
||||||
|
|
|
@ -29,7 +29,6 @@
|
||||||
|
|
||||||
#include <QLineEdit>
|
#include <QLineEdit>
|
||||||
#include <QMessageBox>
|
#include <QMessageBox>
|
||||||
#include <QDesktopWidget>
|
|
||||||
|
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
|
||||||
|
@ -49,7 +48,7 @@ StartDialog::StartDialog(QWidget *parent)
|
||||||
Settings->loadWidgetInformation(this);
|
Settings->loadWidgetInformation(this);
|
||||||
|
|
||||||
/* Put the Login dialog in the screen center */
|
/* Put the Login dialog in the screen center */
|
||||||
const QRect screen = QApplication::desktop()->screenGeometry();
|
const QRect screen = RsApplication::primaryScreenGeometry();
|
||||||
this->move( screen.center() - this->rect().center() );
|
this->move( screen.center() - this->rect().center() );
|
||||||
|
|
||||||
/* get all available pgp private certificates....
|
/* get all available pgp private certificates....
|
||||||
|
|
|
@ -346,7 +346,7 @@ The current identities/locations will not be affected.</string>
|
||||||
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
|
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
|
||||||
p, li { white-space: pre-wrap; }
|
p, li { white-space: pre-wrap; }
|
||||||
</style></head><body style=" font-family:'Sans'; font-size:13pt; font-weight:400; font-style:normal;">
|
</style></head><body style=" font-family:'Sans'; font-size:13pt; font-weight:400; font-style:normal;">
|
||||||
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="Create new Profile..."><span style=" font-family:'MS Shell Dlg 2'; font-size:14pt; text-decoration: underline; color:#0000ff;">New Profile/Node</span></a></p></body></html></string>
|
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="Create new Profile..."><span style=" font-family:'MS Shell Dlg 2'; font-size:14pt; text-decoration: underline; color:#366fe0;">New Profile/Node</span></a></p></body></html></string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
|
|
@ -450,15 +450,15 @@ QString ToNumberUnits(uint32_t count)
|
||||||
QString ans;
|
QString ans;
|
||||||
if (count > 1000000)
|
if (count > 1000000)
|
||||||
{
|
{
|
||||||
ans.sprintf("%6.2fm", count / 1000000.0);
|
ans = QString::asprintf("%6.2fm", count / 1000000.0);
|
||||||
}
|
}
|
||||||
else if (count > 1000)
|
else if (count > 1000)
|
||||||
{
|
{
|
||||||
ans.sprintf("%6.2fk", count / 1000.0);
|
ans = QString::asprintf("%6.2fk", count / 1000.0);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
ans.sprintf("%6d", count);
|
ans = QString::asprintf("%6d", count);
|
||||||
}
|
}
|
||||||
return ans;
|
return ans;
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,6 +30,7 @@
|
||||||
#include "gui/WikiPoos/WikiEditDialog.h"
|
#include "gui/WikiPoos/WikiEditDialog.h"
|
||||||
#include "gui/settings/rsharesettings.h"
|
#include "gui/settings/rsharesettings.h"
|
||||||
#include "gui/gxs/WikiGroupDialog.h"
|
#include "gui/gxs/WikiGroupDialog.h"
|
||||||
|
#include "util/DateTime.h"
|
||||||
|
|
||||||
#include <retroshare/rswiki.h>
|
#include <retroshare/rswiki.h>
|
||||||
|
|
||||||
|
@ -715,7 +716,7 @@ void WikiDialog::GroupMetaDataToGroupItemInfo(const RsGroupMetaData &groupInfo,
|
||||||
groupItemInfo.name = QString::fromUtf8(groupInfo.mGroupName.c_str());
|
groupItemInfo.name = QString::fromUtf8(groupInfo.mGroupName.c_str());
|
||||||
//groupItemInfo.description = QString::fromUtf8(groupInfo.forumDesc);
|
//groupItemInfo.description = QString::fromUtf8(groupInfo.forumDesc);
|
||||||
groupItemInfo.popularity = groupInfo.mPop;
|
groupItemInfo.popularity = groupInfo.mPop;
|
||||||
groupItemInfo.lastpost = QDateTime::fromTime_t(groupInfo.mLastPost);
|
groupItemInfo.lastpost = DateTime::DateTimeFromTime_t(groupInfo.mLastPost);
|
||||||
groupItemInfo.subscribeFlags = groupInfo.mSubscribeFlags;
|
groupItemInfo.subscribeFlags = groupInfo.mSubscribeFlags;
|
||||||
|
|
||||||
groupItemInfo.icon = QIcon(IMAGE_WIKI);
|
groupItemInfo.icon = QIcon(IMAGE_WIKI);
|
||||||
|
|
|
@ -22,6 +22,7 @@
|
||||||
|
|
||||||
#include "gui/gxs/GxsIdTreeWidgetItem.h"
|
#include "gui/gxs/GxsIdTreeWidgetItem.h"
|
||||||
#include "gui/WikiPoos/WikiEditDialog.h"
|
#include "gui/WikiPoos/WikiEditDialog.h"
|
||||||
|
#include "util/DateTime.h"
|
||||||
|
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
|
||||||
|
@ -727,10 +728,9 @@ void WikiEditDialog::loadBaseHistory(const uint32_t &token)
|
||||||
|
|
||||||
{
|
{
|
||||||
// From Forum stuff.
|
// From Forum stuff.
|
||||||
QDateTime qtime;
|
QDateTime qtime = DateTime::DateTimeFromTime_t(page.mMeta.mPublishTs);
|
||||||
QString text;
|
QString text;
|
||||||
QString sort;
|
QString sort;
|
||||||
qtime.setTime_t(page.mMeta.mPublishTs);
|
|
||||||
sort = qtime.toString("yyyyMMdd_hhmmss");
|
sort = qtime.toString("yyyyMMdd_hhmmss");
|
||||||
text = qtime.toString("dd/MM/yy hh:mm");
|
text = qtime.toString("dd/MM/yy hh:mm");
|
||||||
|
|
||||||
|
@ -841,10 +841,9 @@ void WikiEditDialog::loadEditTreeData(const uint32_t &token)
|
||||||
|
|
||||||
{
|
{
|
||||||
// From Forum stuff.
|
// From Forum stuff.
|
||||||
QDateTime qtime;
|
QDateTime qtime = DateTime::DateTimeFromTime_t(snapshot.mMeta.mPublishTs);
|
||||||
QString text;
|
QString text;
|
||||||
QString sort;
|
QString sort;
|
||||||
qtime.setTime_t(snapshot.mMeta.mPublishTs);
|
|
||||||
sort = qtime.toString("yyyyMMdd_hhmmss");
|
sort = qtime.toString("yyyyMMdd_hhmmss");
|
||||||
text = qtime.toString("dd/MM/yy hh:mm");
|
text = qtime.toString("dd/MM/yy hh:mm");
|
||||||
|
|
||||||
|
|
|
@ -20,6 +20,7 @@
|
||||||
* *
|
* *
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
#include "expressionwidget.h"
|
#include "expressionwidget.h"
|
||||||
|
#include "util/RsQtVersion.h"
|
||||||
|
|
||||||
ExpressionWidget::ExpressionWidget(QWidget * parent, bool initial)
|
ExpressionWidget::ExpressionWidget(QWidget * parent, bool initial)
|
||||||
: QWidget(parent)
|
: QWidget(parent)
|
||||||
|
@ -109,11 +110,7 @@ RsRegularExpression::Expression* ExpressionWidget::getRsExpression()
|
||||||
if (isStringSearchExpression())
|
if (isStringSearchExpression())
|
||||||
{
|
{
|
||||||
QString txt = exprParamElem->getStrSearchValue();
|
QString txt = exprParamElem->getStrSearchValue();
|
||||||
#if QT_VERSION < QT_VERSION_CHECK(5,15,0)
|
QStringList words = txt.split(" ", QtSkipEmptyParts);
|
||||||
QStringList words = txt.split(" ", QString::SkipEmptyParts);
|
|
||||||
#else
|
|
||||||
QStringList words = txt.split(" ", Qt::SkipEmptyParts);
|
|
||||||
#endif
|
|
||||||
for (int i = 0; i < words.size(); ++i)
|
for (int i = 0; i < words.size(); ++i)
|
||||||
wordList.push_back(words.at(i).toUtf8().constData());
|
wordList.push_back(words.at(i).toUtf8().constData());
|
||||||
} else if (inRangedConfig){
|
} else if (inRangedConfig){
|
||||||
|
|
|
@ -20,7 +20,11 @@
|
||||||
* *
|
* *
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
|
|
||||||
|
#include <QRegularExpression>
|
||||||
|
|
||||||
#include "guiexprelement.h"
|
#include "guiexprelement.h"
|
||||||
|
#include "util/DateTime.h"
|
||||||
|
|
||||||
#define STR_FIELDS_MIN_WFACTOR 20.0
|
#define STR_FIELDS_MIN_WFACTOR 20.0
|
||||||
#define SIZE_FIELDS_MIN_WFACTOR 8.0
|
#define SIZE_FIELDS_MIN_WFACTOR 8.0
|
||||||
#define DATE_FIELDS_MIN_WFACTOR 10.0
|
#define DATE_FIELDS_MIN_WFACTOR 10.0
|
||||||
|
@ -219,7 +223,7 @@ QStringList GuiExprElement::getConditionOptions(ExprSearchType t)
|
||||||
QHBoxLayout * GuiExprElement::createLayout(QWidget * parent /*= nullptr*/)
|
QHBoxLayout * GuiExprElement::createLayout(QWidget * parent /*= nullptr*/)
|
||||||
{
|
{
|
||||||
QHBoxLayout * hboxLayout = new QHBoxLayout(parent);
|
QHBoxLayout * hboxLayout = new QHBoxLayout(parent);
|
||||||
hboxLayout->setMargin(0);
|
hboxLayout->setContentsMargins(0, 0, 0, 0);
|
||||||
hboxLayout->setSpacing(0);
|
hboxLayout->setSpacing(0);
|
||||||
return hboxLayout;
|
return hboxLayout;
|
||||||
}
|
}
|
||||||
|
@ -398,10 +402,10 @@ void ExprParamElement::adjustForSearchType(ExprSearchType type)
|
||||||
{
|
{
|
||||||
// record which search type is active
|
// record which search type is active
|
||||||
searchType = type;
|
searchType = type;
|
||||||
QRegExp regExp("0|[1-9][0-9]*");
|
QRegularExpression regExp("0|[1-9][0-9]*");
|
||||||
numValidator = new QRegExpValidator(regExp, this);
|
numValidator = new QRegularExpressionValidator(regExp, this);
|
||||||
QRegExp hexRegExp("[A-Fa-f0-9]*");
|
QRegularExpression hexRegExp("[A-Fa-f0-9]*");
|
||||||
hexValidator = new QRegExpValidator(hexRegExp, this);
|
hexValidator = new QRegularExpressionValidator(hexRegExp, this);
|
||||||
|
|
||||||
QHBoxLayout* hbox = static_cast<QHBoxLayout*>(layout());
|
QHBoxLayout* hbox = static_cast<QHBoxLayout*>(layout());
|
||||||
clearLayout(hbox);
|
clearLayout(hbox);
|
||||||
|
@ -607,7 +611,7 @@ uint64_t ExprParamElement::getIntValueFromField(QString fieldName, bool isToFiel
|
||||||
#else
|
#else
|
||||||
QDateTime time = dateEdit->date().startOfDay();
|
QDateTime time = dateEdit->date().startOfDay();
|
||||||
#endif
|
#endif
|
||||||
val = (uint64_t)time.toTime_t();
|
val = (uint64_t) DateTime::DateTimeToTime_t(time);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case SizeSearch:
|
case SizeSearch:
|
||||||
|
|
|
@ -34,6 +34,8 @@
|
||||||
|
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
|
||||||
|
class QRegularExpressionValidator;
|
||||||
|
|
||||||
enum ExprSearchType
|
enum ExprSearchType
|
||||||
{
|
{
|
||||||
NameSearch,
|
NameSearch,
|
||||||
|
@ -191,8 +193,8 @@ public:
|
||||||
virtual QString toString();
|
virtual QString toString();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QRegExpValidator * numValidator;
|
QRegularExpressionValidator * numValidator;
|
||||||
QRegExpValidator * hexValidator;
|
QRegularExpressionValidator * hexValidator;
|
||||||
QFrame * rangeParamsFrame;
|
QFrame * rangeParamsFrame;
|
||||||
bool inRangedConfig;
|
bool inRangedConfig;
|
||||||
uint64_t getIntValueFromField(QString fieldName, bool isToField=false,bool *ok = NULL);
|
uint64_t getIntValueFromField(QString fieldName, bool isToField=false,bool *ok = NULL);
|
||||||
|
|
|
@ -77,7 +77,7 @@ private slots:
|
||||||
void chatNewMessage(ChatWidget*);
|
void chatNewMessage(ChatWidget*);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
explicit ChatDialog(QWidget *parent = 0, Qt::WindowFlags flags = 0);
|
explicit ChatDialog(QWidget *parent = 0, Qt::WindowFlags flags = Qt::WindowFlags());
|
||||||
virtual ~ChatDialog();
|
virtual ~ChatDialog();
|
||||||
|
|
||||||
void closeEvent(QCloseEvent *event);
|
void closeEvent(QCloseEvent *event);
|
||||||
|
|
|
@ -23,6 +23,7 @@
|
||||||
#include <QMenu>
|
#include <QMenu>
|
||||||
#include <QMessageBox>
|
#include <QMessageBox>
|
||||||
#include <QWidgetAction>
|
#include <QWidgetAction>
|
||||||
|
#include <QActionGroup>
|
||||||
|
|
||||||
#include "ChatLobbyDialog.h"
|
#include "ChatLobbyDialog.h"
|
||||||
|
|
||||||
|
@ -42,10 +43,11 @@
|
||||||
#include "gui/settings/RsharePeerSettings.h"
|
#include "gui/settings/RsharePeerSettings.h"
|
||||||
#include "gui/settings/rsharesettings.h"
|
#include "gui/settings/rsharesettings.h"
|
||||||
#include "util/HandleRichText.h"
|
#include "util/HandleRichText.h"
|
||||||
#include "util/QtVersion.h"
|
#include "util/RsQtVersion.h"
|
||||||
|
|
||||||
#include "retroshare/rsnotify.h"
|
#include "retroshare/rsnotify.h"
|
||||||
#include "util/rstime.h"
|
#include "util/rstime.h"
|
||||||
|
#include "util/DateTime.h"
|
||||||
|
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
@ -529,8 +531,8 @@ void ChatLobbyDialog::changeNickname()
|
||||||
*/
|
*/
|
||||||
void ChatLobbyDialog::addChatMsg(const ChatMessage& msg)
|
void ChatLobbyDialog::addChatMsg(const ChatMessage& msg)
|
||||||
{
|
{
|
||||||
QDateTime sendTime = QDateTime::fromTime_t(msg.sendTime);
|
QDateTime sendTime = DateTime::DateTimeFromTime_t(msg.sendTime);
|
||||||
QDateTime recvTime = QDateTime::fromTime_t(msg.recvTime);
|
QDateTime recvTime = DateTime::DateTimeFromTime_t(msg.recvTime);
|
||||||
QString message = QString::fromUtf8(msg.msg.c_str());
|
QString message = QString::fromUtf8(msg.msg.c_str());
|
||||||
RsGxsId gxs_id = msg.lobby_peer_gxs_id ;
|
RsGxsId gxs_id = msg.lobby_peer_gxs_id ;
|
||||||
|
|
||||||
|
|
|
@ -74,7 +74,7 @@ signals:
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
/** Default constructor */
|
/** Default constructor */
|
||||||
ChatLobbyDialog(const ChatLobbyId& lid, QWidget *parent = 0, Qt::WindowFlags flags = 0);
|
ChatLobbyDialog(const ChatLobbyId& lid, QWidget *parent = 0, Qt::WindowFlags flags = Qt::WindowFlags());
|
||||||
|
|
||||||
/** Default destructor */
|
/** Default destructor */
|
||||||
virtual ~ChatLobbyDialog();
|
virtual ~ChatLobbyDialog();
|
||||||
|
|
|
@ -80,10 +80,10 @@
|
||||||
<item>
|
<item>
|
||||||
<widget class="QFrame" name="toolBarFrame">
|
<widget class="QFrame" name="toolBarFrame">
|
||||||
<property name="frameShape">
|
<property name="frameShape">
|
||||||
<enum>QFrame::Box</enum>
|
<enum>QFrame::StyledPanel</enum>
|
||||||
</property>
|
</property>
|
||||||
<property name="frameShadow">
|
<property name="frameShadow">
|
||||||
<enum>QFrame::Sunken</enum>
|
<enum>QFrame::Raised</enum>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QHBoxLayout" name="toolBarFrame_HL">
|
<layout class="QHBoxLayout" name="toolBarFrame_HL">
|
||||||
<property name="leftMargin">
|
<property name="leftMargin">
|
||||||
|
|
|
@ -229,7 +229,7 @@ void ChatLobbyUserNotify::iconClicked()
|
||||||
QString strName=tr("Remove All");
|
QString strName=tr("Remove All");
|
||||||
QAction *pAction = new QAction( QIcon(), strName, trayMenu);
|
QAction *pAction = new QAction( QIcon(), strName, trayMenu);
|
||||||
ActionTag actionTag={0x0, "", true};
|
ActionTag actionTag={0x0, "", true};
|
||||||
pAction->setData(qVariantFromValue(actionTag));
|
pAction->setData(QVariant::fromValue(actionTag));
|
||||||
trayMenu->addAction(pAction);
|
trayMenu->addAction(pAction);
|
||||||
|
|
||||||
trayMenu->exec(QCursor::pos());
|
trayMenu->exec(QCursor::pos());
|
||||||
|
@ -268,14 +268,14 @@ void ChatLobbyUserNotify::makeSubMenu(QMenu* parentMenu, QIcon icoLobby, QString
|
||||||
QAction *pAction = new QAction( icoLobby, strName, lobbyMenu);
|
QAction *pAction = new QAction( icoLobby, strName, lobbyMenu);
|
||||||
pAction->setToolTip(doc.toPlainText());
|
pAction->setToolTip(doc.toPlainText());
|
||||||
ActionTag actionTag={itCL->first, itMsg->first, false};
|
ActionTag actionTag={itCL->first, itMsg->first, false};
|
||||||
pAction->setData(qVariantFromValue(actionTag));
|
pAction->setData(QVariant::fromValue(actionTag));
|
||||||
lobbyMenu->addAction(pAction);
|
lobbyMenu->addAction(pAction);
|
||||||
}
|
}
|
||||||
|
|
||||||
QString strName=tr("Remove All");
|
QString strName=tr("Remove All");
|
||||||
QAction *pAction = new QAction( icoLobby, strName, lobbyMenu);
|
QAction *pAction = new QAction( icoLobby, strName, lobbyMenu);
|
||||||
ActionTag actionTag={itCL->first, "", true};
|
ActionTag actionTag={itCL->first, "", true};
|
||||||
pAction->setData(qVariantFromValue(actionTag));
|
pAction->setData(QVariant::fromValue(actionTag));
|
||||||
lobbyMenu->addAction(pAction);
|
lobbyMenu->addAction(pAction);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -103,6 +103,7 @@
|
||||||
#include <QXmlStreamReader>
|
#include <QXmlStreamReader>
|
||||||
#include <QDomDocument>
|
#include <QDomDocument>
|
||||||
#include <QTextStream>
|
#include <QTextStream>
|
||||||
|
#include <QRegularExpression>
|
||||||
|
|
||||||
#include "ChatStyle.h"
|
#include "ChatStyle.h"
|
||||||
#include "gui/settings/rsharesettings.h"
|
#include "gui/settings/rsharesettings.h"
|
||||||
|
@ -376,7 +377,7 @@ QString ChatStyle::formatMessage(enumFormatMessage type
|
||||||
QString strDate = DateTime::formatDate(timestamp.date()).prepend(QString("<a name=\"date\">")).append(QString("</a>"));
|
QString strDate = DateTime::formatDate(timestamp.date()).prepend(QString("<a name=\"date\">")).append(QString("</a>"));
|
||||||
QString strTime = DateTime::formatTime(timestamp.time()).prepend(QString("<a name=\"time\">")).append(QString("</a>"));
|
QString strTime = DateTime::formatTime(timestamp.time()).prepend(QString("<a name=\"time\">")).append(QString("</a>"));
|
||||||
|
|
||||||
int bi = name.lastIndexOf(QRegExp(" \\(.*\\)")); //trim location from the end
|
int bi = name.lastIndexOf(QRegularExpression(" \\(.*\\)")); //trim location from the end
|
||||||
QString strShortName = RsHtml::plainText(name.left(bi)).prepend(QString("<a name=\"name\">")).append(QString("</a>"));
|
QString strShortName = RsHtml::plainText(name.left(bi)).prepend(QString("<a name=\"name\">")).append(QString("</a>"));
|
||||||
|
|
||||||
//handle /me
|
//handle /me
|
||||||
|
@ -384,9 +385,9 @@ QString ChatStyle::formatMessage(enumFormatMessage type
|
||||||
//meName class for modifying the style of the name in the palce of /me
|
//meName class for modifying the style of the name in the palce of /me
|
||||||
if(me){
|
if(me){
|
||||||
messageBody = messageBody.replace(messageBody.indexOf("/me "), 3, strShortName.prepend(QString("<span class=\"meName\">")).append(QString("</span>"))); //replace only the first /me
|
messageBody = messageBody.replace(messageBody.indexOf("/me "), 3, strShortName.prepend(QString("<span class=\"meName\">")).append(QString("</span>"))); //replace only the first /me
|
||||||
style = style.remove(QRegExp("%nome%.*%/nome%")).remove("%me%").remove("%/me%");
|
style = style.remove(QRegularExpression("%nome%.*%/nome%")).remove("%me%").remove("%/me%");
|
||||||
} else {
|
} else {
|
||||||
style = style.remove(QRegExp("%me%.*%/me%")).remove("%nome%").remove("%/nome%");
|
style = style.remove(QRegularExpression("%me%.*%/me%")).remove("%nome%").remove("%/nome%");
|
||||||
}
|
}
|
||||||
|
|
||||||
QString formatMsg = style.replace("%name%", strName)
|
QString formatMsg = style.replace("%name%", strName)
|
||||||
|
@ -425,8 +426,8 @@ static bool getStyleInfo(QString stylePath, QString stylePathRelative, ChatStyle
|
||||||
while (reader.atEnd() == false) {
|
while (reader.atEnd() == false) {
|
||||||
reader.readNext();
|
reader.readNext();
|
||||||
if (reader.isStartElement()) {
|
if (reader.isStartElement()) {
|
||||||
if (reader.name() == "RetroShare_Style") {
|
if (reader.name() == QString("RetroShare_Style")) {
|
||||||
if (reader.attributes().value("version") == "1.0") {
|
if (reader.attributes().value("version") == QString("1.0")) {
|
||||||
info.stylePath = stylePathRelative;
|
info.stylePath = stylePathRelative;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -438,22 +439,22 @@ static bool getStyleInfo(QString stylePath, QString stylePathRelative, ChatStyle
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (reader.name() == "style") {
|
if (reader.name() == QString("style")) {
|
||||||
// read style information
|
// read style information
|
||||||
while (reader.atEnd() == false) {
|
while (reader.atEnd() == false) {
|
||||||
reader.readNext();
|
reader.readNext();
|
||||||
if (reader.isEndElement()) {
|
if (reader.isEndElement()) {
|
||||||
if (reader.name() == "style") {
|
if (reader.name() == QString("style")) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (reader.isStartElement()) {
|
if (reader.isStartElement()) {
|
||||||
if (reader.name() == "name") {
|
if (reader.name() == QString("name")) {
|
||||||
info.styleName = reader.readElementText();
|
info.styleName = reader.readElementText();
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (reader.name() == "description") {
|
if (reader.name() == QString("description")) {
|
||||||
info.styleDescription = reader.readElementText();
|
info.styleDescription = reader.readElementText();
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -463,22 +464,22 @@ static bool getStyleInfo(QString stylePath, QString stylePathRelative, ChatStyle
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (reader.name() == "author") {
|
if (reader.name() == QString("author")) {
|
||||||
// read author information
|
// read author information
|
||||||
while (reader.atEnd() == false) {
|
while (reader.atEnd() == false) {
|
||||||
reader.readNext();
|
reader.readNext();
|
||||||
if (reader.isEndElement()) {
|
if (reader.isEndElement()) {
|
||||||
if (reader.name() == "author") {
|
if (reader.name() == QString("author")) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (reader.isStartElement()) {
|
if (reader.isStartElement()) {
|
||||||
if (reader.name() == "name") {
|
if (reader.name() == QString("name")) {
|
||||||
info.authorName = reader.readElementText();
|
info.authorName = reader.readElementText();
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (reader.name() == "email") {
|
if (reader.name() == QString("email")) {
|
||||||
info.authorEmail = reader.readElementText();
|
info.authorEmail = reader.readElementText();
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
|
@ -62,6 +62,7 @@
|
||||||
#include <QTimer>
|
#include <QTimer>
|
||||||
#include <QToolTip>
|
#include <QToolTip>
|
||||||
#include <QInputDialog>
|
#include <QInputDialog>
|
||||||
|
#include <QRegExp>
|
||||||
|
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
|
|
||||||
|
@ -433,7 +434,7 @@ void ChatWidget::init(const ChatId &chat_id, const QString &title)
|
||||||
name = QString::fromUtf8(historyIt->peerId.toStdString().c_str());
|
name = QString::fromUtf8(historyIt->peerId.toStdString().c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
addChatMsg(historyIt->incoming, name, RsGxsId(historyIt->peerId.toStdString().c_str()), QDateTime::fromTime_t(historyIt->sendTime), QDateTime::fromTime_t(historyIt->recvTime), QString::fromUtf8(historyIt->message.c_str()), MSGTYPE_HISTORY);
|
addChatMsg(historyIt->incoming, name, RsGxsId(historyIt->peerId.toStdString().c_str()), DateTime::DateTimeFromTime_t(historyIt->sendTime), DateTime::DateTimeFromTime_t(historyIt->recvTime), QString::fromUtf8(historyIt->message.c_str()), MSGTYPE_HISTORY);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1524,10 +1525,9 @@ void ChatWidget::on_markButton_clicked(bool bValue)
|
||||||
|
|
||||||
void ChatWidget::chooseColor()
|
void ChatWidget::chooseColor()
|
||||||
{
|
{
|
||||||
bool ok;
|
QColor color = QColorDialog::getColor(currentColor, window(), "", QColorDialog::ShowAlphaChannel);
|
||||||
QRgb color = QColorDialog::getRgba(currentColor.rgba(), &ok, window());
|
if (color.isValid()) {
|
||||||
if (ok) {
|
currentColor = color;
|
||||||
currentColor = QColor(color);
|
|
||||||
PeerSettings->setPrivateChatColor(chatId, currentColor.name());
|
PeerSettings->setPrivateChatColor(chatId, currentColor.name());
|
||||||
colorChanged();
|
colorChanged();
|
||||||
setColorAndFont(false);
|
setColorAndFont(false);
|
||||||
|
@ -1780,7 +1780,11 @@ bool ChatWidget::fileSave()
|
||||||
if (!file.open(QFile::WriteOnly))
|
if (!file.open(QFile::WriteOnly))
|
||||||
return false;
|
return false;
|
||||||
QTextStream ts(&file);
|
QTextStream ts(&file);
|
||||||
|
#if QT_VERSION >= QT_VERSION_CHECK (6, 0, 0)
|
||||||
|
ts.setEncoding(QStringConverter::Utf8);
|
||||||
|
#else
|
||||||
ts.setCodec(QTextCodec::codecForName("UTF-8"));
|
ts.setCodec(QTextCodec::codecForName("UTF-8"));
|
||||||
|
#endif
|
||||||
ts << ui->textBrowser->document()->toPlainText();
|
ts << ui->textBrowser->document()->toPlainText();
|
||||||
ui->textBrowser->document()->setModified(false);
|
ui->textBrowser->document()->setModified(false);
|
||||||
return true;
|
return true;
|
||||||
|
@ -1949,7 +1953,7 @@ void ChatWidget::updatePeersCustomStateString(const QString& peer_id, const QStr
|
||||||
|
|
||||||
void ChatWidget::updateStatusString(const QString &statusMask, const QString &statusString, bool permanent)
|
void ChatWidget::updateStatusString(const QString &statusMask, const QString &statusString, bool permanent)
|
||||||
{
|
{
|
||||||
ui->typingLabel->setText(QString(statusMask).arg(trUtf8(statusString.toUtf8()))); // displays info for 5 secs.
|
ui->typingLabel->setText(QString(statusMask).arg(tr(statusString.toUtf8()))); // displays info for 5 secs.
|
||||||
ui->typingPixmapLabel->setPixmap(FilesDefs::getPixmapFromQtResourcePath(":icons/png/typing.png") );
|
ui->typingPixmapLabel->setPixmap(FilesDefs::getPixmapFromQtResourcePath(":icons/png/typing.png") );
|
||||||
|
|
||||||
if (statusString == "is typing...") {
|
if (statusString == "is typing...") {
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue