QString HandlerChoiceDialog::GetFilename () const { QString name = Buttons_->checkedButton ()-> property ("PluginName").toString (); QString result; if (Ui_.LocationsBox_->currentIndex () == 0) { if (Suggestion_.isEmpty ()) Suggestion_ = GetPluginSavePaths (name).value (0, QDir::homePath ()); result = QFileDialog::getExistingDirectory (0, tr ("Select save location"), Suggestion_, QFileDialog::Option (~QFileDialog::ShowDirsOnly)); if (result.isEmpty ()) return QString (); } else result = Ui_.LocationsBox_->currentText (); QSettings settings (QCoreApplication::organizationName (), QCoreApplication::applicationName ()); settings.setValue ("PreviousEntitySavePath", result); settings.beginGroup ("SavePaths"); QStringList pluginTexts = settings.value (name).toStringList (); pluginTexts.removeAll (result); pluginTexts.prepend (result); pluginTexts = pluginTexts.mid (0, 20); settings.setValue (name, pluginTexts); settings.endGroup (); return result; }
void HandlerChoiceDialog::on_BrowseButton__released () { const QString& name = Buttons_->checkedButton ()-> property ("PluginID").toString (); if (Suggestion_.isEmpty ()) Suggestion_ = GetPluginSavePaths (name).value (0, QDir::homePath ()); const QString& result = QFileDialog::getExistingDirectory (0, tr ("Select save location"), Suggestion_); if (result.isEmpty ()) return; Ui_.LocationsBox_->setCurrentIndex (0); Ui_.LocationsBox_->setItemText (0, result); }
void HandlerChoiceDialog::populateLocationsBox () { while (Ui_.LocationsBox_->count () > 1) Ui_.LocationsBox_->removeItem (1); QAbstractButton *checked = Buttons_->checkedButton (); if (!checked) return; if (checked->property ("AddedAs").toString () == "IEntityHandler") { Ui_.LocationsBox_->setEnabled (false); Ui_.BrowseButton_->setEnabled (false); return; } Ui_.LocationsBox_->setEnabled (true); Ui_.BrowseButton_->setEnabled (true); Ui_.LocationsBox_->insertSeparator (1); if (Suggestion_.size ()) Ui_.LocationsBox_->addItem (Suggestion_); const QString& plugin = checked->property ("PluginID").toString (); const QStringList& pluginTexts = GetPluginSavePaths (plugin).mid (0, 7); QSettings settings (QCoreApplication::organizationName (), QCoreApplication::applicationName ()); settings.beginGroup ("SavePaths"); QStringList otherPlugins = settings.childKeys (); settings.endGroup (); otherPlugins.removeAll (plugin); QList<QStringList> otherTextsList; Q_FOREACH (const QString& otherPlugin, otherPlugins) otherTextsList.append (GetPluginSavePaths (otherPlugin)); for (QList<QStringList>::iterator it = otherTextsList.begin (), end = otherTextsList.end (); it != end; ++it) Q_FOREACH (const QString& ptext, pluginTexts) it->removeAll (ptext); QStringList otherTexts; while (otherTexts.size () < 16) { bool added = false; for (QList<QStringList>::iterator it = otherTextsList.begin (), end = otherTextsList.end (); it != end; ++it) { if (!it->isEmpty ()) { otherTexts += it->takeFirst (); added = true; } } if (!added) break; } if (!pluginTexts.isEmpty ()) { Ui_.LocationsBox_->addItems (pluginTexts); if (!otherTexts.isEmpty ()) Ui_.LocationsBox_->insertSeparator (pluginTexts.size () + 2); } Ui_.LocationsBox_->addItems (otherTexts); if (!Suggestion_.isEmpty ()) Ui_.LocationsBox_->setCurrentIndex (1); else { const QString& prev = settings.value ("PreviousEntitySavePath").toString (); if (!prev.isEmpty () && pluginTexts.contains (prev)) { const int pos = Ui_.LocationsBox_->findText (prev); if (pos != -1) Ui_.LocationsBox_->setCurrentIndex (pos); } else if (!pluginTexts.isEmpty ()) Ui_.LocationsBox_->setCurrentIndex (2); } }