]> git.lyx.org Git - lyx.git/blobdiff - src/frontends/qt4/LyXFileDialog.cpp
header cleanup
[lyx.git] / src / frontends / qt4 / LyXFileDialog.cpp
index 920159664fdc0210a3cb0d80ddaaca6f9cee09a9..f00bbd61bf31ea92f5d358e13226159b7b45c9c8 100644 (file)
 #include <QToolButton>
 #include <QHBoxLayout>
 
-using lyx::support::split;
-using std::string;
+using namespace std;
+using namespace lyx::support;
 
 namespace lyx {
 
 /// return the Qt form of the label
-static docstring const getLabel(docstring const & ucs4str) {
+static docstring const getLabel(docstring const & ucs4str)
+{
        // FIXME UNICODE
        string str = to_utf8(ucs4str);
        string label;
-       string sc(split(str, label, '|'));
+       string sc = split(str, label, '|');
        if (sc.length() < 2)
                return from_utf8(label);
-       string::size_type pos = label.find(sc[1]);
-       if (pos == string::npos)
-               return from_utf8(label);
-       label.insert(pos, 1, '&');
+       size_t pos = label.find(sc[1]);
+       if (pos != string::npos)
+               label.insert(pos, 1, '&');
        return from_utf8(label);
 }
 
@@ -47,42 +47,50 @@ LyXFileDialog::LyXFileDialog(docstring const & t,
                             support::FileFilterList const & filters,
                             FileDialog::Button const & b1,
                             FileDialog::Button const & b2)
-                                // FIXME replace that with theApp->gui()->currentView()
+                                // FIXME replace that with guiApp->currentView()
        : QFileDialog(qApp->focusWidget(),
-                     toqstr(t), toqstr(p), toqstr(filters.as_string())),
-                     b1_(0), b2_(0)
+                     toqstr(t), toqstr(p), toqstr(filters.as_string()))
 {
+       QString const path = toqstr(p);
+       QDir dir(path);
+       // FIXME: workaround for a bug in qt which makes LyX crash
+       // with hidden paths (bug 4513). Recheck with recent Qt versions.
+       if (path.contains("/."))
+               dir.setFilter(QDir::Hidden);
+       setDirectory(dir);
        setWindowTitle(toqstr(t));
 
        QList<QHBoxLayout *> layout = findChildren<QHBoxLayout *>();
 
        if (!b1.first.empty()) {
                b1_dir_ = b1.second;
-               b1_ = new QToolButton(this);
-               connect(b1_, SIGNAL(clicked()), this, SLOT(buttonClicked()));
-               b1_->setText(toqstr(getLabel(b1.first)));
-               layout.at(0)->addWidget(b1_);
+               QToolButton * tb = new QToolButton(this);
+               connect(tb, SIGNAL(clicked()), this, SLOT(button1Clicked()));
+               tb->setText(toqstr(getLabel(b1.first)));
+               layout.at(0)->addWidget(tb);
        }
 
        if (!b2.first.empty()) {
                b2_dir_ = b2.second;
-               b2_ = new QToolButton(this);
-               connect(b2_, SIGNAL(clicked()), this, SLOT(buttonClicked()));
-               b2_->setText(toqstr(getLabel(b2.first)));
-               layout.at(0)->addWidget(b2_);
+               QToolButton * tb = new QToolButton(this);
+               connect(tb, SIGNAL(clicked()), this, SLOT(button2Clicked()));
+               tb->setText(toqstr(getLabel(b2.first)));
+               layout.at(0)->addWidget(tb);
        }
 }
 
 
-void LyXFileDialog::buttonClicked()
+void LyXFileDialog::button1Clicked()
 {
-       if (sender() == b1_)
-               setDirectory(toqstr(b1_dir_));
-       else if (sender() == b2_)
-               setDirectory(toqstr(b2_dir_));
+       setDirectory(toqstr(b1_dir_));
+}
+
+
+void LyXFileDialog::button2Clicked()
+{
+       setDirectory(toqstr(b2_dir_));
 }
 
 } // namespace lyx
 
 #include "LyXFileDialog_moc.cpp"
-