summaryrefslogtreecommitdiffstats
path: root/kmenuedit/treeview.h
diff options
context:
space:
mode:
Diffstat (limited to 'kmenuedit/treeview.h')
-rw-r--r--kmenuedit/treeview.h179
1 files changed, 179 insertions, 0 deletions
diff --git a/kmenuedit/treeview.h b/kmenuedit/treeview.h
new file mode 100644
index 000000000..13d415c13
--- /dev/null
+++ b/kmenuedit/treeview.h
@@ -0,0 +1,179 @@
+/*
+ * Copyright (C) 2000 Matthias Elter <elter@kde.org>
+ * Copyright (C) 2001-2002 Raffaele Sandrini <sandrini@kde.org>
+ * Copyright (C) 2003 Waldo Bastian <bastian@kde.org>
+ *
+ * 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 of the License, 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.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef __treeview_h__
+#define __treeview_h__
+
+#include <qstring.h>
+#include <klistview.h>
+#include <kservice.h>
+#include <kservicegroup.h>
+
+class QPopupMenu;
+class KActionCollection;
+class KDesktopFile;
+class MenuFile;
+class MenuFolderInfo;
+class MenuEntryInfo;
+class MenuSeparatorInfo;
+class KShortcut;
+
+class TreeItem : public QListViewItem
+{
+public:
+ TreeItem(QListViewItem *parent, QListViewItem *after, const QString &menuIdn, bool __init = false);
+ TreeItem(QListView *parent, QListViewItem* after, const QString &menuId, bool __init = false);
+
+ QString menuId() const { return _menuId; }
+
+ QString directory() const { return _directoryPath; }
+ void setDirectoryPath(const QString& path) { _directoryPath = path; }
+
+ MenuFolderInfo *folderInfo() { return m_folderInfo; }
+ void setMenuFolderInfo(MenuFolderInfo *folderInfo) { m_folderInfo = folderInfo; }
+
+ MenuEntryInfo *entryInfo() { return m_entryInfo; }
+ void setMenuEntryInfo(MenuEntryInfo *entryInfo) { m_entryInfo = entryInfo; }
+
+ QString name() const { return _name; }
+ void setName(const QString &name);
+
+ bool isDirectory() const { return m_folderInfo; }
+ bool isEntry() const { return m_entryInfo; }
+
+ bool isHidden() const { return _hidden; }
+ void setHidden(bool b);
+
+ bool isLayoutDirty() { return _layoutDirty; }
+ void setLayoutDirty() { _layoutDirty = true; }
+ QStringList layout();
+
+ virtual void setOpen(bool o);
+ void load();
+
+ virtual void paintCell(QPainter * p, const QColorGroup & cg, int column, int width, int align);
+ virtual void setup();
+
+private:
+ void update();
+
+ bool _hidden : 1;
+ bool _init : 1;
+ bool _layoutDirty : 1;
+ QString _menuId;
+ QString _name;
+ QString _directoryPath;
+ MenuFolderInfo *m_folderInfo;
+ MenuEntryInfo *m_entryInfo;
+};
+
+class TreeView : public KListView
+{
+ friend class TreeItem;
+ Q_OBJECT
+public:
+ TreeView(bool controlCenter, KActionCollection *ac, QWidget *parent=0, const char *name=0);
+ ~TreeView();
+
+ void readMenuFolderInfo(MenuFolderInfo *folderInfo=0, KServiceGroup::Ptr folder=0, const QString &prefix=QString::null);
+ void setViewMode(bool showHidden);
+ bool save();
+
+ bool dirty();
+
+ void selectMenu(const QString &menu);
+ void selectMenuEntry(const QString &menuEntry);
+
+public slots:
+ void currentChanged(MenuFolderInfo *folderInfo);
+ void currentChanged(MenuEntryInfo *entryInfo);
+ void findServiceShortcut(const KShortcut&, KService::Ptr &);
+
+signals:
+ void entrySelected(MenuFolderInfo *folderInfo);
+ void entrySelected(MenuEntryInfo *entryInfo);
+ void disableAction();
+protected slots:
+ void itemSelected(QListViewItem *);
+ void slotDropped(QDropEvent *, QListViewItem *, QListViewItem *);
+ void slotRMBPressed(QListViewItem*, const QPoint&);
+
+ void newsubmenu();
+ void newitem();
+ void newsep();
+
+ void cut();
+ void copy();
+ void paste();
+ void del();
+
+protected:
+ TreeItem *createTreeItem(TreeItem *parent, QListViewItem *after, MenuFolderInfo *folderInfo, bool _init = false);
+ TreeItem *createTreeItem(TreeItem *parent, QListViewItem *after, MenuEntryInfo *entryInfo, bool _init = false);
+ TreeItem *createTreeItem(TreeItem *parent, QListViewItem *after, MenuSeparatorInfo *sepInfo, bool _init = false);
+
+ void del(TreeItem *, bool deleteInfo);
+ void fill();
+ void fillBranch(MenuFolderInfo *folderInfo, TreeItem *parent);
+ QString findName(KDesktopFile *df, bool deleted);
+
+ void closeAllItems(QListViewItem *item);
+
+ // moving = src will be removed later
+ void copy( bool moving );
+
+ void cleanupClipboard();
+
+ bool isLayoutDirty();
+ void setLayoutDirty(TreeItem *);
+ void saveLayout();
+
+ QStringList fileList(const QString& relativePath);
+ QStringList dirList(const QString& relativePath);
+
+ virtual bool acceptDrag(QDropEvent* event) const;
+ virtual QDragObject *dragObject();
+ virtual void startDrag();
+
+private:
+ KActionCollection *m_ac;
+ QPopupMenu *m_rmb;
+ int m_clipboard;
+ MenuFolderInfo *m_clipboardFolderInfo;
+ MenuEntryInfo *m_clipboardEntryInfo;
+ int m_drag;
+ MenuFolderInfo *m_dragInfo;
+ TreeItem *m_dragItem;
+ QString m_dragPath;
+ bool m_showHidden;
+ bool m_controlCenter;
+ MenuFile *m_menuFile;
+ MenuFolderInfo *m_rootFolder;
+ MenuSeparatorInfo *m_separator;
+ QStringList m_newMenuIds;
+ QStringList m_newDirectoryList;
+ bool m_detailedMenuEntries;
+ bool m_detailedEntriesNamesFirst;
+ bool m_layoutDirty;
+};
+
+
+#endif