25 #include <KAboutApplicationDialog>
26 #include <KActionCollection>
31 #include <KStandardAction>
39 virtual ~ClientActions();
49 ClientActions::ClientActions(
RfbClient* client, KMenu* menu,
QAction* before)
52 m_title = m_menu->addTitle(client->
name(), before);
54 m_disconnectAction =
new KAction(i18n(
"Disconnect"), m_menu);
55 m_menu->insertAction(before, m_disconnectAction);
57 QObject::connect(m_disconnectAction, SIGNAL(triggered()), client, SLOT(closeConnection()));
60 m_enableControlAction =
new KToggleAction(i18n(
"Enable Remote Control"), m_menu);
62 m_menu->insertAction(before, m_enableControlAction);
65 client, SLOT(setControlEnabled(
bool)));
67 m_enableControlAction, SLOT(setChecked(
bool)));
69 m_enableControlAction = NULL;
72 m_separator = m_menu->insertSeparator(before);
75 ClientActions::~ClientActions()
79 m_menu->removeAction(m_title);
82 m_menu->removeAction(m_disconnectAction);
83 delete m_disconnectAction;
85 if (m_enableControlAction) {
86 m_menu->removeAction(m_enableControlAction);
87 delete m_enableControlAction;
90 m_menu->removeAction(m_separator);
99 setIconByPixmap(KIcon(
"krfb").pixmap(22, 22, KIcon::Disabled));
101 setToolTipTitle(i18n(
"Desktop Sharing - disconnected"));
102 setCategory(KStatusNotifierItem::ApplicationStatus);
109 m_aboutAction = KStandardAction::aboutApp(
this, SLOT(
showAbout()), actionCollection());
110 contextMenu()->addAction(m_aboutAction);
117 if (m_clientActions.
isEmpty()) {
118 setIconByName(
"krfb");
119 setToolTipTitle(i18n(
"Desktop Sharing - connected with %1", client->
name()));
120 setStatus(KStatusNotifierItem::Active);
122 setToolTipTitle(i18n(
"Desktop Sharing - connected"));
125 m_clientActions[client] =
new ClientActions(client, contextMenu(), m_aboutAction);
132 ClientActions *actions = m_clientActions.
take(client);
135 if (m_clientActions.
isEmpty()) {
136 setIconByPixmap(KIcon(
"krfb").pixmap(22, 22, KIcon::Disabled));
137 setToolTipTitle(i18n(
"Desktop Sharing - disconnected"));
138 setStatus(KStatusNotifierItem::Passive);
139 }
else if (m_clientActions.
size() == 1) {
141 setToolTipTitle(i18n(
"Desktop Sharing - connected with %1", client->
name()));
147 KDialog *dlg =
new KAboutApplicationDialog(KGlobal::mainComponent().aboutData());
148 dlg->setAttribute(Qt::WA_DeleteOnClose,
true);
152 #include "trayicon.moc"
void onClientConnected(RfbClient *client)
static bool controlCanBeEnabled()
void onClientDisconnected(RfbClient *client)
const_iterator constBegin() const
static RfbServerManager * instance()
virtual QString name() const
Returns a name for the client, to be shown to the user.
bool connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type)
TrayIcon(QWidget *mainWindow)