Merge pull request #260 from sledgehammer999/add_new_torrent_layout

Improve usability of 'Add new torrent' dialog. Implements issue #225.
This commit is contained in:
sledgehammer999 2015-02-01 01:21:09 +02:00
commit d45aff9169
3 changed files with 81 additions and 59 deletions

View file

@ -58,7 +58,8 @@ AddNewTorrentDialog::AddNewTorrentDialog(QWidget *parent) :
m_contentDelegate(0),
m_isMagnet(false),
m_hasMetadata(false),
m_hasRenamedFile(false)
m_hasRenamedFile(false),
m_oldIndex(0)
{
ui->setupUi(this);
setAttribute(Qt::WA_DeleteOnClose);
@ -69,9 +70,8 @@ AddNewTorrentDialog::AddNewTorrentDialog(QWidget *parent) :
ui->start_torrent_cb->setChecked(!pref->addTorrentsInPause());
ui->save_path_combo->addItem(fsutils::toNativePath(pref->getSavePath()), pref->getSavePath());
loadSavePathHistory();
ui->save_path_combo->insertSeparator(ui->save_path_combo->count());
ui->save_path_combo->addItem(tr("Other...", "Other save path..."));
connect(ui->save_path_combo, SIGNAL(currentIndexChanged(int)), SLOT(onSavePathChanged(int)));
connect(ui->browse_button, SIGNAL(clicked()), SLOT(browseButton_clicked()));
ui->default_save_path_cb->setVisible(false); // Default path is selected by default
// Load labels
@ -316,13 +316,20 @@ void AddNewTorrentDialog::updateDiskSpaceLabel() {
void AddNewTorrentDialog::onSavePathChanged(int index)
{
static int old_index = 0;
Preferences* const pref = Preferences::instance();
// Toggle default save path setting checkbox visibility
ui->default_save_path_cb->setChecked(false);
ui->default_save_path_cb->setVisible(QDir(ui->save_path_combo->itemData(ui->save_path_combo->currentIndex()).toString()) != QDir(Preferences::instance()->getSavePath()));
relayout();
if (index == (ui->save_path_combo->count() - 1)) {
// Remember index
m_oldIndex = index;
}
void AddNewTorrentDialog::browseButton_clicked()
{
disconnect(ui->save_path_combo, SIGNAL(currentIndexChanged(int)), this, SLOT(onSavePathChanged(int)));
// User is asking for a new save path
QString cur_save_path = ui->save_path_combo->itemText(old_index);
QString cur_save_path = ui->save_path_combo->itemText(m_oldIndex);
QString new_path, old_filename, new_filename;
if (m_torrentInfo && m_torrentInfo->num_files() == 1) {
@ -356,18 +363,14 @@ void AddNewTorrentDialog::onSavePathChanged(int index)
m_filesPath[0] = new_filename;
updateFileNameInSavePaths(new_filename);
}
onSavePathChanged(0);
} else {
// Restore index
ui->save_path_combo->setCurrentIndex(old_index);
ui->save_path_combo->setCurrentIndex(m_oldIndex);
}
connect(ui->save_path_combo, SIGNAL(currentIndexChanged(int)), SLOT(onSavePathChanged(int)));
}
// Toggle default save path setting checkbox visibility
ui->default_save_path_cb->setChecked(false);
ui->default_save_path_cb->setVisible(QDir(ui->save_path_combo->itemData(ui->save_path_combo->currentIndex()).toString()) != pref->getSavePath());
relayout();
// Remember index
old_index = ui->save_path_combo->currentIndex();
updateDiskSpaceLabel();
}

View file

@ -69,6 +69,7 @@ private slots:
void renameSelectedFile();
void setdialogPosition();
void updateMetadata(const QTorrentHandle& h);
void browseButton_clicked();
protected slots:
virtual void accept();
@ -101,6 +102,7 @@ private:
bool m_hasRenamedFile;
QShortcut *editHotkey;
QByteArray m_headerState;
int m_oldIndex;
};
#endif // ADDNEWTORRENTDIALOG_H

View file

@ -29,6 +29,8 @@
<string>Save as</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QComboBox" name="save_path_combo">
<property name="sizePolicy">
@ -39,6 +41,21 @@
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="browse_button">
<property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Browse...</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<widget class="QCheckBox" name="default_save_path_cb">
<property name="text">