You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
kooldock/src/kooldock.h

365 lines
11 KiB

/***************************************************************************
kooldock.h - description
-------------------
begin : Tue Jun 10 22:18:34 BST 2003
copyright : (C) 2003 by KoolDock team
email :
***************************************************************************/
/***************************************************************************
* *
* 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. *
* *
***************************************************************************/
#ifndef KOOLDOCK_H
#define KOOLDOCK_H
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include <kapp.h>
#include <kpopupmenu.h>
#include <kwinmodule.h>
#include <kaboutdialog.h>
#include <krootpixmap.h>
#include <kpixmap.h>
#include <kurifilter.h>
#include <qwidget.h>
#include <qptrlist.h>
#include <qtimer.h>
#include <qcolor.h>
#include <netwm.h>
#include <qdatetime.h>
#include "item.h"
#include "xosd.h"
#include "clip.h"
#include "setupdialogprg.h"
#include "dinfo.h"
const int MAX_ICONS = 150; // max number of icons
const int UPDATE_DIST = 1; // update when x - last_x <= UPDATE_DIST
const int DEF_SMALL_SIZE = 32; // default small icon size
const int DEF_BIG_SIZE = 90; // default big icon size
const int DEF_DOCK_OPACITY = 50; // default dock opacity
const int DEF_PRIORITY = 5;
const int DEF_HIDDEN = 1; // default hidden priority
const int ANIM_TOTAL_STEP = 6; // not in use yet
const int SPACE_W = 1; // space between quick launchers and tasks (the seperator)
const int ON_CHANGE_ANIM_INTERVAL = 50; // animation's interval
/** KoolDock is the base class of the project */
class KoolDock : public QWidget
{
Q_OBJECT
public:
/** construtor */
KoolDock(QWidget* parent=0, const char *name=0);
/** destructor */
~KoolDock();
//static bool writeIgnoreList(QString text);
void setMainPath(QString path);
void setArgs(QString param);
clip *clipw;
private:
QTime *perf;
// configuration variables
int fShowTaskbar; // show-taskbar flag
int fMinimizedOnly; // show only minimized icons flag
int fShowNotification; // show-notification flag
int fShowBorders; // show-borders flag
int fShowKMenu; // show the K menu
int fUseKBFX;
int fPriority; // "nice" priority
int fMouseTimer; // Mouse timer interval
int fClipping; //window area clippig
int fClipIcons; //icon area clipping
long int fzoomSpeed, zoomStep, zoomStepB, zoomStepS, zoomVal; //speed of show/hide animation
int zoomTicksB, zoomTicksS; //counts timer ticks
int neededTicksB,neededTicksS; //sets how many ticks is necessary to calculate new speed
bool fSpeed;
QColor borderColor;
int fHidden; // hidden dockbar
int fStayBelow;
int fOrientation; //bottom/left/top/right
int fHideOnClick;
int fSteppy;
int fShowFrames; // frames to show the dock "growing from bottom"
int fGrowFrames; // frames to grow the icon when the mouse is over it.
int fHighLightTime;
bool fFirstRun;
bool fShowShot;
bool fGrouping;
int fRepaintInterval;
int xinerama; //whether we want xinerama
int hideTimer; //user define time to show dock
int Solid; //whether using backgroung Image or not (for preference controls)
int fShowNav; //whether we want the navigation menu (clock + desktop chooser) in kooldocks main menu
int numSystray; //for systray control
int fSystray; //whether we want the systray or not
int fCurrent; //whether to only show windows on current desktop
int oldDesktop; //number of previous desktop
bool firstTime; //to control certain things
QString curTheme; //for the background theme (to preserve changes)
int leftRes; //Left monitor resolution
int XinDesiredHeight;
int XinPreviousWidth;
int fpercentPos;
bool noSet;
bool firstInit;
bool reloadIcons;
bool initialization;
int ptPart;
bool mouseOnLauncher;
QStringList lstDrop;
bool useList;
Atom net_system_tray_selection;
Atom net_system_tray_opcode;
QString fLeftImg;
QString fRightImg;
QString fCenterImg;
bool fNWideBg;
bool scaleMax;
QPixmap LeftImg;
QPixmap RightImg;
QPixmap CenterImg;
QPixmap TempScaledCenter;
QPixmap TestPix;
QImage TestIm;
unsigned int oLeft, oRight;
int iwSmall;
int iwBig;
int iwBig2;
int firstX, tmpw;
int oldfirstX, oldtmpw;
int lastX;
int dockOpacity;
QColor bgColor;
QColor sepColor; // separator bar's color
int Ybase;
// normal variables
QString progPath;
QString menuPath;
QString confFile;
QString iFilename; // right clicked item filename
QString mainPath;
QString args;
QStringList ignoreList;
NETWinInfo *info;
KWinModule *wm;
SetupDialog *setupdlg;
int Offset;
int numLaunchers; // number of quick launcher items
int x, y, w, h, h0, h1, w0, x0, w1, x1;
int rx, ry, rw, rh, uw; //current position
int ix, iy, iDist, iSpace;
int dw, dh, rdh;
int funcW, funcH;
int ii_first, ii_last;
int soffset, eoffset; //used in icon positioning
int sx, sw;
int adjust;
int fAmount;
int last_mx;
int last_ncx;
QPtrList<Item> items;//currently visible items
QPtrList<Item> witems;//all windows on all desktops
int iSize[MAX_ICONS + 1];//icon sizes
int cx[MAX_ICONS + 1];//positions of small icons
int cur_cx[MAX_ICONS + 1];//positions of visible icons
QPixmap offscr;//drawing buffer
KRootPixmap *rootpix;
KPixmap bottomBg;
KPixmap bottomBgf;
QPixmap topBg;
KAboutDialog *aboutDlg;
QTimer *mkbigTimer; //zoom animation timers
QTimer *mksmallTimer;
QTimer *mTimer; //mouse move emulator (can't use normal event instead)
QTimer *onChangeTimer; // used when a window has changed and we need to notify user
QTimer *trackTimer; //checks whether mouse touches screen edge
int animStep; // animation step, not in use yet
int iOnClick; // index of the quick launcher being clicked
WId cId; // id of the application (used in the right click menu over the taskbar)
QString cClass;
WId CurrentFocus;
int onChangeAnimStep;
KPopupMenu *deskpopup;
KPopupMenu *appMenu;
KPopupMenu *godesk;
KPopupMenu *tasklist;
KPopupMenu *popup;
KPopupMenu *advMenu;
int menuCount, currMenu;
bool allApps;
QPtrList<KPopupMenu> popups;
bool iGroup;
int dIndex, nDesks;
QPtrList<dInfo> desks;
bool fExpanded;
bool track2active;
/*Xosd Section */
QString nom;
QString aux;
//xosd *osd;
int xosd_st;
int showNames;
int fCleaner;
int xosdShadowOffset;
QString xosdFont;
QString xosdColor;
QString xosdShadowColor;
bool xosdBold;
bool xosdItalic;
int xosdSize;
KURIFilterData *_filterData;
xosd *xosdw;
int animValue;
int animState;
void run(QString cmd);
int func(int x);
int func2(int x);
void doUpdateGeometry();
bool addTask(WId id, int iFound=-1);
bool rmTask(WId id, int iFound=-1);
void rmwTask(int iFound);
bool addwTask(WId id);
void movetoback(WId id);
void loadConf();
void loadIgnore();
void saveConf();
void loadMenu();
void addWindows();
int itemFromPoint(int x);
int xFromIndex(int i);
void createMenu(WId id, KPopupMenu* tmpMenu, KWin::WindowInfo* info);
void updTaskList();
void addToTaskList(WId id);
void rmFromTaskList(WId id);
bool doRepaint;
int currXPos;
int lastXPos;
int lastYPos;
void init1();
void init2();
protected:
void paintEvent(QPaintEvent *);
void mousePressEvent( QMouseEvent * );
void mMoveEvent( int ex, int ey);
void mPress( int mx, int my, ButtonState srcButton);
void wheelEvent(QWheelEvent *);
void enterEvent(QEvent*);
void onleaveEvent(QEvent*);
void mksmallTimerstop();
void dragMoveEvent(QDragMoveEvent* event);
void dropEvent(QDropEvent* event);
public slots:
void edit();
void editPref();
void about();
void windowAdded(WId id);
void windowRemoved(WId id);
void windowChanged(WId id, unsigned int properties);
void activeWindowChanged(WId id);
void workAreaChanged();
void currentDesktopChanged(int);
void onChangeTimerTicked();
void updateBackground(const QPixmap&);
void moveApp();
void resizeApp();
void minApp();
void maxApp();
void restApp();
void minAllApps();
void maxAllApps();
void restAllApps();
void closeAllApps();
void shadeApp();
void activateApp();
void closeApp();
void editItem();
void removeItem();
void sendToDesktop(int);
void goToDesktop(int);
void goToWindow(int);
/* Systray support */
void systemTrayWindowAdded(WId id);
void systemTrayWindowRemoved(WId id);
void aboutToShow();
void aboutToHide();
void toggleAlwaysOnTop();
void toggleKeptBelowOthers();
void toggleFullScreen();
static void addFile(QString filename, QString iconname, QString execname, QString name, bool notify, bool terminal, bool tclose, bool, QString);
bool ignored(QString appname);
#ifdef _ENABLE_DEBUG
static void debug(QString message);
#endif
#ifndef _ENABLE_DEBUG
static void debug(QString);
#endif
void mkbigTimerDo();
void mksmallTimerDo();
void endProg();
void mTimerEnd();
void trackTimerEnd();
void trackTimer2End();
void restart();
void reload();
void chkRestart();
void refreshBackground();
void unhighlight();
void move2(int nx, int ny);
void resize2(int nw, int nh);
void getBottomBG();
void getTopBG();
void setDesktopIconsArea(int, int, int, int);
void setDockAbove();
void setDockBelow();
void menuX(int num);
void menuShow();
void pTest();
};
#endif