19
19
/** @file sidebar.cpp */
23
23
#include <qsplitter.h>
24
24
#include <qwidgetstack.h>
25
25
#include <qdatastream.h>
27
29
#include <kapplication.h>
28
30
#include <kconfig.h>
29
31
#include <kdeversion.h>
30
32
#include <kmultitabbar.h>
31
33
#include <kiconloader.h>
33
using namespace Digikam;
55
bool minimizedDefault;
35
70
Sidebar::Sidebar(QWidget *parent, Side side, bool minimizedDefault)
36
71
: KMultiTabBar(KMultiTabBar::Vertical, parent, "Sidebar")
41
m_minimizedDefault = minimizedDefault;
74
d->minimizedDefault = minimizedDefault;
45
78
Sidebar::~Sidebar()
50
84
void Sidebar::setSplitter(QSplitter *sp)
55
89
setStyle(KMultiTabBar::KDEV3);
57
91
showActiveTabTexts(true);
58
m_stack = new QWidgetStack(sp);
92
d->stack = new QWidgetStack(sp);
61
95
setPosition(KMultiTabBar::Left);
63
97
setPosition(KMultiTabBar::Right);
71
105
KConfig *config = kapp->config();
72
config->setGroup(QString("%1-%2").arg(name()).arg(m_side));
106
config->setGroup(QString("%1-%2").arg(name()).arg(d->side));
74
108
tab = config->readNumEntry("ActiveTab", 0);
75
minimized = config->readNumEntry("Minimized", m_minimizedDefault);
109
minimized = config->readNumEntry("Minimized", d->minimizedDefault);
80
setTab(m_activeTab, true);
81
m_stack->raiseWidget(m_activeTab);
114
setTab(d->activeTab, true);
115
d->stack->raiseWidget(d->activeTab);
83
emit signalChangedTab(m_stack->visibleWidget());
117
emit signalChangedTab(d->stack->visibleWidget());
91
125
void Sidebar::saveViewState()
93
127
KConfig *config = kapp->config();
94
config->setGroup(QString("%1-%2").arg(name()).arg(m_side));
128
config->setGroup(QString("%1-%2").arg(name()).arg(d->side));
96
config->writeEntry("ActiveTab", m_activeTab);
97
config->writeEntry("Minimized", (int)m_minimized);
130
config->writeEntry("ActiveTab", d->activeTab);
131
config->writeEntry("Minimized", (int)d->minimized);
100
134
void Sidebar::appendTab(QWidget *w, const QPixmap &pic, const QString &title)
102
w->reparent(m_stack, QPoint(0,0));
103
KMultiTabBar::appendTab(pic, m_tabs, title);
104
m_stack->addWidget(w, m_tabs);
136
w->reparent(d->stack, QPoint(0,0));
137
KMultiTabBar::appendTab(pic, d->tabs, title);
138
d->stack->addWidget(w, d->tabs);
106
connect(tab(m_tabs), SIGNAL(clicked(int)),
140
connect(tab(d->tabs), SIGNAL(clicked(int)),
107
141
this, SLOT(clicked(int)));
112
146
void Sidebar::deleteTab(QWidget *w)
114
int tab = m_stack->id(w);
148
int tab = d->stack->id(w);
118
if(tab == m_activeTab)
152
if(tab == d->activeTab)
122
156
//TODO show another widget
125
159
void Sidebar::clicked(int tab)
127
if(tab >= m_tabs || tab < 0)
161
if(tab >= d->tabs || tab < 0)
130
if(tab == m_activeTab)
164
if(tab == d->activeTab)
132
m_stack->isHidden() ? expand() : shrink();
166
d->stack->isHidden() ? expand() : shrink();
137
setTab(m_activeTab, false);
170
if(d->activeTab >= 0)
171
setTab(d->activeTab, false);
140
setTab(m_activeTab, true);
141
m_stack->raiseWidget(m_activeTab);
174
setTab(d->activeTab, true);
175
d->stack->raiseWidget(d->activeTab);
146
emit signalChangedTab(m_stack->visibleWidget());
180
emit signalChangedTab(d->stack->visibleWidget());
150
184
void Sidebar::setActiveTab(QWidget *w)
152
int tab = m_stack->id(w);
186
int tab = d->stack->id(w);
157
setTab(m_activeTab, false);
190
if(d->activeTab >= 0)
191
setTab(d->activeTab, false);
160
setTab(m_activeTab, true);
161
m_stack->raiseWidget(m_activeTab);
194
setTab(d->activeTab, true);
195
d->stack->raiseWidget(d->activeTab);
166
emit signalChangedTab(m_stack->visibleWidget());
200
emit signalChangedTab(d->stack->visibleWidget());
169
203
QWidget* Sidebar::getActiveTab()
171
return m_stack->visibleWidget();
205
return d->stack->visibleWidget();
174
208
void Sidebar::shrink()
178
m_minSize = minimumWidth();
179
m_maxSize = maximumWidth();
212
d->minSize = minimumWidth();
213
d->maxSize = maximumWidth();
183
217
KMultiTabBarTab* tab = tabs()->first();