diff options
Diffstat (limited to 'tdenetworkmanager/src/tdenetman-device_tray.cpp')
-rw-r--r-- | tdenetworkmanager/src/tdenetman-device_tray.cpp | 379 |
1 files changed, 0 insertions, 379 deletions
diff --git a/tdenetworkmanager/src/tdenetman-device_tray.cpp b/tdenetworkmanager/src/tdenetman-device_tray.cpp deleted file mode 100644 index 6b2d3aa..0000000 --- a/tdenetworkmanager/src/tdenetman-device_tray.cpp +++ /dev/null @@ -1,379 +0,0 @@ -/*************************************************************************** - * - * tdenetman-device_tray.cpp - A NetworkManager frontend for TDE - * - * Copyright (C) 2005, 2006 Novell, Inc. - * - * Author: Helmut Schaa <hschaa@suse.de>, <helmut.schaa@gmx.de> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - **************************************************************************/ - -class WirelessDialog; - -// TQt includes -#include <tqevent.h> -#include <tqvbox.h> -#include <tqlayout.h> -#include <tqpushbutton.h> -#include <tqbitmap.h> -#include <tqimage.h> -#include <tqpixmap.h> -#include <tqpixmapcache.h> -#include <tqpainter.h> -#include <tqstyle.h> -#include <tqtimer.h> - -// TDE includes -#include <dcopclient.h> -#include <kdebug.h> -#include <kdialogbase.h> -#include <knotifyclient.h> -#include <knotifydialog.h> -#include <kiconeffect.h> -#include <klocale.h> -#include <kstdguiitem.h> -#include <khelpmenu.h> -#include <kprocess.h> -#include <kiconloader.h> -#include <kconfig.h> -#include <kmessagebox.h> -#include <kglobalsettings.h> -#include <tdehardwaredevices.h> -#include <tdenetworkconnections.h> - -// TDENM includes -#include "tdenetman-device_tray.h" -#include "tdenetman-menu_subhead.h" -#include "tdenetman-connection_settings_dialog.h" - -using namespace ConnectionSettings; - -class DeviceTrayPrivate -{ - public: - - DeviceTrayPrivate() - : dev(NULL) - { - tooltips[TDENetworkConnectionStatus::Invalid] = i18n("Unknown"); - tooltips[TDENetworkConnectionStatus::LinkUnavailable] = i18n("Down"); - tooltips[TDENetworkConnectionStatus::UnManaged] = i18n("Unmanaged"); - tooltips[TDENetworkConnectionStatus::Disconnected] = i18n("Disconnected"); - tooltips[TDENetworkConnectionStatus::EstablishingLink] = i18n("Preparing"); - tooltips[TDENetworkConnectionStatus::ConfiguringProtocols] = i18n("Configuration"); - tooltips[TDENetworkConnectionStatus::NeedAuthorization] = i18n("Awaiting authentication"); - tooltips[TDENetworkConnectionStatus::VerifyingProtocols] = i18n("IP configuration"); - tooltips[TDENetworkConnectionStatus::Connected] = i18n("Activated"); - tooltips[TDENetworkConnectionStatus::Failed] = i18n("Failed"); - } - - ~DeviceTrayPrivate() {} - - TDENetworkDevice* dev; - TQMap<TDENetworkConnectionStatus::TDENetworkConnectionStatus, TQMovie> movies; - TQMap<TDENetworkConnectionStatus::TDENetworkConnectionStatus, TQPixmap> pixmaps; - TQMap<TDENetworkConnectionStatus::TDENetworkConnectionStatus, TQString> tooltips; - - TQPixmap pixmapForConnState(TDENetworkConnectionStatus::TDENetworkConnectionStatus state); - TQMovie movieForConnState(TDENetworkConnectionStatus::TDENetworkConnectionStatus state); - TQString tooltipForConnState(TDENetworkConnectionStatus::TDENetworkConnectionStatus state); -}; - -TQPixmap DeviceTrayPrivate::pixmapForConnState(TDENetworkConnectionStatus::TDENetworkConnectionStatus state) { - TDENetworkConnectionStatus::TDENetworkConnectionStatus flag = (TDENetworkConnectionStatus::TDENetworkConnectionStatus)0x80000000; - while (flag != 0) { - if (state & flag) { - if (pixmaps.contains(flag)) { - return pixmaps[flag]; - } - } - flag = (TDENetworkConnectionStatus::TDENetworkConnectionStatus)((TQ_UINT32)flag >> 1); - } - return TQPixmap(); -} - -TQMovie DeviceTrayPrivate::movieForConnState(TDENetworkConnectionStatus::TDENetworkConnectionStatus state) { - TDENetworkConnectionStatus::TDENetworkConnectionStatus flag = (TDENetworkConnectionStatus::TDENetworkConnectionStatus)0x80000000; - while (flag != 0) { - if (state & flag) { - if (movies.contains(flag)) { - return movies[flag]; - } - } - flag = (TDENetworkConnectionStatus::TDENetworkConnectionStatus)((TQ_UINT32)flag >> 1); - } - return TQMovie(); -} - -TQString DeviceTrayPrivate::tooltipForConnState(TDENetworkConnectionStatus::TDENetworkConnectionStatus state) { - TDENetworkConnectionStatus::TDENetworkConnectionStatus flag = (TDENetworkConnectionStatus::TDENetworkConnectionStatus)0x80000000; - while (flag != 0) { - if (state & flag) { - if (tooltips.contains(flag)) { - return tooltips[flag]; - } - } - flag = (TDENetworkConnectionStatus::TDENetworkConnectionStatus)((TQ_UINT32)flag >> 1); - } - return TQString::null; -} - -TDENetworkDevice* DeviceTray::getDevice() const -{ - return d->dev; -} - -TQString DeviceTray::getTooltipText() -{ - - TDENetworkConnectionManager* deviceConnMan = d->dev->connectionManager(); - TDENetworkConnectionStatus::TDENetworkConnectionStatus state = deviceConnMan->deviceInformation().statusFlags; - TQString tooltip = TQString(); - - if (!d->tooltipForConnState(state).isEmpty()) { - tooltip += i18n("State: %1").arg(d->tooltipForConnState(state)); - } - - return tooltip; -} - -void DeviceTray::enterEvent (TQEvent* /*e*/) -{ - // show tooltip - TQToolTip::remove (this); - TQString tooltip = getTooltipText(); - - if (!tooltip.isEmpty()) { - TQToolTip::add (this, tooltip); - } -} - - -void DeviceTray::setPixmap(const TQPixmap& pixmap) -{ - /* - int oldPixmapWidth = pixmap.size().width(); - int oldPixmapHeight = pixmap.size().height(); - - // we want to show the interface name - TQString iface = d->dev->getInterface(); - - // grab a font - TQFont iface_font = KGlobalSettings::generalFont(); -// iface_font.setBold(true); - - // resize the font to fit the icon's size - float fontSize = iface_font.pointSizeFloat(); - TQFontMetrics qfm(iface_font); - int height = qfm.height(); - int width = qfm.width(iface); - float factor = 1.0f; - float factor2 = 1.0f; - - if (height > (oldPixmapHeight / 2.0f)) - factor = float(oldPixmapHeight / 2.0f) / float(height); - - if (width > (oldPixmapWidth / 1.1f)) - factor2 = float(oldPixmapWidth / 1.1f) / float(width); - - fontSize *= (factor2 < factor) ? factor2 : factor; - - iface_font.setPointSizeFloat( fontSize); - - // draw the text to a bitmap and put is as an overlay on top of the pixmap - TQPixmap iface_pixmap(oldPixmapWidth, oldPixmapHeight); - iface_pixmap.fill(TQt::white); - TQPainter p(&iface_pixmap); - p.setFont(iface_font); - p.setPen(TQt::blue); - p.drawText(iface_pixmap.rect(), TQt::AlignHCenter | TQt::AlignBottom, iface); - iface_pixmap.setMask(iface_pixmap.createHeuristicMask()); - TQImage iface_image = iface_pixmap.convertToImage(); - - TQImage pixmap_with_overlay = pixmap.convertToImage(); - KIconEffect::overlay(pixmap_with_overlay, iface_image); - - TQPixmap new_pixmap; - new_pixmap.convertFromImage(pixmap_with_overlay); - // call base-class setPixmap - KSystemTray::setPixmap(new_pixmap); -*/ - KSystemTray::setPixmap(pixmap); -} - -void DeviceTray::contextMenuAboutToShow (KPopupMenu* menu) -{ - menu->clear(); - - // insert title - menu->insertTitle (SmallIcon ("tdenetworkmanager", TQIconSet::Automatic), "TDENetworkManager", -1, -1); - - // let the specific device_tray add its items - addMenuItems(menu); - - // quit - menu->insertSeparator (); - KAction* quitAction = actionCollection ()->action (KStdAction::name (KStdAction::Quit)); - if (quitAction) { - quitAction->plug (menu); - } -} - -void DeviceTray::resizeEvent ( TQResizeEvent * ) -{ - // Honor Free Desktop specifications that allow for arbitrary system tray icon sizes - loadIcons(); - updateTrayIcon(m_currentIconState); -} - -void DeviceTray::setPixmapForState(TDENetworkConnectionStatus::TDENetworkConnectionStatus state, TQMovie movie) -{ - d->movies[state] = movie; - slotUpdateDeviceState(); -} - -void DeviceTray::setPixmapForState(TDENetworkConnectionStatus::TDENetworkConnectionStatus state, TQPixmap pixmap) -{ - d->pixmaps[state] = pixmap; - slotUpdateDeviceState(); -} - -void DeviceTray::updateTrayIcon(TDENetworkConnectionStatus::TDENetworkConnectionStatus state) -{ - // stop the old movie to avoid unnecessary wakups - if (movie()) { - movie()->pause(); - } - - if (!d->movieForConnState(state).isNull()) { - if (m_currentIconState != state) { - // Clear the icon pixmap as the movie may be a different size - TQPixmap nullPixmap; - setPixmap(nullPixmap); - } - - // animation desired - int frame = -1; - if (movie()) { - frame = movie()->frameNumber(); - } - - // set the movie - setMovie(d->movieForConnState(state)); - - // start at the same frame as the movie before - if (frame > 0) - movie()->step(frame); - - // start the animation - movie()->unpause(); - } - else if (!d->pixmapForConnState(state).isNull()) { - setPixmap(d->pixmapForConnState(state)); - } - else { - setPixmap(loadSizedIcon("TDENetworkManager", width())); - } - - m_currentIconState = state; -} - -void DeviceTray::updateActions(TDENetworkConnectionStatus::TDENetworkConnectionStatus state) -{ - // allow device deactivation only when device is activated - KAction* deactivate = actionCollection()->action("deactivate_device"); - if (deactivate) - deactivate->setEnabled( (state & TDENetworkConnectionStatus::Connected || - state & TDENetworkConnectionStatus::VerifyingProtocols || - state & TDENetworkConnectionStatus::EstablishingLink || - state & TDENetworkConnectionStatus::ConfiguringProtocols || - state & TDENetworkConnectionStatus::NeedAuthorization) ); -} - -void DeviceTray::updateActiveConnection(TDENetworkConnectionStatus::TDENetworkConnectionStatus state) -{ - if (!(state & TDENetworkConnectionStatus::Connected)) { - return; - } -} - -void DeviceTray::slotUpdateDeviceState(TDENetworkConnectionStatus::TDENetworkConnectionStatus state) -{ - updateTrayIcon(state); - updateActions(state); - updateActiveConnection(state); -} - -void DeviceTray::slotUpdateDeviceState() -{ - TDENetworkConnectionManager* deviceConnMan = d->dev->connectionManager(); - slotUpdateDeviceState(deviceConnMan->deviceInformation().statusFlags); -} - -void DeviceTray::loadIcons() { - d->pixmaps[TDENetworkConnectionStatus::Invalid] = loadSizedIcon("nm_no_connection", width()); - d->pixmaps[TDENetworkConnectionStatus::UnManaged] = loadSizedIcon("nm_no_connection", width()); - d->pixmaps[TDENetworkConnectionStatus::LinkUnavailable] = loadSizedIcon("nm_no_connection", width()); - d->pixmaps[TDENetworkConnectionStatus::Disconnected] = loadSizedIcon("nm_no_connection", width()); - - d->movies[TDENetworkConnectionStatus::EstablishingLink] = TQMovie( KGlobal::iconLoader()->moviePath("nm_stage01_connecting", KIcon::Panel)); - d->movies[TDENetworkConnectionStatus::EstablishingLink].pause(); - - d->movies[TDENetworkConnectionStatus::ConfiguringProtocols] = TQMovie( KGlobal::iconLoader()->moviePath("nm_stage02_connecting", KIcon::Panel)); - d->movies[TDENetworkConnectionStatus::ConfiguringProtocols].pause(); - - d->movies[TDENetworkConnectionStatus::VerifyingProtocols] = TQMovie( KGlobal::iconLoader()->moviePath("nm_stage03_connecting", KIcon::Panel)); - d->movies[TDENetworkConnectionStatus::VerifyingProtocols].pause(); - - d->movies[TDENetworkConnectionStatus::NeedAuthorization] = d->movies[TDENetworkConnectionStatus::ConfiguringProtocols]; - d->movies[TDENetworkConnectionStatus::NeedAuthorization].pause(); - - d->pixmaps[TDENetworkConnectionStatus::Connected] = loadSizedIcon("ok", width()); - - d->pixmaps[TDENetworkConnectionStatus::Failed] = loadSizedIcon("nm_no_connection", width()); -} - -DeviceTray::DeviceTray (TDENetworkDevice* dev) : KSystemTray () -{ - d = new DeviceTrayPrivate(); - d->dev = dev; - - m_currentIconState = TDENetworkConnectionStatus::Invalid; - loadIcons(); - - // get notified when the device state changes - connect(dev, TQT_SIGNAL(StateChanged(TDENetworkConnectionStatus::TDENetworkConnectionStatus)), this, TQT_SLOT(slotUpdateDeviceState(TDENetworkConnectionStatus::TDENetworkConnectionStatus))); - - setMouseTracking (true); - - // defer the initial call to slotUpdateDeviceState as it will crash tdenm when called directly from here - // virtual method calls are not allowed in constructor - TQTimer::singleShot(0, this, TQT_SLOT(slotUpdateDeviceState())); - - // Actions used for plugging into the menu - new KAction (i18n ("Deactivate connection..."), - SmallIcon ("no", TQIconSet::Automatic), 0, - dev, TQT_SLOT (slotDeactivate()), actionCollection (), "deactivate_device"); -} - -DeviceTray::~DeviceTray () -{ - delete d; -} - - -#include "tdenetman-device_tray.moc" |