summaryrefslogtreecommitdiffstats
path: root/src/abakuslistview.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/abakuslistview.h')
-rw-r--r--src/abakuslistview.h147
1 files changed, 147 insertions, 0 deletions
diff --git a/src/abakuslistview.h b/src/abakuslistview.h
new file mode 100644
index 0000000..1712b6e
--- /dev/null
+++ b/src/abakuslistview.h
@@ -0,0 +1,147 @@
+#ifndef ABAKUS_LISTVIEW_H
+#define ABAKUS_LISTVIEW_H
+/*
+ * abakuslistview.h - part of abakus
+ * Copyright (C) 2004, 2005 Michael Pyne <michael.pyne@kdemail.net>
+ *
+ * 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., 59 Temple Place, Suite 330, Boston, MA 02110-1301 USA
+ */
+
+#include <klistview.h>
+
+#include "numerictypes.h"
+
+class KPopupMenu;
+
+class ListView : public KListView
+{
+ Q_OBJECT
+
+ public:
+ ListView(QWidget *parent, const char *name = 0);
+
+ protected:
+ virtual QDragObject *dragObject();
+
+ /**
+ * Used to enable fancy popup handling support in subclasses. Subclasses
+ * also need to reimplement a few functions if they want to use this.
+ *
+ * This should be called in the subclass's constructor.
+ */
+ void enablePopupHandler(bool enable);
+
+ /**
+ * If using the popup menu handling, the subclass needs to return a
+ * translated string of the form "Remove selected <itemtype>".
+ */
+ virtual QString removeItemString() const;
+
+ /**
+ * If using the popup menu handling, the subclass needs to return a
+ * translated string of the form "Remove all <itemtype>s." I recommend
+ * also appending a " (%n <itemtype>s), which you can use the @p count
+ * parameter for.
+ */
+ virtual QString removeAllItemsString(unsigned count) const;
+
+ protected slots:
+ /**
+ * If using the popup menu handing, the subclass needs to reimplement this
+ * function to remove the selected item, which is passed in as a
+ * parameter.
+ */
+ virtual void removeSelectedItem(QListViewItem *item);
+
+ /**
+ * If using the popup menu handling, the subclass needs to reimplement this
+ * function to remove all items.
+ */
+ virtual void removeAllItems();
+
+ /**
+ * If using the popup menu handling, this function may be called to
+ * determine whether the selected item given by @p item is removable.
+ */
+ virtual bool isItemRemovable(QListViewItem *item) const;
+
+ private slots:
+ void rightClicked(QListViewItem *item, const QPoint &pt);
+ void removeSelected();
+
+ private:
+ KPopupMenu *m_menu;
+ bool m_usePopup;
+
+ int m_removeSingleId;
+ int m_removeAllId;
+};
+
+class ValueListViewItem : public KListViewItem
+{
+ public:
+ ValueListViewItem (QListView *listView, const QString &name, const Abakus::number_t &value);
+
+ // Will cause the list item to rethink the text.
+ void valueChanged();
+ void valueChanged(const Abakus::number_t &newValue);
+
+ Abakus::number_t itemValue() const;
+
+ private:
+ Abakus::number_t m_value;
+};
+
+/**
+ * Subclass used for the list of variables.
+ */
+class VariableListView : public ListView
+{
+ Q_OBJECT
+ public:
+
+ VariableListView(QWidget *parent, const char *name = 0);
+
+ protected:
+ virtual QString removeItemString() const;
+ virtual QString removeAllItemsString(unsigned count) const;
+ virtual bool isItemRemovable(QListViewItem *item) const;
+
+ protected slots:
+ virtual void removeSelectedItem(QListViewItem *item);
+ virtual void removeAllItems();
+};
+
+/**
+ * Subclass used for the list of functions.
+ */
+class FunctionListView : public ListView
+{
+ Q_OBJECT
+ public:
+
+ FunctionListView(QWidget *parent, const char *name = 0);
+
+ protected:
+ virtual QString removeItemString() const;
+ virtual QString removeAllItemsString(unsigned count) const;
+ virtual bool isItemRemovable(QListViewItem *item) const;
+
+ protected slots:
+ virtual void removeSelectedItem(QListViewItem *item);
+ virtual void removeAllItems();
+};
+
+#endif