1
/***************************************************************************
4
begin : Sun July 20 16:00:00 CEST 2003
5
copyright : (C) 2003 Joseph Wenninger
7
***************************************************************************/
9
/***************************************************************************
11
* This program is free software; you can redistribute it and/or modify *
12
* it under the terms of the GNU General Public License as published by *
13
* the Free Software Foundation; either version 2 of the License, or *
14
* (at your option) any later version. *
16
***************************************************************************/
17
#include "sidebarextension.h"
18
#include "sidebarextension.moc"
20
#include <kmessagebox.h>
23
#include <kparts/part.h>
24
#include <kparts/componentfactory.h>
26
#include <QMouseEvent>
28
#include <QHBoxLayout>
30
//#include <konq_historymgr.h>
38
KDE_EXPORT KPanelExtension *init( QWidget *parent, const QString& configFile )
40
KGlobal::locale()->insertCatalog("kickersidebarextension");
41
KGlobal::locale()->insertCatalog("konqueror");
42
return new SidebarExtension(configFile, 0, parent);
46
SidebarExtension::SidebarExtension(const QString& configFile,
49
: KPanelExtension(configFile, actions, parent),
53
// DF: what was this for?
54
//new KonqHistoryManager(0);
55
m_layout=new QHBoxLayout(this);
57
m_sbWrapper=new KVBox(this);
60
KParts::ReadOnlyPart *p=KParts::ComponentFactory::createPartInstanceFromLibrary<KParts::ReadOnlyPart>(
66
KParts::BrowserExtension *be=KParts::BrowserExtension::childObject(p);
68
connect(be,SIGNAL(openUrlRequest( const KUrl &, const KParts::OpenUrlArguments &, const KParts::BrowserArguments & )),
69
this,SLOT(openUrlRequest( const KUrl &, const KParts::OpenUrlArguments &, const KParts::BrowserArguments & )));
70
connect(be,SIGNAL(createNewWindow( const KUrl &, const KParts::OpenUrlArguments &, const KParts::BrowserArguments & )),
71
this,SLOT(openUrlRequest( const KUrl &, const KParts::OpenUrlArguments &, const KParts::BrowserArguments & )));
75
m_resizeHandle=new QFrame(this);
76
m_resizeHandle->setFrameShape(QFrame::Panel);
77
m_resizeHandle->setFrameShadow(QFrame::Raised);
78
m_resizeHandle->setFixedWidth(6);
79
m_resizeHandle->setCursor(QCursor(Qt::SizeHorCursor));
80
connect(p->widget(),SIGNAL(panelHasBeenExpanded(bool)),this,SLOT(needLayoutUpdate(bool)));
81
needLayoutUpdate(false);
82
m_resizeHandle->installEventFilter(this);
83
m_resizeHandle->setMouseTracking(true);
84
// l->add(p->widget());
85
// p->widget()->show();
90
void SidebarExtension::needLayoutUpdate(bool exp) {
91
setReserveStrut(!exp); // only reserve a strut when we are collapsed
93
m_currentWidth=m_expandedSize;
94
m_resizeHandle->show();
98
m_resizeHandle->hide();
100
topLevelWidget()->setFixedWidth(m_currentWidth);
104
void SidebarExtension::openUrlRequest( const KUrl &url, const KParts::OpenUrlArguments &, const KParts::BrowserArguments & ) {
106
KRun::runCommand("kfmclient openURL \""+url.prettyUrl()+"\"", "kfmclient", "konqueror", topLevelWidget());
110
SidebarExtension::~SidebarExtension()
112
KGlobal::locale()->removeCatalog("kickersidebarextension");
113
KGlobal::locale()->removeCatalog("konqueror");
116
bool SidebarExtension::eventFilter( QObject *, QEvent *e ) {
117
if (e->type()==QEvent::MouseButtonPress) {
119
m_x=((QMouseEvent*)e)->globalX();
121
} else if (e->type()==QEvent::MouseButtonRelease) {
123
m_expandedSize=topLevelWidget()->width();
124
needLayoutUpdate(true);
126
} else if (e->type()==QEvent::MouseMove) {
128
Plasma::Position p = position();
129
if (p==Plasma::Left) {
130
int diff=((QMouseEvent*)e)->globalX()-m_x;
132
topLevelWidget()->setFixedWidth(topLevelWidget()->width()+diff);
133
m_x=((QMouseEvent*)e)->globalX();
135
} else if (p==Plasma::Right) {
136
int diff=((QMouseEvent*)e)->globalX()-m_x;
138
topLevelWidget()->setFixedWidth(topLevelWidget()->width()-diff);
139
topLevelWidget()->move(topLevelWidget()->x()+diff,topLevelWidget()->y());
140
m_x=((QMouseEvent*)e)->globalX();
149
Plasma::Position SidebarExtension::preferedPosition() const {
150
kDebug()<<"SidebarExtension::preferedPosition()***************";
154
QSize SidebarExtension::sizeHint(Plasma::Position, QSize maxSize ) const
156
return QSize(m_currentWidth,maxSize.height());
159
void SidebarExtension::positionChange( Plasma::Position position ) {
160
if (position == Plasma::Right) {
161
m_layout->remove(m_sbWrapper);
162
m_layout->remove(m_resizeHandle);
164
m_layout->addWidget(m_resizeHandle);
165
m_layout->addWidget(m_sbWrapper);
166
} else if (position == Plasma::Left) {
167
m_layout->remove(m_sbWrapper);
168
m_layout->remove(m_resizeHandle);
170
m_layout->addWidget(m_sbWrapper);
171
m_layout->addWidget(m_resizeHandle);
177
void SidebarExtension::about()
181
void SidebarExtension::preferences()