summaryrefslogtreecommitdiff
path: root/ui/shareitemmodel.h
diff options
context:
space:
mode:
Diffstat (limited to 'ui/shareitemmodel.h')
-rw-r--r--ui/shareitemmodel.h96
1 files changed, 96 insertions, 0 deletions
diff --git a/ui/shareitemmodel.h b/ui/shareitemmodel.h
new file mode 100644
index 0000000..e44b639
--- /dev/null
+++ b/ui/shareitemmodel.h
@@ -0,0 +1,96 @@
+//
+// C++ Interface: shareitemmodel
+//
+// Description:
+//
+//
+// Author: Rikard Björklind <olof@linux.nu>, (C) 2005
+//
+// Copyright: See COPYING file that comes with this distribution
+//
+//
+#ifndef SHAREITEMMODEL_H
+#define SHAREITEMMODEL_H
+
+#include "global.h"
+#include <vector>
+#include <QAbstractTableModel>
+using namespace std;
+
+//! Represents an item in the ShareItemModel.
+struct ShareItem
+{
+ ShareItem()
+ {}
+ ShareItem(const QString& v,const QString& r,qint64 s)
+ {
+ virtualDir=v;
+ realDir=r;
+ shareSize=s;
+ }
+ QString virtualDir;
+ QString realDir;
+ qint64 shareSize;
+};
+
+/**
+ Data model for shared directories / files.
+ @author Rikard Björklind
+*/
+class ShareItemModel : public QAbstractTableModel
+{
+Q_OBJECT
+public:
+ ShareItemModel();
+
+ virtual ~ShareItemModel()
+ {}
+
+ /*
+ * From QAbstractTableModel
+ */
+ int rowCount ( const QModelIndex& ) const
+ {
+ return items.size()>0?items.size():1;
+ }
+ int columnCount ( const QModelIndex& ) const
+ {
+ return items.size()>0?3:1;
+ }
+ QVariant data ( const QModelIndex & index, int role = Qt::DisplayRole ) const;
+ QVariant headerData ( int section, Qt::Orientation orientation, int role = Qt::DisplayRole ) const;
+ virtual bool dropMimeData ( const QMimeData * data, Qt::DropAction action, int row, int column, const QModelIndex & parent );
+ virtual Qt::DropActions supportedDropActions () const;
+
+ /* Public interface */
+ void add
+ (const ShareItem& item)
+ {
+ items.push_back(item);
+ emit layoutChanged();
+ }
+ void add
+ (const QString& name,const QString& dir);
+ const QString& getName(int row)
+ {
+ return items[row].virtualDir;
+ }
+ const QString& getDir(int row)
+ {
+ return items[row].realDir;
+ }
+ void remove
+ (int row);
+ void clear();
+ virtual Qt::ItemFlags flags(const QModelIndex &index) const;
+ virtual QStringList mimeTypes () const;
+
+ signals:
+ void dirDropped(const QString&);
+
+
+private:
+ vector<ShareItem> items;
+};
+
+#endif