From 0576f6b1542b80963afa20227c7fe53e53f111e8 Mon Sep 17 00:00:00 2001 From: Andrea Diamantini Date: Fri, 14 May 2010 19:56:26 +0200 Subject: This commit reintroduces the QStackedWidget class for urlbars and let us resize them as needed for themes different from oxygen. This anyway seems working better with the upcoming Qt 4.7 --- src/urlbar/stackedurlbar.cpp | 74 ++++++++++++++++++++++++++++++++++++++++++++ src/urlbar/stackedurlbar.h | 56 +++++++++++++++++++++++++++++++++ src/urlbar/urlbar.cpp | 11 +++---- 3 files changed, 134 insertions(+), 7 deletions(-) create mode 100644 src/urlbar/stackedurlbar.cpp create mode 100644 src/urlbar/stackedurlbar.h (limited to 'src/urlbar') diff --git a/src/urlbar/stackedurlbar.cpp b/src/urlbar/stackedurlbar.cpp new file mode 100644 index 00000000..1882d98c --- /dev/null +++ b/src/urlbar/stackedurlbar.cpp @@ -0,0 +1,74 @@ +/* ============================================================ +* +* This file is a part of the rekonq project +* +* Copyright (C) 2010 by Andrea Diamantini +* +* +* 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) version 3 or any later version +* accepted by the membership of KDE e.V. (or its successor approved +* by the membership of KDE e.V.), which shall act as a proxy +* defined in Section 14 of version 3 of the license. +* +* 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. If not, see . +* +* ============================================================ */ + + +// Self Includes +#include "stackedurlbar.h" +#include "stackedurlbar.moc" + +// Local Includes +#include "application.h" +#include "urlbar.h" + + +StackedUrlBar::StackedUrlBar(QWidget *parent) + : QStackedWidget(parent) +{ + // cosmetic + setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); + setMinimumWidth(200); + setMinimumHeight(26); // FIXME in Qt 4.7 we can probably move using MinimumWidth 20 +} + + +StackedUrlBar::~StackedUrlBar() +{ +} + + +UrlBar *StackedUrlBar::currentUrlBar() +{ + return urlBar(currentIndex()); +} + + +UrlBar *StackedUrlBar::urlBar(int index) +{ + UrlBar *urlBar = qobject_cast(QStackedWidget::widget(index)); + if (!urlBar) + { + kWarning() << "URL bar with index" << index << "not found. Returning NULL. line:" << __LINE__; + } + + return urlBar; +} + + +void StackedUrlBar::moveBar(int from, int to) +{ + QWidget *fromBar = widget(from); + removeWidget(fromBar); + insertWidget(to, fromBar); +} diff --git a/src/urlbar/stackedurlbar.h b/src/urlbar/stackedurlbar.h new file mode 100644 index 00000000..d2c76c8a --- /dev/null +++ b/src/urlbar/stackedurlbar.h @@ -0,0 +1,56 @@ +/* ============================================================ +* +* This file is a part of the rekonq project +* +* Copyright (C) 2010 by Andrea Diamantini +* +* +* 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) version 3 or any later version +* accepted by the membership of KDE e.V. (or its successor approved +* by the membership of KDE e.V.), which shall act as a proxy +* defined in Section 14 of version 3 of the license. +* +* 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. If not, see . +* +* ============================================================ */ + + +#ifndef STACKED_URLBAR_H +#define STACKED_URLBAR_H + + +// Rekonq Includes +#include "rekonq_defines.h" + +// Qt Includes +#include + +// Forward Declarations +class UrlBar; + + +class REKONQ_TESTS_EXPORT StackedUrlBar : public QStackedWidget +{ + Q_OBJECT + +public: + StackedUrlBar(QWidget *parent = 0); + ~StackedUrlBar(); + + UrlBar *currentUrlBar(); + UrlBar *urlBar(int index); + +private slots: + void moveBar(int, int); +}; + +#endif // STACKED_URLBAR_H diff --git a/src/urlbar/urlbar.cpp b/src/urlbar/urlbar.cpp index f11cfdeb..fb98076a 100644 --- a/src/urlbar/urlbar.cpp +++ b/src/urlbar/urlbar.cpp @@ -61,6 +61,7 @@ IconButton::IconButton(QWidget *parent) setCursor(Qt::ArrowCursor); } + void IconButton::mouseReleaseEvent(QMouseEvent* event) { emit clicked(event->globalPos()); @@ -80,11 +81,6 @@ UrlBar::UrlBar(QWidget *parent) // initial style setStyleSheet(QString("UrlBar { padding: 0 0 0 %1px;} ").arg(_icon->sizeHint().width())); - // cosmetic - setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); - setMinimumWidth(200); - setMinimumHeight(26); - // doesn't show the clear button setClearButtonShown(false); @@ -363,7 +359,8 @@ IconButton *UrlBar::addRightIcon(UrlBar::icon ic) _rightIconsList << rightIcon; int iconsCount = _rightIconsList.count(); - rightIcon->move(width() - 23*iconsCount, 6); + int iconHeight = (height() - 18) / 2; + rightIcon->move(width() - 23*iconsCount, iconHeight); rightIcon->show(); return rightIcon; @@ -379,7 +376,7 @@ void UrlBar::clearRightIcons() void UrlBar::resizeEvent(QResizeEvent *event) { - int newHeight = (height() - 19) / 2; + int newHeight = (height() - 18) / 2; _icon->move(4, newHeight); int iconsCount = _rightIconsList.count(); -- cgit v1.2.1