diff options
Diffstat (limited to 'kicker/taskbar/taskbar.h')
-rw-r--r-- | kicker/taskbar/taskbar.h | 178 |
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 |