diff options
author | tpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2011-08-04 08:18:22 +0000 |
---|---|---|
committer | tpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2011-08-04 08:18:22 +0000 |
commit | 80035308b1907d75e7e09be7c8f6e14098edd533 (patch) | |
tree | d089bef7060df95dd21096b3e3f699036e617f02 /kicker/kicker/core | |
parent | e98e745f1a8b79a0444e6a4d60b0cb5c1b1f1ce0 (diff) | |
download | tdebase-80035308b1907d75e7e09be7c8f6e14098edd533.tar.gz tdebase-80035308b1907d75e7e09be7c8f6e14098edd533.zip |
Add initial support for Kicker "Deep Buttons", a more highly textured style than the normal "flat" Kicker GUI
Add preliminary GUI and configuration structures needed for hot-resizing panels
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdebase@1244835 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'kicker/kicker/core')
-rw-r--r-- | kicker/kicker/core/container_extension.cpp | 99 | ||||
-rw-r--r-- | kicker/kicker/core/container_extension.h | 3 | ||||
-rw-r--r-- | kicker/kicker/core/containerarea.cpp | 18 |
3 files changed, 108 insertions, 12 deletions
diff --git a/kicker/kicker/core/container_extension.cpp b/kicker/kicker/core/container_extension.cpp index c659c1002..0deb57a35 100644 --- a/kicker/kicker/core/container_extension.cpp +++ b/kicker/kicker/core/container_extension.cpp @@ -32,6 +32,8 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include <tqtimer.h> #include <tqtooltip.h> #include <tqvbox.h> +#include <tqimage.h> +#include <tqstyle.h> #include <qxembed.h> #include <tqcolor.h> @@ -67,6 +69,15 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #define PANEL_SPEED_MULTIPLIER 10.0 #define PANEL_SPEED(x, c) (int)(((1.0-2.0*fabs((x)-(c)/2.0)/c)*m_settings.hideAnimationSpeed()+1.0)*PANEL_SPEED_MULTIPLIER) +// #define PANEL_RESIZE_HANDLE_WIDTH 3 +// #define PANEL_BOTTOM_SPACING_W_RESIZE_HANDLE 2 + +// #define PANEL_RESIZE_HANDLE_WIDTH 4 +// #define PANEL_BOTTOM_SPACING_W_RESIZE_HANDLE 2 + +#define PANEL_RESIZE_HANDLE_WIDTH 6 +#define PANEL_BOTTOM_SPACING_W_RESIZE_HANDLE 0 + ExtensionContainer::ExtensionContainer(const AppletInfo& info, const TQString& extensionId, TQWidget *parent) @@ -109,6 +120,7 @@ ExtensionContainer::ExtensionContainer(KPanelExtension* extension, _info(info), _ltHB(0), _rbHB(0), + _resizeHandle(0), m_extension(extension), m_maintainFocus(0), m_panelOrder(ExtensionManager::the()->nextPanelOrder()) @@ -223,6 +235,11 @@ TQSize ExtensionContainer::tqsizeHint(KPanelExtension::Position p, const TQSize height += 1; // border } + if (KickerSettings::useResizeHandle()) + { + height += (PANEL_RESIZE_HANDLE_WIDTH + PANEL_BOTTOM_SPACING_W_RESIZE_HANDLE); // resize handle area + } + if (m_settings.showLeftHideButton()) { width += m_settings.hideButtonSize(); @@ -243,6 +260,11 @@ TQSize ExtensionContainer::tqsizeHint(KPanelExtension::Position p, const TQSize width += 1; // border } + if (KickerSettings::useResizeHandle()) + { + width += (PANEL_RESIZE_HANDLE_WIDTH + PANEL_BOTTOM_SPACING_W_RESIZE_HANDLE); // resize handle area + } + if (m_settings.showLeftHideButton()) { height += m_settings.hideButtonSize(); @@ -1186,6 +1208,11 @@ int ExtensionContainer::arrangeHideButtons() --maxWidth; } + if (KickerSettings::useResizeHandle()) + { + maxWidth = maxWidth - (PANEL_RESIZE_HANDLE_WIDTH + PANEL_BOTTOM_SPACING_W_RESIZE_HANDLE); + } + if (_ltHB) { _ltHB->setMaximumWidth(maxWidth); @@ -1211,6 +1238,11 @@ int ExtensionContainer::arrangeHideButtons() --maxHeight; } + if (KickerSettings::useResizeHandle()) + { + maxHeight = maxHeight - (PANEL_RESIZE_HANDLE_WIDTH + PANEL_BOTTOM_SPACING_W_RESIZE_HANDLE); + } + int vertAlignment = (position() == KPanelExtension::Top) ? Qt::AlignTop : 0; int leftAlignment = Qt::AlignRight; @@ -1261,11 +1293,15 @@ int ExtensionContainer::setupBorderSpace() _layout->setColSpacing(0, 0); _layout->setColSpacing(2, 0); - if (!needsBorder()) + if (!needsBorder() && !KickerSettings::useResizeHandle()) { return 0; } + int borderWidth = 1; + if (KickerSettings::useResizeHandle()) + borderWidth = PANEL_RESIZE_HANDLE_WIDTH + PANEL_BOTTOM_SPACING_W_RESIZE_HANDLE; + int layoutOffset = 0; TQRect r = TQApplication::desktop()->screenGeometry(xineramaScreen()); TQRect h = geometry(); @@ -1274,14 +1310,14 @@ int ExtensionContainer::setupBorderSpace() { if (h.top() > 0) { - int topHeight = (_ltHB && _ltHB->isVisibleTo(this)) ? _ltHB->height() + 1 : 1; + int topHeight = (_ltHB && _ltHB->isVisibleTo(this)) ? _ltHB->height() + borderWidth : borderWidth; _layout->setRowSpacing(0, topHeight); ++layoutOffset; } if (h.bottom() < r.bottom()) { - int bottomHeight = (_rbHB && _rbHB->isVisibleTo(this)) ? _rbHB->height() + 1 : 1; + int bottomHeight = (_rbHB && _rbHB->isVisibleTo(this)) ? _rbHB->height() + borderWidth : borderWidth; _layout->setRowSpacing(1, bottomHeight); ++layoutOffset; } @@ -1290,14 +1326,14 @@ int ExtensionContainer::setupBorderSpace() { if (h.left() > 0) { - int leftWidth = (_ltHB && _ltHB->isVisibleTo(this)) ? _ltHB->width() + 1 : 1; + int leftWidth = (_ltHB && _ltHB->isVisibleTo(this)) ? _ltHB->width() + borderWidth : borderWidth; _layout->setColSpacing(0, leftWidth); ++layoutOffset; } if (h.right() < r.right()) { - int rightWidth = (_rbHB && _rbHB->isVisibleTo(this)) ? _rbHB->width() + 1 : 1; + int rightWidth = (_rbHB && _rbHB->isVisibleTo(this)) ? _rbHB->width() + borderWidth : borderWidth; _layout->setColSpacing(1, rightWidth); ++layoutOffset; } @@ -1306,20 +1342,20 @@ int ExtensionContainer::setupBorderSpace() switch (position()) { case KPanelExtension::Left: - _layout->setColSpacing(2, 1); + _layout->setColSpacing(2, PANEL_BOTTOM_SPACING_W_RESIZE_HANDLE); break; case KPanelExtension::Right: - _layout->setColSpacing(0, 1); + _layout->setColSpacing(0, PANEL_BOTTOM_SPACING_W_RESIZE_HANDLE); break; case KPanelExtension::Top: - _layout->setRowSpacing(2, 1); + _layout->setRowSpacing(2, PANEL_BOTTOM_SPACING_W_RESIZE_HANDLE); break; case KPanelExtension::Bottom: default: - _layout->setRowSpacing(0, 1); + _layout->setRowSpacing(0, PANEL_BOTTOM_SPACING_W_RESIZE_HANDLE); break; } @@ -1361,6 +1397,39 @@ void ExtensionContainer::paintEvent(TQPaintEvent *e) p.setPen(palette().color(TQPalette::Active, TQColorGroup::Mid)); p.drawRect(0, 0, width(), height()); } + + if (KickerSettings::useResizeHandle()) + { + // draw resize handle [RAJA] + TQRect rect; + TQPainter p( this ); + + // FIXME + // KPanelExtension::Left/Right don't seem to draw the separators at all! + if (position() == KPanelExtension::Left) { + rect = TQRect(width()-2,0,PANEL_RESIZE_HANDLE_WIDTH,height()); + tqstyle().tqdrawPrimitive( TQStyle::PE_Separator, &p, rect, tqcolorGroup(), TQStyle::Style_Horizontal ); + } + else if (position() == KPanelExtension::Right) { + rect = TQRect(0,0,PANEL_RESIZE_HANDLE_WIDTH,height()); + tqstyle().tqdrawPrimitive( TQStyle::PE_Separator, &p, rect, tqcolorGroup(), TQStyle::Style_Horizontal ); + } + else if (position() == KPanelExtension::Top) { + // Nastiness to both vertically flip the PE_Separator + // and make sure it pops out of, not sinks into, the screen + TQPixmap inv_pm(width(),PANEL_RESIZE_HANDLE_WIDTH); + TQPainter myp(TQT_TQPAINTDEVICE(&inv_pm)); + rect = TQRect(0,0,width(),PANEL_RESIZE_HANDLE_WIDTH); + TQColorGroup darkcg = tqcolorGroup(); + darkcg.setColor(TQColorGroup::Light, tqcolorGroup().dark()); + tqstyle().tqdrawPrimitive( TQStyle::PE_Separator, &myp, rect, darkcg, TQStyle::Style_Default ); + p.drawPixmap(0,height()-2,inv_pm); + } + else { + rect = TQRect(0,0,width(),PANEL_RESIZE_HANDLE_WIDTH); + tqstyle().tqdrawPrimitive( TQStyle::PE_Separator, &p, rect, tqcolorGroup(), TQStyle::Style_Default ); + } + } } void ExtensionContainer::leaveEvent(TQEvent*) @@ -1469,7 +1538,7 @@ void ExtensionContainer::arrange(KPanelExtension::Position p, { m_settings.setPosition(p); } - else if (!needsBorder()) + else if (!needsBorder() && !KickerSettings::useResizeHandle()) { // this ensures that the layout gets rejigged // even if position doesn't change @@ -1653,6 +1722,10 @@ void ExtensionContainer::resetLayout() { m_extension->setFixedHeight(height() - 1); } + else if (KickerSettings::useResizeHandle()) + { + m_extension->setFixedHeight(height() - (PANEL_RESIZE_HANDLE_WIDTH + PANEL_BOTTOM_SPACING_W_RESIZE_HANDLE)); + } else { m_extension->setFixedHeight(height()); @@ -1679,6 +1752,10 @@ void ExtensionContainer::resetLayout() { m_extension->setFixedWidth(width() - 1); } + else if (KickerSettings::useResizeHandle()) + { + m_extension->setFixedWidth(width() - (PANEL_RESIZE_HANDLE_WIDTH + PANEL_BOTTOM_SPACING_W_RESIZE_HANDLE)); + } else { m_extension->setFixedWidth(width()); @@ -1690,7 +1767,7 @@ void ExtensionContainer::resetLayout() bool ExtensionContainer::needsBorder() const { - return !KickerSettings::transparent(); + return !KickerSettings::transparent() && !KickerSettings::useResizeHandle(); //&& !KickerSettings::useBackgroundTheme(); } diff --git a/kicker/kicker/core/container_extension.h b/kicker/kicker/core/container_extension.h index 735aa2c85..3c7894db6 100644 --- a/kicker/kicker/core/container_extension.h +++ b/kicker/kicker/core/container_extension.h @@ -190,7 +190,8 @@ private: // Widgets HideButton *_ltHB; // Left Hide Button HideButton *_rbHB; // Right Hide Button - TQGridLayout *_layout; + TQGridLayout *_layout; + TQWidget *_resizeHandle; KPanelExtension *m_extension; int m_maintainFocus; diff --git a/kicker/kicker/core/containerarea.cpp b/kicker/kicker/core/containerarea.cpp index 412eeec1e..7b2b98b7b 100644 --- a/kicker/kicker/core/containerarea.cpp +++ b/kicker/kicker/core/containerarea.cpp @@ -1513,6 +1513,24 @@ void ContainerArea::setBackground() TQTimer::singleShot(0, this, TQT_SLOT(updateContainersBackground())); } } +// else { // RAJA +// TQRect rect; +// TQImage bgImage; +// TQPixmap bgPixmap(size().width(), size().height()); +// bgPixmap.fill(tqcolorGroup().background()); +// TQPainter p( TQT_TQPAINTDEVICE(&bgPixmap) ); +// +// // FIXME This should change the rectangle based on the container's location on the screen (top, bottom, etc.) +// rect = TQRect(0,0,size().width(),2); +// tqstyle().tqdrawPrimitive( TQStyle::PE_DockWindowSeparator, &p, rect, tqcolorGroup(), TQStyle::Style_Default ); +// +// printf("[RAJA DEBUG 100.0] Hi there!\n\r"); fflush(stdout); +// p.fillRect(0,0,100,100,TQColor(0,0,0)); +// +// bgImage = bgPixmap; +// setPaletteBackgroundPixmap(TQPixmap(bgImage)); +// TQTimer::singleShot(0, this, TQT_SLOT(updateContainersBackground())); +// } _bgSet = true; } |