removed flip ui from options, flip now automatic in landscape mode, changes with orientation change
load remote http pls and m3u files
+tomamp (0.2.1-maemo2) unstable; urgency=low
+
+ * Icon fix
+
+ -- Tamas Marki <tmarki@gmail.com> Tue, 30 Aug 2010 18:50:00 +0200
+
tomamp (0.2.1-maemo1) unstable; urgency=low
* New application icon
#include "optiondialog.h"
#include "time.h"
-//#define AVOID_INPUT_DIALOG 0
+//#define AVOID_INPUT_DIALOG
MainWindow::MainWindow()
: plman (this), settings (tr ("TomAmp"), "TomAmp"), isPlaying (false)
connect (&plman, SIGNAL (itemUpdated(int)), this, SLOT (itemUpdated (int)));
connect (&plman, SIGNAL (itemRemoved(int)), this, SLOT (itemRemoved (int)));
+ connect (QApplication::desktop(), SIGNAL(resized(int)), this, SLOT(orientationChanged()));
+
Phonon::createPath(mediaObject, audioOutput);
qsrand (time (NULL));
setupShuffleList();
setupActions();
setupMenus();
-/* foreach (QString s, Phonon::BackendCapabilities::availableMimeTypes())
- qDebug () << s;*/
-/* if (settings.value("uiflipped", false).toBool())
- setupUiFlipped();
- else*/
+ QRect screenGeometry = QApplication::desktop()->screenGeometry();
+ portrait = screenGeometry.width() < screenGeometry.height();
setupUi ();
show ();
timeLcd->display("00:00:00");
#endif
}
+void MainWindow::orientationChanged()
+{
+ QRect screenGeometry = QApplication::desktop()->screenGeometry();
+ portrait = screenGeometry.width() < screenGeometry.height();
+ delete centralWidget();
+ setupUi();
+ int current = musicTable->currentRow();
+ playlistChanged(0);
+ musicTable->selectRow(current);
+}
+
+
void MainWindow::addFiles()
{
QString folder = settings.value("LastFolder").toString();
void MainWindow::addUrl()
{
#ifdef AVOID_INPUT_DIALOG
- QString url = "http://war.str3am.com:7970";
+ QString url = "http://streams.bigvibez.com:7000/listen.pls";
#else
QString url = QInputDialog::getText(this, "Get URL", "Please type in the stream URL");
#endif
void MainWindow::setupUi()
{
QToolBar *bar = new QToolBar;
- bool flip = settings.value("uiflipped", false).toBool();
+ bool flip = !portrait;
if(!flip) bar->setOrientation(Qt::Vertical);
bar->setStyleSheet("padding:7px");
void MainWindow::showOptions ()
{
- bool flip = settings.value("uiflipped", false).toBool();
OptionDialog* dlg = new OptionDialog (this, settings);
dlg->exec();
delete dlg;
- if (flip != settings.value("uiflipped", false).toBool())
- {
- delete centralWidget();
- setupUi ();
- }
setOrientation ();
if (headers != settings.value("headers", QStringList ()).toStringList())
{
void upSelected();
void downSelected();
void enqueueSelected();
+ void orientationChanged();
protected:
void contextMenuEvent (QContextMenuEvent*e);
QList<int> shuffleList;
int lastPlayed;
bool isPlaying;
+ bool portrait;
};
#endif
}
sub->addLayout(headerLayout);
mainLayout->addLayout(sub);
- QCheckBox *cb = new QCheckBox (tr ("Flip UI controls"));
- cb->setChecked(settings.value("uiflipped", false).toBool());
- connect (cb, SIGNAL(toggled(bool)), this, SLOT(toggleFlip(bool)));
- mainLayout->addWidget(cb);
setLayout(mainLayout);
setWindowTitle("Settings");
}
-void OptionDialog::toggleFlip (bool val)
-{
- settings.setValue("uiflipped", val);
-}
-
-
void OptionDialog::orderControl (QString link)
{
QString str = sender ()->property("row").toString();
- qDebug () << "Col action " << link << " on " << str;
int i = availableHeaders.indexOf(str);
if (link == "up" && i > 0)
{
delete layout ();
foreach (QObject* child, children ())
delete child;
-// update ();
setupUi();
}
public slots:
private slots:
void orderControl (QString);
- void toggleFlip (bool);
private:
void setupUi ();
QSettings& settings;
#include <QDir>
#include <QUrl>
#include <QMap>
+#include <QTemporaryFile>
+#include <QtNetwork/QNetworkAccessManager>
+#include <QtNetwork/QNetworkReply>
QStringList PlaylistManager::allowedExtensions;
metaInformationResolver = new Phonon::MediaObject(parent);
connect(metaInformationResolver, SIGNAL(stateChanged(Phonon::State,Phonon::State)),
this, SLOT(metaStateChanged(Phonon::State,Phonon::State)));
+ downloadmanager = new QNetworkAccessManager(this);
+ connect(downloadmanager, SIGNAL(finished(QNetworkReply*)),
+ this, SLOT(playlistDownloadFinished(QNetworkReply*)));
}
int PlaylistManager::indexOf(const Phonon::MediaSource &s) const
{
if (fileSupported(string) || string.toLower().startsWith("http"))
{
- items.append(PlaylistItem (string));
+ if (string.toLower().startsWith("http") && ((string.toLower().endsWith("pls")
+ || (string.toLower().endsWith("m3u")))))
+ {
+ downloadmanager->get(QNetworkRequest(QUrl(string)));
+ }
+ else
+ {
+ items.append(PlaylistItem (string));
+ }
}
}
if (items.size () > index)
emit playlistChanged(index);
}
-void PlaylistManager::metaStateChanged(Phonon::State newState, Phonon::State oldState)
+void PlaylistManager::playlistDownloadFinished(QNetworkReply* rep)
+{
+ QTemporaryFile tmp;
+ tmp.open ();
+ tmp.write (rep->readAll());
+ tmp.close ();
+ QString filename = tmp.fileName();
+ int index = items.size();
+ if (rep->url().toString().right(4).toLower() == ".m3u")
+ appendPlaylist(filename);
+ else if (rep->url().toString().right(4).toLower() == ".pls")
+ appendPlaylistPLS(filename);
+ if (items.size () > index)
+ {
+ metaInformationResolver->setCurrentSource(items.at(index).source);
+ lastMetaRead = index;
+ emit playlistChanged (index);
+ }
+}
+
+
+void PlaylistManager::metaStateChanged(Phonon::State newState, Phonon::State /*oldState*/)
{
// NOTE: This is an ugly hack, since the metaInformationResolver doesn't properly load the assigned source when it's in the error state
// In order to properly read the next file we have to set it as current source again when the resolver entered the stopped state after the error
else if (filename.right(4).toLower() == ".pls")
appendPlaylistPLS(filename);
if (items.size () > index)
-// if (!items.isEmpty())
{
metaInformationResolver->setCurrentSource(items.at(index).source);
lastMetaRead = index;
QStringList lines = tmp.split("\n");
foreach (QString l, lines)
{
- if (l.isEmpty() || (!QFileInfo (l).exists() && (l.indexOf("http") != 0)))
+ if (l.isEmpty() || (!QFileInfo (l).exists() && (l.indexOf("http") != 0))
+ || l.trimmed().startsWith("#"))
{
continue;
}
+ l = l.replace("\r", "");
items.append(PlaylistItem (l));
}
}
foreach (QString l, lines)
{
- if (l.isEmpty() || l.trimmed().toLower() == "[playlist]" || l.trimmed().toLower() == "version=2")
+ if (l.isEmpty() || l.trimmed().toLower() == "[playlist]" || l.trimmed().toLower() == "version=2"
+ || l.trimmed().startsWith(";"))
{
continue;
}
+ l = l.replace("\r", "");
if (l.trimmed().toLower().left(4) == "file")
{
QStringList tokens = l.split('=');
#include <phonon/backendcapabilities.h>
+class QNetworkAccessManager;
+class QNetworkReply;
struct PlaylistItem
{
void metaStateChanged(Phonon::State newState, Phonon::State oldState);
void appendPlaylist (const QString& filename);
void appendPlaylistPLS (const QString& filename);
+ void playlistDownloadFinished(QNetworkReply*);
private:
bool fileSupported (const QString& fname) const;
QWidget* parentWidget;
static QStringList allowedExtensions;
int lastMetaRead;
+ QNetworkAccessManager *downloadmanager;
};
#endif // PLAYLISTMANAGER_H
#
#-------------------------------------------------
-QT += core gui phonon
+QT += core gui phonon network
maemo5 { QT += maemo5 }