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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
|
/***************************************************************************
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 <tdepopupmenu.h>
#include <twinmodule.h>
#include <tdeaboutdialog.h>
#include <krootpixmap.h>
#include <kpixmap.h>
#include <kurifilter.h>
#include <tqwidget.h>
#include <tqptrlist.h>
#include <tqtimer.h>
#include <tqcolor.h>
#include <netwm.h>
#include <tqdatetime.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; // default priority
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 TQWidget
{
TQ_OBJECT
public:
/** construtor */
KoolDock(TQWidget* parent = 0, const char* name = 0);
/** destructor */
~KoolDock();
void setMainPath(const TQString& path); // send run paramenters to the widget
void setArgs(const TQString& param);
clip *clipw; // clipping window - makes kooldock's edge sticky
private:
TQTime* perf; // variable used to control animation speed
// 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; // makes kooldock use KBFX insted of K menu
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; // enables speed control
TQColor borderColor;
int fHidden; // determines dock's autohide
int fStayBelow; // makes dock stay below other windows while not focused
int fOrientation; //bottom/left/top/right
int fHideOnClick; // determines if kooldock should hide after clicking an icon
int fSteppy; // enables autocenter on icon
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; // shows information box one time
bool fShowShot; // makes kooldock do screenshot of minimized window
bool fGrouping; // enables window grouping
int xinerama; //whether we want xinerama
int hideTimer; //user define time to show dock
int Solid; //whether using background 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
TQString curTheme; //for the background theme (to preserve changes)
int leftRes; //Left monitor resolution
int XinDesiredHeight; // size of screen on which kooldock is visible in Xinerama
int XinPreviousWidth;
int fpercentPos; // sets position of dock on screen
bool lockSetTab; // disables changing opened tab in preferences window
bool reloadIcons; // sets the need of reloading icons after changes in setting
bool initialization; // blocks dock during loading settings
int ptPart; // variable used in speed control as state data
bool mouseOnLauncher; // determines if mouse is on laucher icon or on window icon
TQStringList lstDrop; // list of dropped elements
bool useList; // determines if dropped elements should be sent to selected application
Atom net_system_tray_selection;
Atom net_system_tray_opcode;
TQString fLeftImg; //paths to background images
TQString fRightImg;
TQString fCenterImg;
bool fNWideBg; // determines if background should not be wider than screen
bool scaleMax; // sets scaling mode of background corners
TQPixmap LeftImg;
TQPixmap RightImg;
TQPixmap CenterImg;
TQPixmap TempScaledCenter;
int iwSmall; // sizes of small and big icon
int iwBig; // size of current big icon - during animation its value is between iwSmall and iwBig2
int iwBig2; // size of base size of big icon
int firstX, tmpw; // variables used in background positioning
int oldfirstX, oldtmpw;
int lastX;
int dockOpacity;
TQColor bgColor;
TQColor sepColor; // separator bar's color
int Ybase; // sets position of dock, and how big part of dock is out of screen
// normal variables
TQString progPath;
TQString menuPath;
TQString confFile;
TQString iFilename; // right clicked item filename
TQString mainPath;
TQString args;
TQStringList ignoreList;
NETWinInfo* info; // window informations
KWinModule* wm;
SetupDialog* setupdlg;
int Offset; // scrolls dock if all icons are wider than screen
int numLaunchers; // number of quick launcher items
int x, y, w, h, h0, h1, w0, x0, w1, x1; // positions *0 - small *1 big
int rx, ry, rw, rh, uw; //current position
int ix, iy, iDist, iSpace; // sizes of dock's elements - icons, distance between small icon centres, space between them
int dw, dh, rdh; // real current position
int funcW, funcH; // variables used to calculate zoomed icons sizes
int ii_first, ii_last; // idexes of first and last zoomed icons
int soffset, eoffset; //used in icon positioning
int adjust; // offset of first zoomed icon
int fAmount; // amount of big icons
int last_mx; // mouse position
int last_ncx;
TQPtrList<Item> items;//currently visible items
TQPtrList<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
TQPixmap offscr;//drawing buffer
KRootPixmap* rootpix;
KPixmap bottomBg;
KPixmap bottomBgf; // faded bottom background
TQPixmap topBg;
TDEAboutDialog* aboutDlg;
TQTimer* mkbigTimer; //zoom animation timers
TQTimer* mksmallTimer;
TQTimer* mTimer; //mouse move emulator (can't use normal event instead)
TQTimer* onChangeTimer; // used when a window has changed and we need to notify user
TQTimer* 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)
WId CurrentFocus; // id of window that is currently active
TDEPopupMenu *deskpopup; // moving between desktops
TDEPopupMenu *appMenu; // list of windows in selected group
TDEPopupMenu *godesk; // sends window to another desktop
TDEPopupMenu *tasklist; // list of all windows
TDEPopupMenu *popup; // main popup
TDEPopupMenu *advMenu; // kicker like advanced menu of window icon
int menuCount; // counts menus - disable dock hiding when popups are visible, and determines if user want to do some changes to specific window, or to all windows in group
int currMenu; // information to which window user apply changes
bool allApps; // sets if dock should apply changes to all windows
TQPtrList<TDEPopupMenu> popups;
bool iGroup; // menu of icon is connect with single window or with group of windows
int dIndex, nDesks; // index of desktop (0 for all), count of desktops
TQPtrList<dInfo> desks;
bool fExpanded; // informs if kooldock is zoomed
bool track2active; // checks if second tracking timer is active - to make kooldock open in proper time
/*Xosd Section */
TQString nom;
TQString aux;
int xosd_st;
int showNames;
int fCleaner;
int xosdShadowOffset;
TQString xosdFont;
TQString xosdColor;
TQString xosdShadowColor;
bool xosdBold;
bool xosdItalic;
int xosdSize;
KURIFilterData* _filterData;
xosd* xosdw;
int animValue; // icon highlight
int animState;
bool doRepaint;
int lastXPos; // postion of mouse - used in autocenter
int lastYPos;
void run(const TQString& cmd); // runs command, including data dropped of launcher
int func(int x); // function used in scaling zoomed icons
int func2(int x);
void doUpdateGeometry(); // updates kooldock dimentios, and icon positions
bool addTask(WId id, int iFound=-1); // add window to dock
bool rmTask(WId id, int iFound=-1); // remove window from dock
void rmwTask(int iFound); // remove window from list (hidden, used for performance)
bool addwTask(WId id);
void movetoback(WId id); // send icon in group to end of list - used to determine order of windows in group
void loadConf();
void loadIgnore();
void saveConf();
void loadMenu();
void addWindows(); // refreshes list of windows (hidden list, and icons on dock)
int itemFromPoint(int x); // gets icon in specified point
int xFromIndex(int i); // gets position of icon from its index
void createMenu(TDEPopupMenu* tmpMenu, KWin::WindowInfo* info);
void updTaskList(); // recreate popup menu of all applications
void addToTaskList(WId id); // add window to menu
void rmFromTaskList(WId id); // remove from menu
void init();
protected:
void paintEvent(TQPaintEvent*);
void mousePressEvent(TQMouseEvent*);
void mMoveEvent(int ex, int ey); // mouse move event called by timer (to avoid 'freezes' i.e. when menu are open)
void mPress(int mx, int my, ButtonState srcButton); // press event, used insted of normal event for simplicity of calling
void wheelEvent(TQWheelEvent*);
void enterEvent(TQEvent*);
void onleaveEvent(TQEvent*); // event called when mouse leves dock
void mksmallTimerstop(); // called when stopping smalling aninamtion
void dragMoveEvent(TQDragMoveEvent* event);
void dropEvent(TQDropEvent* event);
public slots:
void edit(); // shows launcher editing page
void editPref(); // shows preferences
void about();
void windowAdded(WId id); // events called when window appaers/disappears
void windowRemoved(WId id);
void numberOfDesktopsChanged(int); // called when number of desktops has changed
void windowChanged(WId id, unsigned int properties); // when window was modified - moved, resized, minimized, etc.
void activeWindowChanged(WId id); // focus changed
void workAreaChanged();
void currentDesktopChanged(int);
void onChangeTimerTicked(); // called when icon is highlighted
void updateBackground(const TQPixmap&);
void moveApp(); // functions used to manipulate windows
void resizeApp();
void minApp();
void maxApp();
void restApp();
void minAllApps();
void maxAllApps();
void restAllApps();
void closeAllApps();
void shadeApp();
void activateApp();
void closeApp();
void toggleAlwaysOnTop();
void toggleKeptBelowOthers();
void toggleFullScreen();
void sendToDesktop(int); // sends app to another desktop
void goToWindow(int); // sets focus
void editItem(); // edit launcher
void removeItem(); // remove launcher
void goToDesktop(int); // changes current desktop
/* Systray support */
void systemTrayWindowAdded(WId id);
void systemTrayWindowRemoved(WId id);
/* menus */
void aboutToShow(); // events associated with all popups
void aboutToHide();
static void addFile(const TQString& filename,
const TQString& iconname,
const TQString& execname,
const TQString& name,
bool notify = true,
bool terminal = false,
bool tclose = false,
bool cuser = false,
TQString = "na");
bool ignored(const TQString& appname);
#ifdef _ENABLE_DEBUG
static void debug(TQString message);
#endif
#ifndef _ENABLE_DEBUG
static void debug(TQString);
#endif
void mkbigTimerDo(); // tick of animation timers
void mksmallTimerDo();
void endProg();
void mTimerEnd(); // event called by mTimer - detects mouse position
void trackTimerEnd(); // checks if cursor touched screen edge, on which kooldock is autohided
void trackTimer2End(); // enabled by first trackTimer - provides kooldock's opening in proper time
void restart();
void reload();
void chkRestart(); // sub called by preferences window, after clicking apply or ok
void refreshBackground();
void unhighlight();
void move2(int nx, int ny); // moves dock
void resize2(int nw, int nh); // resizes dock
void getBottomBG(); // gets bottom part of background - covered by small icons
void getTopBG(); // gets upper part of background - covered by zoomed icons
void setDesktopIconsArea(int, int, int, int); // changes KDE desktop area
void setDockAbove();
void setDockBelow();
void menuX(int num); // event called when user highlighted menu of specified window in window group menu
void menuShow(); // event called when deskpopup is about to show - updates settings on menu for selected window
void pTest(); // performance test
};
#endif // KOOLDOCK_H
|