├── CMakeLists.txt
├── COPYING
├── README.md
├── dbus
└── org.freedesktop.Notifications.xml
├── resources
├── icons.qrc
├── images
│ └── default.svg
├── nm-tray-autostart.desktop
├── nm-tray.conf
└── nm-tray.desktop
├── src
├── connectioninfo.cpp
├── connectioninfo.h
├── connectioninfo.ui
├── icons.cpp
├── icons.h
├── log.cpp
├── log.h
├── main.cpp
├── menuview.cpp
├── menuview.h
├── nmlist.cpp
├── nmlist.h
├── nmlist.ui
├── nmmodel.cpp
├── nmmodel.h
├── nmmodel_p.h
├── nmproxy.cpp
├── nmproxy.h
├── translate.cpp
├── tray.cpp
├── tray.h
├── windowmenu.cpp
└── windowmenu.h
└── translations
├── nm-tray.ts
├── nm-tray_ca.ts
├── nm-tray_cs.ts
├── nm-tray_da.ts
├── nm-tray_de.ts
├── nm-tray_eo.ts
├── nm-tray_es.ts
├── nm-tray_et.ts
├── nm-tray_fa.ts
├── nm-tray_fi.ts
├── nm-tray_fr.ts
├── nm-tray_he.ts
├── nm-tray_hi.ts
├── nm-tray_hr.ts
├── nm-tray_hu.ts
├── nm-tray_is.ts
├── nm-tray_it.ts
├── nm-tray_ja.ts
├── nm-tray_lt.ts
├── nm-tray_nb_NO.ts
├── nm-tray_nl.ts
├── nm-tray_pa.ts
├── nm-tray_pl.ts
├── nm-tray_pt.ts
├── nm-tray_pt_BR.ts
├── nm-tray_ro.ts
├── nm-tray_ru.ts
├── nm-tray_sk.ts
├── nm-tray_sv.ts
├── nm-tray_ta.ts
├── nm-tray_tr.ts
└── nm-tray_zh_Hans.ts
/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | cmake_minimum_required(VERSION 3.6.0 FATAL_ERROR)
2 |
3 | project(nm-tray)
4 |
5 | cmake_policy(SET CMP0071 NEW)
6 |
7 | set(NM_TRAY_VERSION "0.5.1")
8 |
9 | set(QT_MIN_VERSION "6.6.2")
10 | set(KF6_MIN_VERSION "6.5.0")
11 |
12 | set(CMAKE_AUTOMOC on)
13 | set(CMAKE_AUTOUIC on)
14 | set(CMAKE_AUTORCC on)
15 | set(CMAKE_INCLUDE_CURRENT_DIR ON)
16 | set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra")
17 |
18 | find_package(Qt6 ${QT_MIN_VERSION} REQUIRED COMPONENTS
19 | Widgets
20 | Gui
21 | Network
22 | DBus
23 |
24 | LinguistTools
25 | )
26 | find_package(KF6NetworkManagerQt ${KF6_MIN_VERSION} REQUIRED)
27 | include(GNUInstallDirs)
28 |
29 | set(TRANSLATION_DIR "${CMAKE_INSTALL_FULL_DATADIR}/${PROJECT_NAME}")
30 | add_definitions(-DQT_NO_SIGNALS_SLOTS_KEYWORDS "-DTRANSLATION_DIR=\"${TRANSLATION_DIR}\"" "-DNM_TRAY_VERSION=\"${NM_TRAY_VERSION}\"")
31 | if (NOT NM_TRAY_XDG_AUTOSTART_DIR)
32 | #Note: we need the default to be /etc... (not the ${CMAKE_INSTALL_PREFIX}/etc)
33 | set(NM_TRAY_XDG_AUTOSTART_DIR "${CMAKE_INSTALL_SYSCONFDIR}/xdg/autostart")
34 | endif ()
35 |
36 | message(STATUS "Translations destination dir: ${TRANSLATION_DIR}")
37 | message(STATUS "Autostart .desktop entry destination dir: ${NM_TRAY_XDG_AUTOSTART_DIR}\n (can be overriden by setting the NM_TRAY_XDG_AUTOSTART_DIR cmake variable)")
38 |
39 | set(SRCS
40 | src/log.cpp
41 | src/icons.cpp
42 | src/nmmodel.cpp
43 | src/nmproxy.cpp
44 | src/connectioninfo.cpp
45 | src/nmlist.cpp
46 | src/menuview.cpp
47 | src/windowmenu.cpp
48 | src/tray.cpp
49 | src/translate.cpp
50 | src/main.cpp
51 | )
52 |
53 | set(RESOURCES
54 | resources/icons.qrc
55 | )
56 |
57 | file(GLOB TSS "translations/${PROJECT_NAME}_*.ts")
58 | if (UPDATE_TRANSLATIONS)
59 | message(WARNING "!! Disable updating translation after make (-DUPDATE_TRANSLATIONS=no) to avoid 'make clean' delete them !!")
60 | qt6_create_translation(QMS "translations/${PROJECT_NAME}.ts" ${TSS} "src")
61 | else ()
62 | qt6_add_translation(QMS ${TSS})
63 | endif()
64 |
65 | qt6_add_dbus_interface(SRCS
66 | dbus/org.freedesktop.Notifications.xml
67 | dbus/org.freedesktop.Notifications
68 | )
69 |
70 | add_executable(nm-tray
71 | ${SRCS}
72 | ${QMS}
73 | ${RESOURCES}
74 | )
75 |
76 | set_property(TARGET nm-tray PROPERTY CXX_STANDARD 17)
77 | set_property(TARGET nm-tray PROPERTY CXX_STANDARD_REQUIRED on)
78 |
79 | target_link_libraries(nm-tray
80 | Qt6::Widgets
81 | Qt6::Gui
82 | KF6::NetworkManagerQt
83 | )
84 |
85 | if (WITH_MODEMMANAGER_SUPPORT)
86 | find_package(Qt6 ${QT_MIN_VERSION} REQUIRED COMPONENTS Xml)
87 | find_package(KF6ModemManagerQt ${KF6_MIN_VERSION} REQUIRED)
88 | target_link_libraries(nm-tray KF6::ModemManagerQt)
89 | endif()
90 |
91 | install(TARGETS nm-tray RUNTIME DESTINATION "${CMAKE_INSTALL_FULL_BINDIR}" COMPONENT runtime)
92 | install(FILES ${QMS} DESTINATION "${TRANSLATION_DIR}" COMPONENT translations)
93 | install(FILES "resources/nm-tray.desktop" DESTINATION "${CMAKE_INSTALL_FULL_DATAROOTDIR}/applications" COMPONENT data)
94 | install(FILES "resources/nm-tray-autostart.desktop" DESTINATION "${NM_TRAY_XDG_AUTOSTART_DIR}" COMPONENT data)
95 | install(FILES "resources/nm-tray.conf" DESTINATION "${CMAKE_INSTALL_FULL_DATADIR}/${PROJECT_NAME}" COMPONENT data)
96 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # nm-tray
2 |
3 | **nm-tray** is a simple [NetworkManager](https://wiki.gnome.org/Projects/NetworkManager) front end with information icon residing in system tray (like e.g. nm-applet).
4 | It's a pure Qt application. For interaction with *NetworkManager* it uses API provided by [**KF5::NetworkManagerQt**](https://projects.kde.org/projects/frameworks/networkmanager-qt) -> plain DBus communication.
5 |
6 | ## License
7 |
8 | This software is licensed under [GNU GPLv2 or later](https://www.gnu.org/licenses/old-licenses/gpl-2.0.html)
9 |
10 | ## Build example
11 |
12 | git clone https://github.com/palinek/nm-tray.git
13 | cd nm-tray
14 | mkdir build
15 | cd build
16 | cmake ..
17 | make
18 | ./nm-tray
19 |
20 | ## Packages
21 |
22 | ### arch
23 | For [arch users](https://www.archlinux.org/) there is an AUR package [nm-tray-git](https://aur.archlinux.org/packages/nm-tray-git/) (thanks to [pmattern](https://github.com/pmattern)).
24 |
25 | ### openSUSE
26 | nm-tray is in the official repository of [openSUSE](https://www.opensuse.org/) since Leap 15.0. There is a also a [git package](https://build.opensuse.org/package/show/X11:LXQt:git/nm-tray) in the [X11:LXQt:git](https://build.opensuse.org/project/show/X11:LXQt:git) devel project of OBS.
27 |
28 | ### debian
29 | Thanks to [agaida](https://github.com/agaida) nm-tray is now in official debian repositories ([nm-tray](https://packages.debian.org/sid/nm-tray)).
30 |
31 | ## Translations
32 |
33 | Thanks to [Weblate](https://weblate.org/) anyone can help us to localize nm-tray by using the [hosted weblate service](https://hosted.weblate.org/projects/nm-tray/translations/).
34 |
--------------------------------------------------------------------------------
/dbus/org.freedesktop.Notifications.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
--------------------------------------------------------------------------------
/resources/icons.qrc:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | images/default.svg
5 |
6 |
7 |
--------------------------------------------------------------------------------
/resources/images/default.svg:
--------------------------------------------------------------------------------
1 |
2 |
9 |
--------------------------------------------------------------------------------
/resources/nm-tray-autostart.desktop:
--------------------------------------------------------------------------------
1 | [Desktop Entry]
2 | Type=Application
3 | Name=nm-tray
4 | TryExec=nm-tray
5 | Exec=nm-tray
6 | NotShowIn=KDE;GNOME;
7 | X-LXQt-Need-Tray=true
8 |
--------------------------------------------------------------------------------
/resources/nm-tray.conf:
--------------------------------------------------------------------------------
1 | [General]
2 | connectionsEditor=xterm, -e, nmtui-edit
3 | enableNotifications=true
4 |
--------------------------------------------------------------------------------
/resources/nm-tray.desktop:
--------------------------------------------------------------------------------
1 | [Desktop Entry]
2 | Type=Application
3 | Name=nm-tray
4 | Comment=NetworkManager frontend (tray icon)
5 | Icon=network-transmit
6 | TryExec=nm-tray
7 | Exec=nm-tray
8 | Categories=System;Monitor;Qt;
9 |
--------------------------------------------------------------------------------
/src/connectioninfo.cpp:
--------------------------------------------------------------------------------
1 | /*COPYRIGHT_HEADER
2 |
3 | This file is a part of nm-tray.
4 |
5 | Copyright (c)
6 | 2015~now Palo Kisa
7 |
8 | nm-tray is free software; you can redistribute it and/or
9 | modify it under the terms of the GNU General Public License
10 | as published by the Free Software Foundation; either version 2
11 | of the License, or (at your option) any later version.
12 |
13 | This program is distributed in the hope that it will be useful,
14 | but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 | GNU General Public License for more details.
17 |
18 | You should have received a copy of the GNU General Public License
19 | along with this program; if not, write to the Free Software
20 | Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
21 |
22 | COPYRIGHT_HEADER*/
23 | #include "connectioninfo.h"
24 | #include "ui_connectioninfo.h"
25 | #include "nmproxy.h"
26 | #include
27 | #include
28 | #include
29 | #include
30 | #include
31 |
32 | ConnectionInfo::ConnectionInfo(NmModel * model, QWidget *parent)
33 | : QDialog{parent}
34 | , ui{new Ui::ConnectionInfo}
35 | , mModel{model}
36 | , mActive{new NmProxy}
37 | , mSorted{new QSortFilterProxyModel}
38 |
39 | {
40 | setAttribute(Qt::WA_DeleteOnClose);
41 | ui->setupUi(this);
42 |
43 | mActive->setNmModel(mModel, NmModel::ActiveConnectionType);
44 | mSorted->setSortCaseSensitivity(Qt::CaseInsensitive);
45 | mSorted->sort(0);
46 | mSorted->setSourceModel(mActive.data());
47 | for (int i = 0, row_cnt = mSorted->rowCount(); i < row_cnt; ++i)
48 | {
49 | addTab(mSorted->index(i, 0));
50 | }
51 |
52 | connect(mSorted.data(), &QAbstractItemModel::rowsInserted, [this] (QModelIndex const & parent, int first, int last) {
53 | ui->tabWidget->setUpdatesEnabled(false);
54 | for (int i = first; i <= last; ++i)
55 | addTab(mSorted->index(i, 0, parent));
56 | ui->tabWidget->setUpdatesEnabled(true);
57 | });
58 | connect(mSorted.data(), &QAbstractItemModel::rowsAboutToBeRemoved, [this] (QModelIndex const & parent, int first, int last) {
59 | ui->tabWidget->setUpdatesEnabled(false);
60 | for (int i = first; i <= last; ++i)
61 | removeTab(mSorted->index(i, 0, parent));
62 | ui->tabWidget->setUpdatesEnabled(true);
63 | });
64 | connect(mSorted.data(), &QAbstractItemModel::dataChanged, [this] (const QModelIndex & topLeft, const QModelIndex & bottomRight, const QVector & /*roles*/) {
65 | ui->tabWidget->setUpdatesEnabled(false);
66 | for (auto const & i : QItemSelection{topLeft, bottomRight}.indexes())
67 | changeTab(i);
68 | ui->tabWidget->setUpdatesEnabled(true);
69 | });
70 | }
71 |
72 | ConnectionInfo::~ConnectionInfo()
73 | {
74 | }
75 |
76 | void ConnectionInfo::addTab(QModelIndex const & index)
77 | {
78 | QScrollArea * content = new QScrollArea;
79 | QLabel * l = new QLabel{mSorted->data(index, NmModel::ActiveConnectionInfoRole).toString()};
80 | content->setWidget(l);
81 | //QTabWidget takes ownership of the page (if we will not take it back)
82 | ui->tabWidget->insertTab(index.row(), content, mSorted->data(index, NmModel::IconRole).value(), mSorted->data(index, NmModel::NameRole).toString());
83 | }
84 |
85 | void ConnectionInfo::removeTab(QModelIndex const & index)
86 | {
87 | const int i = index.row();
88 | QWidget * w = ui->tabWidget->widget(i);
89 | ui->tabWidget->removeTab(i);
90 | w->deleteLater();
91 | }
92 |
93 | void ConnectionInfo::changeTab(QModelIndex const & index)
94 | {
95 | const int i = index.row();
96 | QScrollArea * content = qobject_cast(ui->tabWidget->widget(i));
97 | Q_ASSERT(nullptr != content);
98 | // Note: the text is HTML formatted and the QLabel probably creates some DOM internal represntation.
99 | // Should the DOM structure change, the QLabel will not update correctly upon the plain setText()
100 | content->setWidget(new QLabel{mSorted->data(index, NmModel::ActiveConnectionInfoRole).toString()});
101 | ui->tabWidget->tabBar()->setTabText(i, mSorted->data(index, NmModel::NameRole).toString());
102 | ui->tabWidget->tabBar()->setTabIcon(i, mSorted->data(index, NmModel::IconRole).value());
103 | }
104 |
--------------------------------------------------------------------------------
/src/connectioninfo.h:
--------------------------------------------------------------------------------
1 | /*COPYRIGHT_HEADER
2 |
3 | This file is a part of nm-tray.
4 |
5 | Copyright (c)
6 | 2015~now Palo Kisa
7 |
8 | nm-tray is free software; you can redistribute it and/or
9 | modify it under the terms of the GNU General Public License
10 | as published by the Free Software Foundation; either version 2
11 | of the License, or (at your option) any later version.
12 |
13 | This program is distributed in the hope that it will be useful,
14 | but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 | GNU General Public License for more details.
17 |
18 | You should have received a copy of the GNU General Public License
19 | along with this program; if not, write to the Free Software
20 | Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
21 |
22 | COPYRIGHT_HEADER*/
23 | #ifndef CONNECTIONINFO_H
24 | #define CONNECTIONINFO_H
25 |
26 | #include
27 |
28 | namespace Ui {
29 | class ConnectionInfo;
30 | }
31 |
32 | class NmModel;
33 | class NmProxy;
34 | class QSortFilterProxyModel;
35 |
36 | class ConnectionInfo : public QDialog
37 | {
38 | Q_OBJECT
39 |
40 | public:
41 | explicit ConnectionInfo(NmModel * model, QWidget *parent = nullptr);
42 | ~ConnectionInfo();
43 |
44 | private:
45 | void addTab(QModelIndex const & index);
46 | void removeTab(QModelIndex const & index);
47 | void changeTab(QModelIndex const & index);
48 |
49 | private:
50 | QScopedPointer ui;
51 | NmModel * mModel;
52 | QScopedPointer mActive;
53 | QScopedPointer mSorted;
54 | };
55 |
56 | #endif // CONNECTIONINFO_H
57 |
--------------------------------------------------------------------------------
/src/connectioninfo.ui:
--------------------------------------------------------------------------------
1 |
2 |
3 | ConnectionInfo
4 |
5 |
6 |
7 | 0
8 | 0
9 | 570
10 | 614
11 |
12 |
13 |
14 | Connection information
15 |
16 |
17 | -
18 |
19 |
20 | -1
21 |
22 |
23 |
24 | 32
25 | 32
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
--------------------------------------------------------------------------------
/src/icons.cpp:
--------------------------------------------------------------------------------
1 | /*COPYRIGHT_HEADER
2 |
3 | This file is a part of nm-tray.
4 |
5 | Copyright (c)
6 | 2015~now Palo Kisa
7 |
8 | nm-tray is free software; you can redistribute it and/or
9 | modify it under the terms of the GNU General Public License
10 | as published by the Free Software Foundation; either version 2
11 | of the License, or (at your option) any later version.
12 |
13 | This program is distributed in the hope that it will be useful,
14 | but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 | GNU General Public License for more details.
17 |
18 | You should have received a copy of the GNU General Public License
19 | along with this program; if not, write to the Free Software
20 | Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
21 |
22 | COPYRIGHT_HEADER*/
23 | #include "icons.h"
24 |
25 | #include
26 | #include
27 |
28 | namespace icons
29 | {
30 | namespace
31 | {
32 | class FallbackIcon : public QIcon
33 | {
34 | public:
35 | FallbackIcon()
36 | {
37 | static const QIcon fallback{QStringLiteral(":/images/default.svg")};
38 | // Note: using pixmap icon as the vector/svg one is not correctly transferred via the
39 | // D-Bus StatusNotifierItem interface
40 | addPixmap(fallback.pixmap({16, 16}));
41 | addPixmap(fallback.pixmap({32, 32}));
42 | addPixmap(fallback.pixmap({64, 64}));
43 | addPixmap(fallback.pixmap({128, 128}));
44 | addPixmap(fallback.pixmap({256, 256}));
45 | }
46 | };
47 | }
48 |
49 | QIcon getIcon(Icon ico, bool useSymbolic)
50 | {
51 | // final, bundled fallback
52 | static const FallbackIcon fallback;
53 | static const QStringList i_empty;
54 | QStringList const * icon_names = &i_empty;
55 | switch (ico)
56 | {
57 | case NETWORK_OFFLINE:
58 | static const QStringList i_network_offline = { QStringLiteral("network-offline") };
59 | icon_names = &i_network_offline;
60 | break;
61 | case NETWORK_WIRED:
62 | static const QStringList i_network_wired = { QStringLiteral("network-wired") };
63 | icon_names = &i_network_wired;
64 | break;
65 | case NETWORK_WIRED_DISCONNECTED:
66 | static const QStringList i_network_wired_disconnected = { QStringLiteral("network-wired-disconnected") };
67 | icon_names = &i_network_wired_disconnected;
68 | break;
69 | case NETWORK_WIFI_DISCONNECTED:
70 | static const QStringList i_wifi_disconnected = { QStringLiteral("network-wireless-disconnected") };
71 | icon_names = &i_wifi_disconnected;
72 | break;
73 | case NETWORK_WIFI_ACQUIRING:
74 | static const QStringList i_wifi_acquiring = { QStringLiteral("network-wireless-acquiring") };
75 | icon_names = &i_wifi_acquiring;
76 | break;
77 | case NETWORK_WIFI_NONE:
78 | static const QStringList i_wifi_none = { QStringLiteral("network-wireless-signal-none"), QStringLiteral("network-wireless-connected-00") };
79 | icon_names = &i_wifi_none;
80 | break;
81 | case NETWORK_WIFI_WEAK:
82 | static const QStringList i_wifi_weak = { QStringLiteral("network-wireless-signal-weak"), QStringLiteral("network-wireless-connected-25") };
83 | icon_names = &i_wifi_weak;
84 | break;
85 | case NETWORK_WIFI_OK:
86 | static const QStringList i_wifi_ok = { QStringLiteral("network-wireless-signal-ok"), QStringLiteral("network-wireless-connected-50") };
87 | icon_names = &i_wifi_ok;
88 | break;
89 | case NETWORK_WIFI_GOOD:
90 | static const QStringList i_wifi_good = { QStringLiteral("network-wireless-signal-good"), QStringLiteral("network-wireless-connected-75") };
91 | icon_names = &i_wifi_good;
92 | break;
93 | case NETWORK_WIFI_EXCELENT:
94 | static const QStringList i_wifi_excelent = { QStringLiteral("network-wireless-signal-excellent"), QStringLiteral("network-wireless-connected-100") };
95 | icon_names = &i_wifi_excelent;
96 | break;
97 | case NETWORK_VPN:
98 | static const QStringList i_network_vpn = { QStringLiteral("network-vpn") };
99 | icon_names = &i_network_vpn;
100 | break;
101 | case SECURITY_LOW:
102 | static const QStringList i_security_low = { QStringLiteral("security-low") };
103 | icon_names = &i_security_low;
104 | break;
105 | case SECURITY_HIGH:
106 | static const QStringList i_security_high = { QStringLiteral("security-high") };
107 | icon_names = &i_security_high;
108 | break;
109 | case PREFERENCES_NETWORK:
110 | static const QStringList i_preferences_network = { QStringLiteral("preferences-system-network") };
111 | icon_names = &i_preferences_network;
112 | break;
113 | };
114 | for (auto const & name : *icon_names)
115 | {
116 | QIcon icon{QIcon::fromTheme(useSymbolic ? name % QStringLiteral("-symbolic") : name)};
117 | if (!icon.isNull())
118 | return icon;
119 | }
120 | return QIcon::fromTheme(QStringLiteral("network-transmit"), fallback);
121 | }
122 |
123 | Icon wifiSignalIcon(const int signal)
124 | {
125 | if (0 >= signal)
126 | return icons::NETWORK_WIFI_NONE;
127 | else if (25 >= signal)
128 | return icons::NETWORK_WIFI_WEAK;
129 | else if (50 >= signal)
130 | return icons::NETWORK_WIFI_OK;
131 | else if (75 >= signal)
132 | return icons::NETWORK_WIFI_GOOD;
133 | else
134 | return icons::NETWORK_WIFI_EXCELENT;
135 | }
136 | }
137 |
--------------------------------------------------------------------------------
/src/icons.h:
--------------------------------------------------------------------------------
1 | /*COPYRIGHT_HEADER
2 |
3 | This file is a part of nm-tray.
4 |
5 | Copyright (c)
6 | 2015~now Palo Kisa
7 |
8 | nm-tray is free software; you can redistribute it and/or
9 | modify it under the terms of the GNU General Public License
10 | as published by the Free Software Foundation; either version 2
11 | of the License, or (at your option) any later version.
12 |
13 | This program is distributed in the hope that it will be useful,
14 | but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 | GNU General Public License for more details.
17 |
18 | You should have received a copy of the GNU General Public License
19 | along with this program; if not, write to the Free Software
20 | Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
21 |
22 | COPYRIGHT_HEADER*/
23 | #if !defined(ICONS_H)
24 | #define ICONS_H
25 |
26 | #include
27 |
28 | namespace icons
29 | {
30 | enum Icon {
31 | NETWORK_OFFLINE
32 | , NETWORK_WIRED
33 | , NETWORK_WIRED_DISCONNECTED
34 | , NETWORK_WIFI_ACQUIRING
35 | , NETWORK_WIFI_NONE
36 | , NETWORK_WIFI_WEAK
37 | , NETWORK_WIFI_OK
38 | , NETWORK_WIFI_GOOD
39 | , NETWORK_WIFI_EXCELENT
40 | , NETWORK_WIFI_DISCONNECTED
41 | , NETWORK_VPN
42 |
43 | , SECURITY_LOW
44 | , SECURITY_HIGH
45 |
46 | , PREFERENCES_NETWORK
47 | };
48 |
49 | QIcon getIcon(Icon ico, bool useSymbolic);
50 | Icon wifiSignalIcon(const int signal);
51 | }
52 |
53 | #endif
54 |
--------------------------------------------------------------------------------
/src/log.cpp:
--------------------------------------------------------------------------------
1 | /*COPYRIGHT_HEADER
2 |
3 | This file is a part of nm-tray.
4 |
5 | Copyright (c)
6 | 2015~now Palo Kisa
7 |
8 | nm-tray is free software; you can redistribute it and/or
9 | modify it under the terms of the GNU General Public License
10 | as published by the Free Software Foundation; either version 2
11 | of the License, or (at your option) any later version.
12 |
13 | This program is distributed in the hope that it will be useful,
14 | but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 | GNU General Public License for more details.
17 |
18 | You should have received a copy of the GNU General Public License
19 | along with this program; if not, write to the Free Software
20 | Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
21 |
22 | COPYRIGHT_HEADER*/
23 | #include "log.h"
24 | #include
25 |
26 | #if defined(NDEBUG)
27 | Q_LOGGING_CATEGORY(NM_TRAY, "nm-tray", QtInfoMsg)
28 | #else
29 | Q_LOGGING_CATEGORY(NM_TRAY, "nm-tray")
30 | #endif
31 |
32 |
--------------------------------------------------------------------------------
/src/log.h:
--------------------------------------------------------------------------------
1 | /*COPYRIGHT_HEADER
2 |
3 | This file is a part of nm-tray.
4 |
5 | Copyright (c)
6 | 2015~now Palo Kisa
7 |
8 | nm-tray is free software; you can redistribute it and/or
9 | modify it under the terms of the GNU General Public License
10 | as published by the Free Software Foundation; either version 2
11 | of the License, or (at your option) any later version.
12 |
13 | This program is distributed in the hope that it will be useful,
14 | but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 | GNU General Public License for more details.
17 |
18 | You should have received a copy of the GNU General Public License
19 | along with this program; if not, write to the Free Software
20 | Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
21 |
22 | COPYRIGHT_HEADER*/
23 | #if !defined(LOG_H)
24 | #define LOG_H
25 |
26 | #include
27 |
28 | Q_DECLARE_LOGGING_CATEGORY(NM_TRAY)
29 |
30 | #endif //LOG_H
31 |
32 |
--------------------------------------------------------------------------------
/src/main.cpp:
--------------------------------------------------------------------------------
1 | /*COPYRIGHT_HEADER
2 |
3 | This file is a part of nm-tray.
4 |
5 | Copyright (c)
6 | 2015~now Palo Kisa
7 |
8 | nm-tray is free software; you can redistribute it and/or
9 | modify it under the terms of the GNU General Public License
10 | as published by the Free Software Foundation; either version 2
11 | of the License, or (at your option) any later version.
12 |
13 | This program is distributed in the hope that it will be useful,
14 | but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 | GNU General Public License for more details.
17 |
18 | You should have received a copy of the GNU General Public License
19 | along with this program; if not, write to the Free Software
20 | Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
21 |
22 | COPYRIGHT_HEADER*/
23 | #include
24 |
25 | #include "tray.h"
26 |
27 | #include "icons.h"
28 |
29 | int main(int argc, char * argv[])
30 | {
31 | QApplication app{argc, argv};
32 | app.setOrganizationName(QStringLiteral("nm-tray"));
33 | app.setApplicationName(QStringLiteral("nm-tray"));
34 | app.setWindowIcon(icons::getIcon(icons::PREFERENCES_NETWORK, true));
35 | app.setQuitOnLastWindowClosed(false);
36 |
37 | Tray tray;
38 |
39 | return app.exec();
40 | }
41 |
--------------------------------------------------------------------------------
/src/menuview.cpp:
--------------------------------------------------------------------------------
1 | /*COPYRIGHT_HEADER
2 |
3 | This file is a part of nm-tray.
4 |
5 | Copyright (c)
6 | 2016~now Palo Kisa
7 |
8 | nm-tray is free software; you can redistribute it and/or
9 | modify it under the terms of the GNU General Public License
10 | as published by the Free Software Foundation; either version 2
11 | of the License, or (at your option) any later version.
12 |
13 | This program is distributed in the hope that it will be useful,
14 | but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 | GNU General Public License for more details.
17 |
18 | You should have received a copy of the GNU General Public License
19 | along with this program; if not, write to the Free Software
20 | Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
21 |
22 | COPYRIGHT_HEADER*/
23 |
24 | #include "menuview.h"
25 | #include "nmmodel.h"
26 |
27 | #include
28 | #include
29 | #include
30 | #include
31 | #include
32 | #include
33 | #include
34 |
35 | namespace
36 | {
37 | class SingleActivateStyle : public QProxyStyle
38 | {
39 | public:
40 | using QProxyStyle::QProxyStyle;
41 | virtual int styleHint(StyleHint hint, const QStyleOption * option = 0, const QWidget * widget = 0, QStyleHintReturn * returnData = 0) const override
42 | {
43 | if(hint == QStyle::SH_ItemView_ActivateItemOnSingleClick)
44 | return 1;
45 | return QProxyStyle::styleHint(hint, option, widget, returnData);
46 |
47 | }
48 | };
49 |
50 | class MultiIconDelegate : public QStyledItemDelegate
51 | {
52 | public:
53 | using QStyledItemDelegate::QStyledItemDelegate;
54 | void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const override
55 | {
56 | Q_ASSERT(index.isValid());
57 |
58 | QStyleOptionViewItem opt = option;
59 | initStyleOption(&opt, index);
60 |
61 | //add the security overlay icon
62 | QIcon sec_icon = qvariant_cast(index.data(NmModel::IconSecurityRole));
63 | if (!sec_icon.isNull())
64 | {
65 | QPixmap res_pixmap = opt.icon.pixmap(opt.decorationSize);
66 | QPainter p{&res_pixmap};
67 | QSize sec_size = res_pixmap.size();
68 | sec_size /= 2;
69 | QPoint sec_pos = res_pixmap.rect().bottomRight();
70 | sec_pos -= QPoint{sec_size.width(), sec_size.height()};
71 | p.drawPixmap(sec_pos, sec_icon.pixmap(sec_size));
72 |
73 | opt.icon = QIcon{res_pixmap};
74 |
75 | }
76 | QStyle *style = option.widget ? option.widget->style() : QApplication::style();
77 | style->drawControl(QStyle::CE_ItemViewItem, &opt, painter, option.widget);
78 | }
79 | };
80 |
81 | }
82 |
83 | MenuView::MenuView(QAbstractItemModel * model, QWidget * parent /*= nullptr*/)
84 | : QListView(parent)
85 | , mProxy{new QSortFilterProxyModel{this}}
86 | , mMaxItemsToShow(10)
87 | , mCurrentReleaseButton{Qt::NoButton}
88 | {
89 | setEditTriggers(NoEditTriggers);
90 | setSizeAdjustPolicy(AdjustToContents);
91 | setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
92 | setSelectionBehavior(SelectRows);
93 | setSelectionMode(NoSelection);
94 | setFrameShape(QFrame::HLine);
95 | setFrameShadow(QFrame::Plain);
96 |
97 | setStyle(new SingleActivateStyle);
98 | mProxy->setSourceModel(model);
99 | mProxy->setDynamicSortFilter(true);
100 | mProxy->setFilterRole(Qt::DisplayRole);
101 | mProxy->setFilterCaseSensitivity(Qt::CaseInsensitive);
102 | mProxy->setSortRole(Qt::DisplayRole);
103 | mProxy->setSortCaseSensitivity(Qt::CaseInsensitive);
104 | mProxy->sort(0);
105 | {
106 | QScopedPointer guard{selectionModel()};
107 | setModel(mProxy);
108 | }
109 | {
110 | QScopedPointer guard{itemDelegate()};
111 | setItemDelegate(new MultiIconDelegate{this});
112 | }
113 | connect(this, &QAbstractItemView::activated, this, [this](const QModelIndex & index) {
114 | if (mCurrentReleaseButton == Qt::NoButton || mCurrentReleaseButton == Qt::LeftButton)
115 | emit activatedNoMiddleRight(index);
116 | });
117 | }
118 |
119 | void MenuView::setFilter(QString const & filter)
120 | {
121 | mProxy->setFilterFixedString(filter);
122 | const int count = mProxy->rowCount();
123 | if (0 < count)
124 | {
125 | if (count > mMaxItemsToShow)
126 | {
127 | setCurrentIndex(mProxy->index(mMaxItemsToShow - 1, 0));
128 | verticalScrollBar()->triggerAction(QScrollBar::SliderToMinimum);
129 | } else
130 | {
131 | setCurrentIndex(mProxy->index(count - 1, 0));
132 | }
133 | }
134 | }
135 |
136 | void MenuView::setMaxItemsToShow(int max)
137 | {
138 | mMaxItemsToShow = max;
139 | }
140 |
141 | void MenuView::activateCurrent()
142 | {
143 | QModelIndex const index = currentIndex();
144 | if (index.isValid())
145 | emit activated(index);
146 | }
147 |
148 | QSize MenuView::viewportSizeHint() const
149 | {
150 | const int count = mProxy->rowCount();
151 | QSize s{0, 0};
152 | if (0 < count)
153 | {
154 | const bool scrollable = mMaxItemsToShow < count;
155 | s.setWidth(sizeHintForColumn(0) + (scrollable ? verticalScrollBar()->sizeHint().width() : 0));
156 | s.setHeight(sizeHintForRow(0) * (scrollable ? mMaxItemsToShow : count));
157 | }
158 | return s;
159 | }
160 |
161 | QSize MenuView::minimumSizeHint() const
162 | {
163 | return QSize{0, 0};
164 | }
165 |
166 | void MenuView::mouseReleaseEvent(QMouseEvent *e)
167 | {
168 | mCurrentReleaseButton = e->button();
169 | QListView::mouseReleaseEvent(e);
170 | mCurrentReleaseButton = Qt::NoButton;
171 | }
172 |
--------------------------------------------------------------------------------
/src/menuview.h:
--------------------------------------------------------------------------------
1 | /*COPYRIGHT_HEADER
2 |
3 | This file is a part of nm-tray.
4 |
5 | Copyright (c)
6 | 2016~now Palo Kisa
7 |
8 | nm-tray is free software; you can redistribute it and/or
9 | modify it under the terms of the GNU General Public License
10 | as published by the Free Software Foundation; either version 2
11 | of the License, or (at your option) any later version.
12 |
13 | This program is distributed in the hope that it will be useful,
14 | but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 | GNU General Public License for more details.
17 |
18 | You should have received a copy of the GNU General Public License
19 | along with this program; if not, write to the Free Software
20 | Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
21 |
22 | COPYRIGHT_HEADER*/
23 |
24 | #if !defined(MENU_VIEW_H)
25 | #define MENU_VIEW_H
26 |
27 | #include
28 |
29 | class QAbstractItemModel;
30 | class QSortFilterProxyModel;
31 |
32 | class MenuView : public QListView
33 | {
34 | Q_OBJECT
35 | public:
36 | MenuView(QAbstractItemModel * model, QWidget * parent = nullptr);
37 |
38 | /*! \brief Sets the filter for entries to be presented
39 | */
40 | void setFilter(QString const & filter);
41 | /*! \brief Set the maximum number of items/results to show
42 | */
43 | void setMaxItemsToShow(int max);
44 | /*! \brief Set the maximum width of item to show
45 | */
46 | void setMaxItemWidth(int max);
47 |
48 | public Q_SLOTS:
49 | /*! \brief Trigger action on currently active item
50 | */
51 | void activateCurrent();
52 |
53 | Q_SIGNALS:
54 | /*! \brief Signal emitted on the same conditions as parent's activated()
55 | * signal except for middle & right click.
56 | */
57 | void activatedNoMiddleRight(const QModelIndex & index);
58 |
59 | protected:
60 | virtual QSize viewportSizeHint() const override;
61 | virtual QSize minimumSizeHint() const override;
62 | virtual void mouseReleaseEvent(QMouseEvent *e) override;
63 |
64 | private:
65 | QSortFilterProxyModel * mProxy;
66 | int mMaxItemsToShow;
67 | Qt::MouseButton mCurrentReleaseButton;
68 | };
69 |
70 | #endif //MENU_VIEW_H
71 |
--------------------------------------------------------------------------------
/src/nmlist.cpp:
--------------------------------------------------------------------------------
1 | /*COPYRIGHT_HEADER
2 |
3 | This file is a part of nm-tray.
4 |
5 | Copyright (c)
6 | 2015~now Palo Kisa
7 |
8 | nm-tray is free software; you can redistribute it and/or
9 | modify it under the terms of the GNU General Public License
10 | as published by the Free Software Foundation; either version 2
11 | of the License, or (at your option) any later version.
12 |
13 | This program is distributed in the hope that it will be useful,
14 | but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 | GNU General Public License for more details.
17 |
18 | You should have received a copy of the GNU General Public License
19 | along with this program; if not, write to the Free Software
20 | Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
21 |
22 | COPYRIGHT_HEADER*/
23 | #include "nmlist.h"
24 | #include "ui_nmlist.h"
25 | #include "nmmodel.h"
26 | #include "nmproxy.h"
27 | #include
28 |
29 | template
30 | void installDblClick(QAbstractItemView * view, QAbstractItemModel * m)
31 | {
32 | T * net_model = qobject_cast(m);
33 | if (net_model)
34 | {
35 | QAbstractProxyModel * proxy = qobject_cast(view->model());
36 | Q_ASSERT(nullptr != proxy && proxy->sourceModel() == net_model);
37 | QObject::connect(view, &QAbstractItemView::doubleClicked, [net_model, proxy] (QModelIndex const & i) {
38 | QModelIndex source_i = proxy->mapToSource(i);
39 | switch (static_cast(net_model->data(source_i, NmModel::ItemTypeRole).toInt()))
40 | {
41 | case NmModel::ActiveConnectionType:
42 | net_model->deactivateConnection(source_i);
43 | break;
44 | case NmModel::WifiNetworkType:
45 | case NmModel::ConnectionType:
46 | net_model->activateConnection(source_i);
47 | break;
48 | default:
49 | //do nothing
50 | break;
51 | }
52 | });
53 | }
54 | }
55 |
56 | NmList::NmList(QString const & title, QAbstractItemModel * m, QWidget *parent)
57 | : QDialog(parent)
58 | , ui{new Ui::NmList}
59 | {
60 | ui->setupUi(this);
61 | setWindowTitle(title);
62 |
63 | Q_ASSERT(qobject_cast(m));
64 | QSortFilterProxyModel * proxy_sort = new QSortFilterProxyModel{this};
65 | proxy_sort->setSortCaseSensitivity(Qt::CaseInsensitive);
66 | proxy_sort->sort(0);
67 | proxy_sort->setSourceModel(m);
68 | ui->treeView->setModel(proxy_sort);
69 | installDblClick(ui->treeView, m);
70 |
71 | NmProxy * proxy = new NmProxy(this);
72 | proxy->setNmModel(qobject_cast(m), NmModel::ActiveConnectionType);
73 | proxy_sort = new QSortFilterProxyModel{this};
74 | proxy_sort->setSortCaseSensitivity(Qt::CaseInsensitive);
75 | proxy_sort->sort(0);
76 | proxy_sort->setSourceModel(proxy);
77 | ui->listActive->setModel(proxy_sort);
78 | installDblClick(ui->listActive, proxy);
79 |
80 | proxy = new NmProxy(this);
81 | proxy->setNmModel(qobject_cast(m), NmModel::WifiNetworkType);
82 | proxy_sort = new QSortFilterProxyModel{this};
83 | proxy_sort->setSortCaseSensitivity(Qt::CaseInsensitive);
84 | proxy_sort->sort(0);
85 | proxy_sort->setSourceModel(proxy);
86 | ui->listWifi->setModel(proxy_sort);
87 | installDblClick(ui->listWifi, proxy);
88 | }
89 |
90 | NmList::~NmList()
91 | {
92 | }
93 |
--------------------------------------------------------------------------------
/src/nmlist.h:
--------------------------------------------------------------------------------
1 | /*COPYRIGHT_HEADER
2 |
3 | This file is a part of nm-tray.
4 |
5 | Copyright (c)
6 | 2015~now Palo Kisa
7 |
8 | nm-tray is free software; you can redistribute it and/or
9 | modify it under the terms of the GNU General Public License
10 | as published by the Free Software Foundation; either version 2
11 | of the License, or (at your option) any later version.
12 |
13 | This program is distributed in the hope that it will be useful,
14 | but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 | GNU General Public License for more details.
17 |
18 | You should have received a copy of the GNU General Public License
19 | along with this program; if not, write to the Free Software
20 | Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
21 |
22 | COPYRIGHT_HEADER*/
23 | #ifndef NMLIST_H
24 | #define NMLIST_H
25 |
26 | #include
27 | #include
28 |
29 | namespace Ui {
30 | class NmList;
31 | }
32 |
33 | class QAbstractItemModel;
34 |
35 | class NmList : public QDialog
36 | {
37 | Q_OBJECT
38 |
39 | public:
40 | explicit NmList(QString const & title, QAbstractItemModel * m, QWidget *parent = nullptr);
41 | ~NmList();
42 |
43 | private:
44 | std::unique_ptr ui;
45 | };
46 |
47 | #endif // NMLIST_H
48 |
--------------------------------------------------------------------------------
/src/nmlist.ui:
--------------------------------------------------------------------------------
1 |
2 |
3 | NmList
4 |
5 |
6 |
7 | 0
8 | 0
9 | 565
10 | 507
11 |
12 |
13 |
14 | -
15 |
16 |
17 | All information
18 |
19 |
20 |
21 | -
22 |
23 |
24 | -
25 |
26 |
27 | Active connections
28 |
29 |
30 |
31 | -
32 |
33 |
34 | -
35 |
36 |
37 | Available wireless
38 |
39 |
40 |
41 | -
42 |
43 |
44 | false
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
--------------------------------------------------------------------------------
/src/nmmodel.h:
--------------------------------------------------------------------------------
1 | /*COPYRIGHT_HEADER
2 |
3 | This file is a part of nm-tray.
4 |
5 | Copyright (c)
6 | 2015~now Palo Kisa
7 |
8 | nm-tray is free software; you can redistribute it and/or
9 | modify it under the terms of the GNU General Public License
10 | as published by the Free Software Foundation; either version 2
11 | of the License, or (at your option) any later version.
12 |
13 | This program is distributed in the hope that it will be useful,
14 | but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 | GNU General Public License for more details.
17 |
18 | You should have received a copy of the GNU General Public License
19 | along with this program; if not, write to the Free Software
20 | Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
21 |
22 | COPYRIGHT_HEADER*/
23 | #if !defined(NMMODEL_H)
24 | #define NMMODEL_H
25 |
26 | #include
27 |
28 | class NmModelPrivate;
29 |
30 | class NmModel : public QAbstractItemModel
31 | {
32 | Q_OBJECT
33 |
34 | public:
35 | enum ItemType
36 | {
37 | HelperType
38 | , ActiveConnectionType
39 | , ConnectionType
40 | , DeviceType
41 | , WifiNetworkType
42 | };
43 | enum ItemRole
44 | {
45 | ItemTypeRole = Qt::UserRole + 1
46 | , NameRole
47 |
48 | , IconTypeRole
49 | , IconRole
50 | , ConnectionTypeRole
51 | , ActiveConnectionTypeRole = ConnectionTypeRole
52 | , ConnectionTypeStringRole
53 | , ActiveConnectionTypeStringRole = ConnectionTypeStringRole
54 | , ConnectionUuidRole
55 | , ActiveConnectionUuidRole = ConnectionUuidRole
56 | , ConnectionPathRole
57 | , ActiveConnectionPathRole = ConnectionPathRole
58 | , ActiveConnectionInfoRole
59 | , ActiveConnectionStateRole
60 | , ActiveConnectionMasterRole
61 | , ActiveConnectionDevicesRole
62 | , IconSecurityTypeRole
63 | , IconSecurityRole
64 |
65 | , SignalRole
66 | };
67 |
68 | public:
69 | explicit NmModel(QObject * parent = nullptr);
70 | ~NmModel();
71 |
72 | //QAbstractItemModel methods
73 | virtual int rowCount(const QModelIndex &parent = QModelIndex()) const override;
74 | virtual int columnCount(const QModelIndex &parent = QModelIndex()) const override;
75 |
76 | virtual QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const override;
77 | virtual QModelIndex parent(const QModelIndex &index) const override;
78 |
79 | virtual QVariant data(const QModelIndex &index, int role) const override;
80 |
81 | QModelIndex indexTypeRoot(ItemType type) const;
82 |
83 | public Q_SLOTS:
84 | //NetworkManager management methods
85 | void activateConnection(QModelIndex const & index);
86 | void deactivateConnection(QModelIndex const & index);
87 | void requestScan(QModelIndex const & index) const;
88 | void requestAllWifiScan() const;
89 |
90 | private:
91 | bool isValidDataIndex(const QModelIndex & index) const;
92 | template
93 | QVariant dataRole(const QModelIndex & index) const;
94 |
95 | private:
96 | QScopedPointer d;
97 | };
98 |
99 |
100 | #endif //NMMODEL_H
101 |
--------------------------------------------------------------------------------
/src/nmmodel_p.h:
--------------------------------------------------------------------------------
1 | /*COPYRIGHT_HEADER
2 |
3 | This file is a part of nm-tray.
4 |
5 | Copyright (c)
6 | 2015~now Palo Kisa
7 |
8 | nm-tray is free software; you can redistribute it and/or
9 | modify it under the terms of the GNU General Public License
10 | as published by the Free Software Foundation; either version 2
11 | of the License, or (at your option) any later version.
12 |
13 | This program is distributed in the hope that it will be useful,
14 | but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 | GNU General Public License for more details.
17 |
18 | You should have received a copy of the GNU General Public License
19 | along with this program; if not, write to the Free Software
20 | Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
21 |
22 | COPYRIGHT_HEADER*/
23 | #if !defined(NMMODEL_P_H)
24 | #define NMMODEL_P_H
25 |
26 | #include
27 | #include
28 | #include
29 |
30 | class NmModelPrivate : public QObject
31 | {
32 | Q_OBJECT
33 | public:
34 | NmModelPrivate();
35 | ~NmModelPrivate();
36 |
37 | void removeActiveConnection(int pos);
38 | void clearActiveConnections();
39 | void insertActiveConnections();
40 | void addActiveConnection(NetworkManager::ActiveConnection::Ptr conn);
41 |
42 | void removeConnection(int pos);
43 | void clearConnections();
44 | void insertConnections();
45 | void addConnection(NetworkManager::Connection::Ptr conn);
46 |
47 | void removeDevice(int pos);
48 | void clearDevices();
49 | void insertDevices();
50 | void addDevice(NetworkManager::Device::Ptr conn);
51 |
52 | void removeWifiNetwork(int pos);
53 | void clearWifiNetworks();
54 | void insertWifiNetworks();
55 | void addWifiNetwork(NetworkManager::WirelessNetwork::Ptr net);
56 |
57 | NetworkManager::ActiveConnection::Ptr findActiveConnection(QString const & path);
58 | template
59 | NetworkManager::Device::Ptr findDevice(Predicate const & pred);
60 | NetworkManager::Device::Ptr findDeviceUni(QString const & uni);
61 | NetworkManager::Device::Ptr findDeviceInterface(QString const & interfaceName);
62 | NetworkManager::WirelessNetwork::Ptr findWifiNetwork(QString const & ssid, QString const & devUni);
63 |
64 | void requestScan(NetworkManager::WirelessDevice * dev);
65 |
66 | Q_SIGNALS:
67 | void connectionAdd(NetworkManager::Connection::Ptr conn);
68 | void connectionUpdate(NetworkManager::Connection * conn);
69 | void connectionRemove(NetworkManager::Connection * conn);
70 | void activeConnectionAdd(NetworkManager::ActiveConnection::Ptr conn);
71 | void activeConnectionUpdate(NetworkManager::ActiveConnection * conn);
72 | void activeConnectionRemove(NetworkManager::ActiveConnection * conn);
73 | void activeConnectionsReset();
74 | void deviceAdd(NetworkManager::Device::Ptr dev);
75 | void deviceUpdate(NetworkManager::Device * dev);
76 | void deviceRemove(NetworkManager::Device * dev);
77 | void wifiNetworkAdd(NetworkManager::Device * dev, QString const & ssid);
78 | void wifiNetworkUpdate(NetworkManager::WirelessNetwork * net);
79 | void wifiNetworkRemove(NetworkManager::Device * dev, QString const & ssid);
80 |
81 |
82 | private Q_SLOT:
83 | //connection
84 | void onConnectionUpdated();
85 | void onConnectionRemoved();
86 |
87 | //active connection
88 | void onActiveConnectionUpdated();
89 |
90 | //device
91 | void onDeviceUpdated();
92 | void onWifiNetworkAppeared(QString const & ssid);
93 | void onWifiNetworkDisappeared(QString const & ssid);
94 |
95 | //wifi network
96 | void onWifiNetworkUpdated();
97 |
98 | //notifier
99 | void onDeviceAdded(QString const & uni);
100 | void onDeviceRemoved(QString const & uni);
101 | void onActiveConnectionAdded(QString const & path);
102 | void onActiveConnectionRemoved(QString const & path);
103 | void onActiveConnectionsChanged();
104 |
105 | //settings notifier
106 | void onConnectionAdded(QString const & path);
107 | void onConnectionRemoved(QString const & path);
108 |
109 | public:
110 | NetworkManager::ActiveConnection::List mActiveConns;
111 | NetworkManager::Connection::List mConnections;
112 | NetworkManager::Device::List mDevices;
113 | NetworkManager::WirelessNetwork::List mWifiNets;
114 |
115 | };
116 |
117 |
118 | enum ItemId
119 | {
120 | ITEM_ROOT = 0x0
121 | , ITEM_ACTIVE = 0x01
122 | , ITEM_ACTIVE_LEAF = 0x11
123 | , ITEM_CONNECTION = 0x2
124 | , ITEM_CONNECTION_LEAF = 0x21
125 | , ITEM_DEVICE = 0x3
126 | , ITEM_DEVICE_LEAF = 0x31
127 | , ITEM_WIFINET = 0x4
128 | , ITEM_WIFINET_LEAF = 0x41
129 | };
130 |
131 | #endif //NMMODEL_P_H
132 |
--------------------------------------------------------------------------------
/src/nmproxy.cpp:
--------------------------------------------------------------------------------
1 | /*COPYRIGHT_HEADER
2 |
3 | This file is a part of nm-tray.
4 |
5 | Copyright (c)
6 | 2015~now Palo Kisa
7 |
8 | nm-tray is free software; you can redistribute it and/or
9 | modify it under the terms of the GNU General Public License
10 | as published by the Free Software Foundation; either version 2
11 | of the License, or (at your option) any later version.
12 |
13 | This program is distributed in the hope that it will be useful,
14 | but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 | GNU General Public License for more details.
17 |
18 | You should have received a copy of the GNU General Public License
19 | along with this program; if not, write to the Free Software
20 | Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
21 |
22 | COPYRIGHT_HEADER*/
23 | #include "nmproxy.h"
24 | #include "log.h"
25 |
26 | void NmProxy::setSourceModel(QAbstractItemModel * sourceModel)
27 | {
28 | //we operate only on our known model
29 | Q_ASSERT(sourceModel->metaObject() == &NmModel::staticMetaObject);
30 | Q_ASSERT(root.isValid());
31 | beginResetModel();
32 |
33 | if (nullptr != this->sourceModel())
34 | {
35 | disconnect(this->sourceModel(), &QAbstractItemModel::dataChanged, this, &NmProxy::onSourceDataChanged);
36 | disconnect(this->sourceModel(), &QAbstractItemModel::headerDataChanged, this, &NmProxy::onSourceHeaderDataChanged);
37 | disconnect(this->sourceModel(), &QAbstractItemModel::rowsAboutToBeInserted, this, &NmProxy::onSourceRowsAboutToBeInserted);
38 | disconnect(this->sourceModel(), &QAbstractItemModel::rowsInserted, this, &NmProxy::onSourceRowsInserted);
39 | disconnect(this->sourceModel(), &QAbstractItemModel::rowsAboutToBeRemoved, this, &NmProxy::onSourceRowsAboutToBeRemoved);
40 | disconnect(this->sourceModel(), &QAbstractItemModel::rowsRemoved, this, &NmProxy::onSourceRowsRemoved);
41 | disconnect(this->sourceModel(), &QAbstractItemModel::columnsAboutToBeInserted, this, &NmProxy::onSourceColumnsAboutToBeInserted);
42 | disconnect(this->sourceModel(), &QAbstractItemModel::columnsInserted, this, &NmProxy::onSourceColumnsInserted);
43 | disconnect(this->sourceModel(), &QAbstractItemModel::columnsAboutToBeRemoved, this, &NmProxy::onSourceColumnsAboutToBeRemoved);
44 | disconnect(this->sourceModel(), &QAbstractItemModel::columnsRemoved, this, &NmProxy::onSourceColumnsRemoved);
45 | disconnect(this->sourceModel(), &QAbstractItemModel::modelAboutToBeReset, this, &NmProxy::onSourceModelAboutToBeReset);
46 | disconnect(this->sourceModel(), &QAbstractItemModel::modelReset, this, &NmProxy::onSourceModelReset);
47 | disconnect(this->sourceModel(), &QAbstractItemModel::rowsAboutToBeMoved, this, &NmProxy::onSourceRowsAboutToBeMoved);
48 | disconnect(this->sourceModel(), &QAbstractItemModel::rowsMoved, this, &NmProxy::onSourceRowsMoved);
49 | disconnect(this->sourceModel(), &QAbstractItemModel::columnsAboutToBeMoved, this, &NmProxy::onSourceColumnsAboutToBeMoved);
50 | disconnect(this->sourceModel(), &QAbstractItemModel::columnsMoved, this, &NmProxy::onSourceColumnsMoved);
51 | }
52 |
53 | QAbstractProxyModel::setSourceModel(sourceModel);
54 |
55 | connect(sourceModel, &QAbstractItemModel::dataChanged, this, &NmProxy::onSourceDataChanged);
56 | connect(sourceModel, &QAbstractItemModel::headerDataChanged, this, &NmProxy::onSourceHeaderDataChanged);
57 | connect(sourceModel, &QAbstractItemModel::rowsAboutToBeInserted, this, &NmProxy::onSourceRowsAboutToBeInserted);
58 | connect(sourceModel, &QAbstractItemModel::rowsInserted, this, &NmProxy::onSourceRowsInserted);
59 | connect(sourceModel, &QAbstractItemModel::rowsAboutToBeRemoved, this, &NmProxy::onSourceRowsAboutToBeRemoved);
60 | connect(sourceModel, &QAbstractItemModel::rowsRemoved, this, &NmProxy::onSourceRowsRemoved);
61 | connect(sourceModel, &QAbstractItemModel::columnsAboutToBeInserted, this, &NmProxy::onSourceColumnsAboutToBeInserted);
62 | connect(sourceModel, &QAbstractItemModel::columnsInserted, this, &NmProxy::onSourceColumnsInserted);
63 | connect(sourceModel, &QAbstractItemModel::columnsAboutToBeRemoved, this, &NmProxy::onSourceColumnsAboutToBeRemoved);
64 | connect(sourceModel, &QAbstractItemModel::columnsRemoved, this, &NmProxy::onSourceColumnsRemoved);
65 | connect(sourceModel, &QAbstractItemModel::modelAboutToBeReset, this, &NmProxy::onSourceModelAboutToBeReset);
66 | connect(sourceModel, &QAbstractItemModel::modelReset, this, &NmProxy::onSourceModelReset);
67 | connect(sourceModel, &QAbstractItemModel::rowsAboutToBeMoved, this, &NmProxy::onSourceRowsAboutToBeMoved);
68 | connect(sourceModel, &QAbstractItemModel::rowsMoved, this, &NmProxy::onSourceRowsMoved);
69 | connect(sourceModel, &QAbstractItemModel::columnsAboutToBeMoved, this, &NmProxy::onSourceColumnsAboutToBeMoved);
70 | connect(sourceModel, &QAbstractItemModel::columnsMoved, this, &NmProxy::onSourceColumnsMoved);
71 |
72 | endResetModel();
73 | }
74 |
75 | void NmProxy::setNmModel(NmModel * model, NmModel::ItemType shownType)
76 | {
77 | root = model->indexTypeRoot(shownType);
78 | setSourceModel(model);
79 | //qCDebug(NM_TRAY) << __FUNCTION__ << model->indexTypeRoot(shownType) << "->" << root;
80 | }
81 |
82 | QModelIndex NmProxy::index(int row, int column, const QModelIndex & proxyParent) const
83 | {
84 | QModelIndex i;
85 | if (hasIndex(row, column, proxyParent))
86 | i = createIndex(row, column);
87 | //qCDebug(NM_TRAY) << __FUNCTION__ << row << column << proxyParent << "->" << i;
88 | return i;
89 | }
90 |
91 | QModelIndex NmProxy::parent(const QModelIndex &/*proxyIndex*/) const
92 | {
93 | //showing only one level/list: leaf -> invalid, root -> invalid
94 | QModelIndex i;
95 | //qCDebug(NM_TRAY) << __FUNCTION__ << proxyIndex << "->" << i;
96 | return i;
97 | }
98 |
99 | int NmProxy::rowCount(const QModelIndex &proxyParent) const
100 | {
101 | //showing only one level/list: leaf -> source root rowcount, root -> 0
102 | if (proxyParent.isValid())
103 | return 0;
104 | else
105 | return sourceModel()->rowCount(root);
106 | }
107 |
108 | int NmProxy::columnCount(const QModelIndex &proxyParent) const
109 | {
110 | return sourceModel()->columnCount(mapToSource(proxyParent));
111 | }
112 |
113 | void NmProxy::activateConnection(QModelIndex const & index) const
114 | {
115 | qobject_cast(sourceModel())->activateConnection(mapToSource(index));
116 | }
117 |
118 | void NmProxy::deactivateConnection(QModelIndex const & index) const
119 | {
120 | qobject_cast(sourceModel())->deactivateConnection(mapToSource(index));
121 | }
122 |
123 | QModelIndex NmProxy::mapToSource(const QModelIndex & proxyIndex) const
124 | {
125 | QModelIndex i;
126 | if (proxyIndex.isValid())
127 | i = sourceModel()->index(proxyIndex.row(), proxyIndex.column(), root);
128 | //qCDebug(NM_TRAY) << __FUNCTION__ << proxyIndex << "->" << i;
129 | return i;
130 | }
131 |
132 | QModelIndex NmProxy::mapFromSource(const QModelIndex & sourceIndex) const
133 | {
134 | QModelIndex i;
135 | if (sourceIndex.isValid() && root != sourceIndex)
136 | i = createIndex(sourceIndex.row(), sourceIndex.column());
137 | //qCDebug(NM_TRAY) << __FUNCTION__ << sourceIndex << "->" << i;
138 | return i;
139 | }
140 |
141 | void NmProxy::onSourceDataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight, const QVector &roles)
142 | {
143 | if (root == topLeft.parent())
144 | emit dataChanged(mapFromSource(topLeft), mapFromSource(bottomRight), roles);
145 | }
146 |
147 | void NmProxy::onSourceHeaderDataChanged(Qt::Orientation orientation, int first, int last)
148 | {
149 | emit headerDataChanged(orientation, first, last);
150 | }
151 |
152 | void NmProxy::onSourceRowsAboutToBeInserted(const QModelIndex &parent, int first, int last)
153 | {
154 | if (root == parent)
155 | beginInsertRows(mapFromSource(parent), first, last);
156 | }
157 |
158 | void NmProxy::onSourceRowsInserted(const QModelIndex &parent, int, int)
159 | {
160 | if (root == parent)
161 | endInsertRows();
162 | }
163 |
164 | void NmProxy::onSourceRowsAboutToBeRemoved(const QModelIndex &parent, int first, int last)
165 | {
166 | if (root == parent)
167 | beginRemoveRows(mapFromSource(parent), first, last);
168 | }
169 |
170 | void NmProxy::onSourceRowsRemoved(const QModelIndex &parent, int, int)
171 | {
172 | if (root == parent)
173 | endRemoveRows();
174 | }
175 |
176 | void NmProxy::onSourceColumnsAboutToBeInserted(const QModelIndex &parent, int first, int last)
177 | {
178 | if (root == parent)
179 | beginInsertColumns(mapFromSource(parent), first, last);
180 | }
181 |
182 | void NmProxy::onSourceColumnsInserted(const QModelIndex &parent, int, int)
183 | {
184 | if (root == parent)
185 | endInsertColumns();
186 | }
187 |
188 |
189 | void NmProxy::onSourceColumnsAboutToBeRemoved(const QModelIndex &parent, int first, int last)
190 | {
191 | if (root == parent)
192 | beginRemoveColumns(mapFromSource(parent), first, last);
193 | }
194 |
195 | void NmProxy::onSourceColumnsRemoved(const QModelIndex &parent, int, int)
196 | {
197 | if (root == parent)
198 | endRemoveColumns();
199 | }
200 |
201 | void NmProxy::onSourceModelAboutToBeReset()
202 | {
203 | beginResetModel();
204 | }
205 |
206 | void NmProxy::onSourceModelReset()
207 | {
208 | endResetModel();
209 | }
210 |
211 | void NmProxy::onSourceRowsAboutToBeMoved( const QModelIndex &sourceParent, int sourceStart, int sourceEnd, const QModelIndex &destinationParent, int destinationRow)
212 | {
213 | if (root == sourceParent)
214 | {
215 | if (root == destinationParent)
216 | beginMoveRows(mapFromSource(sourceParent), sourceStart, sourceEnd, destinationParent, destinationRow);
217 | else
218 | beginRemoveRows(mapFromSource(sourceParent), sourceStart, sourceEnd);
219 | } else if (root == destinationParent)
220 | beginInsertRows(mapFromSource(destinationParent), destinationRow, destinationRow + (sourceEnd - sourceStart));
221 | }
222 |
223 | void NmProxy::onSourceRowsMoved( const QModelIndex &sourceParent, int, int, const QModelIndex &destinationParent, int)
224 | {
225 | if (root == sourceParent)
226 | {
227 | if (root == destinationParent)
228 | endMoveRows();
229 | else
230 | endRemoveRows();
231 | } else if (root == destinationParent)
232 | endInsertRows();
233 | }
234 |
235 |
236 | void NmProxy::onSourceColumnsAboutToBeMoved( const QModelIndex &sourceParent, int sourceStart, int sourceEnd, const QModelIndex &destinationParent, int destinationColumn)
237 | {
238 | if (root == sourceParent)
239 | {
240 | if (root == destinationParent)
241 | beginMoveColumns(mapFromSource(sourceParent), sourceStart, sourceEnd, destinationParent, destinationColumn);
242 | else
243 | beginRemoveColumns(mapFromSource(sourceParent), sourceStart, sourceEnd);
244 | } else if (root == destinationParent)
245 | beginInsertColumns(mapFromSource(destinationParent), destinationColumn, destinationColumn + (sourceEnd - sourceStart));
246 | }
247 |
248 | void NmProxy::onSourceColumnsMoved( const QModelIndex &sourceParent, int, int, const QModelIndex &destinationParent, int)
249 | {
250 | if (root == sourceParent)
251 | {
252 | if (root == destinationParent)
253 | endMoveColumns();
254 | else
255 | endRemoveColumns();
256 | } else if (root == destinationParent)
257 | endInsertColumns();
258 | }
259 |
260 |
--------------------------------------------------------------------------------
/src/nmproxy.h:
--------------------------------------------------------------------------------
1 | /*COPYRIGHT_HEADER
2 |
3 | This file is a part of nm-tray.
4 |
5 | Copyright (c)
6 | 2015~now Palo Kisa
7 |
8 | nm-tray is free software; you can redistribute it and/or
9 | modify it under the terms of the GNU General Public License
10 | as published by the Free Software Foundation; either version 2
11 | of the License, or (at your option) any later version.
12 |
13 | This program is distributed in the hope that it will be useful,
14 | but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 | GNU General Public License for more details.
17 |
18 | You should have received a copy of the GNU General Public License
19 | along with this program; if not, write to the Free Software
20 | Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
21 |
22 | COPYRIGHT_HEADER*/
23 | #if !defined(NMPROXY_H)
24 | #define NMPROXY_H
25 |
26 | #include
27 | #include "nmmodel.h"
28 |
29 | class NmProxy : public QAbstractProxyModel
30 | {
31 | Q_OBJECT
32 | public:
33 | using QAbstractProxyModel::QAbstractProxyModel;
34 | virtual void setSourceModel(QAbstractItemModel * sourceModel) override;
35 | void setNmModel(NmModel * model, NmModel::ItemType shownType);
36 |
37 | virtual QModelIndex index(int row, int column, const QModelIndex & parent = QModelIndex()) const override;
38 | virtual QModelIndex parent(const QModelIndex &index) const override;
39 |
40 | virtual int rowCount(const QModelIndex &parent = QModelIndex()) const override;
41 | virtual int columnCount(const QModelIndex &parent = QModelIndex()) const override;
42 |
43 | void activateConnection(QModelIndex const & index) const;
44 | void deactivateConnection(QModelIndex const & index) const;
45 |
46 | protected:
47 | virtual QModelIndex mapToSource(const QModelIndex & proxyIndex) const override;
48 | virtual QModelIndex mapFromSource(const QModelIndex & sourceIndex) const override;
49 |
50 | private Q_SLOTS:
51 | void onSourceDataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight, const QVector &roles = QVector());
52 | void onSourceHeaderDataChanged(Qt::Orientation orientation, int first, int last);
53 |
54 | void onSourceRowsAboutToBeInserted(const QModelIndex &parent, int first, int last);
55 | void onSourceRowsInserted(const QModelIndex &parent, int first, int last);
56 |
57 | void onSourceRowsAboutToBeRemoved(const QModelIndex &parent, int first, int last);
58 | void onSourceRowsRemoved(const QModelIndex &parent, int first, int last);
59 |
60 | void onSourceColumnsAboutToBeInserted(const QModelIndex &parent, int first, int last);
61 | void onSourceColumnsInserted(const QModelIndex &parent, int first, int last);
62 |
63 | void onSourceColumnsAboutToBeRemoved(const QModelIndex &parent, int first, int last);
64 | void onSourceColumnsRemoved(const QModelIndex &parent, int first, int last);
65 |
66 | void onSourceModelAboutToBeReset();
67 | void onSourceModelReset();
68 |
69 | void onSourceRowsAboutToBeMoved( const QModelIndex &sourceParent, int sourceStart, int sourceEnd, const QModelIndex &destinationParent, int destinationRow);
70 | void onSourceRowsMoved( const QModelIndex &parent, int start, int end, const QModelIndex &destination, int row);
71 |
72 | void onSourceColumnsAboutToBeMoved( const QModelIndex &sourceParent, int sourceStart, int sourceEnd, const QModelIndex &destinationParent, int destinationColumn);
73 | void onSourceColumnsMoved( const QModelIndex &parent, int start, int end, const QModelIndex &destination, int column);
74 |
75 | private:
76 | QModelIndex root;
77 | };
78 |
79 | #endif //NMPROXY_H
80 |
--------------------------------------------------------------------------------
/src/translate.cpp:
--------------------------------------------------------------------------------
1 | /*COPYRIGHT_HEADER
2 |
3 | This file is a part of nm-tray.
4 |
5 | Copyright (c)
6 | 2015~now Palo Kisa
7 |
8 | nm-tray is free software; you can redistribute it and/or
9 | modify it under the terms of the GNU General Public License
10 | as published by the Free Software Foundation; either version 2
11 | of the License, or (at your option) any later version.
12 |
13 | This program is distributed in the hope that it will be useful,
14 | but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 | GNU General Public License for more details.
17 |
18 | You should have received a copy of the GNU General Public License
19 | along with this program; if not, write to the Free Software
20 | Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
21 |
22 | COPYRIGHT_HEADER*/
23 | #include
24 | #include
25 | #include
26 | #include
27 | #include
28 |
29 | #if !defined(TRANSLATION_DIR)
30 | #define TRANSLATION_DIR "/usr/share/nm-tray"
31 | #endif
32 |
33 | void translate()
34 | {
35 | const QString locale = QLocale::system().name();
36 | auto qt_trans = std::make_unique(qApp);
37 | if (qt_trans->load(QLatin1String("qt_") + locale, QLibraryInfo::path(QLibraryInfo::TranslationsPath)))
38 | qApp->installTranslator(qt_trans.release());
39 |
40 | QString trans_dir = qgetenv("NM_TRAY_TRANSLATION_DIR").constData();
41 | auto my_trans = std::make_unique(qApp);
42 | if (my_trans->load(QLatin1String("nm-tray_") + locale, trans_dir.isEmpty() ? TRANSLATION_DIR : trans_dir))
43 | qApp->installTranslator(my_trans.release());
44 | }
45 |
46 | Q_COREAPP_STARTUP_FUNCTION(translate)
47 |
--------------------------------------------------------------------------------
/src/tray.h:
--------------------------------------------------------------------------------
1 | /*COPYRIGHT_HEADER
2 |
3 | This file is a part of nm-tray.
4 |
5 | Copyright (c)
6 | 2015~now Palo Kisa
7 |
8 | nm-tray is free software; you can redistribute it and/or
9 | modify it under the terms of the GNU General Public License
10 | as published by the Free Software Foundation; either version 2
11 | of the License, or (at your option) any later version.
12 |
13 | This program is distributed in the hope that it will be useful,
14 | but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 | GNU General Public License for more details.
17 |
18 | You should have received a copy of the GNU General Public License
19 | along with this program; if not, write to the Free Software
20 | Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
21 |
22 | COPYRIGHT_HEADER*/
23 | #if !defined(TRAY_H)
24 | #define TRAY_H
25 |
26 | #include
27 | #include
28 | #include
29 |
30 | class TrayPrivate;
31 |
32 | class Tray : public QObject
33 | {
34 | Q_OBJECT
35 |
36 | public:
37 | Tray(QObject *parent = nullptr);
38 | ~Tray();
39 |
40 | protected:
41 | virtual bool eventFilter(QObject * object, QEvent * event) override;
42 |
43 | private Q_SLOTS:
44 | //menu
45 | void onEditConnectionsTriggered();
46 | void onAboutTriggered();
47 | void onQuitTriggered();
48 | void onActivated(const QSystemTrayIcon::ActivationReason reason);
49 |
50 | //NetworkManager
51 | void setActionsStates();
52 | void onPrimaryConnectionChanged(QString const & uni);
53 |
54 | private:
55 | QScopedPointer d;
56 | };
57 |
58 |
59 | #endif //TRAY_H
60 |
--------------------------------------------------------------------------------
/src/windowmenu.cpp:
--------------------------------------------------------------------------------
1 | /*COPYRIGHT_HEADER
2 |
3 | This file is a part of nm-tray.
4 |
5 | Copyright (c)
6 | 2016~now Palo Kisa
7 |
8 | nm-tray is free software; you can redistribute it and/or
9 | modify it under the terms of the GNU General Public License
10 | as published by the Free Software Foundation; either version 2
11 | of the License, or (at your option) any later version.
12 |
13 | This program is distributed in the hope that it will be useful,
14 | but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 | GNU General Public License for more details.
17 |
18 | You should have received a copy of the GNU General Public License
19 | along with this program; if not, write to the Free Software
20 | Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
21 |
22 | COPYRIGHT_HEADER*/
23 |
24 | #include "windowmenu.h"
25 | #include "nmmodel.h"
26 | #include "nmproxy.h"
27 | #include "menuview.h"
28 |
29 | #include
30 | #include
31 | #include
32 |
33 | class WindowMenuPrivate
34 | {
35 | public:
36 | NmModel * mNmModel;
37 |
38 | QScopedPointer mWirelessModel;
39 | QWidgetAction * mWirelessAction;
40 |
41 | QScopedPointer mActiveModel;
42 | QWidgetAction * mActiveAction;
43 |
44 | QScopedPointer mConnectionModel;
45 | QWidgetAction * mConnectionAction;
46 |
47 | QAction * mMakeDirtyAction;
48 | QTimer mDelaySizeRefreshTimer;
49 |
50 | WindowMenuPrivate(WindowMenu * q);
51 | template
52 | void onActivated(QModelIndex const & index
53 | , QAbstractItemModel const * topParent
54 | , F const & functor);
55 | void forceSizeRefresh();
56 | void onViewRowChange(QAction * viewAction, QAbstractItemModel const * model);
57 | private:
58 | WindowMenu * q_ptr;
59 | Q_DECLARE_PUBLIC(WindowMenu);
60 | };
61 |
62 | WindowMenuPrivate::WindowMenuPrivate(WindowMenu * q)
63 | : q_ptr{q}
64 | {
65 | }
66 |
67 | template
68 | void WindowMenuPrivate::onActivated(QModelIndex const & index
69 | , QAbstractItemModel const * topParent
70 | , F const & functor)
71 | {
72 | QModelIndex i = index;
73 | for (QAbstractProxyModel const * proxy = qobject_cast(index.model())
74 | ; nullptr != proxy && topParent != proxy
75 | ; proxy = qobject_cast(proxy->sourceModel())
76 | )
77 | {
78 | i = proxy->mapToSource(i);
79 | }
80 | functor(i);
81 | }
82 |
83 | void WindowMenuPrivate::forceSizeRefresh()
84 | {
85 | Q_Q(WindowMenu);
86 | if (!q->isVisible())
87 | {
88 | return;
89 | }
90 |
91 | const QSize old_size = q->size();
92 | //TODO: how to force the menu to recalculate it's size in a more elegant way?
93 | q->addAction(mMakeDirtyAction);
94 | q->removeAction(mMakeDirtyAction);
95 | // ensure to be visible (should the resize make it out of screen)
96 | if (old_size != q->size())
97 | {
98 | q->popup(q->geometry().topLeft());
99 | }
100 | }
101 |
102 | void WindowMenuPrivate::onViewRowChange(QAction * viewAction, QAbstractItemModel const * model)
103 | {
104 | viewAction->setVisible(model->rowCount(QModelIndex{}) > 0);
105 | mDelaySizeRefreshTimer.start();
106 | }
107 |
108 |
109 |
110 |
111 | WindowMenu::WindowMenu(NmModel * nmModel, QWidget * parent /*= nullptr*/)
112 | : QMenu{parent}
113 | , d_ptr{new WindowMenuPrivate{this}}
114 | {
115 | Q_D(WindowMenu);
116 | d->mNmModel = nmModel;
117 |
118 | //active proxy & widgets
119 | d->mActiveModel.reset(new NmProxy);
120 | d->mActiveModel->setNmModel(d->mNmModel, NmModel::ActiveConnectionType);
121 | MenuView * active_view = new MenuView{d->mActiveModel.data()};
122 | connect(active_view, &MenuView::activatedNoMiddleRight, [this, d] (const QModelIndex & index) {
123 | d->onActivated(index, d->mActiveModel.data(), std::bind(&NmProxy::deactivateConnection, d->mActiveModel.data(), std::placeholders::_1));
124 | close();
125 | });
126 |
127 | d->mActiveAction = new QWidgetAction{this};
128 | d->mActiveAction->setDefaultWidget(active_view);
129 | connect(d->mActiveModel.data(), &QAbstractItemModel::modelReset, [d] { d->onViewRowChange(d->mActiveAction, d->mActiveModel.data()); });
130 | connect(d->mActiveModel.data(), &QAbstractItemModel::rowsInserted, [d] { d->onViewRowChange(d->mActiveAction, d->mActiveModel.data()); });
131 | connect(d->mActiveModel.data(), &QAbstractItemModel::rowsRemoved, [d] { d->onViewRowChange(d->mActiveAction, d->mActiveModel.data()); });
132 |
133 | //wireless proxy & widgets
134 | d->mWirelessModel.reset(new NmProxy);
135 | d->mWirelessModel->setNmModel(d->mNmModel, NmModel::WifiNetworkType);
136 | MenuView * wifi_view = new MenuView{d->mWirelessModel.data()};
137 | connect(wifi_view, &MenuView::activatedNoMiddleRight, [this, d] (const QModelIndex & index) {
138 | d->onActivated(index, d->mWirelessModel.data(), std::bind(&NmProxy::activateConnection, d->mWirelessModel.data(), std::placeholders::_1));
139 | close();
140 | });
141 |
142 | d->mWirelessAction = new QWidgetAction{this};
143 | d->mWirelessAction->setDefaultWidget(wifi_view);
144 | connect(d->mWirelessModel.data(), &QAbstractItemModel::modelReset, [d] { d->onViewRowChange(d->mWirelessAction, d->mWirelessModel.data()); });
145 | connect(d->mWirelessModel.data(), &QAbstractItemModel::rowsInserted, [d] { d->onViewRowChange(d->mWirelessAction, d->mWirelessModel.data()); });
146 | connect(d->mWirelessModel.data(), &QAbstractItemModel::rowsRemoved, [d] { d->onViewRowChange(d->mWirelessAction, d->mWirelessModel.data()); });
147 |
148 | //connection proxy & widgets
149 | d->mConnectionModel.reset(new NmProxy);
150 | d->mConnectionModel->setNmModel(d->mNmModel, NmModel::ConnectionType);
151 | MenuView * connection_view = new MenuView{d->mConnectionModel.data()};
152 | connect(connection_view, &MenuView::activatedNoMiddleRight, [this, d] (const QModelIndex & index) {
153 | d->onActivated(index, d->mConnectionModel.data(), std::bind(&NmProxy::activateConnection, d->mConnectionModel.data(), std::placeholders::_1));
154 | close();
155 | });
156 |
157 | d->mConnectionAction = new QWidgetAction{this};
158 | d->mConnectionAction->setDefaultWidget(connection_view);
159 | connect(d->mConnectionModel.data(), &QAbstractItemModel::modelReset, [d] { d->onViewRowChange(d->mConnectionAction, d->mConnectionModel.data()); });
160 | connect(d->mConnectionModel.data(), &QAbstractItemModel::rowsInserted, [d] { d->onViewRowChange(d->mConnectionAction, d->mConnectionModel.data()); });
161 | connect(d->mConnectionModel.data(), &QAbstractItemModel::rowsRemoved, [d] { d->onViewRowChange(d->mConnectionAction, d->mConnectionModel.data()); });
162 |
163 | addAction(tr("Active connection(s)"))->setEnabled(false);
164 | addAction(d->mActiveAction);
165 | addAction(tr("Wi-Fi network(s)"))->setEnabled(false);
166 | addAction(d->mWirelessAction);
167 | addAction(tr("Known connection(s)"))->setEnabled(false);
168 | addAction(d->mConnectionAction);
169 |
170 | d->mMakeDirtyAction = new QAction{this};
171 | d->mDelaySizeRefreshTimer.setInterval(200);
172 | d->mDelaySizeRefreshTimer.setSingleShot(true);
173 | connect(&d->mDelaySizeRefreshTimer, &QTimer::timeout, [d] { d->forceSizeRefresh(); });
174 |
175 | d->onViewRowChange(d->mActiveAction, d->mActiveModel.data());
176 | d->onViewRowChange(d->mWirelessAction, d->mWirelessModel.data());
177 | d->onViewRowChange(d->mConnectionAction, d->mConnectionModel.data());
178 | }
179 |
180 | WindowMenu::~WindowMenu()
181 | {
182 | }
183 |
--------------------------------------------------------------------------------
/src/windowmenu.h:
--------------------------------------------------------------------------------
1 | /*COPYRIGHT_HEADER
2 |
3 | This file is a part of nm-tray.
4 |
5 | Copyright (c)
6 | 2016~now Palo Kisa
7 |
8 | nm-tray is free software; you can redistribute it and/or
9 | modify it under the terms of the GNU General Public License
10 | as published by the Free Software Foundation; either version 2
11 | of the License, or (at your option) any later version.
12 |
13 | This program is distributed in the hope that it will be useful,
14 | but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 | GNU General Public License for more details.
17 |
18 | You should have received a copy of the GNU General Public License
19 | along with this program; if not, write to the Free Software
20 | Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
21 |
22 | COPYRIGHT_HEADER*/
23 |
24 | #if !defined(WINDOW_MENU_H)
25 | #define WINDOW_MENU_H
26 |
27 | #include
28 |
29 | class WindowMenuPrivate;
30 | class NmModel;
31 |
32 | class WindowMenu : public QMenu
33 | {
34 | Q_OBJECT
35 | public:
36 | WindowMenu(NmModel * nmModel, QWidget * parent = nullptr);
37 | ~WindowMenu();
38 |
39 | private:
40 | QScopedPointer d_ptr;
41 | Q_DECLARE_PRIVATE(WindowMenu);
42 | };
43 |
44 |
45 | #endif //WINDOW_MENU_H
46 |
47 |
--------------------------------------------------------------------------------
/translations/nm-tray.ts:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | ConnectionInfo
6 |
7 |
8 | Connection information
9 |
10 |
11 |
12 |
13 | NmList
14 |
15 |
16 | All information
17 |
18 |
19 |
20 |
21 | Active connections
22 |
23 |
24 |
25 |
26 | Available wireless
27 |
28 |
29 |
30 |
31 | NmModel
32 |
33 |
34 | nm-tray - wireless password
35 |
36 |
37 |
38 |
39 | Password is needed for connection to '%1':
40 |
41 |
42 |
43 |
44 | root
45 |
46 |
47 |
48 |
49 | active connection(s)
50 |
51 |
52 |
53 |
54 | connection(s)
55 |
56 |
57 |
58 |
59 | device(s)
60 |
61 |
62 |
63 |
64 | wifi network(s)
65 |
66 |
67 |
68 |
69 | unknown
70 | hardware address
71 |
72 |
73 |
74 |
75 | General
76 | Active connection information
77 |
78 |
79 |
80 |
81 | Interface
82 | Active connection information
83 |
84 |
85 |
86 |
87 | Hardware Address
88 | Active connection information
89 |
90 |
91 |
92 |
93 | Driver
94 | Active connection information
95 |
96 |
97 |
98 |
99 | Speed
100 | Active connection information
101 |
102 |
103 |
104 |
105 | Kb/s
106 |
107 |
108 |
109 |
110 | Mb/s
111 |
112 |
113 |
114 |
115 | Gb/s
116 |
117 |
118 |
119 |
120 | Tb/s
121 |
122 |
123 |
124 |
125 | unknown
126 | Speed
127 |
128 |
129 |
130 |
131 | Security
132 | Active connection information
133 |
134 |
135 |
136 |
137 | IPv4
138 | Active connection information
139 |
140 |
141 |
142 |
143 | IPv6
144 | Active connection information
145 |
146 |
147 |
148 |
149 | IP Address
150 | Active connection information
151 |
152 |
153 |
154 |
155 | Subnet Mask
156 | Active connection information
157 |
158 |
159 |
160 |
161 | Default route
162 | Active connection information
163 |
164 |
165 |
166 |
167 | DNS(%1)
168 | Active connection information
169 |
170 |
171 |
172 |
173 | Tray
174 |
175 |
176 | <pre>Connection <strong>%1</strong>(%2) active</pre>
177 |
178 |
179 |
180 |
181 | <pre>No active connection</pre>
182 |
183 |
184 |
185 |
186 | Connection lost
187 |
188 |
189 |
190 |
191 | No longer connected to %1 '%2'.
192 |
193 |
194 |
195 |
196 | Connection established
197 |
198 |
199 |
200 |
201 | Now connected to %1 '%2'.
202 |
203 |
204 |
205 |
206 | NetworkManager(nm-tray)
207 |
208 |
209 |
210 |
211 | Enable Networking
212 |
213 |
214 |
215 |
216 | Enable Wi-Fi
217 |
218 |
219 |
220 |
221 | Enable notifications
222 |
223 |
224 |
225 |
226 | Connection information
227 |
228 |
229 |
230 |
231 | Debug information
232 |
233 |
234 |
235 |
236 | Wifi - request scan
237 |
238 |
239 |
240 |
241 | Edit connections...
242 |
243 |
244 |
245 |
246 | About
247 |
248 |
249 |
250 |
251 | Quit
252 |
253 |
254 |
255 |
256 | nm-tray info
257 |
258 |
259 |
260 |
261 | %1 about
262 |
263 |
264 |
265 |
266 | <strong><a href="https://github.com/palinek/nm-tray">nm-tray</a></strong> is a simple Qt based frontend for <a href="https://wiki.gnome.org/Projects/NetworkManager">NetworkManager</a>.<br/><br/>Version: %1
267 |
268 |
269 |
270 |
271 | WindowMenu
272 |
273 |
274 | Active connection(s)
275 |
276 |
277 |
278 |
279 | Wi-Fi network(s)
280 |
281 |
282 |
283 |
284 | Known connection(s)
285 |
286 |
287 |
288 |
289 |
--------------------------------------------------------------------------------
/translations/nm-tray_cs.ts:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | ConnectionInfo
6 |
7 |
8 | Connection information
9 | Informace o spojení
10 |
11 |
12 |
13 | NmList
14 |
15 |
16 | All information
17 | Všechny informace
18 |
19 |
20 |
21 | Active connections
22 | Aktivní připojení
23 |
24 |
25 |
26 | Available wireless
27 | Bezdrátové sítě k dispozici
28 |
29 |
30 |
31 | NmModel
32 |
33 |
34 | nm-tray - wireless password
35 | nm-tray – heslo k bezdrátové síti
36 |
37 |
38 |
39 | Password is needed for connection to '%1':
40 | Pro připojení k „%1“ je třeba heslo:
41 |
42 |
43 |
44 | root
45 |
46 |
47 |
48 |
49 | active connection(s)
50 | aktivní spojení
51 |
52 |
53 |
54 | connection(s)
55 | spojení
56 |
57 |
58 |
59 | device(s)
60 | zařízení
61 |
62 |
63 |
64 | wifi network(s)
65 | WiFi sítě
66 |
67 |
68 |
69 | unknown
70 | hardware address
71 | neznámé
72 |
73 |
74 |
75 | General
76 | Active connection information
77 | Obecné
78 |
79 |
80 |
81 | Interface
82 | Active connection information
83 | Rozhraní
84 |
85 |
86 |
87 | Hardware Address
88 | Active connection information
89 | Hardwarová (MAC) adresa
90 |
91 |
92 |
93 | Driver
94 | Active connection information
95 | Ovladač
96 |
97 |
98 |
99 | Speed
100 | Active connection information
101 | Rychlost
102 |
103 |
104 |
105 | Kb/s
106 | Kb/s
107 |
108 |
109 |
110 | Mb/s
111 | Mb/s
112 |
113 |
114 |
115 | Gb/s
116 | Gb/s
117 |
118 |
119 |
120 | Tb/s
121 | Tb/s
122 |
123 |
124 |
125 | unknown
126 | Speed
127 | neznámá
128 |
129 |
130 |
131 | Security
132 | Active connection information
133 | Zabezpečení
134 |
135 |
136 |
137 | IPv4
138 | Active connection information
139 |
140 |
141 |
142 |
143 | IPv6
144 | Active connection information
145 |
146 |
147 |
148 |
149 | IP Address
150 | Active connection information
151 | IP Adresa
152 |
153 |
154 |
155 | Subnet Mask
156 | Active connection information
157 | Maska sítě
158 |
159 |
160 |
161 | Default route
162 | Active connection information
163 | Výchozí trasa
164 |
165 |
166 |
167 | DNS(%1)
168 | Active connection information
169 |
170 |
171 |
172 |
173 | Tray
174 |
175 |
176 | <pre>Connection <strong>%1</strong>(%2) active</pre>
177 | <pre>Spojení <strong>%1</strong>(%2) aktivní</pre>
178 |
179 |
180 |
181 | <pre>No active connection</pre>
182 | <pre>Žádné aktivní spojení</pre>
183 |
184 |
185 |
186 | Connection lost
187 | Spojení ztraceno
188 |
189 |
190 |
191 | No longer connected to %1 '%2'.
192 | Nadále už nepřipojeno k %1 „%2“.
193 |
194 |
195 |
196 | Connection established
197 | Spojení navázáno
198 |
199 |
200 |
201 | Now connected to %1 '%2'.
202 | Nyní připojeno k %1 „%2“.
203 |
204 |
205 |
206 | NetworkManager(nm-tray)
207 |
208 |
209 |
210 |
211 | Enable Networking
212 | Zapnout síť
213 |
214 |
215 |
216 | Enable Wi-Fi
217 | Zapnout WiFi
218 |
219 |
220 |
221 | Enable notifications
222 | Zapnout oznamování
223 |
224 |
225 |
226 | Connection information
227 | Informace o připojení
228 |
229 |
230 |
231 | Debug information
232 | Ladící informace
233 |
234 |
235 |
236 | Wifi - request scan
237 | Wifi – vyžádat sken
238 |
239 |
240 |
241 | Edit connections...
242 | Upravit připojení…
243 |
244 |
245 |
246 | About
247 | O aplikaci
248 |
249 |
250 |
251 | Quit
252 | Ukončit
253 |
254 |
255 |
256 | nm-tray info
257 | nm-tray informace
258 |
259 |
260 |
261 | %1 about
262 | o %1
263 |
264 |
265 |
266 | <strong><a href="https://github.com/palinek/nm-tray">nm-tray</a></strong> is a simple Qt based frontend for <a href="https://wiki.gnome.org/Projects/NetworkManager">NetworkManager</a>.<br/><br/>Version: %1
267 | <strong><a href="https://github.com/palinek/nm-tray">nm-tray</a></strong> je jednoduchá nadstavba pro <a href="https://wiki.gnome.org/Projects/NetworkManager">NetworkManager</a>, založená na Qt.<br/><br/>Verze: %1
268 |
269 |
270 |
271 | WindowMenu
272 |
273 |
274 | Active connection(s)
275 | Aktivní připojení
276 |
277 |
278 |
279 | Wi-Fi network(s)
280 | WiFi sítě
281 |
282 |
283 |
284 | Known connection(s)
285 | Známá připojení
286 |
287 |
288 |
289 |
--------------------------------------------------------------------------------
/translations/nm-tray_da.ts:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | ConnectionInfo
6 |
7 |
8 | Connection information
9 | Forbindelsesinformation
10 |
11 |
12 |
13 | NmList
14 |
15 |
16 | All information
17 | Al information
18 |
19 |
20 |
21 | Active connections
22 | Aktive forbindelser
23 |
24 |
25 |
26 | Available wireless
27 | Tilgængelige trådløse
28 |
29 |
30 |
31 | NmModel
32 |
33 |
34 | nm-tray - wireless password
35 | nm-tray - adgangskode til trådløs
36 |
37 |
38 |
39 | Password is needed for connection to '%1':
40 | Der kræves adgangskode for at oprette forbindelse til '%1':
41 |
42 |
43 |
44 | root
45 | rod
46 |
47 |
48 |
49 | active connection(s)
50 | aktive forbindelser
51 |
52 |
53 |
54 | connection(s)
55 | forbindelse(r)
56 |
57 |
58 |
59 | device(s)
60 | enhed(er)
61 |
62 |
63 |
64 | wifi network(s)
65 | wifi-netværk
66 |
67 |
68 |
69 | unknown
70 | hardware address
71 | ukendt
72 |
73 |
74 |
75 | General
76 | Active connection information
77 | Generelt
78 |
79 |
80 |
81 | Interface
82 | Active connection information
83 | Grænseflade
84 |
85 |
86 |
87 | Hardware Address
88 | Active connection information
89 | Hardwareadresse
90 |
91 |
92 |
93 | Driver
94 | Active connection information
95 |
96 |
97 |
98 |
99 | Speed
100 | Active connection information
101 | Hastighed
102 |
103 |
104 |
105 | Kb/s
106 | Kb/s
107 |
108 |
109 |
110 | Mb/s
111 | Mb/s
112 |
113 |
114 |
115 | Gb/s
116 | Gb/s
117 |
118 |
119 |
120 | Tb/s
121 | Tb/s
122 |
123 |
124 |
125 | unknown
126 | Speed
127 | ukendt
128 |
129 |
130 |
131 | Security
132 | Active connection information
133 | Sikkerhed
134 |
135 |
136 |
137 | IPv4
138 | Active connection information
139 |
140 |
141 |
142 |
143 | IPv6
144 | Active connection information
145 |
146 |
147 |
148 |
149 | IP Address
150 | Active connection information
151 | IP-adresse
152 |
153 |
154 |
155 | Subnet Mask
156 | Active connection information
157 | Subnetmaske
158 |
159 |
160 |
161 | Default route
162 | Active connection information
163 | Standardrute
164 |
165 |
166 |
167 | DNS(%1)
168 | Active connection information
169 |
170 |
171 |
172 |
173 | Tray
174 |
175 |
176 | <pre>Connection <strong>%1</strong>(%2) active</pre>
177 | <pre>Forbindelse <strong>%1</strong>(%2) aktiv</pre>
178 |
179 |
180 |
181 | <pre>No active connection</pre>
182 | <pre>Ingen aktiv forbindelse</pre>
183 |
184 |
185 |
186 | Connection lost
187 | Forbindelse mistet
188 |
189 |
190 |
191 | No longer connected to %1 '%2'.
192 | Ikke længere forbundet til %1 '%2'.
193 |
194 |
195 |
196 | Connection established
197 | Forbindelse etableret
198 |
199 |
200 |
201 | Now connected to %1 '%2'.
202 | Nu forbundet til %1 '%2'.
203 |
204 |
205 |
206 | NetworkManager(nm-tray)
207 |
208 |
209 |
210 |
211 | Enable Networking
212 | Aktivér netværk
213 |
214 |
215 |
216 | Enable Wi-Fi
217 | Aktivér Wi-Fi
218 |
219 |
220 |
221 | Enable notifications
222 | Aktivér underretninger
223 |
224 |
225 |
226 | Connection information
227 | Forbindelsesinformation
228 |
229 |
230 |
231 | Debug information
232 | Fejlretningsinformation
233 |
234 |
235 |
236 | Wifi - request scan
237 | Wifi - anmod om skanning
238 |
239 |
240 |
241 | Edit connections...
242 | Rediger forbindelser ...
243 |
244 |
245 |
246 | About
247 | Om
248 |
249 |
250 |
251 | Quit
252 | Afslut
253 |
254 |
255 |
256 | nm-tray info
257 | nm-tray-info
258 |
259 |
260 |
261 | %1 about
262 | %1 om
263 |
264 |
265 |
266 | <strong><a href="https://github.com/palinek/nm-tray">nm-tray</a></strong> is a simple Qt based frontend for <a href="https://wiki.gnome.org/Projects/NetworkManager">NetworkManager</a>.<br/><br/>Version: %1
267 | <strong><a href="https://github.com/palinek/nm-tray">nm-tray</a></strong> er en simpel Qt-baseret frontend til <a href="https://wiki.gnome.org/Projects/NetworkManager">NetworkManager</a>.<br/><br/>Version: %1
268 |
269 |
270 |
271 | WindowMenu
272 |
273 |
274 | Active connection(s)
275 | Aktive forbindelser
276 |
277 |
278 |
279 | Wi-Fi network(s)
280 | Wi-Fi-netværk
281 |
282 |
283 |
284 | Known connection(s)
285 | Kendte forbindelser
286 |
287 |
288 |
289 |
--------------------------------------------------------------------------------
/translations/nm-tray_et.ts:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | ConnectionInfo
6 |
7 |
8 | Connection information
9 | Võrguühenduse teave
10 |
11 |
12 |
13 | NmList
14 |
15 |
16 | All information
17 | Kõik teave
18 |
19 |
20 |
21 | Active connections
22 | Aktiivsed võrguühendused
23 |
24 |
25 |
26 | Available wireless
27 | Saadavalolevad traadita võrguühendused
28 |
29 |
30 |
31 | NmModel
32 |
33 |
34 | nm-tray - wireless password
35 | nm-tray - traadita võrgu salasõna
36 |
37 |
38 |
39 | Password is needed for connection to '%1':
40 | „%1“ ühendus eeldab ligipääsuks salasõna:
41 |
42 |
43 |
44 | root
45 | juur
46 |
47 |
48 |
49 | active connection(s)
50 | aktiivsed ühendused
51 |
52 |
53 |
54 | connection(s)
55 | ühendus(ed)
56 |
57 |
58 |
59 | device(s)
60 | seadmed
61 |
62 |
63 |
64 | wifi network(s)
65 | WiFi-võrgud
66 |
67 |
68 |
69 | unknown
70 | hardware address
71 | teadmata
72 |
73 |
74 |
75 | General
76 | Active connection information
77 | Üldist
78 |
79 |
80 |
81 | Interface
82 | Active connection information
83 | Võrguliides
84 |
85 |
86 |
87 | Hardware Address
88 | Active connection information
89 | Raudvara aadress
90 |
91 |
92 |
93 | Driver
94 | Active connection information
95 | Draiver
96 |
97 |
98 |
99 | Speed
100 | Active connection information
101 | Kiirus
102 |
103 |
104 |
105 | Kb/s
106 | Kb/s
107 |
108 |
109 |
110 | Mb/s
111 | Mb/s
112 |
113 |
114 |
115 | Gb/s
116 | Gb/s
117 |
118 |
119 |
120 | Tb/s
121 | Tb/s
122 |
123 |
124 |
125 | unknown
126 | Speed
127 | teadmata
128 |
129 |
130 |
131 | Security
132 | Active connection information
133 | Turvalisus
134 |
135 |
136 |
137 | IPv4
138 | Active connection information
139 | IPv4
140 |
141 |
142 |
143 | IPv6
144 | Active connection information
145 | IPv6
146 |
147 |
148 |
149 | IP Address
150 | Active connection information
151 | IP-aaddress
152 |
153 |
154 |
155 | Subnet Mask
156 | Active connection information
157 | Alamvõrgumask
158 |
159 |
160 |
161 | Default route
162 | Active connection information
163 | Vaikimisi marsruut
164 |
165 |
166 |
167 | DNS(%1)
168 | Active connection information
169 | Nimeserver(id) (%1)
170 |
171 |
172 |
173 | Tray
174 |
175 |
176 | <pre>Connection <strong>%1</strong>(%2) active</pre>
177 | <pre>Ühendus <strong>%1</strong>(%2) aktiivne</pre>
178 |
179 |
180 |
181 | <pre>No active connection</pre>
182 | <pre>Aktiivset ühendust pole</pre>
183 |
184 |
185 |
186 | Connection lost
187 | Ühendus on katkenud
188 |
189 |
190 |
191 | No longer connected to %1 '%2'.
192 | Ühendus on hetkel katkenud: %1 „%2“.
193 |
194 |
195 |
196 | Connection established
197 | Ühendus on loodud
198 |
199 |
200 |
201 | Now connected to %1 '%2'.
202 | Ühendus on loodud: %1 „%2“.
203 |
204 |
205 |
206 | NetworkManager(nm-tray)
207 | NetworkManager (nm-tray)
208 |
209 |
210 |
211 | Enable Networking
212 | Lülita võrguteenused sisse
213 |
214 |
215 |
216 | Enable Wi-Fi
217 | Lülita WiFi sisse
218 |
219 |
220 |
221 | Enable notifications
222 | Võta teavitused kasutusele
223 |
224 |
225 |
226 | Connection information
227 | Ühenduse teave
228 |
229 |
230 |
231 | Debug information
232 | Silumisteave
233 |
234 |
235 |
236 | Wifi - request scan
237 | Alusta WiFi võrgu otsingut
238 |
239 |
240 |
241 | Edit connections...
242 | Muuda ühendusi...
243 |
244 |
245 |
246 | About
247 | Rakenduse teave
248 |
249 |
250 |
251 | Quit
252 | Välju
253 |
254 |
255 |
256 | nm-tray info
257 | nm-tray teave
258 |
259 |
260 |
261 | %1 about
262 | Rakenduse teave: %1
263 |
264 |
265 |
266 | <strong><a href="https://github.com/palinek/nm-tray">nm-tray</a></strong> is a simple Qt based frontend for <a href="https://wiki.gnome.org/Projects/NetworkManager">NetworkManager</a>.<br/><br/>Version: %1
267 | <strong><a href="https://github.com/palinek/nm-tray">nm-tray</a></strong> on lihtne Qt-põhine graafiline kasutajaliides <a href="https://wiki.gnome.org/Projects/NetworkManager">NetworkManager</a>i jaoks.<br/><br/>Versioon: %1
268 |
269 |
270 |
271 | WindowMenu
272 |
273 |
274 | Active connection(s)
275 | Aktiivsed ühendused
276 |
277 |
278 |
279 | Wi-Fi network(s)
280 | WiFi-võrgud
281 |
282 |
283 |
284 | Known connection(s)
285 | Teadaolevad ühendused
286 |
287 |
288 |
289 |
--------------------------------------------------------------------------------
/translations/nm-tray_fa.ts:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | ConnectionInfo
6 |
7 |
8 | Connection information
9 | اطلاعات اتصال
10 |
11 |
12 |
13 | NmList
14 |
15 |
16 | All information
17 | همهی اطلاعات
18 |
19 |
20 |
21 | Active connections
22 | اتصال فعال
23 |
24 |
25 |
26 | Available wireless
27 | بی سیم در دسترس
28 |
29 |
30 |
31 | NmModel
32 |
33 |
34 | nm-tray - wireless password
35 | nm -tray - رمز عبور بی سیم
36 |
37 |
38 |
39 | Password is needed for connection to '%1':
40 | رمز عبور برای اتصال به '٪1' مورد نیاز است:
41 |
42 |
43 |
44 | root
45 | ریشه
46 |
47 |
48 |
49 | active connection(s)
50 | اتصال(های) فعال
51 |
52 |
53 |
54 | connection(s)
55 | اتصال(ها)
56 |
57 |
58 |
59 | device(s)
60 | دستگاه(ها)
61 |
62 |
63 |
64 | wifi network(s)
65 | شبکه(های) بیسیم
66 |
67 |
68 |
69 | unknown
70 | hardware address
71 | ناشناخته
72 |
73 |
74 |
75 | General
76 | Active connection information
77 | عمومی
78 |
79 |
80 |
81 | Interface
82 | Active connection information
83 | رابط
84 |
85 |
86 |
87 | Hardware Address
88 | Active connection information
89 | ادرس سخت افزار
90 |
91 |
92 |
93 | Driver
94 | Active connection information
95 | درایور
96 |
97 |
98 |
99 | Speed
100 | Active connection information
101 | سرعت
102 |
103 |
104 |
105 | Kb/s
106 | Kb/s
107 |
108 |
109 |
110 | Mb/s
111 | Mb/s
112 |
113 |
114 |
115 | Gb/s
116 | Gb/s
117 |
118 |
119 |
120 | Tb/s
121 | Tb/s
122 |
123 |
124 | Kb/s
125 | کیلوبایت بر ثانیه
126 |
127 |
128 |
129 | unknown
130 | Speed
131 | ناشناخته
132 |
133 |
134 |
135 | Security
136 | Active connection information
137 | امنیت
138 |
139 |
140 |
141 | IPv4
142 | Active connection information
143 | IPv4
144 |
145 |
146 |
147 | IPv6
148 | Active connection information
149 | IPv6
150 |
151 |
152 |
153 | IP Address
154 | Active connection information
155 | ادرس IP
156 |
157 |
158 |
159 | Subnet Mask
160 | Active connection information
161 | Subnet Mask
162 |
163 |
164 |
165 | Default route
166 | Active connection information
167 | مسیر پیشفرض
168 |
169 |
170 |
171 | DNS(%1)
172 | Active connection information
173 | DNS(%1)
174 |
175 |
176 |
177 | Tray
178 |
179 |
180 | <pre>Connection <strong>%1</strong>(%2) active</pre>
181 | <pre>اتصال <strong>%1</strong>(%2) فعال</pre>
182 |
183 |
184 |
185 | <pre>No active connection</pre>
186 | <pre>صفر اتصال فعال</pre>
187 |
188 |
189 |
190 | Connection lost
191 | اتصال از دست رفت
192 |
193 |
194 |
195 | No longer connected to %1 '%2'.
196 | دیگر به %1 '%2' متصل نیست.
197 |
198 |
199 |
200 | Connection established
201 | اتصال برقرار است
202 |
203 |
204 |
205 | Now connected to %1 '%2'.
206 | الان به %1 '%2' متصل است.
207 |
208 |
209 |
210 | NetworkManager(nm-tray)
211 | مدیرشبکه (nm-tray)
212 |
213 |
214 |
215 | Enable Networking
216 | فعال کردن شبکه
217 |
218 |
219 |
220 | Enable Wi-Fi
221 | فعال سازی بی سیم
222 |
223 |
224 |
225 | Enable notifications
226 | فعال سازی اطلاعرسانی
227 |
228 |
229 |
230 | Connection information
231 | اطلاعات اتصال
232 |
233 |
234 |
235 | Debug information
236 | اطلاعات اشکالزدایی
237 |
238 |
239 |
240 | Wifi - request scan
241 | بیسیم - درخواست اسکن
242 |
243 |
244 |
245 | Edit connections...
246 | ویرایش اتصالات..
247 |
248 |
249 |
250 | About
251 | درباره
252 |
253 |
254 |
255 | Quit
256 | خروج
257 |
258 |
259 |
260 | nm-tray info
261 | اطلاعات nm-tray
262 |
263 |
264 |
265 | %1 about
266 | درباره %1
267 |
268 |
269 |
270 | <strong><a href="https://github.com/palinek/nm-tray">nm-tray</a></strong> is a simple Qt based frontend for <a href="https://wiki.gnome.org/Projects/NetworkManager">NetworkManager</a>.<br/><br/>Version: %1
271 | <strong><a href="https://github.com/palinek/nm-tray">nm-tray</a></strong> یک رویه ساده برپایه Qt برای <a href="https://wiki.gnome.org/Projects/NetworkManager">NetworkManager</a>.<br/><br/>نسخه: %1
272 |
273 |
274 |
275 | WindowMenu
276 |
277 |
278 | Active connection(s)
279 | اتصال(های) فعال
280 |
281 |
282 |
283 | Wi-Fi network(s)
284 | شبکه (های) بیسیم
285 |
286 |
287 |
288 | Known connection(s)
289 | اتصالات شناخته شده
290 |
291 |
292 |
293 |
--------------------------------------------------------------------------------
/translations/nm-tray_fi.ts:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | ConnectionInfo
6 |
7 |
8 | Connection information
9 | Yhteystiedot
10 |
11 |
12 |
13 | NmList
14 |
15 |
16 | All information
17 | Kaikki tiedot
18 |
19 |
20 |
21 | Active connections
22 | Aktiiviset yhteydet
23 |
24 |
25 |
26 | Available wireless
27 | Saatavilla olevat langattomat verkot
28 |
29 |
30 |
31 | NmModel
32 |
33 |
34 | nm-tray - wireless password
35 | nm-tray – WLAN-salasana
36 |
37 |
38 |
39 | Password is needed for connection to '%1':
40 | Yhteys ”%1” vaatii salasanan:
41 |
42 |
43 |
44 | root
45 | juuri
46 |
47 |
48 |
49 | active connection(s)
50 | aktiiviset yhteydet
51 |
52 |
53 |
54 | connection(s)
55 | yhteydet
56 |
57 |
58 |
59 | device(s)
60 | laitteet
61 |
62 |
63 |
64 | wifi network(s)
65 | WLAN-verkot
66 |
67 |
68 |
69 | unknown
70 | hardware address
71 | tuntematon
72 |
73 |
74 |
75 | General
76 | Active connection information
77 | Yleistä
78 |
79 |
80 |
81 | Interface
82 | Active connection information
83 | Liitäntä
84 |
85 |
86 |
87 | Hardware Address
88 | Active connection information
89 | Laiteosoite
90 |
91 |
92 |
93 | Driver
94 | Active connection information
95 | Ajuri
96 |
97 |
98 |
99 | Speed
100 | Active connection information
101 | Nopeus
102 |
103 |
104 |
105 | Kb/s
106 | Kb/s
107 |
108 |
109 |
110 | Mb/s
111 | Mb/s
112 |
113 |
114 |
115 | Gb/s
116 | Gb/s
117 |
118 |
119 |
120 | Tb/s
121 | Tb/s
122 |
123 |
124 | Kb/s
125 | kt/s
126 |
127 |
128 |
129 | unknown
130 | Speed
131 | tuntematon
132 |
133 |
134 |
135 | Security
136 | Active connection information
137 | Tietoturva
138 |
139 |
140 |
141 | IPv4
142 | Active connection information
143 | IPv4
144 |
145 |
146 |
147 | IPv6
148 | Active connection information
149 | IPv6
150 |
151 |
152 |
153 | IP Address
154 | Active connection information
155 | IP-osoite
156 |
157 |
158 |
159 | Subnet Mask
160 | Active connection information
161 | Aliverkon peite
162 |
163 |
164 |
165 | Default route
166 | Active connection information
167 | Oletusreitti
168 |
169 |
170 |
171 | DNS(%1)
172 | Active connection information
173 | DNS (%1)
174 |
175 |
176 |
177 | Tray
178 |
179 |
180 | <pre>Connection <strong>%1</strong>(%2) active</pre>
181 | <pre>Yhteys <strong>%1</strong> (%2) aktiivinen</pre>
182 |
183 |
184 |
185 | <pre>No active connection</pre>
186 | <pre>Ei aktiivista yhteyttä</pre>
187 |
188 |
189 |
190 | Connection lost
191 | Yhteys menetetty
192 |
193 |
194 |
195 | No longer connected to %1 '%2'.
196 | Ei enää yhteyttä: %1 ”%2”.
197 |
198 |
199 |
200 | Connection established
201 | Yhteys muodostettu
202 |
203 |
204 |
205 | Now connected to %1 '%2'.
206 | Nyt yhdistetty: %1 ”%2”.
207 |
208 |
209 |
210 | NetworkManager(nm-tray)
211 | NetworkManager (nm-tray)
212 |
213 |
214 |
215 | Enable Networking
216 | Ota verkko käyttöön
217 |
218 |
219 |
220 | Enable Wi-Fi
221 | Ota langaton verkko käyttöön
222 |
223 |
224 |
225 | Enable notifications
226 | Ota ilmoitukset käyttöön
227 |
228 |
229 |
230 | Connection information
231 | Yhteystiedot
232 |
233 |
234 |
235 | Debug information
236 | Vianjäljitystiedot
237 |
238 |
239 |
240 | Wifi - request scan
241 | Langaton verkko – etsi
242 |
243 |
244 |
245 | Edit connections...
246 | Muokkaa yhteyksiä…
247 |
248 |
249 |
250 | About
251 | Tietoa
252 |
253 |
254 |
255 | Quit
256 | Lopeta
257 |
258 |
259 |
260 | nm-tray info
261 | Tietoa nm-traystä
262 |
263 |
264 |
265 | %1 about
266 | Tietoa – %1
267 |
268 |
269 |
270 | <strong><a href="https://github.com/palinek/nm-tray">nm-tray</a></strong> is a simple Qt based frontend for <a href="https://wiki.gnome.org/Projects/NetworkManager">NetworkManager</a>.<br/><br/>Version: %1
271 | <strong><a href="https://github.com/palinek/nm-tray">nm-tray</a></strong> on yksinkertainen Qt-pohjainen käyttöliittymä <a href="https:// wiki.gnome.org/Projects/NetworkManager">NetworkManager</a>.<br/><br/>Versio: %1
272 |
273 |
274 |
275 | WindowMenu
276 |
277 |
278 | Active connection(s)
279 | Aktiiviset yhteydet
280 |
281 |
282 |
283 | Wi-Fi network(s)
284 | Langattomat verkot
285 |
286 |
287 |
288 | Known connection(s)
289 | Tunnetut yhteydet
290 |
291 |
292 |
293 |
--------------------------------------------------------------------------------
/translations/nm-tray_he.ts:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | ConnectionInfo
6 |
7 |
8 | Connection information
9 | פרטי החיבור
10 |
11 |
12 |
13 | NmList
14 |
15 | Dialog
16 | תיבת דו־שיח
17 |
18 |
19 |
20 | All information
21 | כל הפרטים
22 |
23 |
24 |
25 | Active connections
26 | חיבורים פעילים
27 |
28 |
29 |
30 | Available wireless
31 | אלחוטיות זמינות
32 |
33 |
34 |
35 | NmModel
36 |
37 |
38 | root
39 |
40 |
41 |
42 |
43 | active connection(s)
44 | חיבורים פעילים
45 |
46 |
47 |
48 | connection(s)
49 | חיבורים
50 |
51 |
52 |
53 | device(s)
54 | התקנים
55 |
56 |
57 |
58 | wifi network(s)
59 | רשתות אלחוטיות
60 |
61 |
62 |
63 | unknown
64 | hardware address
65 | לא ידוע
66 |
67 |
68 |
69 | nm-tray - wireless password
70 | nm-tray - ססמה לרשת אלחוטית
71 |
72 |
73 |
74 | Password is needed for connection to '%1':
75 | נדרשת ססמה כדי להתחבר אל ‚%1’:
76 |
77 |
78 |
79 | General
80 | Active connection information
81 | כללי
82 |
83 |
84 |
85 | Interface
86 | Active connection information
87 | מנשק
88 |
89 |
90 |
91 | Hardware Address
92 | Active connection information
93 | כתובת חומרה
94 |
95 |
96 |
97 | Driver
98 | Active connection information
99 | מנהל התקן
100 |
101 |
102 |
103 | Speed
104 | Active connection information
105 | מהירות
106 |
107 |
108 | Kb/s
109 | קסל״ש
110 |
111 |
112 |
113 | Kb/s
114 | קסל״ש
115 |
116 |
117 |
118 | Mb/s
119 | מסל״ש
120 |
121 |
122 |
123 | Gb/s
124 | גסל״ש
125 |
126 |
127 |
128 | Tb/s
129 | טסל״ש
130 |
131 |
132 |
133 | unknown
134 | Speed
135 | לא ידועה
136 |
137 |
138 |
139 | Security
140 | Active connection information
141 | אבטחה
142 |
143 |
144 |
145 | IPv4
146 | Active connection information
147 |
148 |
149 |
150 |
151 | IPv6
152 | Active connection information
153 |
154 |
155 |
156 |
157 | IP Address
158 | Active connection information
159 | כתובת IP
160 |
161 |
162 |
163 | Subnet Mask
164 | Active connection information
165 | מסכת רשת
166 |
167 |
168 |
169 | Default route
170 | Active connection information
171 | נתיב בררת מחדל
172 |
173 |
174 |
175 | DNS(%1)
176 | Active connection information
177 |
178 |
179 |
180 |
181 | Tray
182 |
183 |
184 | Connection lost
185 | החיבור נותק
186 |
187 |
188 |
189 | Connection established
190 | החיבור הצליח
191 |
192 |
193 |
194 | NetworkManager(nm-tray)
195 |
196 |
197 |
198 |
199 | Enable Networking
200 | הפעלת קישוריות רשת
201 |
202 |
203 |
204 | <pre>Connection <strong>%1</strong>(%2) active</pre>
205 | <pre>החיבור <strong>%1</strong>(%2) פעיל</pre>
206 |
207 |
208 |
209 | <pre>No active connection</pre>
210 | <pre>אין חיבורים פעילים</pre>
211 |
212 |
213 |
214 | No longer connected to %1 '%2'.
215 | החיבור אל %1 נותק ‚%2’.
216 |
217 |
218 |
219 | Now connected to %1 '%2'.
220 | הצלחנו להתחבר אל %1 ‚%2’.
221 |
222 |
223 |
224 | Enable Wi-Fi
225 | הפעלת חיבור אלחוטי
226 |
227 |
228 |
229 | Enable notifications
230 | הפעלת התרעות
231 |
232 |
233 |
234 | Connection information
235 | פרטי החיבור
236 |
237 |
238 |
239 | Debug information
240 | פרטים לניפוי שגיאות
241 |
242 |
243 |
244 | Wifi - request scan
245 | רשת אלחוטית - בקשת סריקה
246 |
247 |
248 |
249 | Edit connections...
250 | עריכת חיבורים…
251 |
252 |
253 |
254 | About
255 | על אודות
256 |
257 |
258 |
259 | Quit
260 | יציאה
261 |
262 |
263 |
264 | %1 about
265 | על אודות %1
266 |
267 |
268 |
269 | <strong><a href="https://github.com/palinek/nm-tray">nm-tray</a></strong> is a simple Qt based frontend for <a href="https://wiki.gnome.org/Projects/NetworkManager">NetworkManager</a>.<br/><br/>Version: %1
270 | <strong><a href="https://github.com/palinek/nm-tray">nm-tray</a></strong> הוא מנשק מבוסס Qt עבור <a href="https://wiki.gnome.org/Projects/NetworkManager">NetworkManager</a>.<br/><br/>גרסה: %1
271 |
272 |
273 |
274 | nm-tray info
275 | פרטי nm-tray
276 |
277 |
278 |
279 | WindowMenu
280 |
281 |
282 | Active connection(s)
283 | חיבורים פעילים
284 |
285 |
286 |
287 | Wi-Fi network(s)
288 | רשתות אלחוטיות
289 |
290 |
291 |
292 | Known connection(s)
293 | חיבורים מוכרים
294 |
295 |
296 |
297 |
--------------------------------------------------------------------------------
/translations/nm-tray_hi.ts:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | ConnectionInfo
6 |
7 |
8 | Connection information
9 | कनेक्शन की जानकारी
10 |
11 |
12 |
13 | NmList
14 |
15 |
16 | All information
17 | संपूर्ण जानकारी
18 |
19 |
20 |
21 | Active connections
22 | सक्रिय कनेक्शन
23 |
24 |
25 |
26 | Available wireless
27 | उपलब्ध वायरलेस
28 |
29 |
30 |
31 | NmModel
32 |
33 |
34 | nm-tray - wireless password
35 | nm-tray - वायरलेस पासवर्ड
36 |
37 |
38 |
39 | Password is needed for connection to '%1':
40 | '%1' से कनेक्शन के लिए पासवर्ड आवश्यक है:
41 |
42 |
43 |
44 | root
45 | root
46 |
47 |
48 |
49 | active connection(s)
50 | सक्रिय कनेक्शन
51 |
52 |
53 |
54 | connection(s)
55 | कनेक्शन
56 |
57 |
58 |
59 | device(s)
60 | डिवाइस
61 |
62 |
63 |
64 | wifi network(s)
65 | wifi नेटवर्क
66 |
67 |
68 |
69 | unknown
70 | hardware address
71 | अज्ञात
72 |
73 |
74 |
75 | General
76 | Active connection information
77 | जनरल
78 |
79 |
80 |
81 | Interface
82 | Active connection information
83 | इंटरफेस
84 |
85 |
86 |
87 | Hardware Address
88 | Active connection information
89 | हार्डवेयर पता
90 |
91 |
92 |
93 | Driver
94 | Active connection information
95 | ड्राइवर
96 |
97 |
98 |
99 | Speed
100 | Active connection information
101 | गति
102 |
103 |
104 |
105 | Kb/s
106 | Kb/s
107 |
108 |
109 |
110 | Mb/s
111 | Mb/s
112 |
113 |
114 |
115 | Gb/s
116 | Gb/s
117 |
118 |
119 |
120 | Tb/s
121 | Tb/s
122 |
123 |
124 |
125 | unknown
126 | Speed
127 | अज्ञात
128 |
129 |
130 |
131 | Security
132 | Active connection information
133 | सुरक्षा
134 |
135 |
136 |
137 | IPv4
138 | Active connection information
139 | IPv4
140 |
141 |
142 |
143 | IPv6
144 | Active connection information
145 | IPv6
146 |
147 |
148 |
149 | IP Address
150 | Active connection information
151 | IP पता
152 |
153 |
154 |
155 | Subnet Mask
156 | Active connection information
157 | सबनेट मास्क
158 |
159 |
160 |
161 | Default route
162 | Active connection information
163 | डिफ़ॉल्ट मार्ग
164 |
165 |
166 |
167 | DNS(%1)
168 | Active connection information
169 | DNS(%1)
170 |
171 |
172 |
173 | Tray
174 |
175 |
176 | <pre>Connection <strong>%1</strong>(%2) active</pre>
177 | <pre>कनेक्शन <strong>%1</strong>(%2) सक्रिय</pre>
178 |
179 |
180 |
181 | <pre>No active connection</pre>
182 | <pre>कोई सक्रिय कनेक्शन नहीं</pre>
183 |
184 |
185 |
186 | Connection lost
187 | कनेक्शन टूट गया
188 |
189 |
190 |
191 | No longer connected to %1 '%2'.
192 | अब %1 '%2' से कनेक्ट नहीं है।
193 |
194 |
195 |
196 | Connection established
197 | कनेक्शन स्थापित
198 |
199 |
200 |
201 | Now connected to %1 '%2'.
202 | अब %1 '%2' से जुड़ा है।
203 |
204 |
205 |
206 | NetworkManager(nm-tray)
207 | NetworkManager(nm-tray)
208 |
209 |
210 |
211 | Enable Networking
212 | नेटवर्किंग सक्षम करें
213 |
214 |
215 |
216 | Enable Wi-Fi
217 | Wi-Fi सक्षम करें
218 |
219 |
220 |
221 | Enable notifications
222 | सूचनाएं सक्षम करें
223 |
224 |
225 |
226 | Connection information
227 | कनेक्शन की जानकारी
228 |
229 |
230 |
231 | Debug information
232 | डीबग जानकारी
233 |
234 |
235 |
236 | Wifi - request scan
237 | Wifi - स्कैन अनुरोध
238 |
239 |
240 |
241 | Edit connections...
242 | कनेक्शन संपादित करें…
243 |
244 |
245 |
246 | About
247 | बारे में
248 |
249 |
250 |
251 | Quit
252 | छोड़ें
253 |
254 |
255 |
256 | nm-tray info
257 | nm-tray जानकारी
258 |
259 |
260 |
261 | %1 about
262 | %1 के बारे में
263 |
264 |
265 |
266 | <strong><a href="https://github.com/palinek/nm-tray">nm-tray</a></strong> is a simple Qt based frontend for <a href="https://wiki.gnome.org/Projects/NetworkManager">NetworkManager</a>.<br/><br/>Version: %1
267 | <strong><a href="https://github.com/palinek/nm-tray">nm-tray</a></strong> <a href="https://wiki.gnome.org/Projects/NetworkManager">NetworkManager</a>.<br/><br/>संस्करण: %1 के लिए एक सरल Qt आधारित फ्रंटएंड है
268 |
269 |
270 |
271 | WindowMenu
272 |
273 |
274 | Active connection(s)
275 | सक्रिय कनेक्शन
276 |
277 |
278 |
279 | Wi-Fi network(s)
280 | Wi-Fi नेटवर्क
281 |
282 |
283 |
284 | Known connection(s)
285 | ज्ञात कनेक्शन
286 |
287 |
288 |
289 |
--------------------------------------------------------------------------------
/translations/nm-tray_hr.ts:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | ConnectionInfo
6 |
7 |
8 | Connection information
9 | Podaci veze
10 |
11 |
12 |
13 | NmList
14 |
15 |
16 | All information
17 | Sve informacije
18 |
19 |
20 |
21 | Active connections
22 | Aktivne veze
23 |
24 |
25 |
26 | Available wireless
27 | Dostupne bežične veze
28 |
29 |
30 |
31 | NmModel
32 |
33 |
34 | nm-tray - wireless password
35 | nm-tray – lozinka za bežičnu vezu
36 |
37 |
38 |
39 | Password is needed for connection to '%1':
40 | Potrebna je lozinka za vezu „%1”:
41 |
42 |
43 |
44 | root
45 | root
46 |
47 |
48 |
49 | active connection(s)
50 | aktivne veze
51 |
52 |
53 |
54 | connection(s)
55 | veze
56 |
57 |
58 |
59 | device(s)
60 | uređaji
61 |
62 |
63 |
64 | wifi network(s)
65 | wi-fi mreže
66 |
67 |
68 |
69 | unknown
70 | hardware address
71 | nepoznato
72 |
73 |
74 |
75 | General
76 | Active connection information
77 | Opće
78 |
79 |
80 |
81 | Interface
82 | Active connection information
83 | Sučelje
84 |
85 |
86 |
87 | Hardware Address
88 | Active connection information
89 | Adresa hardvera
90 |
91 |
92 |
93 | Driver
94 | Active connection information
95 | Upravljački program
96 |
97 |
98 |
99 | Speed
100 | Active connection information
101 | Brzina
102 |
103 |
104 |
105 | Kb/s
106 | Kb/s
107 |
108 |
109 |
110 | Mb/s
111 | Mb/s
112 |
113 |
114 |
115 | Gb/s
116 | Gb/s
117 |
118 |
119 |
120 | Tb/s
121 | Tb/s
122 |
123 |
124 | Kb/s
125 | Kb/s
126 |
127 |
128 |
129 | unknown
130 | Speed
131 | nepoznato
132 |
133 |
134 |
135 | Security
136 | Active connection information
137 | Sigurnost
138 |
139 |
140 |
141 | IPv4
142 | Active connection information
143 | IPv4
144 |
145 |
146 |
147 | IPv6
148 | Active connection information
149 | IPv6
150 |
151 |
152 |
153 | IP Address
154 | Active connection information
155 | IP adresa
156 |
157 |
158 |
159 | Subnet Mask
160 | Active connection information
161 | Maska podmreže
162 |
163 |
164 |
165 | Default route
166 | Active connection information
167 | Standardni prolaz
168 |
169 |
170 |
171 | DNS(%1)
172 | Active connection information
173 | DNS(%1)
174 |
175 |
176 |
177 | Tray
178 |
179 |
180 | <pre>Connection <strong>%1</strong>(%2) active</pre>
181 | <pre>Veza <strong>%1</strong>(%2) aktivna</pre>
182 |
183 |
184 |
185 | <pre>No active connection</pre>
186 | <pre>Nema aktivne veze</pre>
187 |
188 |
189 |
190 | Connection lost
191 | Veza izgubljena
192 |
193 |
194 |
195 | No longer connected to %1 '%2'.
196 | Više ne postoji veza s %1 „%2”.
197 |
198 |
199 |
200 | Connection established
201 | Veza uspostavljena
202 |
203 |
204 |
205 | Now connected to %1 '%2'.
206 | Povezano s %1 „%2”.
207 |
208 |
209 |
210 | NetworkManager(nm-tray)
211 | Upravljač mrežama (nm-tray)
212 |
213 |
214 |
215 | Enable Networking
216 | Aktiviraj mrežni rad
217 |
218 |
219 |
220 | Enable Wi-Fi
221 | Aktiviraj Wi-Fi
222 |
223 |
224 |
225 | Enable notifications
226 | Aktiviraj obavijesti
227 |
228 |
229 |
230 | Connection information
231 | Informacije o vezi
232 |
233 |
234 |
235 | Debug information
236 | Informacije o ispravljanju grešaka
237 |
238 |
239 |
240 | Wifi - request scan
241 | Wifi – pretraži
242 |
243 |
244 |
245 | Edit connections...
246 | Uredi veze ...
247 |
248 |
249 |
250 | About
251 | Informacije
252 |
253 |
254 |
255 | Quit
256 | Zatvori
257 |
258 |
259 |
260 | nm-tray info
261 | nm-tray informacije
262 |
263 |
264 |
265 | %1 about
266 | %1 informacije
267 |
268 |
269 |
270 | <strong><a href="https://github.com/palinek/nm-tray">nm-tray</a></strong> is a simple Qt based frontend for <a href="https://wiki.gnome.org/Projects/NetworkManager">NetworkManager</a>.<br/><br/>Version: %1
271 | <strong><a href="https://github.com/palinek/nm-tray">nm-tray</a></strong> je jednostavno Qt-bazirano sučelje za <a href="https://wiki.gnome.org/Projects/NetworkManager">Upravljač mrežama</a>.<br/><br/>Verzija: %1
272 |
273 |
274 |
275 | WindowMenu
276 |
277 |
278 | Active connection(s)
279 | Aktivne veze
280 |
281 |
282 |
283 | Wi-Fi network(s)
284 | Wi-Fi mreže
285 |
286 |
287 |
288 | Known connection(s)
289 | Poznate veze
290 |
291 |
292 |
293 |
--------------------------------------------------------------------------------
/translations/nm-tray_ja.ts:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | ConnectionInfo
6 |
7 |
8 | Connection information
9 | 接続情報
10 |
11 |
12 |
13 | NmList
14 |
15 |
16 | All information
17 | すべての情報
18 |
19 |
20 |
21 | Active connections
22 | アクティブな接続
23 |
24 |
25 |
26 | Available wireless
27 | 利用可能なワイヤレス
28 |
29 |
30 |
31 | NmModel
32 |
33 |
34 | nm-tray - wireless password
35 | nm-tray - ワイヤレスのパスワード
36 |
37 |
38 |
39 | Password is needed for connection to '%1':
40 | '%1' へ接続するパスワード:
41 |
42 |
43 |
44 | root
45 | ルート
46 |
47 |
48 |
49 | active connection(s)
50 | アクティブな接続
51 |
52 |
53 |
54 | connection(s)
55 | 接続
56 |
57 |
58 |
59 | device(s)
60 | デバイス
61 |
62 |
63 |
64 | wifi network(s)
65 | Wi-Fi ネットワーク
66 |
67 |
68 |
69 | unknown
70 | hardware address
71 | 不明
72 |
73 |
74 |
75 | General
76 | Active connection information
77 | 全般
78 |
79 |
80 |
81 | Interface
82 | Active connection information
83 | インターフェイス
84 |
85 |
86 |
87 | Hardware Address
88 | Active connection information
89 | ハードウェアのアドレス
90 |
91 |
92 |
93 | Driver
94 | Active connection information
95 | ドライバー
96 |
97 |
98 |
99 | Speed
100 | Active connection information
101 | 速度
102 |
103 |
104 |
105 | Kb/s
106 | Kb/s
107 |
108 |
109 |
110 | Mb/s
111 | Mb/s
112 |
113 |
114 |
115 | Gb/s
116 | Gb/s
117 |
118 |
119 |
120 | Tb/s
121 | Tb/s
122 |
123 |
124 | Kb/s
125 | Kb/s
126 |
127 |
128 |
129 | unknown
130 | Speed
131 | 不明
132 |
133 |
134 |
135 | Security
136 | Active connection information
137 | セキュリティ
138 |
139 |
140 |
141 | IPv4
142 | Active connection information
143 | IPv4
144 |
145 |
146 |
147 | IPv6
148 | Active connection information
149 | IPv6
150 |
151 |
152 |
153 | IP Address
154 | Active connection information
155 | IP アドレス
156 |
157 |
158 |
159 | Subnet Mask
160 | Active connection information
161 | サブネットマスク
162 |
163 |
164 |
165 | Default route
166 | Active connection information
167 | デフォルトルート
168 |
169 |
170 |
171 | DNS(%1)
172 | Active connection information
173 | DNS (%1)
174 |
175 |
176 |
177 | Tray
178 |
179 |
180 | <pre>Connection <strong>%1</strong>(%2) active</pre>
181 | <pre><strong>%1</strong> (%2) へ接続中です</pre>
182 |
183 |
184 |
185 | <pre>No active connection</pre>
186 | <pre>アクティブな接続がありません</pre>
187 |
188 |
189 |
190 | Connection lost
191 | 接続切断
192 |
193 |
194 |
195 | No longer connected to %1 '%2'.
196 | %2 (%1) への接続が切れました。
197 |
198 |
199 |
200 | Connection established
201 | 接続確立
202 |
203 |
204 |
205 | Now connected to %1 '%2'.
206 | %2 (%1) へ接続しました。
207 |
208 |
209 |
210 | NetworkManager(nm-tray)
211 | NetworkManager (nm-tray)
212 |
213 |
214 |
215 | Enable Networking
216 | ネットワークを有効にする
217 |
218 |
219 |
220 | Enable Wi-Fi
221 | Wi-Fi を有効にする
222 |
223 |
224 |
225 | Enable notifications
226 | 通知を有効にする
227 |
228 |
229 |
230 | Connection information
231 | 接続情報
232 |
233 |
234 |
235 | Debug information
236 | デバッグ情報
237 |
238 |
239 |
240 | Wifi - request scan
241 | Wi-Fi - スキャンする
242 |
243 |
244 |
245 | Edit connections...
246 | 接続の編集...
247 |
248 |
249 |
250 | About
251 | nm-tray について
252 |
253 |
254 |
255 | Quit
256 | 終了
257 |
258 |
259 |
260 | nm-tray info
261 | nm-tray の情報
262 |
263 |
264 |
265 | %1 about
266 | %1 について
267 |
268 |
269 |
270 | <strong><a href="https://github.com/palinek/nm-tray">nm-tray</a></strong> is a simple Qt based frontend for <a href="https://wiki.gnome.org/Projects/NetworkManager">NetworkManager</a>.<br/><br/>Version: %1
271 | <strong><a href="https://github.com/palinek/nm-tray">nm-tray</a></strong> は <a href="https://wiki.gnome.org/Projects/NetworkManager">NetworkManager</a> のためのシンプルな Qt ベースのフロントエンドです。<br/><br/>Version: %1
272 |
273 |
274 |
275 | WindowMenu
276 |
277 |
278 | Active connection(s)
279 | アクティブな接続
280 |
281 |
282 |
283 | Wi-Fi network(s)
284 | Wi-Fi ネットワーク
285 |
286 |
287 |
288 | Known connection(s)
289 | 既知の接続
290 |
291 |
292 |
293 |
--------------------------------------------------------------------------------
/translations/nm-tray_pa.ts:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | ConnectionInfo
6 |
7 |
8 | Connection information
9 | ਕਨੈਕਸ਼ਨ ਜਾਣਕਾਰੀ
10 |
11 |
12 |
13 | NmList
14 |
15 |
16 | All information
17 | ਸਾਰੀ ਜਾਣਕਾਰੀ
18 |
19 |
20 |
21 | Active connections
22 | ਸਰਗਰਮ ਕਨੈਕਸ਼ਨ
23 |
24 |
25 |
26 | Available wireless
27 | ਮੌਜੂਦ ਬੇਤਾਰ
28 |
29 |
30 |
31 | NmModel
32 |
33 |
34 | nm-tray - wireless password
35 | nm-tray - ਬੇਤਾਰ ਪਾਸਵਰਡ
36 |
37 |
38 |
39 | Password is needed for connection to '%1':
40 | '%1' ਨਾਲ ਕਨੈਕਸ਼ਨ ਲਈ ਪਾਸਵਰਡ ਚਾਹੀਦਾ ਹੈ:
41 |
42 |
43 |
44 | root
45 | ਰੂਟ
46 |
47 |
48 |
49 | active connection(s)
50 | ਸਰਗਰਮ ਕਨੈਕਸ਼ਨ
51 |
52 |
53 |
54 | connection(s)
55 | ਕਨੈਕਸ਼ਨ
56 |
57 |
58 |
59 | device(s)
60 | ਡਿਵਾਈਸ
61 |
62 |
63 |
64 | wifi network(s)
65 | ਵਾਈ-ਫਾਈ ਨੈੱਟਵਰਕ
66 |
67 |
68 |
69 | unknown
70 | hardware address
71 | ਅਣਪਛਾਤਾ
72 |
73 |
74 |
75 | General
76 | Active connection information
77 | ਸਧਾਰਨ
78 |
79 |
80 |
81 | Interface
82 | Active connection information
83 | ਇੰਟਰਫੇਸ
84 |
85 |
86 |
87 | Hardware Address
88 | Active connection information
89 | ਹਾਰਡਵੇਅਰ ਸਿਰਨਾਵਾਂ
90 |
91 |
92 |
93 | Driver
94 | Active connection information
95 | ਡਰਾਇਵਰ
96 |
97 |
98 |
99 | Speed
100 | Active connection information
101 | ਗਤੀ
102 |
103 |
104 |
105 | Kb/s
106 | Kb/s
107 |
108 |
109 |
110 | Mb/s
111 | Mb/s
112 |
113 |
114 |
115 | Gb/s
116 | Gb/s
117 |
118 |
119 |
120 | Tb/s
121 | Tb/s
122 |
123 |
124 | Kb/s
125 | Kb/ਸਕਿੰਟ
126 |
127 |
128 |
129 | unknown
130 | Speed
131 | ਅਣਪਛਾਤੀ
132 |
133 |
134 |
135 | Security
136 | Active connection information
137 | ਸੁਰੱਖਿਆ
138 |
139 |
140 |
141 | IPv4
142 | Active connection information
143 | IPv4
144 |
145 |
146 |
147 | IPv6
148 | Active connection information
149 | IPv6
150 |
151 |
152 |
153 | IP Address
154 | Active connection information
155 | IP ਸਿਰਨਾਵਾਂ
156 |
157 |
158 |
159 | Subnet Mask
160 | Active connection information
161 | ਸਬਨੈੱਟ ਮਾਸਕ
162 |
163 |
164 |
165 | Default route
166 | Active connection information
167 | ਡਿਫਾਲਟ ਰਾਊਟ
168 |
169 |
170 |
171 | DNS(%1)
172 | Active connection information
173 | DNS(%1)
174 |
175 |
176 |
177 | Tray
178 |
179 |
180 | <pre>Connection <strong>%1</strong>(%2) active</pre>
181 | <pre>ਕਨੈਕਸ਼ਨ <strong>%1</strong>(%2) ਸਰਗਰਮ</pre>
182 |
183 |
184 |
185 | <pre>No active connection</pre>
186 | <pre>ਕੋਈ ਸਰਗਰਮ ਕਨੈਕਸ਼ਨ ਨਹੀਂ ਹੈ</pre>
187 |
188 |
189 |
190 | Connection lost
191 | ਕਨੈਕਸ਼ਨ ਖ਼ਤਮ ਹੋਇਆ
192 |
193 |
194 |
195 | No longer connected to %1 '%2'.
196 | ਹੁਣ %1 '%2' ਨਾਲ ਕਨੈਕਟ ਨਹੀਂ ਰਹੇ।
197 |
198 |
199 |
200 | Connection established
201 | ਕਨੈਕਸ਼ਨ ਸਥਾਪਿਤ ਕੀਤਾ
202 |
203 |
204 |
205 | Now connected to %1 '%2'.
206 | ਹੁਣ %1 '%2' ਨਾਲ ਕਨੈਕਟ ਹੈ।
207 |
208 |
209 |
210 | NetworkManager(nm-tray)
211 | ਨੈੱਟਵਰਕ-ਮੈਨੇਜਰ(nm-tray)
212 |
213 |
214 |
215 | Enable Networking
216 | ਨੈੱਟਵਰਕਿੰਗ ਸਮਰੱਥ ਹੈ
217 |
218 |
219 |
220 | Enable Wi-Fi
221 | Wi-Fi ਸਮਰੱਥ ਕਰੋ
222 |
223 |
224 |
225 | Enable notifications
226 | ਸੂਚਨਾਵਾਂ ਸਮਰੱਥ ਕਰੋ
227 |
228 |
229 |
230 | Connection information
231 | ਕਨੈਕਸ਼ਨ ਜਾਣਕਾਰੀ
232 |
233 |
234 |
235 | Debug information
236 | ਡੀਬੱਗ ਜਾਣਕਾਰੀ
237 |
238 |
239 |
240 | Wifi - request scan
241 | Wi-Fi - ਸਕੈਨ ਦੀ ਬੇਨਤੀ
242 |
243 |
244 |
245 | Edit connections...
246 | ...ਕਨੈਕਸ਼ਨ ਸੋਧੋ
247 |
248 |
249 |
250 | About
251 | ਇਸ ਬਾਰੇ
252 |
253 |
254 |
255 | Quit
256 | ਬਾਹਰ
257 |
258 |
259 |
260 | nm-tray info
261 | nm-tray ਜਾਣਕਾਰੀ
262 |
263 |
264 |
265 | %1 about
266 | %1 ਬਾਰੇ
267 |
268 |
269 |
270 | <strong><a href="https://github.com/palinek/nm-tray">nm-tray</a></strong> is a simple Qt based frontend for <a href="https://wiki.gnome.org/Projects/NetworkManager">NetworkManager</a>.<br/><br/>Version: %1
271 | <strong><a href="https://github.com/palinek/nm-tray">nm-tray</a></strong> <a href="https://wiki.gnome.org/Projects/NetworkManager">NetworkManager</a> ਲਈ ਸਧਾਰਨ Qt ਅਧਾਰਿਤ ਫਰੰਟ-ਐਂਡ ਹੈ।<br/><br/>ਵਰਜ਼ਨ: %1
272 |
273 |
274 |
275 | WindowMenu
276 |
277 |
278 | Active connection(s)
279 | ਸਰਗਰਮ ਕਨੈਕਸ਼ਨ
280 |
281 |
282 |
283 | Wi-Fi network(s)
284 | Wi-Fi ਨੈੱਟਵਰਕ
285 |
286 |
287 |
288 | Known connection(s)
289 | ਜਾਣੇ-ਪਛਾਣੇ ਕਨੈਕਸ਼ਨ
290 |
291 |
292 |
293 |
--------------------------------------------------------------------------------
/translations/nm-tray_zh_Hans.ts:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | ConnectionInfo
6 |
7 |
8 | Connection information
9 | 连接信息
10 |
11 |
12 |
13 | NmList
14 |
15 |
16 | All information
17 | 所有信息
18 |
19 |
20 |
21 | Active connections
22 | 活动连接
23 |
24 |
25 |
26 | Available wireless
27 | 可用的无线连接
28 |
29 |
30 |
31 | NmModel
32 |
33 |
34 | nm-tray - wireless password
35 | nm-tray - 无线密码
36 |
37 |
38 |
39 | Password is needed for connection to '%1':
40 | 需要密码以连接 '%1':
41 |
42 |
43 |
44 | root
45 | 根
46 |
47 |
48 |
49 | active connection(s)
50 | 活动连接
51 |
52 |
53 |
54 | connection(s)
55 | 连接
56 |
57 |
58 |
59 | device(s)
60 | 设备
61 |
62 |
63 |
64 | wifi network(s)
65 | wifi 网络
66 |
67 |
68 |
69 | unknown
70 | hardware address
71 | 未知
72 |
73 |
74 |
75 | General
76 | Active connection information
77 | 通用
78 |
79 |
80 |
81 | Interface
82 | Active connection information
83 | 接口
84 |
85 |
86 |
87 | Hardware Address
88 | Active connection information
89 | 硬件地址
90 |
91 |
92 |
93 | Driver
94 | Active connection information
95 | 驱动
96 |
97 |
98 |
99 | Speed
100 | Active connection information
101 | 速度
102 |
103 |
104 |
105 | Kb/s
106 | Kb/s
107 |
108 |
109 |
110 | Mb/s
111 | Mb/s
112 |
113 |
114 |
115 | Gb/s
116 | Gb/s
117 |
118 |
119 |
120 | Tb/s
121 | Tb/s
122 |
123 |
124 | Kb/s
125 | Kb/s
126 |
127 |
128 |
129 | unknown
130 | Speed
131 | 未知
132 |
133 |
134 |
135 | Security
136 | Active connection information
137 | 安全
138 |
139 |
140 |
141 | IPv4
142 | Active connection information
143 | IPv4
144 |
145 |
146 |
147 | IPv6
148 | Active connection information
149 | IPv6
150 |
151 |
152 |
153 | IP Address
154 | Active connection information
155 | IP 地址
156 |
157 |
158 |
159 | Subnet Mask
160 | Active connection information
161 | 子网掩码
162 |
163 |
164 |
165 | Default route
166 | Active connection information
167 | 默认路由
168 |
169 |
170 |
171 | DNS(%1)
172 | Active connection information
173 | DNS (%1)
174 |
175 |
176 |
177 | Tray
178 |
179 |
180 | <pre>Connection <strong>%1</strong>(%2) active</pre>
181 | <pre>活动连接 <strong>%1</strong> (%2)</pre>
182 |
183 |
184 |
185 | <pre>No active connection</pre>
186 | <pre>无活动连接</pre>
187 |
188 |
189 |
190 | Connection lost
191 | 连接丢失
192 |
193 |
194 |
195 | No longer connected to %1 '%2'.
196 | 不再连接到 %1 '%2'。
197 |
198 |
199 |
200 | Connection established
201 | 连接已建立
202 |
203 |
204 |
205 | Now connected to %1 '%2'.
206 | 当前连接到 %1 '%2'。
207 |
208 |
209 |
210 | NetworkManager(nm-tray)
211 | NetworkManager (nm-tray)
212 |
213 |
214 |
215 | Enable Networking
216 | 启用网络
217 |
218 |
219 |
220 | Enable Wi-Fi
221 | 启用 Wi-Fi
222 |
223 |
224 |
225 | Enable notifications
226 | 启用通知
227 |
228 |
229 |
230 | Connection information
231 | 连接信息
232 |
233 |
234 |
235 | Debug information
236 | 调试信息
237 |
238 |
239 |
240 | Wifi - request scan
241 | Wifi - 需要扫描
242 |
243 |
244 |
245 | Edit connections...
246 | 编辑连接...
247 |
248 |
249 |
250 | About
251 | 关于
252 |
253 |
254 |
255 | Quit
256 | 退出
257 |
258 |
259 |
260 | nm-tray info
261 | nm-tray 信息
262 |
263 |
264 |
265 | %1 about
266 | %1 关于
267 |
268 |
269 |
270 | <strong><a href="https://github.com/palinek/nm-tray">nm-tray</a></strong> is a simple Qt based frontend for <a href="https://wiki.gnome.org/Projects/NetworkManager">NetworkManager</a>.<br/><br/>Version: %1
271 | <strong><a href="https://github.com/palinek/nm-tray">nm-tray</a></strong> 是 <a href="https://wiki.gnome.org/Projects/NetworkManager">NetworkManager</a> 基于 Qt 的简单前端。<br/><br/>版本: %1
272 |
273 |
274 |
275 | WindowMenu
276 |
277 |
278 | Active connection(s)
279 | 活动连接
280 |
281 |
282 |
283 | Wi-Fi network(s)
284 | Wi-Fi 网络
285 |
286 |
287 |
288 | Known connection(s)
289 | 已知连接
290 |
291 |
292 |
293 |
--------------------------------------------------------------------------------