--- /dev/null
+#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();
+}