aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2013-07-03 17:41:39 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2013-07-03 17:41:39 +0000
commit640d330c2491dd038cd2092313be8f6e0b252ede (patch)
treec8b1880e281aefb2c877d30ef10d7969f15fb66b
parent9548b51896fd67e633605a10e52ef605741b98e7 (diff)
downloadqmmp-640d330c2491dd038cd2092313be8f6e0b252ede.tar.gz
qmmp-640d330c2491dd038cd2092313be8f6e0b252ede.tar.bz2
qmmp-640d330c2491dd038cd2092313be8f6e0b252ede.zip
changed playlist model api
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@3536 90c681e8-e032-0410-971d-27865f9a5e38
-rw-r--r--src/plugins/Ui/skinned/listwidget.cpp9
-rw-r--r--src/plugins/Ui/skinned/mainwindow.cpp4
-rw-r--r--src/plugins/Ui/skinned/playlisttitlebar.cpp2
-rw-r--r--src/qmmpui/jumptotrackdialog.cpp4
-rw-r--r--src/qmmpui/metadataformatter.h2
-rw-r--r--src/qmmpui/playlistitem.cpp30
-rw-r--r--src/qmmpui/playlistitem.h11
-rw-r--r--src/qmmpui/playlistmodel.cpp29
-rw-r--r--src/qmmpui/playlistmodel.h12
9 files changed, 41 insertions, 62 deletions
diff --git a/src/plugins/Ui/skinned/listwidget.cpp b/src/plugins/Ui/skinned/listwidget.cpp
index 781f654a3..ea0d72d9a 100644
--- a/src/plugins/Ui/skinned/listwidget.cpp
+++ b/src/plugins/Ui/skinned/listwidget.cpp
@@ -356,8 +356,13 @@ void ListWidget::updateList()
emit positionChanged(0, qMax(0, m_model->count() - m_rows));
}
- m_titles = m_model->getTitles(m_first, m_rows);
- m_times = m_model->getTimes(m_first, m_rows);
+ m_titles.clear();
+ m_times.clear();
+ foreach (PlayListItem *item, m_model->mid(m_first, m_rows))
+ {
+ m_titles.append(item->formattedTitle());
+ m_times.append(item->formattedLength());
+ }
m_scroll = false;
//add numbers
for (int i = 0; i < m_titles.size() && m_show_number && !m_align_numbres; ++i)
diff --git a/src/plugins/Ui/skinned/mainwindow.cpp b/src/plugins/Ui/skinned/mainwindow.cpp
index a67c7037a..c042e757b 100644
--- a/src/plugins/Ui/skinned/mainwindow.cpp
+++ b/src/plugins/Ui/skinned/mainwindow.cpp
@@ -182,7 +182,7 @@ void MainWindow::showState(Qmmp::State state)
case Qmmp::Stopped:
m_playlist->setTime(-1);
if (m_playlist->currentItem())
- setWindowTitle(m_playlist->currentItem()->text());
+ setWindowTitle(m_playlist->currentItem()->formattedTitle());
else
setWindowTitle("Qmmp");
break;
@@ -194,7 +194,7 @@ void MainWindow::showMetaData()
if (m_playlist->currentItem() &&
m_playlist->currentItem()->url() == m_core->metaData().value(Qmmp::URL))
{
- setWindowTitle(m_playlist->currentItem()->text());
+ setWindowTitle(m_playlist->currentItem()->formattedTitle());
}
}
diff --git a/src/plugins/Ui/skinned/playlisttitlebar.cpp b/src/plugins/Ui/skinned/playlisttitlebar.cpp
index a714cb223..3c5e5d55e 100644
--- a/src/plugins/Ui/skinned/playlisttitlebar.cpp
+++ b/src/plugins/Ui/skinned/playlisttitlebar.cpp
@@ -266,7 +266,7 @@ void PlayListTitleBar::showCurrent()
if (info)
{
m_text = QString("%1. %2").arg(m_model->currentIndex()+1)
- .arg(info->text());
+ .arg(info->formattedTitle());
if(info->length())
{
m_text.append(QString(" (%1:%2)").arg(info->length()/60)
diff --git a/src/qmmpui/jumptotrackdialog.cpp b/src/qmmpui/jumptotrackdialog.cpp
index 0e9731a6b..132fe7c17 100644
--- a/src/qmmpui/jumptotrackdialog.cpp
+++ b/src/qmmpui/jumptotrackdialog.cpp
@@ -105,7 +105,9 @@ void JumpToTrackDialog::on_jumpToPushButton_clicked()
void JumpToTrackDialog::refresh()
{
filterLineEdit->clear();
- QStringList titles = m_model->getTitles(0, m_model->count());
+ QStringList titles;
+ foreach (PlayListItem *item, m_model->items())
+ titles.append(item->formattedTitle());
m_listModel->setStringList(titles);
filterLineEdit->setFocus();
}
diff --git a/src/qmmpui/metadataformatter.h b/src/qmmpui/metadataformatter.h
index 9669e117c..2e442394c 100644
--- a/src/qmmpui/metadataformatter.h
+++ b/src/qmmpui/metadataformatter.h
@@ -51,7 +51,7 @@ public:
* %l - duration,
* %if(A,B,C) or %if(A&B&C,D,E) - condition.
*/
- MetaDataFormatter(const QString &format);
+ MetaDataFormatter(const QString &format = QString());
/*!
* Converts metadata of item \b item to one string using template.
*/
diff --git a/src/qmmpui/playlistitem.cpp b/src/qmmpui/playlistitem.cpp
index 4a8d6c164..edb676cbc 100644
--- a/src/qmmpui/playlistitem.cpp
+++ b/src/qmmpui/playlistitem.cpp
@@ -33,7 +33,7 @@ PlayListItem::PlayListItem() : QMap<Qmmp::MetaData, QString>(), m_flag(FREE)
PlayListItem::PlayListItem(const PlayListItem &other) : QMap<Qmmp::MetaData, QString>(other),
m_flag(other.m_flag)
{
- m_title = other.m_title;
+ m_formattedTitle = other.m_formattedTitle;
if (other.m_info)
m_info = new FileInfo(*(other.m_info));
else
@@ -41,11 +41,12 @@ PlayListItem::PlayListItem(const PlayListItem &other) : QMap<Qmmp::MetaData, QSt
m_selected = other.m_selected;
m_current = other.m_current;
m_length = other.m_length;
+ m_formattedLength = other.m_formattedLength;
}
PlayListItem::PlayListItem(FileInfo *info) : QMap<Qmmp::MetaData, QString>(info->metaData()), m_flag(FREE)
{
- m_length = info->length();
+ setLength(m_length = info->length());
m_selected = false;
m_current = false;
m_info = info;
@@ -114,16 +115,21 @@ void PlayListItem::updateTags()
delete list.takeLast();
}
-const QString PlayListItem::text()
+const QString PlayListItem::formattedTitle()
{
- if(m_title.isEmpty())
+ if(m_formattedTitle.isEmpty())
readMetadata();
- return m_title;
+ return m_formattedTitle;
+}
+
+const QString PlayListItem::formattedLength() const
+{
+ return m_formattedLength;
}
void PlayListItem::setText(const QString &title)
{
- m_title = title;
+ m_formattedTitle = title;
}
qint64 PlayListItem::length() const
@@ -134,6 +140,8 @@ qint64 PlayListItem::length() const
void PlayListItem::setLength(qint64 length)
{
m_length = length;
+ MetaDataFormatter f;
+ m_formattedLength = f.formatLength(m_length);
}
const QString PlayListItem::url() const
@@ -144,14 +152,14 @@ const QString PlayListItem::url() const
void PlayListItem::readMetadata()
{
MetaDataFormatter f(QmmpUiSettings::instance()->format());
- m_title = f.parse(this);
- if (m_title.isEmpty())
- m_title = value(Qmmp::URL).section('/',-1);
+ m_formattedTitle = f.parse(this);
+ if (m_formattedTitle.isEmpty())
+ m_formattedTitle = value(Qmmp::URL).section('/',-1);
if (m_info)
delete m_info;
m_info = 0;
if (QmmpUiSettings::instance()->convertUnderscore())
- m_title.replace("_", " ");
+ m_formattedTitle.replace("_", " ");
if (QmmpUiSettings::instance()->convertTwenty())
- m_title.replace("%20", " ");
+ m_formattedTitle.replace("%20", " ");
}
diff --git a/src/qmmpui/playlistitem.h b/src/qmmpui/playlistitem.h
index 82e022e39..6cb8dbb84 100644
--- a/src/qmmpui/playlistitem.h
+++ b/src/qmmpui/playlistitem.h
@@ -86,9 +86,13 @@ public:
*/
void setFlag(FLAGS);
/*!
- * Returns item short title.
+ * Returns formatted title of the item.
*/
- const QString text();
+ const QString formattedTitle();
+ /*!
+ * Returns formatted length of the item.
+ */
+ const QString formattedLength() const;
/*!
* Direct access to the item short title.
* @param title New short title.
@@ -118,7 +122,8 @@ public:
private:
void readMetadata();
- QString m_title;
+ QString m_formattedTitle;
+ QString m_formattedLength;
FileInfo *m_info;
bool m_selected;
bool m_current;
diff --git a/src/qmmpui/playlistmodel.cpp b/src/qmmpui/playlistmodel.cpp
index 371d10701..bc83eda7d 100644
--- a/src/qmmpui/playlistmodel.cpp
+++ b/src/qmmpui/playlistmodel.cpp
@@ -272,35 +272,6 @@ void PlayListModel::clearSelection()
emit listChanged();
}
-QStringList PlayListModel::getTitles(int b,int l)
-{
- QList <QString> m_titles;
- for (int i = b;(i < b + l) &&(i < m_items.size()); ++i)
- m_titles << m_items.at(i)->text();
- return m_titles;
-}
-
-QStringList PlayListModel::getTimes(int b,int l)
-{
- QStringList times;
- int d = 0;
- QString str;
- for (int i = b; (i < b + l) && (i < m_items.size()); ++i)
- {
- d = m_items.at(i)->length();
- if(d > 3600)
- str += QString("%1:%2").arg(d/3600).arg(d%3600/60, 2, 10, QChar('0'));
- else
- str += QString("%1").arg(d%3600/60);
- str += QString(":%1").arg(d%60, 2, 10, QChar('0'));
- if(!d)
- str.clear();
- times << str;
- str.clear();
- }
- return times;
-}
-
QList<PlayListItem *> PlayListModel::mid(int pos, int count)
{
return m_items.mid(pos, count);
diff --git a/src/qmmpui/playlistmodel.h b/src/qmmpui/playlistmodel.h
index 394c41e2c..a4760b93e 100644
--- a/src/qmmpui/playlistmodel.h
+++ b/src/qmmpui/playlistmodel.h
@@ -174,18 +174,6 @@ public:
*/
bool previous();
/*!
- * Returns a list of the formated titles.
- * @param first First item.
- * @param last Last item.
- */
- QStringList getTitles(int first,int last);
- /*!
- * Returns a list of the formatted durations.
- * @param first First item.
- * @param last Last item.
- */
- QStringList getTimes(int first,int last);
- /*!
* Returns a list of the items, starting at position \b pos
* \param pos First item position.
* \param count A number of items. If \b count is -1 (the default), all items from pos are returned.