summaryrefslogtreecommitdiffstats
path: root/kicker/extensions/kasbar/kastasker.h
diff options
context:
space:
mode:
Diffstat (limited to 'kicker/extensions/kasbar/kastasker.h')
-rw-r--r--kicker/extensions/kasbar/kastasker.h280
1 files changed, 280 insertions, 0 deletions
diff --git a/kicker/extensions/kasbar/kastasker.h b/kicker/extensions/kasbar/kastasker.h
new file mode 100644
index 000000000..1379c8d8c
--- /dev/null
+++ b/kicker/extensions/kasbar/kastasker.h
@@ -0,0 +1,280 @@
+// -*- c++ -*-
+
+/* kastasker.h
+**
+** Copyright (C) 2001-2004 Richard Moore <[email protected]>
+** Contributor: Mosfet
+** All rights reserved.
+**
+** KasBar is dual-licensed: you can choose the GPL or the BSD license.
+** Short forms of both licenses are included below.
+*/
+
+/*
+** 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.
+**
+** This program 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 this program in a file called COPYING; if not, write to
+** the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+** MA 02110-1301, USA.
+*/
+
+/*
+** Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions
+** are met:
+** 1. Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** 2. Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in the
+** documentation and/or other materials provided with the distribution.
+**
+** THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS ``AS IS'' AND
+** ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+** IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+** ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+** FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+** DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+** OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+** HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+** LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+** OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+** SUCH DAMAGE.
+*/
+
+/*
+** Bug reports and questions can be sent to [email protected]
+*/
+
+#ifndef KASTASKER_H
+#define KASTASKER_H
+
+#include "kasbar.h"
+
+#include <kdemacros.h>
+#include <taskmanager.h>
+
+class KConfig;
+class KPixmap;
+class KPopupMenu;
+class KAction;
+class KToggleAction;
+
+class Task;
+class Startup;
+
+class KasTaskItem;
+class KasStartupItem;
+class KasGroupItem;
+class KasTasker;
+class KasGrouper;
+
+/**
+ * A KasBar that provides a taskbar using the TaskManager API.
+ *
+ * @author Richard Moore, [email protected]
+ */
+class KDE_EXPORT KasTasker : public KasBar
+{
+ Q_OBJECT
+ Q_PROPERTY( bool isTopLevel READ isTopLevel )
+ Q_PROPERTY( bool showClock READ showClock )
+ Q_PROPERTY( bool showLoad READ showLoad )
+
+public:
+ /** Create a KasTasker widget. */
+ KasTasker( Orientation o, QWidget* parent = 0, const char* name = 0, WFlags f = 0 );
+
+ /**
+ * Create a KasTasker widget that is slaved to another KasTasker. The
+ * created widget will inherit the settings of the parent, but will
+ * not connect to the signals of the TaskManager.
+ */
+ KasTasker( Orientation o, KasTasker *master,
+ QWidget *parent=0, const char *name=0, WFlags f=0 );
+
+ /** Cleans up. */
+ virtual ~KasTasker();
+
+ /** Factory method that returns the default menu for items in the bar. */
+ virtual KPopupMenu *contextMenu();
+
+ virtual KasTasker *createChildBar( Orientation o, QWidget *parent, const char *name=0 );
+
+ /**
+ * Returns true if this is the top KasTasker. Note that it is possible for
+ * the top KasTasker to be a child of another KasBar derived class, so
+ * this can return a different result to KasBar::isTopLevel().
+ */
+ bool isTopLevel() const { return dynamic_cast<KasTasker *>( KasBar::master() ) ? true : false; }
+ KasTasker *master() const { return dynamic_cast<KasTasker *>( KasBar::master() ); }
+
+ /** Finds the item representing a task (if there is one). */
+ KasTaskItem *findItem( Task::Ptr );
+
+ /** Finds the item representing a startup (if there is one). */
+ KasStartupItem *findItem( Startup::Ptr s );
+
+ /** Returns true iff thumbnails are enabled. */
+ bool thumbnailsEnabled() const { return enableThumbs_; }
+
+ /** Returns true iff thumbnails should be shown in the boxes instead of icons. */
+ bool embedThumbnails() const { return embedThumbs_; }
+
+ bool showClock() const { return showClock_; }
+ bool showLoad() const { return showLoad_; }
+
+ /** Returns the proportions of the window thumbnails. */
+ double thumbnailSize() const { return thumbnailSize_; }
+
+ /** Returns true iff the startup notifier is enabled. */
+ bool notifierEnabled() const { return enableNotifier_; }
+
+ /** Returns true iff the modified flag should be shown. */
+ bool showModified() const { return showModified_; }
+
+ /** Returns true iff a progress bar should be shown for progress windows. */
+ bool showProgress() const { return showProgress_; }
+
+ /** Returns true iff we should indicate when a window demands attention. */
+ bool showAttention() const { return showAttention_; }
+
+ /** Returns true iff windows from all desktops should be displayed. */
+ bool showAllWindows() const { return showAllWindows_; }
+
+ /** Returns the delay between thumbnail updates (in seconds). */
+ int thumbnailUpdateDelay() const { return thumbUpdateDelay_; }
+
+ /** Returns true iff windows should be grouped together. */
+ bool groupWindows() const { return groupWindows_; }
+
+ /** Returns true iff windows on inactive desktops should be grouped together. */
+ bool groupInactiveDesktops() const { return groupInactiveDesktops_; }
+
+ /** Returns true iff we should only show windows that are minimized. */
+ bool onlyShowMinimized() const { return onlyShowMinimized_; }
+
+ /** Returns true if this bar is floating. */
+ bool isStandAlone() const { return standalone_; }
+
+ //
+ // Internal stuff
+ //
+
+ /**
+ * Converts the item for a task into a group item to which additional
+ * tasks can be added.
+ */
+ KasGroupItem *convertToGroup( Task::Ptr t );
+
+ /** Moves an item from a group into the main bar. */
+ void moveToMain( KasGroupItem *gi, Task::Ptr t );
+
+ /** Moves all the items from a group into the main bar and removes the group. */
+ void moveToMain( KasGroupItem *gi );
+
+public slots:
+ /** Adds a task to the bar. */
+ void addTask( Task::Ptr );
+
+ /** Removes a task from the bar. */
+ void removeTask( Task::Ptr );
+
+ /** Adds a startup item to the bar. */
+ void addStartup( Startup::Ptr );
+
+ /** Removes a startup item from the bar. */
+ void removeStartup( Startup::Ptr );
+
+ void refreshAll();
+ void refreshAllLater();
+ void refreshIconGeometry();
+
+ void setNotifierEnabled( bool enable );
+ void setShowModified( bool enable );
+ void setShowProgress( bool enable );
+ void setShowAttention( bool enable );
+
+ void setShowAllWindows( bool enable );
+ void setGroupWindows( bool enable );
+ void setGroupInactiveDesktops( bool enable );
+ void setOnlyShowMinimized( bool enable );
+
+ void setThumbnailSize( double size );
+ void setThumbnailSize( int percent );
+ void setThumbnailsEnabled( bool enable );
+ void setThumbnailUpdateDelay( int secs );
+ void setEmbedThumbnails( bool enable );
+
+ void setShowClock( bool enable );
+ void setShowLoad( bool enable );
+
+ void showPreferences();
+ void showAbout();
+
+ /** Sets the current KConfig object. */
+ void setConfig( KConfig *config );
+ KConfig *config() const { return conf; }
+
+ /** Reads the settings from the current KConfig. */
+ void readConfig();
+ void writeConfig();
+ void writeConfigLater();
+ void writeLayout();
+
+ /** Writes the settings of this bar to the specified KConfig. */
+ void writeConfig( KConfig *conf );
+
+ void setStandAlone( bool enable );
+
+signals:
+ void showAllWindowsChanged( bool );
+ void groupWindowsChanged( bool );
+ void showClockChanged( bool );
+ void showLoadChanged( bool );
+
+protected slots:
+ /** Load settings from the specified configuration. */
+ void readConfig( KConfig *conf );
+
+private:
+ KPopupMenu *menu;
+ KConfig *conf;
+ KasGrouper *grouper;
+ KToggleAction *toggleDetachedAction;
+ KToggleAction *showAllWindowsAction;
+ KToggleAction *groupWindowsAction;
+ KToggleAction *showClockAction;
+ KToggleAction *showLoadAction;
+ KAction *rotateBarAction;
+ bool standalone_;
+
+ bool passive_;
+ bool enableThumbs_;
+ bool embedThumbs_;
+ double thumbnailSize_;
+ bool enableNotifier_;
+ bool showModified_;
+ bool showProgress_;
+ bool showAllWindows_;
+ int thumbUpdateDelay_;
+ bool groupWindows_;
+ bool groupInactiveDesktops_;
+ bool showAttention_;
+ bool onlyShowMinimized_;
+ bool showClock_;
+ KasItem *clockItem;
+ bool showLoad_;
+ KasItem *loadItem;
+};
+
+#endif // KASTASKER_H
+