• Skip to content
  • Skip to link menu
  • KDE API Reference
  • kdelibs-4.14.38 API Reference
  • KDE Home
  • Contact Us
 

KIO

  • kio
  • bookmarks
konqbookmarkmenu.cc
Go to the documentation of this file.
1/* This file is part of the KDE project
2 Copyright (C) 1998, 1999 Torben Weis <weis@kde.org>
3 Copyright (C) 2006 Daniel Teske <teske@squorn.de>
4
5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Library General Public
7 License as published by the Free Software Foundation; either
8 version 2 of the License, or (at your option) any later version.
9
10 This library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Library General Public License for more details.
14
15 You should have received a copy of the GNU Library General Public License
16 along with this library; see the file COPYING.LIB. If not, write to
17 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
18 Boston, MA 02110-1301, USA.
19*/
20
21#include "konqbookmarkmenu.h"
22
23#include <QMenu>
24#include <QFile>
25
26#include <kmenu.h>
27#include <kdebug.h>
28#include <kconfig.h>
29#include <kconfiggroup.h>
30#include <kicon.h>
31#include <kiconloader.h>
32#include <kactioncollection.h>
33
34#include "kbookmarkimporter.h"
35#include "kbookmarkimporter_opera.h"
36#include "kbookmarkimporter_ie.h"
37#include "kbookmarkmenu_p.h"
38
39KonqBookmarkContextMenu::KonqBookmarkContextMenu(const KBookmark & bm, KBookmarkManager * mgr, KonqBookmarkOwner * owner)
40 : KBookmarkContextMenu(bm, mgr, owner)
41{
42}
43
44KonqBookmarkContextMenu::~KonqBookmarkContextMenu()
45{
46}
47
48
49void KonqBookmarkContextMenu::addActions()
50{
51 KConfigGroup config = KSharedConfig::openConfig("kbookmarkrc", KConfig::NoGlobals)->group("Bookmarks");
52 bool filteredToolbar = config.readEntry( "FilteredToolbar", false );
53
54 if (bookmark().isGroup())
55 {
56 addOpenFolderInTabs();
57 addBookmark();
58
59 if(filteredToolbar)
60 {
61 QString text = bookmark().showInToolbar() ? i18n("Hide in toolbar") : i18n("Show in toolbar");
62 addAction( SmallIcon(""), text, this, SLOT( toggleShowInToolbar()));
63 }
64
65 addFolderActions();
66 }
67 else
68 {
69 if(owner())
70 {
71 addAction( SmallIcon("window-new"), i18n( "Open in New Window" ), this, SLOT( openInNewWindow() ) );
72 addAction( SmallIcon("tab-new"), i18n( "Open in New Tab" ), this, SLOT( openInNewTab() ) );
73 }
74 addBookmark();
75
76 if(filteredToolbar)
77 {
78 QString text = bookmark().showInToolbar() ? i18n("Hide in toolbar") : i18n("Show in toolbar");
79 addAction( SmallIcon(""), text, this, SLOT( toggleShowInToolbar()));
80 }
81
82 addBookmarkActions();
83 }
84}
85
86void KonqBookmarkContextMenu::toggleShowInToolbar()
87{
88 bookmark().setShowInToolbar(!bookmark().showInToolbar());
89 manager()->emitChanged(bookmark().parentGroup());
90}
91
92void KonqBookmarkContextMenu::openInNewTab()
93{
94 owner()->openInNewTab(bookmark());
95}
96
97void KonqBookmarkContextMenu::openInNewWindow()
98{
99 owner()->openInNewWindow(bookmark());
100}
101
102/******************************/
103/******************************/
104/******************************/
105
106void KonqBookmarkMenu::fillDynamicBookmarks()
107{
108 if ( isDirty()
109 && KBookmarkManager::userBookmarksManager()->path() == manager()->path() )
110 {
111 bool haveSep = false;
112
113 const QStringList keys = KonqBookmarkMenu::dynamicBookmarksList();
114 for ( QStringList::const_iterator it = keys.begin(); it != keys.end(); ++it )
115 {
116 DynMenuInfo info;
117 info = showDynamicBookmarks((*it));
118
119 if ( !info.show || !QFile::exists( info.location ) )
120 continue;
121
122 if (!haveSep)
123 {
124 parentMenu()->addSeparator();
125 haveSep = true;
126 }
127
128 KActionMenu * actionMenu;
129 actionMenu = new KActionMenu( KIcon(info.type), info.name, this );
130 m_actionCollection->addAction( "kbookmarkmenu", actionMenu );
131
132 parentMenu()->addAction(actionMenu);
133 m_actions.append( actionMenu );
134
135 KImportedBookmarkMenu *subMenu =
136 new KImportedBookmarkMenu( manager(), owner(), actionMenu->menu(),
137 info.type, info.location);
138 m_lstSubMenus.append( subMenu );
139 }
140 }
141}
142
143void KonqBookmarkMenu::refill()
144{
145 if(isRoot())
146 addActions();
147 fillDynamicBookmarks();
148 fillBookmarks();
149 if(!isRoot())
150 addActions();
151}
152
153QAction* KonqBookmarkMenu::actionForBookmark(const KBookmark &bm)
154{
155 if ( bm.isGroup() )
156 {
157 kDebug(7043) << "Creating Konq bookmark submenu named " << bm.text();
158 KBookmarkActionMenu * actionMenu = new KBookmarkActionMenu( bm, this );
159 m_actionCollection->addAction( "kbookmarkmenu", actionMenu );
160 m_actions.append( actionMenu );
161
162 KBookmarkMenu *subMenu = new KonqBookmarkMenu( manager(), owner(), actionMenu, bm.address() );
163
164 m_lstSubMenus.append( subMenu );
165 return actionMenu;
166 }
167 else if( bm.isSeparator() )
168 {
169 return KBookmarkMenu::actionForBookmark(bm);
170 }
171 else
172 {
173 kDebug(7043) << "Creating Konq bookmark action named " << bm.text();
174 KBookmarkAction * action = new KBookmarkAction( bm, owner(), this );
175 m_actionCollection->addAction(action->objectName(), action);
176 m_actions.append( action );
177 return action;
178 }
179}
180
181KonqBookmarkMenu::DynMenuInfo KonqBookmarkMenu::showDynamicBookmarks( const QString &id )
182{
183 KConfig bookmarkrc("kbookmarkrc", KConfig::NoGlobals);
184 KConfigGroup config(&bookmarkrc, "Bookmarks");
185
186 DynMenuInfo info;
187 info.show = false;
188
189 if (!config.hasKey("DynamicMenus")) {
190 if (bookmarkrc.hasGroup("DynamicMenu-" + id)) {
191 KConfigGroup dynGroup(&bookmarkrc, "DynamicMenu-" + id);
192 info.show = dynGroup.readEntry("Show", false);
193 info.location = dynGroup.readPathEntry("Location", QString());
194 info.type = dynGroup.readEntry("Type");
195 info.name = dynGroup.readEntry("Name");
196 }
197 }
198 return info;
199}
200
201QStringList KonqBookmarkMenu::dynamicBookmarksList()
202{
203 KConfigGroup config = KSharedConfig::openConfig("kbookmarkrc", KConfig::NoGlobals)->group("Bookmarks");
204
205 QStringList mlist;
206 if (config.hasKey("DynamicMenus"))
207 mlist = config.readEntry("DynamicMenus", QStringList());
208
209 return mlist;
210}
211
212void KonqBookmarkMenu::setDynamicBookmarks(const QString &id, const DynMenuInfo &newMenu)
213{
214 KSharedConfig::Ptr kbookmarkrc = KSharedConfig::openConfig("kbookmarkrc", KConfig::NoGlobals);
215 KConfigGroup dynConfig = kbookmarkrc->group(QString("DynamicMenu-" + id));
216
217 // add group unconditionally
218 dynConfig.writeEntry("Show", newMenu.show);
219 dynConfig.writePathEntry("Location", newMenu.location);
220 dynConfig.writeEntry("Type", newMenu.type);
221 dynConfig.writeEntry("Name", newMenu.name);
222
223 QStringList elist;
224 KConfigGroup config = kbookmarkrc->group("Bookmarks");
225 if (config.hasKey("DynamicMenus")) {
226 elist = config.readEntry("DynamicMenus", QStringList());
227 }
228
229 // make sure list includes type
230 if (!elist.contains(id)) {
231 elist << id;
232 config.writeEntry("DynamicMenus", elist);
233 }
234
235 config.sync();
236}
237
238KonqBookmarkOwner::~KonqBookmarkOwner()
239{
240}
241
242KMenu * KonqBookmarkMenu::contextMenu(QAction * action)
243{
244 KBookmarkActionInterface* act = dynamic_cast<KBookmarkActionInterface *>(action);
245 if (!act)
246 return 0;
247 return new KonqBookmarkContextMenu(act->bookmark(), manager(), owner());
248}
249
250#include "konqbookmarkmenu.moc"
KActionCollection::addAction
KAction * addAction(const QString &name, const QObject *receiver=0, const char *member=0)
KActionMenu
KActionMenu::menu
KMenu * menu()
KBookmarkActionInterface
Definition: kbookmarkmenu.h:226
KBookmarkActionInterface::bookmark
const KBookmark bookmark() const
Definition: kbookmarkmenu.cc:222
KBookmarkActionMenu
Definition: kbookmarkmenu.h:241
KBookmarkAction
Definition: kbookmarkmenu.h:256
KBookmarkContextMenu
Definition: kbookmarkmenu.h:189
KBookmarkContextMenu::addBookmarkActions
void addBookmarkActions()
Definition: kbookmarkmenu.cc:284
KBookmarkContextMenu::bookmark
KBookmark bookmark() const
Definition: kbookmarkmenu.cc:396
KBookmarkContextMenu::addBookmark
void addBookmark()
Definition: kbookmarkmenu.cc:264
KBookmarkContextMenu::addFolderActions
void addFolderActions()
Definition: kbookmarkmenu.cc:270
KBookmarkContextMenu::manager
KBookmarkManager * manager() const
Definition: kbookmarkmenu.cc:386
KBookmarkContextMenu::addOpenFolderInTabs
void addOpenFolderInTabs()
Definition: kbookmarkmenu.cc:292
KBookmarkManager
This class implements the reading/writing of bookmarks in XML.
Definition: kbookmarkmanager.h:66
KBookmarkManager::userBookmarksManager
static KBookmarkManager * userBookmarksManager()
Returns a pointer to the user's main (konqueror) bookmark collection.
Definition: kbookmarkmanager.cc:673
KBookmarkManager::emitChanged
void emitChanged()
Saves the bookmark file and notifies everyone.
Definition: kbookmarkmanager.cc:549
KBookmarkMenu
This class provides a bookmark menu.
Definition: kbookmarkmenu.h:77
KBookmarkMenu::m_actionCollection
KActionCollection * m_actionCollection
Definition: kbookmarkmenu.h:164
KBookmarkMenu::parentMenu
KMenu * parentMenu() const
The menu in which we insert our actions Supplied in the constructor.
Definition: kbookmarkmenu.cc:205
KBookmarkMenu::m_actions
QList< QAction * > m_actions
List of our actions.
Definition: kbookmarkmenu.h:168
KBookmarkMenu::actionForBookmark
virtual QAction * actionForBookmark(const KBookmark &bm)
Definition: kbookmarkmenu.cc:543
KBookmarkMenu::isRoot
bool isRoot() const
Definition: kbookmarkmenu.cc:180
KBookmarkMenu::manager
KBookmarkManager * manager() const
Definition: kbookmarkmenu.cc:195
KBookmarkMenu::addActions
void addActions()
Definition: kbookmarkmenu.cc:96
KBookmarkMenu::fillBookmarks
void fillBookmarks()
Definition: kbookmarkmenu.cc:527
KBookmarkMenu::isDirty
bool isDirty() const
Definition: kbookmarkmenu.cc:185
KBookmarkMenu::m_lstSubMenus
QList< KBookmarkMenu * > m_lstSubMenus
List of our sub menus.
Definition: kbookmarkmenu.h:159
KBookmark
Definition: kbookmark.h:35
KBookmark::text
QString text() const
Text shown for the bookmark If bigger than 40, the text is shortened by replacing middle characters w...
Definition: kbookmark.cc:306
KBookmark::showInToolbar
bool showInToolbar() const
Definition: kbookmark.cc:443
KBookmark::isGroup
bool isGroup() const
Whether the bookmark is a group or a normal bookmark.
Definition: kbookmark.cc:283
KBookmark::isSeparator
bool isSeparator() const
Whether the bookmark is a separator.
Definition: kbookmark.cc:290
KBookmark::address
QString address() const
Return the "address" of this bookmark in the whole tree.
Definition: kbookmark.cc:471
KBookmark::setShowInToolbar
void setShowInToolbar(bool show)
Set whether this bookmark is show in a filterd toolbar.
Definition: kbookmark.cc:455
KConfigBase::hasGroup
bool hasGroup(const char *group) const
KConfigGroup
KConfigGroup::writeEntry
void writeEntry(const char *key, const char *value, WriteConfigFlags pFlags=Normal)
KConfigGroup::readPathEntry
QString readPathEntry(const char *key, const QString &aDefault) const
KConfigGroup::readEntry
QString readEntry(const char *key, const char *aDefault=0) const
KConfigGroup::writePathEntry
void writePathEntry(const char *pKey, const QString &path, WriteConfigFlags pFlags=Normal)
KConfig
KConfig::NoGlobals
NoGlobals
KIcon
KImportedBookmarkMenu
Definition: kbookmarkmenu_p.h:52
KMenu
KSharedConfig::openConfig
static KSharedConfig::Ptr openConfig(const KComponentData &componentData, const QString &fileName=QString(), OpenFlags mode=FullConfig, const char *resourceType="config")
KSharedPtr< KSharedConfig >
KonqBookmarkContextMenu
Definition: konqbookmarkmenu.h:108
KonqBookmarkContextMenu::KonqBookmarkContextMenu
KonqBookmarkContextMenu(const KBookmark &bm, KBookmarkManager *mgr, KonqBookmarkOwner *owner)
Definition: konqbookmarkmenu.cc:39
KonqBookmarkContextMenu::openInNewTab
void openInNewTab()
Definition: konqbookmarkmenu.cc:92
KonqBookmarkContextMenu::~KonqBookmarkContextMenu
virtual ~KonqBookmarkContextMenu()
Definition: konqbookmarkmenu.cc:44
KonqBookmarkContextMenu::addActions
virtual void addActions()
Definition: konqbookmarkmenu.cc:49
KonqBookmarkContextMenu::toggleShowInToolbar
void toggleShowInToolbar()
Definition: konqbookmarkmenu.cc:86
KonqBookmarkContextMenu::openInNewWindow
void openInNewWindow()
Definition: konqbookmarkmenu.cc:97
KonqBookmarkMenu
Definition: konqbookmarkmenu.h:34
KonqBookmarkMenu::refill
virtual void refill()
Definition: konqbookmarkmenu.cc:143
KonqBookmarkMenu::dynamicBookmarksList
static QStringList dynamicBookmarksList()
Definition: konqbookmarkmenu.cc:201
KonqBookmarkMenu::showDynamicBookmarks
static DynMenuInfo showDynamicBookmarks(const QString &id)
Definition: konqbookmarkmenu.cc:181
KonqBookmarkMenu::fillDynamicBookmarks
void fillDynamicBookmarks()
Definition: konqbookmarkmenu.cc:106
KonqBookmarkMenu::actionForBookmark
virtual QAction * actionForBookmark(const KBookmark &bm)
Definition: konqbookmarkmenu.cc:153
KonqBookmarkMenu::contextMenu
virtual KMenu * contextMenu(QAction *act)
Definition: konqbookmarkmenu.cc:242
KonqBookmarkMenu::setDynamicBookmarks
static void setDynamicBookmarks(const QString &id, const DynMenuInfo &info)
Shows an extra menu for the given bookmarks file and type.
Definition: konqbookmarkmenu.cc:212
KonqBookmarkOwner
Definition: konqbookmarkmenu.h:26
KonqBookmarkOwner::openInNewTab
virtual void openInNewTab(const KBookmark &bm)=0
KonqBookmarkOwner::~KonqBookmarkOwner
virtual ~KonqBookmarkOwner()
Definition: konqbookmarkmenu.cc:238
KonqBookmarkOwner::openInNewWindow
virtual void openInNewWindow(const KBookmark &bm)=0
QAction
kDebug
#define kDebug
kactioncollection.h
kbookmarkimporter.h
kbookmarkimporter_ie.h
kbookmarkimporter_opera.h
kbookmarkmenu_p.h
kconfig.h
kconfiggroup.h
kdebug.h
kicon.h
SmallIcon
QPixmap SmallIcon(const QString &name, int force_size, int state, const QStringList &overlays)
kiconloader.h
i18n
QString i18n(const char *text)
kmenu.h
konqbookmarkmenu.h
config
KSharedConfigPtr config()
KonqBookmarkMenu::DynMenuInfo
Structure used for storing information about the dynamic menu setting.
Definition: konqbookmarkmenu.h:71
KonqBookmarkMenu::DynMenuInfo::show
bool show
Definition: konqbookmarkmenu.h:72
KonqBookmarkMenu::DynMenuInfo::name
QString name
Definition: konqbookmarkmenu.h:75
KonqBookmarkMenu::DynMenuInfo::location
QString location
Definition: konqbookmarkmenu.h:73
KonqBookmarkMenu::DynMenuInfo::type
QString type
Definition: konqbookmarkmenu.h:74
This file is part of the KDE documentation.
Documentation copyright © 1996-2023 The KDE developers.
Generated on Mon Feb 20 2023 00:00:00 by doxygen 1.9.6 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

KIO

Skip menu "KIO"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members
  • Related Pages

kdelibs-4.14.38 API Reference

Skip menu "kdelibs-4.14.38 API Reference"
  • DNSSD
  • Interfaces
  •   KHexEdit
  •   KMediaPlayer
  •   KSpeech
  •   KTextEditor
  • kconf_update
  • KDE3Support
  •   KUnitTest
  • KDECore
  • KDED
  • KDEsu
  • KDEUI
  • KDEWebKit
  • KDocTools
  • KFile
  • KHTML
  • KImgIO
  • KInit
  • kio
  • KIOSlave
  • KJS
  •   KJS-API
  •   WTF
  • kjsembed
  • KNewStuff
  • KParts
  • KPty
  • Kross
  • KUnitConversion
  • KUtils
  • Nepomuk
  • Plasma
  • Solid
  • Sonnet
  • ThreadWeaver
Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal