/*
For general Scribus (>=1.3.2) copyright and licensing information please refer
to the COPYING file provided with the program. Following this notice may exist
a copyright and/or license notice that predates the release of Scribus 1.3.2
for which a new license (GPL+exception) is in place.
*/
#ifndef SCFILEWIDGET_H
#define SCFILEWIDGET_H

#include <QFileDialog>

#include "scribusapi.h"

/*! \brief Simple wrapper simulating the QFileDialog as a common widget.
Usage is simple - everything is like in QFileDialog except it is not
a dialog, it's a widget. It can be used for extension features etc.
\note Original QFileDialog OK/Cancel buttons are hidden. You must
write your own dialog accept/reject handling.
There is one good idea - it's quite good to handle original dialog
accepted() signal on your own to prevent ugly widget hiding when
user e.g. doubleclicks the "open" file (in the parent (new) dialog):
connect(fileWidget, SIGNAL(accepted()), this, SLOT(accept()));
\author Petr Vanek <petr@scribus.info>
*/

enum fwContextFlags {
	contextNone = 0,
	contextDocuments = 1, // include documents location
	contextImages = 2 // include image location
};

class SCRIBUS_API ScFileWidget : public QFileDialog
{
	Q_OBJECT
public:
	ScFileWidget(QWidget * parent, fwContextFlags contextFlags = contextNone);

	QString selectedFile();
	void forceDoubleClickActivation(bool force);

public slots:
	void locationDropped(const QString& fileUrl);
	void gotoParentDirectory();
	void gotoSelectedDirectory();
	void gotoDesktopDirectory();
	void gotoHomeDirectory();

private:
	bool m_forceDoubleClickActivation { false };
};

#endif
