Add fallback icons, show traffic
|
@ -55,6 +55,7 @@ set(WIDGETS_UI_FILES
|
|||
gui/traywidget.ui
|
||||
gui/connectionoptionpage.ui
|
||||
gui/notificationsoptionpage.ui
|
||||
gui/appearanceoptionpage.ui
|
||||
gui/launcheroptionpage.ui
|
||||
gui/webviewoptionpage.ui
|
||||
)
|
||||
|
@ -77,6 +78,24 @@ set(DOC_FILES
|
|||
README.md
|
||||
)
|
||||
|
||||
set(REQUIRED_ICONS
|
||||
network-card
|
||||
window-close
|
||||
edit-copy
|
||||
preferences-other
|
||||
view-barcode
|
||||
folder-open
|
||||
media-playback-start
|
||||
text-plain
|
||||
help-about
|
||||
media-playback-pause
|
||||
view-refresh
|
||||
folder
|
||||
network-server
|
||||
folder-sync
|
||||
internet-web-browser
|
||||
)
|
||||
|
||||
# find c++utilities
|
||||
find_package(c++utilities 4.0.0 REQUIRED)
|
||||
use_cpp_utilities()
|
||||
|
|
|
@ -31,7 +31,7 @@ I will provide packages for Arch Linux and Windows when releasing. For more info
|
|||
## Build instructions
|
||||
The application depends on [c++utilities](https://github.com/Martchus/cpp-utilities) and [qtutilities](https://github.com/Martchus/qtutilities) and is built the same way as these libaries. For basic instructions checkout the README file of [c++utilities](https://github.com/Martchus/cpp-utilities).
|
||||
|
||||
The following Qt 5 modules are requried: core network gui network widgets webenginewidgets/webkitwidgets
|
||||
The following Qt 5 modules are requried: core network gui widgets webenginewidgets/webkitwidgets
|
||||
|
||||
#### Select Qt modules for WebView
|
||||
* If Qt WebKitWidgets is installed on the system, the tray will link against it. Otherwise it will link against Qt WebEngineWidgets.
|
||||
|
|
|
@ -56,6 +56,11 @@ bool &showSyncthingNotifications()
|
|||
static bool v = true;
|
||||
return v;
|
||||
}
|
||||
bool &showTraffic()
|
||||
{
|
||||
static bool v = true;
|
||||
return v;
|
||||
}
|
||||
bool &launchSynchting()
|
||||
{
|
||||
static bool v = false;
|
||||
|
@ -111,7 +116,8 @@ void restore()
|
|||
notifyOnDisconnect() = settings.value(QStringLiteral("notifyOnDisconnect"), true).toBool();
|
||||
notifyOnErrors() = settings.value(QStringLiteral("notifyOnErrors"), true).toBool();
|
||||
notifyOnSyncComplete() = settings.value(QStringLiteral("notifyOnSyncComplete"), true).toBool();
|
||||
notifyOnSyncComplete() = settings.value(QStringLiteral("showSyncthingNotifications"), true).toBool();
|
||||
showSyncthingNotifications() = settings.value(QStringLiteral("showSyncthingNotifications"), true).toBool();
|
||||
showTraffic() = settings.value(QStringLiteral("showTraffic"), true).toBool();
|
||||
launchSynchting() = settings.value(QStringLiteral("launchSynchting"), false).toBool();
|
||||
syncthingCommand() = settings.value(QStringLiteral("syncthingCommand"), QStringLiteral("syncthing")).toString();
|
||||
settings.endGroup();
|
||||
|
@ -142,6 +148,7 @@ void save()
|
|||
settings.setValue(QStringLiteral("notifyOnErrors"), notifyOnErrors());
|
||||
settings.setValue(QStringLiteral("notifyOnSyncComplete"), notifyOnSyncComplete());
|
||||
settings.setValue(QStringLiteral("showSyncthingNotifications"), showSyncthingNotifications());
|
||||
settings.setValue(QStringLiteral("showTraffic"), showTraffic());
|
||||
settings.setValue(QStringLiteral("launchSynchting"), launchSynchting());
|
||||
settings.setValue(QStringLiteral("syncthingCommand"), syncthingCommand());
|
||||
settings.endGroup();
|
||||
|
|
|
@ -29,6 +29,7 @@ bool ¬ifyOnDisconnect();
|
|||
bool ¬ifyOnErrors();
|
||||
bool ¬ifyOnSyncComplete();
|
||||
bool &showSyncthingNotifications();
|
||||
bool &showTraffic();
|
||||
|
||||
bool &launchSynchting();
|
||||
QString &syncthingCommand();
|
||||
|
|
|
@ -26,6 +26,37 @@ QNetworkAccessManager &networkAccessManager()
|
|||
return networkAccessManager;
|
||||
}
|
||||
|
||||
/*!
|
||||
* \brief Assigns the status from the specified status string.
|
||||
* \returns Returns whether the status has actually changed.
|
||||
*/
|
||||
bool SyncthingDir::assignStatus(const QString &statusStr)
|
||||
{
|
||||
DirStatus newStatus;
|
||||
if(statusStr == QLatin1String("idle")) {
|
||||
progressPercentage = 0;
|
||||
newStatus = DirStatus::Idle;
|
||||
} else if(statusStr == QLatin1String("scanning")) {
|
||||
newStatus = DirStatus::Scanning;
|
||||
} else if(statusStr == QLatin1String("syncing")) {
|
||||
if(!errors.empty()) {
|
||||
errors.clear(); // errors become obsolete
|
||||
status = DirStatus::Unknown; // ensure status changed signal is emitted
|
||||
}
|
||||
newStatus = DirStatus::Synchronizing;
|
||||
} else if(statusStr == QLatin1String("error")) {
|
||||
progressPercentage = 0;
|
||||
newStatus = DirStatus::OutOfSync;
|
||||
} else {
|
||||
newStatus = DirStatus::Unknown;
|
||||
}
|
||||
if(newStatus != status) {
|
||||
status = newStatus;
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/*!
|
||||
* \class SyncthingConnection
|
||||
* \brief The SyncthingConnection class allows Qt applications to access Syncthing.
|
||||
|
@ -418,8 +449,6 @@ void SyncthingConnection::readDirs(const QJsonArray &dirs)
|
|||
dirItem.ignorePermissions = dirObj.value(QStringLiteral("ignorePerms")).toBool(false);
|
||||
dirItem.autoNormalize = dirObj.value(QStringLiteral("autoNormalize")).toBool(false);
|
||||
dirItem.minDiskFreePercentage = dirObj.value(QStringLiteral("minDiskFreePct")).toInt(-1);
|
||||
dirItem.status = DirStatus::Unknown;
|
||||
dirItem.progressPercentage = 0;
|
||||
m_dirs.emplace_back(move(dirItem));
|
||||
}
|
||||
}
|
||||
|
@ -446,9 +475,6 @@ void SyncthingConnection::readDevs(const QJsonArray &devs)
|
|||
devItem.certName = devObj.value(QStringLiteral("certName")).toString();
|
||||
devItem.introducer = devObj.value(QStringLiteral("introducer")).toBool(false);
|
||||
devItem.status = devItem.id == m_myId ? DevStatus::OwnDevice : DevStatus::Unknown;
|
||||
devItem.progressPercentage = 0;
|
||||
devItem.paused = false;
|
||||
devItem.totalIncomingTraffic = devItem.totalOutgoingTraffic = 0;
|
||||
m_devs.push_back(move(devItem));
|
||||
}
|
||||
}
|
||||
|
@ -518,6 +544,7 @@ void SyncthingConnection::readConnections()
|
|||
const QJsonObject totalObj(replyObj.value(QStringLiteral("total")).toObject());
|
||||
m_totalIncomingTraffic = totalObj.value(QStringLiteral("inBytesTotal")).toInt(0);
|
||||
m_totalOutgoingTraffic = totalObj.value(QStringLiteral("outBytesTotal")).toInt(0);
|
||||
emit trafficChanged(m_totalIncomingTraffic, m_totalOutgoingTraffic);
|
||||
const QJsonObject connectionsObj(replyObj.value(QStringLiteral("connections")).toObject());
|
||||
int index = 0;
|
||||
for(SyncthingDev &dev : m_devs) {
|
||||
|
@ -587,6 +614,10 @@ void SyncthingConnection::readEvents()
|
|||
readStartingEvent(eventData);
|
||||
} else if(eventType == QLatin1String("StateChanged")) {
|
||||
readStatusChangedEvent(eventData);
|
||||
} else if(eventType == QLatin1String("DownloadProgress")) {
|
||||
readDownloadProgressEvent(eventData);
|
||||
} else if(eventType.startsWith(QLatin1String("Folder"))) {
|
||||
readDirEvent(eventType, eventData);
|
||||
} else if(eventType.startsWith(QLatin1String("Device"))) {
|
||||
readDeviceEvent(eventType, eventData);
|
||||
}
|
||||
|
@ -651,24 +682,65 @@ void SyncthingConnection::readStatusChangedEvent(const QJsonObject &eventData)
|
|||
const QString dir(eventData.value(QStringLiteral("folder")).toString());
|
||||
if(!dir.isEmpty()) {
|
||||
// dir status changed
|
||||
int row;
|
||||
if(SyncthingDir *dirInfo = findDirInfo(dir, row)) {
|
||||
const QString statusStr(eventData.value(QStringLiteral("to")).toString());
|
||||
DirStatus status;
|
||||
if(statusStr == QLatin1String("idle")) {
|
||||
status = DirStatus::Idle;
|
||||
} else if(statusStr == QLatin1String("scanning")) {
|
||||
status = DirStatus::Scanning;
|
||||
} else if(statusStr == QLatin1String("syncing")) {
|
||||
status = DirStatus::Synchronizing;
|
||||
} else if(statusStr == QLatin1String("error")) {
|
||||
status = DirStatus::OutOfSync;
|
||||
} else {
|
||||
status = DirStatus::Unknown;
|
||||
int index;
|
||||
if(SyncthingDir *dirInfo = findDirInfo(dir, index)) {
|
||||
if(dirInfo->assignStatus(eventData.value(QStringLiteral("to")).toString())) {
|
||||
emit dirStatusChanged(*dirInfo, index);
|
||||
}
|
||||
if(dirInfo->status != status) {
|
||||
dirInfo->status = status;
|
||||
emit dirStatusChanged(*dirInfo, row);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*!
|
||||
* \brief Reads results of requestEvents().
|
||||
* \remarks TODO
|
||||
*/
|
||||
void SyncthingConnection::readDownloadProgressEvent(const QJsonObject &eventData)
|
||||
{}
|
||||
|
||||
void SyncthingConnection::readDirEvent(const QString &eventType, const QJsonObject &eventData)
|
||||
{
|
||||
const QString dir(eventData.value(QStringLiteral("folder")).toString());
|
||||
if(!dir.isEmpty()) {
|
||||
int index;
|
||||
if(SyncthingDir *dirInfo = findDirInfo(dir, index)) {
|
||||
if(eventType == QLatin1String("FolderErrors")) {
|
||||
// check for errors
|
||||
const QJsonArray errors(eventData.value(QStringLiteral("errors")).toArray());
|
||||
if(!errors.isEmpty()) {
|
||||
for(const QJsonValue &errorVal : errors) {
|
||||
const QJsonObject error(errorVal.toObject());
|
||||
if(!error.isEmpty()) {
|
||||
dirInfo->errors.emplace_back(error.value(QStringLiteral("error")).toString(), error.value(QStringLiteral("path")).toString());
|
||||
emit newNotification(dirInfo->errors.back().message);
|
||||
}
|
||||
}
|
||||
emit dirStatusChanged(*dirInfo, index);
|
||||
}
|
||||
} else if(eventType == QLatin1String("FolderSummary")) {
|
||||
// check for summary
|
||||
const QJsonObject summary(eventData.value(QStringLiteral("summary")).toObject());
|
||||
if(!summary.isEmpty()) {
|
||||
dirInfo->globalBytes = summary.value(QStringLiteral("globalBytes")).toInt();
|
||||
dirInfo->globalDeleted = summary.value(QStringLiteral("globalDeleted")).toInt();
|
||||
dirInfo->globalFiles = summary.value(QStringLiteral("globalFiles")).toInt();
|
||||
dirInfo->localBytes = summary.value(QStringLiteral("localBytes")).toInt();
|
||||
dirInfo->localDeleted = summary.value(QStringLiteral("localDeleted")).toInt();
|
||||
dirInfo->localFiles = summary.value(QStringLiteral("localFiles")).toInt();
|
||||
dirInfo->neededByted = summary.value(QStringLiteral("needByted")).toInt();
|
||||
dirInfo->neededFiles = summary.value(QStringLiteral("needFiles")).toInt();
|
||||
//dirInfo->assignStatus(summary.value(QStringLiteral("state")).toString());
|
||||
emit dirStatusChanged(*dirInfo, index);
|
||||
}
|
||||
} else if(eventType == QLatin1String("FolderCompletion")) {
|
||||
// check for progress percentage
|
||||
//const QString device(eventData.value(QStringLiteral("device")).toString());
|
||||
int percentage = eventData.value(QStringLiteral("completion")).toInt();
|
||||
if(percentage > 0 && percentage < 100 && (dirInfo->progressPercentage <= 0 || percentage < dirInfo->progressPercentage)) {
|
||||
// Syncthing provides progress percentage for each device
|
||||
// just show the smallest percentage for now
|
||||
dirInfo->progressPercentage = percentage;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -681,9 +753,9 @@ void SyncthingConnection::readDeviceEvent(const QString &eventType, const QJsonO
|
|||
{
|
||||
const QString dev(eventData.value(QStringLiteral("device")).toString());
|
||||
if(!dev.isEmpty()) {
|
||||
// dev status changed
|
||||
int row;
|
||||
if(SyncthingDev *devInfo = findDevInfo(dev, row)) {
|
||||
// dev status changed, depending on event type
|
||||
int index;
|
||||
if(SyncthingDev *devInfo = findDevInfo(dev, index)) {
|
||||
DevStatus status = devInfo->status;
|
||||
bool paused = devInfo->paused;
|
||||
if(eventType == QLatin1String("DeviceConnected")) {
|
||||
|
@ -707,7 +779,7 @@ void SyncthingConnection::readDeviceEvent(const QString &eventType, const QJsonO
|
|||
devInfo->status = status;
|
||||
}
|
||||
devInfo->paused = paused;
|
||||
emit devStatusChanged(*devInfo, row);
|
||||
emit devStatusChanged(*devInfo, index);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -36,19 +36,35 @@ enum class DirStatus
|
|||
OutOfSync
|
||||
};
|
||||
|
||||
struct SyncthingDir
|
||||
struct DirErrors
|
||||
{
|
||||
DirErrors(const QString &message, const QString &path) :
|
||||
message(message),
|
||||
path(path)
|
||||
{}
|
||||
QString message;
|
||||
QString path;
|
||||
};
|
||||
|
||||
struct SyncthingDir
|
||||
{
|
||||
QString id;
|
||||
QString label;
|
||||
QString path;
|
||||
QStringList devices;
|
||||
bool readOnly;
|
||||
bool ignorePermissions;
|
||||
bool autoNormalize;
|
||||
int rescanInterval;
|
||||
int minDiskFreePercentage;
|
||||
DirStatus status;
|
||||
int progressPercentage;
|
||||
bool readOnly = false;
|
||||
bool ignorePermissions = false;
|
||||
bool autoNormalize = false;
|
||||
int rescanInterval = 0;
|
||||
int minDiskFreePercentage = 0;
|
||||
DirStatus status = DirStatus::Unknown;
|
||||
int progressPercentage = 0;
|
||||
std::vector<DirErrors> errors;
|
||||
int globalBytes = 0, globalDeleted = 0, globalFiles = 0;
|
||||
int localBytes = 0, localDeleted = 0, localFiles = 0;
|
||||
int neededByted = 0, neededFiles = 0;
|
||||
|
||||
bool assignStatus(const QString &statusStr);
|
||||
};
|
||||
|
||||
enum class DevStatus
|
||||
|
@ -70,11 +86,11 @@ struct SyncthingDev
|
|||
QString compression;
|
||||
QString certName;
|
||||
DevStatus status;
|
||||
int progressPercentage;
|
||||
bool introducer;
|
||||
bool paused;
|
||||
int totalIncomingTraffic;
|
||||
int totalOutgoingTraffic;
|
||||
int progressPercentage = 0;
|
||||
bool introducer = false;
|
||||
bool paused = false;
|
||||
int totalIncomingTraffic = 0;
|
||||
int totalOutgoingTraffic = 0;
|
||||
QString connectionAddress;
|
||||
QString connectionType;
|
||||
QString clientVersion;
|
||||
|
@ -94,6 +110,8 @@ class SyncthingConnection : public QObject
|
|||
Q_PROPERTY(SyncthingStatus status READ status NOTIFY statusChanged)
|
||||
Q_PROPERTY(QString configDir READ configDir NOTIFY configDirChanged)
|
||||
Q_PROPERTY(QString myId READ myId NOTIFY myIdChanged)
|
||||
Q_PROPERTY(int totalIncomingTraffic READ totalIncomingTraffic NOTIFY trafficChanged)
|
||||
Q_PROPERTY(int totalOutgoingTraffic READ totalOutgoingTraffic NOTIFY trafficChanged)
|
||||
|
||||
public:
|
||||
explicit SyncthingConnection(const QString &syncthingUrl = QStringLiteral("http://localhost:8080"), const QByteArray &apiKey = QByteArray(), QObject *parent = nullptr);
|
||||
|
@ -111,6 +129,8 @@ public:
|
|||
bool isConnected() const;
|
||||
const QString &configDir() const;
|
||||
const QString &myId() const;
|
||||
int totalIncomingTraffic() const;
|
||||
int totalOutgoingTraffic() const;
|
||||
const std::vector<SyncthingDir> &dirInfo() const;
|
||||
const std::vector<SyncthingDev> &devInfo() const;
|
||||
void requestQrCode(const QString &text, std::function<void (const QPixmap &)> callback);
|
||||
|
@ -191,6 +211,11 @@ Q_SIGNALS:
|
|||
*/
|
||||
void myIdChanged(const QString &myNewId);
|
||||
|
||||
/*!
|
||||
* \brief Indicates totalIncomingTraffic() or totalOutgoingTraffic() has changed.
|
||||
*/
|
||||
void trafficChanged(int totalIncomingTraffic, int totalOutgoingTraffic);
|
||||
|
||||
private Q_SLOTS:
|
||||
void requestConfig();
|
||||
void requestStatus();
|
||||
|
@ -206,6 +231,8 @@ private Q_SLOTS:
|
|||
void readEvents();
|
||||
void readStartingEvent(const QJsonObject &eventData);
|
||||
void readStatusChangedEvent(const QJsonObject &eventData);
|
||||
void readDownloadProgressEvent(const QJsonObject &eventData);
|
||||
void readDirEvent(const QString &eventType, const QJsonObject &eventData);
|
||||
void readDeviceEvent(const QString &eventType, const QJsonObject &eventData);
|
||||
void readRescan();
|
||||
void readPauseResume();
|
||||
|
@ -331,6 +358,22 @@ inline const QString &SyncthingConnection::myId() const
|
|||
return m_myId;
|
||||
}
|
||||
|
||||
/*!
|
||||
* \brief Returns the total incoming traffic.
|
||||
*/
|
||||
inline int SyncthingConnection::totalIncomingTraffic() const
|
||||
{
|
||||
return m_totalIncomingTraffic;
|
||||
}
|
||||
|
||||
/*!
|
||||
* \brief Returns the total outgoing traffic.
|
||||
*/
|
||||
inline int SyncthingConnection::totalOutgoingTraffic() const
|
||||
{
|
||||
return m_totalOutgoingTraffic;
|
||||
}
|
||||
|
||||
/*!
|
||||
* \brief Returns all available directory info.
|
||||
* \remarks The returned object container object is persistent. However, the contained
|
||||
|
|
|
@ -0,0 +1,33 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>QtGui::AppearanceOptionPage</class>
|
||||
<widget class="QWidget" name="QtGui::AppearanceOptionPage">
|
||||
<property name="windowTitle">
|
||||
<string>Appearance</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<item>
|
||||
<widget class="QCheckBox" name="showTrafficCheckBox">
|
||||
<property name="text">
|
||||
<string>Show traffic</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="verticalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>40</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
|
@ -23,8 +23,8 @@ inline int centerObj(int avail, int size)
|
|||
|
||||
DevButtonsItemDelegate::DevButtonsItemDelegate(QObject* parent) :
|
||||
QStyledItemDelegate(parent),
|
||||
m_pauseIcon(QIcon::fromTheme(QStringLiteral("media-playback-pause")).pixmap(QSize(16, 16))),
|
||||
m_resumeIcon(QIcon::fromTheme(QStringLiteral("media-playback-start")).pixmap(QSize(16, 16)))
|
||||
m_pauseIcon(QIcon::fromTheme(QStringLiteral("media-playback-pause"), QIcon(QStringLiteral(":/icons/hicolor/scalable/actions/media-playback-pause.svg"))).pixmap(QSize(16, 16))),
|
||||
m_resumeIcon(QIcon::fromTheme(QStringLiteral("media-playback-start"), QIcon(QStringLiteral(":/icons/hicolor/scalable/actions/media-playback-start.svg"))).pixmap(QSize(16, 16)))
|
||||
{}
|
||||
|
||||
void DevButtonsItemDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const
|
||||
|
|
|
@ -41,7 +41,7 @@ void DevView::showContextMenu()
|
|||
{
|
||||
if(selectionModel() && selectionModel()->selectedRows(0).size() == 1) {
|
||||
QMenu menu;
|
||||
connect(menu.addAction(QIcon::fromTheme(QStringLiteral("edit-copy")), tr("Copy")), &QAction::triggered, this, &DevView::copySelectedItem);
|
||||
connect(menu.addAction(QIcon::fromTheme(QStringLiteral("edit-copy"), QIcon(QStringLiteral(":/icons/hicolor/scalable/actions/edit-copy.svg"))), tr("Copy")), &QAction::triggered, this, &DevView::copySelectedItem);
|
||||
menu.exec(QCursor::pos());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -18,8 +18,8 @@ inline int centerObj(int avail, int size)
|
|||
|
||||
DirButtonsItemDelegate::DirButtonsItemDelegate(QObject* parent) :
|
||||
QStyledItemDelegate(parent),
|
||||
m_refreshIcon(QIcon::fromTheme(QStringLiteral("view-refresh")).pixmap(QSize(16, 16))),
|
||||
m_folderIcon(QIcon::fromTheme(QStringLiteral("folder-open")).pixmap(QSize(16, 16)))
|
||||
m_refreshIcon(QIcon::fromTheme(QStringLiteral("view-refresh"), QIcon(QStringLiteral(":/icons/hicolor/scalable/actions/view-refresh.svg"))).pixmap(QSize(16, 16))),
|
||||
m_folderIcon(QIcon::fromTheme(QStringLiteral("folder-open"), QIcon(QStringLiteral(":/icons/hicolor/scalable/places/folder-open.svg"))).pixmap(QSize(16, 16)))
|
||||
{}
|
||||
|
||||
void DirButtonsItemDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const
|
||||
|
|
|
@ -41,7 +41,7 @@ void DirView::showContextMenu()
|
|||
{
|
||||
if(selectionModel() && selectionModel()->selectedRows(0).size() == 1) {
|
||||
QMenu menu;
|
||||
connect(menu.addAction(QIcon::fromTheme(QStringLiteral("edit-copy")), tr("Copy")), &QAction::triggered, this, &DirView::copySelectedItem);
|
||||
connect(menu.addAction(QIcon::fromTheme(QStringLiteral("edit-copy"), QIcon(QStringLiteral(":/icons/hicolor/scalable/actions/edit-copy.svg"))), tr("Copy")), &QAction::triggered, this, &DirView::copySelectedItem);
|
||||
menu.exec(QCursor::pos());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -13,7 +13,15 @@
|
|||
<property name="windowTitle">
|
||||
<string>Launcher</string>
|
||||
</property>
|
||||
<layout class="QFormLayout" name="formLayout"/>
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<item>
|
||||
<widget class="QLabel" name="label">
|
||||
<property name="text">
|
||||
<string><html><head/><body><p><span style=" font-weight:600;">Not implemented yet.</span></p><p>This will allow launching Syncthing when the tray is started.</p></body></html></string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<resources/>
|
||||
<connections/>
|
||||
|
|
|
@ -2,6 +2,14 @@
|
|||
<ui version="4.0">
|
||||
<class>QtGui::NotificationsOptionPage</class>
|
||||
<widget class="QWidget" name="QtGui::NotificationsOptionPage">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>175</width>
|
||||
<height>156</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>Notifications</string>
|
||||
</property>
|
||||
|
@ -16,7 +24,14 @@
|
|||
<item>
|
||||
<widget class="QCheckBox" name="notifyOnErrorsCheckBox">
|
||||
<property name="text">
|
||||
<string>Notify on errors</string>
|
||||
<string>Notify on internal errors</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="showSyncthingNotificationsCheckBox">
|
||||
<property name="text">
|
||||
<string>Notify on Syncthing errors</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
|
@ -27,13 +42,6 @@
|
|||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="showSyncthingNotificationsCheckBox">
|
||||
<property name="text">
|
||||
<string>Show Syncthing notifications</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="verticalSpacer">
|
||||
<property name="orientation">
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
|
||||
#include "ui_connectionoptionpage.h"
|
||||
#include "ui_notificationsoptionpage.h"
|
||||
#include "ui_appearanceoptionpage.h"
|
||||
#include "ui_launcheroptionpage.h"
|
||||
#include "ui_webviewoptionpage.h"
|
||||
|
||||
|
@ -113,6 +114,29 @@ void NotificationsOptionPage::reset()
|
|||
}
|
||||
}
|
||||
|
||||
// AppearanceOptionPage
|
||||
AppearanceOptionPage::AppearanceOptionPage(QWidget *parentWidget) :
|
||||
AppearanceOptionPageBase(parentWidget)
|
||||
{}
|
||||
|
||||
AppearanceOptionPage::~AppearanceOptionPage()
|
||||
{}
|
||||
|
||||
bool AppearanceOptionPage::apply()
|
||||
{
|
||||
if(hasBeenShown()) {
|
||||
showTraffic() = ui()->showTrafficCheckBox->isChecked();
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
void AppearanceOptionPage::reset()
|
||||
{
|
||||
if(hasBeenShown()) {
|
||||
ui()->showTrafficCheckBox->setChecked(showTraffic());
|
||||
}
|
||||
}
|
||||
|
||||
// LauncherOptionPage
|
||||
LauncherOptionPage::LauncherOptionPage(QWidget *parentWidget) :
|
||||
LauncherOptionPageBase(parentWidget)
|
||||
|
@ -187,14 +211,14 @@ SettingsDialog::SettingsDialog(Data::SyncthingConnection *connection, QWidget *p
|
|||
category->setDisplayName(tr("Tray"));
|
||||
category->assignPages(QList<Dialogs::OptionPage *>()
|
||||
<< new ConnectionOptionPage(connection) << new NotificationsOptionPage
|
||||
<< new LauncherOptionPage);
|
||||
<< new AppearanceOptionPage << new LauncherOptionPage);
|
||||
category->setIcon(QIcon(QStringLiteral(":/icons/hicolor/scalable/app/syncthingtray.svg")));
|
||||
categories << category;
|
||||
|
||||
category = new OptionCategory(this);
|
||||
category->setDisplayName(tr("Web view"));
|
||||
category->assignPages(QList<Dialogs::OptionPage *>() << new WebViewOptionPage);
|
||||
category->setIcon(QIcon::fromTheme(QStringLiteral("internet-web-browser"), QIcon(QStringLiteral(":/icons/hicolor/scalable/app/"))));
|
||||
category->setIcon(QIcon::fromTheme(QStringLiteral("internet-web-browser"), QIcon(QStringLiteral(":/icons/hicolor/scalable/apps/internet-web-browser.svg"))));
|
||||
categories << category;
|
||||
|
||||
categories << Settings::qtSettings().category();
|
||||
|
@ -202,7 +226,7 @@ SettingsDialog::SettingsDialog(Data::SyncthingConnection *connection, QWidget *p
|
|||
categoryModel()->setCategories(categories);
|
||||
|
||||
setMinimumSize(800, 450);
|
||||
setWindowIcon(QIcon::fromTheme(QStringLiteral("preferences-other")));
|
||||
setWindowIcon(QIcon::fromTheme(QStringLiteral("preferences-other"), QIcon(QStringLiteral(":/icons/hicolor/scalable/apps/preferences-other.svg"))));
|
||||
|
||||
// some settings could be applied without restarting the application, good idea?
|
||||
//connect(this, &Dialogs::SettingsDialog::applied, bind(&Dialogs::QtSettings::apply, &Settings::qtSettings()));
|
||||
|
|
|
@ -30,6 +30,8 @@ END_DECLARE_OPTION_PAGE
|
|||
|
||||
DECLARE_UI_FILE_BASED_OPTION_PAGE(NotificationsOptionPage)
|
||||
|
||||
DECLARE_UI_FILE_BASED_OPTION_PAGE(AppearanceOptionPage)
|
||||
|
||||
DECLARE_UI_FILE_BASED_OPTION_PAGE(LauncherOptionPage)
|
||||
|
||||
#if defined(SYNCTHINGTRAY_USE_WEBENGINE) || defined(SYNCTHINGTRAY_USE_WEBKIT)
|
||||
|
|
56
gui/tray.cpp
|
@ -17,6 +17,8 @@
|
|||
#include <qtutilities/misc/dialogutils.h>
|
||||
#include <qtutilities/misc/desktoputils.h>
|
||||
|
||||
#include <c++utilities/conversion/stringconversion.h>
|
||||
|
||||
#include <QApplication>
|
||||
#include <QSvgRenderer>
|
||||
#include <QPainter>
|
||||
|
@ -25,8 +27,6 @@
|
|||
#include <QDesktopServices>
|
||||
#include <QMainWindow>
|
||||
#include <QMessageBox>
|
||||
#include <QCursor>
|
||||
#include <QDesktopWidget>
|
||||
#include <QLabel>
|
||||
#include <QClipboard>
|
||||
#include <QUrl>
|
||||
|
@ -37,6 +37,7 @@
|
|||
#include <functional>
|
||||
|
||||
using namespace ApplicationUtilities;
|
||||
using namespace ConversionUtilities;
|
||||
using namespace Dialogs;
|
||||
using namespace Data;
|
||||
using namespace std;
|
||||
|
@ -76,30 +77,33 @@ TrayWidget::TrayWidget(TrayMenu *parent) :
|
|||
cornerFrame->setLayout(cornerFrameLayout);
|
||||
auto *viewIdButton = new QPushButton(cornerFrame);
|
||||
viewIdButton->setToolTip(tr("View own device ID"));
|
||||
viewIdButton->setIcon(QIcon::fromTheme(QStringLiteral("view-barcode")));
|
||||
viewIdButton->setIcon(QIcon::fromTheme(QStringLiteral("view-barcode"), QIcon(QStringLiteral(":/icons/hicolor/scalable/actions/view-barcode.svg"))));
|
||||
viewIdButton->setFlat(true);
|
||||
cornerFrameLayout->addWidget(viewIdButton);
|
||||
auto *showLogButton = new QPushButton(cornerFrame);
|
||||
showLogButton->setToolTip(tr("Show Syncthing log"));
|
||||
showLogButton->setIcon(QIcon::fromTheme(QStringLiteral("text-plain")));
|
||||
showLogButton->setIcon(QIcon::fromTheme(QStringLiteral("text-x-generic"), QIcon(QStringLiteral(":/icons/hicolor/scalable/actions/text-x-generic.svg"))));
|
||||
showLogButton->setFlat(true);
|
||||
connect(showLogButton, &QPushButton::clicked, this, &TrayWidget::showLog);
|
||||
cornerFrameLayout->addWidget(showLogButton);
|
||||
auto *scanAllButton = new QPushButton(cornerFrame);
|
||||
scanAllButton->setToolTip(tr("Rescan all directories"));
|
||||
scanAllButton->setIcon(QIcon::fromTheme(QStringLiteral("folder-sync")));
|
||||
scanAllButton->setIcon(QIcon::fromTheme(QStringLiteral("folder-sync"), QIcon(QStringLiteral(":/icons/hicolor/scalable/actions/folder-sync.svg"))));
|
||||
scanAllButton->setFlat(true);
|
||||
|
||||
cornerFrameLayout->addWidget(scanAllButton);
|
||||
m_ui->tabWidget->setCornerWidget(cornerFrame, Qt::BottomRightCorner);
|
||||
|
||||
m_ui->trafficIconLabel->setPixmap(QIcon::fromTheme(QStringLiteral("network-card"), QIcon(QStringLiteral(":/icons/hicolor/scalable/devices/network-card.svg"))).pixmap(32));
|
||||
|
||||
// connect signals and slots
|
||||
connect(m_ui->statusPushButton, &QPushButton::clicked, this, &TrayWidget::handleStatusButtonClicked);
|
||||
connect(m_ui->statusPushButton, &QPushButton::clicked, this, &TrayWidget::changeStatus);
|
||||
connect(m_ui->closePushButton, &QPushButton::clicked, &QApplication::quit);
|
||||
connect(m_ui->aboutPushButton, &QPushButton::clicked, this, &TrayWidget::showAboutDialog);
|
||||
connect(m_ui->webUiPushButton, &QPushButton::clicked, this, &TrayWidget::showWebUi);
|
||||
connect(m_ui->settingsPushButton, &QPushButton::clicked, this, &TrayWidget::showSettingsDialog);
|
||||
connect(&m_connection, &SyncthingConnection::statusChanged, this, &TrayWidget::updateStatusButton);
|
||||
connect(&m_connection, &SyncthingConnection::trafficChanged, this, &TrayWidget::updateTraffic);
|
||||
connect(m_ui->dirsTreeView, &DirView::openDir, this, &TrayWidget::openDir);
|
||||
connect(m_ui->dirsTreeView, &DirView::scanDir, this, &TrayWidget::scanDir);
|
||||
connect(m_ui->devsTreeView, &DevView::pauseResumeDev, this, &TrayWidget::pauseResumeDev);
|
||||
|
@ -133,7 +137,7 @@ void TrayWidget::showSettingsDialog()
|
|||
void TrayWidget::showAboutDialog()
|
||||
{
|
||||
if(!m_aboutDlg) {
|
||||
m_aboutDlg = new AboutDialog(this, tr("Tray application for Syncthing"), QImage(QStringLiteral(":/icons/hicolor/scalable/app/syncthingtray.svg")));
|
||||
m_aboutDlg = new AboutDialog(this, QString(), QStringLiteral(APP_AUTHOR "\nfallback icons from KDE/Breeze project\nSyncthing icons from Syncthing project"), QString(), QString(), tr("Tray application for Syncthing"), QImage(QStringLiteral(":/icons/hicolor/scalable/app/syncthingtray.svg")));
|
||||
m_aboutDlg->setWindowTitle(tr("About - Syncthing Tray"));
|
||||
m_aboutDlg->setWindowIcon(QIcon(QStringLiteral(":/icons/hicolor/scalable/app/syncthingtray.svg")));
|
||||
}
|
||||
|
@ -234,19 +238,19 @@ void TrayWidget::updateStatusButton(SyncthingStatus status)
|
|||
case SyncthingStatus::Disconnected:
|
||||
m_ui->statusPushButton->setText(tr("Connect"));
|
||||
m_ui->statusPushButton->setToolTip(tr("Not connected to Syncthing, click to connect"));
|
||||
m_ui->statusPushButton->setIcon(QIcon::fromTheme(QStringLiteral("view-refresh")));
|
||||
m_ui->statusPushButton->setIcon(QIcon::fromTheme(QStringLiteral("view-refresh"), QIcon(QStringLiteral(":/icons/hicolor/scalable/actions/view-refresh.svg"))));
|
||||
break;
|
||||
case SyncthingStatus::Default:
|
||||
case SyncthingStatus::NotificationsAvailable:
|
||||
case SyncthingStatus::Synchronizing:
|
||||
m_ui->statusPushButton->setText(tr("Pause"));
|
||||
m_ui->statusPushButton->setToolTip(tr("Syncthing is running, click to pause all devices"));
|
||||
m_ui->statusPushButton->setIcon(QIcon::fromTheme(QStringLiteral("media-playback-pause")));
|
||||
m_ui->statusPushButton->setIcon(QIcon::fromTheme(QStringLiteral("media-playback-pause"), QIcon(QStringLiteral(":/icons/hicolor/scalable/actions/media-playback-pause.svg"))));
|
||||
break;
|
||||
case SyncthingStatus::Paused:
|
||||
m_ui->statusPushButton->setText(tr("Continue"));
|
||||
m_ui->statusPushButton->setToolTip(tr("At least one device is paused, click to resume"));
|
||||
m_ui->statusPushButton->setIcon(QIcon::fromTheme(QStringLiteral("media-playback-start")));
|
||||
m_ui->statusPushButton->setIcon(QIcon::fromTheme(QStringLiteral("media-playback-start"), QIcon(QStringLiteral(":/icons/hicolor/scalable/actions/media-playback-resume.svg"))));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -261,6 +265,7 @@ void TrayWidget::applySettings()
|
|||
m_connection.setCredentials(QString(), QString());
|
||||
}
|
||||
m_connection.reconnect();
|
||||
m_ui->trafficFrame->setVisible(Settings::showTraffic());
|
||||
}
|
||||
|
||||
void TrayWidget::openDir(const QModelIndex &dirIndex)
|
||||
|
@ -292,7 +297,7 @@ void TrayWidget::pauseResumeDev(const QModelIndex &devIndex)
|
|||
}
|
||||
}
|
||||
|
||||
void TrayWidget::handleStatusButtonClicked()
|
||||
void TrayWidget::changeStatus()
|
||||
{
|
||||
switch(m_connection.status()) {
|
||||
case SyncthingStatus::Disconnected:
|
||||
|
@ -309,6 +314,12 @@ void TrayWidget::handleStatusButtonClicked()
|
|||
}
|
||||
}
|
||||
|
||||
void TrayWidget::updateTraffic(int totalIncomingTraffic, int totalOutgoingTraffic)
|
||||
{
|
||||
m_ui->inTrafficLabel->setText(totalIncomingTraffic >= 0 ? QString::fromUtf8(dataSizeToString(totalIncomingTraffic).data()) : tr("unknown"));
|
||||
m_ui->outTrafficLabel->setText(totalOutgoingTraffic >= 0 ? QString::fromUtf8(dataSizeToString(totalOutgoingTraffic).data()) : tr("unknown"));
|
||||
}
|
||||
|
||||
void TrayWidget::handleWebViewDeleted()
|
||||
{
|
||||
m_webViewDlg = nullptr;
|
||||
|
@ -343,11 +354,11 @@ TrayIcon::TrayIcon(QObject *parent) :
|
|||
m_status(SyncthingStatus::Disconnected)
|
||||
{
|
||||
// set context menu
|
||||
connect(m_contextMenu.addAction(QIcon::fromTheme(QStringLiteral("internet-web-browser")), tr("Web UI")), &QAction::triggered, m_trayMenu.widget(), &TrayWidget::showWebUi);
|
||||
connect(m_contextMenu.addAction(QIcon::fromTheme(QStringLiteral("preferences-other")), tr("Settings")), &QAction::triggered, m_trayMenu.widget(), &TrayWidget::showSettingsDialog);
|
||||
connect(m_contextMenu.addAction(QIcon::fromTheme(QStringLiteral("help-about")), tr("About")), &QAction::triggered, m_trayMenu.widget(), &TrayWidget::showAboutDialog);
|
||||
connect(m_contextMenu.addAction(QIcon::fromTheme(QStringLiteral("internet-web-browser"), QIcon(QStringLiteral(":/icons/hicolor/scalable/apps/internet-web-browser.svg"))), tr("Web UI")), &QAction::triggered, m_trayMenu.widget(), &TrayWidget::showWebUi);
|
||||
connect(m_contextMenu.addAction(QIcon::fromTheme(QStringLiteral("preferences-other"), QIcon(QStringLiteral(":/icons/hicolor/scalable/apps/preferences-other.svg"))), tr("Settings")), &QAction::triggered, m_trayMenu.widget(), &TrayWidget::showSettingsDialog);
|
||||
connect(m_contextMenu.addAction(QIcon::fromTheme(QStringLiteral("help-about"), QIcon(QStringLiteral(":/icons/hicolor/scalable/apps/help-about.svg"))), tr("About")), &QAction::triggered, m_trayMenu.widget(), &TrayWidget::showAboutDialog);
|
||||
m_contextMenu.addSeparator();
|
||||
connect(m_contextMenu.addAction(QIcon::fromTheme(QStringLiteral("window-close")), tr("Close")), &QAction::triggered, &QCoreApplication::quit);
|
||||
connect(m_contextMenu.addAction(QIcon::fromTheme(QStringLiteral("window-close"), QIcon(QStringLiteral(":/icons/hicolor/scalable/actions/window-close.svg"))), tr("Close")), &QAction::triggered, &QCoreApplication::quit);
|
||||
setContextMenu(&m_contextMenu);
|
||||
|
||||
// set initial status
|
||||
|
@ -372,22 +383,11 @@ void TrayIcon::handleActivated(QSystemTrayIcon::ActivationReason reason)
|
|||
if(false) {
|
||||
m_trayMenu.widget()->showWebUi();
|
||||
} else {
|
||||
m_trayMenu.resize(m_trayMenu.sizeHint());
|
||||
// when showing the menu manually
|
||||
// move the menu to the closest of the currently available screen
|
||||
// this implies that the tray icon is located near the edge of the screen; otherwise this behavior makes no sense
|
||||
const QPoint cursorPos(QCursor::pos());
|
||||
const QRect availableGeometry(QApplication::desktop()->availableGeometry(cursorPos));
|
||||
Qt::Alignment alignment = 0;
|
||||
alignment |= (cursorPos.x() - availableGeometry.left() < availableGeometry.right() - cursorPos.x() ? Qt::AlignLeft : Qt::AlignRight);
|
||||
alignment |= (cursorPos.y() - availableGeometry.top() < availableGeometry.bottom() - cursorPos.y() ? Qt::AlignTop : Qt::AlignBottom);
|
||||
m_trayMenu.setGeometry(
|
||||
QStyle::alignedRect(
|
||||
Qt::LeftToRight,
|
||||
alignment,
|
||||
m_trayMenu.sizeHint(),
|
||||
availableGeometry
|
||||
)
|
||||
);
|
||||
cornerWidget(&m_trayMenu);
|
||||
m_trayMenu.show();
|
||||
}
|
||||
break;
|
||||
|
|
|
@ -54,7 +54,8 @@ private slots:
|
|||
void openDir(const QModelIndex &dirIndex);
|
||||
void scanDir(const QModelIndex &dirIndex);
|
||||
void pauseResumeDev(const QModelIndex &devIndex);
|
||||
void handleStatusButtonClicked();
|
||||
void changeStatus();
|
||||
void updateTraffic(int totalIncomingTraffic, int totalOutgoingTraffic);
|
||||
void handleWebViewDeleted();
|
||||
|
||||
private:
|
||||
|
|
|
@ -155,6 +155,98 @@
|
|||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QFrame" name="trafficFrame">
|
||||
<property name="frameShape">
|
||||
<enum>QFrame::StyledPanel</enum>
|
||||
</property>
|
||||
<property name="frameShadow">
|
||||
<enum>QFrame::Sunken</enum>
|
||||
</property>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_2">
|
||||
<property name="spacing">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="leftMargin">
|
||||
<number>3</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>3</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QLabel" name="trafficIconLabel">
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>32</width>
|
||||
<height>32</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Traffic</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QWidget" name="trafficFormWidget" native="true">
|
||||
<layout class="QFormLayout" name="formLayout">
|
||||
<property name="verticalSpacing">
|
||||
<number>2</number>
|
||||
</property>
|
||||
<property name="leftMargin">
|
||||
<number>2</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>2</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>2</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<number>2</number>
|
||||
</property>
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="trafficInTextLabel">
|
||||
<property name="text">
|
||||
<string>In</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="QLabel" name="inTrafficLabel">
|
||||
<property name="text">
|
||||
<string>unknown</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="trafficOutTextLabel">
|
||||
<property name="text">
|
||||
<string>Out</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QLabel" name="outTrafficLabel">
|
||||
<property name="text">
|
||||
<string>unknown</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QTabWidget" name="tabWidget">
|
||||
<property name="tabPosition">
|
||||
|
|
|
@ -8,5 +8,22 @@
|
|||
<file>icons/hicolor/scalable/status/syncthing-disconnected.svg</file>
|
||||
<file>icons/hicolor/scalable/status/syncthing-ok.svg</file>
|
||||
<file>icons/hicolor/scalable/status/syncthing-error.svg</file>
|
||||
<file>icons/hicolor/scalable/actions/application-menu.svg</file>
|
||||
<file>icons/hicolor/scalable/actions/edit-copy.svg</file>
|
||||
<file>icons/hicolor/scalable/actions/folder-sync.svg</file>
|
||||
<file>icons/hicolor/scalable/actions/help-about.svg</file>
|
||||
<file>icons/hicolor/scalable/actions/media-playback-pause.svg</file>
|
||||
<file>icons/hicolor/scalable/actions/media-playback-start.svg</file>
|
||||
<file>icons/hicolor/scalable/actions/view-barcode.svg</file>
|
||||
<file>icons/hicolor/scalable/actions/view-refresh.svg</file>
|
||||
<file>icons/hicolor/scalable/actions/window-close.svg</file>
|
||||
<file>icons/hicolor/scalable/apps/help-about.svg</file>
|
||||
<file>icons/hicolor/scalable/apps/internet-web-browser.svg</file>
|
||||
<file>icons/hicolor/scalable/apps/preferences-other.svg</file>
|
||||
<file>icons/hicolor/scalable/devices/network-card.svg</file>
|
||||
<file>icons/hicolor/scalable/mimetypes/text-x-generic.svg</file>
|
||||
<file>icons/hicolor/scalable/places/folder-open.svg</file>
|
||||
<file>icons/hicolor/scalable/places/folder.svg</file>
|
||||
<file>icons/hicolor/scalable/places/network-workgroup.svg</file>
|
||||
</qresource>
|
||||
</RCC>
|
||||
|
|
|
@ -0,0 +1,13 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16">
|
||||
<defs id="defs3051">
|
||||
<style type="text/css" id="current-color-scheme">
|
||||
.ColorScheme-Text {
|
||||
color:#4d4d4d;
|
||||
}
|
||||
</style>
|
||||
</defs>
|
||||
<path style="fill:currentColor;fill-opacity:1;stroke:none"
|
||||
d="M 2 3 L 2 5 L 14 5 L 14 3 L 2 3 z M 2 7 L 2 9 L 14 9 L 14 7 L 2 7 z M 2 11 L 2 13 L 14 13 L 14 11 L 2 11 z "
|
||||
class="ColorScheme-Text"
|
||||
/>
|
||||
</svg>
|
After Width: | Height: | Size: 443 B |
|
@ -0,0 +1,13 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16">
|
||||
<defs id="defs3051">
|
||||
<style type="text/css" id="current-color-scheme">
|
||||
.ColorScheme-Text {
|
||||
color:#4d4d4d;
|
||||
}
|
||||
</style>
|
||||
</defs>
|
||||
<path style="fill:currentColor;fill-opacity:1;stroke:none"
|
||||
d="M 3 2 L 3 13 L 6 13 L 6 14 L 11 14 L 14 11 L 14 4 L 13 4 L 13 2 L 3.7851562 2 L 3 2 z M 4 3 L 12 3 L 12 4 L 6 4 L 6 12 L 4 12 L 4 3 z M 7 5 L 13 5 L 13 10 L 10 10 L 10 13 L 7 13 L 7 5 z "
|
||||
class="ColorScheme-Text"
|
||||
/>
|
||||
</svg>
|
After Width: | Height: | Size: 522 B |
|
@ -0,0 +1,13 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16">
|
||||
<defs id="defs3051">
|
||||
<style type="text/css" id="current-color-scheme">
|
||||
.ColorScheme-Text {
|
||||
color:#4d4d4d;
|
||||
}
|
||||
</style>
|
||||
</defs>
|
||||
<path style="fill:currentColor;fill-opacity:1;stroke:none"
|
||||
d="M 2 2 L 2 3 L 2 6 L 2 7 L 2 13 L 2 14 L 9 14 L 9 13 L 3 13 L 3 7 L 13 7 L 13 9 L 14 9 L 14 6 L 14 5 L 14 4 L 9.0078125 4 L 7.0078125 2 L 7 2.0078125 L 7 2 L 3 2 L 2 2 z M 3 3 L 6.5917969 3 L 7.59375 4 L 7 4 L 7 4.0078125 L 6.9921875 4 L 4.9921875 6 L 3 6 L 3 3 z M 11.5 9 A 2.4999997 2.5000003 0 0 0 9 11.5 A 2.4999997 2.5000003 0 0 0 9.4160156 12.876953 L 10.148438 12.144531 A 1.5 1.5 0 0 1 10 11.5 A 1.5 1.5 0 0 1 11.5 10 A 1.5 1.5 0 0 1 12.144531 10.148438 L 12.876953 9.4160156 A 2.4999997 2.5000003 0 0 0 11.5 9 z M 13.583984 10.123047 L 12.851562 10.855469 A 1.5 1.5 0 0 1 13 11.5 A 1.5 1.5 0 0 1 11.5 13 A 1.5 1.5 0 0 1 10.855469 12.851562 L 10.123047 13.583984 A 2.4999997 2.5000003 0 0 0 11.5 14 A 2.4999997 2.5000003 0 0 0 14 11.5 A 2.4999997 2.5000003 0 0 0 13.583984 10.123047 z "
|
||||
class="ColorScheme-Text"
|
||||
/>
|
||||
</svg>
|
After Width: | Height: | Size: 1.1 KiB |
|
@ -0,0 +1,13 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16">
|
||||
<defs id="defs3051">
|
||||
<style type="text/css" id="current-color-scheme">
|
||||
.ColorScheme-Text {
|
||||
color:#4d4d4d;
|
||||
}
|
||||
</style>
|
||||
</defs>
|
||||
<path style="fill:currentColor;fill-opacity:1;stroke:none"
|
||||
d="m7.5 3c-3.038 0-5.5 2.462-5.5 5.5 0 3.038 2.462 5.5 5.5 5.5 3.038 0 5.5-2.462 5.5-5.5 0-3.038-2.462-5.5-5.5-5.5m0 1c2.485 0 4.5 2.01 4.5 4.5 0 2.485-2.01 4.5-4.5 4.5-2.485 0-4.5-2.01-4.5-4.5 0-2.485 2.01-4.5 4.5-4.5m-.5 1v1h1v-1zm0 2v5h1v-5z"
|
||||
class="ColorScheme-Text"
|
||||
/>
|
||||
</svg>
|
After Width: | Height: | Size: 577 B |
|
@ -0,0 +1,13 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16">
|
||||
<defs id="defs3051">
|
||||
<style type="text/css" id="current-color-scheme">
|
||||
.ColorScheme-Text {
|
||||
color:#4d4d4d;
|
||||
}
|
||||
</style>
|
||||
</defs>
|
||||
<path style="fill:currentColor;fill-opacity:1;stroke:none"
|
||||
d="M 2 2 L 2 14 L 14 14 L 14 2 L 2 2 z M 3 3 L 13 3 L 13 13 L 3 13 L 3 3 z M 5 5 L 5 11 L 7 11 L 7 5 L 5 5 z M 9 5 L 9 11 L 11 11 L 11 5 L 9 5 z "
|
||||
class="ColorScheme-Text"
|
||||
/>
|
||||
</svg>
|
After Width: | Height: | Size: 480 B |
|
@ -0,0 +1,13 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16">
|
||||
<defs id="defs3051">
|
||||
<style type="text/css" id="current-color-scheme">
|
||||
.ColorScheme-Text {
|
||||
color:#4d4d4d;
|
||||
}
|
||||
</style>
|
||||
</defs>
|
||||
<path style="fill:currentColor;fill-opacity:1;stroke:none"
|
||||
d="M 2 2 L 2 14 L 14 14 L 14 2 L 2 2 z M 3 3 L 13 3 L 13 13 L 3 13 L 3 3 z M 6 5 L 6 11 L 10 8 L 6 5 z "
|
||||
class="ColorScheme-Text"
|
||||
/>
|
||||
</svg>
|
After Width: | Height: | Size: 438 B |
|
@ -0,0 +1,13 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16">
|
||||
<defs id="defs3051">
|
||||
<style type="text/css" id="current-color-scheme">
|
||||
.ColorScheme-Text {
|
||||
color:#4d4d4d;
|
||||
}
|
||||
</style>
|
||||
</defs>
|
||||
<path style="fill:currentColor;fill-opacity:1;stroke:none"
|
||||
d="M 2 2 L 2 14 L 3 14 L 3 2 L 2 2 z M 4 2 L 4 7 L 5 7 L 5 2 L 4 2 z M 6 2 L 6 14 L 7 14 L 7 2 L 6 2 z M 8 2 L 8 14 L 9 14 L 9 2 L 8 2 z M 10 2 L 10 8 L 11 8 L 11 2 L 10 2 z M 12 2 L 12 14 L 14 14 L 14 2 L 12 2 z "
|
||||
class="ColorScheme-Text"
|
||||
/>
|
||||
</svg>
|
After Width: | Height: | Size: 546 B |
|
@ -0,0 +1,13 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16">
|
||||
<defs id="defs3051">
|
||||
<style type="text/css" id="current-color-scheme">
|
||||
.ColorScheme-Text {
|
||||
color:#4d4d4d;
|
||||
}
|
||||
</style>
|
||||
</defs>
|
||||
<path style="fill:currentColor;fill-opacity:1;stroke:none"
|
||||
d="M 8 2 C 6.8911827 2 5.8599294 2.3193334 4.96875 2.84375 L 5.53125 3.40625 L 5.71875 3.59375 L 7.65625 5.53125 L 8.375 4.8125 L 6.75 3.1875 C 6.94534 3.1364099 7.1398623 3.0897842 7.34375 3.0625 C 7.3961563 3.0547113 7.4470287 3.0373165 7.5 3.03125 C 7.6680854 3.01418 7.827411 3 8 3 C 10.761424 3 13 5.2385759 13 8 C 13 8.243024 12.97155 8.4855082 12.9375 8.71875 C 12.917545 8.8549993 12.905714 8.9925532 12.875 9.125 C 12.80805 9.4115815 12.708353 9.672624 12.59375 9.9375 C 12.580478 9.9681753 12.576374 10.000899 12.5625 10.03125 C 12.521539 10.122908 12.454245 10.194583 12.40625 10.28125 C 12.401797 10.289291 12.410582 10.304303 12.40625 10.3125 L 13.15625 11.03125 C 13.680667 10.140071 14 9.108818 14 8 C 14 4.6862909 11.313707 2 8 2 z M 2.84375 4.96875 C 2.3193332 5.8599294 2 6.891182 2 8 C 2 11.313709 4.6862934 14 8 14 C 9.1088173 14 10.140071 13.680667 11.03125 13.15625 L 10.46875 12.59375 L 10.28125 12.40625 L 8.34375 10.5 L 7.65625 11.1875 L 9.25 12.8125 C 9.05466 12.86359 8.8601377 12.910216 8.65625 12.9375 C 8.6038437 12.945289 8.5529713 12.962684 8.5 12.96875 C 8.3319146 12.98582 8.172589 13 8 13 C 7.827411 13 7.6680854 12.98582 7.5 12.96875 C 7.3319147 12.95168 7.162744 12.939552 7 12.90625 C 4.7215847 12.440019 3 10.416246 3 8 C 3 7.7517374 3.0275593 7.5198138 3.0625 7.28125 C 3.0824555 7.1450007 3.0942865 7.0074468 3.125 6.875 C 3.1919502 6.5884185 3.2916465 6.327376 3.40625 6.0625 C 3.4192426 6.031782 3.4239145 5.9991506 3.4375 5.96875 C 3.4781185 5.8798895 3.5461122 5.8040145 3.59375 5.71875 L 3.59375 5.6875 L 2.84375 4.96875 z "
|
||||
class="ColorScheme-Text"
|
||||
/>
|
||||
</svg>
|
After Width: | Height: | Size: 1.9 KiB |
|
@ -0,0 +1,17 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16">
|
||||
<defs id="defs3051">
|
||||
<style type="text/css" id="current-color-scheme">
|
||||
.ColorScheme-Text {
|
||||
color:#4d4d4d;
|
||||
}
|
||||
.ColorScheme-NegativeText {
|
||||
color:#da4453;
|
||||
}
|
||||
</style>
|
||||
</defs>
|
||||
<path
|
||||
style="fill:currentColor;fill-opacity:1;stroke:none"
|
||||
class="ColorScheme-NegativeText"
|
||||
d="M 8,2 A 6,6 0 0 0 2,8 6,6 0 0 0 8,14 6,6 0 0 0 14,8 6,6 0 0 0 8,2 Z M 5.70703,5 8,7.29297 10.29297,5 11,5.70703 8.70703,8 11,10.29297 10.29297,11 8,8.70703 5.70703,11 5,10.29297 7.29297,8 5,5.70703 5.70703,5 Z"
|
||||
/>
|
||||
</svg>
|
After Width: | Height: | Size: 626 B |
|
@ -0,0 +1,28 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
<svg width="32" version="1.1" xmlns="http://www.w3.org/2000/svg" height="32" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape">
|
||||
<defs id="defs5455">
|
||||
<linearGradient inkscape:collect="always" id="linearGradient4143">
|
||||
<stop style="stop-color:#197cf1" id="stop4145"/>
|
||||
<stop offset="1" style="stop-color:#20bcfa" id="stop4147"/>
|
||||
</linearGradient>
|
||||
<linearGradient inkscape:collect="always" xlink:href="#linearGradient4143" id="linearGradient4149" y1="545.79797" y2="517.79797" x2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.92857108 0 0 0.92857057 28.612354 37.986142)"/>
|
||||
<linearGradient inkscape:collect="always" id="linearGradient4290">
|
||||
<stop style="stop-color:#7cbaf8" id="stop4292"/>
|
||||
<stop offset="1" style="stop-color:#f4fcff" id="stop4294"/>
|
||||
</linearGradient>
|
||||
<linearGradient inkscape:collect="always" xlink:href="#linearGradient4290" id="linearGradient4144" y1="29.999973" y2="2" x2="0" gradientUnits="userSpaceOnUse"/>
|
||||
<linearGradient inkscape:collect="always" id="linearGradient4227">
|
||||
<stop style="stop-color:#292c2f" id="stop4229"/>
|
||||
<stop offset="1" style="stop-opacity:0" id="stop4231"/>
|
||||
</linearGradient>
|
||||
<linearGradient inkscape:collect="always" xlink:href="#linearGradient4227" id="linearGradient4191" y1="9" x1="9.00001" y2="23" x2="23.00004" gradientUnits="userSpaceOnUse"/>
|
||||
</defs>
|
||||
<metadata id="metadata5458"/>
|
||||
<g inkscape:label="Capa 1" inkscape:groupmode="layer" id="layer1" transform="matrix(1 0 0 1 -384.57143 -515.798)">
|
||||
<rect width="26" x="387.57144" y="518.79797" rx="12.999993" height="26" style="fill:url(#linearGradient4149)" id="rect4130"/>
|
||||
<path style="fill:url(#linearGradient4191);opacity:0.2;fill-rule:evenodd" id="path4184" d="M 17 9 L 15 11 L 17 13 L 15 23 L 23 31 L 26 31 L 29 31 L 31 31 L 31 27 L 31 23 L 17 9 z " transform="matrix(1 0 0 1 384.57143 515.798)"/>
|
||||
<path inkscape:connector-curvature="0" style="fill:url(#linearGradient4144)" id="rect4133" d="M 16,2 C 8.4128491,2 2.2891329,7.9794391 2.0253906,15.5 2.0195214,15.66736 2,15.831158 2,16 c 0,7.756003 6.2439968,14 14,14 7.756003,0 14,-6.243997 14,-14 0,-0.168842 -0.01952,-0.33264 -0.02539,-0.5 C 29.710867,7.9794391 23.587151,2 16,2 Z m 0,1 C 23.201993,3 29,8.7980074 29,16 29,23.201993 23.201993,29 16,29 8.7980074,29 3,23.201993 3,16 3,8.7980074 8.7980074,3 16,3 Z m -1,6 0,2 2,0 0,-2 z m 0,4 0,10 2,0 0,-10 z" transform="matrix(1 0 0 1 384.57143 515.798)"/>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 2.5 KiB |
|
@ -0,0 +1,17 @@
|
|||
<svg width="48" xmlns="http://www.w3.org/2000/svg" height="48">
|
||||
<defs>
|
||||
<linearGradient id="a" y1="543.8" y2="503.8" gradientUnits="userSpaceOnUse" x2="0">
|
||||
<stop stop-color="#197cf1"/>
|
||||
<stop offset="1" stop-color="#20bcfa"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="b" y1="503.8" y2="543.8" x2="0" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#abf9c7"/>
|
||||
<stop offset="1" stop-color="#54d883"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<g transform="translate(-384.57-499.8)">
|
||||
<rect width="40" x="388.57" y="503.8" fill="url(#a)" rx="20" height="40"/>
|
||||
<path fill="url(#b)" fill-rule="evenodd" d="m408.57 503.8c-1.452 0-2.864.16-4.227.451l-1.773 3.549-2.68-2.01c-4.806 2.311-8.529 6.472-10.254 11.584l3.934-1.574 3 2 1-3 13-7-.793-3.961c-.4-.024-.801-.039-1.207-.039m14.811 6.568l-.811 2.432 1 1-4 6 2 7 6.633.83c.239-1.239.367-2.519.367-3.83 0-3.425-.857-6.641-2.361-9.453l-1.639-.547.596-1.193c-.535-.794-1.144-1.531-1.785-2.238m-34.414 9.432c-.221 1.096-.346 2.227-.381 3.381l6.984 2.619-1-3-2-3zm6.604 6l5 12v4.338c2.449 1.065 5.151 1.662 8 1.662.199 0 .395-.008.592-.014l6.408-10.986-16-9z"/>
|
||||
<path opacity=".2" d="m4.051 23.5c-.004.17-.051.329-.051.5 0 11.08 8.92 20 20 20 11.08 0 20-8.92 20-20 0-.171-.047-.33-.051-.5-.03 1.206-.121 2.398-.354 3.541-.266 1.304-.657 2.561-1.162 3.758-.505 1.197-1.122 2.335-1.84 3.398-.717 1.064-1.536 2.053-2.439 2.957-.904.904-1.893 1.722-2.957 2.439-1.064.717-2.201 1.335-3.398 1.84-1.197.505-2.454.897-3.758 1.162-1.304.266-2.656.404-4.04.404-1.385 0-2.737-.139-4.04-.404-1.304-.266-2.561-.657-3.758-1.162-.599-.252-1.183-.533-1.75-.84-.567-.307-1.117-.641-1.648-1-1.064-.717-2.053-1.536-2.957-2.439-.904-.904-1.722-1.893-2.439-2.957-.717-1.064-1.335-2.201-1.84-3.398-.505-1.197-.897-2.454-1.162-3.758-.233-1.143-.323-2.335-.354-3.541" transform="translate(384.57 499.8)"/>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 1.8 KiB |
|
@ -0,0 +1,28 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
<svg width="32" version="1.1" xmlns="http://www.w3.org/2000/svg" height="32" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape">
|
||||
<defs id="defs5455">
|
||||
<linearGradient inkscape:collect="always" xlink:href="#linearGradient4303" id="linearGradient4238" y1="545.79797" y2="517.79797" x2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1 0 0 1 -0.000006 0)"/>
|
||||
<linearGradient inkscape:collect="always" xlink:href="#linearGradient4159" id="linearGradient4370" y1="30" y2="1.999974" x2="0" gradientUnits="userSpaceOnUse"/>
|
||||
<linearGradient inkscape:collect="always" id="linearGradient4303">
|
||||
<stop style="stop-color:#c6cdd1" id="stop4305"/>
|
||||
<stop offset="1" style="stop-color:#e0e5e7" id="stop4307"/>
|
||||
</linearGradient>
|
||||
<linearGradient inkscape:collect="always" id="linearGradient4159">
|
||||
<stop style="stop-color:#2a2c2f" id="stop4161"/>
|
||||
<stop offset="1" style="stop-color:#424649" id="stop4163"/>
|
||||
</linearGradient>
|
||||
<linearGradient inkscape:collect="always" xlink:href="#linearGradient4227" id="linearGradient4198" y1="9" x1="9.00001" y2="22.999973" x2="23" gradientUnits="userSpaceOnUse"/>
|
||||
<linearGradient inkscape:collect="always" id="linearGradient4227">
|
||||
<stop style="stop-color:#292c2f" id="stop4229"/>
|
||||
<stop offset="1" style="stop-opacity:0" id="stop4231"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<metadata id="metadata5458"/>
|
||||
<g inkscape:label="Capa 1" inkscape:groupmode="layer" id="layer1" transform="matrix(1 0 0 1 -384.57143 -515.798)">
|
||||
<rect width="27.999989" x="386.57144" y="517.79797" rx="13.999994" height="28" style="fill:url(#linearGradient4238)" id="rect4175"/>
|
||||
<path inkscape:connector-curvature="0" style="fill:url(#linearGradient4198);opacity:0.2;fill-rule:evenodd" id="path4175" d="m 9.4003906,15 -0.099609,2 0.9999998,1 10.970703,10.970703 c 3.4891,-1.412467 6.267011,-4.183045 7.6875,-7.667969 L 22.706,14.95 22.191,14.6 19.400391,15 19.318359,16.662109 17.706,14.95 17.191,14.6 14.400391,15 14.318359,16.662109 12.706,14.95 12.191,14.6 Z" transform="matrix(1 0 0 1 384.57143 515.798)"/>
|
||||
<path inkscape:connector-curvature="0" style="fill:url(#linearGradient4370)" id="rect4176" d="m 16,14 c -1.108,0 -2,0.892 -2,2 0,1.108 0.892,2 2,2 1.108,0 2,-0.892 2,-2 0,-1.108 -0.892,-2 -2,-2 z m -5,0 c -1.108,0 -2,0.892 -2,2 0,1.108 0.892,2 2,2 1.108,0 2,-0.892 2,-2 0,-1.108 -0.892,-2 -2,-2 z m 10,0 c -1.108,0 -2,0.892 -2,2 0,1.108 0.892,2 2,2 1.108,0 2,-0.892 2,-2 0,-1.108 -0.892,-2 -2,-2 z" transform="matrix(1 0 0 1 384.57143 515.798)"/>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 2.6 KiB |
|
@ -0,0 +1,55 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
<svg width="64" version="1.1" xmlns="http://www.w3.org/2000/svg" height="64" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape">
|
||||
<defs id="defs5455">
|
||||
<linearGradient inkscape:collect="always" id="linearGradient4251-0">
|
||||
<stop style="stop-color:#63984b" id="stop4253-4"/>
|
||||
<stop offset="1" style="stop-color:#8fc278" id="stop4255-2"/>
|
||||
</linearGradient>
|
||||
<linearGradient inkscape:collect="always" xlink:href="#linearGradient4251-0" id="linearGradient4232" y1="54" y2="12" x2="0" gradientUnits="userSpaceOnUse"/>
|
||||
<linearGradient inkscape:collect="always" xlink:href="#linearGradient4159" id="linearGradient4384" y1="1043.3622" y2="1012.3622" x2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.625 0 0 0.54839315 437.17147 -33.374703)"/>
|
||||
<linearGradient inkscape:collect="always" id="linearGradient4159">
|
||||
<stop style="stop-color:#2a2c2f" id="stop4161"/>
|
||||
<stop offset="1" style="stop-color:#424649" id="stop4163"/>
|
||||
</linearGradient>
|
||||
<linearGradient inkscape:collect="always" id="linearGradient4300-2">
|
||||
<stop style="stop-color:#22a7f0" id="stop4302-4"/>
|
||||
<stop offset="1" style="stop-color:#19b5fe" id="stop4304-7"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="linearGradient4300-2-3">
|
||||
<stop style="stop-color:#f9b425" id="stop4302-4-0"/>
|
||||
<stop offset="1" style="stop-color:#f9bf3b" id="stop4304-1"/>
|
||||
</linearGradient>
|
||||
<linearGradient inkscape:collect="always" xlink:href="#linearGradient4300-2" id="linearGradient4824" y1="523.79797" y2="516.79797" gradientUnits="userSpaceOnUse" x2="0" gradientTransform="matrix(1 0 0 1 -376.5722 -485.79797)"/>
|
||||
<linearGradient inkscape:collect="always" xlink:href="#linearGradient4300-2" id="linearGradient4830" y1="523.79797" y2="516.79797" gradientUnits="userSpaceOnUse" x2="0" gradientTransform="matrix(1 0 0 1 -376.5722 -479.79797)"/>
|
||||
<linearGradient inkscape:collect="always" id="linearGradient4227">
|
||||
<stop style="stop-color:#292c2f" id="stop4229"/>
|
||||
<stop offset="1" style="stop-opacity:0" id="stop4231"/>
|
||||
</linearGradient>
|
||||
<linearGradient inkscape:collect="always" xlink:href="#linearGradient4227" id="linearGradient4864" y1="20" x1="20" y2="48" x2="48" gradientUnits="userSpaceOnUse"/>
|
||||
<linearGradient inkscape:collect="always" xlink:href="#linearGradient4227" id="linearGradient4936" y1="6" x1="-6" y2="36" gradientUnits="userSpaceOnUse" x2="24" gradientTransform="matrix(1 0 0 1 0 12)"/>
|
||||
<linearGradient inkscape:collect="always" xlink:href="#linearGradient4227" id="linearGradient4940" y1="6" x1="-6" y2="36" gradientUnits="userSpaceOnUse" x2="24" gradientTransform="matrix(1 0 0 1 0 18)"/>
|
||||
</defs>
|
||||
<metadata id="metadata5458"/>
|
||||
<g inkscape:label="Capa 1" inkscape:groupmode="layer" id="layer1" transform="matrix(1 0 0 1 -376.57144 -491.79797)">
|
||||
<path inkscape:connector-curvature="0" style="fill:url(#linearGradient4232)" id="rect4200" d="m 6,12 0,42 4,0 0,-4 12,0 0,4 30,0 0,-4 6,0 0,-26 -18,0 -30,0 0,-10 0,-2 z" transform="matrix(1 0 0 1 376.57144 491.79797)"/>
|
||||
<path style="fill:url(#linearGradient4940);opacity:0.2;fill-rule:evenodd" id="path4938" d="M 15 40 L 10 44 L 16 50 L 22 50 L 22 54 L 29 54 L 15 40 z " transform="matrix(1 0 0 1 376.57144 491.79797)"/>
|
||||
<path style="fill:url(#linearGradient4936);opacity:0.2;fill-rule:evenodd" id="path4934" d="M 15 34 L 10 38 L 22 50 L 26 54 L 35 54 L 15 34 z " transform="matrix(1 0 0 1 376.57144 491.79797)"/>
|
||||
<path inkscape:connector-curvature="0" style="fill:url(#linearGradient4864);opacity:0.2;fill-rule:evenodd" id="path4842" d="m 48,30 -20,17 6,7 18,0 0,-4 6,0 0,-10 z" transform="matrix(1 0 0 1 376.57144 491.79797)"/>
|
||||
<rect width="29.999998" x="398.57144" y="544.79797" height="0.999996" style="fill:#dce269" id="rect4234"/>
|
||||
<path inkscape:connector-curvature="0" style="color:#000000" id="path4303" d="m 406.57144,539.79797 0,1 1,0 0,-1 -1,0 z m 1,1 0,1 1,0 0,-1 -1,0 z m 1,0 1,0 0,-1 -1,0 0,1 z m 1,0 0,1 1,0 0,-1 -1,0 z m 1,0 1,0 0,-1 -1,0 0,1 z m 1,0 0,1 1,0 0,-1 -1,0 z m 1,0 1,0 0,-1 -1,0 0,1 z m 1,0 0,1 1,0 0,-1 -1,0 z m 1,0 1,0 0,-1 -1,0 0,1 z m 1,0 0,1 1,0 0,-1 -1,0 z m 1,0 1,0 0,-1 -1,0 0,1 z m 1,0 0,1 1,0 0,-1 -1,0 z m 1,0 1,0 0,-1 -1,0 0,1 z m 1,0 0,1 1,0 0,-1 -1,0 z m 1,0 1,0 0,-1 -1,0 0,1 z m 1,0 0,1 1,0 0,-1 -1,0 z"/>
|
||||
<path inkscape:connector-curvature="0" style="color:#000000" id="path4313" d="m 390.57144,538.79797 0,1 1,0 0,-1 -1,0 z m 1,1 0,1 1,0 0,-1 -1,0 z m 1,0 1,0 0,-1 -1,0 0,1 z m 1,0 0,1 1,0 0,-1 -1,0 z m 1,0 1,0 0,-1 -1,0 0,1 z m -4,0 -1,0 0,1 1,0 0,-1 z"/>
|
||||
<rect width="20" x="404.67142" y="521.79797" height="17.00019" style="fill:url(#linearGradient4384);fill-rule:evenodd" id="rect4241"/>
|
||||
<rect width="4" x="382.57144" y="503.79797" height="42" style="fill:#afc0c6" id="rect4487"/>
|
||||
<rect width="1" x="382.57144" y="503.79797" height="42" style="fill:#96aab5" id="rect4489"/>
|
||||
<path inkscape:connector-curvature="0" style="color:#000000" id="path4497" d="m 422.57144,518.79797 0,1 -1,0 0,-1 1,0 z m -1,1 0,1 -1,0 0,-1 1,0 z m -1,0 -1,0 0,-1 1,0 0,1 z m -1,0 0,1 -1,0 0,-1 1,0 z m -1,0 -1,0 0,-1 1,0 0,1 z m -1,0 0,1 -1,0 0,-1 1,0 z m -1,0 -1,0 0,-1 1,0 0,1 z m -1,0 0,1 -1,0 0,-1 1,0 z m -1,0 -1,0 0,-1 1,0 0,1 z m -1,0 0,1 -1,0 0,-1 1,0 z m -1,0 -1,0 0,-1 1,0 0,1 z m -1,0 0,1 -1,0 0,-1 1,0 z m -1,0 -1,0 0,-1 1,0 0,1 z m -1,0 0,1 -1,0 0,-1 1,0 z m -1,0 -1,0 0,-1 1,0 0,1 z m -1,0 0,1 -1,0 0,-1 1,0 z"/>
|
||||
<path inkscape:connector-curvature="0" style="fill:url(#linearGradient4824)" id="path4822" d="m 386.57145,525.79797 0,4 3.90039,0 c 0.0355,0 0.0651,-0.016 0.0996,-0.0195 l 0,0.0195 1,0 0,-4 -1,0 0,0.0195 c -0.0345,-0.004 -0.0641,-0.0195 -0.0996,-0.0195 l -3.90039,0 z"/>
|
||||
<path inkscape:connector-curvature="0" style="fill:url(#linearGradient4830)" id="path4828" d="m 386.57145,531.79797 0,4 3.90039,0 c 0.0355,0 0.0651,-0.016 0.0996,-0.0195 l 0,0.0195 1,0 0,-4 -1,0 0,0.0195 c -0.0345,-0.004 -0.0641,-0.0195 -0.0996,-0.0195 l -3.90039,0 z"/>
|
||||
<rect width="5" x="386.57144" y="534.79797" height="1" style="opacity:0.09" id="rect4832"/>
|
||||
<rect width="5" x="386.57144" y="528.79797" height="1" style="opacity:0.09" id="rect4834"/>
|
||||
<rect width="2" x="381.57144" y="525.79797" height="4" style="fill:#afc0c6" id="rect4197-7"/>
|
||||
<rect width="2" x="381.57144" y="531.79797" height="4" style="fill:#afc0c6" id="rect4197-5"/>
|
||||
<path inkscape:connector-curvature="0" style="fill:#afc0c6" id="rect4161" d="m 413.67142,524.29807 0,1 6,0 0,7 -6,0 0,2 0,1 -1,0 c -0.55401,0 -1,-0.44599 -1,-1 l 0,-2 0,-2 0,-1 1,0 0,-4 -3,0 0,4 1,0 0,1 0,2 0,2 c 0,1.108 0.892,2 2,2 l 1,0 2,0 2,0 0,-1 -2,0 0,-1 5,0 0,-1 0,-1 0,-8 -7,0 z m -3,3 1,0 0,1 -1,0 0,-1 z m -2,3 0,4 1,0 0,-2 0,-2 -1,0 z"/>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 6.6 KiB |
|
@ -0,0 +1,8 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
<svg width="16" version="1.1" xmlns="http://www.w3.org/2000/svg" height="16" viewBox="0 0 16 16" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape">
|
||||
<defs id="defs4"/>
|
||||
<metadata id="metadata7"/>
|
||||
<path inkscape:label="Capa 1" inkscape:groupmode="layer" style="fill:#6c7a89;color:#000000;stroke-width:1.4" id="rect4020" d="M 2 2 L 2 3 L 8 3 L 8 2 L 2 2 z M 2 5 L 2 6 L 14 6 L 14 5 L 2 5 z M 2 8 L 2 9 L 8 9 L 8 8 L 2 8 z M 2 10 L 2 11 L 14 11 L 14 10 L 2 10 z M 2 13 L 2 14 L 11 14 L 11 13 L 2 13 z "/>
|
||||
</svg>
|
After Width: | Height: | Size: 635 B |
|
@ -0,0 +1,14 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 22 22">
|
||||
<defs id="defs3051">
|
||||
<style type="text/css" id="current-color-scheme">
|
||||
.ColorScheme-Text {
|
||||
color:#4d4d4d;
|
||||
}
|
||||
</style>
|
||||
</defs>
|
||||
<path
|
||||
style="opacity:1;fill:currentColor;fill-opacity:1;stroke:none"
|
||||
d="M 3 3 L 3 4 L 3 19 L 4 19 L 19 19 L 19 18 L 19 5 L 12.007812 5 L 10.007812 3 L 10 3.0078125 L 10 3 L 4 3 L 3 3 z M 9.0078125 8 L 18 8 L 18 18 L 4 18 L 4 10 L 7 10 L 7 9.9921875 L 7.0078125 10 L 9.0078125 8 z "
|
||||
id="rect4069"
|
||||
class="ColorScheme-Text" />
|
||||
</svg>
|
After Width: | Height: | Size: 585 B |
|
@ -0,0 +1,13 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 22 22">
|
||||
<defs id="defs3051">
|
||||
<style type="text/css" id="current-color-scheme">
|
||||
.ColorScheme-Text {
|
||||
color:#4d4d4d
|
||||
}
|
||||
</style>
|
||||
</defs>
|
||||
<path
|
||||
style="fill:currentColor;fill-opacity:1;stroke:none"
|
||||
d="M 3 3 L 3 4 L 3 19 L 4 19 L 19 19 L 19 18 L 19 5 L 12.007812 5 L 10.007812 3 L 10 3.0078125 L 10 3 L 4 3 L 3 3 z M 4 4 L 7 4 L 9.5859375 4 L 10.589844 5.0039062 L 6.5703125 9 L 6.5683594 9 L 4 9 L 4 4 z M 9.0078125 8 L 18 8 L 18 18 L 4 18 L 4 10 L 5.5625 10 L 7 10 L 7 9.9921875 L 7.0078125 10 L 9.0078125 8 z "
|
||||
class="ColorScheme-Text" />
|
||||
</svg>
|
After Width: | Height: | Size: 654 B |
|
@ -0,0 +1,13 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 22 22">
|
||||
<defs id="defs3051">
|
||||
<style type="text/css" id="current-color-scheme">
|
||||
.ColorScheme-Text {
|
||||
color:#4d4d4d
|
||||
}
|
||||
</style>
|
||||
</defs>
|
||||
<path
|
||||
style="fill:currentColor;fill-opacity:1;stroke:none"
|
||||
d="M 3 3 L 3 19 L 19 19 L 19 3 L 3 3 z M 14 4 L 18 4 L 18 5 L 14 5 L 14 4 z M 4 7 L 18 7 L 18 8 L 4 8 L 4 7 z M 14 10 L 18 10 L 18 11 L 14 11 L 14 10 z M 4 13 L 18 13 L 18 14 L 4 14 L 4 13 z M 14 16 L 18 16 L 18 17 L 14 17 L 14 16 z "
|
||||
class="ColorScheme-Text" />
|
||||
</svg>
|
After Width: | Height: | Size: 574 B |
|
@ -4,89 +4,89 @@
|
|||
<context>
|
||||
<name>Data::SyncthingConnection</name>
|
||||
<message>
|
||||
<location filename="../data/syncthingconnection.cpp" line="70"/>
|
||||
<location filename="../data/syncthingconnection.cpp" line="101"/>
|
||||
<source>disconnected</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../data/syncthingconnection.cpp" line="72"/>
|
||||
<location filename="../data/syncthingconnection.cpp" line="103"/>
|
||||
<source>connected</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../data/syncthingconnection.cpp" line="74"/>
|
||||
<location filename="../data/syncthingconnection.cpp" line="105"/>
|
||||
<source>connected, notifications available</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../data/syncthingconnection.cpp" line="76"/>
|
||||
<location filename="../data/syncthingconnection.cpp" line="107"/>
|
||||
<source>connected, paused</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../data/syncthingconnection.cpp" line="78"/>
|
||||
<location filename="../data/syncthingconnection.cpp" line="109"/>
|
||||
<source>connected, synchronizing</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../data/syncthingconnection.cpp" line="80"/>
|
||||
<location filename="../data/syncthingconnection.cpp" line="111"/>
|
||||
<source>unknown</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../data/syncthingconnection.cpp" line="355"/>
|
||||
<location filename="../data/syncthingconnection.cpp" line="386"/>
|
||||
<source>Unable to parse Syncthing log: </source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../data/syncthingconnection.cpp" line="359"/>
|
||||
<location filename="../data/syncthingconnection.cpp" line="390"/>
|
||||
<source>Unable to request system log: </source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../data/syncthingconnection.cpp" line="387"/>
|
||||
<location filename="../data/syncthingconnection.cpp" line="492"/>
|
||||
<location filename="../data/syncthingconnection.cpp" line="418"/>
|
||||
<location filename="../data/syncthingconnection.cpp" line="518"/>
|
||||
<source>Unable to parse Syncthing config: </source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../data/syncthingconnection.cpp" line="392"/>
|
||||
<location filename="../data/syncthingconnection.cpp" line="497"/>
|
||||
<location filename="../data/syncthingconnection.cpp" line="423"/>
|
||||
<location filename="../data/syncthingconnection.cpp" line="523"/>
|
||||
<source>Unable to request Syncthing config: </source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../data/syncthingconnection.cpp" line="553"/>
|
||||
<location filename="../data/syncthingconnection.cpp" line="580"/>
|
||||
<source>Unable to parse connections: </source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../data/syncthingconnection.cpp" line="558"/>
|
||||
<location filename="../data/syncthingconnection.cpp" line="585"/>
|
||||
<source>Unable to request connections: </source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../data/syncthingconnection.cpp" line="595"/>
|
||||
<location filename="../data/syncthingconnection.cpp" line="626"/>
|
||||
<source>Unable to parse Syncthing events: </source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../data/syncthingconnection.cpp" line="617"/>
|
||||
<location filename="../data/syncthingconnection.cpp" line="648"/>
|
||||
<source>Unable to request Syncthing events: </source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../data/syncthingconnection.cpp" line="727"/>
|
||||
<location filename="../data/syncthingconnection.cpp" line="799"/>
|
||||
<source>Unable to request rescan: </source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../data/syncthingconnection.cpp" line="742"/>
|
||||
<location filename="../data/syncthingconnection.cpp" line="814"/>
|
||||
<source>Unable to request pause/resume: </source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../data/syncthingconnection.cpp" line="323"/>
|
||||
<location filename="../data/syncthingconnection.cpp" line="354"/>
|
||||
<source>Unable to request QR-Code: </source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -269,6 +269,19 @@
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>QtGui::AppearanceOptionPage</name>
|
||||
<message>
|
||||
<location filename="../gui/appearanceoptionpage.ui" line="6"/>
|
||||
<source>Appearance</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/appearanceoptionpage.ui" line="12"/>
|
||||
<source>Show traffic</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>QtGui::ConnectionOptionPage</name>
|
||||
<message>
|
||||
|
@ -340,44 +353,49 @@
|
|||
<source>Launcher</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/launcheroptionpage.ui" line="20"/>
|
||||
<source><html><head/><body><p><span style=" font-weight:600;">Not implemented yet.</span></p><p>This will allow launching Syncthing when the tray is started.</p></body></html></source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>QtGui::NotificationsOptionPage</name>
|
||||
<message>
|
||||
<location filename="../gui/notificationsoptionpage.ui" line="6"/>
|
||||
<location filename="../gui/notificationsoptionpage.ui" line="14"/>
|
||||
<source>Notifications</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/notificationsoptionpage.ui" line="12"/>
|
||||
<location filename="../gui/notificationsoptionpage.ui" line="20"/>
|
||||
<source>Notify on disconnect</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/notificationsoptionpage.ui" line="19"/>
|
||||
<source>Notify on errors</source>
|
||||
<location filename="../gui/notificationsoptionpage.ui" line="27"/>
|
||||
<source>Notify on internal errors</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/notificationsoptionpage.ui" line="26"/>
|
||||
<location filename="../gui/notificationsoptionpage.ui" line="34"/>
|
||||
<source>Notify on Syncthing errors</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/notificationsoptionpage.ui" line="41"/>
|
||||
<source>Notify on sync complete</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/notificationsoptionpage.ui" line="33"/>
|
||||
<source>Show Syncthing notifications</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>QtGui::SettingsDialog</name>
|
||||
<message>
|
||||
<location filename="../gui/settingsdialog.cpp" line="187"/>
|
||||
<location filename="../gui/settingsdialog.cpp" line="211"/>
|
||||
<source>Tray</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/settingsdialog.cpp" line="195"/>
|
||||
<location filename="../gui/settingsdialog.cpp" line="219"/>
|
||||
<source>Web view</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -385,22 +403,22 @@
|
|||
<context>
|
||||
<name>QtGui::TrayIcon</name>
|
||||
<message>
|
||||
<location filename="../gui/tray.cpp" line="346"/>
|
||||
<location filename="../gui/tray.cpp" line="357"/>
|
||||
<source>Web UI</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/tray.cpp" line="347"/>
|
||||
<location filename="../gui/tray.cpp" line="358"/>
|
||||
<source>Settings</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/tray.cpp" line="348"/>
|
||||
<location filename="../gui/tray.cpp" line="359"/>
|
||||
<source>About</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/tray.cpp" line="350"/>
|
||||
<location filename="../gui/tray.cpp" line="361"/>
|
||||
<source>Close</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -464,17 +482,40 @@
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.ui" line="103"/>
|
||||
<location filename="../gui/tray.cpp" line="235"/>
|
||||
<location filename="../gui/tray.cpp" line="239"/>
|
||||
<source>Connect</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.ui" line="178"/>
|
||||
<location filename="../gui/traywidget.ui" line="191"/>
|
||||
<source>Traffic</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.ui" line="216"/>
|
||||
<source>In</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.ui" line="223"/>
|
||||
<location filename="../gui/traywidget.ui" line="240"/>
|
||||
<location filename="../gui/tray.cpp" line="319"/>
|
||||
<location filename="../gui/tray.cpp" line="320"/>
|
||||
<source>unknown</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.ui" line="230"/>
|
||||
<source>Out</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.ui" line="270"/>
|
||||
<source>Directories</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.ui" line="207"/>
|
||||
<location filename="../gui/traywidget.ui" line="299"/>
|
||||
<source>Devices</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -494,82 +535,82 @@
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/tray.cpp" line="78"/>
|
||||
<location filename="../gui/tray.cpp" line="79"/>
|
||||
<source>View own device ID</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/tray.cpp" line="117"/>
|
||||
<location filename="../gui/tray.cpp" line="121"/>
|
||||
<source>Settings - Syncthing tray</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/tray.cpp" line="136"/>
|
||||
<location filename="../gui/tray.cpp" line="140"/>
|
||||
<source>Tray application for Syncthing</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/tray.cpp" line="89"/>
|
||||
<location filename="../gui/tray.cpp" line="90"/>
|
||||
<source>Rescan all directories</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/tray.cpp" line="83"/>
|
||||
<location filename="../gui/tray.cpp" line="84"/>
|
||||
<source>Show Syncthing log</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/tray.cpp" line="137"/>
|
||||
<location filename="../gui/tray.cpp" line="141"/>
|
||||
<source>About - Syncthing Tray</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/tray.cpp" line="175"/>
|
||||
<location filename="../gui/tray.cpp" line="179"/>
|
||||
<source>Own device ID - Syncthing Tray</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/tray.cpp" line="185"/>
|
||||
<location filename="../gui/tray.cpp" line="189"/>
|
||||
<source>device ID is unknown</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/tray.cpp" line="193"/>
|
||||
<location filename="../gui/tray.cpp" line="197"/>
|
||||
<source>Copy to clipboard</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/tray.cpp" line="209"/>
|
||||
<location filename="../gui/tray.cpp" line="213"/>
|
||||
<source>Log - Syncthing</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/tray.cpp" line="236"/>
|
||||
<location filename="../gui/tray.cpp" line="240"/>
|
||||
<source>Not connected to Syncthing, click to connect</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/tray.cpp" line="242"/>
|
||||
<location filename="../gui/tray.cpp" line="246"/>
|
||||
<source>Pause</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/tray.cpp" line="243"/>
|
||||
<location filename="../gui/tray.cpp" line="247"/>
|
||||
<source>Syncthing is running, click to pause all devices</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/tray.cpp" line="248"/>
|
||||
<location filename="../gui/tray.cpp" line="252"/>
|
||||
<source>At least one device is paused, click to resume</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/tray.cpp" line="247"/>
|
||||
<location filename="../gui/tray.cpp" line="251"/>
|
||||
<source>Continue</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/tray.cpp" line="272"/>
|
||||
<location filename="../gui/tray.cpp" line="277"/>
|
||||
<source>The directly <i>%1</i> does not exist on the local machine.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -586,7 +627,7 @@
|
|||
<name>QtGui::WebViewOptionPage</name>
|
||||
<message>
|
||||
<location filename="../gui/webviewoptionpage.ui" line="14"/>
|
||||
<location filename="../gui/settingsdialog.cpp" line="149"/>
|
||||
<location filename="../gui/settingsdialog.cpp" line="173"/>
|
||||
<source>General</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -616,7 +657,7 @@
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/settingsdialog.cpp" line="151"/>
|
||||
<location filename="../gui/settingsdialog.cpp" line="175"/>
|
||||
<source>Syncthing Tray has not been built with vieb view support utilizing either Qt WebKit or Qt WebEngine.
|
||||
The Web UI will be opened in the default web browser instead.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
|
|
|
@ -4,89 +4,89 @@
|
|||
<context>
|
||||
<name>Data::SyncthingConnection</name>
|
||||
<message>
|
||||
<location filename="../data/syncthingconnection.cpp" line="70"/>
|
||||
<location filename="../data/syncthingconnection.cpp" line="101"/>
|
||||
<source>disconnected</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../data/syncthingconnection.cpp" line="72"/>
|
||||
<location filename="../data/syncthingconnection.cpp" line="103"/>
|
||||
<source>connected</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../data/syncthingconnection.cpp" line="74"/>
|
||||
<location filename="../data/syncthingconnection.cpp" line="105"/>
|
||||
<source>connected, notifications available</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../data/syncthingconnection.cpp" line="76"/>
|
||||
<location filename="../data/syncthingconnection.cpp" line="107"/>
|
||||
<source>connected, paused</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../data/syncthingconnection.cpp" line="78"/>
|
||||
<location filename="../data/syncthingconnection.cpp" line="109"/>
|
||||
<source>connected, synchronizing</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../data/syncthingconnection.cpp" line="80"/>
|
||||
<location filename="../data/syncthingconnection.cpp" line="111"/>
|
||||
<source>unknown</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../data/syncthingconnection.cpp" line="355"/>
|
||||
<location filename="../data/syncthingconnection.cpp" line="386"/>
|
||||
<source>Unable to parse Syncthing log: </source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../data/syncthingconnection.cpp" line="359"/>
|
||||
<location filename="../data/syncthingconnection.cpp" line="390"/>
|
||||
<source>Unable to request system log: </source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../data/syncthingconnection.cpp" line="387"/>
|
||||
<location filename="../data/syncthingconnection.cpp" line="492"/>
|
||||
<location filename="../data/syncthingconnection.cpp" line="418"/>
|
||||
<location filename="../data/syncthingconnection.cpp" line="518"/>
|
||||
<source>Unable to parse Syncthing config: </source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../data/syncthingconnection.cpp" line="392"/>
|
||||
<location filename="../data/syncthingconnection.cpp" line="497"/>
|
||||
<location filename="../data/syncthingconnection.cpp" line="423"/>
|
||||
<location filename="../data/syncthingconnection.cpp" line="523"/>
|
||||
<source>Unable to request Syncthing config: </source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../data/syncthingconnection.cpp" line="553"/>
|
||||
<location filename="../data/syncthingconnection.cpp" line="580"/>
|
||||
<source>Unable to parse connections: </source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../data/syncthingconnection.cpp" line="558"/>
|
||||
<location filename="../data/syncthingconnection.cpp" line="585"/>
|
||||
<source>Unable to request connections: </source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../data/syncthingconnection.cpp" line="595"/>
|
||||
<location filename="../data/syncthingconnection.cpp" line="626"/>
|
||||
<source>Unable to parse Syncthing events: </source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../data/syncthingconnection.cpp" line="617"/>
|
||||
<location filename="../data/syncthingconnection.cpp" line="648"/>
|
||||
<source>Unable to request Syncthing events: </source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../data/syncthingconnection.cpp" line="727"/>
|
||||
<location filename="../data/syncthingconnection.cpp" line="799"/>
|
||||
<source>Unable to request rescan: </source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../data/syncthingconnection.cpp" line="742"/>
|
||||
<location filename="../data/syncthingconnection.cpp" line="814"/>
|
||||
<source>Unable to request pause/resume: </source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../data/syncthingconnection.cpp" line="323"/>
|
||||
<location filename="../data/syncthingconnection.cpp" line="354"/>
|
||||
<source>Unable to request QR-Code: </source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -269,6 +269,19 @@
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>QtGui::AppearanceOptionPage</name>
|
||||
<message>
|
||||
<location filename="../gui/appearanceoptionpage.ui" line="6"/>
|
||||
<source>Appearance</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/appearanceoptionpage.ui" line="12"/>
|
||||
<source>Show traffic</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>QtGui::ConnectionOptionPage</name>
|
||||
<message>
|
||||
|
@ -340,44 +353,49 @@
|
|||
<source>Launcher</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/launcheroptionpage.ui" line="20"/>
|
||||
<source><html><head/><body><p><span style=" font-weight:600;">Not implemented yet.</span></p><p>This will allow launching Syncthing when the tray is started.</p></body></html></source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>QtGui::NotificationsOptionPage</name>
|
||||
<message>
|
||||
<location filename="../gui/notificationsoptionpage.ui" line="6"/>
|
||||
<location filename="../gui/notificationsoptionpage.ui" line="14"/>
|
||||
<source>Notifications</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/notificationsoptionpage.ui" line="12"/>
|
||||
<location filename="../gui/notificationsoptionpage.ui" line="20"/>
|
||||
<source>Notify on disconnect</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/notificationsoptionpage.ui" line="19"/>
|
||||
<source>Notify on errors</source>
|
||||
<location filename="../gui/notificationsoptionpage.ui" line="27"/>
|
||||
<source>Notify on internal errors</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/notificationsoptionpage.ui" line="26"/>
|
||||
<location filename="../gui/notificationsoptionpage.ui" line="34"/>
|
||||
<source>Notify on Syncthing errors</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/notificationsoptionpage.ui" line="41"/>
|
||||
<source>Notify on sync complete</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/notificationsoptionpage.ui" line="33"/>
|
||||
<source>Show Syncthing notifications</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>QtGui::SettingsDialog</name>
|
||||
<message>
|
||||
<location filename="../gui/settingsdialog.cpp" line="187"/>
|
||||
<location filename="../gui/settingsdialog.cpp" line="211"/>
|
||||
<source>Tray</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/settingsdialog.cpp" line="195"/>
|
||||
<location filename="../gui/settingsdialog.cpp" line="219"/>
|
||||
<source>Web view</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -385,22 +403,22 @@
|
|||
<context>
|
||||
<name>QtGui::TrayIcon</name>
|
||||
<message>
|
||||
<location filename="../gui/tray.cpp" line="346"/>
|
||||
<location filename="../gui/tray.cpp" line="357"/>
|
||||
<source>Web UI</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/tray.cpp" line="347"/>
|
||||
<location filename="../gui/tray.cpp" line="358"/>
|
||||
<source>Settings</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/tray.cpp" line="348"/>
|
||||
<location filename="../gui/tray.cpp" line="359"/>
|
||||
<source>About</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/tray.cpp" line="350"/>
|
||||
<location filename="../gui/tray.cpp" line="361"/>
|
||||
<source>Close</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -464,17 +482,40 @@
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.ui" line="103"/>
|
||||
<location filename="../gui/tray.cpp" line="235"/>
|
||||
<location filename="../gui/tray.cpp" line="239"/>
|
||||
<source>Connect</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.ui" line="178"/>
|
||||
<location filename="../gui/traywidget.ui" line="191"/>
|
||||
<source>Traffic</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.ui" line="216"/>
|
||||
<source>In</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.ui" line="223"/>
|
||||
<location filename="../gui/traywidget.ui" line="240"/>
|
||||
<location filename="../gui/tray.cpp" line="319"/>
|
||||
<location filename="../gui/tray.cpp" line="320"/>
|
||||
<source>unknown</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.ui" line="230"/>
|
||||
<source>Out</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.ui" line="270"/>
|
||||
<source>Directories</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.ui" line="207"/>
|
||||
<location filename="../gui/traywidget.ui" line="299"/>
|
||||
<source>Devices</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -494,82 +535,82 @@
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/tray.cpp" line="78"/>
|
||||
<location filename="../gui/tray.cpp" line="79"/>
|
||||
<source>View own device ID</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/tray.cpp" line="117"/>
|
||||
<location filename="../gui/tray.cpp" line="121"/>
|
||||
<source>Settings - Syncthing tray</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/tray.cpp" line="136"/>
|
||||
<location filename="../gui/tray.cpp" line="140"/>
|
||||
<source>Tray application for Syncthing</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/tray.cpp" line="89"/>
|
||||
<location filename="../gui/tray.cpp" line="90"/>
|
||||
<source>Rescan all directories</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/tray.cpp" line="83"/>
|
||||
<location filename="../gui/tray.cpp" line="84"/>
|
||||
<source>Show Syncthing log</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/tray.cpp" line="137"/>
|
||||
<location filename="../gui/tray.cpp" line="141"/>
|
||||
<source>About - Syncthing Tray</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/tray.cpp" line="175"/>
|
||||
<location filename="../gui/tray.cpp" line="179"/>
|
||||
<source>Own device ID - Syncthing Tray</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/tray.cpp" line="185"/>
|
||||
<location filename="../gui/tray.cpp" line="189"/>
|
||||
<source>device ID is unknown</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/tray.cpp" line="193"/>
|
||||
<location filename="../gui/tray.cpp" line="197"/>
|
||||
<source>Copy to clipboard</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/tray.cpp" line="209"/>
|
||||
<location filename="../gui/tray.cpp" line="213"/>
|
||||
<source>Log - Syncthing</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/tray.cpp" line="236"/>
|
||||
<location filename="../gui/tray.cpp" line="240"/>
|
||||
<source>Not connected to Syncthing, click to connect</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/tray.cpp" line="242"/>
|
||||
<location filename="../gui/tray.cpp" line="246"/>
|
||||
<source>Pause</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/tray.cpp" line="243"/>
|
||||
<location filename="../gui/tray.cpp" line="247"/>
|
||||
<source>Syncthing is running, click to pause all devices</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/tray.cpp" line="248"/>
|
||||
<location filename="../gui/tray.cpp" line="252"/>
|
||||
<source>At least one device is paused, click to resume</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/tray.cpp" line="247"/>
|
||||
<location filename="../gui/tray.cpp" line="251"/>
|
||||
<source>Continue</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/tray.cpp" line="272"/>
|
||||
<location filename="../gui/tray.cpp" line="277"/>
|
||||
<source>The directly <i>%1</i> does not exist on the local machine.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -586,7 +627,7 @@
|
|||
<name>QtGui::WebViewOptionPage</name>
|
||||
<message>
|
||||
<location filename="../gui/webviewoptionpage.ui" line="14"/>
|
||||
<location filename="../gui/settingsdialog.cpp" line="149"/>
|
||||
<location filename="../gui/settingsdialog.cpp" line="173"/>
|
||||
<source>General</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -616,7 +657,7 @@
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/settingsdialog.cpp" line="151"/>
|
||||
<location filename="../gui/settingsdialog.cpp" line="175"/>
|
||||
<source>Syncthing Tray has not been built with vieb view support utilizing either Qt WebKit or Qt WebEngine.
|
||||
The Web UI will be opened in the default web browser instead.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
|
|