src/playerform.cpp \
src/libraryform.cpp \
src/busywidget.cpp \
- src/trackrenderer.cpp
+ src/trackrenderer.cpp \
+ src/config.cpp
HEADERS += src/mainwindow.h \
src/player/player.h \
src/playerform.h \
src/libraryform.h \
src/busywidget.h \
- src/trackrenderer.h
+ src/trackrenderer.h \
+ src/config.h
FORMS += src/ui/mainwindow.ui \
src/ui/playerform.ui \
--- /dev/null
+#include "config.h"
+#include <QString>
+#include <QDir>
+
+using namespace SomePlayer::Storage;
+
+Config::Config()
+{
+ _settings = new QSettings(QString(applicationDir())+"/settings.ini", QSettings::IniFormat);
+}
+
+Config::~Config() {
+ delete _settings;
+}
+
+QString Config::applicationDir() {
+ QString path = QDir::homePath()+"/.someplayer";
+ QDir appdir(path);
+ if (!appdir.exists(path)) {
+ appdir.mkdir(path);
+ }
+ return path;
+}
+
+QVariant Config::getValue(QString key) {
+ return _settings->value(key);
+}
+
+void Config::setValue(QString key, QVariant value) {
+ _settings->setValue(key, value);
+}
--- /dev/null
+#ifndef CONFIG_H
+#define CONFIG_H
+
+#include <QSettings>
+
+namespace SomePlayer {
+ namespace Storage {
+ class Config
+ {
+ public:
+ Config();
+ ~Config();
+ QString applicationDir();
+ QVariant getValue(QString key);
+ void setValue(QString key, QVariant value);
+ private:
+ QSettings *_settings;
+ };
+ };
+};
+
+#endif // CONFIG_H
#include "mediascanner.h"
#include "tagresolver.h"
-#define _DATABASE_PATH_ "/tmp"
-#define _PLAYLISTS_PATH_ "/tmp"
-
// represents media library: tracks, playlists
// it uses different media storages for tracks and playlists
// but dynamic playlits will be stored with tracks into the same storage
#include "library.h"
using namespace SomePlayer::DataObjects;
+using namespace SomePlayer::Storage;
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
- _library = new Library(_DATABASE_PATH_, _PLAYLISTS_PATH_);
+ Config config;
+ _library = new Library(config.applicationDir(), config.applicationDir());
ui->setupUi(this);
connect(ui->actionAbout_Qt, SIGNAL(triggered()), this, SLOT(aboutQt()));
connect(ui->actionAbout, SIGNAL(triggered()), this, SLOT(about()));
using namespace SomePlayer::Playback;
using namespace SomePlayer::DataObjects;
+using namespace SomePlayer::Storage;
Player::Player(QObject *parent) :
QObject(parent)
Phonon::createPath(_player, _output);
int seed = reinterpret_cast<int> (_player);
qsrand(seed);
- _random = false;
- _repeat = false;
+ _random = _config.getValue("playback/random").toBool();
+ _repeat = _config.getValue("playback/repeat").toBool();
_current = -1;
}
play();
}
-void Player::_stateChanged(Phonon::State newState, Phonon::State oldState) {
+void Player::_stateChanged(Phonon::State newState, Phonon::State /*oldState*/) {
switch (newState) {
case Phonon::PlayingState:
if (_state == PLAYER_LOADING) {
void Player::enqueue(int id) {
_queue.enqueue(id);
}
+
+void Player::toggleRandom() {
+ _random = !_random;
+ _config.setValue("playback/random", _random);
+}
+
+void Player::toggleRepeat() {
+ _repeat = !_repeat;
+ _config.setValue("playback/repeat", _repeat);
+}
+
using SomePlayer::DataObjects::Track;
using SomePlayer::DataObjects::TrackMetadata;
using SomePlayer::DataObjects::Playlist;
+using SomePlayer::Storage::Config;
namespace SomePlayer {
namespace Playback {
void next();
void prev();
void setPlaylist(Playlist);
- void toggleRandom() {_random = !_random;}
- void toggleRepeat() {_repeat = !_repeat;}
+ void toggleRandom();
+ void toggleRepeat();
void seek(int);
private slots:
void _stateChanged(Phonon::State, Phonon::State);
Phonon::MediaObject *_player;
Phonon::AudioOutput *_output;
PlayerState _state;
+ Config _config;
void _set_source();
#include <QList>
#include <QMap>
#include <QUrl>
+#include "config.h"
#define _DYNAMIC_PLAYLIST_MAX_COUNT_ 50
}
QSize TrackRenderer::sizeHint(const QStyleOptionViewItem &option, const QModelIndex &/*index*/) const {
- return QSize(option.rect.width(), option.rect.height()/3);
+ return QSize(option.rect.width(), 80);
}
void TrackRenderer::setActiveRow(int r) {