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

KIO

  • sources
  • kde-4.14
  • kdelibs
  • 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 
39 KonqBookmarkContextMenu::KonqBookmarkContextMenu(const KBookmark & bm, KBookmarkManager * mgr, KonqBookmarkOwner * owner)
40  : KBookmarkContextMenu(bm, mgr, owner)
41 {
42 }
43 
44 KonqBookmarkContextMenu::~KonqBookmarkContextMenu()
45 {
46 }
47 
48 
49 void 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 
86 void KonqBookmarkContextMenu::toggleShowInToolbar()
87 {
88  bookmark().setShowInToolbar(!bookmark().showInToolbar());
89  manager()->emitChanged(bookmark().parentGroup());
90 }
91 
92 void KonqBookmarkContextMenu::openInNewTab()
93 {
94  owner()->openInNewTab(bookmark());
95 }
96 
97 void KonqBookmarkContextMenu::openInNewWindow()
98 {
99  owner()->openInNewWindow(bookmark());
100 }
101 
102 /******************************/
103 /******************************/
104 /******************************/
105 
106 void 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 
143 void KonqBookmarkMenu::refill()
144 {
145  if(isRoot())
146  addActions();
147  fillDynamicBookmarks();
148  fillBookmarks();
149  if(!isRoot())
150  addActions();
151 }
152 
153 QAction* 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 
181 KonqBookmarkMenu::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 
201 QStringList 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 
212 void 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 
238 KonqBookmarkOwner::~KonqBookmarkOwner()
239 {
240 }
241 
242 KMenu * 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"
KBookmarkMenu::m_lstSubMenus
QList< KBookmarkMenu * > m_lstSubMenus
List of our sub menus.
Definition: kbookmarkmenu.h:159
i18n
QString i18n(const char *text)
KConfigGroup::readPathEntry
QString readPathEntry(const QString &pKey, const QString &aDefault) const
KSharedPtr< KSharedConfig >
KonqBookmarkOwner::openInNewTab
virtual void openInNewTab(const KBookmark &bm)=0
KConfigGroup::writePathEntry
void writePathEntry(const QString &pKey, const QString &path, WriteConfigFlags pFlags=Normal)
kdebug.h
KBookmarkMenu::isDirty
bool isDirty() const
Definition: kbookmarkmenu.cc:185
kbookmarkimporter_ie.h
KBookmarkMenu::actionForBookmark
virtual QAction * actionForBookmark(const KBookmark &bm)
Definition: kbookmarkmenu.cc:543
KonqBookmarkOwner::openInNewWindow
virtual void openInNewWindow(const KBookmark &bm)=0
KonqBookmarkMenu::DynMenuInfo::type
QString type
Definition: konqbookmarkmenu.h:74
kactioncollection.h
KBookmarkContextMenu::manager
KBookmarkManager * manager() const
Definition: kbookmarkmenu.cc:386
KMenu
KonqBookmarkContextMenu::addActions
virtual void addActions()
Definition: konqbookmarkmenu.cc:49
kconfig.h
QMenu::addAction
void addAction(QAction *action)
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
QStringList::contains
bool contains(const QString &str, Qt::CaseSensitivity cs) const
KBookmark::setShowInToolbar
void setShowInToolbar(bool show)
Set whether this bookmark is show in a filterd toolbar.
Definition: kbookmark.cc:455
KConfig::hasGroup
bool hasGroup(const QString &group) const
KConfig::group
KConfigGroup group(const QByteArray &group)
KActionCollection::addAction
QAction * addAction(const QString &name, QAction *action)
KConfigGroup::writeEntry
void writeEntry(const QString &key, const QVariant &value, WriteConfigFlags pFlags=Normal)
KBookmarkManager
This class implements the reading/writing of bookmarks in XML.
Definition: kbookmarkmanager.h:65
kiconloader.h
KonqBookmarkMenu::showDynamicBookmarks
static DynMenuInfo showDynamicBookmarks(const QString &id)
Definition: konqbookmarkmenu.cc:181
QFile::exists
bool exists() const
KonqBookmarkContextMenu::~KonqBookmarkContextMenu
virtual ~KonqBookmarkContextMenu()
Definition: konqbookmarkmenu.cc:44
kDebug
static QDebug kDebug(bool cond, int area=KDE_DEFAULT_DEBUG_AREA)
KBookmark
Definition: kbookmark.h:34
QList::const_iterator
KBookmarkContextMenu::bookmark
KBookmark bookmark() const
Definition: kbookmarkmenu.cc:396
KonqBookmarkContextMenu::openInNewWindow
void openInNewWindow()
Definition: konqbookmarkmenu.cc:97
config
KSharedConfigPtr config()
KonqBookmarkOwner::~KonqBookmarkOwner
virtual ~KonqBookmarkOwner()
Definition: konqbookmarkmenu.cc:238
kbookmarkimporter.h
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
KonqBookmarkMenu::DynMenuInfo::name
QString name
Definition: konqbookmarkmenu.h:75
KonqBookmarkMenu::refill
virtual void refill()
Definition: konqbookmarkmenu.cc:143
QList::append
void append(const T &value)
konqbookmarkmenu.h
KConfig::NoGlobals
KBookmarkMenu::parentMenu
KMenu * parentMenu() const
The menu in which we insert our actions Supplied in the constructor.
Definition: kbookmarkmenu.cc:205
kmenu.h
KonqBookmarkMenu::DynMenuInfo
Structure used for storing information about the dynamic menu setting.
Definition: konqbookmarkmenu.h:71
KBookmarkMenu::addActions
void addActions()
Definition: kbookmarkmenu.cc:96
QObject::objectName
objectName
KBookmarkActionInterface::bookmark
const KBookmark bookmark() const
Definition: kbookmarkmenu.cc:222
KonqBookmarkOwner
Definition: konqbookmarkmenu.h:25
KBookmark::isGroup
bool isGroup() const
Whether the bookmark is a group or a normal bookmark.
Definition: kbookmark.cc:283
KIcon
QMenu::addSeparator
QAction * addSeparator()
QString
KBookmarkAction
Definition: kbookmarkmenu.h:255
KBookmarkManager::userBookmarksManager
static KBookmarkManager * userBookmarksManager()
Returns a pointer to the user's main (konqueror) bookmark collection.
Definition: kbookmarkmanager.cc:673
QStringList
KActionMenu::menu
KMenu * menu()
kbookmarkimporter_opera.h
KBookmarkContextMenu::addBookmark
void addBookmark()
Definition: kbookmarkmenu.cc:264
KonqBookmarkContextMenu::KonqBookmarkContextMenu
KonqBookmarkContextMenu(const KBookmark &bm, KBookmarkManager *mgr, KonqBookmarkOwner *owner)
Definition: konqbookmarkmenu.cc:39
KBookmarkMenu::m_actions
QList< QAction * > m_actions
List of our actions.
Definition: kbookmarkmenu.h:168
QList::end
iterator end()
KBookmarkContextMenu
Definition: kbookmarkmenu.h:188
KConfigGroup::hasKey
bool hasKey(const QString &key) const
KConfigGroup
KonqBookmarkMenu::fillDynamicBookmarks
void fillDynamicBookmarks()
Definition: konqbookmarkmenu.cc:106
KConfig
KActionMenu
KBookmarkManager::emitChanged
void emitChanged()
Saves the bookmark file and notifies everyone.
Definition: kbookmarkmanager.cc:549
KBookmark::showInToolbar
bool showInToolbar() const
Definition: kbookmark.cc:443
KBookmark::isSeparator
bool isSeparator() const
Whether the bookmark is a separator.
Definition: kbookmark.cc:290
KBookmarkMenu::manager
KBookmarkManager * manager() const
Definition: kbookmarkmenu.cc:195
KBookmarkMenu
This class provides a bookmark menu.
Definition: kbookmarkmenu.h:76
QAction
KonqBookmarkMenu::DynMenuInfo::show
bool show
Definition: konqbookmarkmenu.h:72
SmallIcon
QPixmap SmallIcon(const QString &name, int force_size, int state, const QStringList &overlays)
KonqBookmarkMenu::actionForBookmark
virtual QAction * actionForBookmark(const KBookmark &bm)
Definition: konqbookmarkmenu.cc:153
KonqBookmarkContextMenu::toggleShowInToolbar
void toggleShowInToolbar()
Definition: konqbookmarkmenu.cc:86
KImportedBookmarkMenu
Definition: kbookmarkmenu_p.h:51
KonqBookmarkMenu::DynMenuInfo::location
QString location
Definition: konqbookmarkmenu.h:73
KConfigGroup::sync
void sync()
KBookmarkContextMenu::addBookmarkActions
void addBookmarkActions()
Definition: kbookmarkmenu.cc:284
KonqBookmarkMenu::dynamicBookmarksList
static QStringList dynamicBookmarksList()
Definition: konqbookmarkmenu.cc:201
KBookmarkMenu::isRoot
bool isRoot() const
Definition: kbookmarkmenu.cc:180
KBookmarkMenu::fillBookmarks
void fillBookmarks()
Definition: kbookmarkmenu.cc:527
KSharedConfig::openConfig
static KSharedConfig::Ptr openConfig(const QString &fileName=QString(), OpenFlags mode=FullConfig, const char *resourceType="config")
kicon.h
kbookmarkmenu_p.h
KBookmarkContextMenu::addFolderActions
void addFolderActions()
Definition: kbookmarkmenu.cc:270
KBookmarkMenu::m_actionCollection
KActionCollection * m_actionCollection
Definition: kbookmarkmenu.h:164
KBookmarkContextMenu::addOpenFolderInTabs
void addOpenFolderInTabs()
Definition: kbookmarkmenu.cc:292
KBookmarkActionInterface
Definition: kbookmarkmenu.h:225
KonqBookmarkMenu::KonqBookmarkMenu
KonqBookmarkMenu(KBookmarkManager *mgr, KonqBookmarkOwner *owner, KBookmarkActionMenu *parentMenu, KActionCollection *collec)
Fills a bookmark menu with konquerors bookmarks (one instance of KonqBookmarkMenu is created for the ...
Definition: konqbookmarkmenu.h:50
KonqBookmarkContextMenu::openInNewTab
void openInNewTab()
Definition: konqbookmarkmenu.cc:92
QMenu::text
QString text(int id) const
KConfigGroup::readEntry
T readEntry(const QString &key, const T &aDefault) const
QList::begin
iterator begin()
KonqBookmarkMenu::contextMenu
virtual KMenu * contextMenu(QAction *act)
Definition: konqbookmarkmenu.cc:242
KBookmarkActionMenu
Definition: kbookmarkmenu.h:240
kconfiggroup.h
KonqBookmarkContextMenu
Definition: konqbookmarkmenu.h:107
KBookmark::address
QString address() const
Return the "address" of this bookmark in the whole tree.
Definition: kbookmark.cc:471
This file is part of the KDE documentation.
Documentation copyright © 1996-2020 The KDE developers.
Generated on Mon Jun 22 2020 13:24:53 by doxygen 1.8.7 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 API Reference

Skip menu "kdelibs 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

Search



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