mirror of
https://github.com/qTox/qTox.git
synced 2024-03-22 14:00:36 +08:00
Merge remote-tracking branch 'upsteam/master' into style
This commit is contained in:
commit
9bc1568c0d
10
README.md
10
README.md
@ -20,15 +20,15 @@ However, it is not a fork.
|
||||
|
||||
This client runs on Windows, Linux and Mac natively.<br/>
|
||||
|
||||
You can find the latest versions of qTox <a href="https://github.com/tux3/qTox/releases">here</a>, or from the Tox Project's servers :
|
||||
You can find the latest versions of qTox <a href="https://github.com/tux3/qTox/releases">here</a> (Windows and Linux), or from the Tox Project's servers :
|
||||
|
||||
<a href="https://jenkins.libtoxcore.so/job/tux3-toxgui-win32/lastSuccessfulBuild/artifact/toxgui-win32.zip">Windows download</a><br/>
|
||||
<a href="https://jenkins.libtoxcore.so/job/qTox%20OS%20X/lastSuccessfulBuild/artifact/qtox.dmg">Mac download </a><br/>
|
||||
<a href="https://jenkins.libtoxcore.so/job/qTox-linux-amd64/">Linux download</a> (click "Last successful artifacts")<br/>
|
||||
<a href="https://dist-build.tox.im/qtox.dmg">Mac download </a><br/>
|
||||
<a href="https://jenkins.libtoxcore.so/job/qTox-linux-amd64/lastSuccessfulBuild/artifact/qt/qtox.xz">Linux download</a> (click "Last successful artifacts")<br/>
|
||||
|
||||
<h3>Screenshots</h3>
|
||||
<h5>Note: The screenshots may not always be up to date, but they should give a good idea of the general look and features</h5>
|
||||
<img src="https://wiki.tox.im/images/5/5d/ToxGUI_tux3.png">
|
||||
<img src="https://wiki.tox.im/images/5/5d/ToxGUI_tux3.png"/>
|
||||
<img src="https://i.imgur.com/0XWcqBc.jpg"/>
|
||||
|
||||
##Documentation:
|
||||
|
||||
|
2
debian/control
vendored
2
debian/control
vendored
@ -7,7 +7,7 @@ Build-Depends: debhelper (>= 9), cdbs, qt5-qmake, libopenal-dev (>= 1:1.14), lib
|
||||
|
||||
Package: qtox
|
||||
Architecture: any
|
||||
Depends: ${shlibs:Depends}, ${misc:Depends}, libgcc1 (>= 1:4.1.1), libgl1-mesa-glx | libgl1, libopenal1 (>= 1.14), libopus0 (>= 0.9), libqt5core5a (>= 5.2), libqt5gui5 (>= 5.2), libqt5network5 (>= 5.0), libqt5widgets5 (>= 5.2), libqt5xml5 (>= 5.0), libstdc++6 (>= 4.9), libvpx1 (>= 1.0.0)
|
||||
Depends: ${shlibs:Depends}, ${misc:Depends}, libgcc1 (>= 1:4.1.1), libgl1-mesa-glx | libgl1, libopenal1 (>= 1.14), libopus0 (>= 0.9), libqt5core5a (>= 5.2), libqt5gui5 (>= 5.2), libqt5network5 (>= 5.0), libqt5widgets5 (>= 5.2), libqt5xml5 (>= 5.0), libstdc++6 (>= 4.8.2), libvpx1 (>= 1.0.0)
|
||||
Description: Tox client
|
||||
qTox is a powerful Tox client that follows the Tox design guidelines.
|
||||
Tox is a decentralized and encrypted replacement for Skype, supporting
|
||||
|
BIN
img/icons/qtox.icns
Normal file
BIN
img/icons/qtox.icns
Normal file
Binary file not shown.
11
qtox.pro
11
qtox.pro
@ -60,6 +60,7 @@ win32 {
|
||||
LIBS += -lz -lopengl32 -lole32 -loleaut32 -luuid -lvfw32 -ljpeg -ltiff -lpng -ljasper -lIlmImf -lHalf -lws2_32
|
||||
} else {
|
||||
macx {
|
||||
ICON = img/icons/qtox.icns
|
||||
LIBS += -L$$PWD/libs/lib/ -ltoxcore -ltoxav -lsodium -lvpx -framework OpenAL -lopencv_core -lopencv_highgui
|
||||
} else {
|
||||
# If we're building a package, static link libtox[core,av] and libsodium, since they are not provided by any package
|
||||
@ -68,7 +69,7 @@ win32 {
|
||||
INSTALLS += target
|
||||
LIBS += -L$$PWD/libs/lib/ -lopus -lvpx -lopenal -Wl,-Bstatic -ltoxcore -ltoxav -lsodium -lopencv_highgui -lopencv_imgproc -lopencv_core -lz -Wl,-Bdynamic
|
||||
LIBS += -Wl,-Bstatic -ljpeg -ltiff -lpng -ljasper -lIlmImf -lIlmThread -lIex -ldc1394 -lraw1394 -lHalf -lz -llzma -ljbig
|
||||
LIBS += -Wl,-Bdynamic -ltbb -lv4l1 -lv4l2 -lgnutls -lrtmp -lgnutls -lavformat -lavcodec -lavutil -lavfilter -lswscale -lusb-1.0
|
||||
LIBS += -Wl,-Bdynamic -lv4l1 -lv4l2 -lavformat -lavcodec -lavutil -lswscale -lusb-1.0
|
||||
|
||||
} else {
|
||||
LIBS += -L$$PWD/libs/lib/ -ltoxcore -ltoxav -lvpx -lopenal -lopencv_core -lopencv_highgui -lopencv_imgproc
|
||||
@ -134,10 +135,12 @@ HEADERS += src/widget/form/addfriendform.h \
|
||||
src/widget/tool/chatactions/filetransferaction.h \
|
||||
src/widget/tool/chatactions/systemmessageaction.h \
|
||||
src/widget/tool/chatactions/actionaction.h \
|
||||
src/widget/tool/chatactions/alertaction.h \
|
||||
src/widget/maskablepixmapwidget.h \
|
||||
src/videosource.h \
|
||||
src/cameraworker.h \
|
||||
src/widget/videosurface.h
|
||||
src/widget/videosurface.h \
|
||||
src/widget/form/tabcompleter.h
|
||||
|
||||
SOURCES += \
|
||||
src/widget/form/addfriendform.cpp \
|
||||
@ -182,7 +185,9 @@ SOURCES += \
|
||||
src/widget/tool/chatactions/filetransferaction.cpp \
|
||||
src/widget/tool/chatactions/systemmessageaction.cpp \
|
||||
src/widget/tool/chatactions/actionaction.cpp \
|
||||
src/widget/tool/chatactions/alertaction.cpp \
|
||||
src/widget/maskablepixmapwidget.cpp \
|
||||
src/cameraworker.cpp \
|
||||
src/widget/videosurface.cpp \
|
||||
src/netvideosource.cpp
|
||||
src/netvideosource.cpp \
|
||||
src/widget/form/tabcompleter.cpp
|
||||
|
@ -18,6 +18,7 @@
|
||||
|
||||
#include <QTimer>
|
||||
#include <QDebug>
|
||||
#include <QCoreApplication>
|
||||
|
||||
CameraWorker::CameraWorker(int index)
|
||||
: clock(nullptr)
|
||||
@ -178,6 +179,7 @@ void CameraWorker::setProp(int prop, double val)
|
||||
double CameraWorker::getProp(int prop)
|
||||
{
|
||||
double ret = 0.0;
|
||||
qApp->processEvents();
|
||||
QMetaObject::invokeMethod(this, "_getProp", Qt::BlockingQueuedConnection, Q_RETURN_ARG(double, ret), Q_ARG(int, prop));
|
||||
|
||||
return ret;
|
||||
|
18
src/core.cpp
18
src/core.cpp
@ -226,6 +226,12 @@ void Core::start()
|
||||
}
|
||||
loadPath = "";
|
||||
}
|
||||
else // new ID
|
||||
{
|
||||
setStatusMessage(tr("Toxing on qTox")); // this also solves the not updating issue
|
||||
setUsername(tr("qTox User"));
|
||||
Widget::getInstance()->onSettingsClicked(); // update ui with new profile (im worried about threading, but it seems to work)
|
||||
}
|
||||
|
||||
tox_callback_friend_request(tox, onFriendRequest, this);
|
||||
tox_callback_friend_message(tox, onFriendMessage, this);
|
||||
@ -1187,10 +1193,7 @@ void Core::saveConfiguration(const QString& path)
|
||||
void Core::switchConfiguration(const QString& profile)
|
||||
{
|
||||
if (profile.isEmpty())
|
||||
{
|
||||
qWarning() << "Core: got null profile to switch to, not switching";
|
||||
return;
|
||||
}
|
||||
qDebug() << "Core: creating new Id";
|
||||
else
|
||||
qDebug() << "Core: switching from" << Settings::getInstance().getCurrentProfile() << "to" << profile;
|
||||
saveConfiguration();
|
||||
@ -1205,8 +1208,11 @@ void Core::switchConfiguration(const QString& profile)
|
||||
}
|
||||
emit selfAvatarChanged(QPixmap(":/img/contact_dark.png"));
|
||||
emit blockingClearContacts(); // we need this to block, but signals are required for thread safety
|
||||
|
||||
loadPath = QDir(Settings::getSettingsDirPath()).filePath(profile + TOX_EXT);
|
||||
|
||||
if (profile.isEmpty())
|
||||
loadPath = "";
|
||||
else
|
||||
loadPath = QDir(Settings::getSettingsDirPath()).filePath(profile + TOX_EXT);
|
||||
Settings::getInstance().setCurrentProfile(profile);
|
||||
|
||||
start();
|
||||
|
@ -46,7 +46,7 @@ FileTransferInstance::FileTransferInstance(ToxFile File)
|
||||
|
||||
filenameElided = fm.elidedText(filename, Qt::ElideRight, MAX_CONTENT_WIDTH);
|
||||
size = getHumanReadableSize(File.filesize);
|
||||
contentPrefWidth = std::max(fm.width(filenameElided), fm.width(size));
|
||||
contentPrefWidth = std::max(fm.boundingRect(filenameElided).width(), fm.width(size));
|
||||
|
||||
speed = "0B/s";
|
||||
eta = "00:00";
|
||||
@ -209,6 +209,7 @@ bool isFileWritable(QString& path)
|
||||
void FileTransferInstance::acceptRecvRequest()
|
||||
{
|
||||
QString path = Settings::getInstance().getAutoAcceptDir(Core::getInstance()->getFriendAddress(friendId));
|
||||
if (path.isEmpty()) path = Settings::getInstance().getGlobalAutoAcceptDir();
|
||||
if (!path.isEmpty())
|
||||
{
|
||||
QDir dir(path);
|
||||
|
19
src/main.cpp
19
src/main.cpp
@ -18,7 +18,6 @@
|
||||
#include "misc/settings.h"
|
||||
#include <QApplication>
|
||||
#include <QFontDatabase>
|
||||
#include <QSystemTrayIcon>
|
||||
#include <QDebug>
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
@ -38,24 +37,6 @@ int main(int argc, char *argv[])
|
||||
QFontDatabase::addApplicationFont("://DejaVuSans.ttf");
|
||||
|
||||
Widget* w = Widget::getInstance();
|
||||
if (QSystemTrayIcon::isSystemTrayAvailable() == false)
|
||||
{
|
||||
qWarning() << "No system tray detected!";
|
||||
w->show();
|
||||
}
|
||||
else
|
||||
{
|
||||
QSystemTrayIcon *icon = new QSystemTrayIcon(w);
|
||||
QObject::connect(icon,
|
||||
SIGNAL(activated(QSystemTrayIcon::ActivationReason)),
|
||||
w,
|
||||
SLOT(onIconClick()));
|
||||
icon->setIcon(w->windowIcon());
|
||||
icon->show();
|
||||
if(Settings::getInstance().getAutostartInTray() == false)
|
||||
w->show();
|
||||
}
|
||||
|
||||
|
||||
int errorcode = a.exec();
|
||||
|
||||
|
@ -112,6 +112,7 @@ void Settings::load()
|
||||
translation = s.value("translation", "").toString();
|
||||
makeToxPortable = s.value("makeToxPortable", false).toBool();
|
||||
autostartInTray = s.value("autostartInTray", false).toBool();
|
||||
closeToTray = s.value("closeToTray", false).toBool();
|
||||
forceTCP = s.value("forceTCP", false).toBool();
|
||||
useProxy = s.value("useProxy", false).toBool();
|
||||
proxyAddr = s.value("proxyAddr", "").toString();
|
||||
@ -137,6 +138,7 @@ void Settings::load()
|
||||
secondColumnHandlePosFromRight = s.value("secondColumnHandlePosFromRight", 50).toInt();
|
||||
timestampFormat = s.value("timestampFormat", "hh:mm").toString();
|
||||
minimizeOnClose = s.value("minimizeOnClose", false).toBool();
|
||||
minimizeToTray = s.value("minimizeToTray", false).toBool();
|
||||
useNativeStyle = s.value("nativeStyle", false).toBool();
|
||||
style = s.value("style", "None").toString();
|
||||
statusChangeNotificationEnabled = s.value("statusChangeNotificationEnabled", false).toBool();
|
||||
@ -153,6 +155,7 @@ void Settings::load()
|
||||
s.endGroup();
|
||||
|
||||
s.beginGroup("AutoAccept");
|
||||
globalAutoAcceptDir = s.value("globalAutoAcceptDir", "").toString();
|
||||
for (auto& key : s.childKeys())
|
||||
autoAccept[key] = s.value(key).toString();
|
||||
s.endGroup();
|
||||
@ -225,6 +228,7 @@ void Settings::save(QString path)
|
||||
s.setValue("translation",translation);
|
||||
s.setValue("makeToxPortable",makeToxPortable);
|
||||
s.setValue("autostartInTray",autostartInTray);
|
||||
s.setValue("closeToTray", closeToTray);
|
||||
s.setValue("useProxy", useProxy);
|
||||
s.setValue("forceTCP", forceTCP);
|
||||
s.setValue("proxyAddr", proxyAddr);
|
||||
@ -250,6 +254,7 @@ void Settings::save(QString path)
|
||||
s.setValue("secondColumnHandlePosFromRight", secondColumnHandlePosFromRight);
|
||||
s.setValue("timestampFormat", timestampFormat);
|
||||
s.setValue("minimizeOnClose", minimizeOnClose);
|
||||
s.setValue("minimizeToTray", minimizeToTray);
|
||||
s.setValue("nativeStyle", useNativeStyle);
|
||||
s.setValue("style",style);
|
||||
s.setValue("statusChangeNotificationEnabled", statusChangeNotificationEnabled);
|
||||
@ -266,6 +271,7 @@ void Settings::save(QString path)
|
||||
s.endGroup();
|
||||
|
||||
s.beginGroup("AutoAccept");
|
||||
s.setValue("globalAutoAcceptDir", globalAutoAcceptDir);
|
||||
for (auto& id : autoAccept.keys())
|
||||
s.setValue(id, autoAccept.value(id));
|
||||
s.endGroup();
|
||||
@ -390,6 +396,27 @@ void Settings::setAutostartInTray(bool newValue)
|
||||
autostartInTray = newValue;
|
||||
}
|
||||
|
||||
bool Settings::getCloseToTray() const
|
||||
{
|
||||
return closeToTray;
|
||||
}
|
||||
|
||||
void Settings::setCloseToTray(bool newValue)
|
||||
{
|
||||
closeToTray = newValue;
|
||||
}
|
||||
|
||||
bool Settings::getMinimizeToTray() const
|
||||
{
|
||||
return minimizeToTray;
|
||||
}
|
||||
|
||||
|
||||
void Settings::setMinimizeToTray(bool newValue)
|
||||
{
|
||||
minimizeToTray = newValue;
|
||||
}
|
||||
|
||||
bool Settings::getStatusChangeNotificationEnabled() const
|
||||
{
|
||||
return statusChangeNotificationEnabled;
|
||||
@ -504,6 +531,16 @@ void Settings::setAutoAcceptDir(const QString& id, const QString& dir)
|
||||
autoAccept[id.left(TOX_ID_PUBLIC_KEY_LENGTH)] = dir;
|
||||
}
|
||||
|
||||
QString Settings::getGlobalAutoAcceptDir() const
|
||||
{
|
||||
return globalAutoAcceptDir;
|
||||
}
|
||||
|
||||
void Settings::setGlobalAutoAcceptDir(const QString& newValue)
|
||||
{
|
||||
globalAutoAcceptDir = newValue;
|
||||
}
|
||||
|
||||
void Settings::setWidgetData(const QString& uniqueName, const QByteArray& data)
|
||||
{
|
||||
widgetSettings[uniqueName] = data;
|
||||
|
@ -52,6 +52,12 @@ public:
|
||||
bool getAutostartInTray() const;
|
||||
void setAutostartInTray(bool newValue);
|
||||
|
||||
bool getCloseToTray() const;
|
||||
void setCloseToTray(bool newValue);
|
||||
|
||||
bool getMinimizeToTray() const;
|
||||
void setMinimizeToTray(bool newValue);
|
||||
|
||||
QString getStyle() const;
|
||||
void setStyle(const QString& newValue);
|
||||
|
||||
@ -128,6 +134,9 @@ public:
|
||||
QString getAutoAcceptDir(const QString& id) const;
|
||||
void setAutoAcceptDir(const QString&id, const QString& dir);
|
||||
|
||||
QString getGlobalAutoAcceptDir() const;
|
||||
void setGlobalAutoAcceptDir(const QString& dir);
|
||||
|
||||
// ChatView
|
||||
int getFirstColumnHandlePos() const;
|
||||
void setFirstColumnHandlePos(const int pos);
|
||||
@ -185,6 +194,8 @@ private:
|
||||
QString translation;
|
||||
static bool makeToxPortable;
|
||||
bool autostartInTray;
|
||||
bool closeToTray;
|
||||
bool minimizeToTray;
|
||||
|
||||
bool forceTCP;
|
||||
|
||||
@ -201,6 +212,7 @@ private:
|
||||
|
||||
QHash<QString, QByteArray> widgetSettings;
|
||||
QHash<QString, QString> autoAccept;
|
||||
QString globalAutoAcceptDir;
|
||||
|
||||
// GUI
|
||||
bool enableSmoothAnimation;
|
||||
|
@ -70,6 +70,7 @@ QColor Style::getColor(Style::ColorPalette entry)
|
||||
QColor("#414141").lighter(120),
|
||||
QColor("#d1d1d1"),
|
||||
QColor("#ffffff"),
|
||||
QColor("#ff7700"),
|
||||
};
|
||||
|
||||
return palette[entry];
|
||||
@ -108,6 +109,7 @@ QString Style::resolve(QString qss)
|
||||
{"@mediumGreyLight", getColor(MediumGreyLight).name()},
|
||||
{"@lightGrey", getColor(LightGrey).name()},
|
||||
{"@white", getColor(White).name()},
|
||||
{"@orange", getColor(Orange).name()},
|
||||
|
||||
// fonts
|
||||
{"@extraBig", qssifyFont(getFont(ExtraBig))},
|
||||
|
@ -37,6 +37,7 @@ public:
|
||||
MediumGreyLight,
|
||||
LightGrey,
|
||||
White,
|
||||
Orange,
|
||||
};
|
||||
|
||||
enum Font
|
||||
|
@ -154,4 +154,6 @@ void AddFriendForm::handleDnsLookup()
|
||||
|
||||
// finally we got it
|
||||
emit friendRequested(friendAdress, getMessage());
|
||||
this->toxId.setText("");
|
||||
this->message.setText("");
|
||||
}
|
||||
|
@ -87,7 +87,7 @@ void ChatForm::onSendTriggered()
|
||||
if (msg.isEmpty())
|
||||
return;
|
||||
QString name = Widget::getInstance()->getUsername();
|
||||
if (msg.startsWith("/me "))
|
||||
if (msg.startsWith("/me"))
|
||||
{
|
||||
msg = msg.right(msg.length() - 4);
|
||||
addMessage(name, msg, true);
|
||||
@ -180,7 +180,8 @@ void ChatForm::onFileRecvRequest(ToxFile file)
|
||||
|
||||
chatWidget->insertMessage(new FileTransferAction(fileTrans, getElidedName(name), QTime::currentTime().toString("hh:mm"), false));
|
||||
|
||||
if (!Settings::getInstance().getAutoAcceptDir(Core::getInstance()->getFriendAddress(f->friendId)).isEmpty())
|
||||
if (!Settings::getInstance().getAutoAcceptDir(Core::getInstance()->getFriendAddress(f->friendId)).isEmpty()
|
||||
|| !Settings::getInstance().getGlobalAutoAcceptDir().isEmpty())
|
||||
fileTrans->pressFromHtml("btnB");
|
||||
}
|
||||
|
||||
@ -408,7 +409,8 @@ void ChatForm::onAvPeerTimeout(int FriendId, int)
|
||||
|
||||
void ChatForm::onAvMediaChange(int FriendId, int CallId, bool video)
|
||||
{
|
||||
Q_UNUSED(FriendId)
|
||||
if (FriendId != f->friendId || CallId != callId)
|
||||
return;
|
||||
|
||||
if (video)
|
||||
{
|
||||
|
@ -25,6 +25,7 @@
|
||||
#include "src/widget/tool/chatactions/messageaction.h"
|
||||
#include "src/widget/tool/chatactions/systemmessageaction.h"
|
||||
#include "src/widget/tool/chatactions/actionaction.h"
|
||||
#include "src/widget/tool/chatactions/alertaction.h"
|
||||
#include "src/widget/chatareawidget.h"
|
||||
#include "src/widget/tool/chattextedit.h"
|
||||
#include "src/widget/maskablepixmapwidget.h"
|
||||
@ -173,7 +174,7 @@ void GenericChatForm::addMessage(QString author, QString message, bool isAction,
|
||||
QString date = datetime.toString(Settings::getInstance().getTimestampFormat());
|
||||
bool isMe = (author == Widget::getInstance()->getUsername());
|
||||
|
||||
if (!isAction && message.startsWith("/me "))
|
||||
if (!isAction && message.startsWith("/me"))
|
||||
{ // always render actions regardless of what core thinks
|
||||
isAction = true;
|
||||
message = message.right(message.length()-4);
|
||||
@ -193,6 +194,13 @@ void GenericChatForm::addMessage(QString author, QString message, bool isAction,
|
||||
previousName = author;
|
||||
}
|
||||
|
||||
void GenericChatForm::addAlertMessage(QString author, QString message, QDateTime datetime)
|
||||
{
|
||||
QString date = datetime.toString(Settings::getInstance().getTimestampFormat());
|
||||
chatWidget->insertMessage(new AlertAction(author, message, date));
|
||||
previousName = author;
|
||||
}
|
||||
|
||||
void GenericChatForm::onEmoteButtonClicked()
|
||||
{
|
||||
// don't show the smiley selection widget if there are no smileys available
|
||||
|
@ -22,7 +22,7 @@
|
||||
#include <QDateTime>
|
||||
|
||||
// Spacing in px inserted when the author of the last message changes
|
||||
#define AUTHOR_CHANGE_SPACING 5
|
||||
#define AUTHOR_CHANGE_SPACING 5 // why the hell is this a thing? surely the different font is enough?
|
||||
|
||||
class QLabel;
|
||||
class QVBoxLayout;
|
||||
@ -45,6 +45,7 @@ public:
|
||||
virtual void setName(const QString &newName);
|
||||
virtual void show(Ui::MainWindow &ui);
|
||||
void addMessage(QString author, QString message, bool isAction = false, QDateTime datetime=QDateTime::currentDateTime());
|
||||
void addAlertMessage(QString author, QString message, QDateTime datetime=QDateTime::currentDateTime());
|
||||
void addSystemInfoMessage(const QString &message, const QString &type, const QDateTime &datetime=QDateTime::currentDateTime());
|
||||
int getNumberOfMessages();
|
||||
|
||||
|
@ -15,6 +15,7 @@
|
||||
*/
|
||||
|
||||
#include "groupchatform.h"
|
||||
#include "tabcompleter.h"
|
||||
#include "src/group.h"
|
||||
#include "src/widget/groupwidget.h"
|
||||
#include "src/widget/tool/chattextedit.h"
|
||||
@ -33,6 +34,8 @@ GroupChatForm::GroupChatForm(Group* chatGroup)
|
||||
namesList = new QLabel();
|
||||
namesList->setObjectName("peersLabel");
|
||||
|
||||
tabber = new TabCompleter(msgEdit, group);
|
||||
|
||||
fileButton->setEnabled(false);
|
||||
callButton->setVisible(false);
|
||||
videoButton->setVisible(false);
|
||||
@ -59,6 +62,8 @@ GroupChatForm::GroupChatForm(Group* chatGroup)
|
||||
|
||||
connect(sendButton, SIGNAL(clicked()), this, SLOT(onSendTriggered()));
|
||||
connect(msgEdit, SIGNAL(enterPressed()), this, SLOT(onSendTriggered()));
|
||||
connect(msgEdit, &ChatTextEdit::tabPressed, tabber, &TabCompleter::complete);
|
||||
connect(msgEdit, &ChatTextEdit::keyPressed, tabber, &TabCompleter::reset);
|
||||
|
||||
setAcceptDrops(true);
|
||||
}
|
||||
|
@ -21,6 +21,7 @@
|
||||
|
||||
namespace Ui {class MainWindow;}
|
||||
class Group;
|
||||
class TabCompleter;
|
||||
|
||||
class GroupChatForm : public GenericChatForm
|
||||
{
|
||||
@ -41,6 +42,7 @@ protected:
|
||||
private:
|
||||
Group* group;
|
||||
QLabel *nusersLabel, *namesList;
|
||||
TabCompleter* tabber;
|
||||
};
|
||||
|
||||
#endif // GROUPCHATFORM_H
|
||||
|
@ -34,7 +34,44 @@
|
||||
<height>489</height>
|
||||
</rect>
|
||||
</property>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_2">
|
||||
<layout class="QVBoxLayout" name="verticalLayout_5">
|
||||
<item>
|
||||
<widget class="QGroupBox" name="audioGroup">
|
||||
<property name="title">
|
||||
<string>Volume Settings (Stubs)</string>
|
||||
</property>
|
||||
<layout class="QFormLayout" name="formLayout_2">
|
||||
<item row="4" column="0">
|
||||
<widget class="QLabel" name="microphoneLabel">
|
||||
<property name="text">
|
||||
<string>Microphone</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="playbackLabel">
|
||||
<property name="text">
|
||||
<string>Playback</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="QSlider" name="playbackSlider">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="1">
|
||||
<widget class="QSlider" name="microphoneSlider">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QGroupBox" name="videoGroup">
|
||||
<property name="title">
|
||||
@ -47,7 +84,7 @@
|
||||
<enum>QFormLayout::ExpandingFieldsGrow</enum>
|
||||
</property>
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="label">
|
||||
<widget class="QLabel" name="resolutionLabel">
|
||||
<property name="text">
|
||||
<string>Resolution</string>
|
||||
</property>
|
||||
@ -64,7 +101,7 @@
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="label_2">
|
||||
<widget class="QLabel" name="hueLabel">
|
||||
<property name="text">
|
||||
<string>Hue</string>
|
||||
</property>
|
||||
@ -78,7 +115,7 @@
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="0">
|
||||
<widget class="QLabel" name="label_3">
|
||||
<widget class="QLabel" name="brightnessLabel">
|
||||
<property name="text">
|
||||
<string>Brightness</string>
|
||||
</property>
|
||||
@ -92,7 +129,7 @@
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="0">
|
||||
<widget class="QLabel" name="label_4">
|
||||
<widget class="QLabel" name="saturationLabel">
|
||||
<property name="text">
|
||||
<string>Saturation</string>
|
||||
</property>
|
||||
@ -106,7 +143,7 @@
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="0">
|
||||
<widget class="QLabel" name="label_5">
|
||||
<widget class="QLabel" name="contrastLabel">
|
||||
<property name="text">
|
||||
<string>Contrast</string>
|
||||
</property>
|
||||
@ -119,64 +156,27 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="5" column="1">
|
||||
<widget class="QFrame" name="CamFrame">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding">
|
||||
<horstretch>1</horstretch>
|
||||
<verstretch>99</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="frameShape">
|
||||
<enum>QFrame::NoFrame</enum>
|
||||
</property>
|
||||
<property name="frameShadow">
|
||||
<enum>QFrame::Raised</enum>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_3">
|
||||
<item>
|
||||
<widget class="VideoSurface" name="CamVideoSurface" native="true"/>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QGroupBox" name="groupBox">
|
||||
<property name="title">
|
||||
<string>Volume Settings (Stubs)</string>
|
||||
</property>
|
||||
<layout class="QFormLayout" name="formLayout_2">
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="label_7">
|
||||
<property name="text">
|
||||
<string>Playback</string>
|
||||
<item>
|
||||
<widget class="QFrame" name="CamFrame">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding">
|
||||
<horstretch>1</horstretch>
|
||||
<verstretch>99</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="QSlider" name="horizontalSlider">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
<property name="frameShape">
|
||||
<enum>QFrame::NoFrame</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="label_8">
|
||||
<property name="text">
|
||||
<string>Microphone</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QSlider" name="horizontalSlider_2">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
<property name="frameShadow">
|
||||
<enum>QFrame::Raised</enum>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout">
|
||||
<item row="0" column="0">
|
||||
<widget class="VideoSurface" name="CamVideoSurface" native="true"/>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
|
@ -40,7 +40,9 @@ GeneralForm::GeneralForm(SettingsWidget *myParent) :
|
||||
bodyUI->transComboBox->setCurrentIndex(locales.indexOf(Settings::getInstance().getTranslation()));
|
||||
bodyUI->cbMakeToxPortable->setChecked(Settings::getInstance().getMakeToxPortable());
|
||||
bodyUI->startInTray->setChecked(Settings::getInstance().getAutostartInTray());
|
||||
bodyUI->statusChangesCheckbox->setChecked(Settings::getInstance().getStatusChangeNotificationEnabled());
|
||||
bodyUI->closeToTray->setChecked(Settings::getInstance().getCloseToTray());
|
||||
bodyUI->minimizeToTray->setChecked(Settings::getInstance().getMinimizeToTray());
|
||||
bodyUI->statusChanges->setChecked(Settings::getInstance().getStatusChangeNotificationEnabled());
|
||||
|
||||
for (auto entry : SmileyPack::listSmileyPacks())
|
||||
{
|
||||
@ -72,7 +74,9 @@ GeneralForm::GeneralForm(SettingsWidget *myParent) :
|
||||
connect(bodyUI->transComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(onTranslationUpdated()));
|
||||
connect(bodyUI->cbMakeToxPortable, &QCheckBox::stateChanged, this, &GeneralForm::onMakeToxPortableUpdated);
|
||||
connect(bodyUI->startInTray, &QCheckBox::stateChanged, this, &GeneralForm::onSetAutostartInTray);
|
||||
connect(bodyUI->statusChangesCheckbox, &QCheckBox::stateChanged, this, &GeneralForm::onSetStatusChange);
|
||||
connect(bodyUI->closeToTray, &QCheckBox::stateChanged, this, &GeneralForm::onSetCloseToTray);
|
||||
connect(bodyUI->minimizeToTray, &QCheckBox::stateChanged, this, &GeneralForm::onSetMinimizeToTray);
|
||||
connect(bodyUI->statusChanges, &QCheckBox::stateChanged, this, &GeneralForm::onSetStatusChange);
|
||||
connect(bodyUI->smileyPackBrowser, SIGNAL(currentIndexChanged(int)), this, SLOT(onSmileyBrowserIndexChanged(int)));
|
||||
// new syntax can't handle overloaded signals... (at least not in a pretty way)
|
||||
connect(bodyUI->cbUDPDisabled, &QCheckBox::stateChanged, this, &GeneralForm::onUDPUpdated);
|
||||
@ -109,6 +113,16 @@ void GeneralForm::onSetAutostartInTray()
|
||||
Settings::getInstance().setAutostartInTray(bodyUI->startInTray->isChecked());
|
||||
}
|
||||
|
||||
void GeneralForm::onSetCloseToTray()
|
||||
{
|
||||
Settings::getInstance().setCloseToTray(bodyUI->closeToTray->isChecked());
|
||||
}
|
||||
|
||||
void GeneralForm::onSetMinimizeToTray()
|
||||
{
|
||||
Settings::getInstance().setMinimizeToTray(bodyUI->minimizeToTray->isChecked());
|
||||
}
|
||||
|
||||
void GeneralForm::onStyleSelected(QString style)
|
||||
{
|
||||
Settings::getInstance().setStyle(style);
|
||||
@ -125,7 +139,7 @@ void GeneralForm::onAutoAwayChanged()
|
||||
|
||||
void GeneralForm::onSetStatusChange()
|
||||
{
|
||||
Settings::getInstance().setStatusChangeNotificationEnabled(bodyUI->statusChangesCheckbox->isChecked());
|
||||
Settings::getInstance().setStatusChangeNotificationEnabled(bodyUI->statusChanges->isChecked());
|
||||
}
|
||||
|
||||
void GeneralForm::onSmileyBrowserIndexChanged(int index)
|
||||
|
@ -35,6 +35,7 @@ private slots:
|
||||
void onTranslationUpdated();
|
||||
void onMakeToxPortableUpdated();
|
||||
void onSetAutostartInTray();
|
||||
void onSetCloseToTray();
|
||||
void onSmileyBrowserIndexChanged(int index);
|
||||
void onUDPUpdated();
|
||||
void onProxyAddrEdited();
|
||||
@ -43,6 +44,7 @@ private slots:
|
||||
void onStyleSelected(QString style);
|
||||
void onSetStatusChange();
|
||||
void onAutoAwayChanged();
|
||||
void onSetMinimizeToTray();
|
||||
|
||||
|
||||
private:
|
||||
|
@ -7,7 +7,7 @@
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>527</width>
|
||||
<height>500</height>
|
||||
<height>525</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
@ -74,7 +74,21 @@
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="statusChangesCheckbox">
|
||||
<widget class="QCheckBox" name="closeToTray">
|
||||
<property name="text">
|
||||
<string>Close to tray</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="minimizeToTray">
|
||||
<property name="text">
|
||||
<string>Minimize to tray</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="statusChanges">
|
||||
<property name="text">
|
||||
<string>Show contacts' status changes</string>
|
||||
</property>
|
||||
|
@ -54,6 +54,7 @@ IdentityForm::IdentityForm() :
|
||||
connect(bodyUI->exportButton, &QPushButton::clicked, this, &IdentityForm::onExportClicked);
|
||||
connect(bodyUI->deleteButton, &QPushButton::clicked, this, &IdentityForm::onDeleteClicked);
|
||||
connect(bodyUI->importButton, &QPushButton::clicked, this, &IdentityForm::onImportClicked);
|
||||
connect(bodyUI->newButton, &QPushButton::clicked, this, &IdentityForm::onNewClicked);
|
||||
|
||||
connect(Core::getInstance(), &Core::usernameSet, this, [=](const QString& val) { bodyUI->userName->setText(val); });
|
||||
connect(Core::getInstance(), &Core::statusMessageSet, this, [=](const QString& val) { bodyUI->statusMessage->setText(val); });
|
||||
@ -120,15 +121,22 @@ void IdentityForm::onRenameClicked()
|
||||
{
|
||||
QString cur = bodyUI->profiles->currentText();
|
||||
QString title = tr("Rename \"%1\"", "renaming a profile").arg(cur);
|
||||
QString name = QInputDialog::getText(this, title, title+":");
|
||||
if (name != "")
|
||||
do
|
||||
{
|
||||
QString name = QInputDialog::getText(this, title, title+":");
|
||||
if (name.isEmpty()) break;
|
||||
name = Core::sanitize(name);
|
||||
QDir dir(Settings::getSettingsDirPath());
|
||||
QFile::rename(dir.filePath(cur+Core::TOX_EXT), dir.filePath(name+Core::TOX_EXT));
|
||||
bodyUI->profiles->setItemText(bodyUI->profiles->currentIndex(), name);
|
||||
Settings::getInstance().setCurrentProfile(name);
|
||||
}
|
||||
QString file = dir.filePath(name+Core::TOX_EXT);
|
||||
if (!QFile::exists(file) || checkContinue(tr("Profile already exists", "rename confirm title"),
|
||||
tr("A profile named \"%1\" already exists. Do you want to erase it?", "rename confirm text").arg(cur)))
|
||||
{
|
||||
QFile::rename(dir.filePath(cur+Core::TOX_EXT), file);
|
||||
bodyUI->profiles->setItemText(bodyUI->profiles->currentIndex(), name);
|
||||
Settings::getInstance().setCurrentProfile(name);
|
||||
break;
|
||||
}
|
||||
} while (true);
|
||||
}
|
||||
|
||||
void IdentityForm::onExportClicked()
|
||||
@ -149,9 +157,8 @@ void IdentityForm::onDeleteClicked()
|
||||
}
|
||||
else
|
||||
{
|
||||
QMessageBox::StandardButton resp = QMessageBox::question(this,
|
||||
tr("Deletion imminent!","deletion confirmation title"), tr("Are you sure you want to delete this profile?","deletion confirmation text"), QMessageBox::Yes | QMessageBox::No, QMessageBox::No);
|
||||
if (resp == QMessageBox::Yes)
|
||||
if (checkContinue(tr("Deletion imminent!","deletion confirmation title"),
|
||||
tr("Are you sure you want to delete this profile?","deletion confirmation text")))
|
||||
{
|
||||
QFile::remove(QDir(Settings::getSettingsDirPath()).filePath(bodyUI->profiles->currentText()+Core::TOX_EXT));
|
||||
bodyUI->profiles->removeItem(bodyUI->profiles->currentIndex());
|
||||
@ -167,6 +174,7 @@ void IdentityForm::onImportClicked()
|
||||
return;
|
||||
|
||||
QFileInfo info(path);
|
||||
QString profile = info.completeBaseName();
|
||||
|
||||
if (info.suffix() != "tox")
|
||||
{
|
||||
@ -174,8 +182,22 @@ void IdentityForm::onImportClicked()
|
||||
return;
|
||||
}
|
||||
|
||||
QString profile = info.completeBaseName();
|
||||
if (info.exists() && !checkContinue(tr("Profile already exists", "import confirm title"),
|
||||
tr("A profile named \"%1\" already exists. Do you want to erase it?", "import confirm text").arg(profile)))
|
||||
return;
|
||||
|
||||
QString profilePath = QDir(Settings::getSettingsDirPath()).filePath(profile + Core::TOX_EXT);
|
||||
QFile::copy(path, profilePath);
|
||||
bodyUI->profiles->addItem(profile);
|
||||
}
|
||||
|
||||
void IdentityForm::onNewClicked()
|
||||
{
|
||||
emit Widget::getInstance()->changeProfile(QString());
|
||||
}
|
||||
|
||||
bool IdentityForm::checkContinue(const QString& title, const QString& msg)
|
||||
{
|
||||
QMessageBox::StandardButton resp = QMessageBox::question(this, title, msg, QMessageBox::Yes | QMessageBox::No, QMessageBox::No);
|
||||
return resp == QMessageBox::Yes;
|
||||
}
|
||||
|
@ -63,6 +63,8 @@ private slots:
|
||||
void onExportClicked();
|
||||
void onDeleteClicked();
|
||||
void onImportClicked();
|
||||
void onNewClicked();
|
||||
bool checkContinue(const QString& title, const QString& msg);
|
||||
|
||||
private:
|
||||
Ui::IdentitySettings* bodyUI;
|
||||
|
@ -122,11 +122,22 @@
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="importButton">
|
||||
<property name="text">
|
||||
<string comment="import profile button">Import a profile</string>
|
||||
</property>
|
||||
</widget>
|
||||
<layout class="QHBoxLayout" name="profilesButtonsLayout2">
|
||||
<item>
|
||||
<widget class="QPushButton" name="importButton">
|
||||
<property name="text">
|
||||
<string comment="import profile button">Import a profile</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="newButton">
|
||||
<property name="text">
|
||||
<string comment="new profile button">New Tox ID</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
|
122
src/widget/form/tabcompleter.cpp
Normal file
122
src/widget/form/tabcompleter.cpp
Normal file
@ -0,0 +1,122 @@
|
||||
/*
|
||||
Copyright (C) 2005-2014 by the Quassel Project and Project Tox
|
||||
devel@quassel-irc.org and https://tox.im
|
||||
|
||||
This file is part of qTox, a Qt-based graphical interface for Tox.
|
||||
|
||||
This program is libre software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
||||
See the COPYING file for more details.
|
||||
*/
|
||||
|
||||
/* This file was taken from the Quassel IRC client source (src/uisupport), and
|
||||
was greatly simplified for use in qTox. */
|
||||
|
||||
#include "tabcompleter.h"
|
||||
#include "src/core.h"
|
||||
#include "src/group.h"
|
||||
#include "src/widget/tool/chattextedit.h"
|
||||
#include <QRegExp>
|
||||
#include <QKeyEvent>
|
||||
|
||||
const QString TabCompleter::nickSuffix = QString(": ");
|
||||
|
||||
TabCompleter::TabCompleter(ChatTextEdit* msgEdit, Group* group)
|
||||
: QObject(msgEdit), msgEdit(msgEdit), group(group), enabled(false)
|
||||
{
|
||||
}
|
||||
|
||||
/* from quassel/src/uisupport/multilineedit.h
|
||||
// Compatibility methods with the rest of the classes which still expect this to be a QLineEdit
|
||||
inline QString text() const { return toPlainText(); }
|
||||
inline QString html() const { return toHtml(); }
|
||||
inline int cursorPosition() const { return textCursor().position(); }
|
||||
inline void insert(const QString &newText) { insertPlainText(newText); }
|
||||
inline void backspace() { keyPressEvent(new QKeyEvent(QEvent::KeyPress, Qt::Key_Backspace, Qt::NoModifier)); }
|
||||
*/
|
||||
|
||||
void TabCompleter::buildCompletionList()
|
||||
{
|
||||
// ensure a safe state in case we return early.
|
||||
completionMap.clear();
|
||||
nextCompletion = completionMap.begin();
|
||||
|
||||
// split the string on the given RE (not chars, nums or braces/brackets) and take the last section
|
||||
QString tabAbbrev = msgEdit->toPlainText().left(msgEdit->textCursor().position()).section(QRegExp("[^\\w\\d-_\\[\\]{}|`^.\\\\]"), -1, -1);
|
||||
// that section is then used as the completion regex
|
||||
QRegExp regex(QString("^[-_\\[\\]{}|`^.\\\\]*").append(QRegExp::escape(tabAbbrev)), Qt::CaseInsensitive);
|
||||
|
||||
for(auto name : group->peers.values())
|
||||
if (regex.indexIn(name) > -1)
|
||||
completionMap[name.toLower()] = name;
|
||||
|
||||
nextCompletion = completionMap.begin();
|
||||
lastCompletionLength = tabAbbrev.length();
|
||||
}
|
||||
|
||||
|
||||
void TabCompleter::complete()
|
||||
{
|
||||
if (!enabled) {
|
||||
buildCompletionList();
|
||||
enabled = true;
|
||||
}
|
||||
|
||||
if (nextCompletion != completionMap.end()) {
|
||||
// clear previous completion
|
||||
for (int i = 0; i < lastCompletionLength; i++) {
|
||||
msgEdit->keyPressEvent(new QKeyEvent(QEvent::KeyPress, Qt::Key_Backspace, Qt::NoModifier));
|
||||
}
|
||||
|
||||
// insert completion
|
||||
msgEdit->insertPlainText(*nextCompletion);
|
||||
|
||||
// remember charcount to delete next time and advance to next completion
|
||||
lastCompletionLength = nextCompletion->length();
|
||||
nextCompletion++;
|
||||
|
||||
// we're completing the first word of the line
|
||||
if (msgEdit->textCursor().position() == lastCompletionLength) {
|
||||
msgEdit->insertPlainText(nickSuffix);
|
||||
lastCompletionLength += nickSuffix.length();
|
||||
}
|
||||
}
|
||||
else { // we're at the end of the list -> start over again
|
||||
if (!completionMap.isEmpty()) {
|
||||
nextCompletion = completionMap.begin();
|
||||
complete();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void TabCompleter::reset()
|
||||
{
|
||||
enabled = false;
|
||||
}
|
||||
|
||||
// this determines the sort order
|
||||
bool TabCompleter::SortableString::operator<(const SortableString &other) const
|
||||
{
|
||||
QString name = Core::getInstance()->getUsername();
|
||||
if (this->contents == name)
|
||||
return false;
|
||||
else if (other.contents == name)
|
||||
return true;
|
||||
|
||||
/* QDateTime thisTime = thisUser->lastChannelActivity(_currentBufferId);
|
||||
QDateTime thatTime = thatUser->lastChannelActivity(_currentBufferId);
|
||||
|
||||
|
||||
if (thisTime.isValid() || thatTime.isValid())
|
||||
return thisTime > thatTime;
|
||||
*/ // this could be a useful feature at some point
|
||||
|
||||
return QString::localeAwareCompare(this->contents, other.contents) < 0;
|
||||
}
|
61
src/widget/form/tabcompleter.h
Normal file
61
src/widget/form/tabcompleter.h
Normal file
@ -0,0 +1,61 @@
|
||||
/*
|
||||
Copyright (C) 2005-2014 by the Quassel Project and Project Tox
|
||||
devel@quassel-irc.org and https://tox.im
|
||||
|
||||
This file is part of qTox, a Qt-based graphical interface for Tox.
|
||||
|
||||
This program is libre software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
||||
See the COPYING file for more details.
|
||||
*/
|
||||
|
||||
/* This file was taken from the Quassel IRC client source (src/uisupport), and
|
||||
was greatly simplified for use in qTox. */
|
||||
|
||||
#ifndef TABCOMPLETER_H
|
||||
#define TABCOMPLETER_H
|
||||
|
||||
#include <QString>
|
||||
#include <QMap>
|
||||
#include <QObject> // I'm really confused why I need this
|
||||
|
||||
class ChatTextEdit;
|
||||
class Group;
|
||||
|
||||
class TabCompleter : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit TabCompleter(ChatTextEdit* msgEdit, Group* group);
|
||||
|
||||
public slots:
|
||||
void complete();
|
||||
void reset();
|
||||
|
||||
private:
|
||||
struct SortableString {
|
||||
inline SortableString(const QString &n) { contents = n; }
|
||||
bool operator<(const SortableString &other) const;
|
||||
QString contents;
|
||||
};
|
||||
|
||||
ChatTextEdit* msgEdit;
|
||||
Group* group;
|
||||
bool enabled;
|
||||
const static QString nickSuffix;
|
||||
|
||||
QMap<SortableString, QString> completionMap;
|
||||
QMap<SortableString, QString>::Iterator nextCompletion;
|
||||
int lastCompletionLength;
|
||||
|
||||
void buildCompletionList();
|
||||
};
|
||||
|
||||
|
||||
#endif
|
@ -49,9 +49,10 @@ void FriendWidget::contextMenuEvent(QContextMenuEvent * event)
|
||||
QPoint pos = event->globalPos();
|
||||
QString id = Core::getInstance()->getFriendAddress(friendId);
|
||||
QString dir = Settings::getInstance().getAutoAcceptDir(id);
|
||||
QString globalDir = Settings::getInstance().getGlobalAutoAcceptDir();
|
||||
QMenu menu;
|
||||
QMenu* inviteMenu = menu.addMenu(tr("Invite to group","Menu to invite a friend to a groupchat"));
|
||||
QAction* copyId = menu.addAction(tr("Copy friend ID","Menu to copy the Tox ID of that friend"));
|
||||
QMenu* inviteMenu = menu.addMenu(tr("Invite in group","Menu to invite a friend in a groupchat"));
|
||||
QMap<QAction*, Group*> groupActions;
|
||||
for (Group* group : GroupList::groupList)
|
||||
{
|
||||
@ -60,10 +61,15 @@ void FriendWidget::contextMenuEvent(QContextMenuEvent * event)
|
||||
}
|
||||
if (groupActions.isEmpty())
|
||||
inviteMenu->setEnabled(false);
|
||||
menu.addSeparator();
|
||||
QAction* autoAccept = menu.addAction(tr("Auto accept files from this friend", "context menu entry"));
|
||||
QAction* disableAutoAccept = menu.addAction(tr("Diasble auto accepting files", "context menu entry"));
|
||||
QAction* disableAutoAccept = menu.addAction(tr("Manually accept files from this friend", "context menu entry"));
|
||||
QAction* globalAA = menu.addAction(tr("Auto accept files from all friends", "context menu entry"));
|
||||
QAction* disableGlobalAA = menu.addAction(tr("Disable global auto accept", "context menu entry"));
|
||||
if (dir.isEmpty())
|
||||
disableAutoAccept->setEnabled(false);
|
||||
if (globalDir.isEmpty())
|
||||
disableGlobalAA->setEnabled(false);
|
||||
menu.addSeparator();
|
||||
QAction* removeFriendAction = menu.addAction(tr("Remove friend", "Menu to remove the friend from our friendlist"));
|
||||
|
||||
@ -98,6 +104,21 @@ void FriendWidget::contextMenuEvent(QContextMenuEvent * event)
|
||||
{
|
||||
Settings::getInstance().setAutoAcceptDir(id, "");
|
||||
}
|
||||
else if (selectedItem == globalAA)
|
||||
{
|
||||
if (globalDir.isEmpty())
|
||||
globalDir = QDir::homePath();
|
||||
globalDir = QFileDialog::getExistingDirectory(0, tr("Choose an auto accept directory","popup title"), dir);
|
||||
if (!globalDir.isEmpty())
|
||||
{
|
||||
qDebug() << "FriendWidget: setting global auto accept dir to" << globalDir;
|
||||
Settings::getInstance().setGlobalAutoAcceptDir(globalDir);
|
||||
}
|
||||
}
|
||||
else if (selectedItem == disableGlobalAA)
|
||||
{
|
||||
Settings::getInstance().setGlobalAutoAcceptDir("");
|
||||
}
|
||||
else if (groupActions.contains(selectedItem))
|
||||
{
|
||||
Group* group = groupActions[selectedItem];
|
||||
|
@ -15,11 +15,10 @@
|
||||
*/
|
||||
|
||||
#include "actionaction.h"
|
||||
#include "src/misc/smileypack.h"
|
||||
#include <QDebug>
|
||||
|
||||
ActionAction::ActionAction(const QString &author, const QString &message, const QString &date, const bool& me) :
|
||||
ChatAction(me, author, date),
|
||||
message(message)
|
||||
ActionAction::ActionAction(const QString &author, QString message, const QString &date, const bool& me) :
|
||||
MessageAction(author, author+" "+message, date, me)
|
||||
{
|
||||
}
|
||||
|
||||
@ -45,24 +44,5 @@ QString ActionAction::getName()
|
||||
|
||||
QString ActionAction::getMessage()
|
||||
{
|
||||
QString message_ = SmileyPack::getInstance().smileyfied(toHtmlChars(message));
|
||||
|
||||
// detect urls
|
||||
QRegExp exp("(www\\.|http[s]?:\\/\\/|ftp:\\/\\/)\\S+");
|
||||
int offset = 0;
|
||||
while ((offset = exp.indexIn(message_, offset)) != -1)
|
||||
{
|
||||
QString url = exp.cap();
|
||||
|
||||
// add scheme if not specified
|
||||
if (exp.cap(1) == "www.")
|
||||
url.prepend("http://");
|
||||
|
||||
QString htmledUrl = QString("<a href=\"%1\">%1</a>").arg(url);
|
||||
message_.replace(offset, exp.cap().length(), htmledUrl);
|
||||
|
||||
offset += htmledUrl.length();
|
||||
}
|
||||
|
||||
return QString("<div class=action>%1 %2</div>").arg(name).arg(message_);
|
||||
return MessageAction::getMessage("action");
|
||||
}
|
||||
|
@ -17,12 +17,12 @@
|
||||
#ifndef ACTIONACTION_H
|
||||
#define ACTIONACTION_H
|
||||
|
||||
#include "chataction.h"
|
||||
#include "messageaction.h"
|
||||
|
||||
class ActionAction : public ChatAction
|
||||
class ActionAction : public MessageAction
|
||||
{
|
||||
public:
|
||||
ActionAction(const QString &author, const QString &message, const QString& date, const bool&);
|
||||
ActionAction(const QString &author, QString message, const QString& date, const bool&);
|
||||
virtual ~ActionAction(){;}
|
||||
virtual QString getMessage();
|
||||
virtual QString getName();
|
||||
|
47
src/widget/tool/chatactions/alertaction.cpp
Normal file
47
src/widget/tool/chatactions/alertaction.cpp
Normal file
@ -0,0 +1,47 @@
|
||||
/*
|
||||
Copyright (C) 2014 by Project Tox <https://tox.im>
|
||||
|
||||
This file is part of qTox, a Qt-based graphical interface for Tox.
|
||||
|
||||
This program is libre software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
||||
See the COPYING file for more details.
|
||||
*/
|
||||
|
||||
#include "alertaction.h"
|
||||
|
||||
AlertAction::AlertAction(const QString &author, const QString &message, const QString &date) :
|
||||
MessageAction(author, message, date, false)
|
||||
{
|
||||
}
|
||||
|
||||
void AlertAction::setup(QTextCursor cursor, QTextEdit *)
|
||||
{
|
||||
// When this function is called, we're supposed to only update ourselve when needed
|
||||
// Nobody should ask us to do anything with our content, we're on our own
|
||||
// Except we never udpate on our own, so we can safely free our resources
|
||||
|
||||
(void) cursor;
|
||||
message.clear();
|
||||
message.squeeze();
|
||||
name.clear();
|
||||
name.squeeze();
|
||||
date.clear();
|
||||
date.squeeze();
|
||||
}
|
||||
/*
|
||||
QString AlertAction::getName()
|
||||
{
|
||||
return QString("<div class=%1>%2</div>").arg("alert_name").arg(toHtmlChars(name));
|
||||
}
|
||||
*/
|
||||
QString AlertAction::getMessage()
|
||||
{
|
||||
return MessageAction::getMessage("alert");
|
||||
}
|
35
src/widget/tool/chatactions/alertaction.h
Normal file
35
src/widget/tool/chatactions/alertaction.h
Normal file
@ -0,0 +1,35 @@
|
||||
/*
|
||||
Copyright (C) 2014 by Project Tox <https://tox.im>
|
||||
|
||||
This file is part of qTox, a Qt-based graphical interface for Tox.
|
||||
|
||||
This program is libre software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
||||
See the COPYING file for more details.
|
||||
*/
|
||||
|
||||
#ifndef ALERTACTION_H
|
||||
#define ALERTACTION_H
|
||||
|
||||
#include "messageaction.h"
|
||||
|
||||
class AlertAction : public MessageAction
|
||||
{
|
||||
public:
|
||||
AlertAction(const QString &author, const QString &message, const QString& date);
|
||||
virtual ~AlertAction(){;}
|
||||
virtual QString getMessage();
|
||||
//virtual QString getName(); only do the message for now; preferably would do the whole row
|
||||
virtual void setup(QTextCursor cursor, QTextEdit*) override;
|
||||
|
||||
private:
|
||||
QString message;
|
||||
};
|
||||
|
||||
#endif // MESSAGEACTION_H
|
@ -38,7 +38,7 @@ void MessageAction::setup(QTextCursor cursor, QTextEdit *)
|
||||
date.squeeze();
|
||||
}
|
||||
|
||||
QString MessageAction::getMessage()
|
||||
QString MessageAction::getMessage(QString div)
|
||||
{
|
||||
QString message_ = SmileyPack::getInstance().smileyfied(toHtmlChars(message));
|
||||
|
||||
@ -65,14 +65,19 @@ QString MessageAction::getMessage()
|
||||
for (QString& s : messageLines)
|
||||
{
|
||||
if (QRegExp("^[ ]*>.*").exactMatch(s))
|
||||
message_ += "<span class=quote>>" + s.right(s.length()-4) + "</span><br/>";
|
||||
message_ += "<span class=quote>" + s.right(s.length()-4) + "</span><br/>";
|
||||
else
|
||||
message_ += s + "<br/>";
|
||||
}
|
||||
message_ = message_.left(message_.length()-4);
|
||||
|
||||
if (isMe)
|
||||
return QString("<div class=message_me>" + message_ + "</div>");
|
||||
else
|
||||
return QString("<div class=message>" + message_ + "</div>");
|
||||
return QString(QString("<div class=%1>").arg(div) + message_ + "</div>");
|
||||
}
|
||||
|
||||
QString MessageAction::getMessage()
|
||||
{
|
||||
if (isMe)
|
||||
return getMessage("message_me");
|
||||
else
|
||||
return getMessage("message");
|
||||
}
|
||||
|
@ -25,9 +25,10 @@ public:
|
||||
MessageAction(const QString &author, const QString &message, const QString &date, const bool &me);
|
||||
virtual ~MessageAction(){;}
|
||||
virtual QString getMessage();
|
||||
virtual QString getMessage(QString div);
|
||||
virtual void setup(QTextCursor cursor, QTextEdit*) override;
|
||||
|
||||
private:
|
||||
protected:
|
||||
QString message;
|
||||
};
|
||||
|
||||
|
@ -27,11 +27,15 @@ ChatTextEdit::ChatTextEdit(QWidget *parent) :
|
||||
void ChatTextEdit::keyPressEvent(QKeyEvent * event)
|
||||
{
|
||||
int key = event->key();
|
||||
if ((key == Qt::Key_Enter || key == Qt::Key_Return)
|
||||
&& !(event->modifiers() && Qt::ShiftModifier))
|
||||
{
|
||||
if ((key == Qt::Key_Enter || key == Qt::Key_Return) && !(event->modifiers() && Qt::ShiftModifier))
|
||||
emit enterPressed();
|
||||
return;
|
||||
else if (key == Qt::Key_Tab)
|
||||
emit tabPressed();
|
||||
else if (key == Qt::Key_Backspace) // because of the backspace() hack in tabber, we can't emit on these
|
||||
QTextEdit::keyPressEvent(event);
|
||||
else
|
||||
{
|
||||
emit keyPressed();
|
||||
QTextEdit::keyPressEvent(event);
|
||||
}
|
||||
QTextEdit::keyPressEvent(event);
|
||||
}
|
||||
|
@ -28,6 +28,8 @@ public:
|
||||
|
||||
signals:
|
||||
void enterPressed();
|
||||
void tabPressed();
|
||||
void keyPressed();
|
||||
|
||||
public slots:
|
||||
|
||||
|
@ -61,7 +61,52 @@ Widget::Widget(QWidget *parent)
|
||||
|
||||
void Widget::init()
|
||||
{
|
||||
|
||||
ui->setupUi(this);
|
||||
|
||||
if (QSystemTrayIcon::isSystemTrayAvailable() == true)
|
||||
{
|
||||
icon = new QSystemTrayIcon(this);
|
||||
icon->setIcon(this->windowIcon());
|
||||
trayMenu = new QMenu;
|
||||
trayMenu->setStyleSheet("QMenu {background: white; color: black; border: 1px solid black;}"
|
||||
"QMenu::item:selected { background: #414141}");
|
||||
|
||||
statusOnline = new QAction(tr("online"), this);
|
||||
statusOnline->setIcon(QIcon(":ui/statusButton/dot_online.png"));
|
||||
connect(statusOnline, SIGNAL(triggered()), this, SLOT(setStatusOnline()));
|
||||
statusAway = new QAction(tr("away"), this);
|
||||
statusAway->setIcon(QIcon(":ui/statusButton/dot_idle.png"));
|
||||
connect(statusAway, SIGNAL(triggered()), this, SLOT(setStatusAway()));
|
||||
statusBusy = new QAction(tr("busy"), this);
|
||||
connect(statusBusy, SIGNAL(triggered()), this, SLOT(setStatusBusy()));
|
||||
statusBusy->setIcon(QIcon(":ui/statusButton/dot_busy.png"));
|
||||
actionQuit = new QAction(tr("&Quit"), this);
|
||||
connect(actionQuit, SIGNAL(triggered()), qApp, SLOT(quit()));
|
||||
|
||||
trayMenu->addAction(new QAction(tr("Change status to:"), this));
|
||||
trayMenu->addAction(statusOnline);
|
||||
trayMenu->addAction(statusAway);
|
||||
trayMenu->addAction(statusBusy);
|
||||
trayMenu->addSeparator();
|
||||
trayMenu->addAction(actionQuit);
|
||||
icon->setContextMenu(trayMenu);
|
||||
|
||||
connect(icon,
|
||||
SIGNAL(activated(QSystemTrayIcon::ActivationReason)),
|
||||
this,
|
||||
SLOT(onIconClick(QSystemTrayIcon::ActivationReason)));
|
||||
|
||||
icon->show();
|
||||
|
||||
if(Settings::getInstance().getAutostartInTray() == false)
|
||||
this->show();
|
||||
}
|
||||
else
|
||||
{
|
||||
qWarning() << "No system tray detected!";
|
||||
this->show();
|
||||
}
|
||||
|
||||
ui->statusbar->hide();
|
||||
ui->menubar->hide();
|
||||
@ -148,7 +193,6 @@ void Widget::init()
|
||||
filesForm = new FilesForm();
|
||||
addFriendForm = new AddFriendForm;
|
||||
settingsWidget = new SettingsWidget();
|
||||
|
||||
|
||||
connect(core, &Core::connected, this, &Widget::onConnected);
|
||||
connect(core, &Core::disconnected, this, &Widget::onDisconnected);
|
||||
@ -233,12 +277,19 @@ Widget::~Widget()
|
||||
for (Group* g : GroupList::groupList)
|
||||
delete g;
|
||||
GroupList::groupList.clear();
|
||||
delete statusAway;
|
||||
delete statusBusy;
|
||||
delete statusOnline;
|
||||
delete actionQuit;
|
||||
delete trayMenu;
|
||||
delete icon;
|
||||
delete ui;
|
||||
instance = nullptr;
|
||||
}
|
||||
|
||||
Widget* Widget::getInstance()
|
||||
{
|
||||
|
||||
if (!instance)
|
||||
{
|
||||
instance = new Widget();
|
||||
@ -254,10 +305,30 @@ QThread* Widget::getCoreThread()
|
||||
|
||||
void Widget::closeEvent(QCloseEvent *event)
|
||||
{
|
||||
Settings::getInstance().setWindowGeometry(saveGeometry());
|
||||
Settings::getInstance().setWindowState(saveState());
|
||||
Settings::getInstance().setSplitterState(ui->mainSplitter->saveState());
|
||||
QWidget::closeEvent(event);
|
||||
if(Settings::getInstance().getCloseToTray() == true)
|
||||
{
|
||||
event->ignore();
|
||||
this->hide();
|
||||
}
|
||||
else
|
||||
{
|
||||
Settings::getInstance().setWindowGeometry(saveGeometry());
|
||||
Settings::getInstance().setWindowState(saveState());
|
||||
Settings::getInstance().setSplitterState(ui->mainSplitter->saveState());
|
||||
QWidget::closeEvent(event);
|
||||
}
|
||||
}
|
||||
|
||||
void Widget::changeEvent(QEvent *event)
|
||||
{
|
||||
if (event->type() == QEvent::WindowStateChange)
|
||||
{
|
||||
if(isMinimized() == true
|
||||
&& Settings::getInstance().getMinimizeToTray() == true)
|
||||
{
|
||||
this->hide();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
QString Widget::detectProfile()
|
||||
@ -454,12 +525,21 @@ void Widget::onTransferClicked()
|
||||
activeChatroomWidget = nullptr;
|
||||
}
|
||||
|
||||
void Widget::onIconClick()
|
||||
void Widget::onIconClick(QSystemTrayIcon::ActivationReason reason)
|
||||
{
|
||||
if(this->isHidden() == true)
|
||||
this->show();
|
||||
else
|
||||
this->hide();
|
||||
switch (reason) {
|
||||
case QSystemTrayIcon::Trigger:
|
||||
if(this->isHidden() == true)
|
||||
this->show();
|
||||
else
|
||||
this->hide();
|
||||
case QSystemTrayIcon::DoubleClick:
|
||||
break;
|
||||
case QSystemTrayIcon::MiddleClick:
|
||||
break;
|
||||
default:
|
||||
;
|
||||
}
|
||||
}
|
||||
|
||||
void Widget::onSettingsClicked()
|
||||
@ -750,14 +830,19 @@ void Widget::onGroupMessageReceived(int groupnumber, const QString& message, con
|
||||
if (!g)
|
||||
return;
|
||||
|
||||
g->chatForm->addMessage(author, message);
|
||||
QString name = core->getUsername();
|
||||
bool targeted = (author != name) && message.contains(name, Qt::CaseInsensitive);
|
||||
if (targeted)
|
||||
g->chatForm->addAlertMessage(author, message);
|
||||
else
|
||||
g->chatForm->addMessage(author, message);
|
||||
|
||||
if ((static_cast<GenericChatroomWidget*>(g->widget) != activeChatroomWidget) || isMinimized() || !isActiveWindow())
|
||||
{
|
||||
g->hasNewMessages = 1;
|
||||
newMessageAlert(); // sound alert on any message, not just naming user
|
||||
if (message.contains(core->getUsername(), Qt::CaseInsensitive))
|
||||
if (targeted)
|
||||
{
|
||||
newMessageAlert();
|
||||
g->userWasMentioned = 1; // useful for highlighting line or desktop notifications
|
||||
}
|
||||
g->widget->updateStatusLight();
|
||||
@ -773,17 +858,23 @@ void Widget::onGroupNamelistChanged(int groupnumber, int peernumber, uint8_t Cha
|
||||
g = createGroup(groupnumber);
|
||||
}
|
||||
|
||||
QString name = core->getGroupPeerName(groupnumber, peernumber);
|
||||
TOX_CHAT_CHANGE change = static_cast<TOX_CHAT_CHANGE>(Change);
|
||||
if (change == TOX_CHAT_CHANGE_PEER_ADD)
|
||||
{
|
||||
QString name = core->getGroupPeerName(groupnumber, peernumber);
|
||||
if (name.isEmpty())
|
||||
name = tr("<Unknown>", "Placeholder when we don't know someone's name in a group chat");
|
||||
g->addPeer(peernumber,name);
|
||||
//g->chatForm->addSystemInfoMessage(tr("%1 has joined the chat").arg(name), "green");
|
||||
// we can't display these messages until irungentoo fixes peernumbers
|
||||
// https://github.com/irungentoo/toxcore/issues/1128
|
||||
}
|
||||
else if (change == TOX_CHAT_CHANGE_PEER_DEL)
|
||||
{
|
||||
g->removePeer(peernumber);
|
||||
else if (change == TOX_CHAT_CHANGE_PEER_NAME)
|
||||
//g->chatForm->addSystemInfoMessage(tr("%1 has left the chat").arg(name), "silver");
|
||||
}
|
||||
else if (change == TOX_CHAT_CHANGE_PEER_NAME) // core overwrites old name before telling us it changed...
|
||||
g->updatePeer(peernumber,core->getGroupPeerName(groupnumber, peernumber));
|
||||
}
|
||||
|
||||
|
@ -18,6 +18,7 @@
|
||||
#define WIDGET_H
|
||||
|
||||
#include <QMainWindow>
|
||||
#include <QSystemTrayIcon>
|
||||
#include "form/addfriendform.h"
|
||||
#include "form/settingswidget.h"
|
||||
#include "form/settings/identityform.h"
|
||||
@ -65,6 +66,11 @@ public:
|
||||
~Widget();
|
||||
|
||||
virtual void closeEvent(QCloseEvent *event);
|
||||
virtual void changeEvent(QEvent *event);
|
||||
|
||||
|
||||
public slots:
|
||||
void onSettingsClicked();
|
||||
|
||||
signals:
|
||||
void friendRequestAccepted(const QString& userId);
|
||||
@ -82,7 +88,6 @@ private slots:
|
||||
void onAddClicked();
|
||||
void onGroupClicked();
|
||||
void onTransferClicked();
|
||||
void onSettingsClicked();
|
||||
void onFailedToStartCore();
|
||||
void onBadProxyCore();
|
||||
void onAvatarClicked();
|
||||
@ -112,7 +117,7 @@ private slots:
|
||||
void onMessageSendResult(int friendId, const QString& message, int messageId);
|
||||
void onGroupSendResult(int groupId, const QString& message, int result);
|
||||
void playRingtone();
|
||||
void onIconClick();
|
||||
void onIconClick(QSystemTrayIcon::ActivationReason);
|
||||
void onUserAway();
|
||||
|
||||
private:
|
||||
@ -124,6 +129,12 @@ private:
|
||||
void removeGroup(Group* g);
|
||||
QString askProfiles();
|
||||
QString detectProfile();
|
||||
QSystemTrayIcon *icon;
|
||||
QMenu *trayMenu;
|
||||
QAction *statusOnline,
|
||||
*statusAway,
|
||||
*statusBusy,
|
||||
*actionQuit;
|
||||
|
||||
Ui::MainWindow *ui;
|
||||
QSplitter *centralLayout;
|
||||
|
Binary file not shown.
@ -3,11 +3,6 @@
|
||||
<TS version="2.1" language="fr_FR">
|
||||
<context>
|
||||
<name>AVForm</name>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/avform.cpp" line="22"/>
|
||||
<source>Audio/Video settings</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Hide video preview</source>
|
||||
<comment>On a button</comment>
|
||||
@ -18,6 +13,11 @@
|
||||
<comment>On a button</comment>
|
||||
<translation type="obsolete">Montrer l'aperçu vidéo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/avform.cpp" line="22"/>
|
||||
<source>Audio/Video</source>
|
||||
<translation>Audio/Vidéo</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>AVPage</name>
|
||||
@ -41,57 +41,52 @@
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/avsettings.ui" line="14"/>
|
||||
<source>Form</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>qTox</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/avsettings.ui" line="20"/>
|
||||
<location filename="../src/widget/form/settings/avsettings.ui" line="38"/>
|
||||
<source>Video Settings</source>
|
||||
<translation>Options vidéo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/avsettings.ui" line="49"/>
|
||||
<source>Resolution</source>
|
||||
<translation>Résolution</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/avsettings.ui" line="148"/>
|
||||
<source>Volume Settings (Stubs)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Options du volume (Fictif)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/avsettings.ui" line="26"/>
|
||||
<location filename="../src/widget/form/settings/avsettings.ui" line="154"/>
|
||||
<source>Playback</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Haut-parleurs</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/avsettings.ui" line="40"/>
|
||||
<location filename="../src/widget/form/settings/avsettings.ui" line="168"/>
|
||||
<source>Microphone</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/avsettings.ui" line="57"/>
|
||||
<source>Video settings</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Microphone</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/avsettings.ui" line="66"/>
|
||||
<source>Modes</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/avsettings.ui" line="83"/>
|
||||
<source>Hue</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Teinte</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/avsettings.ui" line="97"/>
|
||||
<location filename="../src/widget/form/settings/avsettings.ui" line="80"/>
|
||||
<source>Brightness</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Luminosité</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/avsettings.ui" line="111"/>
|
||||
<location filename="../src/widget/form/settings/avsettings.ui" line="94"/>
|
||||
<source>Saturation</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Saturation</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/avsettings.ui" line="125"/>
|
||||
<location filename="../src/widget/form/settings/avsettings.ui" line="108"/>
|
||||
<source>Contrast</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/avsettings.ui" line="139"/>
|
||||
<source>Preview</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Contraste</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Show video preview</source>
|
||||
@ -192,7 +187,7 @@
|
||||
<context>
|
||||
<name>ChatForm</name>
|
||||
<message>
|
||||
<location filename="../src/widget/form/chatform.cpp" line="105"/>
|
||||
<location filename="../src/widget/form/chatform.cpp" line="106"/>
|
||||
<source>Send a file</source>
|
||||
<translation>Envoyer un fichier</translation>
|
||||
</message>
|
||||
@ -211,33 +206,44 @@
|
||||
<context>
|
||||
<name>Core</name>
|
||||
<message>
|
||||
<location filename="../src/core.cpp" line="1104"/>
|
||||
<source>Encrypted profile</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<location filename="../src/core.cpp" line="231"/>
|
||||
<source>Toxing on qTox</source>
|
||||
<translation>Toxer avec qTox</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/core.cpp" line="1105"/>
|
||||
<location filename="../src/core.cpp" line="232"/>
|
||||
<source>qTox User</source>
|
||||
<translation>Utilisateur de qTox</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/core.cpp" line="1106"/>
|
||||
<source>Encrypted profile</source>
|
||||
<translation>Profil chiffré</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/core.cpp" line="1107"/>
|
||||
<source>Your tox profile seems to be encrypted, qTox can't open it
|
||||
Do you want to erase this profile ?</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Votre profil tox semble être chiffré, qTox ne peut pas l'ouvrir
|
||||
Voulez-vous effacer ce profil ?</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>FileTransferInstance</name>
|
||||
<message>
|
||||
<location filename="../src/filetransferinstance.cpp" line="209"/>
|
||||
<location filename="../src/filetransferinstance.cpp" line="234"/>
|
||||
<source>Save a file</source>
|
||||
<comment>Title of the file saving dialog</comment>
|
||||
<translation>Sauvegarder un fichier</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/filetransferinstance.cpp" line="220"/>
|
||||
<location filename="../src/filetransferinstance.cpp" line="242"/>
|
||||
<source>Location not writable</source>
|
||||
<comment>Title of permissions popup</comment>
|
||||
<translation>Impossible d'écrire ici</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/filetransferinstance.cpp" line="220"/>
|
||||
<location filename="../src/filetransferinstance.cpp" line="242"/>
|
||||
<source>You do not have permission to write that location. Choose another, or cancel the save dialog.</source>
|
||||
<comment>text of permissions popup</comment>
|
||||
<translation>Vous n'avez pas la permission d'écrire ici. Choisissez un audre endroit, ou annulez.</translation>
|
||||
@ -309,19 +315,55 @@ Do you want to erase this profile ?</source>
|
||||
<context>
|
||||
<name>FriendWidget</name>
|
||||
<message>
|
||||
<location filename="../src/widget/friendwidget.cpp" line="48"/>
|
||||
<location filename="../src/widget/friendwidget.cpp" line="54"/>
|
||||
<source>Invite to group</source>
|
||||
<comment>Menu to invite a friend to a groupchat</comment>
|
||||
<translation>Inviter au groupe</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/friendwidget.cpp" line="55"/>
|
||||
<source>Copy friend ID</source>
|
||||
<comment>Menu to copy the Tox ID of that friend</comment>
|
||||
<translation>Copier l'ID ami</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/friendwidget.cpp" line="49"/>
|
||||
<source>Invite in group</source>
|
||||
<comment>Menu to invite a friend in a groupchat</comment>
|
||||
<translation>Inviter dans un groupe</translation>
|
||||
<location filename="../src/widget/friendwidget.cpp" line="65"/>
|
||||
<source>Auto accept files from this friend</source>
|
||||
<comment>context menu entry</comment>
|
||||
<translation>Automatiquement accepter les fichiers de ce contact</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/friendwidget.cpp" line="59"/>
|
||||
<location filename="../src/widget/friendwidget.cpp" line="66"/>
|
||||
<source>Manually accept files from this friend</source>
|
||||
<comment>context menu entry</comment>
|
||||
<translation>Accepter les fichiers de ce contact manuellement</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/friendwidget.cpp" line="67"/>
|
||||
<source>Auto accept files from all friends</source>
|
||||
<comment>context menu entry</comment>
|
||||
<translation>Accepter les fichiers de tous les contacts automatiquement</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/friendwidget.cpp" line="68"/>
|
||||
<source>Disable global auto accept</source>
|
||||
<comment>context menu entry</comment>
|
||||
<translation>Désactiver l'acceptation automatique de fichier</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/friendwidget.cpp" line="96"/>
|
||||
<location filename="../src/widget/friendwidget.cpp" line="111"/>
|
||||
<source>Choose an auto accept directory</source>
|
||||
<comment>popup title</comment>
|
||||
<translation>Choisir un dossier de téléchargement</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Invite in group</source>
|
||||
<comment>Menu to invite a friend in a groupchat</comment>
|
||||
<translation type="vanished">Inviter dans un groupe</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/friendwidget.cpp" line="74"/>
|
||||
<source>Remove friend</source>
|
||||
<comment>Menu to remove the friend from our friendlist</comment>
|
||||
<translation>Supprimer ami</translation>
|
||||
@ -330,9 +372,13 @@ Do you want to erase this profile ?</source>
|
||||
<context>
|
||||
<name>GeneralForm</name>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/generalform.cpp" line="27"/>
|
||||
<source>General Settings</source>
|
||||
<translation type="unfinished">Options Générales</translation>
|
||||
<translation type="obsolete">Options Générales</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/generalform.cpp" line="30"/>
|
||||
<source>General</source>
|
||||
<translation>Général</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@ -375,95 +421,110 @@ Do you want to erase this profile ?</source>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="14"/>
|
||||
<source>Form</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>qTox</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="29"/>
|
||||
<source>General Settings</source>
|
||||
<translation type="unfinished">Options Générales</translation>
|
||||
<translation>Options Générales</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="35"/>
|
||||
<source>Use translations</source>
|
||||
<extracomment>Text on a checkbox to enable translations</extracomment>
|
||||
<translation type="unfinished">Utiliser les traductions</translation>
|
||||
<translation type="obsolete">Utiliser les traductions</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="42"/>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="37"/>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="53"/>
|
||||
<source>The translation may not load until qTox restarts.</source>
|
||||
<translation>La translation peut ne pas se charger jusqu'à ce que qTox redémarre.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="40"/>
|
||||
<source>Translation:</source>
|
||||
<translation>Traduction:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="62"/>
|
||||
<source>Save settings to the working directory instead of the usual conf dir</source>
|
||||
<extracomment>describes makeToxPortable checkbox</extracomment>
|
||||
<translation type="unfinished">Sauvegarde les options dans le dossier courant au lieu du dossier de configuration habituel</translation>
|
||||
<translation>Sauvegarde les options dans le dossier courant au lieu du dossier de configuration habituel</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="45"/>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="65"/>
|
||||
<source>Make Tox portable</source>
|
||||
<translation type="unfinished">Rendre Tox portable</translation>
|
||||
<translation>Rendre Tox portable</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="52"/>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="72"/>
|
||||
<source>Start in tray</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Démarrer dans la barre d'état</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="59"/>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="79"/>
|
||||
<source>Show contacts' status changes</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Montrer les changements de status des contacts</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="68"/>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="88"/>
|
||||
<source>Provided in minutes</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>En minutes</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="74"/>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="94"/>
|
||||
<source>Auto away after (0 to disable):</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Auto-absent après (0 pour désactiver):</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="87"/>
|
||||
<source> minutes</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="105"/>
|
||||
<source>Theme</source>
|
||||
<translation type="unfinished">Thème</translation>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="107"/>
|
||||
<source>Set to 0 to disable</source>
|
||||
<translation>Mettre à 0 pour désactiver</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="113"/>
|
||||
<source> minutes</source>
|
||||
<translation> minutes</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="131"/>
|
||||
<source>Theme</source>
|
||||
<translation>Thème</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="139"/>
|
||||
<source>Smiley Pack:</source>
|
||||
<extracomment>Text on smiley pack label</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Pack de smileys:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="134"/>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="160"/>
|
||||
<source>:)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>:)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="144"/>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="170"/>
|
||||
<source>;)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>:)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="154"/>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="180"/>
|
||||
<source>:p</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>:p</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="164"/>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="190"/>
|
||||
<source>:O</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>:O</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="174"/>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="200"/>
|
||||
<source>:'(</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>:'(</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="188"/>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="214"/>
|
||||
<source>Style:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Style:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Smiley Pack</source>
|
||||
@ -471,51 +532,51 @@ Do you want to erase this profile ?</source>
|
||||
<translation type="obsolete">Pack de smileys</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="210"/>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="236"/>
|
||||
<source>Connection Settings</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="216"/>
|
||||
<source>Enable IPv6 (recommended)</source>
|
||||
<extracomment>Text on a checkbox to enable IPv6</extracomment>
|
||||
<translation type="unfinished">Activer IPv6 (recommandé)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="223"/>
|
||||
<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="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="226"/>
|
||||
<source>Disable UDP (not recommended)</source>
|
||||
<extracomment>Text on checkbox to disable UDP</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="233"/>
|
||||
<source>Use proxy (SOCKS5)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Options de réseau</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="242"/>
|
||||
<source>Address</source>
|
||||
<extracomment>Text on proxy addr label</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
<source>Enable IPv6 (recommended)</source>
|
||||
<extracomment>Text on a checkbox to enable IPv6</extracomment>
|
||||
<translation>Activer IPv6 (recommandé)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="249"/>
|
||||
<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>Permet par exemple d'utiliser Tox à travers Tor, mais ce n'est à utiliser que si nécessaire, car cela ralenti le réseau Tox.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="252"/>
|
||||
<source>Disable UDP (not recommended)</source>
|
||||
<extracomment>Text on checkbox to disable UDP</extracomment>
|
||||
<translation>Désactiver UDP (non recommandé)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="259"/>
|
||||
<source>Use proxy (SOCKS5)</source>
|
||||
<translation>Utiliser un proxy (SOCKS5)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="268"/>
|
||||
<source>Address</source>
|
||||
<extracomment>Text on proxy addr label</extracomment>
|
||||
<translation>Addresse</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="278"/>
|
||||
<source>Port</source>
|
||||
<extracomment>Text on proxy port label</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Port</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>GenericChatForm</name>
|
||||
<message>
|
||||
<location filename="../src/widget/form/genericchatform.cpp" line="154"/>
|
||||
<location filename="../src/widget/form/genericchatform.cpp" line="160"/>
|
||||
<location filename="../src/widget/form/genericchatform.cpp" line="150"/>
|
||||
<location filename="../src/widget/form/genericchatform.cpp" line="156"/>
|
||||
<source>Save chat log</source>
|
||||
<translation>Sauvegarder l'historique de conversation</translation>
|
||||
</message>
|
||||
@ -523,7 +584,7 @@ Do you want to erase this profile ?</source>
|
||||
<context>
|
||||
<name>GroupChatForm</name>
|
||||
<message>
|
||||
<location filename="../src/widget/form/groupchatform.cpp" line="47"/>
|
||||
<location filename="../src/widget/form/groupchatform.cpp" line="45"/>
|
||||
<source>%1 users in chat</source>
|
||||
<comment>Number of users in chat</comment>
|
||||
<translation>%1 personnes</translation>
|
||||
@ -533,7 +594,7 @@ Do you want to erase this profile ?</source>
|
||||
<translation type="vanished"><Inconnu></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/groupchatform.cpp" line="85"/>
|
||||
<location filename="../src/widget/form/groupchatform.cpp" line="77"/>
|
||||
<source>%1 users in chat</source>
|
||||
<translation>%1 personnes</translation>
|
||||
</message>
|
||||
@ -545,19 +606,19 @@ Do you want to erase this profile ?</source>
|
||||
<context>
|
||||
<name>GroupWidget</name>
|
||||
<message>
|
||||
<location filename="../src/widget/groupwidget.cpp" line="39"/>
|
||||
<location filename="../src/widget/groupwidget.cpp" line="59"/>
|
||||
<location filename="../src/widget/groupwidget.cpp" line="42"/>
|
||||
<location filename="../src/widget/groupwidget.cpp" line="64"/>
|
||||
<source>%1 users in chat</source>
|
||||
<translation>%1 personnes</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/groupwidget.cpp" line="41"/>
|
||||
<location filename="../src/widget/groupwidget.cpp" line="61"/>
|
||||
<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>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/groupwidget.cpp" line="48"/>
|
||||
<location filename="../src/widget/groupwidget.cpp" line="53"/>
|
||||
<source>Quit group</source>
|
||||
<comment>Menu to quit a groupchat</comment>
|
||||
<translation>Quitter le groupe</translation>
|
||||
@ -566,87 +627,111 @@ Do you want to erase this profile ?</source>
|
||||
<context>
|
||||
<name>IdentityForm</name>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="33"/>
|
||||
<source>Your identity</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="34"/>
|
||||
<source>Identity</source>
|
||||
<translation>Identité</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="114"/>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="112"/>
|
||||
<source>Call active</source>
|
||||
<comment>popup title</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Appel en cours</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="115"/>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="113"/>
|
||||
<source>You can't switch profiles while a call is active!</source>
|
||||
<comment>popup text</comment>
|
||||
<translation type="unfinished"></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="125"/>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="123"/>
|
||||
<source>Rename "%1"</source>
|
||||
<comment>renaming a profile</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Renommer "%1"</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="140"/>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="131"/>
|
||||
<source>Profile already exists</source>
|
||||
<comment>rename confirm title</comment>
|
||||
<translation>Ce profil existe déjà</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="132"/>
|
||||
<source>A profile named "%1" already exists. Do you want to erase it?</source>
|
||||
<comment>rename confirm text</comment>
|
||||
<translation>Un profil appelé "%1" existe déjà. Voulez-vous le supprimer ?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="145"/>
|
||||
<source>Export profile</source>
|
||||
<comment>save dialog title</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Exporter le profil</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="142"/>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="147"/>
|
||||
<source>Tox save file (*.tox)</source>
|
||||
<comment>save dialog filter</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Fichier sauvegarde Tox (*.tox)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="151"/>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="156"/>
|
||||
<source>Profile currently loaded</source>
|
||||
<comment>current profile deletion warning title</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Profil en cours d'utilisation</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="151"/>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="156"/>
|
||||
<source>This profile is currently in use. Please load a different profile before deleting this one.</source>
|
||||
<comment>current profile deletion warning text</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Ce profil est en cours d'utilisation. Merci de choisir un autre profil avant de supprimer celui-ci.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="156"/>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="160"/>
|
||||
<source>Deletion imminent!</source>
|
||||
<comment>deletion confirmation title</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Suppression imminente!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="156"/>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="161"/>
|
||||
<source>Are you sure you want to delete this profile?</source>
|
||||
<comment>deletion confirmation text</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Êtes-vous sur de vouloir supprimer ce profil ?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="168"/>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="172"/>
|
||||
<source>Import profile</source>
|
||||
<comment>import dialog title</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Importer un profil</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="168"/>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="172"/>
|
||||
<source>Tox save file (*.tox)</source>
|
||||
<comment>import dialog filter</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Fichier sauvegarde Tox (*.tox)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="176"/>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="181"/>
|
||||
<source>Ignoring non-Tox file</source>
|
||||
<comment>popup title</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Fichier non-Tox ignoré</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="176"/>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="181"/>
|
||||
<source>Warning: you've chosen a file that is not a Tox save file; ignoring.</source>
|
||||
<comment>popup text</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Attention: Vous avez sélectionné un fichier qui n'est pas une sauvegarde Tox: il sera ignoré.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="185"/>
|
||||
<source>Profile already exists</source>
|
||||
<comment>import confirm title</comment>
|
||||
<translation>Ce profil existe déjà</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="186"/>
|
||||
<source>A profile named "%1" already exists. Do you want to erase it?</source>
|
||||
<comment>import confirm text</comment>
|
||||
<translation>Un profil appelé "%1" existe déjà. Voulez-vous le supprimer ?</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@ -679,78 +764,84 @@ Do you want to erase this profile ?</source>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/identitysettings.ui" line="14"/>
|
||||
<source>Form</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>qTox</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/identitysettings.ui" line="20"/>
|
||||
<source>Public Information</source>
|
||||
<translation type="unfinished">Informations Publiques</translation>
|
||||
<translation>Informations Publiques</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/identitysettings.ui" line="26"/>
|
||||
<source>Name</source>
|
||||
<translation type="unfinished">Nom</translation>
|
||||
<translation>Nom</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/identitysettings.ui" line="36"/>
|
||||
<source>Status</source>
|
||||
<translation type="unfinished">Status</translation>
|
||||
<translation>Status</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/identitysettings.ui" line="49"/>
|
||||
<source>Tox ID</source>
|
||||
<translation type="unfinished">ID Tox</translation>
|
||||
<translation>ID Tox</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/identitysettings.ui" line="55"/>
|
||||
<source>Your Tox ID (click to copy)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Votre ID Tox (cliquez pour copier)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/identitysettings.ui" line="65"/>
|
||||
<source>Profiles</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Profils</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/identitysettings.ui" line="73"/>
|
||||
<source>Available profiles:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Profils disponibles:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/identitysettings.ui" line="94"/>
|
||||
<source>Load</source>
|
||||
<comment>load profile button</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Charger</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/identitysettings.ui" line="101"/>
|
||||
<source>Rename</source>
|
||||
<comment>rename profile button</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Renommer</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/identitysettings.ui" line="108"/>
|
||||
<source>Export</source>
|
||||
<comment>export profile button</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Exporter</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/identitysettings.ui" line="115"/>
|
||||
<source>Delete</source>
|
||||
<comment>delete profile button</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Supprimer</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/identitysettings.ui" line="118"/>
|
||||
<source>This is useful to remain safe on public computers</source>
|
||||
<comment>delete profile button tooltip</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Util pour sécuriser sur un ordinateur public</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/identitysettings.ui" line="127"/>
|
||||
<location filename="../src/widget/form/settings/identitysettings.ui" line="129"/>
|
||||
<source>Import a profile</source>
|
||||
<comment>import profile button</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Importer un profil</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/identitysettings.ui" line="136"/>
|
||||
<source>New Tox ID</source>
|
||||
<comment>new profile button</comment>
|
||||
<translation>Nouvel ID Tox</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@ -805,8 +896,8 @@ Do you want to erase this profile ?</source>
|
||||
<name>PrivacyForm</name>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/privacyform.cpp" line="21"/>
|
||||
<source>Privacy settings</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<source>Privacy</source>
|
||||
<translation>Vie privée</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@ -903,103 +994,103 @@ Do you want to erase this profile ?</source>
|
||||
<translation type="vanished">Ctrl+Q</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/widget.cpp" line="101"/>
|
||||
<location filename="../src/widget/widget.cpp" line="109"/>
|
||||
<source>Online</source>
|
||||
<comment>Button to set your status to 'Online'</comment>
|
||||
<translation>Connecté</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/widget.cpp" line="103"/>
|
||||
<location filename="../src/widget/widget.cpp" line="111"/>
|
||||
<source>Away</source>
|
||||
<comment>Button to set your status to 'Away'</comment>
|
||||
<translation>Indisponnible</translation>
|
||||
<translation>Indisponible</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/widget.cpp" line="105"/>
|
||||
<location filename="../src/widget/widget.cpp" line="113"/>
|
||||
<source>Busy</source>
|
||||
<comment>Button to set your status to 'Busy'</comment>
|
||||
<translation>Occupé</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/widget.cpp" line="282"/>
|
||||
<location filename="../src/widget/widget.cpp" line="310"/>
|
||||
<source>Choose a profile</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Choisir un profil</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/widget.cpp" line="283"/>
|
||||
<location filename="../src/widget/widget.cpp" line="311"/>
|
||||
<source>Please choose which identity to use</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Merci de choisir l'identité à utiliser</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/widget.cpp" line="309"/>
|
||||
<location filename="../src/widget/widget.cpp" line="337"/>
|
||||
<source>Choose a profile picture</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Choisissez une image de profil</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/widget.cpp" line="316"/>
|
||||
<location filename="../src/widget/widget.cpp" line="323"/>
|
||||
<location filename="../src/widget/widget.cpp" line="344"/>
|
||||
<location filename="../src/widget/widget.cpp" line="351"/>
|
||||
<location filename="../src/widget/widget.cpp" line="372"/>
|
||||
<source>Error</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/widget.cpp" line="316"/>
|
||||
<source>Unable to open this file</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/widget.cpp" line="323"/>
|
||||
<source>Unable to read this image</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Erreur</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/widget.cpp" line="344"/>
|
||||
<source>Unable to open this file</source>
|
||||
<translation>Impossible d'ouvrir ce fichier</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/widget.cpp" line="351"/>
|
||||
<source>Unable to read this image</source>
|
||||
<translation>Impossible de lire cette image</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/widget.cpp" line="372"/>
|
||||
<source>This image is too big</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Cette image est trop volumineuse</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/widget.cpp" line="371"/>
|
||||
<location filename="../src/widget/widget.cpp" line="399"/>
|
||||
<source>Toxcore failed to start, the application will terminate after you close this message.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Toxcore n'as pas pu démarrer correctement, l'application va quitter quand vous fermerez ce message.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/widget.cpp" line="380"/>
|
||||
<location filename="../src/widget/widget.cpp" line="408"/>
|
||||
<source>toxcore failed to start with your proxy settings. qTox cannot run; please modify your settings and restart.</source>
|
||||
<comment>popup text</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Toxcore n'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>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/widget.cpp" line="549"/>
|
||||
<location filename="../src/widget/widget.cpp" line="579"/>
|
||||
<source>away</source>
|
||||
<comment>contact status</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>indisponnible</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/widget.cpp" line="551"/>
|
||||
<location filename="../src/widget/widget.cpp" line="581"/>
|
||||
<source>busy</source>
|
||||
<comment>contact status</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>occupé</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/widget.cpp" line="553"/>
|
||||
<location filename="../src/widget/widget.cpp" line="583"/>
|
||||
<source>offline</source>
|
||||
<comment>contact status</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>déconnecté</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/widget.cpp" line="555"/>
|
||||
<location filename="../src/widget/widget.cpp" line="585"/>
|
||||
<source>online</source>
|
||||
<comment>contact status</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>connecté</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/widget.cpp" line="561"/>
|
||||
<location filename="../src/widget/widget.cpp" line="587"/>
|
||||
<source>%1 is now %2</source>
|
||||
<comment>e.g. "Dubslow is now online"</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>%1 est maintenant %2</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/widget.cpp" line="752"/>
|
||||
<location filename="../src/widget/widget.cpp" line="780"/>
|
||||
<source><Unknown></source>
|
||||
<comment>Placeholder when we don't know someone's name in a group chat</comment>
|
||||
<translation><Inconnu></translation>
|
||||
|
Binary file not shown.
@ -17,47 +17,47 @@
|
||||
<translation>Form</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/avsettings.ui" line="38"/>
|
||||
<location filename="../src/widget/form/settings/avsettings.ui" line="75"/>
|
||||
<source>Video Settings</source>
|
||||
<translation>Impostazioni Video</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/avsettings.ui" line="49"/>
|
||||
<location filename="../src/widget/form/settings/avsettings.ui" line="86"/>
|
||||
<source>Resolution</source>
|
||||
<translation>Risoluzione</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/avsettings.ui" line="148"/>
|
||||
<location filename="../src/widget/form/settings/avsettings.ui" line="38"/>
|
||||
<source>Volume Settings (Stubs)</source>
|
||||
<translation>Impostazioni Volume (Stub)</translation>
|
||||
<translation>Impostazioni Audio (Stub)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/avsettings.ui" line="154"/>
|
||||
<location filename="../src/widget/form/settings/avsettings.ui" line="51"/>
|
||||
<source>Playback</source>
|
||||
<translation>Altoparlanti</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/avsettings.ui" line="168"/>
|
||||
<location filename="../src/widget/form/settings/avsettings.ui" line="44"/>
|
||||
<source>Microphone</source>
|
||||
<translation>Microfono</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/avsettings.ui" line="66"/>
|
||||
<location filename="../src/widget/form/settings/avsettings.ui" line="103"/>
|
||||
<source>Hue</source>
|
||||
<translation>Colore</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/avsettings.ui" line="80"/>
|
||||
<location filename="../src/widget/form/settings/avsettings.ui" line="117"/>
|
||||
<source>Brightness</source>
|
||||
<translation>Luminoistà</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/avsettings.ui" line="94"/>
|
||||
<location filename="../src/widget/form/settings/avsettings.ui" line="131"/>
|
||||
<source>Saturation</source>
|
||||
<translation>Saturazione</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/avsettings.ui" line="108"/>
|
||||
<location filename="../src/widget/form/settings/avsettings.ui" line="145"/>
|
||||
<source>Contrast</source>
|
||||
<translation>Contrasto</translation>
|
||||
</message>
|
||||
@ -153,12 +153,22 @@
|
||||
<context>
|
||||
<name>Core</name>
|
||||
<message>
|
||||
<location filename="../src/core.cpp" line="1100"/>
|
||||
<location filename="../src/core.cpp" line="231"/>
|
||||
<source>Toxing on qTox</source>
|
||||
<translation>Toxing on qTox</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/core.cpp" line="232"/>
|
||||
<source>qTox User</source>
|
||||
<translation>qTox User</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/core.cpp" line="1106"/>
|
||||
<source>Encrypted profile</source>
|
||||
<translation>Profilo criptato</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/core.cpp" line="1101"/>
|
||||
<location filename="../src/core.cpp" line="1107"/>
|
||||
<source>Your tox profile seems to be encrypted, qTox can't open it
|
||||
Do you want to erase this profile ?</source>
|
||||
<translation>Il tuo profilo Tox sembra essere criptato, qTox non può aprirlo\nVuoi eliminare questo profilo?</translation>
|
||||
@ -167,19 +177,19 @@ Do you want to erase this profile ?</source>
|
||||
<context>
|
||||
<name>FileTransferInstance</name>
|
||||
<message>
|
||||
<location filename="../src/filetransferinstance.cpp" line="233"/>
|
||||
<location filename="../src/filetransferinstance.cpp" line="234"/>
|
||||
<source>Save a file</source>
|
||||
<comment>Title of the file saving dialog</comment>
|
||||
<translation>Salva file</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/filetransferinstance.cpp" line="241"/>
|
||||
<location filename="../src/filetransferinstance.cpp" line="242"/>
|
||||
<source>Location not writable</source>
|
||||
<comment>Title of permissions popup</comment>
|
||||
<translation>Errore</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/filetransferinstance.cpp" line="241"/>
|
||||
<location filename="../src/filetransferinstance.cpp" line="242"/>
|
||||
<source>You do not have permission to write that location. Choose another, or cancel the save dialog.</source>
|
||||
<comment>text of permissions popup</comment>
|
||||
<translation>Non hai sufficienti permessi per scrivere in questa locazione. Scegli un'altra posizione, o annulla il salvataggio.</translation>
|
||||
@ -243,37 +253,50 @@ Do you want to erase this profile ?</source>
|
||||
<context>
|
||||
<name>FriendWidget</name>
|
||||
<message>
|
||||
<location filename="../src/widget/friendwidget.cpp" line="53"/>
|
||||
<location filename="../src/widget/friendwidget.cpp" line="55"/>
|
||||
<source>Copy friend ID</source>
|
||||
<comment>Menu to copy the Tox ID of that friend</comment>
|
||||
<translation>Copia Tox ID del contatto</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/friendwidget.cpp" line="54"/>
|
||||
<source>Invite in group</source>
|
||||
<comment>Menu to invite a friend in a groupchat</comment>
|
||||
<translation>Invita nel gruppo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/friendwidget.cpp" line="63"/>
|
||||
<location filename="../src/widget/friendwidget.cpp" line="65"/>
|
||||
<source>Auto accept files from this friend</source>
|
||||
<comment>context menu entry</comment>
|
||||
<translation>Accetta automaticamente i files inviati da questo contatto</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/friendwidget.cpp" line="64"/>
|
||||
<source>Diasble auto accepting files</source>
|
||||
<location filename="../src/widget/friendwidget.cpp" line="54"/>
|
||||
<source>Invite to group</source>
|
||||
<comment>Menu to invite a friend to a groupchat</comment>
|
||||
<translation>Invita nel gruppo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/friendwidget.cpp" line="66"/>
|
||||
<source>Manually accept files from this friend</source>
|
||||
<comment>context menu entry</comment>
|
||||
<translation>Non accettare automaticamente i files inviati da questo contatto</translation>
|
||||
<translation>Accetta manualmente i files inviati da questo contatto</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/friendwidget.cpp" line="67"/>
|
||||
<source>Auto accept files from all friends</source>
|
||||
<comment>context menu entry</comment>
|
||||
<translation>Accetta automaticamente i files inviati da tutti i contatti</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/friendwidget.cpp" line="68"/>
|
||||
<source>Disable global auto accept</source>
|
||||
<comment>context menu entry</comment>
|
||||
<translation>Accetta manualmente i files inviati da tutti i contatti</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/friendwidget.cpp" line="74"/>
|
||||
<source>Remove friend</source>
|
||||
<comment>Menu to remove the friend from our friendlist</comment>
|
||||
<translation>Rimuovi contatto</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/friendwidget.cpp" line="90"/>
|
||||
<location filename="../src/widget/friendwidget.cpp" line="96"/>
|
||||
<location filename="../src/widget/friendwidget.cpp" line="111"/>
|
||||
<source>Choose an auto accept directory</source>
|
||||
<comment>popup title</comment>
|
||||
<translation>Scegli dove salvare i files accettati automaticamente</translation>
|
||||
@ -311,33 +334,33 @@ Do you want to erase this profile ?</source>
|
||||
<translation>Lingua:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="94"/>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="108"/>
|
||||
<source>Auto away after (0 to disable):</source>
|
||||
<translation>Imposta assenza dopo:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="107"/>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="121"/>
|
||||
<source>Set to 0 to disable</source>
|
||||
<translation>Imposta 0 per disabilitare</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="139"/>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="153"/>
|
||||
<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="214"/>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="228"/>
|
||||
<source>Style:</source>
|
||||
<translation>Stile:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="236"/>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="250"/>
|
||||
<source>Connection Settings</source>
|
||||
<translation>Impostazioni Connessione</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="242"/>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="256"/>
|
||||
<source>Enable IPv6 (recommended)</source>
|
||||
<extracomment>Text on a checkbox to enable IPv6</extracomment>
|
||||
<translation>Abilita IPv6 (consigliato)</translation>
|
||||
@ -356,78 +379,88 @@ Do you want to erase this profile ?</source>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="72"/>
|
||||
<source>Start in tray</source>
|
||||
<translation>Avvia minimizzato</translation>
|
||||
<translation>Avvia minimizzato nella traybar</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="79"/>
|
||||
<source>Close to tray</source>
|
||||
<translation>Chiudi nella traybar</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="86"/>
|
||||
<source>Minimize to tray</source>
|
||||
<translation>Minimizza nella traybar</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="93"/>
|
||||
<source>Show contacts' status changes</source>
|
||||
<translation>Mostra quando i contatti cambiano stato</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="88"/>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="102"/>
|
||||
<source>Provided in minutes</source>
|
||||
<translation>Espresso in minuti</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="113"/>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="127"/>
|
||||
<source> minutes</source>
|
||||
<translation> minuti</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="131"/>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="145"/>
|
||||
<source>Theme</source>
|
||||
<translation>Impostazioni Tema</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="160"/>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="174"/>
|
||||
<source>:)</source>
|
||||
<translation>:)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="170"/>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="184"/>
|
||||
<source>;)</source>
|
||||
<translation>;)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="180"/>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="194"/>
|
||||
<source>:p</source>
|
||||
<translation>:p</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="190"/>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="204"/>
|
||||
<source>:O</source>
|
||||
<translation>:O</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="200"/>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="214"/>
|
||||
<source>:'(</source>
|
||||
<translation>:'(</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="259"/>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="273"/>
|
||||
<source>Use proxy (SOCKS5)</source>
|
||||
<translation>Usa proxy (SOCKS5)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="268"/>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="282"/>
|
||||
<source>Address</source>
|
||||
<extracomment>Text on proxy addr label</extracomment>
|
||||
<translation>IP</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="278"/>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="292"/>
|
||||
<source>Port</source>
|
||||
<extracomment>Text on proxy port label</extracomment>
|
||||
<translation>Porta</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="252"/>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="266"/>
|
||||
<source>Disable UDP (not recommended)</source>
|
||||
<extracomment>Text on checkbox to disable UDP</extracomment>
|
||||
<translation>Disabilita connessioni UDP (non raccomandato)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="249"/>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="263"/>
|
||||
<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>Questo permette di usare qTox con Tor; tuttavia aggiunge carico alla rete Tox, quindi usalo solo se necessario.</translation>
|
||||
@ -436,8 +469,8 @@ Do you want to erase this profile ?</source>
|
||||
<context>
|
||||
<name>GenericChatForm</name>
|
||||
<message>
|
||||
<location filename="../src/widget/form/genericchatform.cpp" line="150"/>
|
||||
<location filename="../src/widget/form/genericchatform.cpp" line="156"/>
|
||||
<location filename="../src/widget/form/genericchatform.cpp" line="151"/>
|
||||
<location filename="../src/widget/form/genericchatform.cpp" line="157"/>
|
||||
<source>Save chat log</source>
|
||||
<translation>Salva il log della chat</translation>
|
||||
</message>
|
||||
@ -445,13 +478,13 @@ Do you want to erase this profile ?</source>
|
||||
<context>
|
||||
<name>GroupChatForm</name>
|
||||
<message>
|
||||
<location filename="../src/widget/form/groupchatform.cpp" line="45"/>
|
||||
<location filename="../src/widget/form/groupchatform.cpp" line="48"/>
|
||||
<source>%1 users in chat</source>
|
||||
<comment>Number of users in chat</comment>
|
||||
<translation>%1 utenti in chat</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/groupchatform.cpp" line="77"/>
|
||||
<location filename="../src/widget/form/groupchatform.cpp" line="82"/>
|
||||
<source>%1 users in chat</source>
|
||||
<translation>%1 utenti in chat</translation>
|
||||
</message>
|
||||
@ -485,83 +518,107 @@ Do you want to erase this profile ?</source>
|
||||
<translation>Identità</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="111"/>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="112"/>
|
||||
<source>Call active</source>
|
||||
<comment>popup title</comment>
|
||||
<translation>Chiamata in corso</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="112"/>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="113"/>
|
||||
<source>You can't switch profiles while a call is active!</source>
|
||||
<comment>popup text</comment>
|
||||
<translation>Non puoi cambiare profilo durante una chiamata!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="122"/>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="123"/>
|
||||
<source>Rename "%1"</source>
|
||||
<comment>renaming a profile</comment>
|
||||
<translation>Rinomina "%1"</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="137"/>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="131"/>
|
||||
<source>Profile already exists</source>
|
||||
<comment>rename confirm title</comment>
|
||||
<translation>Profilo già esistente</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="132"/>
|
||||
<source>A profile named "%1" already exists. Do you want to erase it?</source>
|
||||
<comment>rename confirm text</comment>
|
||||
<translation>Un profilo chiamato "%1" esiste già. Vuoi sovrascriverlo?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="145"/>
|
||||
<source>Export profile</source>
|
||||
<comment>save dialog title</comment>
|
||||
<translation>Esporta profilo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="139"/>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="147"/>
|
||||
<source>Tox save file (*.tox)</source>
|
||||
<comment>save dialog filter</comment>
|
||||
<translation>Tox save file (*.tox)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="148"/>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="156"/>
|
||||
<source>Profile currently loaded</source>
|
||||
<comment>current profile deletion warning title</comment>
|
||||
<translation>Profilo attualmente in uso</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="148"/>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="156"/>
|
||||
<source>This profile is currently in use. Please load a different profile before deleting this one.</source>
|
||||
<comment>current profile deletion warning text</comment>
|
||||
<translation>Questo profilo è attualmente in uso. Per favore carica un profilo differente prima di eliminare questo.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="153"/>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="160"/>
|
||||
<source>Deletion imminent!</source>
|
||||
<comment>deletion confirmation title</comment>
|
||||
<translation>Eliminazione imminente!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="153"/>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="161"/>
|
||||
<source>Are you sure you want to delete this profile?</source>
|
||||
<comment>deletion confirmation text</comment>
|
||||
<translation>Sei sicuro di voler eliminare questo profilo?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="165"/>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="172"/>
|
||||
<source>Import profile</source>
|
||||
<comment>import dialog title</comment>
|
||||
<translation>Importa profilo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="165"/>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="172"/>
|
||||
<source>Tox save file (*.tox)</source>
|
||||
<comment>import dialog filter</comment>
|
||||
<translation>Tox save file (*.tox)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="173"/>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="181"/>
|
||||
<source>Ignoring non-Tox file</source>
|
||||
<comment>popup title</comment>
|
||||
<translation>File ignorato</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="173"/>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="181"/>
|
||||
<source>Warning: you've chosen a file that is not a Tox save file; ignoring.</source>
|
||||
<comment>popup text</comment>
|
||||
<translation>Attenzione: hai scelto un file che non contiente un profilo Tox.\nQuesto file verrà ignorato.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="185"/>
|
||||
<source>Profile already exists</source>
|
||||
<comment>import confirm title</comment>
|
||||
<translation>Profilo già esistente</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="186"/>
|
||||
<source>A profile named "%1" already exists. Do you want to erase it?</source>
|
||||
<comment>import confirm text</comment>
|
||||
<translation>Un profilo chiamato "%1" esiste già. Vuoi sovrascriverlo?</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>IdentitySettings</name>
|
||||
@ -636,10 +693,16 @@ Do you want to erase this profile ?</source>
|
||||
<translation>Utile per preservare la tua sicurezza su computer pubblici</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/identitysettings.ui" line="127"/>
|
||||
<location filename="../src/widget/form/settings/identitysettings.ui" line="129"/>
|
||||
<source>Import a profile</source>
|
||||
<comment>import profile button</comment>
|
||||
<translation>Importa un profilo</translation>
|
||||
<translation>Importa profilo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/identitysettings.ui" line="136"/>
|
||||
<source>New Tox ID</source>
|
||||
<comment>new profile button</comment>
|
||||
<translation>Nuovo profilo</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@ -701,103 +764,128 @@ Do you want to erase this profile ?</source>
|
||||
<context>
|
||||
<name>Widget</name>
|
||||
<message>
|
||||
<location filename="../src/widget/widget.cpp" line="109"/>
|
||||
<location filename="../src/widget/widget.cpp" line="75"/>
|
||||
<source>online</source>
|
||||
<translation>online</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/widget.cpp" line="78"/>
|
||||
<source>away</source>
|
||||
<translation>assente</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/widget.cpp" line="81"/>
|
||||
<source>busy</source>
|
||||
<translation>occupato</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/widget.cpp" line="84"/>
|
||||
<source>&Quit</source>
|
||||
<translation>&Esci</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/widget.cpp" line="87"/>
|
||||
<source>Change status to:</source>
|
||||
<translation>Cambia stato in:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/widget.cpp" line="154"/>
|
||||
<source>Online</source>
|
||||
<comment>Button to set your status to 'Online'</comment>
|
||||
<translation>Online</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/widget.cpp" line="111"/>
|
||||
<location filename="../src/widget/widget.cpp" line="156"/>
|
||||
<source>Away</source>
|
||||
<comment>Button to set your status to 'Away'</comment>
|
||||
<translation>Assente</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/widget.cpp" line="113"/>
|
||||
<location filename="../src/widget/widget.cpp" line="158"/>
|
||||
<source>Busy</source>
|
||||
<comment>Button to set your status to 'Busy'</comment>
|
||||
<translation>Occupato</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/widget.cpp" line="311"/>
|
||||
<location filename="../src/widget/widget.cpp" line="382"/>
|
||||
<source>Choose a profile</source>
|
||||
<translation>Scegli un profilo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/widget.cpp" line="312"/>
|
||||
<location filename="../src/widget/widget.cpp" line="383"/>
|
||||
<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="338"/>
|
||||
<location filename="../src/widget/widget.cpp" line="409"/>
|
||||
<source>Choose a profile picture</source>
|
||||
<translation>Scegli un'immagine per il profilo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/widget.cpp" line="345"/>
|
||||
<location filename="../src/widget/widget.cpp" line="352"/>
|
||||
<location filename="../src/widget/widget.cpp" line="373"/>
|
||||
<location filename="../src/widget/widget.cpp" line="416"/>
|
||||
<location filename="../src/widget/widget.cpp" line="423"/>
|
||||
<location filename="../src/widget/widget.cpp" line="444"/>
|
||||
<source>Error</source>
|
||||
<translation>Errore</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/widget.cpp" line="345"/>
|
||||
<location filename="../src/widget/widget.cpp" line="416"/>
|
||||
<source>Unable to open this file</source>
|
||||
<translation>Impossibile aprire il file</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/widget.cpp" line="352"/>
|
||||
<location filename="../src/widget/widget.cpp" line="423"/>
|
||||
<source>Unable to read this image</source>
|
||||
<translation>Impossibile leggere l'immagine</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/widget.cpp" line="373"/>
|
||||
<location filename="../src/widget/widget.cpp" line="444"/>
|
||||
<source>This image is too big</source>
|
||||
<translation>L'immagine è troppo grande</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/widget.cpp" line="400"/>
|
||||
<location filename="../src/widget/widget.cpp" line="471"/>
|
||||
<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="409"/>
|
||||
<location filename="../src/widget/widget.cpp" line="480"/>
|
||||
<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="580"/>
|
||||
<location filename="../src/widget/widget.cpp" line="660"/>
|
||||
<source>away</source>
|
||||
<comment>contact status</comment>
|
||||
<translation>assente</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/widget.cpp" line="582"/>
|
||||
<location filename="../src/widget/widget.cpp" line="662"/>
|
||||
<source>busy</source>
|
||||
<comment>contact status</comment>
|
||||
<translation>occupato</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/widget.cpp" line="584"/>
|
||||
<location filename="../src/widget/widget.cpp" line="664"/>
|
||||
<source>offline</source>
|
||||
<comment>contact status</comment>
|
||||
<translation>offline</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/widget.cpp" line="586"/>
|
||||
<location filename="../src/widget/widget.cpp" line="666"/>
|
||||
<source>online</source>
|
||||
<comment>contact status</comment>
|
||||
<translation>online</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/widget.cpp" line="588"/>
|
||||
<location filename="../src/widget/widget.cpp" line="668"/>
|
||||
<source>%1 is now %2</source>
|
||||
<comment>e.g. "Dubslow is now online"</comment>
|
||||
<translation>%1 è ora %2</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/widget.cpp" line="781"/>
|
||||
<location filename="../src/widget/widget.cpp" line="866"/>
|
||||
<source><Unknown></source>
|
||||
<comment>Placeholder when we don't know someone's name in a group chat</comment>
|
||||
<translation><Sconosciuto></translation>
|
||||
|
Binary file not shown.
@ -48,27 +48,27 @@
|
||||
<translation>Ustawienia</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/avsettings.ui" line="38"/>
|
||||
<location filename="../src/widget/form/settings/avsettings.ui" line="75"/>
|
||||
<source>Video Settings</source>
|
||||
<translation>Ustawienia wideo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/avsettings.ui" line="49"/>
|
||||
<location filename="../src/widget/form/settings/avsettings.ui" line="86"/>
|
||||
<source>Resolution</source>
|
||||
<translation>Rozdzielczość</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/avsettings.ui" line="148"/>
|
||||
<location filename="../src/widget/form/settings/avsettings.ui" line="38"/>
|
||||
<source>Volume Settings (Stubs)</source>
|
||||
<translation>Ustawienia dźwięku</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/avsettings.ui" line="154"/>
|
||||
<location filename="../src/widget/form/settings/avsettings.ui" line="51"/>
|
||||
<source>Playback</source>
|
||||
<translation>Odtwarzanie</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/avsettings.ui" line="168"/>
|
||||
<location filename="../src/widget/form/settings/avsettings.ui" line="44"/>
|
||||
<source>Microphone</source>
|
||||
<translation>Mikrofon</translation>
|
||||
</message>
|
||||
@ -81,22 +81,22 @@
|
||||
<translation type="obsolete">Tryby</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/avsettings.ui" line="66"/>
|
||||
<location filename="../src/widget/form/settings/avsettings.ui" line="103"/>
|
||||
<source>Hue</source>
|
||||
<translation>Odcień</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/avsettings.ui" line="80"/>
|
||||
<location filename="../src/widget/form/settings/avsettings.ui" line="117"/>
|
||||
<source>Brightness</source>
|
||||
<translation>Jasność</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/avsettings.ui" line="94"/>
|
||||
<location filename="../src/widget/form/settings/avsettings.ui" line="131"/>
|
||||
<source>Saturation</source>
|
||||
<translation>Nasycenie</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/avsettings.ui" line="108"/>
|
||||
<location filename="../src/widget/form/settings/avsettings.ui" line="145"/>
|
||||
<source>Contrast</source>
|
||||
<translation>Kontrast</translation>
|
||||
</message>
|
||||
@ -200,12 +200,23 @@
|
||||
<context>
|
||||
<name>Core</name>
|
||||
<message>
|
||||
<location filename="../src/core.cpp" line="1100"/>
|
||||
<location filename="../src/core.cpp" line="231"/>
|
||||
<source>Toxing on qTox</source>
|
||||
<translatorcomment>better translation?</translatorcomment>
|
||||
<translation>Toxuję na qTox</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/core.cpp" line="232"/>
|
||||
<source>qTox User</source>
|
||||
<translation>Użytkownik qToxa</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/core.cpp" line="1106"/>
|
||||
<source>Encrypted profile</source>
|
||||
<translation>Zaszyfrowany profil</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/core.cpp" line="1101"/>
|
||||
<location filename="../src/core.cpp" line="1107"/>
|
||||
<source>Your tox profile seems to be encrypted, qTox can't open it
|
||||
Do you want to erase this profile ?</source>
|
||||
<translation>Twój profil zdaje się być zaszyfrowany, qTox nie jest w stanie go otworzyć
|
||||
@ -215,19 +226,19 @@ Czy chcesz usunąć ten profil ?</translation>
|
||||
<context>
|
||||
<name>FileTransferInstance</name>
|
||||
<message>
|
||||
<location filename="../src/filetransferinstance.cpp" line="233"/>
|
||||
<location filename="../src/filetransferinstance.cpp" line="234"/>
|
||||
<source>Save a file</source>
|
||||
<comment>Title of the file saving dialog</comment>
|
||||
<translation>Zapisz plik</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/filetransferinstance.cpp" line="241"/>
|
||||
<location filename="../src/filetransferinstance.cpp" line="242"/>
|
||||
<source>Location not writable</source>
|
||||
<comment>Title of permissions popup</comment>
|
||||
<translation>Nie można zapisać w lokacji</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/filetransferinstance.cpp" line="241"/>
|
||||
<location filename="../src/filetransferinstance.cpp" line="242"/>
|
||||
<source>You do not have permission to write that location. Choose another, or cancel the save dialog.</source>
|
||||
<comment>text of permissions popup</comment>
|
||||
<translation>Nie masz uprawnienia by zapisać w tej lokacji. Wybierz inną lub anuluj zapis.</translation>
|
||||
@ -291,37 +302,61 @@ Czy chcesz usunąć ten profil ?</translation>
|
||||
<context>
|
||||
<name>FriendWidget</name>
|
||||
<message>
|
||||
<location filename="../src/widget/friendwidget.cpp" line="53"/>
|
||||
<location filename="../src/widget/friendwidget.cpp" line="55"/>
|
||||
<source>Copy friend ID</source>
|
||||
<comment>Menu to copy the Tox ID of that friend</comment>
|
||||
<translation>Kopiuj ID kontaktu</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/friendwidget.cpp" line="54"/>
|
||||
<source>Invite in group</source>
|
||||
<comment>Menu to invite a friend in a groupchat</comment>
|
||||
<translation>Zaproś do grupy</translation>
|
||||
<translation type="obsolete">Zaproś do grupy</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/friendwidget.cpp" line="63"/>
|
||||
<location filename="../src/widget/friendwidget.cpp" line="65"/>
|
||||
<source>Auto accept files from this friend</source>
|
||||
<comment>context menu entry</comment>
|
||||
<translation>Odbieraj pliki automatycznie</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/friendwidget.cpp" line="64"/>
|
||||
<source>Diasble auto accepting files</source>
|
||||
<comment>context menu entry</comment>
|
||||
<translation>Nie odbieraj plików automatycznie</translation>
|
||||
<translation type="obsolete">Nie odbieraj plików automatycznie</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/friendwidget.cpp" line="54"/>
|
||||
<source>Invite to group</source>
|
||||
<comment>Menu to invite a friend to a groupchat</comment>
|
||||
<translation>Zaproś do grupy</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/friendwidget.cpp" line="66"/>
|
||||
<source>Manually accept files from this friend</source>
|
||||
<comment>context menu entry</comment>
|
||||
<translation>Ręcznie akceptuj pliki od tego znajomego</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/friendwidget.cpp" line="67"/>
|
||||
<source>Auto accept files from all friends</source>
|
||||
<comment>context menu entry</comment>
|
||||
<translation>Automatycznie akceptuj pliki od wszystkich znajomych</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/friendwidget.cpp" line="68"/>
|
||||
<source>Disable global auto accept</source>
|
||||
<comment>context menu entry</comment>
|
||||
<translatorcomment>better translation?</translatorcomment>
|
||||
<translation>Wyłącz globalnie automatyczną akceptację</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/friendwidget.cpp" line="74"/>
|
||||
<source>Remove friend</source>
|
||||
<comment>Menu to remove the friend from our friendlist</comment>
|
||||
<translation>Usuń kontakt</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/friendwidget.cpp" line="90"/>
|
||||
<location filename="../src/widget/friendwidget.cpp" line="96"/>
|
||||
<location filename="../src/widget/friendwidget.cpp" line="111"/>
|
||||
<source>Choose an auto accept directory</source>
|
||||
<comment>popup title</comment>
|
||||
<translation>Wybierz domyślną ścieżkę dla plików</translation>
|
||||
@ -390,7 +425,7 @@ Czy chcesz usunąć ten profil ?</translation>
|
||||
<message>
|
||||
<source>Use translations</source>
|
||||
<extracomment>Text on a checkbox to enable translations</extracomment>
|
||||
<translation type="vanished">Użyj tłumaczenia</translation>
|
||||
<translation type="obsolete">Użyj tłumaczenia</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="37"/>
|
||||
@ -422,33 +457,43 @@ Czy chcesz usunąć ten profil ?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="79"/>
|
||||
<source>Close to tray</source>
|
||||
<translation>Zamknij do traya</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="86"/>
|
||||
<source>Minimize to tray</source>
|
||||
<translation>Minimalizuj do traya</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="93"/>
|
||||
<source>Show contacts' status changes</source>
|
||||
<translation>Pokazuj zmiany statusów</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="88"/>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="102"/>
|
||||
<source>Provided in minutes</source>
|
||||
<translation>Podane w minutach</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="94"/>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="108"/>
|
||||
<source>Auto away after (0 to disable):</source>
|
||||
<translation>Zmiana statusu na "Nieobecny" (0 by wyłączyć):</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="107"/>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="121"/>
|
||||
<source>Set to 0 to disable</source>
|
||||
<translation>Ustaw na 0 by wyłączyć</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="139"/>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="153"/>
|
||||
<source>Smiley Pack:</source>
|
||||
<extracomment>Text on smiley pack label</extracomment>
|
||||
<translatorcomment>better translation? anyone?</translatorcomment>
|
||||
<translation>Paczka uśmiechów:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="214"/>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="228"/>
|
||||
<source>Style:</source>
|
||||
<translation>Styl:</translation>
|
||||
</message>
|
||||
@ -457,12 +502,12 @@ Czy chcesz usunąć ten profil ?</translation>
|
||||
<translation type="obsolete">Automatyczna zmiana statusu na "Nieobecny" po:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="113"/>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="127"/>
|
||||
<source> minutes</source>
|
||||
<translation> min</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="131"/>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="145"/>
|
||||
<source>Theme</source>
|
||||
<translation>Motyw</translation>
|
||||
</message>
|
||||
@ -473,27 +518,27 @@ Czy chcesz usunąć ten profil ?</translation>
|
||||
<translation type="obsolete">Paczka uśmiechów</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="160"/>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="174"/>
|
||||
<source>:)</source>
|
||||
<translation>:)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="170"/>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="184"/>
|
||||
<source>;)</source>
|
||||
<translation>;)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="180"/>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="194"/>
|
||||
<source>:p</source>
|
||||
<translation>:p</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="190"/>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="204"/>
|
||||
<source>:O</source>
|
||||
<translation>:O</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="200"/>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="214"/>
|
||||
<source>:'(</source>
|
||||
<translation>:'(</translation>
|
||||
</message>
|
||||
@ -502,41 +547,41 @@ Czy chcesz usunąć ten profil ?</translation>
|
||||
<translation type="obsolete">Styl</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="236"/>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="250"/>
|
||||
<source>Connection Settings</source>
|
||||
<translation>Ustawienia połączenia</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="242"/>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="256"/>
|
||||
<source>Enable IPv6 (recommended)</source>
|
||||
<extracomment>Text on a checkbox to enable IPv6</extracomment>
|
||||
<translation>Użyj IPv6 (zalecane)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="249"/>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="263"/>
|
||||
<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>To pozwala np. na toxowanie przez Tora. Niestety obciąża to sieć Tox, więc używaj tylko w razie potrzeby.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="252"/>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="266"/>
|
||||
<source>Disable UDP (not recommended)</source>
|
||||
<extracomment>Text on checkbox to disable UDP</extracomment>
|
||||
<translation>Wyłącz UDP (nie zalecane)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="259"/>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="273"/>
|
||||
<source>Use proxy (SOCKS5)</source>
|
||||
<translation>Użyj proxy (SOCKS5)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="268"/>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="282"/>
|
||||
<source>Address</source>
|
||||
<extracomment>Text on proxy addr label</extracomment>
|
||||
<translation>Adres</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="278"/>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="292"/>
|
||||
<source>Port</source>
|
||||
<extracomment>Text on proxy port label</extracomment>
|
||||
<translation>Port</translation>
|
||||
@ -545,8 +590,8 @@ Czy chcesz usunąć ten profil ?</translation>
|
||||
<context>
|
||||
<name>GenericChatForm</name>
|
||||
<message>
|
||||
<location filename="../src/widget/form/genericchatform.cpp" line="150"/>
|
||||
<location filename="../src/widget/form/genericchatform.cpp" line="156"/>
|
||||
<location filename="../src/widget/form/genericchatform.cpp" line="151"/>
|
||||
<location filename="../src/widget/form/genericchatform.cpp" line="157"/>
|
||||
<source>Save chat log</source>
|
||||
<translation>Zapisz historię rozmowy</translation>
|
||||
</message>
|
||||
@ -554,7 +599,7 @@ Czy chcesz usunąć ten profil ?</translation>
|
||||
<context>
|
||||
<name>GroupChatForm</name>
|
||||
<message>
|
||||
<location filename="../src/widget/form/groupchatform.cpp" line="45"/>
|
||||
<location filename="../src/widget/form/groupchatform.cpp" line="48"/>
|
||||
<source>%1 users in chat</source>
|
||||
<comment>Number of users in chat</comment>
|
||||
<translation>%1 użytkowników w czacie</translation>
|
||||
@ -564,7 +609,7 @@ Czy chcesz usunąć ten profil ?</translation>
|
||||
<translation type="obsolete"><Nieznany/a></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/groupchatform.cpp" line="77"/>
|
||||
<location filename="../src/widget/form/groupchatform.cpp" line="82"/>
|
||||
<source>%1 users in chat</source>
|
||||
<translation>%1 użytkowników w czacie</translation>
|
||||
</message>
|
||||
@ -602,83 +647,107 @@ Czy chcesz usunąć ten profil ?</translation>
|
||||
<translation>Tożsamość</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="111"/>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="112"/>
|
||||
<source>Call active</source>
|
||||
<comment>popup title</comment>
|
||||
<translation>Rozmowa w trakcie</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="112"/>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="113"/>
|
||||
<source>You can't switch profiles while a call is active!</source>
|
||||
<comment>popup text</comment>
|
||||
<translation>Nie można zmienić profilu podczas aktywnego połączenia!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="122"/>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="123"/>
|
||||
<source>Rename "%1"</source>
|
||||
<comment>renaming a profile</comment>
|
||||
<translation>Zmień nazwę "%1"</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="137"/>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="131"/>
|
||||
<source>Profile already exists</source>
|
||||
<comment>rename confirm title</comment>
|
||||
<translation>Profil już istnieje</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="132"/>
|
||||
<source>A profile named "%1" already exists. Do you want to erase it?</source>
|
||||
<comment>rename confirm text</comment>
|
||||
<translation>Profil pod nazwą "%1" już istnieje. Czy chcesz go usunąć?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="145"/>
|
||||
<source>Export profile</source>
|
||||
<comment>save dialog title</comment>
|
||||
<translation>Eksportuj profil</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="139"/>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="147"/>
|
||||
<source>Tox save file (*.tox)</source>
|
||||
<comment>save dialog filter</comment>
|
||||
<translation>Plik zapisu Tox (*.tox)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="148"/>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="156"/>
|
||||
<source>Profile currently loaded</source>
|
||||
<comment>current profile deletion warning title</comment>
|
||||
<translation>Profil obecnie załadowany</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="148"/>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="156"/>
|
||||
<source>This profile is currently in use. Please load a different profile before deleting this one.</source>
|
||||
<comment>current profile deletion warning text</comment>
|
||||
<translation>Ten profil jest obecnie w użyciu. Proszę załaduj inny profil przed usunięciem tego.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="153"/>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="160"/>
|
||||
<source>Deletion imminent!</source>
|
||||
<comment>deletion confirmation title</comment>
|
||||
<translation>Usuwanie profilu!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="153"/>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="161"/>
|
||||
<source>Are you sure you want to delete this profile?</source>
|
||||
<comment>deletion confirmation text</comment>
|
||||
<translation>Czy na pewno chcesz usunąć ten profil?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="165"/>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="172"/>
|
||||
<source>Import profile</source>
|
||||
<comment>import dialog title</comment>
|
||||
<translation>Importuj profil</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="165"/>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="172"/>
|
||||
<source>Tox save file (*.tox)</source>
|
||||
<comment>import dialog filter</comment>
|
||||
<translation>Plik zapisu Tox (*.tox)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="173"/>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="181"/>
|
||||
<source>Ignoring non-Tox file</source>
|
||||
<comment>popup title</comment>
|
||||
<translation>Zignorowano niepoprawny plik profilu</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="173"/>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="181"/>
|
||||
<source>Warning: you've chosen a file that is not a Tox save file; ignoring.</source>
|
||||
<comment>popup text</comment>
|
||||
<translation>Ostrzeżenie: Wybrano plik który nie jest plikiem zapisu Tox; zignorowano.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="185"/>
|
||||
<source>Profile already exists</source>
|
||||
<comment>import confirm title</comment>
|
||||
<translation>Profil już istnieje</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="186"/>
|
||||
<source>A profile named "%1" already exists. Do you want to erase it?</source>
|
||||
<comment>import confirm text</comment>
|
||||
<translation>Profil pod nazwą "%1" już istnieje. Czy chcesz go usunąć?</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>IdentityPage</name>
|
||||
@ -778,11 +847,17 @@ Czy chcesz usunąć ten profil ?</translation>
|
||||
<translation>Użyteczne by pozostać bezpiecznym na publicznych komputerach</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/identitysettings.ui" line="127"/>
|
||||
<location filename="../src/widget/form/settings/identitysettings.ui" line="129"/>
|
||||
<source>Import a profile</source>
|
||||
<comment>import profile button</comment>
|
||||
<translation>Importuj profil</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/identitysettings.ui" line="136"/>
|
||||
<source>New Tox ID</source>
|
||||
<comment>new profile button</comment>
|
||||
<translation>Nowy Tox ID</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>MainWindow</name>
|
||||
@ -891,103 +966,128 @@ Czy chcesz usunąć ten profil ?</translation>
|
||||
<context>
|
||||
<name>Widget</name>
|
||||
<message>
|
||||
<location filename="../src/widget/widget.cpp" line="109"/>
|
||||
<location filename="../src/widget/widget.cpp" line="75"/>
|
||||
<source>online</source>
|
||||
<translation>online</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/widget.cpp" line="78"/>
|
||||
<source>away</source>
|
||||
<translation>nieobecna/y</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/widget.cpp" line="81"/>
|
||||
<source>busy</source>
|
||||
<translation>zajęta/y</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/widget.cpp" line="84"/>
|
||||
<source>&Quit</source>
|
||||
<translation>&Wyjdź</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/widget.cpp" line="87"/>
|
||||
<source>Change status to:</source>
|
||||
<translation>Zmień status na:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/widget.cpp" line="154"/>
|
||||
<source>Online</source>
|
||||
<comment>Button to set your status to 'Online'</comment>
|
||||
<translation>Online</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/widget.cpp" line="111"/>
|
||||
<location filename="../src/widget/widget.cpp" line="156"/>
|
||||
<source>Away</source>
|
||||
<comment>Button to set your status to 'Away'</comment>
|
||||
<translation>Nieobecny/a</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/widget.cpp" line="113"/>
|
||||
<location filename="../src/widget/widget.cpp" line="158"/>
|
||||
<source>Busy</source>
|
||||
<comment>Button to set your status to 'Busy'</comment>
|
||||
<translation>Zajęty/a</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/widget.cpp" line="290"/>
|
||||
<location filename="../src/widget/widget.cpp" line="382"/>
|
||||
<source>Choose a profile</source>
|
||||
<translation>Wybierz profil</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/widget.cpp" line="291"/>
|
||||
<location filename="../src/widget/widget.cpp" line="383"/>
|
||||
<source>Please choose which identity to use</source>
|
||||
<translation>Proszę wybierz która tożsamość ma być użyta</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/widget.cpp" line="317"/>
|
||||
<location filename="../src/widget/widget.cpp" line="409"/>
|
||||
<source>Choose a profile picture</source>
|
||||
<translation>Wybierz obrazek profilu</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/widget.cpp" line="324"/>
|
||||
<location filename="../src/widget/widget.cpp" line="331"/>
|
||||
<location filename="../src/widget/widget.cpp" line="352"/>
|
||||
<location filename="../src/widget/widget.cpp" line="416"/>
|
||||
<location filename="../src/widget/widget.cpp" line="423"/>
|
||||
<location filename="../src/widget/widget.cpp" line="444"/>
|
||||
<source>Error</source>
|
||||
<translation>Błąd</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/widget.cpp" line="324"/>
|
||||
<location filename="../src/widget/widget.cpp" line="416"/>
|
||||
<source>Unable to open this file</source>
|
||||
<translation>Nie można otworzyć tego pliku</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/widget.cpp" line="331"/>
|
||||
<location filename="../src/widget/widget.cpp" line="423"/>
|
||||
<source>Unable to read this image</source>
|
||||
<translation>Nie można odczytać tego obrazka</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/widget.cpp" line="352"/>
|
||||
<location filename="../src/widget/widget.cpp" line="444"/>
|
||||
<source>This image is too big</source>
|
||||
<translation>Ten obrazek jest zbyt wielki</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/widget.cpp" line="379"/>
|
||||
<location filename="../src/widget/widget.cpp" line="471"/>
|
||||
<source>Toxcore failed to start, the application will terminate after you close this message.</source>
|
||||
<translation>Nie udało się uruchomić Toxcore, aplikacja zamknie się po zamknięciu tej wiadomości.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/widget.cpp" line="388"/>
|
||||
<location filename="../src/widget/widget.cpp" line="480"/>
|
||||
<source>toxcore failed to start with your proxy settings. qTox cannot run; please modify your settings and restart.</source>
|
||||
<comment>popup text</comment>
|
||||
<translation>Nie udało się uruchomić toxcore z twoimi ustawieniami proxy. qTox nie może działać, proszę zmodyfikuj ustawienia i zrestartuj.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/widget.cpp" line="559"/>
|
||||
<location filename="../src/widget/widget.cpp" line="660"/>
|
||||
<source>away</source>
|
||||
<comment>contact status</comment>
|
||||
<translation>nieobecna/y</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/widget.cpp" line="561"/>
|
||||
<location filename="../src/widget/widget.cpp" line="662"/>
|
||||
<source>busy</source>
|
||||
<comment>contact status</comment>
|
||||
<translation>zajęta/y</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/widget.cpp" line="563"/>
|
||||
<location filename="../src/widget/widget.cpp" line="664"/>
|
||||
<source>offline</source>
|
||||
<comment>contact status</comment>
|
||||
<translation>offline</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/widget.cpp" line="565"/>
|
||||
<location filename="../src/widget/widget.cpp" line="666"/>
|
||||
<source>online</source>
|
||||
<comment>contact status</comment>
|
||||
<translation>online</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/widget.cpp" line="567"/>
|
||||
<location filename="../src/widget/widget.cpp" line="668"/>
|
||||
<source>%1 is now %2</source>
|
||||
<comment>e.g. "Dubslow is now online"</comment>
|
||||
<translation>%1 jest teraz %2</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/widget.cpp" line="760"/>
|
||||
<location filename="../src/widget/widget.cpp" line="866"/>
|
||||
<source><Unknown></source>
|
||||
<comment>Placeholder when we don't know someone's name in a group chat</comment>
|
||||
<translation><Nieznany/a></translation>
|
||||
|
Binary file not shown.
@ -5,18 +5,8 @@
|
||||
<name>AVForm</name>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/avform.cpp" line="22"/>
|
||||
<source>Audio/Video settings</source>
|
||||
<translation>Настройки аудио/видео</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Hide video preview</source>
|
||||
<comment>On a button</comment>
|
||||
<translation type="vanished">Спрятать видео-превью</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Show video preview</source>
|
||||
<comment>On a button</comment>
|
||||
<translation type="vanished">Посмотреть видео-превью</translation>
|
||||
<source>Audio/Video</source>
|
||||
<translation>Аудио/Видео</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@ -27,58 +17,49 @@
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/avsettings.ui" line="20"/>
|
||||
<source>Volume Settings (Stubs)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/avsettings.ui" line="26"/>
|
||||
<source>Playback</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/avsettings.ui" line="40"/>
|
||||
<source>Microphone</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/avsettings.ui" line="57"/>
|
||||
<source>Video settings</source>
|
||||
<location filename="../src/widget/form/settings/avsettings.ui" line="75"/>
|
||||
<source>Video Settings</source>
|
||||
<translation>Настройки видео</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/avsettings.ui" line="66"/>
|
||||
<source>Modes</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<location filename="../src/widget/form/settings/avsettings.ui" line="86"/>
|
||||
<source>Resolution</source>
|
||||
<translation>Разрешение</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/avsettings.ui" line="83"/>
|
||||
<location filename="../src/widget/form/settings/avsettings.ui" line="38"/>
|
||||
<source>Volume Settings (Stubs)</source>
|
||||
<translation>Настройки звука (заглушка)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/avsettings.ui" line="51"/>
|
||||
<source>Playback</source>
|
||||
<translation>Воспроизведение</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/avsettings.ui" line="44"/>
|
||||
<source>Microphone</source>
|
||||
<translation>Микрофон</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/avsettings.ui" line="103"/>
|
||||
<source>Hue</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Тон</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/avsettings.ui" line="97"/>
|
||||
<location filename="../src/widget/form/settings/avsettings.ui" line="117"/>
|
||||
<source>Brightness</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Яркость</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/avsettings.ui" line="111"/>
|
||||
<location filename="../src/widget/form/settings/avsettings.ui" line="131"/>
|
||||
<source>Saturation</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Насыщенность</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/avsettings.ui" line="125"/>
|
||||
<location filename="../src/widget/form/settings/avsettings.ui" line="145"/>
|
||||
<source>Contrast</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/avsettings.ui" line="139"/>
|
||||
<source>Preview</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Show video preview</source>
|
||||
<translation type="vanished">Посмотреть видео-превью</translation>
|
||||
<translation>Контраст</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@ -166,7 +147,7 @@
|
||||
<context>
|
||||
<name>ChatForm</name>
|
||||
<message>
|
||||
<location filename="../src/widget/form/chatform.cpp" line="105"/>
|
||||
<location filename="../src/widget/form/chatform.cpp" line="106"/>
|
||||
<source>Send a file</source>
|
||||
<translation>Отправить файл</translation>
|
||||
</message>
|
||||
@ -174,12 +155,23 @@
|
||||
<context>
|
||||
<name>Core</name>
|
||||
<message>
|
||||
<location filename="../src/core.cpp" line="1104"/>
|
||||
<location filename="../src/core.cpp" line="231"/>
|
||||
<source>Toxing on qTox</source>
|
||||
<translatorcomment>Как-то так. Может, можно ещё что-нибудь придумать?</translatorcomment>
|
||||
<translation type="unfinished">Всем привет из qTox'а</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/core.cpp" line="232"/>
|
||||
<source>qTox User</source>
|
||||
<translation>Пользователь qTox</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/core.cpp" line="1106"/>
|
||||
<source>Encrypted profile</source>
|
||||
<translation>Зашифрованный профиль</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/core.cpp" line="1105"/>
|
||||
<location filename="../src/core.cpp" line="1107"/>
|
||||
<source>Your tox profile seems to be encrypted, qTox can't open it
|
||||
Do you want to erase this profile ?</source>
|
||||
<translation>Похоже, ваш tox-профиль зашифрован, qTox не может открыть его
|
||||
@ -189,19 +181,19 @@ Do you want to erase this profile ?</source>
|
||||
<context>
|
||||
<name>FileTransferInstance</name>
|
||||
<message>
|
||||
<location filename="../src/filetransferinstance.cpp" line="209"/>
|
||||
<location filename="../src/filetransferinstance.cpp" line="234"/>
|
||||
<source>Save a file</source>
|
||||
<comment>Title of the file saving dialog</comment>
|
||||
<translation>Сохранить файл</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/filetransferinstance.cpp" line="220"/>
|
||||
<location filename="../src/filetransferinstance.cpp" line="242"/>
|
||||
<source>Location not writable</source>
|
||||
<comment>Title of permissions popup</comment>
|
||||
<translation>Непригодная для записи локация</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/filetransferinstance.cpp" line="220"/>
|
||||
<location filename="../src/filetransferinstance.cpp" line="242"/>
|
||||
<source>You do not have permission to write that location. Choose another, or cancel the save dialog.</source>
|
||||
<comment>text of permissions popup</comment>
|
||||
<translation>У вас нет прав записи в эту локацию. Выберете другую или закройте диалог сохранения.</translation>
|
||||
@ -267,40 +259,71 @@ Do you want to erase this profile ?</source>
|
||||
<context>
|
||||
<name>FriendWidget</name>
|
||||
<message>
|
||||
<location filename="../src/widget/friendwidget.cpp" line="48"/>
|
||||
<location filename="../src/widget/friendwidget.cpp" line="55"/>
|
||||
<source>Copy friend ID</source>
|
||||
<comment>Menu to copy the Tox ID of that friend</comment>
|
||||
<translation>Копировать ID друга</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/friendwidget.cpp" line="49"/>
|
||||
<source>Invite in group</source>
|
||||
<comment>Menu to invite a friend in a groupchat</comment>
|
||||
<translation type="obsolete">Пригласить в группу</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/friendwidget.cpp" line="65"/>
|
||||
<source>Auto accept files from this friend</source>
|
||||
<comment>context menu entry</comment>
|
||||
<translation>Автоматически принимать файлы от этого друга</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Diasble auto accepting files</source>
|
||||
<comment>context menu entry</comment>
|
||||
<translation type="obsolete">Запретить принимать файлы автоматически</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/friendwidget.cpp" line="54"/>
|
||||
<source>Invite to group</source>
|
||||
<comment>Menu to invite a friend to a groupchat</comment>
|
||||
<translation>Пригласить в группу</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/friendwidget.cpp" line="59"/>
|
||||
<location filename="../src/widget/friendwidget.cpp" line="66"/>
|
||||
<source>Manually accept files from this friend</source>
|
||||
<comment>context menu entry</comment>
|
||||
<translation>Вручную принимать файлы от этого друга</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/friendwidget.cpp" line="67"/>
|
||||
<source>Auto accept files from all friends</source>
|
||||
<comment>context menu entry</comment>
|
||||
<translation>Автоматически принимать файлы от всех друзей</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/friendwidget.cpp" line="68"/>
|
||||
<source>Disable global auto accept</source>
|
||||
<comment>context menu entry</comment>
|
||||
<translation>Выключить глобальное автопринятие</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/friendwidget.cpp" line="74"/>
|
||||
<source>Remove friend</source>
|
||||
<comment>Menu to remove the friend from our friendlist</comment>
|
||||
<translation>Удалить друга</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/friendwidget.cpp" line="96"/>
|
||||
<location filename="../src/widget/friendwidget.cpp" line="111"/>
|
||||
<source>Choose an auto accept directory</source>
|
||||
<comment>popup title</comment>
|
||||
<translation>Выбрать папку для автоматического приёма</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>GeneralForm</name>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/generalform.cpp" line="27"/>
|
||||
<source>General Settings</source>
|
||||
<translation>Общие настройки</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Bad port</source>
|
||||
<comment>title of bad port popup</comment>
|
||||
<translation type="vanished">Неправильный порт</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The port you entered is invalid; please enter another.</source>
|
||||
<comment>text of bad port popup</comment>
|
||||
<translation type="vanished">Введёный порт неверен; введите другой.</translation>
|
||||
<location filename="../src/widget/form/settings/generalform.cpp" line="30"/>
|
||||
<source>General</source>
|
||||
<translation>Общие</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@ -316,153 +339,154 @@ Do you want to erase this profile ?</source>
|
||||
<translation>Общие настройки</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="113"/>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="37"/>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="53"/>
|
||||
<source>The translation may not load until qTox restarts.</source>
|
||||
<translation>Перевод не изменится до перезапуска qTox.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="40"/>
|
||||
<source>Translation:</source>
|
||||
<translation>Перевод:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="79"/>
|
||||
<source>Close to tray</source>
|
||||
<translation>Сворачивать в трей при закрытии</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="86"/>
|
||||
<source>Minimize to tray</source>
|
||||
<translation>Сворачивать в трей</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="121"/>
|
||||
<source>Set to 0 to disable</source>
|
||||
<translation>Укажите 0, чтобы отключить</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="153"/>
|
||||
<source>Smiley Pack:</source>
|
||||
<extracomment>Text on smiley pack label</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="134"/>
|
||||
<source>:)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="144"/>
|
||||
<source>;)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="154"/>
|
||||
<source>:p</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="164"/>
|
||||
<source>:O</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Набор смайликов:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="174"/>
|
||||
<source>:)</source>
|
||||
<translation>:)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="184"/>
|
||||
<source>;)</source>
|
||||
<translation>;)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="194"/>
|
||||
<source>:p</source>
|
||||
<translation>:p</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="204"/>
|
||||
<source>:O</source>
|
||||
<translation>:O</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="214"/>
|
||||
<source>:'(</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>:'(</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="188"/>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="228"/>
|
||||
<source>Style:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Стиль:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="210"/>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="250"/>
|
||||
<source>Connection Settings</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Настройки соединения</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="216"/>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="256"/>
|
||||
<source>Enable IPv6 (recommended)</source>
|
||||
<extracomment>Text on a checkbox to enable IPv6</extracomment>
|
||||
<translation>Включить IPv6 (рекомендуется)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="233"/>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="273"/>
|
||||
<source>Use proxy (SOCKS5)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Использовать прокси (SOCKS5)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="242"/>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="282"/>
|
||||
<source>Address</source>
|
||||
<extracomment>Text on proxy addr label</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Адрес</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="252"/>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="292"/>
|
||||
<source>Port</source>
|
||||
<extracomment>Text on proxy port label</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Порт</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="35"/>
|
||||
<source>Use translations</source>
|
||||
<extracomment>Text on a checkbox to enable translations</extracomment>
|
||||
<translation>Использовать перевод</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="42"/>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="62"/>
|
||||
<source>Save settings to the working directory instead of the usual conf dir</source>
|
||||
<extracomment>describes makeToxPortable checkbox</extracomment>
|
||||
<translation>Сохранять настройки в рабочую директорию вместо страндартной папки настроек</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="45"/>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="65"/>
|
||||
<source>Make Tox portable</source>
|
||||
<translation>Портативный режим</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="52"/>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="72"/>
|
||||
<source>Start in tray</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Запускать в системном лотке</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="59"/>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="93"/>
|
||||
<source>Show contacts' status changes</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Показывать изменения статусов контактов</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="68"/>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="102"/>
|
||||
<source>Provided in minutes</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Выставлено в минутах</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="74"/>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="108"/>
|
||||
<source>Auto away after (0 to disable):</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Автоматически отсутствовать после (0 для отключения):</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="87"/>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="127"/>
|
||||
<source> minutes</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation> минут</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="105"/>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="145"/>
|
||||
<source>Theme</source>
|
||||
<translation>Тема</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Smiley Pack</source>
|
||||
<extracomment>Text on smiley pack label</extracomment>
|
||||
<translation type="vanished">Набор смайликов</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Proxy settings</source>
|
||||
<translation type="vanished">Настройки прокси</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="226"/>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="266"/>
|
||||
<source>Disable UDP (not recommended)</source>
|
||||
<extracomment>Text on checkbox to disable UDP</extracomment>
|
||||
<translation>Выключить UDP (не рекомендуется)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="223"/>
|
||||
<location filename="../src/widget/form/settings/generalsettings.ui" line="263"/>
|
||||
<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>Это позволяет, например, использовать tox поверх Tor. Однако это добавляет нагрузку на сеть Tox, так что используйте только в случае необходимости.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Proxy address</source>
|
||||
<extracomment>Text on proxy addr label</extracomment>
|
||||
<translation type="vanished">Адрес прокси</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Proxy port</source>
|
||||
<extracomment>Text on proxy port label</extracomment>
|
||||
<translation type="vanished">Порт прокси</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>GenericChatForm</name>
|
||||
<message>
|
||||
<location filename="../src/widget/form/genericchatform.cpp" line="154"/>
|
||||
<location filename="../src/widget/form/genericchatform.cpp" line="160"/>
|
||||
<location filename="../src/widget/form/genericchatform.cpp" line="151"/>
|
||||
<location filename="../src/widget/form/genericchatform.cpp" line="157"/>
|
||||
<source>Save chat log</source>
|
||||
<translation>Сохранить лог чата</translation>
|
||||
</message>
|
||||
@ -470,13 +494,13 @@ Do you want to erase this profile ?</source>
|
||||
<context>
|
||||
<name>GroupChatForm</name>
|
||||
<message>
|
||||
<location filename="../src/widget/form/groupchatform.cpp" line="47"/>
|
||||
<location filename="../src/widget/form/groupchatform.cpp" line="48"/>
|
||||
<source>%1 users in chat</source>
|
||||
<comment>Number of users in chat</comment>
|
||||
<translation>%1 пользователей в чате</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/groupchatform.cpp" line="85"/>
|
||||
<location filename="../src/widget/form/groupchatform.cpp" line="82"/>
|
||||
<source>%1 users in chat</source>
|
||||
<translation>%1 пользователей в чате</translation>
|
||||
</message>
|
||||
@ -484,20 +508,20 @@ Do you want to erase this profile ?</source>
|
||||
<context>
|
||||
<name>GroupWidget</name>
|
||||
<message>
|
||||
<location filename="../src/widget/groupwidget.cpp" line="48"/>
|
||||
<location filename="../src/widget/groupwidget.cpp" line="53"/>
|
||||
<source>Quit group</source>
|
||||
<comment>Menu to quit a groupchat</comment>
|
||||
<translation>Покинуть группу</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/groupwidget.cpp" line="39"/>
|
||||
<location filename="../src/widget/groupwidget.cpp" line="59"/>
|
||||
<location filename="../src/widget/groupwidget.cpp" line="42"/>
|
||||
<location filename="../src/widget/groupwidget.cpp" line="64"/>
|
||||
<source>%1 users in chat</source>
|
||||
<translation>%1 пользователей в чате</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/groupwidget.cpp" line="41"/>
|
||||
<location filename="../src/widget/groupwidget.cpp" line="61"/>
|
||||
<location filename="../src/widget/groupwidget.cpp" line="44"/>
|
||||
<location filename="../src/widget/groupwidget.cpp" line="66"/>
|
||||
<source>0 users in chat</source>
|
||||
<translation>Ни одного пользователя в чате</translation>
|
||||
</message>
|
||||
@ -505,87 +529,111 @@ Do you want to erase this profile ?</source>
|
||||
<context>
|
||||
<name>IdentityForm</name>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="33"/>
|
||||
<source>Your identity</source>
|
||||
<translation>Ваша идентификация</translation>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="34"/>
|
||||
<source>Identity</source>
|
||||
<translation>Личность</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="114"/>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="112"/>
|
||||
<source>Call active</source>
|
||||
<comment>popup title</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Идёт звонок</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="115"/>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="113"/>
|
||||
<source>You can't switch profiles while a call is active!</source>
|
||||
<comment>popup text</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Вы не можете переключить профиль, пока идёт звонок!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="125"/>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="123"/>
|
||||
<source>Rename "%1"</source>
|
||||
<comment>renaming a profile</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Переименовать «%1»</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="140"/>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="131"/>
|
||||
<source>Profile already exists</source>
|
||||
<comment>rename confirm title</comment>
|
||||
<translation>Профиль уже существует</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="132"/>
|
||||
<source>A profile named "%1" already exists. Do you want to erase it?</source>
|
||||
<comment>rename confirm text</comment>
|
||||
<translation>Профиль с именем «%1» уже существует. Желаете его стереть?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="145"/>
|
||||
<source>Export profile</source>
|
||||
<comment>save dialog title</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Экспортировать профиль</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="142"/>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="147"/>
|
||||
<source>Tox save file (*.tox)</source>
|
||||
<comment>save dialog filter</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Файл сохранения Tox (*.tox)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="151"/>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="156"/>
|
||||
<source>Profile currently loaded</source>
|
||||
<comment>current profile deletion warning title</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Профиль в настоящее время загружен</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="151"/>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="156"/>
|
||||
<source>This profile is currently in use. Please load a different profile before deleting this one.</source>
|
||||
<comment>current profile deletion warning text</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Этот профиль используется. Загрузите другой профиль, прежде чем удалять этот.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="156"/>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="160"/>
|
||||
<source>Deletion imminent!</source>
|
||||
<comment>deletion confirmation title</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Необратимое удаление!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="156"/>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="161"/>
|
||||
<source>Are you sure you want to delete this profile?</source>
|
||||
<comment>deletion confirmation text</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Вы действительно хотите удалить этот профиль?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="168"/>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="172"/>
|
||||
<source>Import profile</source>
|
||||
<comment>import dialog title</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Импортировать профиль</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="168"/>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="172"/>
|
||||
<source>Tox save file (*.tox)</source>
|
||||
<comment>import dialog filter</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Файл сохранения Tox (*.tox)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="176"/>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="181"/>
|
||||
<source>Ignoring non-Tox file</source>
|
||||
<comment>popup title</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Игнорирование не-Tox файла</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="176"/>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="181"/>
|
||||
<source>Warning: you've chosen a file that is not a Tox save file; ignoring.</source>
|
||||
<comment>popup text</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Внимание: вы выбрали не файл сохранения Tox; игнорирование.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="185"/>
|
||||
<source>Profile already exists</source>
|
||||
<comment>import confirm title</comment>
|
||||
<translation>Профиль уже существует</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/identityform.cpp" line="186"/>
|
||||
<source>A profile named "%1" already exists. Do you want to erase it?</source>
|
||||
<comment>import confirm text</comment>
|
||||
<translation>Профиль с именем «%1» уже существует. Желаете его стереть?</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@ -623,48 +671,54 @@ Do you want to erase this profile ?</source>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/identitysettings.ui" line="65"/>
|
||||
<source>Profiles</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Профили</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/identitysettings.ui" line="73"/>
|
||||
<source>Available profiles:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Доступные профили:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/identitysettings.ui" line="94"/>
|
||||
<source>Load</source>
|
||||
<comment>load profile button</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Загрузить</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/identitysettings.ui" line="101"/>
|
||||
<source>Rename</source>
|
||||
<comment>rename profile button</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Переименовать</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/identitysettings.ui" line="108"/>
|
||||
<source>Export</source>
|
||||
<comment>export profile button</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Экспортировать</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/identitysettings.ui" line="115"/>
|
||||
<source>Delete</source>
|
||||
<comment>delete profile button</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Удалить</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/identitysettings.ui" line="118"/>
|
||||
<source>This is useful to remain safe on public computers</source>
|
||||
<comment>delete profile button tooltip</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Это полезно, чтобы оставаться в безопасности за общими компьютерами</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/identitysettings.ui" line="127"/>
|
||||
<location filename="../src/widget/form/settings/identitysettings.ui" line="129"/>
|
||||
<source>Import a profile</source>
|
||||
<comment>import profile button</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Импортировать профиль</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/identitysettings.ui" line="136"/>
|
||||
<source>New Tox ID</source>
|
||||
<comment>new profile button</comment>
|
||||
<translation>Новый Tox ID</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@ -719,122 +773,139 @@ Do you want to erase this profile ?</source>
|
||||
<name>PrivacyForm</name>
|
||||
<message>
|
||||
<location filename="../src/widget/form/settings/privacyform.cpp" line="21"/>
|
||||
<source>Privacy settings</source>
|
||||
<translation>Настройки приватности</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SelfCamView</name>
|
||||
<message>
|
||||
<source>Tox video test</source>
|
||||
<comment>Title of the window to test the video/webcam</comment>
|
||||
<translation type="vanished">Проверка видео</translation>
|
||||
<source>Privacy</source>
|
||||
<translation>Защищённость</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Widget</name>
|
||||
<message>
|
||||
<location filename="../src/widget/widget.cpp" line="101"/>
|
||||
<location filename="../src/widget/widget.cpp" line="75"/>
|
||||
<source>online</source>
|
||||
<translation>в сети</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/widget.cpp" line="78"/>
|
||||
<source>away</source>
|
||||
<translation>отошёл</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/widget.cpp" line="81"/>
|
||||
<source>busy</source>
|
||||
<translation>занят</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/widget.cpp" line="84"/>
|
||||
<source>&Quit</source>
|
||||
<translation>В&ыход</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/widget.cpp" line="87"/>
|
||||
<source>Change status to:</source>
|
||||
<translation>Сменить статус на:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/widget.cpp" line="154"/>
|
||||
<source>Online</source>
|
||||
<comment>Button to set your status to 'Online'</comment>
|
||||
<translation>В сети</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/widget.cpp" line="103"/>
|
||||
<location filename="../src/widget/widget.cpp" line="156"/>
|
||||
<source>Away</source>
|
||||
<comment>Button to set your status to 'Away'</comment>
|
||||
<translatorcomment>Вероятно, это не столь долгое путешествие</translatorcomment>
|
||||
<translation>Отошёл</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/widget.cpp" line="105"/>
|
||||
<location filename="../src/widget/widget.cpp" line="158"/>
|
||||
<source>Busy</source>
|
||||
<comment>Button to set your status to 'Busy'</comment>
|
||||
<translation>Занят</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/widget.cpp" line="282"/>
|
||||
<location filename="../src/widget/widget.cpp" line="382"/>
|
||||
<source>Choose a profile</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Выберите профиль</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/widget.cpp" line="283"/>
|
||||
<location filename="../src/widget/widget.cpp" line="383"/>
|
||||
<source>Please choose which identity to use</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Выберите личность, которую хотите использовать</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/widget.cpp" line="309"/>
|
||||
<location filename="../src/widget/widget.cpp" line="409"/>
|
||||
<source>Choose a profile picture</source>
|
||||
<translation>Выбрать картинку для профиля</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/widget.cpp" line="316"/>
|
||||
<location filename="../src/widget/widget.cpp" line="323"/>
|
||||
<location filename="../src/widget/widget.cpp" line="344"/>
|
||||
<location filename="../src/widget/widget.cpp" line="416"/>
|
||||
<location filename="../src/widget/widget.cpp" line="423"/>
|
||||
<location filename="../src/widget/widget.cpp" line="444"/>
|
||||
<source>Error</source>
|
||||
<translation>Ошибка</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/widget.cpp" line="316"/>
|
||||
<location filename="../src/widget/widget.cpp" line="416"/>
|
||||
<source>Unable to open this file</source>
|
||||
<translation>Невозможно открыть файл</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/widget.cpp" line="323"/>
|
||||
<location filename="../src/widget/widget.cpp" line="423"/>
|
||||
<source>Unable to read this image</source>
|
||||
<translation>Невозможно прочесть это изображение</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/widget.cpp" line="344"/>
|
||||
<location filename="../src/widget/widget.cpp" line="444"/>
|
||||
<source>This image is too big</source>
|
||||
<translation>Это изображение слишком большое</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/widget.cpp" line="371"/>
|
||||
<location filename="../src/widget/widget.cpp" line="471"/>
|
||||
<source>Toxcore failed to start, the application will terminate after you close this message.</source>
|
||||
<translation>Не удалось запустить toxcore, приложение будет завершено после того как вы закроете это сообщение.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/widget.cpp" line="380"/>
|
||||
<location filename="../src/widget/widget.cpp" line="480"/>
|
||||
<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 с вашими настройками прокси, qTox не может работать; измените ваши настройки и перезапустите его.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/widget.cpp" line="549"/>
|
||||
<location filename="../src/widget/widget.cpp" line="660"/>
|
||||
<source>away</source>
|
||||
<comment>contact status</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>отсутствует</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/widget.cpp" line="551"/>
|
||||
<location filename="../src/widget/widget.cpp" line="662"/>
|
||||
<source>busy</source>
|
||||
<comment>contact status</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>занят</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/widget.cpp" line="553"/>
|
||||
<location filename="../src/widget/widget.cpp" line="664"/>
|
||||
<source>offline</source>
|
||||
<comment>contact status</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>офлайн</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/widget.cpp" line="555"/>
|
||||
<location filename="../src/widget/widget.cpp" line="666"/>
|
||||
<source>online</source>
|
||||
<comment>contact status</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>в сети</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/widget.cpp" line="561"/>
|
||||
<location filename="../src/widget/widget.cpp" line="668"/>
|
||||
<source>%1 is now %2</source>
|
||||
<comment>e.g. "Dubslow is now online"</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>%1 сейчас %2</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/widget/widget.cpp" line="752"/>
|
||||
<location filename="../src/widget/widget.cpp" line="866"/>
|
||||
<source><Unknown></source>
|
||||
<comment>Placeholder when we don't know someone's name in a group chat</comment>
|
||||
<translation><Неизвестно></translation>
|
||||
<translation><Неизвестный></translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
|
@ -38,8 +38,8 @@ span.quote {
|
||||
}
|
||||
|
||||
div.green {
|
||||
margin-top: 12px;
|
||||
margin-bottom: 12px;
|
||||
margin-top: 6px;
|
||||
margin-bottom: 6px;
|
||||
margin-left: 0px;
|
||||
margin-right: 0px;
|
||||
color: @white;
|
||||
@ -48,8 +48,8 @@ div.green {
|
||||
}
|
||||
|
||||
div.silver {
|
||||
margin-top: 12px;
|
||||
margin-bottom: 12px;
|
||||
margin-top: 6px;
|
||||
margin-bottom: 6px;
|
||||
margin-left: 0px;
|
||||
margin-right: 0px;
|
||||
color: @black;
|
||||
@ -58,8 +58,8 @@ div.silver {
|
||||
}
|
||||
|
||||
div.red {
|
||||
margin-top: 12px;
|
||||
margin-bottom: 12px;
|
||||
margin-top: 6px;
|
||||
margin-bottom: 6px;
|
||||
margin-left: 0px;
|
||||
margin-right: 0px;
|
||||
color: @white;
|
||||
@ -67,6 +67,20 @@ div.red {
|
||||
font: @small;
|
||||
}
|
||||
|
||||
div.alert {
|
||||
margin-left: 0px;
|
||||
margin-right: 0px;
|
||||
color: @black;
|
||||
background-color: @orange;
|
||||
font: @big;
|
||||
}
|
||||
|
||||
div.alert_name {
|
||||
color: @black;
|
||||
background-color: @orange;
|
||||
font: @bigBold;
|
||||
}
|
||||
|
||||
div.button {
|
||||
margin-top: 0px;
|
||||
margin-bottom: 0px;
|
||||
|
Loading…
x
Reference in New Issue
Block a user