summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xdildo.pngbin0 -> 874 bytes
-rw-r--r--filesystemdirproxy.cpp1
-rw-r--r--filesystemdirproxy.h2
-rw-r--r--filesystemfileproxy.cpp14
-rw-r--r--filesystemfileproxy.h24
-rw-r--r--filesystemwidget.cpp53
-rw-r--r--filesystemwidget.h6
-rw-r--r--fileview.cpp30
-rw-r--r--fileview.h26
-rw-r--r--helper.cpp39
-rw-r--r--helper.h20
-rw-r--r--main.cpp3
-rw-r--r--movie.svg148
-rw-r--r--picture.svg131
-rw-r--r--shemov.cpp30
-rw-r--r--shemov.h29
-rw-r--r--shemov.pro16
-rw-r--r--shemov.qrc9
-rw-r--r--shemoviconprovider.cpp29
-rw-r--r--shemoviconprovider.h24
20 files changed, 632 insertions, 2 deletions
diff --git a/dildo.png b/dildo.png
new file mode 100755
index 0000000..8a167cb
--- /dev/null
+++ b/dildo.png
Binary files differ
diff --git a/filesystemdirproxy.cpp b/filesystemdirproxy.cpp
index ff97309..6e9a714 100644
--- a/filesystemdirproxy.cpp
+++ b/filesystemdirproxy.cpp
@@ -20,3 +20,4 @@ bool FilesystemDirProxy::filterAcceptsRow(int sourcerow, const QModelIndex &sour
}
return m->isDir(idx);
}
+
diff --git a/filesystemdirproxy.h b/filesystemdirproxy.h
index e86773f..67c30de 100644
--- a/filesystemdirproxy.h
+++ b/filesystemdirproxy.h
@@ -10,6 +10,8 @@
#include <QSortFilterProxyModel>
+class QModelIndex;
+
class FilesystemDirProxy : public QSortFilterProxyModel {
Q_OBJECT
public:
diff --git a/filesystemfileproxy.cpp b/filesystemfileproxy.cpp
new file mode 100644
index 0000000..22f8868
--- /dev/null
+++ b/filesystemfileproxy.cpp
@@ -0,0 +1,14 @@
+/*
+ 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.
+*/
+
+#include <QModelIndex>
+#include <QVariant>
+
+#include "filesystemfileproxy.h"
+
+FilesystemFileProxy::FilesystemFileProxy(QObject *parent) : QSortFilterProxyModel(parent) {}
+
diff --git a/filesystemfileproxy.h b/filesystemfileproxy.h
new file mode 100644
index 0000000..cb32a77
--- /dev/null
+++ b/filesystemfileproxy.h
@@ -0,0 +1,24 @@
+/*
+ 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.
+*/
+
+#ifndef FILESYSTEMFILEPROXY_H
+#define FILESYSTEMFILEPROXY_H
+
+#include <QSortFilterProxyModel>
+
+class QModelIndex;
+class QVariant;
+
+class FilesystemFileProxy : public QSortFilterProxyModel {
+ Q_OBJECT
+ public:
+ FilesystemFileProxy(QObject *parent = 0);
+ ~FilesystemFileProxy() {};
+};
+
+#endif
+
diff --git a/filesystemwidget.cpp b/filesystemwidget.cpp
index 5e30b66..3798dcc 100644
--- a/filesystemwidget.cpp
+++ b/filesystemwidget.cpp
@@ -7,16 +7,69 @@
#include <QDirModel>
#include <QTreeView>
+#include <QSettings>
+#include <QDir>
+#include <QSplitter>
+#include <QVBoxLayout>
#include "filesystemwidget.h"
#include "filesystemdirproxy.h"
+#include "fileview.h"
+#include "shemoviconprovider.h"
FilesystemWidget::FilesystemWidget(QWidget *parent) : QWidget(parent) {
mModel = new QDirModel;
mModel->setFilter(QDir::AllEntries | QDir::NoDotAndDotDot);
+ mModel->setSorting(QDir::DirsFirst | QDir::IgnoreCase);
+ SheMovIconProvider *p = new SheMovIconProvider;
+ mModel->setIconProvider(p);
+
mDirProxy = new FilesystemDirProxy;
mDirProxy->setSourceModel(mModel);
mDirView = new QTreeView;
mDirView->setModel(mDirProxy);
+ mDirView->setColumnHidden(1, true);
+ mDirView->setColumnHidden(2, true);
+ mDirView->setColumnHidden(3, true);
+ mDirView->setRootIsDecorated(false);
+
+ mFileView = new FileView;
+ mFileView->setModel(mModel);
+ connect(mDirView, SIGNAL(clicked(const QModelIndex &)), this, SLOT(directoryChanged(const QModelIndex &)));
+
+ QSettings s;
+ QString startDir = s.value("paths/start", QDir::homePath()).toString();
+ QModelIndex startIndex = mModel->index(startDir);
+ if(startIndex.isValid()){
+ QModelIndex proxyIndex = mDirProxy->mapFromSource(startIndex);
+ mDirView->setCurrentIndex(proxyIndex);
+ mDirView->setExpanded(proxyIndex, true);
+ QModelIndex parent = proxyIndex.parent();
+ mFileView->setRootIndex(startIndex);
+ do {
+ mDirView->setExpanded(parent, true);
+ parent = parent.parent();
+ }while(parent.isValid());
+ }
+
+ mFileView->resizeColumnToContents(0);
+ QVBoxLayout *mainLayout = new QVBoxLayout;
+ QSplitter *splitter = new QSplitter;
+ splitter->addWidget(mDirView);
+ splitter->addWidget(mFileView);
+ splitter->setStretchFactor(0, 1);
+ splitter->setStretchFactor(1, 2);
+ mainLayout->addWidget(splitter);
+
+ setLayout(mainLayout);
+}
+
+void FilesystemWidget::directoryChanged(const QModelIndex &index){
+ QModelIndex real = mDirProxy->mapToSource(index);
+ if(!index.isValid()){
+ return;
+ }
+ mFileView->setRootIndex(real);
}
+
diff --git a/filesystemwidget.h b/filesystemwidget.h
index 63707da..380fa22 100644
--- a/filesystemwidget.h
+++ b/filesystemwidget.h
@@ -13,6 +13,8 @@
class QDirModel;
class QTreeView;
class FilesystemDirProxy;
+class FileView;
+class QModelIndex;
class FilesystemWidget : public QWidget {
Q_OBJECT
@@ -20,9 +22,13 @@ class FilesystemWidget : public QWidget {
FilesystemWidget(QWidget *parent = 0);
~FilesystemWidget() {};
+ public slots:
+ void directoryChanged(const QModelIndex &index);
+
private:
QDirModel *mModel;
QTreeView *mDirView;
+ FileView *mFileView;
FilesystemDirProxy *mDirProxy;
};
diff --git a/fileview.cpp b/fileview.cpp
new file mode 100644
index 0000000..b402bd1
--- /dev/null
+++ b/fileview.cpp
@@ -0,0 +1,30 @@
+/*
+ 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.
+*/
+
+#include <QContextMenuEvent>
+#include <QMenu>
+#include <QAction>
+
+#include "fileview.h"
+
+FileView::FileView(QWidget *parent) : QTreeView(parent) {
+ setRootIsDecorated(false);
+}
+
+void FileView::contextMenuEvent(QContextMenuEvent *e){
+ QMenu contextMenu(this);
+ int ctr(0);
+ foreach(QAction *a, actions()){
+ contextMenu.addAction(a);
+ if(false){
+ contextMenu.addSeparator();
+ }
+ ++ctr;
+ }
+ contextMenu.exec(e->globalPos());
+}
+
diff --git a/fileview.h b/fileview.h
new file mode 100644
index 0000000..3382132
--- /dev/null
+++ b/fileview.h
@@ -0,0 +1,26 @@
+/*
+ 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.
+*/
+
+#ifndef FILEVIEW_H
+#define FILEVIEW_H
+
+#include <QTreeView>
+
+class QContextMenuEvent;
+
+class FileView : public QTreeView {
+ Q_OBJECT
+ public:
+ FileView(QWidget *parent = 0);
+ ~FileView() {};
+
+ protected:
+ virtual void contextMenuEvent(QContextMenuEvent *e);
+};
+
+#endif
+
diff --git a/helper.cpp b/helper.cpp
new file mode 100644
index 0000000..116efa5
--- /dev/null
+++ b/helper.cpp
@@ -0,0 +1,39 @@
+/*
+ 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.
+*/
+
+#include <QString>
+#include <QByteArray>
+
+#include "helper.h"
+
+namespace Helper {
+ const QString mimeType(const QString &path){
+ QString retval;
+ magic_t mc = magic_open(MAGIC_MIME_TYPE);
+ QByteArray name = path.toUtf8();
+ if(mc){
+ magic_load(mc, 0);
+ const char* magic_c = magic_file(mc, name.constData());
+ retval = QString(magic_c);
+ magic_close(mc);
+ }
+ if(retval.toLower().startsWith("application/octet-stream")){
+ magic_t mc = magic_open(MAGIC_NONE);
+ if(mc){
+ magic_load(mc, 0);
+ const char* magic_c = magic_file(mc, name.constData());
+ QString desc(magic_c);
+ magic_close(mc);
+ if(desc.toLower().contains("mpeg sequence") || desc.toLower().contains("microsoft asf")){
+ retval = "video/";
+ }
+ }
+ return retval;
+ }
+ }
+}
+
diff --git a/helper.h b/helper.h
new file mode 100644
index 0000000..033f7d6
--- /dev/null
+++ b/helper.h
@@ -0,0 +1,20 @@
+/*
+ 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.
+*/
+
+#ifndef HELPER_H
+#define HELPER_H
+
+#include <magic.h>
+
+class QString;
+
+namespace Helper {
+ const QString mimeType(const QString &path);
+}
+
+#endif
+
diff --git a/main.cpp b/main.cpp
index 34f2917..58fea7a 100644
--- a/main.cpp
+++ b/main.cpp
@@ -7,11 +7,14 @@
#include <QApplication>
+#include "shemov.h"
+
int main(int argc, char **argv){
QApplication app(argc, argv);
QCoreApplication::setOrganizationName("Sissie's, Inc.");
QCoreApplication::setOrganizationDomain("hadante.servebeer.com");
QCoreApplication::setApplicationName("SheMov");
QCoreApplication::setApplicationVersion("0.1");
+ (void) new SheMov;
return app.exec();
}
diff --git a/movie.svg b/movie.svg
new file mode 100644
index 0000000..4c85bb6
--- /dev/null
+++ b/movie.svg
@@ -0,0 +1,148 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="16px"
+ height="16px"
+ id="svg2383"
+ sodipodi:version="0.32"
+ inkscape:version="0.46"
+ sodipodi:docname="movie.svg"
+ inkscape:output_extension="org.inkscape.output.svg.inkscape">
+ <defs
+ id="defs2385">
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient3207">
+ <stop
+ style="stop-color:#fd161d;stop-opacity:1;"
+ offset="0"
+ id="stop3209" />
+ <stop
+ style="stop-color:#fd161d;stop-opacity:0;"
+ offset="1"
+ id="stop3211" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3195">
+ <stop
+ style="stop-color:#d30000;stop-opacity:1;"
+ offset="0"
+ id="stop3197" />
+ <stop
+ style="stop-color:#aa0000;stop-opacity:0;"
+ offset="1"
+ id="stop3199" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient3187">
+ <stop
+ style="stop-color:#fd161d;stop-opacity:1;"
+ offset="0"
+ id="stop3189" />
+ <stop
+ style="stop-color:#fd161d;stop-opacity:0;"
+ offset="1"
+ id="stop3191" />
+ </linearGradient>
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 8 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="16 : 8 : 1"
+ inkscape:persp3d-origin="8 : 5.3333333 : 1"
+ id="perspective2391" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3187"
+ id="linearGradient3193"
+ x1="0.13069308"
+ y1="8.0712867"
+ x2="15.860396"
+ y2="8.0712867"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3195"
+ id="linearGradient3201"
+ x1="0.13069308"
+ y1="8.0712867"
+ x2="15.860396"
+ y2="8.0712867"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3207"
+ id="linearGradient3213"
+ x1="0.016135588"
+ y1="8.1679688"
+ x2="16.266136"
+ y2="8.1679688"
+ gradientUnits="userSpaceOnUse" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="22.197802"
+ inkscape:cx="9.7990716"
+ inkscape:cy="6.1980198"
+ inkscape:current-layer="layer1"
+ showgrid="true"
+ inkscape:grid-bbox="true"
+ inkscape:document-units="px"
+ inkscape:window-width="1680"
+ inkscape:window-height="1028"
+ inkscape:window-x="1675"
+ inkscape:window-y="-3">
+ <inkscape:grid
+ type="xygrid"
+ id="grid2393" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata2388">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ id="layer1"
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer">
+ <rect
+ style="fill:url(#linearGradient3201);stroke:url(#linearGradient3193);stroke-width:0.98890400000000001;stroke-opacity:1;fill-opacity:1"
+ id="rect3183"
+ width="14.740799"
+ height="14.967531"
+ x="0.62514508"
+ y="0.58752114" />
+ <text
+ xml:space="preserve"
+ style="font-size:16px;font-style:oblique;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#0000c1;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans Bold Oblique"
+ x="0.0390625"
+ y="13.832031"
+ id="text3203"
+ sodipodi:linespacing="100%"><tspan
+ sodipodi:role="line"
+ id="tspan3205"
+ x="0.0390625"
+ y="13.832031"
+ style="stroke:none">M</tspan></text>
+ </g>
+</svg>
diff --git a/picture.svg b/picture.svg
new file mode 100644
index 0000000..119879f
--- /dev/null
+++ b/picture.svg
@@ -0,0 +1,131 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="16px"
+ height="16px"
+ id="svg2383"
+ sodipodi:version="0.32"
+ inkscape:version="0.46"
+ sodipodi:docname="picture.svg"
+ inkscape:output_extension="org.inkscape.output.svg.inkscape">
+ <defs
+ id="defs2385">
+ <linearGradient
+ id="linearGradient3195">
+ <stop
+ style="stop-color:#37dead;stop-opacity:1;"
+ offset="0"
+ id="stop3197" />
+ <stop
+ id="stop3235"
+ offset="0.5"
+ style="stop-color:#70f030;stop-opacity:0.49803922;" />
+ <stop
+ style="stop-color:#aa0000;stop-opacity:0;"
+ offset="1"
+ id="stop3199" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3187">
+ <stop
+ style="stop-color:#1fd31d;stop-opacity:1;"
+ offset="0"
+ id="stop3189" />
+ <stop
+ style="stop-color:#fd161d;stop-opacity:0;"
+ offset="1"
+ id="stop3191" />
+ </linearGradient>
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 8 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="16 : 8 : 1"
+ inkscape:persp3d-origin="8 : 5.3333333 : 1"
+ id="perspective2391" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3187"
+ id="linearGradient3193"
+ x1="0.13069308"
+ y1="8.0712867"
+ x2="15.860396"
+ y2="8.0712867"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3195"
+ id="linearGradient3201"
+ x1="0.13069308"
+ y1="8.0712867"
+ x2="15.860396"
+ y2="8.0712867"
+ gradientUnits="userSpaceOnUse" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="22.197802"
+ inkscape:cx="9.7990716"
+ inkscape:cy="6.1980198"
+ inkscape:current-layer="layer1"
+ showgrid="true"
+ inkscape:grid-bbox="true"
+ inkscape:document-units="px"
+ inkscape:window-width="1680"
+ inkscape:window-height="1028"
+ inkscape:window-x="1675"
+ inkscape:window-y="-3">
+ <inkscape:grid
+ type="xygrid"
+ id="grid2393" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata2388">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ id="layer1"
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer">
+ <rect
+ style="fill:url(#linearGradient3201);fill-opacity:1;stroke:url(#linearGradient3193);stroke-width:0.988904;stroke-opacity:1"
+ id="rect3183"
+ width="14.740799"
+ height="14.967531"
+ x="0.62514508"
+ y="0.58752114"
+ inkscape:transform-center-x="11.983168"
+ inkscape:transform-center-y="-0.45049505" />
+ <text
+ xml:space="preserve"
+ style="font-size:16px;font-style:oblique;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#0000e1;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans Bold Oblique"
+ x="2.078125"
+ y="13.832031"
+ id="text3237"
+ sodipodi:linespacing="100%"><tspan
+ sodipodi:role="line"
+ id="tspan3239"
+ x="2.078125"
+ y="13.832031">P</tspan></text>
+ </g>
+</svg>
diff --git a/shemov.cpp b/shemov.cpp
new file mode 100644
index 0000000..ea84a7e
--- /dev/null
+++ b/shemov.cpp
@@ -0,0 +1,30 @@
+/*
+ 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.
+*/
+
+#include <QTabWidget>
+#include <QVBoxLayout>
+
+#include "shemov.h"
+#include "filesystemwidget.h"
+
+SheMov::SheMov(QWidget *parent, Qt::WindowFlags flags) : QMainWindow(parent, flags) {
+ mFSWidget = new FilesystemWidget;
+
+ mTab = new QTabWidget;
+ mTab->addTab(mFSWidget, tr("Filemanager"));
+
+ QVBoxLayout *mainLayout = new QVBoxLayout;
+ mainLayout->addWidget(mTab);
+
+ QWidget *centralWidget = new QWidget;
+ centralWidget->setLayout(mainLayout);
+ setCentralWidget(centralWidget);
+ show();
+
+}
+
+
diff --git a/shemov.h b/shemov.h
new file mode 100644
index 0000000..2de2adc
--- /dev/null
+++ b/shemov.h
@@ -0,0 +1,29 @@
+/*
+ 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.
+*/
+
+#ifndef SHEMOV_H
+#define SHEMOV_H
+
+#include <QMainWindow>
+
+class QTabWidget;
+class FilesystemWidget;
+
+class SheMov : public QMainWindow {
+ Q_OBJECT
+ public:
+ SheMov(QWidget *parent = 0, Qt::WindowFlags flags = 0);
+ ~SheMov() {};
+
+ private:
+ QTabWidget *mTab;
+ FilesystemWidget *mFSWidget;
+
+};
+
+#endif
+
diff --git a/shemov.pro b/shemov.pro
index d869881..4b4d3d9 100644
--- a/shemov.pro
+++ b/shemov.pro
@@ -8,11 +8,23 @@ movieitem.cpp \
moviemodel.cpp \
coveritem.cpp \
filesystemdirproxy.cpp \
-filesystemwidget.cpp
+filesystemwidget.cpp \
+fileview.cpp \
+shemov.cpp \
+filesystemfileproxy.cpp \
+helper.cpp \
+shemoviconprovider.cpp
HEADERS = listitem.h \
listmodel.h \
movieitem.h \
moviemodel.h \
coveritem.h \
filesystemdirproxy.h \
-filesystemwidget.h
+filesystemwidget.h \
+fileview.h \
+shemov.h \
+filesystemfileproxy.h \
+helper.h \
+shemoviconprovider.h
+LIBS += -lmagic
+RESOURCES = shemov.qrc
diff --git a/shemov.qrc b/shemov.qrc
new file mode 100644
index 0000000..9763baf
--- /dev/null
+++ b/shemov.qrc
@@ -0,0 +1,9 @@
+<!DOCTYPE RCC>
+<RCC version="1.0">
+ <qresource>
+ <file>movie.svg</file>
+ <file>dildo.png</file>
+ <file>picture.svg</file>
+ </qresource>
+</RCC>
+
diff --git a/shemoviconprovider.cpp b/shemoviconprovider.cpp
new file mode 100644
index 0000000..f0ea01e
--- /dev/null
+++ b/shemoviconprovider.cpp
@@ -0,0 +1,29 @@
+/*
+ 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.
+*/
+
+#include <QIcon>
+#include <QFileInfo>
+
+#include "shemoviconprovider.h"
+#include "helper.h"
+
+SheMovIconProvider::SheMovIconProvider() {};
+
+QIcon SheMovIconProvider::icon(const QFileInfo &info) const {
+ if(info.isDir()){
+ return QIcon(":/dildo.png");
+ }
+ QString type = Helper::mimeType(info.absoluteFilePath());
+ if(type.toLower().startsWith("video")){
+ return QIcon(":/movie.svg");
+ }
+ if(type.toLower().startsWith("image")){
+ return QIcon(":/picture.svg");
+ }
+ return QFileIconProvider::icon(info);
+}
+
diff --git a/shemoviconprovider.h b/shemoviconprovider.h
new file mode 100644
index 0000000..04af45b
--- /dev/null
+++ b/shemoviconprovider.h
@@ -0,0 +1,24 @@
+/*
+ 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.
+*/
+
+#ifndef SHEMOVICONPROVIDER_H
+#define SHEMOVICONPROVIDER_H
+
+#include <QFileIconProvider>
+
+class QIcon;
+class QFileInfo;
+
+class SheMovIconProvider : public QFileIconProvider {
+ public:
+ SheMovIconProvider();
+ ~SheMovIconProvider() {};
+ virtual QIcon icon(const QFileInfo &info) const;
+};
+
+#endif
+