summaryrefslogtreecommitdiff
path: root/src/bookmarks.cpp
blob: a2ebf08ae70c2d2542848a417e719b1a1fa11b75 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
/* ============================================================
 *
 * This file is a part of the rekonq project
 *
 * Copyright (C) 2008 by Andrea Diamantini <adjam7 at gmail dot com>
 *
 *
 * This program is free software; you can redistribute it
 * and/or modify it under the terms of the GNU General
 * Public License as published by the Free Software Foundation;
 * either version 2, or (at your option) any later version.
 *
 * This program 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 General Public License for more details.
 *
 * ============================================================ */

// Local Includes
#include "bookmarks.h"
#include "bookmarks.moc"

#include "mainwindow.h"
#include "webview.h"

// KDE Includes
#include <KMimeType>
#include <KMenu>

OwnBookMarks::OwnBookMarks(KMainWindow *parent)
    : QObject(parent)
    , KBookmarkOwner()
{
    m_parent = qobject_cast<MainWindow*>( parent );
    connect( this, SIGNAL( openUrl( const KUrl &) ) , parent , SLOT( loadUrl( const KUrl & ) ) );
}


void OwnBookMarks::openBookmark (const KBookmark & b, Qt::MouseButtons mb, Qt::KeyboardModifiers km)
{
    Q_UNUSED(mb);
    Q_UNUSED(km);
    emit openUrl( b.url() );
}

QString OwnBookMarks::currentUrl() const
{
    QUrl url = m_parent->currentTab()->url();
    return url.path();
}


QString OwnBookMarks::currentTitle() const
{
    QString title = m_parent->windowTitle();
    return title.remove( " - rekonq" );
}


// ------------------------------------------------------------------------------------------------------


BookmarksProvider::BookmarksProvider(KMainWindow* parent)
    : m_parent(parent)
    , m_owner(new OwnBookMarks(parent)) 
{
    KUrl bookfile = KUrl( "~/.kde/share/apps/konqueror/bookmarks.xml" );    // share konqueror bookmarks
    m_manager = KBookmarkManager::managerForExternalFile( bookfile.path() );
    m_ac = new KActionCollection( this );
}


void BookmarksProvider::provideBmToolbar(KToolBar* toolbar)
{
    toolbar->setToolButtonStyle( Qt::ToolButtonTextBesideIcon );
    KBookmarkGroup toolbarGroup = m_manager->toolbar();
    KBookmark bm = toolbarGroup.first();
    while(!bm.isNull())
    {
        if(bm.isGroup())
        {
            // do nothing!
        }
        else
        {
            if(bm.isSeparator())
            {
                toolbar->addSeparator();
            }
            else
            {
                KAction *a = new KBookmarkAction(bm, m_owner, m_ac);
                toolbar->addAction(a);
            }
        }
        // go ahead!
        bm = toolbarGroup.next(bm);
    }
}


KMenu *BookmarksProvider::bookmarksMenu()
{
    KMenu *bmMenu = new KMenu(m_parent);
    new KBookmarkMenu( m_manager, m_owner, bmMenu, m_ac );
    return bmMenu;
}