implementation for top bar
[kate:kate.git] / kate / app / katecontainer.cpp
1 /* This file is part of the KDE project
2    Copyright (C) 2008 Joseph Wenninger <jowenn@kde.org>
3    Copyright (C) 2010 Dominik Haumann <dhaumann kde org>
4
5    In addition to the following license there is an exception, that the KDE e.V.
6    may decide on other forms of relicensing.
7
8    This library is free software; you can redistribute it and/or
9    modify it under the terms of the GNU Library General Public
10    License as published by the Free Software Foundation; either
11    version 2 of the License, or (at your option) any later version.
12
13    This library is distributed in the hope that it will be useful,
14    but WITHOUT ANY WARRANTY; without even the implied warranty of
15    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
16    Library General Public License for more details.
17
18    You should have received a copy of the GNU Library General Public License
19    along with this library; see the file COPYING.LIB.  If not, write to
20    the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
21    Boston, MA 02110-1301, USA.
22 */
23
24 #include "katecontainer.h"
25 #include "kateapp.h"
26 #include "katemainwindow.h"
27 #include "kateviewmanager.h"
28
29 #include <kdebug.h>
30
31 KateContainer::KateContainer(KateApp* parent)
32   : QObject(parent)
33   , KTextEditor::ViewBarContainer()
34   , KTextEditor::MdiContainer()
35   , m_app(parent)
36 {
37 }
38
39 KateContainer::~KateContainer() {
40 }
41
42 //BEGIN KTextEditor::ViewBarContainer
43 QWidget* KateContainer::getViewBarParent(KTextEditor::View *view,KTextEditor::ViewBarContainer::Position position) {
44   if (position==KTextEditor::ViewBarContainer::BottomBar) {
45     KateMainWindow* mainWindow=qobject_cast<KateMainWindow*>(view->window());
46     if (!mainWindow) {
47       kDebug()<<"returning hardcoded 0, views window is not a KateMainWindow";
48       return 0;
49     }
50     //Toplevel is a KateMainWindow
51     kDebug()<<"window is a KateMainWindow";
52     return mainWindow->bottomViewBarContainer();
53   } else if (position==KTextEditor::ViewBarContainer::TopBar) {
54     KateMainWindow* mainWindow=qobject_cast<KateMainWindow*>(view->window());
55     if (!mainWindow) {
56       kDebug()<<"returning hardcoded 0, views window is not a KateMainWindow";
57       return 0;
58     }
59     //Toplevel is a KateMainWindow
60     kDebug()<<"window is a KateMainWindow";
61     return mainWindow->topViewBarContainer();
62   }
63   return 0;
64 }
65
66 void KateContainer::addViewBarToLayout(KTextEditor::View *view,QWidget *bar, KTextEditor::ViewBarContainer::Position position) {
67   KateMainWindow* mainWindow=qobject_cast<KateMainWindow*>(view->window());
68   if (!mainWindow) {
69     kDebug()<<"main window is not a katemainwindow";
70     return;
71   }
72
73   if (position==KTextEditor::ViewBarContainer::BottomBar) {
74     mainWindow->addToBottomViewBarContainer(view,bar);
75   } else   if (position==KTextEditor::ViewBarContainer::TopBar) {
76     mainWindow->addToTopViewBarContainer(view,bar);
77   }
78     
79 }
80
81 void KateContainer::showViewBarForView(KTextEditor::View *view, KTextEditor::ViewBarContainer::Position position) {
82   KateMainWindow* mainWindow=qobject_cast<KateMainWindow*>(view->window());
83     if (!mainWindow) {
84       kDebug()<<"main window is not a katemainwindow";
85       return;
86   }
87   
88   if (position==KTextEditor::ViewBarContainer::BottomBar) {
89     mainWindow->showBottomViewBarForView(view);
90   } else if (position==KTextEditor::ViewBarContainer::TopBar) {
91     mainWindow->showTopViewBarForView(view);
92   }
93 }
94
95 void KateContainer::hideViewBarForView(KTextEditor::View *view, KTextEditor::ViewBarContainer::Position position) {
96   KateMainWindow* mainWindow=qobject_cast<KateMainWindow*>(view->window());
97   if (!mainWindow) {
98     kDebug()<<"main window is not a katemainwindow";
99     return;
100   }
101
102   if (position==KTextEditor::ViewBarContainer::BottomBar) {
103     mainWindow->hideBottomViewBarForView(view);      
104   } else if (position==KTextEditor::ViewBarContainer::TopBar) {    
105     mainWindow->hideTopViewBarForView(view);      
106   }
107 }
108
109 void KateContainer::deleteViewBarForView(KTextEditor::View *view, KTextEditor::ViewBarContainer::Position position) {
110   KateMainWindow* mainWindow=qobject_cast<KateMainWindow*>(view->window());
111   if (!mainWindow) {
112     kDebug()<<"main window is not a katemainwindow";
113     return;
114   }
115   
116   if (position==KTextEditor::ViewBarContainer::BottomBar) {      
117     mainWindow->deleteBottomViewBarForView(view);
118   } else if (position==KTextEditor::ViewBarContainer::TopBar) {      
119     mainWindow->deleteTopViewBarForView(view);
120   }
121 }
122 //END KTextEditor::ViewBarContainer
123
124
125
126 //BEGIN KTextEditor::MdiContainer
127 void KateContainer::setActiveView(KTextEditor::View *view)
128 {
129   Q_UNUSED(view)
130   // NOTE: not implemented
131 }
132
133 KTextEditor::View *KateContainer::activeView()
134 {
135   return KateApp::self()->activeMainWindow()->viewManager()->activeView();
136 }
137
138 KTextEditor::Document *KateContainer::createDocument()
139 {
140   // NOTE: not implemented
141   kWarning() << "WARNING: interface call not implemented";
142   return 0;
143 }
144
145 bool KateContainer::closeDocument(KTextEditor::Document *doc)
146 {
147   Q_UNUSED(doc)
148   // NOTE: not implemented
149   kWarning() << "WARNING: interface call not implemented";
150   return false;
151 }
152
153 KTextEditor::View *KateContainer::createView(KTextEditor::Document *doc)
154 {
155   Q_UNUSED(doc)
156   // NOTE: not implemented
157   kWarning() << "WARNING: interface call not implemented";
158   return 0;
159 }
160
161 bool KateContainer::closeView(KTextEditor::View *view)
162 {
163   Q_UNUSED(view)
164   // NOTE: not implemented
165   kWarning() << "WARNING: interface call not implemented";
166   return false;
167 }
168 //END KTextEditor::MdiContainer
169
170
171 #include "katecontainer.moc"
172 // kate: space-indent on; indent-width 2; replace-tabs on;