summaryrefslogtreecommitdiffstats
path: root/kicker/taskbar/taskbar.h
diff options
context:
space:
mode:
Diffstat (limited to 'kicker/taskbar/taskbar.h')
-rw-r--r--kicker/taskbar/taskbar.h178
1 files changed, 178 insertions, 0 deletions
diff --git a/kicker/taskbar/taskbar.h b/kicker/taskbar/taskbar.h
new file mode 100644
index 000000000..111554014
--- /dev/null
+++ b/kicker/taskbar/taskbar.h
@@ -0,0 +1,178 @@
+/*****************************************************************
+
+Copyright (c) 2001 Matthias Elter <elter@kde.org>
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+*****************************************************************
+
+ Additional changes:
+ - 2013/10/22 Michele Calgaro
+ * added support for display mode (Icons and Text, Text only, Icons only)
+ and removed "Show application icons"
+*/
+
+#ifndef __taskbar_h__
+#define __taskbar_h__
+
+#include <kpanelextension.h>
+#include <taskmanager.h>
+
+#include "taskcontainer.h"
+#include "panner.h"
+#include "kshadowengine.h"
+
+const int WINDOWLISTBUTTON_SIZE = 15;
+const int BUTTON_MAX_WIDTH = 200;
+const int BUTTON_MIN_WIDTH = 24; // 24 = 4+2+16+2 -> Space for borders, application icon and gaps
+
+class Startup;
+class Task;
+class TDEGlobalAccel;
+
+namespace TaskMoveDestination
+{
+ enum TaskMoveDestination
+ {
+ Null = 0x00,
+ Position = 0x01,
+ Left = 0x02,
+ Right = 0x04,
+ Beginning = 0x08,
+ End = 0x10
+ };
+
+ inline TaskMoveDestination operator|(TaskMoveDestination a, TaskMoveDestination b)
+ {
+ return static_cast<TaskMoveDestination>(static_cast<int>(a) | static_cast<int>(b));
+ }
+
+ inline TaskMoveDestination operator&(TaskMoveDestination a, TaskMoveDestination b)
+ {
+ return static_cast<TaskMoveDestination>(static_cast<int>(a) & static_cast<int>(b));
+ }
+
+ inline TaskMoveDestination operator~(TaskMoveDestination a)
+ {
+ return static_cast<TaskMoveDestination>(~static_cast<int>(a));
+ }
+};
+
+class TaskBar : public Panner
+{
+ Q_OBJECT
+
+public:
+ TaskBar( TaskBarSettings* settingsObject, TaskBarSettings* globalSettingsObject, TQWidget *parent = 0, const char *name = 0 );
+ ~TaskBar();
+
+ TQSize sizeHint() const;
+ TQSize sizeHint( KPanelExtension::Position, TQSize maxSize ) const;
+
+ void setOrientation( Orientation );
+ void setArrowType( TQt::ArrowType at );
+
+ int containerCount() const;
+ int taskCount() const;
+ int showScreen() const;
+
+ bool showIcons() const;
+ bool showText() const;
+ bool sortByDesktop() const { return m_sortByDesktop; }
+ bool showAllWindows() const { return m_showAllWindows; }
+
+ TQImage* blendGradient(const TQSize& size);
+
+ KTextShadowEngine *textShadowEngine();
+
+ int taskMoveHandler(TaskMoveDestination::TaskMoveDestination dest, Task::List taskList, const TQPoint pos = TQPoint(0,0));
+ TaskMoveDestination::TaskMoveDestination taskMoveCapabilities(TaskContainer* movingContainer);
+
+public slots:
+ void configure();
+ void setBackground();
+
+signals:
+ void containerCountChanged();
+
+protected slots:
+ void add(Task::Ptr);
+ void add(Startup::Ptr);
+ void showTaskContainer(TaskContainer*);
+ void remove(Task::Ptr task, TaskContainer *container = 0);
+ void remove(Startup::Ptr startup, TaskContainer *container = 0);
+
+ void desktopChanged( int );
+ void windowChanged(Task::Ptr);
+ void windowChangedGeometry(Task::Ptr);
+
+ void publishIconGeometry();
+
+ void activateNextTask( bool forward );
+ void slotActivateNextTask();
+ void slotActivatePreviousTask();
+ void slotSettingsChanged(int);
+ void reLayout();
+ void reSort();
+
+protected:
+ void reLayoutEventually();
+ void viewportMousePressEvent( TQMouseEvent* );
+ void viewportMouseReleaseEvent( TQMouseEvent* );
+ void viewportMouseDoubleClickEvent( TQMouseEvent* );
+ void viewportMouseMoveEvent( TQMouseEvent* );
+ void wheelEvent(TQWheelEvent*);
+ void propagateMouseEvent( TQMouseEvent* );
+ void resizeEvent( TQResizeEvent* );
+ void moveEvent( TQMoveEvent* );
+ bool idMatch( const TQString& id1, const TQString& id2 );
+ TaskContainer::List filteredContainers();
+
+private:
+ void sortContainersByDesktop(TaskContainer::List& list);
+ void setViewportBackground();
+
+ bool blocklayout;
+ bool m_showAllWindows;
+ bool m_cycleWheel;
+ int m_currentScreen; // The screen to show, -1 for all screens
+ bool m_showOnlyCurrentScreen;
+ bool m_sortByDesktop;
+ int m_displayIconsNText;
+ bool m_showOnlyIconified;
+ int m_showTaskStates;
+ ArrowType arrowType;
+ TaskContainer::List containers;
+ TaskContainer::List m_hiddenContainers;
+ TaskContainer::List m_deletableContainers;
+ PixmapList frames;
+ int maximumButtonsWithoutShrinking() const;
+ bool shouldGroup() const;
+ bool isGrouping;
+ void reGroup();
+ TDEGlobalAccel* keys;
+ KTextShadowEngine* m_textShadowEngine;
+ bool m_ignoreUpdates;
+ bool m_sortByAppPrev;
+ TQTimer m_relayoutTimer;
+ TQImage m_blendGradient;
+ TaskBarSettings* m_settingsObject;
+ TaskBarSettings* m_globalSettingsObject;
+};
+
+#endif