]> git.tdb.fi Git - xinema.git/blobdiff - remote/source/browsedirectoryitem.cpp
Add a remote control program for Sailfish OS
[xinema.git] / remote / source / browsedirectoryitem.cpp
diff --git a/remote/source/browsedirectoryitem.cpp b/remote/source/browsedirectoryitem.cpp
new file mode 100644 (file)
index 0000000..99328bb
--- /dev/null
@@ -0,0 +1,60 @@
+#include "browsedirectoryitem.h"
+#include "xinemacontrol.h"
+#include "xinemacontrolitem.h"
+
+#include <QDebug>
+
+BrowseDirectoryItem::BrowseDirectoryItem():
+       control(0)
+{ }
+
+void BrowseDirectoryItem::set_control(XinemaControlItem *c)
+{
+       if(control)
+               disconnect(&control->get_control(), 0, this, 0);
+
+       control = c;
+       XinemaControl &xc = control->get_control();
+       connect(&xc, &XinemaControl::directory_started, this, &BrowseDirectoryItem::directory_started);
+       connect(&xc, &XinemaControl::file_added, this, &BrowseDirectoryItem::file_added);
+       connect(&xc, &XinemaControl::subdirectory_added, this, &BrowseDirectoryItem::subdirectory_added);
+
+       emit control_changed();
+}
+
+void BrowseDirectoryItem::set_directory(const QString &d)
+{
+       if(d==directory)
+               return;
+
+       directory = d;
+       if(control)
+               control->get_control().list_directory(directory);
+       emit directory_changed();
+}
+
+void BrowseDirectoryItem::directory_started(const QString &dir)
+{
+       if(dir!=directory)
+       {
+               directory = dir;
+               emit directory_changed();
+       }
+
+       subdirectories.clear();
+       files.clear();
+       emit subdirectories_changed();
+       emit files_changed();
+}
+
+void BrowseDirectoryItem::file_added(const QString &name)
+{
+       files.push_back(name);
+       emit files_changed();
+}
+
+void BrowseDirectoryItem::subdirectory_added(const QString &name)
+{
+       subdirectories.push_back(name);
+       emit subdirectories_changed();
+}