>From 4ec89d0243a9a403535d57e8afba0b29d10cb3f5 Mon Sep 17 00:00:00 2001
From: Daniel Schaal
Date: Sat, 7 Jan 2012 17:34:32 +0100
Subject: [PATCH] GUI: When opening multiple files add only one entry to
recent file list.
---
src/player_qt.cpp | 36 +++++++++++++++++++-----------------
src/player_qt.h | 4 +---
2 files changed, 20 insertions(+), 20 deletions(-)
diff --git a/src/player_qt.cpp b/src/player_qt.cpp
index 206635f..8c5fe13 100644
--- a/src/player_qt.cpp
+++ b/src/player_qt.cpp
@@ -2266,20 +2266,21 @@ void main_window::open_recent_file()
{
QAction *action = qobject_cast(sender());
if (action)
- open(action->data().toString());
+ open(action->data().toStringList());
}
void main_window::update_recent_file_actions()
{
- QStringList files = _settings->value("Session/recent-files").toStringList();
+ QVariantList files = _settings->value("Session/recent-files").toList();
- int num_recent_files = qMin(files.size(), (int)_max_recent_files);
+ int num_recent_files = qMin(files.size(), _max_recent_files);
bool have_recent_files = num_recent_files > 0;
for (int i = 0; i < num_recent_files; ++i) {
- QString text = QString("&%1 %2").arg(i + 1).arg(stripped_name(files[i]));
+ QStringList recentFilesEntry = files[i].toStringList();
+ QString text = QString("&%1 %2").arg(i + 1).arg(stripped_name(recentFilesEntry));
_recent_file_actions[i]->setText(text);
- _recent_file_actions[i]->setData(files[i]);
+ _recent_file_actions[i]->setData(recentFilesEntry);
_recent_file_actions[i]->setVisible(true);
}
for (int j = num_recent_files; j < _max_recent_files; ++j)
@@ -2297,9 +2298,16 @@ void main_window::clear_recent_files()
update_recent_file_actions();
}
-QString main_window::stripped_name(const QString& filename)
+QString main_window::stripped_name(const QStringList & filenames)
{
- return QFileInfo(filename).fileName();
+ QStringList stripped;
+ foreach(QString file, filenames) {
+ stripped.append(QFileInfo(file).fileName());
+ }
+ QString strippedNames = stripped.join(", ");
+ if(strippedNames.length() >= 50)
+ strippedNames = strippedNames.left(47).append("...");
+ return strippedNames;
}
QString main_window::current_file_hash()
@@ -2625,11 +2633,6 @@ void main_window::playloop_step()
}
}
-void main_window::open(QString url)
-{
- open(QStringList(url));
-}
-
void main_window::open(QStringList filenames, const device_request &dev_request)
{
_player->force_stop();
@@ -2697,12 +2700,11 @@ void main_window::file_open()
_settings->setValue("Session/file-open-dir", QFileInfo(file_names[0]).path());
open(file_names);
- QStringList files = _settings->value("Session/recent-files").toStringList();
+ QVariantList files = _settings->value("Session/recent-files").toList();
+
+ files.removeAll(file_names);
+ files.prepend(file_names);
- foreach(QString file, file_names) {
- files.removeAll(file);
- files.prepend(file);
- }
while (files.size() > _max_recent_files)
files.removeLast();
_settings->setValue("Session/recent-files", files);
diff --git a/src/player_qt.h b/src/player_qt.h
index 223784b..3f90959 100644
--- a/src/player_qt.h
+++ b/src/player_qt.h
@@ -343,7 +343,6 @@ private:
bool _stop_request;
int _max_recent_files;
- QStringList _recent_files;
QList _recent_file_actions;
QAction *_recent_files_separator;
QAction *_clear_recent_separator;
@@ -352,9 +351,8 @@ private:
QString current_file_hash();
bool open_player();
void open(QStringList urls, const device_request &dev_request = device_request());
- void open(QString url);
void update_recent_file_actions();
- QString stripped_name(const QString &filename);
+ QString stripped_name(const QStringList & filenames);
private slots:
void move_event();
--
1.7.8.2