diff options
author | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
---|---|---|
committer | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
commit | 2bda8f7717adf28da4af0d34fb82f63d2868c31d (patch) | |
tree | 8d927b7b47a90c4adb646482a52613f58acd6f8c /superkaramba/src/karamba.h | |
download | tdeutils-2bda8f7717adf28da4af0d34fb82f63d2868c31d.tar.gz tdeutils-2bda8f7717adf28da4af0d34fb82f63d2868c31d.zip |
Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features.
BUG:215923
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdeutils@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'superkaramba/src/karamba.h')
-rw-r--r-- | superkaramba/src/karamba.h | 363 |
1 files changed, 363 insertions, 0 deletions
diff --git a/superkaramba/src/karamba.h b/superkaramba/src/karamba.h new file mode 100644 index 0000000..a81b11b --- /dev/null +++ b/superkaramba/src/karamba.h @@ -0,0 +1,363 @@ +/* + * Copyright (C) 2003 Hans Karlsson <karlsson.h@home.se> + * Copyright (C) 2004,2005 Luke Kenneth Casson Leighton <lkcl@lkcl.net> + * Copyright (C) 2003-2004 Adam Geitgey <adam@rootnode.org> + * Copyright (c) 2005 Ryan Nickell <p0z3r@earthlink.net> + * + * This file is part of SuperKaramba. + * + * SuperKaramba 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. + * + * SuperKaramba 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 SuperKaramba; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + ****************************************************************************/ + +#ifndef _KARAMBA_H_ +#define _KARAMBA_H_ + +#ifdef HAVE_CONFIG_H +#include <config.h> +#endif + +#include <qwidget.h> +#include <kapplication.h> + +#include <kwinmodule.h> +#include <kwin.h> + +#include <qfile.h> +#include <kfile.h> +#include <qfileinfo.h> +#include <kaction.h> +#include <qtimer.h> +#include <qpixmap.h> +#include <qpainter.h> + +//#include <krootpixmap.h> + +#include <qregexp.h> +#include <qlabel.h> +#include <qobjectlist.h> +#include <qstring.h> +#include <qstringlist.h> +#include <ksharedpixmap.h> +#include <qvaluestack.h> +#include <dcopclient.h> +#include <kpopupmenu.h> +#include <qcursor.h> +#include <netwm.h> +#include <kiconloader.h> +#include <kfiledialog.h> +#include <qmap.h> +#include <kurl.h> +#include <krun.h> +#include <qdatetime.h> +#include <qbitmap.h> +#include <kconfig.h> +#include <kprocess.h> +#include <qdragobject.h> + +#include "karambarootpixmap.h" + +#include "bar.h" +#include "textlabel.h" +#include "imagelabel.h" +#include "graph.h" +#include "input.h" + +#include "clickarea.h" + +#include "sensorparams.h" +#include "memsensor.h" +#include "datesensor.h" +#include "uptimesensor.h" +#include "memsensor.h" +#include "cpusensor.h" +#include "networksensor.h" +#include "xmmssensor.h" +#include "noatunsensor.h" +#include "programsensor.h" +#include "disksensor.h" +#include "sensorsensor.h" +#include "textfilesensor.h" + +#include "clickmap.h" +#include "rsssensor.h" +//#include "clickable.h" +#include "taskmanager.h" +#include "showdesktop.h" +#include "systemtray.h" +#include "themefile.h" + +/** + * @short Application Main Window + * @author Adam Geitgey <adam@rootnode.org> + * @author Hans Karlsson <karlsson.h@home.se> + * @author Luke Kenneth Casson Leighton <lkcl@lkcl.net> + * @version 0.26 + */ + +class KarambaPython; +class LineParser; + +class karamba : public QWidget +{ + Q_OBJECT + +public: + karamba(QString fn, QString name, bool reloading = false, + int instance = -1, bool sub_theme = false); + QObjectList *menuList; + + virtual ~karamba(); + const ThemeFile& theme() const { return m_theme; }; + + QObjectList *meterList; + QObjectList *imageList; + QObjectList *clickList; + void setSensor(const LineParser& lineParser, Meter* meter); + QString getSensor(Meter* meter); + QString findSensorFromMap(Sensor* sensor); + void deleteMeterFromSensors(Meter* meter); + Sensor* findSensorFromList(Meter* meter); + KPopupMenu* keditpop; + KPopupMenu *kpop; + QBitmap* widgetMask; + KarambaRootPixmap *kroot; + TaskManager taskManager; + Systemtray* systray; + KProcess* currProcess; + bool useSmoothTransforms(); + + void changeInterval(int interval); + void setWidgetUpdate(bool wu) { widgetUpdate = wu; }; + bool getWidgetUpdate() { return widgetUpdate; }; + bool hasMeter(Meter* meter) { return meterList->containsRef(meter) > 0; }; + char getTempUnit() { return tempUnit; }; + void addMenuConfigOption(QString key, QString name); + bool setMenuConfigOption(QString key, bool value); + bool readMenuConfigOption(QString key); + void writeConfigData(); + TextField* getDefaultTextProps() { return defaultTextField; }; + int instance() const { return m_instance; }; + void setInstance(int instance) { m_instance = instance; }; + void closeTheme(bool reloading = false); + void keyPressed(const QString& s, const Meter* meter); + + int numberOfConfMenuItems; + KConfig* config; + QString prettyName; + bool m_sub_theme; + bool isSubTheme() { return m_sub_theme; } + + void toggleWidgetUpdate( bool ); + + KWinModule* kWinModule; + + QString incomingData; + QString getIncomingData() { return incomingData; } + void _setIncomingData(QString data) { incomingData = data; } + void setIncomingData(QString theme, QString data); + + void themeNotify(QString theme, QString txt); + void callTheme(QString theme, QString txt); + + double getUpdateTime() { return update_time; } + void setUpdateTime(double time) { update_time = time; } + + void makeActive(); + void makePassive(); + + void showMenuExtension(); + void hideMenuExtension(); + +protected: + void mousePressEvent( QMouseEvent *); + void wheelEvent( QWheelEvent *); + void mouseReleaseEvent( QMouseEvent *); + void mouseDoubleClickEvent( QMouseEvent *); + void mouseMoveEvent( QMouseEvent *); + void keyPressEvent ( QKeyEvent * e ); + void closeEvent ( QCloseEvent *); + void paintEvent ( QPaintEvent *); + void saveProperties(KConfig *); + void readProperties(KConfig *); + void dragEnterEvent(QDragEnterEvent* event); + void dropEvent(QDropEvent* event); + +private: + bool widgetUpdate; + bool repaintInProgress; + //bool reloading; + bool want_right_button; + bool want_meter_wheel_event; + + NETWinInfo* info; + bool onTop; + bool managed; + bool fixedPosition; + bool haveUpdated; + char tempUnit; + double update_time; + int m_instance; + + bool parseConfig(); + + void passClick( QMouseEvent* ); + void passWheelClick( QWheelEvent* ); + void meterClicked(QMouseEvent*, Meter*); + + QMap<QString, Sensor*> sensorMap; + QObjectList *sensorList; + QObjectList *timeList; + + QTime lowerTimer; + // use only the first occurance of KARAMBA in a config file + bool foundKaramba; + + KPopupMenu* themeConfMenu; + KPopupMenu* toDesktopMenu; + KPopupMenu* kglobal; + + DCOPClient *client; + QCString appId; + + QPixmap pm; + QPixmap background; + QPainter p; + + QPoint clickPos; + KActionCollection* accColl; + KActionCollection* menuAccColl; + KToggleAction *toggleLocked; + // use highquality scale and rotate algorithms + KToggleAction *toggleFastTransforms; + + // Python module references + KarambaPython* pythonIface; + TextField *defaultTextField; + + int desktop; + ThemeFile m_theme; + + int trayMenuSeperatorId; + int trayMenuQuitId; + int trayMenuToggleId; + int trayMenuThemeId; + void start(); + +public slots: + void step(); + void externalStep(); + void widgetClosed(); + void updateSensors(); + void currentDesktopChanged(int); + void currentWallpaperChanged(int); + void slotToggleConfigOption(QString key, bool); + void updateBackground(KSharedPixmap*); + void passMenuOptionChanged(QString key, bool); + void passMenuItemClicked(int); + void processExited (KProcess *proc); + void receivedStdout (KProcess *proc, char *buffer, int buflen); + void toDesktop(int desktopid, int menuid); + const char *getPrettyName() { return prettyName.ascii(); } + + // Systray + void systrayUpdated(); + + // Task Manager + void startupAdded(Startup*); + void startupRemoved(Startup*); + + void taskAdded(Task*); + void taskRemoved(Task*); + void activeTaskChanged(Task*); + void reloadConfig(); + + void setAlwaysOnTop(bool stay); + + /** + * If true, then when a right button is pressed on the theme, + * the theme's python widgetMouseMoved function is called. + */ + void setWantRightButton(bool yesno) { want_right_button = yesno; } + + void setWantMeterWheelEvent(bool yesno) { want_meter_wheel_event = yesno; } + + /** + * can be used to fire up the karamba management popup menu + */ + void management_popup( void ); + +private: + bool m_reloading; + bool themeStarted; + QTimer *m_sysTimer; + int m_interval; + +private slots: + void initPythonInterface(); + void killWidget(); + void editConfig(); + void editScript(); + void slotToggleLocked(); + void slotToggleFastTransforms(); + void popupNotify(int); + void slotFileChanged( const QString & ); + + void slotToggleSystemTray(); + void slotQuit(); + void slotShowTheme(); +}; + +/* + * Slot to receive the event of moving the karamba object + * to a new desktop. Generated by karamba::toDesktopMenu items + */ +class DesktopChangeSlot : public QObject +{ + Q_OBJECT + + public: + DesktopChangeSlot(QObject *parent, int desktop_id); + /* Parent should be the karamba object + * desktop id of 0 indicates all desktops */ + void setMenuId(int id); + int menuId(); + + public slots: + void receive(); + + protected: + int desktopid; + int menuid; +}; + +/** SignalBridge is an ungulate that lives in the forests of wild Wisconsin. */ +class SignalBridge : public QObject +{ + Q_OBJECT + + public: + SignalBridge(QObject* parent, QString, KActionCollection*); + + signals: + void enabled(QString, bool); + + public slots: + void receive(); + + private: + KActionCollection* collection; +}; + +#endif // _KARAMBA_H_ |