ApplicationDocker.h
Go to the documentation of this file.
1 /* Copyright (C) 2008 National Institute For Space Research (INPE) - Brazil.
2 
3  This file is part of the TerraLib - a Framework for building GIS enabled applications.
4 
5  TerraLib is free software: you can redistribute it and/or modify
6  it under the terms of the GNU Lesser General Public License as published by
7  the Free Software Foundation, either version 3 of the License,
8  or (at your option) any later version.
9 
10  TerraLib is distributed in the hope that it will be useful,
11  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  GNU Lesser General Public License for more details.
14 
15  You should have received a copy of the GNU Lesser General Public License
16  along with TerraLib. See COPYING. If not, write to
17  TerraLib Team at <terralib-team@terralib.org>.
18  */
19 
20  /*!
21  \file terralib/qt/af/ApplicationDocker.h
22 
23  \brief The base API for docker controllers of TerraLib applications.
24  */
25 
26 #ifndef __TERRALIB_QT_AF_INTERNAL_APPLICATIONDOCKER_H
27 #define __TERRALIB_QT_AF_INTERNAL_APPLICATIONDOCKER_H
28 
29  // Terralib
30 #include "Config.h"
31 
32 // STL
33 #include <map>
34 
35 
36 // Qt
37 #include <QMainWindow>
38 
39 // Forward Declaration Qt
40 class QAction;
41 class QDockWidget;
42 class QToolBar;
43 
44 namespace te
45 {
46  namespace qt
47  {
48  namespace af
49  {
51  {
52  QDockWidget* m_dockWidget;
53  QIcon m_icon;
54  QString m_dockName;
56 
58  {
59  m_dockWidget = nullptr;
60  m_isCloseable = false;
61  }
62  };
63 
64  /*!
65  \class ApplicationDocker
66 
67  \brief The base API for docker controllers of TerraLib applications.
68 
69  \ingroup af
70  */
71  class TEQTAFEXPORT ApplicationDocker : public QMainWindow
72  {
73  Q_OBJECT
74 
75  public:
76 
77  /*!
78  \brief Constructor.
79 
80  \param parent The parent object.
81  */
82  ApplicationDocker(QWidget* parent, Qt::ToolBarArea area);
83 
84  /*!
85  \brief Destructor.
86  */
88 
89  public:
90 
91  bool eventFilter(QObject* watched, QEvent* e);
92 
93  QSize sizeHint() const;
94 
95  QSize minimumSizeHint() const;
96 
97  bool hasActiveDock();
98 
99  bool hasDockWidget(QDockWidget* dock);
100 
101  void raiseDockWidget(QDockWidget* dock);
102 
103  void addDock(const ApplicationDockerInfo& dockInfo, Qt::DockWidgetArea area);
104 
106 
107  void removeDock(QDockWidget* dock);
108 
109  bool isCloseable();
110 
112 
113  protected:
114 
116 
118 
119  void resizeEvent(QResizeEvent *event);
120 
121  protected slots:
122 
124 
125  void onCloseDock();
126 
127  signals:
128 
129  void dockSelected(QString dockName);
130 
132 
133  protected:
134 
135  QToolBar* m_sideBar;
136 
137  std::map<QAction*, ApplicationDockerInfo> m_dockInfoActionMap;
138 
139  QAction* m_currentAction;
140 
141  QSize m_sizeHint;
142 
144  };
145  } // end namespace af
146  } // end namespace qt
147 } // end namespace te
148 
149 #endif // __TERRALIB_QT_AF_INTERNAL_APPLICATIONDOCKER_H
te::qt::af::ApplicationDockerInfo::ApplicationDockerInfo
ApplicationDockerInfo()
Definition: ApplicationDocker.h:57
te::qt::af::ApplicationDocker::computeGlobalMinSize
int computeGlobalMinSize()
te::qt::af::ApplicationDocker::getMinimumWidth
int getMinimumWidth()
te
TerraLib.
Definition: AddressGeocodingOp.h:52
te::qt::af::ApplicationDocker::clearDockSelected
void clearDockSelected()
te::qt::af::ApplicationDocker::onCloseDock
void onCloseDock()
te::qt::af::ApplicationDocker::resizeEvent
void resizeEvent(QResizeEvent *event)
te::qt::af::ApplicationDocker::hasActiveDock
bool hasActiveDock()
te::qt::af::ApplicationDocker::raiseDockWidget
void raiseDockWidget(QDockWidget *dock)
te::qt::af::ApplicationDocker::sizeHint
QSize sizeHint() const
te::qt::af::ApplicationDocker
The base API for docker controllers of TerraLib applications.
Definition: ApplicationDocker.h:72
TEQTAFEXPORT
#define TEQTAFEXPORT
You can use this macro in order to export/import classes and functions from this module.
Definition: Config.h:71
te::qt::af::ApplicationDocker::minimumSizeHint
QSize minimumSizeHint() const
te::qt::af::ApplicationDocker::onDockActionVisibilityChanged
void onDockActionVisibilityChanged(bool state)
te::qt::af::ApplicationDocker::m_sizeHint
QSize m_sizeHint
Definition: ApplicationDocker.h:141
te::qt::af::ApplicationDocker::takeDock
void takeDock(ApplicationDockerInfo &dockInfo)
te::qt::af::ApplicationDocker::ApplicationDocker
ApplicationDocker(QWidget *parent, Qt::ToolBarArea area)
Constructor.
te::qt::af::ApplicationDocker::hasDockWidget
bool hasDockWidget(QDockWidget *dock)
te::qt::af::ApplicationDockerInfo::m_dockWidget
QDockWidget * m_dockWidget
Definition: ApplicationDocker.h:52
te::qt::af::ApplicationDocker::computeMinimumSize
void computeMinimumSize()
te::qt::af::ApplicationDockerInfo::m_icon
QIcon m_icon
Definition: ApplicationDocker.h:53
te::qt::af::ApplicationDocker::m_dockInfoActionMap
std::map< QAction *, ApplicationDockerInfo > m_dockInfoActionMap
Definition: ApplicationDocker.h:137
slots
#define slots
Definition: VirtualMachine.h:48
te::qt::af::ApplicationDocker::~ApplicationDocker
~ApplicationDocker()
Destructor.
te::qt::af::ApplicationDocker::m_minimumWidth
int m_minimumWidth
Definition: ApplicationDocker.h:143
te::qt::af::ApplicationDocker::m_sideBar
QToolBar * m_sideBar
Definition: ApplicationDocker.h:135
te::qt::af::ApplicationDockerInfo::m_isCloseable
bool m_isCloseable
Definition: ApplicationDocker.h:55
te::qt::af::ApplicationDocker::addDock
void addDock(const ApplicationDockerInfo &dockInfo, Qt::DockWidgetArea area)
te::qt::af::ApplicationDocker::removeDock
void removeDock(QDockWidget *dock)
te::qt::af::ApplicationDocker::dockSelected
void dockSelected(QString dockName)
te::qt::af::ApplicationDocker::isCloseable
bool isCloseable()
te::qt::af::ApplicationDocker::eventFilter
bool eventFilter(QObject *watched, QEvent *e)
Config.h
Proxy configuration file for TerraView (see terraview_config.h).
te::qt::af::ApplicationDockerInfo
Definition: ApplicationDocker.h:51
te::qt::af::ApplicationDocker::m_currentAction
QAction * m_currentAction
Definition: ApplicationDocker.h:139
te::qt::af::ApplicationDockerInfo::m_dockName
QString m_dockName
Definition: ApplicationDocker.h:54