kcelbookmarkmenu.h
上传用户:center1979
上传日期:2022-07-26
资源大小:50633k
文件大小:5k
源码类别:

OpenGL

开发平台:

Visual C++

  1. /* This file is part of the KDE project
  2.    Copyright (C) 1998, 1999 Torben Weis <weis@kde.org>
  3.    This library is free software; you can redistribute it and/or
  4.    modify it under the terms of the GNU Library General Public
  5.    License as published by the Free Software Foundation; either
  6.    version 2 of the License, or (at your option) any later version.
  7.    This library is distributed in the hope that it will be useful,
  8.    but WITHOUT ANY WARRANTY; without even the implied warranty of
  9.    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  10.    Library General Public License for more details.
  11.    You should have received a copy of the GNU Library General Public License
  12.    along with this library; see the file COPYING.LIB.  If not, write to
  13.    the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  14.    Boston, MA 02111-1307, USA.
  15. */
  16. #ifndef __kcelbookmarkmenu_h__
  17. #define __kcelbookmarkmenu_h__
  18. #include <qptrlist.h>
  19. #include <qptrstack.h>
  20. #include <qobject.h>
  21. #include <sys/types.h>
  22. #include "kbookmark.h"
  23. #include "kbookmarkmanager.h"
  24. class QString;
  25. class KBookmark;
  26. class KAction;
  27. class KActionMenu;
  28. class KActionCollection;
  29. class KCelBookmarkOwner;
  30. class KCelBookmarkMenu;
  31. class KPopupMenu;
  32. namespace KIO { class Job; }
  33. /**         This is straight from KDE code
  34.  *          I just need special code to generate the Icon
  35.  *          When a new bookmark is added
  36.  *
  37.  * This class provides a bookmark menu.  It is typically used in
  38.  * cooperation with KActionMenu but doesn't have to be.
  39.  *
  40.  * If you use this class by itself, then it will use KDE defaults for
  41.  * everything -- the bookmark path, bookmark editor, bookmark launcher..
  42.  * everything.  These defaults reside in the classes
  43.  * @ref KBookmarkOwner (editing bookmarks) and @ref KBookmarkManager
  44.  * (almost everything else).  If you wish to change the defaults in
  45.  * any way, you must reimplement and instantiate those classes
  46.  * <em>before</em> this class is ever called.
  47.  *
  48.  * Using this class is very simple:
  49.  *
  50.  * 1) Create a popup menu (either KActionMenu or KPopupMenu will do)
  51.  * 2) Instantiate a new KBookmarkMenu object using the above popup
  52.  *    menu as a parameter
  53.  * 3) Insert your (now full) popup menu wherever you wish
  54.  *
  55.  * Again, if you wish to modify any defaults, the procedure is:
  56.  *
  57.  * 1a) Reimplement your own KBookmarkOwner
  58.  * 1b) Reimplement and instantiate your own KBookmarkManager
  59.  */
  60. class KCelBookmarkMenu : public QObject
  61. {
  62.   Q_OBJECT
  63. public:
  64.   /**
  65.    * Fills a bookmark menu
  66.    * (one instance of KBookmarkMenu is created for the toplevel menu,
  67.    *  but also one per submenu).
  68.    *
  69.    * @param owner implementation of the KBookmarkOwner interface (callbacks)
  70.    * @param parentMenu menu to be filled
  71.    * @param collec parent collection for the KActions. Only used for other menus than the toplevel one.
  72.    * @param root true for the toplevel menu
  73.    * @param add true to show the "Add Bookmark" and "New Folder" entries
  74.    * @param parentAddress the address of the group containing the items
  75.    * that we want to show.
  76.    * @see KBookmark::address.
  77.    * Be careful :
  78.    * A _null_ parentAddress denotes a NS-bookmark menu.
  79.    * An _empty_ parentAddress denotes the toplevel bookmark menu
  80.    */
  81.   KCelBookmarkMenu( KBookmarkManager* mgr,
  82.                  KCelBookmarkOwner * owner, KPopupMenu * parentMenu,
  83.                  KActionCollection * collec, bool root, bool add = true,
  84.                  const QString & parentAddress = "" );
  85.   ~KCelBookmarkMenu();
  86.   /**
  87.    * Even if you think you need to use this, you are probably wrong.
  88.    * It fills a bookmark menu starting a given KBookmark.
  89.    * This is public for KBookmarkBar.
  90.    */
  91.   void fillBookmarkMenu();
  92.   /**
  93.    * Call ensureUpToDate() if you need KBookmarkMenu to adjust to its final size before it is executed.
  94.    **/
  95.   void ensureUpToDate();
  96. public slots: // public for bookmark bar
  97.   void slotBookmarksChanged(const QString &);
  98. protected slots:
  99.   void slotAboutToShow();
  100.   void slotBookmarkSelected();
  101.   void slotAddBookmark();
  102.   void slotAddRelativeBookmark();
  103.   void slotAddSettingsBookmark();
  104.   void slotNewFolder();
  105. protected:
  106.   void refill();
  107.   void addAddBookmark();
  108.   void addAddRelativeBookmark();
  109.   void addAddSettingsBookmark();
  110.   void addEditBookmarks();
  111.   void addNewFolder();
  112.   bool m_bIsRoot:1;
  113.   bool m_bAddBookmark:1;
  114.   bool m_bDirty:1;
  115.   bool m_bNSBookmark:1;
  116.   KBookmarkManager* m_pManager;
  117.   KCelBookmarkOwner *m_pOwner;
  118.   /**
  119.    * The menu in which we plug our actions.
  120.    * Supplied in the constructor.
  121.    */
  122.   KPopupMenu * m_parentMenu;
  123.   /**
  124.    * List of our sub menus
  125.    */
  126.   QPtrList<KCelBookmarkMenu> m_lstSubMenus;
  127.   KActionCollection * m_actionCollection;
  128.   /**
  129.    * List of our actions.
  130.    */
  131.   QPtrList<KAction> m_actions;
  132.   /**
  133.    * Parent bookmark for this menu.
  134.    */
  135.   QString m_parentAddress;
  136. };
  137. #endif