File indexing completed on 2024-05-19 12:54:49

0001 /* This file is part of the KDE project
0002    Copyright (C) 2016 Jarosław Staniek <staniek@kde.org>
0003 
0004    This library is free software; you can redistribute it and/or
0005    modify it under the terms of the GNU Library General Public
0006    License as published by the Free Software Foundation; either
0007    version 2 of the License, or (at your option) any later version.
0008 
0009    This library is distributed in the hope that it will be useful,
0010    but WITHOUT ANY WARRANTY; without even the implied warranty of
0011    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
0012    Library General Public License for more details.
0013 
0014    You should have received a copy of the GNU Library General Public License
0015    along with this library; see the file COPYING.LIB.  If not, write to
0016    the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
0017  * Boston, MA 02110-1301, USA.
0018 */
0019 
0020 #ifndef KEXIGLOBALVIEWMODESELECTOR_H
0021 #define KEXIGLOBALVIEWMODESELECTOR_H
0022 
0023 #include <KexiMainWindowIface.h>
0024 #include <KexiListView.h>
0025 
0026 #include <QScopedPointer>
0027 
0028 //! A global view mode selector widget
0029 class KexiGlobalViewModeSelector : public KexiListView
0030 {
0031     Q_OBJECT
0032 public:
0033     explicit KexiGlobalViewModeSelector(QWidget *parent = 0);
0034     virtual ~KexiGlobalViewModeSelector();
0035 
0036     //! @return current mode
0037     Kexi::GlobalViewMode currentMode() const;
0038 
0039     //! Sets current mode
0040     void setCurrentMode(Kexi::GlobalViewMode mode);
0041 
0042     //! Set arrow color, it depends on color of sibling area so needs to be controlled
0043     void setArrowColor(const QColor &color);
0044 
0045     //! @return keyboard modifiers (CTRL, SHIFT, etc.) pressed while item was recently clicked.
0046     //! Use with currentModeChanged();
0047     //! Useful for handling "Edit text" mode as CTRL+Design.
0048     Qt::KeyboardModifiers keyboardModifiers() const;
0049 
0050 Q_SIGNALS:
0051     void currentModeChanged(Kexi::GlobalViewMode previousMode);
0052 
0053 protected Q_SLOTS:
0054     void currentChanged(const QModelIndex &current, const QModelIndex &previous) override;
0055 
0056 protected:
0057     void paintEvent(QPaintEvent *event) override;
0058 
0059     //! Reimplemented to handle keyboardModifiers() and disable modifiers for selections
0060     void mousePressEvent(QMouseEvent *event) override;
0061 
0062     //! Emptied to disable double clicks
0063     void mouseDoubleClickEvent(QMouseEvent *event) override;
0064 
0065     //! Emptied to disable dragging over items that changes selection
0066     void mouseMoveEvent(QMouseEvent *event) override;
0067 
0068     class Private;
0069     const QScopedPointer<Private> d;
0070 };
0071 
0072 #endif // KEXIGLOBALVIEWMODESELECTOR_H