1
0
mirror of https://github.com/qTox/qTox.git synced 2024-03-22 14:00:36 +08:00

Italian translation: update

This commit is contained in:
Ansa89 2014-12-15 11:11:10 +01:00
commit 276c5ce828
49 changed files with 521 additions and 494 deletions

View File

@ -1,8 +1,8 @@
#Install Instructions
- [Dependencies](#dependencies)
- [Windows](#windows)
- [Linux](#linux)
- [OS X](#osx)
- [Windows](#windows)
<a name="dependencies" />
##Dependencies
@ -15,6 +15,196 @@
| OpenCV | >= 2.4.9 | core, highgui, imgproc |
| OpenAL Soft | >= 1.16.0 | |
<a name="linux" />
##Linux
###Simple install
Easy qTox install is provided for variety of distributions:
https://wiki.tox.im/Binaries#Apt.2FAptitude_.28Debian.2C_Ubuntu.2C_Mint.2C_etc..29
If your distribution is not listed, or you want/need to compile qTox, there are provided instructions.
**Please note that installing toxcore/qTox from AUR is not supported**, although installing other dependencies, provided that they met requirements, should be fine, unless you are installing cryptography library from AUR, which should rise red flags by itself…
----
Most of the dependencies should be available through your package manger. You may either follow the directions below, or simply run `./simple_make.sh` after cloning, which will attempt to automatically download dependencies followed by compilation.
###Cloning the Repository
In order to clone the qTox repository you need Git.
Arch Linux:
```bash
sudo pacman -S --needed git
```
Debian:
```bash
sudo apt-get install git
```
Fedora:
```bash
yum install git
```
Ubuntu:
```bash
sudo apt-get install git
```
Afterwards open a new Terminal, change to a directory of your choice and clone the repository:
```bash
cd /home/user/qTox
git clone https://github.com/tux3/qTox.git qTox
```
The following steps assumes that you cloned the repository at "/home/user/qTox". If you decided to choose another location, replace corresponding parts.
###GCC, Qt, OpenCV and OpanAL Soft
Arch Linux:
```bash
sudo pacman -S --needed base-devel qt5 opencv openal libxss
```
Debian:
```bash
sudo apt-get install build-essential qt5-qmake qt5-default libopenal-dev libopencv-dev libxss-dev
```
Fedora:
```bash
yum groupinstall "Development Tools"
yum install qt-devel qt-doc qt-creator opencv-devel openal-soft-devel libXScrnSaver-devel
```
Slackware:
You can grab slackbuilds of the needed dependencies here:
http://slackbuilds.org/repository/14.1/libraries/OpenAL/
http://slackbuilds.org/repository/14.1/libraries/qt5/
http://slackbuilds.org/repository/14.1/libraries/opencv/
Ubuntu:
```bash
sudo apt-get install build-essential qt5-qmake qt5-default qttools5-dev-tools libopenal-dev libopencv-dev libxss-dev
```
###Tox Core
First of all install the dependencies of Tox Core.
Arch Linux:
```bash
sudo pacman -S --needed opus vpx
```
```
Debian:
```bash
sudo apt-get install libtool autotools-dev automake checkinstall check libopus-dev libvpx-dev
```
Fedora:
```bash
yum install libtool autoconf automake check check-devel
```
Ubuntu:
```bash
sudo apt-get install libtool autotools-dev automake checkinstall check libopus-dev libvpx-dev
```
Now you can either follow the instructions at https://github.com/irungentoo/toxcore/blob/master/INSTALL.md#unix or use the "bootstrap.sh" script located at "/home/user/qTox".
The script will automatically download and install Tox Core and libsodium to "/home/user/qTox/libs":
```bash
cd /home/user/qTox
./bootstrap.sh # use -h or --help for more information
```
After all the dependencies are thus reeady to go, compiling should be as simple as
```bash
qmake
make
```
###Building packages
Alternately, qTox now has the experimental and probably-dodgy ability to package itself (in .deb
form natively, and .rpm form with <a href="http://joeyh.name/code/alien/">alien</a>).
After installing the required dependencies, run `bootstrap.sh` and then run the
`buildPackages.sh` script, found in the tools folder. It will automatically get the
packages necessary for building .debs, so be prepared to type your password for sudo.
<a name="osx" />
##OS X
###OSX Easy Install
Since https://github.com/ReDetection/homebrew-qtox you can easily install qtox with homebrew
```bash
brew install --HEAD ReDetection/qtox/qtox
```
###OSX Full Install Guide
This guide is intended for people who wish to use an existing or new ProjectTox-Core installation separate to the bundled installation with qTox, if you do not wish to use a separate installation you can skip to the section titled 'Final Steps'.
Installation on OSX, isn't quite straight forward, here is a quick guide on how to install;
Note that qTox now requires OpenCV and OpenAL for video and audio.
The first thing you need to do is install ProjectTox-Core with a/v support. Refer to the INSTALL guide in the PrjectTox-Core github repo.
Next you need to download QtTools (http://qt-project.org/downloads), at the time of writing this is at version .3.0.
Make sure you deselect all the unnecessary components from the 5.3 checkbox (iOS/Android libs) otherwise you will end up with a very large download.
Once that is installed you will most likely need to set the path for qmake. To do this, open up terminal and paste in the following;
```bash
export PATH=/location/to/qmake/binary:$PATH
```
For myself, the qmake binary was located in /Users/mouseym/Qt/5.3/clang_64/bin/.
This is not a permanent change, it will revert when you close the terminal window, to add it permanently you will need to add echo the above line to your .profile/.bash_profile.
Once this is installed, do the following;
```bash
git clone https://github.com/tux3/qTox
cd toxgui
qmake
```
Now, we need to create a symlink to /usr/local/lib/ and /usr/local/include/
```
mkdir -p $HOME/qTox/libs
sudo ln -s /usr/local/lib $HOME/qTox/libs/lib
sudo ln -s /usr/local/include $HOME/qTox/libs/include
```
####Final Steps
The final step is to run
```bash
make
```
in the qTox directory, or if you are using the bundled tox core installation, you can use
```bash
./bootstrap.sh
make
```
Assuming all went well you should now have a qTox.app file within the directory. Double click and it should open!
<a name="windows" />
##Windows
@ -74,168 +264,4 @@ As for OpenCV there are no prebuild packages of OpenAL Softe compiled with MinGW
make
make install
```
Copy the dll "OpenAL32.dll" located at "C:\qTox\libs\openal-build\install\bin" to "C:\qTox\libs\lib". Finally, copy the directory "AL" located at "C:\qTox\libs\openal-build\install\include" to "C:\qTox\libs\include". Unlike OpenCV you don't need to patch any files. Feel free to delete the directories "openal-soft-x.y.z" and "openal-build", but you don't need to.
<a name="linux" />
##Linux
Most of the dependencies should be available through your package manger. You may either follow the directions below, or simply run `./simple_make.sh` after cloning, which will attempt to automatically download dependencies followed by compilation.
###Cloning the Repository
In order to clone the qTox repository you need Git.
Debian:
```bash
sudo apt-get install git
```
Ubuntu:
```bash
sudo apt-get install git
```
Arch Linux:
```bash
sudo pacman -S --needed git
```
Fedora:
```bash
yum install git
```
Afterwards open a new Terminal, change to a directory of your choice and clone the repository:
```bash
cd /home/user/qTox
git clone https://github.com/tux3/qTox.git qTox
```
The following steps assumes that you cloned the repository at "/home/user/qTox". If you decided to choose another location, replace corresponding parts.
###GCC, Qt, OpenCV and OpanAL Soft
Debian:
```bash
sudo apt-get install build-essential qt5-qmake qt5-default libopenal-dev libopencv-dev libxss-dev
```
Ubuntu:
```bash
sudo apt-get install build-essential qt5-qmake qt5-default qttools5-dev-tools libopenal-dev libopencv-dev libxss-dev
```
Arch Linux:
```bash
sudo pacman -S --needed base-devel qt5 opencv openal libxss
```
Fedora:
```bash
yum groupinstall "Development Tools"
yum install qt-devel qt-doc qt-creator opencv-devel openal-soft-devel libXScrnSaver-devel
```
###Tox Core
First of all install the dependencies of Tox Core.
Debian:
```bash
sudo apt-get install libtool autotools-dev automake checkinstall check libopus-dev libvpx-dev
```
Ubuntu:
```bash
sudo apt-get install libtool autotools-dev automake checkinstall check libopus-dev libvpx-dev
```
Arch Linux: (Arch Linux provides the package "tox-git" in AUR)
```bash
sudo pacman -S --needed opus vpx
```
Fedora:
```bash
yum install libtool autoconf automake check check-devel
```
Now you can either follow the instructions at https://github.com/irungentoo/toxcore/blob/master/INSTALL.md#unix or use the "bootstrap.sh" script located at "/home/user/qTox".
The script will automatically download and install Tox Core and libsodium to "/home/user/qTox/libs":
```bash
cd /home/user/qTox
./bootstrap.sh # use -h or --help for more information
```
After all the dependencies are thus reeady to go, compiling should be as simple as
```bash
qmake
make
```
###Building packages
Alternately, qTox now has the experimental and probably-dodgy ability to package itself (in .deb
form natively, and .rpm form with <a href="http://joeyh.name/code/alien/">alien</a>).
After installing the required dependencies, run `bootstrap.sh` and then run the
`buildPackages.sh` script, found in the tools folder. It will automatically get the
packages necessary for building .debs, so be prepared to type your password for sudo.
<a name="osx" />
##OS X
###OSX Easy Install
Since https://github.com/ReDetection/homebrew-qtox you can easily install qtox with homebrew
```bash
brew install --HEAD ReDetection/qtox/qtox
```
###OSX Full Install Guide
This guide is intended for people who wish to use an existing or new ProjectTox-Core installation separate to the bundled installation with qTox, if you do not wish to use a separate installation you can skip to the section titled 'Final Steps'.
Installation on OSX, isn't quite straight forward, here is a quick guide on how to install;
Note that qTox now requires OpenCV and OpenAL for video and audio.
The first thing you need to do is install ProjectTox-Core with a/v support. Refer to the INSTALL guide in the PrjectTox-Core github repo.
Next you need to download QtTools (http://qt-project.org/downloads), at the time of writing this is at version .3.0.
Make sure you deselect all the unnecessary components from the 5.3 checkbox (iOS/Android libs) otherwise you will end up with a very large download.
Once that is installed you will most likely need to set the path for qmake. To do this, open up terminal and paste in the following;
```bash
export PATH=/location/to/qmake/binary:$PATH
```
For myself, the qmake binary was located in /Users/mouseym/Qt/5.3/clang_64/bin/.
This is not a permanent change, it will revert when you close the terminal window, to add it permanently you will need to add echo the above line to your .profile/.bash_profile.
Once this is installed, do the following;
```bash
git clone https://github.com/tux3/qTox
cd toxgui
qmake
```
Now, we need to create a symlink to /usr/local/lib/ and /usr/local/include/
```
mkdir -p $HOME/qTox/libs
sudo ln -s /usr/local/lib $HOME/qTox/libs/lib
sudo ln -s /usr/local/include $HOME/qTox/libs/include
```
####Final Steps
The final step is to run
```bash
make
```
in the qTox directory, or if you are using the bundled tox core installation, you can use
```bash
./bootstrap.sh
make
```
Assuming all went well you should now have a qTox.app file within the directory. Double click and it should open!
Copy the dll "OpenAL32.dll" located at "C:\qTox\libs\openal-build\install\bin" to "C:\qTox\libs\lib". Finally, copy the directory "AL" located at "C:\qTox\libs\openal-build\install\include" to "C:\qTox\libs\include". Unlike OpenCV you don't need to patch any files. Feel free to delete the directories "openal-soft-x.y.z" and "openal-build", but you don't need to.

Binary file not shown.

After

Width:  |  Height:  |  Size: 420 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 716 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 410 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 719 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 478 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 704 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 395 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 711 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 374 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 637 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 386 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 685 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 363 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 635 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 366 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 670 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 378 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 677 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 320 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 578 B

View File

@ -32,6 +32,41 @@ func fs_type(path string) int {
return -1
}
func install(path string, pathlen int) int {
files, _ := ioutil.ReadDir(path)
for _, file := range files {
if fs_type(path+file.Name()) == 1 {
addpath := ""
if len(path) != pathlen {
addpath = path[pathlen:len(path)]
}
fmt.Print("Installing: ")
fmt.Println("/Applications/qtox.app/Contents/" + addpath + file.Name())
if _, err := os.Stat("/Applications/qtox.app/Contents/" + file.Name()); os.IsNotExist(err) {
newfile := exec.Command("/usr/libexec/authopen", "-c", "-x", "-m", "drwxrwxr-x+", "/Applications/qtox.app/Contents/"+addpath+file.Name())
newfile.Run()
}
cat := exec.Command("/bin/cat", path+file.Name())
auth := exec.Command("/usr/libexec/authopen", "-w", "/Applications/qtox.app/Contents/"+addpath+file.Name())
auth.Stdin, _ = cat.StdoutPipe()
auth.Stdout = os.Stdout
auth.Stderr = os.Stderr
_ = auth.Start()
_ = cat.Run()
_ = auth.Wait()
} else {
install(path+file.Name()+"/", pathlen)
}
}
return 0
}
func main() {
usr, e := user.Current()
if e != nil {
@ -45,51 +80,11 @@ func main() {
}
fmt.Println("qTox Updater")
files, _ := ioutil.ReadDir(update_dir)
killqtox := exec.Command("/usr/bin/killall", "qtox")
_ = killqtox.Run()
for _, file := range files {
if fs_type(update_dir+file.Name()) == 1 {
fmt.Print("Installing: ")
fmt.Println("/Applications/qtox.app/Contents/" + file.Name())
if _, err := os.Stat("/Applications/qtox.app/Contents/" + file.Name()); os.IsNotExist(err) {
newfile := exec.Command("/usr/libexec/authopen", "-c", "-x", "-m", "drwxrwxr-x+", "/Applications/qtox.app/Contents/"+file.Name())
newfile.Run()
}
install(update_dir, len(update_dir))
cat := exec.Command("/bin/cat", update_dir+file.Name())
auth := exec.Command("/usr/libexec/authopen", "-w", "/Applications/qtox.app/Contents/"+file.Name())
auth.Stdin, _ = cat.StdoutPipe()
auth.Stdout = os.Stdout
auth.Stderr = os.Stderr
_ = auth.Start()
_ = cat.Run()
_ = auth.Wait()
} else {
files, _ := ioutil.ReadDir(update_dir + file.Name())
for _, file2 := range files {
fmt.Print("Installing: ")
fmt.Println("/Applications/qtox.app/Contents/" + file.Name() + "/" + file2.Name())
if _, err := os.Stat("/Applications/qtox.app/Contents/" + file.Name() + "/" + file2.Name()); os.IsNotExist(err) {
newfile := exec.Command("/usr/libexec/authopen", "-c", "-x", "-m", "drwxrwxr-x+", "/Applications/qtox.app/Contents/"+file.Name()+"/"+file2.Name())
newfile.Run()
}
cat := exec.Command("/bin/cat", update_dir+file.Name()+"/"+file2.Name())
auth := exec.Command("/usr/libexec/authopen", "-w", "/Applications/qtox.app/Contents/"+file.Name()+"/"+file2.Name())
auth.Stdin, _ = cat.StdoutPipe()
auth.Stdout = os.Stdout
auth.Stderr = os.Stderr
_ = auth.Start()
_ = cat.Run()
_ = auth.Wait()
}
}
}
os.RemoveAll(update_dir)
fmt.Println("Update metadata wiped, launching qTox")
launchqtox := exec.Command("/usr/bin/open", "-b", "im.tox.qtox")

View File

@ -37,6 +37,14 @@
<file>img/status/dot_online.png</file>
<file>img/status/dot_online_2x.png</file>
<file>img/status/dot_online_notification.png</file>
<file>img/taskbar/dark/taskbar_online_2x.png</file>
<file>img/taskbar/dark/taskbar_idle_2x.png</file>
<file>img/taskbar/dark/taskbar_busy_2x.png</file>
<file>img/taskbar/dark/taskbar_offline_2x.png</file>
<file>img/taskbar/light/taskbar_online_2x.png</file>
<file>img/taskbar/light/taskbar_idle_2x.png</file>
<file>img/taskbar/light/taskbar_busy_2x.png</file>
<file>img/taskbar/light/taskbar_offline_2x.png</file>
<file>img/transfer.png</file>
<file>smileys/cylgom/angel.png</file>
<file>smileys/cylgom/angry.png</file>

View File

@ -87,8 +87,6 @@ void Audio::openOutput(const QString& outDevDescr)
{
auto* tmp = alOutDev;
alOutDev = nullptr;
if (tmp)
alcCloseDevice(tmp);
if (outDevDescr.isEmpty())
alOutDev = alcOpenDevice(nullptr);
else
@ -104,6 +102,8 @@ void Audio::openOutput(const QString& outDevDescr)
alcMakeContextCurrent(nullptr);
alcDestroyContext(alContext);
}
if (tmp)
alcCloseDevice(tmp);
alContext=alcCreateContext(alOutDev,nullptr);
if (!alcMakeContextCurrent(alContext))
{
@ -184,14 +184,14 @@ void Audio::playAudioBuffer(ALuint alSource, const int16_t *data, int samples, u
alGetSourcei(alSource, AL_BUFFERS_QUEUED, &queued);
alSourcei(alSource, AL_LOOPING, AL_FALSE);
if(processed)
if (processed)
{
ALuint bufids[processed];
alSourceUnqueueBuffers(alSource, processed, bufids);
alDeleteBuffers(processed - 1, bufids + 1);
bufid = bufids[0];
}
else if(queued < 16)
else if (queued < 16)
{
alGenBuffers(1, &bufid);
}
@ -207,6 +207,6 @@ void Audio::playAudioBuffer(ALuint alSource, const int16_t *data, int samples, u
ALint state;
alGetSourcei(alSource, AL_SOURCE_STATE, &state);
if(state != AL_PLAYING)
if (state != AL_PLAYING)
alSourcePlay(alSource);
}

View File

@ -728,7 +728,7 @@ void Core::requestFriendship(const QString& friendAddress, const QString& messag
{
const QString userId = friendAddress.mid(0, TOX_CLIENT_ID_SIZE * 2);
if(hasFriendWithAddress(friendAddress))
if (hasFriendWithAddress(friendAddress))
{
emit failedToAddFriend(userId, QString(tr("Friend is already added")));
}
@ -1677,7 +1677,7 @@ void Core::createGroup(uint8_t type)
bool Core::hasFriendWithAddress(const QString &addr) const
{
// Valid length check
if(addr.length() != (TOX_FRIEND_ADDRESS_SIZE * 2))
if (addr.length() != (TOX_FRIEND_ADDRESS_SIZE * 2))
{
return false;
}
@ -1689,7 +1689,7 @@ bool Core::hasFriendWithAddress(const QString &addr) const
bool Core::hasFriendWithPublicKey(const QString &pubkey) const
{
// Valid length check
if(pubkey.length() != (TOX_CLIENT_ID_SIZE * 2))
if (pubkey.length() != (TOX_CLIENT_ID_SIZE * 2))
{
return false;
}
@ -1706,7 +1706,7 @@ bool Core::hasFriendWithPublicKey(const QString &pubkey) const
QString addrOrId = getFriendAddress(ids[i]);
// Set true if found
if(addrOrId.toUpper().startsWith(pubkey.toUpper()))
if (addrOrId.toUpper().startsWith(pubkey.toUpper()))
{
found = true;
break;

View File

@ -207,7 +207,7 @@ void Core::playCallAudio(void* toxav, int32_t callId, const int16_t *data, uint1
alGenSources(1, &calls[callId].alSource);
ToxAvCSettings dest;
if(toxav_get_peer_csettings((ToxAv*)toxav, callId, 0, &dest) == 0)
if (toxav_get_peer_csettings((ToxAv*)toxav, callId, 0, &dest) == 0)
playAudioBuffer(calls[callId].alSource, data, samples, dest.audio_channels, dest.audio_sample_rate);
}
@ -229,24 +229,24 @@ void Core::sendCallAudio(int callId, ToxAv* toxav)
bool frame = false;
ALint samples;
alcGetIntegerv(Audio::alInDev, ALC_CAPTURE_SAMPLES, sizeof(samples), &samples);
if(samples >= framesize)
if (samples >= framesize)
{
memset(buf, 0, bufsize); // Avoid uninitialized values (Valgrind)
alcCaptureSamples(Audio::alInDev, buf, framesize);
frame = 1;
}
if(frame)
if (frame)
{
int r;
if((r = toxav_prepare_audio_frame(toxav, callId, dest, framesize*2, (int16_t*)buf, framesize)) < 0)
if ((r = toxav_prepare_audio_frame(toxav, callId, dest, framesize*2, (int16_t*)buf, framesize)) < 0)
{
qDebug() << "Core: toxav_prepare_audio_frame error";
calls[callId].sendAudioTimer->start();
return;
}
if((r = toxav_send_audio(toxav, callId, dest, r)) < 0)
if ((r = toxav_send_audio(toxav, callId, dest, r)) < 0)
qDebug() << "Core: toxav_send_audio error";
}
calls[callId].sendAudioTimer->start();
@ -271,7 +271,7 @@ void Core::sendCallVideo(int callId)
if (frame.w && frame.h)
{
int result;
if((result = toxav_prepare_video_frame(toxav, callId, videobuf, videobufsize, &frame)) < 0)
if ((result = toxav_prepare_video_frame(toxav, callId, videobuf, videobufsize, &frame)) < 0)
{
qDebug() << QString("Core: toxav_prepare_video_frame: error %1").arg(result);
vpx_img_free(&frame);
@ -279,7 +279,7 @@ void Core::sendCallVideo(int callId)
return;
}
if((result = toxav_send_video(toxav, callId, (uint8_t*)videobuf, result)) < 0)
if ((result = toxav_send_video(toxav, callId, (uint8_t*)videobuf, result)) < 0)
qDebug() << QString("Core: toxav_send_video error: %1").arg(result);
vpx_img_free(&frame);
@ -540,7 +540,7 @@ void Core::onAvStart(void* _toxav, int32_t call_index, void* core)
// This function's logic was shamelessly stolen from uTox
void Core::playAudioBuffer(ALuint alSource, const int16_t *data, int samples, unsigned channels, int sampleRate)
{
if(!channels || channels > 2)
if (!channels || channels > 2)
{
qWarning() << "Core::playAudioBuffer: trying to play on "<<channels<<" channels! Giving up.";
return;
@ -552,14 +552,14 @@ void Core::playAudioBuffer(ALuint alSource, const int16_t *data, int samples, un
alGetSourcei(alSource, AL_BUFFERS_QUEUED, &queued);
alSourcei(alSource, AL_LOOPING, AL_FALSE);
if(processed)
if (processed)
{
ALuint bufids[processed];
alSourceUnqueueBuffers(alSource, processed, bufids);
alDeleteBuffers(processed - 1, bufids + 1);
bufid = bufids[0];
}
else if(queued < 32)
else if (queued < 32)
{
alGenBuffers(1, &bufid);
}
@ -575,7 +575,7 @@ void Core::playAudioBuffer(ALuint alSource, const int16_t *data, int samples, un
ALint state;
alGetSourcei(alSource, AL_SOURCE_STATE, &state);
if(state != AL_PLAYING)
if (state != AL_PLAYING)
{
alSourcePlay(alSource);
//qDebug() << "Core: Starting audio source " << (int)alSource;
@ -643,17 +643,17 @@ void Core::sendGroupCallAudio(int groupId, ToxAv* toxav)
bool frame = false;
ALint samples;
alcGetIntegerv(Audio::alInDev, ALC_CAPTURE_SAMPLES, sizeof(samples), &samples);
if(samples >= framesize)
if (samples >= framesize)
{
memset(buf, 0, bufsize); // Avoid uninitialized values (Valgrind)
alcCaptureSamples(Audio::alInDev, buf, framesize);
frame = 1;
}
if(frame)
if (frame)
{
int r;
if((r = toxav_group_send_audio(toxav_get_tox(toxav), groupId, (int16_t*)buf,
if ((r = toxav_group_send_audio(toxav_get_tox(toxav), groupId, (int16_t*)buf,
framesize, av_DefaultSettings.audio_channels, av_DefaultSettings.audio_sample_rate)) < 0)
{
qDebug() << "Core: toxav_group_send_audio error";

View File

@ -70,7 +70,7 @@ int main(int argc, char *argv[])
parser.process(a);
Settings::getInstance(); // Build our Settings singleton as soon as QApplication is ready, not before
if(parser.isSet("P"))
if (parser.isSet("P"))
Settings::getInstance().setCurrentProfile(parser.value("P"));
sodium_init(); // For the auto-updater
@ -156,7 +156,7 @@ int main(int argc, char *argv[])
return EXIT_FAILURE;
}
}
else if(!ipc.isCurrentOwner() && !parser.isSet("P"))
else if (!ipc.isCurrentOwner() && !parser.isSet("P"))
{
time_t event = ipc.postEvent("$activate");
ipc.waitUntilProcessed(event);

View File

@ -129,7 +129,6 @@ void Settings::load()
makeToxPortable = s.value("makeToxPortable", false).toBool();
autostartInTray = s.value("autostartInTray", false).toBool();
closeToTray = s.value("closeToTray", false).toBool();
trayShowsUserStatus = s.value("trayShowsUserStatus", false).toBool();
forceTCP = s.value("forceTCP", false).toBool();
useProxy = s.value("useProxy", false).toBool();
proxyAddr = s.value("proxyAddr", "").toString();
@ -168,6 +167,7 @@ void Settings::load()
timestampFormat = s.value("timestampFormat", "hh:mm").toString();
minimizeOnClose = s.value("minimizeOnClose", false).toBool();
minimizeToTray = s.value("minimizeToTray", false).toBool();
lightTrayIcon = s.value("lightTrayIcon", false).toBool();
useNativeStyle = s.value("nativeStyle", false).toBool();
useEmoticons = s.value("useEmoticons", true).toBool();
statusChangeNotificationEnabled = s.value("statusChangeNotificationEnabled", false).toBool();
@ -281,7 +281,6 @@ void Settings::save(QString path, bool writeFriends)
s.setValue("showSystemTray", showSystemTray);
s.setValue("autostartInTray",autostartInTray);
s.setValue("closeToTray", closeToTray);
s.setValue("trayShowsUserStatus", trayShowsUserStatus);
s.setValue("useProxy", useProxy);
s.setValue("forceTCP", forceTCP);
s.setValue("proxyAddr", proxyAddr);
@ -317,6 +316,7 @@ void Settings::save(QString path, bool writeFriends)
s.setValue("timestampFormat", timestampFormat);
s.setValue("minimizeOnClose", minimizeOnClose);
s.setValue("minimizeToTray", minimizeToTray);
s.setValue("lightTrayIcon", lightTrayIcon);
s.setValue("nativeStyle", useNativeStyle);
s.setValue("useEmoticons", useEmoticons);
s.setValue("themeColor", themeColor);
@ -521,16 +521,6 @@ void Settings::setCloseToTray(bool newValue)
closeToTray = newValue;
}
bool Settings::getTrayShowsUserStatus() const
{
return trayShowsUserStatus;
}
void Settings::setTrayShowsUserStatus(bool newValue)
{
trayShowsUserStatus = newValue;
}
bool Settings::getMinimizeToTray() const
{
return minimizeToTray;
@ -542,6 +532,16 @@ void Settings::setMinimizeToTray(bool newValue)
minimizeToTray = newValue;
}
bool Settings::getLightTrayIcon() const
{
return lightTrayIcon;
}
void Settings::setLightTrayIcon(bool newValue)
{
lightTrayIcon = newValue;
}
bool Settings::getStatusChangeNotificationEnabled() const
{
return statusChangeNotificationEnabled;

View File

@ -58,12 +58,12 @@ public:
bool getCloseToTray() const;
void setCloseToTray(bool newValue);
bool getTrayShowsUserStatus() const;
void setTrayShowsUserStatus(bool newValue);
bool getMinimizeToTray() const;
void setMinimizeToTray(bool newValue);
bool getLightTrayIcon() const;
void setLightTrayIcon(bool newValue);
QString getStyle() const;
void setStyle(const QString& newValue);
@ -247,7 +247,7 @@ private:
bool autostartInTray;
bool closeToTray;
bool minimizeToTray;
bool trayShowsUserStatus;
bool lightTrayIcon;
bool useEmoticons;
bool checkUpdates;
bool showInFront;

View File

@ -69,9 +69,9 @@ QList<QPair<QString, QString> > SmileyPack::listSmileyPacks(const QStringList &p
if (relPath.leftRef(2) == "..")
{
if(!smileyPacks.contains(QPair<QString, QString>(packageName, absPath)))
if (!smileyPacks.contains(QPair<QString, QString>(packageName, absPath)))
smileyPacks << QPair<QString, QString>(packageName, absPath);
else if(!smileyPacks.contains(QPair<QString, QString>(packageName, relPath)))
else if (!smileyPacks.contains(QPair<QString, QString>(packageName, relPath)))
smileyPacks << QPair<QString, QString>(packageName, relPath); // use relative path for subdirectories
}
}
@ -97,7 +97,7 @@ bool SmileyPack::load(const QString& filename)
// open emoticons.xml
QFile xmlFile(filename);
if(!xmlFile.open(QIODevice::ReadOnly))
if (!xmlFile.open(QIODevice::ReadOnly))
return false; // cannot open file
/* parse the cfg file
@ -138,14 +138,14 @@ bool SmileyPack::load(const QString& filename)
QPixmap pm;
pm.loadFromData(getCachedSmiley(emoticon), "PNG");
if(pm.size().width() > 0)
if (pm.size().width() > 0)
emoticonSet.push_back(emoticon);
stringElement = stringElement.nextSibling().toElement();
}
if(emoticonSet.size() > 0)
if (emoticonSet.size() > 0)
emoticons.push_back(emoticonSet);
}

View File

@ -17,14 +17,14 @@
#include <QDebug>
#ifdef Q_OS_WIN32
#include "src/platform/timer.h"
#include <Windows.h>
#include <windows.h>
uint32_t Platform::getIdleTime()
{
LASTINPUTINFO info = { 0 };
info.cbSize = sizeof(info);
if(GetLastInputInfo(&info))
if (GetLastInputInfo(&info))
return GetTickCount() - info.dwTime;
return 0;
}

View File

@ -25,7 +25,7 @@ uint32_t Platform::getIdleTime()
uint32_t idleTime = 0;
Display *display = XOpenDisplay(NULL);
if(!display)
if (!display)
{
qDebug() << "XOpenDisplay(NULL) failed";
return 0;
@ -33,10 +33,10 @@ uint32_t Platform::getIdleTime()
int32_t x11event = 0, x11error = 0;
static int32_t hasExtension = XScreenSaverQueryExtension(display, &x11event, &x11error);
if(hasExtension)
if (hasExtension)
{
XScreenSaverInfo *info = XScreenSaverAllocInfo();
if(info)
if (info)
{
XScreenSaverQueryInfo(display, DefaultRootWindow(display), info);
idleTime = info->idle;

View File

@ -129,7 +129,7 @@ void CameraWorker::applyProps()
if (!cam.isOpened())
return;
for(int prop : props.keys())
for (int prop : props.keys())
cam.set(prop, props.value(prop));
}
@ -148,7 +148,7 @@ void CameraWorker::subscribe()
void CameraWorker::unsubscribe()
{
if(--refCount <= 0)
if (--refCount <= 0)
{
cam.release();
refCount = 0;

View File

@ -87,6 +87,7 @@ void ChatAreaWidget::mouseReleaseEvent(QMouseEvent * event)
}
}
}
emit onClick();
}
void ChatAreaWidget::onAnchorClicked(const QUrl &url)

View File

@ -41,6 +41,7 @@ public slots:
signals:
void onFileTranfertInterract(QString widgetName, QString buttonName);
void onClick();
protected:
void mouseReleaseEvent(QMouseEvent * event);

View File

@ -673,7 +673,7 @@ void ChatForm::onFileSendFailed(int FriendId, const QString &fname)
if (FriendId != f->getFriendID())
return;
addSystemInfoMessage("File: \"" + fname + "\" failed to send.", "red", QDateTime::currentDateTime());
addSystemInfoMessage(tr("Failed to send file \"%1\"").arg(fname), "red", QDateTime::currentDateTime());
}
void ChatForm::onAvatarChange(int FriendId, const QPixmap &pic)
@ -793,7 +793,7 @@ void ChatForm::onLoadHistory()
void ChatForm::startCounter()
{
if(!timer)
if (!timer)
{
timer = new QTimer();
connect(timer, SIGNAL(timeout()), this, SLOT(updateTime()));
@ -805,7 +805,7 @@ void ChatForm::startCounter()
void ChatForm::stopCounter()
{
if(timer)
if (timer)
{
addSystemInfoMessage(tr("Call with %1 ended. %2").arg(f->getDisplayedName(),
secondsToDHMS(timeElapsed.elapsed()/1000)),
@ -834,10 +834,10 @@ QString ChatForm::secondsToDHMS(quint32 duration)
int hours = (int) (duration % 24);
int days = (int) (duration / 24);
if(minutes == 0)
if (minutes == 0)
return cD + res.sprintf("%02ds", seconds);
if(hours == 0 && days == 0)
if (hours == 0 && days == 0)
return cD + res.sprintf("%02dm %02ds", minutes, seconds);
if (days == 0)

View File

@ -152,6 +152,7 @@ GenericChatForm::GenericChatForm(QWidget *parent) :
connect(emoteButton, SIGNAL(clicked()), this, SLOT(onEmoteButtonClicked()));
connect(chatWidget, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(onChatContextMenuRequested(QPoint)));
connect(chatWidget, SIGNAL(onClick()), this, SLOT(onChatWidgetClicked()));
chatWidget->document()->setDefaultStyleSheet(Style::getStylesheet(":ui/chatArea/innerStyle.css"));
chatWidget->setStyleSheet(Style::getStylesheet(":/ui/chatArea/chatArea.css"));
@ -252,6 +253,11 @@ void GenericChatForm::onEmoteButtonClicked()
}
}
void GenericChatForm::onChatWidgetClicked()
{
msgEdit->setFocus();
}
void GenericChatForm::onEmoteInsertRequested(QString str)
{
// insert the emoticon

View File

@ -69,6 +69,7 @@ protected slots:
void onEmoteButtonClicked();
void onEmoteInsertRequested(QString str);
void clearChatArea(bool);
void onChatWidgetClicked();
protected:
QString getElidedName(const QString& name);

View File

@ -209,11 +209,8 @@ void GroupChatForm::onCallClicked()
void GroupChatForm::keyPressEvent(QKeyEvent* ev)
{
if (msgEdit->hasFocus())
return;
// Push to talk
if (ev->key() == Qt::Key_P && inCall)
// Push to talk (CTRL+P)
if (ev->key() == Qt::Key_P && (ev->modifiers() & Qt::ControlModifier) && inCall)
{
Core* core = Core::getInstance();
if (!core->isGroupCallMicEnabled(group->getGroupId()))
@ -224,15 +221,15 @@ void GroupChatForm::keyPressEvent(QKeyEvent* ev)
Style::repolish(micButton);
}
}
if (msgEdit->hasFocus())
return;
}
void GroupChatForm::keyReleaseEvent(QKeyEvent* ev)
{
if (msgEdit->hasFocus())
return;
// Push to talk
if (ev->key() == Qt::Key_P && inCall)
// Push to talk (CTRL+P)
if (ev->key() == Qt::Key_P && (ev->modifiers() & Qt::ControlModifier) && inCall)
{
Core* core = Core::getInstance();
if (core->isGroupCallMicEnabled(group->getGroupId()))
@ -243,4 +240,7 @@ void GroupChatForm::keyReleaseEvent(QKeyEvent* ev)
Style::repolish(micButton);
}
}
if (msgEdit->hasFocus())
return;
}

View File

@ -62,8 +62,8 @@ GeneralForm::GeneralForm(SettingsWidget *myParent) :
bodyUI->closeToTray->setEnabled(showSystemTray);
bodyUI->minimizeToTray->setChecked(Settings::getInstance().getMinimizeToTray());
bodyUI->minimizeToTray->setEnabled(showSystemTray);
bodyUI->trayShowsUserStatus->setChecked(Settings::getInstance().getTrayShowsUserStatus());
bodyUI->trayShowsUserStatus->setEnabled(showSystemTray);
bodyUI->lightTrayIcon->setChecked(Settings::getInstance().getLightTrayIcon());
bodyUI->lightTrayIcon->setEnabled(showSystemTray);
bodyUI->statusChanges->setChecked(Settings::getInstance().getStatusChangeNotificationEnabled());
bodyUI->useEmoticons->setChecked(Settings::getInstance().getUseEmoticons());
bodyUI->autoacceptFiles->setChecked(Settings::getInstance().getAutoSaveEnabled());
@ -81,7 +81,7 @@ GeneralForm::GeneralForm(SettingsWidget *myParent) :
bodyUI->styleBrowser->addItem(tr("None"));
bodyUI->styleBrowser->addItems(QStyleFactory::keys());
if(QStyleFactory::keys().contains(Settings::getInstance().getStyle()))
if (QStyleFactory::keys().contains(Settings::getInstance().getStyle()))
bodyUI->styleBrowser->setCurrentText(Settings::getInstance().getStyle());
else
bodyUI->styleBrowser->setCurrentText(tr("None"));
@ -122,12 +122,12 @@ GeneralForm::GeneralForm(SettingsWidget *myParent) :
connect(bodyUI->startInTray, &QCheckBox::stateChanged, this, &GeneralForm::onSetAutostartInTray);
connect(bodyUI->closeToTray, &QCheckBox::stateChanged, this, &GeneralForm::onSetCloseToTray);
connect(bodyUI->minimizeToTray, &QCheckBox::stateChanged, this, &GeneralForm::onSetMinimizeToTray);
connect(bodyUI->trayShowsUserStatus, &QCheckBox::stateChanged, this, &GeneralForm::onSettrayShowsUserStatus);
connect(bodyUI->lightTrayIcon, &QCheckBox::stateChanged, this, &GeneralForm::onSetLightTrayIcon);
connect(bodyUI->statusChanges, &QCheckBox::stateChanged, this, &GeneralForm::onSetStatusChange);
connect(bodyUI->autoAwaySpinBox, SIGNAL(editingFinished()), this, SLOT(onAutoAwayChanged()));
connect(bodyUI->showInFront, &QCheckBox::stateChanged, this, &GeneralForm::onSetShowInFront);
connect(bodyUI->autoacceptFiles, &QCheckBox::stateChanged, this, &GeneralForm::onAutoAcceptFileChange);
if(bodyUI->autoacceptFiles->isChecked())
if (bodyUI->autoacceptFiles->isChecked())
connect(bodyUI->autoSaveFilesDir, SIGNAL(clicked()), this, SLOT(onAutoSaveDirChange()));
//theme
connect(bodyUI->useEmoticons, &QCheckBox::stateChanged, this, &GeneralForm::onUseEmoticonsChange);
@ -188,20 +188,20 @@ void GeneralForm::onSetCloseToTray()
Settings::getInstance().setCloseToTray(bodyUI->closeToTray->isChecked());
}
void GeneralForm::onSetLightTrayIcon()
{
Settings::getInstance().setLightTrayIcon(bodyUI->lightTrayIcon->isChecked());
Widget::getInstance()->updateTrayIcon();
}
void GeneralForm::onSetMinimizeToTray()
{
Settings::getInstance().setMinimizeToTray(bodyUI->minimizeToTray->isChecked());
}
void GeneralForm::onSettrayShowsUserStatus()
{
Settings::getInstance().setTrayShowsUserStatus(bodyUI->trayShowsUserStatus->isChecked());
Widget::getInstance()->updateTrayIcon();
}
void GeneralForm::onStyleSelected(QString style)
{
if(bodyUI->styleBrowser->currentIndex() == 0)
if (bodyUI->styleBrowser->currentIndex() == 0)
Settings::getInstance().setStyle("None");
else
Settings::getInstance().setStyle(style);
@ -230,7 +230,7 @@ void GeneralForm::onAutoAcceptFileChange()
{
Settings::getInstance().setAutoSaveEnabled(bodyUI->autoacceptFiles->isChecked());
if(bodyUI->autoacceptFiles->isChecked() == true)
if (bodyUI->autoacceptFiles->isChecked() == true)
connect(bodyUI->autoSaveFilesDir, SIGNAL(clicked()), this, SLOT(onAutoSaveDirChange()));
else
disconnect(bodyUI->autoSaveFilesDir, SIGNAL(clicked()),this, SLOT(onAutoSaveDirChange()));
@ -240,7 +240,7 @@ void GeneralForm::onAutoSaveDirChange()
{
QString previousDir = Settings::getInstance().getGlobalAutoAcceptDir();
QString directory = QFileDialog::getExistingDirectory(0, tr("Choose an auto accept directory","popup title"));
if(directory.isEmpty())
if (directory.isEmpty())
directory = previousDir;
Settings::getInstance().setGlobalAutoAcceptDir(directory);
@ -308,7 +308,7 @@ void GeneralForm::reloadSmiles()
QStringList smiles;
smiles << ":)" << ";)" << ":p" << ":O" << ":["; //just in case...
for(int i = 0; i < emoticons.size(); i++)
for (int i = 0; i < emoticons.size(); i++)
smiles.push_front(emoticons.at(i).first());
int pixSize = 30;

View File

@ -37,6 +37,7 @@ private slots:
void onSetShowSystemTray();
void onSetAutostartInTray();
void onSetCloseToTray();
void onSetLightTrayIcon();
void onSmileyBrowserIndexChanged(int index);
void onUDPUpdated();
void onProxyAddrEdited();
@ -49,7 +50,6 @@ private slots:
void onAutoAwayChanged();
void onUseEmoticonsChange();
void onSetMinimizeToTray();
void onSettrayShowsUserStatus();
void onReconnectClicked();
void onAutoAcceptFileChange();
void onAutoSaveDirChange();

View File

@ -39,8 +39,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>509</width>
<height>849</height>
<width>513</width>
<height>819</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout_4" stretch="0,0,1">
@ -109,7 +109,7 @@
</property>
</widget>
</item>
<item row="1" column="0">
<item row="1" column="0" colspan="2">
<layout class="QHBoxLayout" name="trayBehavior">
<item>
<widget class="QCheckBox" name="startInTray">
@ -152,19 +152,10 @@
</item>
</layout>
</item>
<item row="2" column="0">
<widget class="QCheckBox" name="trayShowsUserStatus">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<item row="0" column="1">
<widget class="QCheckBox" name="lightTrayIcon">
<property name="text">
<string>Tray icon displays user status</string>
</property>
<property name="toolTip">
<string>This is a temporary work around until proper systray status icons are available.</string>
<string>Light icon</string>
</property>
</widget>
</item>
@ -607,21 +598,5 @@
</hint>
</hints>
</connection>
<connection>
<sender>showSystemTray</sender>
<signal>toggled(bool)</signal>
<receiver>trayShowsUserStatus</receiver>
<slot>setEnabled(bool)</slot>
<hints>
<hint type="sourcelabel">
<x>148</x>
<y>143</y>
</hint>
<hint type="destinationlabel">
<x>158</x>
<y>205</y>
</hint>
</hints>
</connection>
</connections>
</ui>

View File

@ -52,7 +52,7 @@ void TabCompleter::buildCompletionList()
// that section is then used as the completion regex
QRegExp regex(QString("^[-_\\[\\]{}|`^.\\\\]*").append(QRegExp::escape(tabAbbrev)), Qt::CaseInsensitive);
for(auto name : group->getPeerList())
for (auto name : group->getPeerList())
if (regex.indexIn(name) > -1)
completionMap[name.toLower()] = name;

View File

@ -130,6 +130,6 @@ void MaskablePixmapWidget::paintEvent(QPaintEvent *)
void MaskablePixmapWidget::mousePressEvent(QMouseEvent*)
{
if(clickable)
if (clickable)
emit clicked();
}

View File

@ -29,7 +29,7 @@ MessageAction::MessageAction(const QString &author, const QString &message, cons
QString MessageAction::getMessage(QString div)
{
QString message_;
if(Settings::getInstance().getUseEmoticons())
if (Settings::getInstance().getUseEmoticons())
message_ = SmileyPack::getInstance().smileyfied(toHtmlChars(message));
else
message_ = toHtmlChars(message);

View File

@ -54,7 +54,7 @@
void toxActivateEventHandler(const QByteArray& data)
{
if(data != "$activate")
if (data != "$activate")
return;
Widget::getInstance()->show();
Widget::getInstance()->activateWindow();
@ -116,7 +116,7 @@ void Widget::init()
if (Settings::getInstance().getShowSystemTray()){
icon->show();
if(Settings::getInstance().getAutostartInTray() == false)
if (Settings::getInstance().getAutostartInTray() == false)
this->show();
}
else
@ -125,7 +125,8 @@ void Widget::init()
}
else
{
qWarning() << "No system tray detected!";
qWarning() << "Widget: No system tray detected!";
icon = nullptr;
this->show();
}
@ -148,7 +149,7 @@ void Widget::init()
ui->tooliconsZone->setStyleSheet(Style::resolve("QPushButton{background-color:@themeDark;border:none;}QPushButton:hover{background-color:@themeMediumDark;border:none;}"));
if(QStyleFactory::keys().contains(Settings::getInstance().getStyle())
if (QStyleFactory::keys().contains(Settings::getInstance().getStyle())
&& Settings::getInstance().getStyle() != "None")
{
ui->mainHead->setStyle(QStyleFactory::create(Settings::getInstance().getStyle()));
@ -295,22 +296,20 @@ void Widget::setTranslation()
void Widget::updateTrayIcon()
{
if(Settings::getInstance().getTrayShowsUserStatus())
{
QString status = ui->statusButton->property("status").toString();
QString icon;
if(status == "online")
icon = ":img/status/dot_online_2x.png";
else if(status == "away")
icon = ":img/status/dot_idle_2x.png";
else if(status == "busy")
icon = ":img/status/dot_busy_2x.png";
else
icon = ":img/status/dot_away_2x.png";
this->icon->setIcon(QIcon(icon));
}
if (!icon)
return;
QString status = ui->statusButton->property("status").toString();
QString pic;
QString color = Settings::getInstance().getLightTrayIcon() ? "light" : "dark";
if (status == "online")
pic = ":img/taskbar/" + color + "/taskbar_online_2x.png";
else if (status == "away")
pic = ":img/taskbar/" + color + "/taskbar_idle_2x.png";
else if (status == "busy")
pic = ":img/taskbar/" + color + "/taskbar_busy_2x.png";
else
icon->setIcon(windowIcon());
pic = ":img/taskbar/" + color + "/taskbar_offline_2x.png";
icon->setIcon(QIcon(pic));
}
Widget::~Widget()
@ -350,7 +349,7 @@ QThread* Widget::getCoreThread()
void Widget::closeEvent(QCloseEvent *event)
{
if(Settings::getInstance().getShowSystemTray() && Settings::getInstance().getCloseToTray() == true)
if (Settings::getInstance().getShowSystemTray() && Settings::getInstance().getCloseToTray() == true)
{
event->ignore();
this->hide();
@ -367,7 +366,7 @@ void Widget::changeEvent(QEvent *event)
{
if (event->type() == QEvent::WindowStateChange)
{
if(isMinimized() && Settings::getInstance().getMinimizeToTray())
if (isMinimized() && Settings::getInstance().getMinimizeToTray())
{
this->hide();
}
@ -417,7 +416,7 @@ QList<QString> Widget::searchProfiles()
QDir dir(Settings::getSettingsDirPath());
dir.setFilter(QDir::Files | QDir::NoDotAndDotDot);
dir.setNameFilters(QStringList("*.tox"));
for(QFileInfo file : dir.entryInfoList())
for (QFileInfo file : dir.entryInfoList())
out += file.completeBaseName();
return out;
}
@ -593,7 +592,7 @@ void Widget::onIconClick(QSystemTrayIcon::ActivationReason reason)
{
switch (reason) {
case QSystemTrayIcon::Trigger:
if(this->isHidden() == true)
if (this->isHidden() == true)
{
this->show();
this->activateWindow();
@ -714,7 +713,7 @@ void Widget::addFriend(int friendId, const QString &userId)
void Widget::addFriendFailed(const QString&, const QString& errorInfo)
{
QString info = QString(tr("Couldn't request friendship"));
if(!errorInfo.isEmpty()) {
if (!errorInfo.isEmpty()) {
info = info + (QString(": ") + errorInfo);
}
@ -735,7 +734,7 @@ void Widget::onFriendStatusChanged(int friendId, Status status)
f->getFriendWidget()->updateStatusLight();
//won't print the message if there were no messages before
if(!f->getChatForm()->isEmpty()
if (!f->getChatForm()->isEmpty()
&& Settings::getInstance().getStatusChangeNotificationEnabled())
{
QString fStatus = "";

31
translations/de.ts vendored
View File

@ -36,6 +36,11 @@
<source>Capture device</source>
<translation>Aufnahmegerät</translation>
</message>
<message>
<location filename="../src/widget/form/settings/avsettings.ui" line="95"/>
<source>Rescan audio devices</source>
<translation>Erneut nach Audiogeräten suchen</translation>
</message>
<message>
<location filename="../src/widget/form/settings/avsettings.ui" line="98"/>
<source>Video Settings</source>
@ -252,6 +257,11 @@ Soll der Proxy ignoriert und eine direkte Internetverbindung genutzt werden?</tr
<source>Call rejected</source>
<translation>Anruf abgewiesen</translation>
</message>
<message>
<location filename="../src/widget/form/chatform.cpp" line="676"/>
<source>Failed to send file</source>
<translation>Fehler beim Senden der Datei</translation>
</message>
<message>
<location filename="../src/widget/form/chatform.cpp" line="804"/>
<source>Call with %1 ended. %2</source>
@ -594,29 +604,34 @@ Wollen Sie ein anderes probieren?</translation>
<translation>Mache Tox portabel</translation>
</message>
<message>
<location filename="../src/widget/form/settings/generalsettings.ui" line="101"/>
<source>Show system tray</source>
<location filename="../src/widget/form/settings/generalsettings.ui" line="99"/>
<source>System tray integration</source>
<translation>Systemtray Integration</translation>
</message>
<message>
<location filename="../src/widget/form/settings/generalsettings.ui" line="108"/>
<source>Show system tray icon</source>
<translation>Im Systemtray zeigen</translation>
</message>
<message>
<location filename="../src/widget/form/settings/generalsettings.ui" line="114"/>
<location filename="../src/widget/form/settings/generalsettings.ui" line="123"/>
<source>Start in tray</source>
<translation>Ins Tray starten</translation>
</message>
<message>
<location filename="../src/widget/form/settings/generalsettings.ui" line="127"/>
<location filename="../src/widget/form/settings/generalsettings.ui" line="136"/>
<source>Close to tray</source>
<translation>Ins Tray schließen</translation>
</message>
<message>
<location filename="../src/widget/form/settings/generalsettings.ui" line="140"/>
<location filename="../src/widget/form/settings/generalsettings.ui" line="149"/>
<source>Minimize to tray</source>
<translation>Ins Tray minimieren</translation>
</message>
<message>
<location filename="../src/widget/form/settings/generalsettings.ui" line="149"/>
<source>Show contacts&apos; status changes</source>
<translation>Zeige Statusänderungen der Kontakte</translation>
<translation>Zeigt Statusänderungen der Kontakte</translation>
</message>
<message>
<location filename="../src/widget/form/settings/generalsettings.ui" line="156"/>
@ -626,7 +641,7 @@ Wollen Sie ein anderes probieren?</translation>
<message>
<location filename="../src/widget/form/settings/generalsettings.ui" line="163"/>
<source>Focus qTox when a message is received</source>
<translation>Bringe qTox in den Vordergrund, wenn eine Nachricht eintrifft</translation>
<translation>Bringt qTox in den Vordergrund, wenn eine Nachricht eintrifft</translation>
</message>
<message>
<location filename="../src/widget/form/settings/generalsettings.ui" line="170"/>
@ -1629,4 +1644,4 @@ Es wird beim Neustart von qTox installiert.</translation>
<translation>Senden der Nachricht fehlgeschlagen</translation>
</message>
</context>
</TS>
</TS>

140
translations/fr.ts vendored
View File

@ -76,13 +76,13 @@
<message>
<location filename="../src/widget/form/addfriendform.cpp" line="34"/>
<source>Add Friends</source>
<translation>Ajouter des amis</translation>
<translation>Ajouter des contacts</translation>
</message>
<message>
<location filename="../src/widget/form/addfriendform.cpp" line="37"/>
<source>Tox ID</source>
<comment>Tox ID of the person you&apos;re sending a friend request to</comment>
<translation>ID Tox</translation>
<translation>Tox ID</translation>
</message>
<message>
<location filename="../src/widget/form/addfriendform.cpp" line="38"/>
@ -93,25 +93,25 @@
<message>
<location filename="../src/widget/form/addfriendform.cpp" line="39"/>
<source>Send friend request</source>
<translation>Envoyer la demande d&apos;ami</translation>
<translation>Envoyer la demande de contact</translation>
</message>
<message>
<location filename="../src/widget/form/addfriendform.cpp" line="40"/>
<source>Tox me maybe?</source>
<comment>Default message in friend requests if the field is left blank. Write something appropriate!</comment>
<translation>Je souhaiterais vous ajouter à mes contacts</translation>
<translation>Je souhaiterais vous ajouter à mes contacts.</translation>
</message>
<message>
<location filename="../src/widget/form/addfriendform.cpp" line="89"/>
<source>Please fill in a valid Tox ID</source>
<comment>Tox ID of the friend you&apos;re sending a friend request to</comment>
<translation>Merci de remplir un ID Tox valide</translation>
<translation>Merci d&apos;entrer un Tox ID valide</translation>
</message>
<message>
<location filename="../src/widget/form/addfriendform.cpp" line="92"/>
<source>You can&apos;t add yourself as a friend!</source>
<comment>When trying to add your own Tox ID as friend</comment>
<translation>Vous ne pouvez pas vous ajouter vous même en temps qu&apos;ami!</translation>
<translation>Vous ne pouvez pas vous ajouter vous-même !</translation>
</message>
<message>
<location filename="../src/widget/form/addfriendform.cpp" line="100"/>
@ -123,19 +123,19 @@ Ignorer le proxy et se connecter directement à Internet ?</translation>
<message>
<source>qTox needs to use the Tox DNS, but can&apos;t do it through a proxy
Ignore the proxy and connect to the Internet directly ?</source>
<translation type="vanished">qTox as besoin d&apos;utiliser le DNS Tox, mais ne peut pas le faire avec un proxy
<translation type="vanished">qTox a besoin d&apos;utiliser le DNS Tox, mais ne peut pas le faire avec un proxy
Ignorer le proxy et se connecter directement à Internet ?</translation>
</message>
<message>
<location filename="../src/widget/form/addfriendform.cpp" line="110"/>
<source>This Tox ID does not exist</source>
<comment>DNS error</comment>
<translation>Cet ID Tox n&apos;existe pas</translation>
<translation>Ce Tox ID n&apos;existe pas</translation>
</message>
<message>
<source>This address does not exist</source>
<comment>The DNS gives the Tox ID associated to toxme.se addresses</comment>
<translation type="vanished">Cette addresse n&apos;existe pas</translation>
<translation type="vanished">Cette adresse n&apos;existe pas</translation>
</message>
<message>
<source>Error while looking up DNS</source>
@ -178,22 +178,22 @@ Ignorer le proxy et se connecter directement à Internet ?</translation>
<message>
<location filename="../src/widget/form/chatform.cpp" line="148"/>
<source>Bad Idea</source>
<translation>Mauvaise Idée</translation>
<translation>Mauvaise idée</translation>
</message>
<message>
<location filename="../src/widget/form/chatform.cpp" line="148"/>
<source>You&apos;re trying to send a special (sequential) file, that&apos;s not going to work!</source>
<translation>Vous êtes en train d&apos;essayer d&apos;envoyer un fichier spécial (sequentiel), ça ne marchera pas!</translation>
<translation>Vous êtes en train d&apos;essayer d&apos;envoyer un fichier spécial (sequentiel), ça ne fonctionnera pas !</translation>
</message>
<message>
<location filename="../src/widget/form/chatform.cpp" line="254"/>
<source>%1 calling</source>
<translation>%1 appelle</translation>
<translation>%1 appel</translation>
</message>
<message>
<location filename="../src/widget/form/chatform.cpp" line="323"/>
<source>%1 stopped calling</source>
<translation>%1a arreté l&apos;appel</translation>
<translation>%1 a arreté l&apos;appel</translation>
</message>
<message>
<location filename="../src/widget/form/chatform.cpp" line="379"/>
@ -229,7 +229,7 @@ Ignorer le proxy et se connecter directement à Internet ?</translation>
<message>
<location filename="../src/core.cpp" line="256"/>
<source>Toxing on qTox</source>
<translation>Toxer avec qTox</translation>
<translation>Je Tox sur qTox</translation>
</message>
<message>
<location filename="../src/core.cpp" line="257"/>
@ -239,7 +239,7 @@ Ignorer le proxy et se connecter directement à Internet ?</translation>
<message>
<location filename="../src/core.cpp" line="746"/>
<source>Friend is already added</source>
<translation>Cet ami est déjà dans cos contact</translation>
<translation>Ce contact est déjà dans vos contacts</translation>
</message>
<message>
<location filename="../src/core.cpp" line="1176"/>
@ -249,7 +249,7 @@ Ignorer le proxy et se connecter directement à Internet ?</translation>
<message>
<location filename="../src/core.cpp" line="1176"/>
<source>The .tox file is encrypted, but encryption was not checked, continuing regardless.</source>
<translation>Le fichier .tox est chiffré, mais l&apos;encryption n&apos;as pas été activée. Le problème sera ignoré.</translation>
<translation>Le fichier .tox est chiffré, mais le chiffrement n&apos;a pas été activé. Le problème sera ignoré.</translation>
</message>
<message>
<location filename="../src/core.cpp" line="1183"/>
@ -261,14 +261,14 @@ Ignorer le proxy et se connecter directement à Internet ?</translation>
<location filename="../src/core.cpp" line="1197"/>
<location filename="../src/core.cpp" line="1261"/>
<source>Password error</source>
<translation>Mod de passe invalide</translation>
<translation>Mot de passe invalide</translation>
</message>
<message>
<location filename="../src/core.cpp" line="1185"/>
<location filename="../src/core.cpp" line="1261"/>
<source>Failed to setup password.
Empty password.</source>
<translation>Impossible de mettre ne place le mot de passe.
<translation>Impossible de mettre en place le mot de passe.
Le mot de passe est vide.</translation>
</message>
<message>
@ -289,7 +289,7 @@ Le mot de passe est vide.</translation>
<message>
<location filename="../src/core.cpp" line="1198"/>
<source>Wrong password has been entered</source>
<translation>Un mauvais mot de passe à été entré</translation>
<translation>Un mauvais mot de passe a été entré</translation>
</message>
<message>
<location filename="../src/core.cpp" line="1259"/>
@ -316,7 +316,7 @@ Voulez-vous essayer un mot de passe différent?</translation>
<message>
<location filename="../src/core.cpp" line="1277"/>
<source>Due to incorret password logging will be disabled</source>
<translation>À cause d&apos;un mauvais mot de passe, l&apos;historique sera désactivé</translation>
<translation>Due à l&apos;utilisation d&apos;un mauvais mot de passe, l&apos;historique sera désactivé</translation>
</message>
<message>
<location filename="../src/core.cpp" line="1350"/>
@ -326,7 +326,7 @@ Voulez-vous essayer un mot de passe différent?</translation>
<message>
<location filename="../src/core.cpp" line="1350"/>
<source>Will be saved without encryption!</source>
<translation>L&apos;historique sera sauvegardé sans être chiffré!</translation>
<translation>L&apos;historique sera sauvegardé sans être chiffré !</translation>
</message>
</context>
<context>
@ -380,12 +380,12 @@ Voulez-vous essayer un mot de passe différent?</translation>
<location filename="../src/widget/tool/friendrequestdialog.cpp" line="30"/>
<source>Friend request</source>
<comment>Title of the window to aceept/deny a friend request</comment>
<translation>Demande d&apos;ami</translation>
<translation>Demande de contact</translation>
</message>
<message>
<location filename="../src/widget/tool/friendrequestdialog.cpp" line="32"/>
<source>Someone wants to make friends with you</source>
<translation>Quelqu&apos;un veut devenir votre ami</translation>
<translation>Quelqu&apos;un vient de vous ajouter dans sa liste de contacts</translation>
</message>
<message>
<location filename="../src/widget/tool/friendrequestdialog.cpp" line="33"/>
@ -395,7 +395,7 @@ Voulez-vous essayer un mot de passe différent?</translation>
<message>
<location filename="../src/widget/tool/friendrequestdialog.cpp" line="37"/>
<source>Friend request message:</source>
<translation>Message de demande d&apos;ami:</translation>
<translation>Message au sujet de la demande:</translation>
</message>
<message>
<location filename="../src/widget/tool/friendrequestdialog.cpp" line="44"/>
@ -422,7 +422,7 @@ Voulez-vous essayer un mot de passe différent?</translation>
<location filename="../src/widget/friendwidget.cpp" line="56"/>
<source>Copy friend ID</source>
<comment>Menu to copy the Tox ID of that friend</comment>
<translation>Copier l&apos;ID ami</translation>
<translation>Copier l&apos;ID du contact</translation>
</message>
<message>
<location filename="../src/widget/friendwidget.cpp" line="68"/>
@ -458,7 +458,7 @@ Voulez-vous essayer un mot de passe différent?</translation>
<message>
<source>Disable global auto accept</source>
<comment>context menu entry</comment>
<translation type="vanished">Désactiver l&apos;acceptation automatique de fichier</translation>
<translation type="vanished">Désactiver le téléchargement automatique de fichiers</translation>
</message>
<message>
<location filename="../src/widget/friendwidget.cpp" line="109"/>
@ -470,7 +470,7 @@ Voulez-vous essayer un mot de passe différent?</translation>
<location filename="../src/widget/friendwidget.cpp" line="76"/>
<source>Remove friend</source>
<comment>Menu to remove the friend from our friendlist</comment>
<translation>Supprimer ami</translation>
<translation>Supprimer ce contact</translation>
</message>
</context>
<context>
@ -502,7 +502,7 @@ Voulez-vous essayer un mot de passe différent?</translation>
<location filename="../src/widget/form/settings/generalform.cpp" line="267"/>
<source>You can&apos;t disconnect while a call is active!</source>
<comment>popup text</comment>
<translation>Vous ne pouvez pas vous déconnecter avec un appel en cours!</translation>
<translation>Vous ne pouvez pas vous déconnecter avec un appel en cours !</translation>
</message>
</context>
<context>
@ -520,7 +520,7 @@ Voulez-vous essayer un mot de passe différent?</translation>
<location filename="../src/widget/form/settings/generalsettings.ui" line="64"/>
<location filename="../src/widget/form/settings/generalsettings.ui" line="80"/>
<source>The translation may not load until qTox restarts.</source>
<translation>La translation peut ne pas se charger jusqu&apos;à ce que qTox redémarre.</translation>
<translation>La traduction peut ne pas prendre effet immédiatement. Redémarrez qTox si ce n&apos;est pas le cas.</translation>
</message>
<message>
<source>Translation:</source>
@ -550,7 +550,7 @@ Voulez-vous essayer un mot de passe différent?</translation>
<message>
<location filename="../src/widget/form/settings/generalsettings.ui" line="133"/>
<source>Minimize to tray</source>
<translation>Minimizer dans la barre d&apos;état</translation>
<translation>Minimiser dans la barre d&apos;état</translation>
</message>
<message>
<location filename="../src/widget/form/settings/generalsettings.ui" line="142"/>
@ -564,7 +564,7 @@ Voulez-vous essayer un mot de passe différent?</translation>
</message>
<message>
<source>Auto away after (0 to disable):</source>
<translation type="vanished">Auto-absent après (0 pour désactiver):</translation>
<translation type="vanished">Se rendre absent après (0 pour désactiver):</translation>
</message>
<message>
<location filename="../src/widget/form/settings/generalsettings.ui" line="191"/>
@ -620,7 +620,7 @@ Voulez-vous essayer un mot de passe différent?</translation>
<location filename="../src/widget/form/settings/generalsettings.ui" line="492"/>
<source>Reconnect</source>
<comment>reconnect button</comment>
<translation>Reconnection</translation>
<translation>Se reconnecter</translation>
</message>
<message>
<location filename="../src/widget/form/settings/generalsettings.ui" line="422"/>
@ -640,7 +640,7 @@ Voulez-vous essayer un mot de passe différent?</translation>
<message>
<location filename="../src/widget/form/settings/generalsettings.ui" line="156"/>
<source>Focus qTox when a message is received</source>
<translation>Montrer qTox quand un message est reçu</translation>
<translation>Montrer la fênetre qTox quand un message est reçu</translation>
</message>
<message>
<location filename="../src/widget/form/settings/generalsettings.ui" line="163"/>
@ -713,7 +713,7 @@ Voulez-vous essayer un mot de passe différent?</translation>
<message>
<source>This allows, e.g., toxing over Tor. It adds load to the Tox network however, so use only when necessary.</source>
<extracomment>force tcp checkbox tooltip</extracomment>
<translation type="vanished">Permet par exemple d&apos;utiliser Tox à travers Tor, mais ce n&apos;est à utiliser que si nécessaire, car cela ralenti le réseau Tox.</translation>
<translation type="vanished">Permet par exemple d&apos;utiliser Tox à travers Tor, mais ce n&apos;est à utiliser que si nécessaire car cela ralenti le réseau Tox.</translation>
</message>
<message>
<source>Disable UDP (not recommended)</source>
@ -748,7 +748,7 @@ Voulez-vous essayer un mot de passe différent?</translation>
<message>
<location filename="../src/widget/form/genericchatform.cpp" line="64"/>
<source>Smileys</source>
<translation>Emoticones</translation>
<translation>Émoticônes</translation>
</message>
<message>
<location filename="../src/widget/form/genericchatform.cpp" line="68"/>
@ -768,7 +768,7 @@ Voulez-vous essayer un mot de passe différent?</translation>
<message>
<location filename="../src/widget/form/genericchatform.cpp" line="77"/>
<source>Toggle speakers volume</source>
<translation>Couper les haut parleurs</translation>
<translation>Couper les haut-parleurs</translation>
</message>
<message>
<location filename="../src/widget/form/genericchatform.cpp" line="80"/>
@ -818,7 +818,7 @@ Voulez-vous essayer un mot de passe différent?</translation>
<location filename="../src/widget/groupwidget.cpp" line="44"/>
<location filename="../src/widget/groupwidget.cpp" line="66"/>
<source>0 users in chat</source>
<translation>0 personnes</translation>
<translation>Le groupe est vide</translation>
</message>
<message>
<location filename="../src/widget/groupwidget.cpp" line="53"/>
@ -844,7 +844,7 @@ Voulez-vous essayer un mot de passe différent?</translation>
<location filename="../src/widget/form/settings/identityform.cpp" line="133"/>
<source>You can&apos;t switch profiles while a call is active!</source>
<comment>popup text</comment>
<translation>Vous ne pouvez pas changer de profil quand un appel est en cours!</translation>
<translation>Vous ne pouvez pas changer de profil quand un appel est en cours !</translation>
</message>
<message>
<location filename="../src/widget/form/settings/identityform.cpp" line="143"/>
@ -894,7 +894,7 @@ Voulez-vous essayer un mot de passe différent?</translation>
<message>
<location filename="../src/widget/form/settings/identityform.cpp" line="186"/>
<source>The file you chose could not be written to.</source>
<translation>Le fichier que vous avez choisi n&apos;as pas pu être écrit.</translation>
<translation>Le fichier que vous avez choisi n&apos;es pas disponible en écriture.</translation>
</message>
<message>
<location filename="../src/widget/form/settings/identityform.cpp" line="194"/>
@ -912,7 +912,7 @@ Voulez-vous essayer un mot de passe différent?</translation>
<location filename="../src/widget/form/settings/identityform.cpp" line="198"/>
<source>Deletion imminent!</source>
<comment>deletion confirmation title</comment>
<translation>Suppression imminente!</translation>
<translation>Suppression imminente !</translation>
</message>
<message>
<location filename="../src/widget/form/settings/identityform.cpp" line="199"/>
@ -936,13 +936,13 @@ Voulez-vous essayer un mot de passe différent?</translation>
<location filename="../src/widget/form/settings/identityform.cpp" line="223"/>
<source>Ignoring non-Tox file</source>
<comment>popup title</comment>
<translation>Fichier non-Tox ignoré</translation>
<translation>Fichier incompatible avec Tox ignoré</translation>
</message>
<message>
<location filename="../src/widget/form/settings/identityform.cpp" line="224"/>
<source>Warning: you&apos;ve chosen a file that is not a Tox save file; ignoring.</source>
<comment>popup text</comment>
<translation>Attention: Vous avez sélectionné un fichier qui n&apos;est pas une sauvegarde Tox: il sera ignoré.</translation>
<translation>Attention: Vous avez sélectionné un fichier qui n&apos;est pas une sauvegarde Tox, il sera ignoré.</translation>
</message>
<message>
<location filename="../src/widget/form/settings/identityform.cpp" line="230"/>
@ -986,7 +986,7 @@ Voulez-vous essayer un mot de passe différent?</translation>
<message>
<location filename="../src/widget/form/settings/identitysettings.ui" line="88"/>
<source>Your Tox ID (click to copy)</source>
<translation>Votre ID Tox (cliquez pour copier)</translation>
<translation>Votre Tox ID (cliquez pour copier)</translation>
</message>
<message>
<location filename="../src/widget/form/settings/identitysettings.ui" line="98"/>
@ -1033,7 +1033,7 @@ Voulez-vous essayer un mot de passe différent?</translation>
<location filename="../src/widget/form/settings/identitysettings.ui" line="151"/>
<source>This is useful to remain safe on public computers</source>
<comment>delete profile button tooltip</comment>
<translation>Util pour sécuriser sur un ordinateur public</translation>
<translation>Utile pour rester en sécurité sur un ordinateur public</translation>
</message>
<message>
<location filename="../src/widget/form/settings/identitysettings.ui" line="165"/>
@ -1045,7 +1045,7 @@ Voulez-vous essayer un mot de passe différent?</translation>
<location filename="../src/widget/form/settings/identitysettings.ui" line="175"/>
<source>New Tox ID</source>
<comment>new profile button</comment>
<translation>Nouvel ID Tox</translation>
<translation>Nouvel Tox ID</translation>
</message>
</context>
<context>
@ -1093,12 +1093,12 @@ Voulez-vous essayer un mot de passe différent?</translation>
<message>
<location filename="../src/mainwindow.ui" line="1101"/>
<source>Add friends</source>
<translation>Ajouter des amis</translation>
<translation>Ajouter des contacts</translation>
</message>
<message>
<location filename="../src/mainwindow.ui" line="1139"/>
<source>Create a group chat</source>
<translation>Creer un groupe</translation>
<translation>Créer un groupe</translation>
</message>
<message>
<location filename="../src/mainwindow.ui" line="1174"/>
@ -1125,7 +1125,7 @@ Voulez-vous essayer un mot de passe différent?</translation>
<message>
<location filename="../src/widget/netcamview.cpp" line="28"/>
<source>Tox video</source>
<translation>Vidéo tox</translation>
<translation>Vidéo Tox</translation>
</message>
</context>
<context>
@ -1145,7 +1145,7 @@ Voulez-vous essayer un mot de passe différent?</translation>
<source>You already have history log file encrypted with different password
Do you want to delete old history file?</source>
<translation>Vous avez déjà un historique chiffré avec un autre mot de passe
Voulez vous supprimer l&apos;ancien historique?</translation>
Voulez vous supprimer l&apos;ancien historique ?</translation>
</message>
</context>
<context>
@ -1192,7 +1192,7 @@ Voulez vous supprimer l&apos;ancien historique?</translation>
<location filename="../src/widget/toxsave.cpp" line="64"/>
<source>Warning: you&apos;ve chosen a file that is not a Tox save file; ignoring.</source>
<comment>popup text</comment>
<translation>Attention: Vous avez sélectionné un fichier qui n&apos;est pas une sauvegarde Tox: il sera ignoré.</translation>
<translation>Attention: Vous avez sélectionné un fichier qui n&apos;est pas une sauvegarde Tox, il sera ignoré.</translation>
</message>
<message>
<location filename="../src/widget/toxsave.cpp" line="70"/>
@ -1233,12 +1233,12 @@ Voulez vous supprimer l&apos;ancien historique?</translation>
<source>An update is available, do you want to download it now ?
It will be installed when qTox restarts.</source>
<translation>Une mise à jour est disponible, voulez vous la télécharger maintenant ?
Elle sera installée au prochain démarrage de qTox</translation>
Elle sera installée au prochain démarrage de qTox.</translation>
</message>
<message>
<location filename="../src/main.cpp" line="68"/>
<source>Tox URI to parse</source>
<translation>URI Tox à utiliser</translation>
<translation>URL Tox à utiliser</translation>
</message>
</context>
<context>
@ -1255,7 +1255,7 @@ Elle sera installée au prochain démarrage de qTox</translation>
<message>
<location filename="../src/widget/form/setpassworddialog.ui" line="37"/>
<source>Repeat Password</source>
<translation>Répetez le mot de passe</translation>
<translation>Retapez le mot de passe</translation>
</message>
</context>
<context>
@ -1270,13 +1270,13 @@ Elle sera installée au prochain démarrage de qTox</translation>
<location filename="../src/toxdns.cpp" line="70"/>
<source>This address does not exist</source>
<comment>The DNS gives the Tox ID associated to toxme.se addresses</comment>
<translation>Cette addresse n&apos;existe pas</translation>
<translation>Cette adresse n&apos;existe pas</translation>
</message>
<message>
<location filename="../src/toxdns.cpp" line="75"/>
<source>Error while looking up DNS</source>
<comment>The DNS gives the Tox ID associated to toxme.se addresses</comment>
<translation>Erreur en consultant le serveur DNS</translation>
<translation>Une erreur s&apos;est produite en consultant le serveur DNS</translation>
</message>
<message>
<location filename="../src/toxdns.cpp" line="82"/>
@ -1316,22 +1316,22 @@ Elle sera installée au prochain démarrage de qTox</translation>
<location filename="../src/widget/toxuri.cpp" line="80"/>
<source>Add a friend</source>
<comment>Title of the window to add a friend through Tox URI</comment>
<translation>Ajouter un ami</translation>
<translation>Ajouter un contact</translation>
</message>
<message>
<location filename="../src/widget/toxuri.cpp" line="82"/>
<source>Do you want to add %1 as a friend ?</source>
<translation>Voulez-vous ajouter %1 à vos amis ?</translation>
<translation>Voulez-vous ajouter %1 à vos contacts ?</translation>
</message>
<message>
<location filename="../src/widget/toxuri.cpp" line="83"/>
<source>User ID:</source>
<translation>ID utilisateur:</translation>
<translation>ID d&apos;utilisateur:</translation>
</message>
<message>
<location filename="../src/widget/toxuri.cpp" line="87"/>
<source>Friend request message:</source>
<translation>Message de demande d&apos;ami:</translation>
<translation>Associer un message à cette demande:</translation>
</message>
<message>
<location filename="../src/widget/toxuri.cpp" line="92"/>
@ -1354,7 +1354,7 @@ Elle sera installée au prochain démarrage de qTox</translation>
</message>
<message>
<source>away</source>
<translation type="vanished">indisponnible</translation>
<translation type="vanished">absent</translation>
</message>
<message>
<source>busy</source>
@ -1368,7 +1368,7 @@ Elle sera installée au prochain démarrage de qTox</translation>
<message>
<location filename="../src/widget/widget.cpp" line="77"/>
<source>Away</source>
<translation>Indisponible</translation>
<translation>Absent</translation>
</message>
<message>
<location filename="../src/widget/widget.cpp" line="80"/>
@ -1383,7 +1383,7 @@ Elle sera installée au prochain démarrage de qTox</translation>
<message>
<location filename="../src/widget/widget.cpp" line="86"/>
<source>Change status to:</source>
<translation>Changer le status en:</translation>
<translation>Changer le status par:</translation>
</message>
<message>
<location filename="../src/widget/widget.cpp" line="155"/>
@ -1395,7 +1395,7 @@ Elle sera installée au prochain démarrage de qTox</translation>
<location filename="../src/widget/widget.cpp" line="157"/>
<source>Away</source>
<comment>Button to set your status to &apos;Away&apos;</comment>
<translation>Indisponible</translation>
<translation>Absent</translation>
</message>
<message>
<location filename="../src/widget/widget.cpp" line="159"/>
@ -1443,18 +1443,18 @@ Elle sera installée au prochain démarrage de qTox</translation>
<message>
<location filename="../src/widget/widget.cpp" line="477"/>
<source>Toxcore failed to start, the application will terminate after you close this message.</source>
<translation>Toxcore n&apos;as pas pu démarrer correctement, l&apos;application va quitter quand vous fermerez ce message.</translation>
<translation>ToxCore n&apos;as pas pu démarrer correctement, l&apos;application va s&apos;arrêter quand vous fermerez cette alerte.</translation>
</message>
<message>
<location filename="../src/widget/widget.cpp" line="486"/>
<source>toxcore failed to start with your proxy settings. qTox cannot run; please modify your settings and restart.</source>
<comment>popup text</comment>
<translation>Toxcore n&apos;as pas pu démarrer avec ces paramètres de proxy, qTox ne peut pas continuer; merci de modifier vos paramètres et redémarrer.</translation>
<translation>ToxCore n&apos;as pas pu démarrer avec ces paramètres proxy. Merci de modifier ou désactiver vos paramètres et redémarrer l&apos;application.</translation>
</message>
<message>
<location filename="../src/widget/widget.cpp" line="521"/>
<source>Add friend</source>
<translation>Ajouter un ami</translation>
<translation>Ajouter un contact</translation>
</message>
<message>
<location filename="../src/widget/widget.cpp" line="533"/>
@ -1469,13 +1469,13 @@ Elle sera installée au prochain démarrage de qTox</translation>
<message>
<location filename="../src/widget/widget.cpp" line="656"/>
<source>Couldn&apos;t request friendship</source>
<translation>Impossible de demander en ami</translation>
<translation>Impossible d&apos;envoyer la demande de contact</translation>
</message>
<message>
<location filename="../src/widget/widget.cpp" line="684"/>
<source>away</source>
<comment>contact status</comment>
<translation>indisponnible</translation>
<translation>absent</translation>
</message>
<message>
<location filename="../src/widget/widget.cpp" line="686"/>
@ -1487,7 +1487,7 @@ Elle sera installée au prochain démarrage de qTox</translation>
<location filename="../src/widget/widget.cpp" line="688"/>
<source>offline</source>
<comment>contact status</comment>
<translation>déconnecté</translation>
<translation>hors ligne</translation>
</message>
<message>
<location filename="../src/widget/widget.cpp" line="690"/>
@ -1510,7 +1510,7 @@ Elle sera installée au prochain démarrage de qTox</translation>
<message>
<location filename="../src/widget/widget.cpp" line="1091"/>
<source>Message failed to send</source>
<translation>Le message n&apos;as pas pu être envoyé</translation>
<translation>Le message n&apos;as pu être envoyé</translation>
</message>
</context>
</TS>

132
translations/it.ts vendored
View File

@ -226,6 +226,11 @@ Ignorare le impostazioni del proxy e connettersi direttamente alla rete Tox?</tr
<source>Calling to %1</source>
<translation>Stai chiamando %1</translation>
</message>
<message>
<location filename="../src/widget/form/chatform.cpp" line="676"/>
<source>Failed to send file &quot;%1&quot;</source>
<translation>Invio del file &quot;%1&quot; fallito</translation>
</message>
<message>
<location filename="../src/widget/form/chatform.cpp" line="810"/>
<source>Call with %1 ended. %2</source>
@ -538,17 +543,22 @@ Soprannome:</translation>
<translation>Mostra icona nella traybar</translation>
</message>
<message>
<location filename="../src/widget/form/settings/generalsettings.ui" line="226"/>
<location filename="../src/widget/form/settings/generalsettings.ui" line="158"/>
<source>Light icon</source>
<translation>Icona brillante</translation>
</message>
<message>
<location filename="../src/widget/form/settings/generalsettings.ui" line="217"/>
<source>Set to 0 to disable</source>
<translation>Imposta 0 per disabilitare</translation>
</message>
<message>
<location filename="../src/widget/form/settings/generalsettings.ui" line="477"/>
<location filename="../src/widget/form/settings/generalsettings.ui" line="468"/>
<source>Connection Settings</source>
<translation>Impostazioni Connessione</translation>
</message>
<message>
<location filename="../src/widget/form/settings/generalsettings.ui" line="489"/>
<location filename="../src/widget/form/settings/generalsettings.ui" line="480"/>
<source>Enable IPv6 (recommended)</source>
<extracomment>Text on a checkbox to enable IPv6</extracomment>
<translation>Abilita IPv6 (consigliato)</translation>
@ -590,143 +600,133 @@ Soprannome:</translation>
<translation>Minimizza nella traybar</translation>
</message>
<message>
<location filename="../src/widget/form/settings/generalsettings.ui" line="164"/>
<source>Tray icon displays user status</source>
<translation>Mostra lo stato nell&apos;icona della traybar</translation>
</message>
<message>
<location filename="../src/widget/form/settings/generalsettings.ui" line="167"/>
<source>This is a temporary work around until proper systray status icons are available.</source>
<translation>Questo è un workaround temporaneo fino a quando non saranno disponibili icone di stato adeguate.</translation>
</message>
<message>
<location filename="../src/widget/form/settings/generalsettings.ui" line="177"/>
<location filename="../src/widget/form/settings/generalsettings.ui" line="168"/>
<source>Show contacts&apos; status changes</source>
<translation>Mostra quando i contatti cambiano stato</translation>
</message>
<message>
<location filename="../src/widget/form/settings/generalsettings.ui" line="184"/>
<location filename="../src/widget/form/settings/generalsettings.ui" line="175"/>
<source>Check for updates on startup (unstable)</source>
<translation>Controlla aggiornamenti all&apos;avvio (unstable)</translation>
</message>
<message>
<location filename="../src/widget/form/settings/generalsettings.ui" line="191"/>
<location filename="../src/widget/form/settings/generalsettings.ui" line="182"/>
<source>Focus qTox when a message is received</source>
<translation>Dai il focus a qTox quando arriva un messaggio</translation>
</message>
<message>
<location filename="../src/widget/form/settings/generalsettings.ui" line="198"/>
<location filename="../src/widget/form/settings/generalsettings.ui" line="189"/>
<source>Faux offline messaging</source>
<translation>Falsi messaggi offline</translation>
</message>
<message>
<location filename="../src/widget/form/settings/generalsettings.ui" line="207"/>
<location filename="../src/widget/form/settings/generalsettings.ui" line="198"/>
<source>Provided in minutes</source>
<translation>Espresso in minuti</translation>
</message>
<message>
<location filename="../src/widget/form/settings/generalsettings.ui" line="213"/>
<location filename="../src/widget/form/settings/generalsettings.ui" line="204"/>
<source>Auto away after (0 to disable)</source>
<translation>Imposta assenza dopo</translation>
</message>
<message>
<location filename="../src/widget/form/settings/generalsettings.ui" line="229"/>
<location filename="../src/widget/form/settings/generalsettings.ui" line="220"/>
<source> minutes</source>
<translation> minuti</translation>
</message>
<message>
<location filename="../src/widget/form/settings/generalsettings.ui" line="249"/>
<location filename="../src/widget/form/settings/generalsettings.ui" line="240"/>
<source>You can set this on a per-friend basis by right clicking them.</source>
<comment>autoaccept cb tooltip</comment>
<translation>Puoi impostare questa preferenza per ogni singolo contatto usando il click destro sul suo nome.</translation>
</message>
<message>
<location filename="../src/widget/form/settings/generalsettings.ui" line="252"/>
<location filename="../src/widget/form/settings/generalsettings.ui" line="243"/>
<source>Autoaccept files</source>
<translation>Accetta automaticamente i trasferimenti di files</translation>
</message>
<message>
<location filename="../src/widget/form/settings/generalsettings.ui" line="261"/>
<location filename="../src/widget/form/settings/generalsettings.ui" line="252"/>
<source>Save files in</source>
<translation>Salva i files in</translation>
</message>
<message>
<location filename="../src/widget/form/settings/generalsettings.ui" line="274"/>
<location filename="../src/widget/form/settings/generalsettings.ui" line="265"/>
<source>PushButton</source>
<translation>Sfoglia</translation>
</message>
<message>
<location filename="../src/widget/form/settings/generalsettings.ui" line="294"/>
<location filename="../src/widget/form/settings/generalsettings.ui" line="285"/>
<source>Theme</source>
<translation>Impostazioni Tema</translation>
</message>
<message>
<location filename="../src/widget/form/settings/generalsettings.ui" line="300"/>
<location filename="../src/widget/form/settings/generalsettings.ui" line="291"/>
<source>Use emoticons</source>
<translation>Usa emoticons</translation>
</message>
<message>
<location filename="../src/widget/form/settings/generalsettings.ui" line="315"/>
<location filename="../src/widget/form/settings/generalsettings.ui" line="306"/>
<source>Smiley Pack</source>
<extracomment>Text on smiley pack label</extracomment>
<translation>Emoticons</translation>
</message>
<message>
<location filename="../src/widget/form/settings/generalsettings.ui" line="332"/>
<location filename="../src/widget/form/settings/generalsettings.ui" line="323"/>
<source>Style</source>
<translation>Stile</translation>
</message>
<message>
<location filename="../src/widget/form/settings/generalsettings.ui" line="406"/>
<location filename="../src/widget/form/settings/generalsettings.ui" line="397"/>
<source>Theme color</source>
<translation>Colore</translation>
</message>
<message>
<location filename="../src/widget/form/settings/generalsettings.ui" line="423"/>
<location filename="../src/widget/form/settings/generalsettings.ui" line="414"/>
<source>Emoticon size</source>
<translation>Dimensione emoticons</translation>
</message>
<message>
<location filename="../src/widget/form/settings/generalsettings.ui" line="439"/>
<location filename="../src/widget/form/settings/generalsettings.ui" line="430"/>
<source> px</source>
<translation> px</translation>
</message>
<message>
<location filename="../src/widget/form/settings/generalsettings.ui" line="455"/>
<location filename="../src/widget/form/settings/generalsettings.ui" line="446"/>
<source>Timestamp format</source>
<translation>Formato data/ora</translation>
</message>
<message>
<location filename="../src/widget/form/settings/generalsettings.ui" line="496"/>
<location filename="../src/widget/form/settings/generalsettings.ui" line="487"/>
<source>Disabling this allows, e.g., toxing over Tor. It adds load to the Tox network however, so uncheck only when necessary.</source>
<extracomment>force tcp checkbox tooltip</extracomment>
<translation>Disabilitando questo sarà possibile usare qTox con Tor. Tuttavia verrà aggiunto carico alla rete Tox, quindi disabilitare solo se necessario.</translation>
</message>
<message>
<location filename="../src/widget/form/settings/generalsettings.ui" line="499"/>
<location filename="../src/widget/form/settings/generalsettings.ui" line="490"/>
<source>Enable UDP (recommended)</source>
<extracomment>Text on checkbox to disable UDP</extracomment>
<translation>Abilita UDP (consigliato)</translation>
</message>
<message>
<location filename="../src/widget/form/settings/generalsettings.ui" line="506"/>
<location filename="../src/widget/form/settings/generalsettings.ui" line="497"/>
<source>Use proxy (SOCKS5)</source>
<translation>Usa proxy (SOCKS5)</translation>
</message>
<message>
<location filename="../src/widget/form/settings/generalsettings.ui" line="518"/>
<location filename="../src/widget/form/settings/generalsettings.ui" line="509"/>
<source>Address</source>
<extracomment>Text on proxy addr label</extracomment>
<translation>IP</translation>
</message>
<message>
<location filename="../src/widget/form/settings/generalsettings.ui" line="528"/>
<location filename="../src/widget/form/settings/generalsettings.ui" line="519"/>
<source>Port</source>
<extracomment>Text on proxy port label</extracomment>
<translation>Porta</translation>
</message>
<message>
<location filename="../src/widget/form/settings/generalsettings.ui" line="547"/>
<location filename="../src/widget/form/settings/generalsettings.ui" line="538"/>
<source>Reconnect</source>
<comment>reconnect button</comment>
<translation>Riconnetti</translation>
@ -771,7 +771,7 @@ Soprannome:</translation>
</message>
<message>
<location filename="../src/widget/form/genericchatform.cpp" line="149"/>
<location filename="../src/widget/form/genericchatform.cpp" line="191"/>
<location filename="../src/widget/form/genericchatform.cpp" line="192"/>
<source>Save chat log</source>
<translation>Salva il log della chat</translation>
</message>
@ -781,7 +781,7 @@ Soprannome:</translation>
<translation>Rimuovi messaggi visualizzati</translation>
</message>
<message>
<location filename="../src/widget/form/genericchatform.cpp" line="290"/>
<location filename="../src/widget/form/genericchatform.cpp" line="296"/>
<source>Cleared</source>
<translation>Pulito</translation>
</message>
@ -1417,134 +1417,134 @@ Verrà installata al riavvio del programma.</translation>
<translation>Cambia stato in:</translation>
</message>
<message>
<location filename="../src/widget/widget.cpp" line="173"/>
<location filename="../src/widget/widget.cpp" line="174"/>
<source>Online</source>
<comment>Button to set your status to &apos;Online&apos;</comment>
<translation>Online</translation>
</message>
<message>
<location filename="../src/widget/widget.cpp" line="175"/>
<location filename="../src/widget/widget.cpp" line="176"/>
<source>Away</source>
<comment>Button to set your status to &apos;Away&apos;</comment>
<translation>Assente</translation>
</message>
<message>
<location filename="../src/widget/widget.cpp" line="177"/>
<location filename="../src/widget/widget.cpp" line="178"/>
<source>Busy</source>
<comment>Button to set your status to &apos;Busy&apos;</comment>
<translation>Occupato</translation>
</message>
<message>
<location filename="../src/widget/widget.cpp" line="431"/>
<location filename="../src/widget/widget.cpp" line="430"/>
<source>Choose a profile</source>
<translation>Scegli un profilo</translation>
</message>
<message>
<location filename="../src/widget/widget.cpp" line="432"/>
<location filename="../src/widget/widget.cpp" line="431"/>
<source>Please choose which identity to use</source>
<translation>Per favore scegli quale identità usare</translation>
</message>
<message>
<location filename="../src/widget/widget.cpp" line="453"/>
<location filename="../src/widget/widget.cpp" line="452"/>
<source>Choose a profile picture</source>
<translation>Scegli un&apos;immagine per il profilo</translation>
</message>
<message>
<location filename="../src/widget/widget.cpp" line="460"/>
<location filename="../src/widget/widget.cpp" line="467"/>
<location filename="../src/widget/widget.cpp" line="488"/>
<location filename="../src/widget/widget.cpp" line="459"/>
<location filename="../src/widget/widget.cpp" line="466"/>
<location filename="../src/widget/widget.cpp" line="487"/>
<source>Error</source>
<translation>Errore</translation>
</message>
<message>
<location filename="../src/widget/widget.cpp" line="460"/>
<location filename="../src/widget/widget.cpp" line="459"/>
<source>Unable to open this file</source>
<translation>Impossibile aprire il file</translation>
</message>
<message>
<location filename="../src/widget/widget.cpp" line="467"/>
<location filename="../src/widget/widget.cpp" line="466"/>
<source>Unable to read this image</source>
<translation>Impossibile leggere l&apos;immagine</translation>
</message>
<message>
<location filename="../src/widget/widget.cpp" line="488"/>
<location filename="../src/widget/widget.cpp" line="487"/>
<source>This image is too big</source>
<translation>L&apos;immagine è troppo grande</translation>
</message>
<message>
<location filename="../src/widget/widget.cpp" line="528"/>
<location filename="../src/widget/widget.cpp" line="527"/>
<source>Toxcore failed to start, the application will terminate after you close this message.</source>
<translation>Impossibile avviare Toxcore.\nqTox terminerà dopo che avrai chiuso questo messaggio.</translation>
</message>
<message>
<location filename="../src/widget/widget.cpp" line="537"/>
<location filename="../src/widget/widget.cpp" line="536"/>
<source>toxcore failed to start with your proxy settings. qTox cannot run; please modify your settings and restart.</source>
<comment>popup text</comment>
<translation>Impossibile avviare Toxcore con le tue impostazione proxy.\nqTox non può funzionare correttamente, per favore modifica le impostazioni e riavvia il programma.</translation>
</message>
<message>
<location filename="../src/widget/widget.cpp" line="576"/>
<location filename="../src/widget/widget.cpp" line="575"/>
<source>Add friend</source>
<translation>Aggiungi contatto</translation>
</message>
<message>
<location filename="../src/widget/widget.cpp" line="588"/>
<location filename="../src/widget/widget.cpp" line="587"/>
<source>File transfers</source>
<translation>Files trasferiti</translation>
</message>
<message>
<location filename="../src/widget/widget.cpp" line="616"/>
<location filename="../src/widget/widget.cpp" line="615"/>
<source>Settings</source>
<translation>Impostazioni</translation>
</message>
<message>
<location filename="../src/widget/widget.cpp" line="716"/>
<location filename="../src/widget/widget.cpp" line="715"/>
<source>Couldn&apos;t request friendship</source>
<translation>Impossibile inviare la richiesta d&apos;amicizia</translation>
</message>
<message>
<location filename="../src/widget/widget.cpp" line="744"/>
<location filename="../src/widget/widget.cpp" line="743"/>
<source>away</source>
<comment>contact status</comment>
<translation>assente</translation>
</message>
<message>
<location filename="../src/widget/widget.cpp" line="746"/>
<location filename="../src/widget/widget.cpp" line="745"/>
<source>busy</source>
<comment>contact status</comment>
<translation>occupato</translation>
</message>
<message>
<location filename="../src/widget/widget.cpp" line="748"/>
<location filename="../src/widget/widget.cpp" line="747"/>
<source>offline</source>
<comment>contact status</comment>
<translation>offline</translation>
</message>
<message>
<location filename="../src/widget/widget.cpp" line="750"/>
<location filename="../src/widget/widget.cpp" line="749"/>
<source>online</source>
<comment>contact status</comment>
<translation>online</translation>
</message>
<message>
<location filename="../src/widget/widget.cpp" line="753"/>
<location filename="../src/widget/widget.cpp" line="752"/>
<source>%1 is now %2</source>
<comment>e.g. &quot;Dubslow is now online&quot;</comment>
<translation>%1 è ora %2</translation>
</message>
<message>
<location filename="../src/widget/widget.cpp" line="990"/>
<location filename="../src/widget/widget.cpp" line="989"/>
<source>&lt;Unknown&gt;</source>
<comment>Placeholder when we don&apos;t know someone&apos;s name in a group chat</comment>
<translation>&lt;Sconosciuto&gt;</translation>
</message>
<message>
<location filename="../src/widget/widget.cpp" line="1015"/>
<location filename="../src/widget/widget.cpp" line="1014"/>
<source>%1 has set the title to %2</source>
<translation>%1 ha impostato il titolo in %2</translation>
</message>
<message>
<location filename="../src/widget/widget.cpp" line="1166"/>
<location filename="../src/widget/widget.cpp" line="1165"/>
<source>Message failed to send</source>
<translation>Impossibile inviare il messaggio</translation>
</message>