mirror of
https://github.com/KDE/konsole.git
synced 2026-05-02 03:36:34 -04:00
176 lines
4.5 KiB
C++
176 lines
4.5 KiB
C++
/* This file was part of the KDE libraries
|
|
|
|
Copyright 2002 Carsten Pfeiffer <pfeiffer@kde.org>
|
|
Copyright 2007-2008 Robert Knight <robertknight@gmail.com>
|
|
|
|
library is free software; you can redistribute it and/or
|
|
modify it under the terms of the GNU Library General Public
|
|
License as published by the Free Software Foundation, version 2
|
|
or ( at your option ), any later version.
|
|
|
|
This library is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
Library General Public License for more details.
|
|
|
|
You should have received a copy of the GNU Library General Public License
|
|
along with this library; see the file COPYING.LIB. If not, write to
|
|
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
|
Boston, MA 02110-1301, USA.
|
|
*/
|
|
|
|
// Born as kdelibs/kio/kfile/kfilebookmarkhandler.characterpp
|
|
|
|
// Own
|
|
#include "BookmarkHandler.h"
|
|
|
|
// Qt
|
|
#include <QtCore/QFile>
|
|
#include <QtCore/QFileInfo>
|
|
|
|
// KDE
|
|
#include <kshell.h>
|
|
|
|
#include <KBookmarkMenu>
|
|
#include <KDebug>
|
|
#include <KMenu>
|
|
#include <KStandardDirs>
|
|
|
|
// Konsole
|
|
#include "ViewProperties.h"
|
|
|
|
using namespace Konsole;
|
|
|
|
BookmarkHandler::BookmarkHandler( KActionCollection* collection,
|
|
KMenu* menu,
|
|
bool toplevel ,
|
|
QObject* parent )
|
|
: QObject( parent ),
|
|
KBookmarkOwner(),
|
|
m_menu(menu),
|
|
m_toplevel(toplevel),
|
|
m_activeView(0)
|
|
{
|
|
setObjectName( QLatin1String( "BookmarkHandler" ) );
|
|
|
|
m_file = KStandardDirs::locate( "data", "konsole/bookmarks.xml" );
|
|
if ( m_file.isEmpty() )
|
|
m_file = KStandardDirs::locateLocal( "data", "konsole/bookmarks.xml" );
|
|
|
|
KBookmarkManager *manager = KBookmarkManager::managerForFile( m_file, "konsole" );
|
|
|
|
manager->setUpdate( true );
|
|
|
|
if (toplevel) {
|
|
m_bookmarkMenu = new KBookmarkMenu( manager, this, m_menu,
|
|
collection );
|
|
} else {
|
|
m_bookmarkMenu = new KBookmarkMenu( manager, this, m_menu,
|
|
NULL);
|
|
}
|
|
}
|
|
|
|
BookmarkHandler::~BookmarkHandler()
|
|
{
|
|
delete m_bookmarkMenu;
|
|
}
|
|
|
|
void BookmarkHandler::openBookmark( const KBookmark & bm, Qt::MouseButtons, Qt::KeyboardModifiers )
|
|
{
|
|
emit openUrl( bm.url() );
|
|
}
|
|
void BookmarkHandler::openFolderinTabs( const KBookmarkGroup& group )
|
|
{
|
|
emit openUrls(group.groupUrlList());
|
|
}
|
|
bool BookmarkHandler::enableOption(BookmarkOption option ) const
|
|
{
|
|
if(option == ShowAddBookmark || option == ShowEditBookmark)
|
|
return m_toplevel;
|
|
else
|
|
return KBookmarkOwner::enableOption(option);
|
|
}
|
|
|
|
QString BookmarkHandler::currentUrl() const
|
|
{
|
|
return urlForView(m_activeView);
|
|
}
|
|
|
|
QString BookmarkHandler::urlForView(ViewProperties* view) const
|
|
{
|
|
if ( view )
|
|
{
|
|
return view->url().prettyUrl();
|
|
}
|
|
else
|
|
{
|
|
return QString();
|
|
}
|
|
}
|
|
|
|
QString BookmarkHandler::currentTitle() const
|
|
{
|
|
return titleForView(m_activeView);
|
|
}
|
|
|
|
QString BookmarkHandler::titleForView(ViewProperties* view) const
|
|
{
|
|
const KUrl &u = view ? view->url() : KUrl();
|
|
if (u.isLocalFile())
|
|
{
|
|
QString path = u.path();
|
|
path = KShell::tildeExpand(path);
|
|
|
|
path = QFileInfo(path).baseName();
|
|
|
|
return path;
|
|
}
|
|
else if ( u.hasHost() )
|
|
{
|
|
if ( u.hasUser() )
|
|
return i18nc("@item:inmenu The user's name and host they are connected to via ssh", "%1 on %2",u.user(),u.host());
|
|
else
|
|
return i18nc("@item:inmenu The host the user is connected to via ssh", "%1",u.host());
|
|
}
|
|
return u.prettyUrl();
|
|
}
|
|
|
|
bool BookmarkHandler::supportsTabs() const
|
|
{
|
|
return true;
|
|
}
|
|
|
|
QList<QPair<QString,QString> > BookmarkHandler::currentBookmarkList() const
|
|
{
|
|
QList<QPair<QString,QString> > list;
|
|
|
|
QListIterator<ViewProperties*> iter( m_views );
|
|
|
|
while ( iter.hasNext() )
|
|
{
|
|
ViewProperties* next = iter.next();
|
|
list << QPair<QString,QString>(titleForView(next) , urlForView(next));
|
|
}
|
|
|
|
return list;
|
|
}
|
|
|
|
void BookmarkHandler::setViews(const QList<ViewProperties*>& views)
|
|
{
|
|
m_views = views;
|
|
}
|
|
QList<ViewProperties*> BookmarkHandler::views() const
|
|
{
|
|
return m_views;
|
|
}
|
|
void BookmarkHandler::setActiveView( ViewProperties* view )
|
|
{
|
|
m_activeView = view;
|
|
}
|
|
ViewProperties* BookmarkHandler::activeView() const
|
|
{
|
|
return m_activeView;
|
|
}
|
|
|
|
#include "BookmarkHandler.moc"
|