Commit e9a123d0 authored by Laurent Montel's avatar Laurent Montel 😁
Browse files

This class was never used outside libkdepim

parent aac8f921
Pipeline #23518 passed with stage
in 19 minutes and 44 seconds
cmake_minimum_required(VERSION 3.5)
set(PIM_VERSION "5.14.49")
set(PIM_VERSION "5.14.50")
project(libkdepim VERSION ${PIM_VERSION})
......
......@@ -27,7 +27,6 @@ set(kdepim_widgets_LIB_SRCS
widgets/kdatepickerpopup.cpp
widgets/kcheckcombobox.cpp
widgets/kwidgetlister.cpp
widgets/overlaywidget.cpp
widgets/progressindicatorlabel.cpp
)
......@@ -108,7 +107,6 @@ ecm_generate_headers(libkdepim_Camelcasewidgets_HEADERS
KCheckComboBox
KDatePickerPopup
KWidgetLister
OverlayWidget
ProgressIndicatorLabel
REQUIRED_HEADERS libkdepim_widgets_HEADERS
PREFIX Libkdepim
......
......@@ -50,6 +50,90 @@
using namespace KPIM;
static const int MAX_LABEL_WIDTH = 650;
class KPIM::OverlayWidgetPrivate
{
public:
OverlayWidgetPrivate()
{
}
QWidget *mAlignWidget = nullptr;
};
OverlayWidget::OverlayWidget(QWidget *alignWidget, QWidget *parent)
: QFrame(parent)
, d(new KPIM::OverlayWidgetPrivate)
{
setAlignWidget(alignWidget);
setLayout(new QHBoxLayout(this));
}
OverlayWidget::~OverlayWidget()
{
delete d;
}
QWidget *OverlayWidget::alignWidget() const
{
return d->mAlignWidget;
}
void OverlayWidget::reposition()
{
if (!d->mAlignWidget) {
return;
}
// p is in the alignWidget's coordinates
QPoint p;
// We are always above the alignWidget, right-aligned with it for
// LTR locales, and left-aligned for RTL locales (default value=0).
if (layoutDirection() == Qt::LeftToRight) {
p.setX(d->mAlignWidget->width() - width());
}
p.setY(-height());
// Position in the toplevelwidget's coordinates
QPoint pTopLevel = d->mAlignWidget->mapTo(topLevelWidget(), p);
// Position in the widget's parentWidget coordinates
QPoint pParent = parentWidget()->mapFrom(topLevelWidget(), pTopLevel);
// Move 'this' to that position.
move(pParent);
}
void OverlayWidget::setAlignWidget(QWidget *w)
{
if (w == d->mAlignWidget) {
return;
}
if (d->mAlignWidget) {
d->mAlignWidget->removeEventFilter(this);
}
d->mAlignWidget = w;
if (d->mAlignWidget) {
d->mAlignWidget->installEventFilter(this);
}
reposition();
}
bool OverlayWidget::eventFilter(QObject *o, QEvent *e)
{
if (o == d->mAlignWidget
&& (e->type() == QEvent::Move || e->type() == QEvent::Resize)) {
reposition();
}
return QFrame::eventFilter(o, e);
}
void OverlayWidget::resizeEvent(QResizeEvent *ev)
{
reposition();
QFrame::resizeEvent(ev);
}
TransactionItemView::TransactionItemView(QWidget *parent, const QString &name)
: QScrollArea(parent)
{
......
......@@ -34,7 +34,6 @@
#ifndef KDEPIM_PROGRESSDIALOG_H
#define KDEPIM_PROGRESSDIALOG_H
#include "libkdepim/overlaywidget.h"
#include "kdepim_export.h"
#include "progressmanager.h"
......@@ -51,6 +50,35 @@ namespace KPIM {
class TransactionItem;
class SSLLabel;
/**
* This is a widget that can align itself with another one, without using a layout,
* so that it can actually be on top of other widgets.
* Currently the only supported type of alignment is "right aligned, on top of the other widget".
*
*/
class OverlayWidgetPrivate;
class OverlayWidget : public QFrame
{
Q_OBJECT
public:
OverlayWidget(QWidget *alignWidget, QWidget *parent);
~OverlayWidget() override;
Q_REQUIRED_RESULT QWidget *alignWidget() const;
void setAlignWidget(QWidget *alignWidget);
protected:
void resizeEvent(QResizeEvent *ev) override;
bool eventFilter(QObject *o, QEvent *e) override;
private:
void reposition();
private:
OverlayWidgetPrivate *const d;
};
class TransactionItemView : public QScrollArea
{
Q_OBJECT
......
/** -*- c++ -*-
* overlaywidget.h
*
* Copyright (c) 2004 David Faure <faure@kde.org>
*
* 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; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*
* In addition, as a special exception, the copyright holders give
* permission to link the code of this program with any edition of
* the Qt library by Trolltech AS, Norway (or with modified versions
* of Qt that use the same license as Qt), and distribute linked
* combinations including the two. You must obey the GNU General
* Public License in all respects for all of the code used other than
* Qt. If you modify this file, you may extend this exception to
* your version of the file, but you are not obligated to do so. If
* you do not wish to do so, delete this exception statement from
* your version.
*/
#include "overlaywidget.h"
#include <QHBoxLayout>
#include <QResizeEvent>
#include <QEvent>
using namespace KPIM;
class KPIM::OverlayWidgetPrivate
{
public:
OverlayWidgetPrivate()
{
}
QWidget *mAlignWidget = nullptr;
};
OverlayWidget::OverlayWidget(QWidget *alignWidget, QWidget *parent)
: QFrame(parent)
, d(new KPIM::OverlayWidgetPrivate)
{
setAlignWidget(alignWidget);
setLayout(new QHBoxLayout(this));
}
OverlayWidget::~OverlayWidget()
{
delete d;
}
QWidget *OverlayWidget::alignWidget() const
{
return d->mAlignWidget;
}
void OverlayWidget::reposition()
{
if (!d->mAlignWidget) {
return;
}
// p is in the alignWidget's coordinates
QPoint p;
// We are always above the alignWidget, right-aligned with it for
// LTR locales, and left-aligned for RTL locales (default value=0).
if (layoutDirection() == Qt::LeftToRight) {
p.setX(d->mAlignWidget->width() - width());
}
p.setY(-height());
// Position in the toplevelwidget's coordinates
QPoint pTopLevel = d->mAlignWidget->mapTo(topLevelWidget(), p);
// Position in the widget's parentWidget coordinates
QPoint pParent = parentWidget()->mapFrom(topLevelWidget(), pTopLevel);
// Move 'this' to that position.
move(pParent);
}
void OverlayWidget::setAlignWidget(QWidget *w)
{
if (w == d->mAlignWidget) {
return;
}
if (d->mAlignWidget) {
d->mAlignWidget->removeEventFilter(this);
}
d->mAlignWidget = w;
if (d->mAlignWidget) {
d->mAlignWidget->installEventFilter(this);
}
reposition();
}
bool OverlayWidget::eventFilter(QObject *o, QEvent *e)
{
if (o == d->mAlignWidget
&& (e->type() == QEvent::Move || e->type() == QEvent::Resize)) {
reposition();
}
return QFrame::eventFilter(o, e);
}
void OverlayWidget::resizeEvent(QResizeEvent *ev)
{
reposition();
QFrame::resizeEvent(ev);
}
/* -*- c++ -*-
* overlaywidget.h
*
* Copyright (c) 2004 David Faure <faure@kde.org>
*
* 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; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*
* In addition, as a special exception, the copyright holders give
* permission to link the code of this program with any edition of
* the Qt library by Trolltech AS, Norway (or with modified versions
* of Qt that use the same license as Qt), and distribute linked
* combinations including the two. You must obey the GNU General
* Public License in all respects for all of the code used other than
* Qt. If you modify this file, you may extend this exception to
* your version of the file, but you are not obligated to do so. If
* you do not wish to do so, delete this exception statement from
* your version.
*/
#ifndef KDEPIM_OVERLAYWIDGET_H
#define KDEPIM_OVERLAYWIDGET_H
#include "kdepim_export.h"
#include <QFrame>
class QResizeEvent;
class QEvent;
namespace KPIM {
/**
* This is a widget that can align itself with another one, without using a layout,
* so that it can actually be on top of other widgets.
* Currently the only supported type of alignment is "right aligned, on top of the other widget".
*
*/
class OverlayWidgetPrivate;
class KDEPIM_EXPORT OverlayWidget : public QFrame
{
Q_OBJECT
public:
OverlayWidget(QWidget *alignWidget, QWidget *parent);
~OverlayWidget() override;
Q_REQUIRED_RESULT QWidget *alignWidget() const;
void setAlignWidget(QWidget *alignWidget);
protected:
void resizeEvent(QResizeEvent *ev) override;
bool eventFilter(QObject *o, QEvent *e) override;
private:
void reposition();
private:
OverlayWidgetPrivate *const d;
};
} // namespace
#endif /* OVERLAYWIDGET_H */
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment