src/coverfinder.cpp \
src/clickablelabel.cpp \
src/settingsform.cpp \
- src/dbusclient.cpp
+ src/dbusclient.cpp \
+ src/fmtxsettingsdialog.cpp
HEADERS += src/mainwindow.h \
src/player/player.h \
src/coverfinder.h \
src/clickablelabel.h \
src/settingsform.h \
- src/dbusclient.h
+ src/dbusclient.h \
+ src/fmtxsettingsdialog.h
FORMS += src/ui/mainwindow.ui \
src/ui/playerform.ui \
src/ui/toolswidget.ui \
src/ui/managelibraryform.ui \
src/ui/directoryview.ui \
- src/ui/settingsform.ui
+ src/ui/settingsform.ui \
+ src/ui/fmtxsettingsdialog.ui
CONFIG += mobility
MOBILITY =
--- /dev/null
+/*
+ * SomePlayer - An alternate music player for Maemo 5
+ * Copyright (C) 2010 Nikolay (somebody) Tischenko <niktischenko@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+
+#include "fmtxsettingsdialog.h"
+#include "ui_fmtxsettingsdialog.h"
+#include "someplayer.h"
+
+using namespace SomePlayer::Storage;
+
+FmtxSettingsDialog::FmtxSettingsDialog(QWidget *parent) :
+ QDialog(parent),
+ ui(new Ui::FmtxSettingsDialog)
+{
+ ui->setupUi(this);
+ Config config;
+ QString station_name = config.getValue("fmtx/station_name").toString();
+ if (station_name.isEmpty()) {
+ station_name = "S.P.";
+ config.setValue("fmtx/station_name", station_name);
+ }
+ int freq = config.getValue("fmtx/frequency").toInt();
+ ui->stationNameLineEdit->setText(station_name);
+ int freq_g = freq/1000;
+ int freq_s = (freq % 1000)/10;
+ freq_g = freq_g > 107 ? 107 : freq_g;
+ freq_g = freq_g < 88 ? 88 : freq_g;
+ ui->freqGWidget->scrollTo(ui->freqGWidget->model()->index(freq_g-88, 0));
+ ui->freqGWidget->setCurrentRow(freq_g-88);
+ ui->freqSWidget->scrollTo(ui->freqSWidget->model()->index(freq_s/5, 0));
+ ui->freqSWidget->setCurrentRow(freq_s/5);
+}
+
+FmtxSettingsDialog::~FmtxSettingsDialog()
+{
+ delete ui;
+}
+
+QString FmtxSettingsDialog::stationName() {
+ return ui->stationNameLineEdit->text();
+}
+
+int FmtxSettingsDialog::frequency() {
+ return (88+ui->freqGWidget->currentRow())*1000+10*(ui->freqSWidget->currentRow()*5);
+}
--- /dev/null
+/*
+ * SomePlayer - An alternate music player for Maemo 5
+ * Copyright (C) 2010 Nikolay (somebody) Tischenko <niktischenko@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+
+#ifndef FMTXSETTINGSDIALOG_H
+#define FMTXSETTINGSDIALOG_H
+
+#include <QDialog>
+
+namespace Ui {
+ class FmtxSettingsDialog;
+}
+
+class FmtxSettingsDialog : public QDialog
+{
+ Q_OBJECT
+
+public:
+ explicit FmtxSettingsDialog(QWidget *parent = 0);
+ ~FmtxSettingsDialog();
+ QString stationName();
+ int frequency();
+
+private:
+ Ui::FmtxSettingsDialog *ui;
+};
+
+#endif // FMTXSETTINGSDIALOG_H
using namespace SomePlayer::DataObjects;
using namespace SomePlayer::Storage;
+using namespace SomePlayer::Playback;
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
connect(_settings_form, SIGNAL(trackColorChanged()), _player_form, SLOT(updateTrackColor()));
connect(_settings_form, SIGNAL(hwZoomPolicyChanged()), this, SLOT(_hw_zoom_policy_changed()));
connect(&_dbus_client, SIGNAL(displayStateChanged(bool)), this, SLOT(_set_display_state(bool)));
+ connect(_settings_form, SIGNAL(fmtxSettingsChanged()), this, SLOT(_fmtx_settings_changed()));
+ connect(_player_form, SIGNAL(trackChanged()), this, SLOT(_update_fmtx_text()));
_player_form->reload(true);
QString mode = config.getValue("ui/orientation").toString();
if (mode == "landscape") {
}
}
}
+
+void MainWindow::_fmtx_settings_changed() {
+ Config config;
+ if (config.getValue("fmtx/enabled").toString() == "yes") {
+ QString station_name = config.getValue("fmtx/station_name").toString();
+ int frequency = config.getValue("fmtx/frequency").toInt();
+ system(QString("fmtx_client -p1 -f%1 -s\"%2\" -t\"%3\" 2>&1 >/dev/null")
+ .arg(frequency)
+ .arg(station_name)
+ .arg(_player_form->playerCaption()).toAscii());
+ } else {
+ system("fmtx_client -p 0 2>&1 >/dev/null");
+ }
+}
+
+void MainWindow::_update_fmtx_text() {
+ Config config;
+ if (config.getValue("fmtx/enabled").toString() == "yes") {
+ system(QString("fmtx_client -t \"%1\" 2>&1 >/dev/null").arg(_player_form->playerCaption()).toAscii());
+ }
+}
void _hw_zoom_policy_changed();
void _set_display_state(bool);
void _zoom_key_pressed(quint32);
+ void _fmtx_settings_changed();
+ void _update_fmtx_text();
private:
PlayerForm *_player_form;
LibraryForm *_library_form;
ui->playlistView->show();
_display_track(track);
_context_menu->actions().at(2)->setText(_lib->isFavorite(track) ? tr("Remove from favorites") : tr("Add to favorites"));
+ emit trackChanged();
}
void PlayerForm::_display_track(Track track) {
void PlayerForm::prev() {
_player->prev();
}
+
+QString PlayerForm::playerCaption() {
+ TrackMetadata meta = _player->current().metadata();
+ return QString("%1 - %2").arg(meta.artist()).arg(meta.title());
+}
~PlayerForm();
bool isEqualizerEnabled() { return _player->equalizerEnabled(); }
bool isEqualizerAvailable() { return _player->equalizerAvailable(); }
+ QString playerCaption();
signals:
void library();
void clearPlaylist();
void refreshLibrary();
void dirView();
+ void trackChanged();
public slots:
void reload(bool);
#include <QDebug>
#include <QFile>
#include "someplayer.h"
+#include "fmtxsettingsdialog.h"
using namespace SomePlayer::Storage;
ui->hwkeysLabel->setEnabled(false);
ui->hwTControlButton->setEnabled(false);
ui->hwVolumeButton->setEnabled(false);
+ ui->fmtxGroupBox->setChecked(false);
if (albumSorting == "alphabet") {
ui->albumsSortAButton->setChecked(true);
}
ui->hwVolumeButton->setChecked(true);
config.setValue("hw/zoom_action", "volume");
}
+ if (config.getValue("fmtx/enabled").toString() == "yes") {
+ ui->fmtxGroupBox->setChecked(true);
+ emit fmtxSettingsChanged();
+ }
if (!QFile::exists(QString(_APPLICATION_PATH_)+"/someplayer_ru.qm")) {
ui->langBox->hide();
} // refactor this when more translations will be added
connect (ui->uiButton, SIGNAL(clicked()), this, SLOT(_toggle_view_ui()));
connect (ui->hwButton, SIGNAL(clicked()), this, SLOT(_toggle_view_hw()));
connect (ui->libraryButton, SIGNAL(clicked()), this, SLOT(_toggle_view_lib()));
+ connect (ui->fmtxSettingsButton, SIGNAL(clicked()), this, SLOT(_open_fmtx_settings()));
+ connect (ui->fmtxGroupBox, SIGNAL(toggled(bool)), this, SLOT(_toggle_fmtx_settings(bool)));
_toggle_view_ui();
setAttribute(Qt::WA_Maemo5StackedWindow);
setWindowFlags(Qt::Window | windowFlags());
ui->orientationGridLayout->addWidget(ui->orientationAButton, 0, 1);
ui->orientationGridLayout->addWidget(ui->orientationPButton, 1, 0, 1, 2);
}
+
+void SettingsForm::_open_fmtx_settings() {
+ FmtxSettingsDialog dialog(this);
+ dialog.exec();
+ Config config;
+ config.setValue("fmtx/station_name", dialog.stationName());
+ config.setValue("fmtx/frequency", dialog.frequency());
+ emit fmtxSettingsChanged();
+}
+
+void SettingsForm::_toggle_fmtx_settings(bool checked) {
+ Config config;
+ config.setValue("fmtx/enabled", checked ? "yes" : "no");
+ emit fmtxSettingsChanged();
+}
void translationChanged();
void trackColorChanged();
void hwZoomPolicyChanged();
+ void fmtxSettingsChanged();
private:
Ui::SettingsForm *ui;
void _toggle_view_ui();
void _toggle_view_lib();
void _toggle_view_hw();
+ void _open_fmtx_settings();
+ void _toggle_fmtx_settings(bool);
};
#endif // SETTINGSFORM_H
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>FmtxSettingsDialog</class>
+ <widget class="QDialog" name="FmtxSettingsDialog">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>607</width>
+ <height>348</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>FMTX Settings</string>
+ </property>
+ <layout class="QFormLayout" name="formLayout">
+ <item row="1" column="1">
+ <widget class="QLineEdit" name="stationNameLineEdit"/>
+ </item>
+ <item row="3" column="0">
+ <widget class="QLabel" name="label_2">
+ <property name="text">
+ <string>Frequency:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="1">
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <item>
+ <widget class="QListWidget" name="freqGWidget">
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>0</height>
+ </size>
+ </property>
+ <item>
+ <property name="text">
+ <string>88</string>
+ </property>
+ <property name="textAlignment">
+ <set>AlignHCenter|AlignVCenter|AlignCenter</set>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>89</string>
+ </property>
+ <property name="textAlignment">
+ <set>AlignHCenter|AlignVCenter|AlignCenter</set>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>90</string>
+ </property>
+ <property name="textAlignment">
+ <set>AlignHCenter|AlignVCenter|AlignCenter</set>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>91</string>
+ </property>
+ <property name="textAlignment">
+ <set>AlignHCenter|AlignVCenter|AlignCenter</set>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>92</string>
+ </property>
+ <property name="textAlignment">
+ <set>AlignHCenter|AlignVCenter|AlignCenter</set>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>93</string>
+ </property>
+ <property name="textAlignment">
+ <set>AlignHCenter|AlignVCenter|AlignCenter</set>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>94</string>
+ </property>
+ <property name="textAlignment">
+ <set>AlignHCenter|AlignVCenter|AlignCenter</set>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>95</string>
+ </property>
+ <property name="textAlignment">
+ <set>AlignHCenter|AlignVCenter|AlignCenter</set>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>96</string>
+ </property>
+ <property name="textAlignment">
+ <set>AlignHCenter|AlignVCenter|AlignCenter</set>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>97</string>
+ </property>
+ <property name="textAlignment">
+ <set>AlignHCenter|AlignVCenter|AlignCenter</set>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>98</string>
+ </property>
+ <property name="textAlignment">
+ <set>AlignHCenter|AlignVCenter|AlignCenter</set>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>99</string>
+ </property>
+ <property name="textAlignment">
+ <set>AlignHCenter|AlignVCenter|AlignCenter</set>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>100</string>
+ </property>
+ <property name="textAlignment">
+ <set>AlignHCenter|AlignVCenter|AlignCenter</set>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>101</string>
+ </property>
+ <property name="textAlignment">
+ <set>AlignHCenter|AlignVCenter|AlignCenter</set>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>102</string>
+ </property>
+ <property name="textAlignment">
+ <set>AlignHCenter|AlignVCenter|AlignCenter</set>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>103</string>
+ </property>
+ <property name="textAlignment">
+ <set>AlignHCenter|AlignVCenter|AlignCenter</set>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>104</string>
+ </property>
+ <property name="textAlignment">
+ <set>AlignHCenter|AlignVCenter|AlignCenter</set>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>105</string>
+ </property>
+ <property name="textAlignment">
+ <set>AlignHCenter|AlignVCenter|AlignCenter</set>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>106</string>
+ </property>
+ <property name="textAlignment">
+ <set>AlignHCenter|AlignVCenter|AlignCenter</set>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>107</string>
+ </property>
+ <property name="textAlignment">
+ <set>AlignHCenter|AlignVCenter|AlignCenter</set>
+ </property>
+ </item>
+ </widget>
+ </item>
+ <item>
+ <widget class="QListWidget" name="freqSWidget">
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>0</height>
+ </size>
+ </property>
+ <item>
+ <property name="text">
+ <string>00</string>
+ </property>
+ <property name="textAlignment">
+ <set>AlignHCenter|AlignVCenter|AlignCenter</set>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>05</string>
+ </property>
+ <property name="textAlignment">
+ <set>AlignHCenter|AlignVCenter|AlignCenter</set>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>10</string>
+ </property>
+ <property name="textAlignment">
+ <set>AlignHCenter|AlignVCenter|AlignCenter</set>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>15</string>
+ </property>
+ <property name="textAlignment">
+ <set>AlignHCenter|AlignVCenter|AlignCenter</set>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>20</string>
+ </property>
+ <property name="textAlignment">
+ <set>AlignHCenter|AlignVCenter|AlignCenter</set>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>25</string>
+ </property>
+ <property name="textAlignment">
+ <set>AlignHCenter|AlignVCenter|AlignCenter</set>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>30</string>
+ </property>
+ <property name="textAlignment">
+ <set>AlignHCenter|AlignVCenter|AlignCenter</set>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>35</string>
+ </property>
+ <property name="textAlignment">
+ <set>AlignHCenter|AlignVCenter|AlignCenter</set>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>40</string>
+ </property>
+ <property name="textAlignment">
+ <set>AlignHCenter|AlignVCenter|AlignCenter</set>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>45</string>
+ </property>
+ <property name="textAlignment">
+ <set>AlignHCenter|AlignVCenter|AlignCenter</set>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>50</string>
+ </property>
+ <property name="textAlignment">
+ <set>AlignHCenter|AlignVCenter|AlignCenter</set>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>55</string>
+ </property>
+ <property name="textAlignment">
+ <set>AlignHCenter|AlignVCenter|AlignCenter</set>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>60</string>
+ </property>
+ <property name="textAlignment">
+ <set>AlignHCenter|AlignVCenter|AlignCenter</set>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>65</string>
+ </property>
+ <property name="textAlignment">
+ <set>AlignHCenter|AlignVCenter|AlignCenter</set>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>70</string>
+ </property>
+ <property name="textAlignment">
+ <set>AlignHCenter|AlignVCenter|AlignCenter</set>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>75</string>
+ </property>
+ <property name="textAlignment">
+ <set>AlignHCenter|AlignVCenter|AlignCenter</set>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>80</string>
+ </property>
+ <property name="textAlignment">
+ <set>AlignHCenter|AlignVCenter|AlignCenter</set>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>85</string>
+ </property>
+ <property name="textAlignment">
+ <set>AlignHCenter|AlignVCenter|AlignCenter</set>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>90</string>
+ </property>
+ <property name="textAlignment">
+ <set>AlignHCenter|AlignVCenter|AlignCenter</set>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>95</string>
+ </property>
+ <property name="textAlignment">
+ <set>AlignHCenter|AlignVCenter|AlignCenter</set>
+ </property>
+ </item>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item row="4" column="1">
+ <widget class="QDialogButtonBox" name="buttonBox">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="standardButtons">
+ <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="0">
+ <widget class="QLabel" name="label">
+ <property name="text">
+ <string>Station:</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <resources/>
+ <connections>
+ <connection>
+ <sender>buttonBox</sender>
+ <signal>accepted()</signal>
+ <receiver>FmtxSettingsDialog</receiver>
+ <slot>accept()</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>248</x>
+ <y>254</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>157</x>
+ <y>274</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>buttonBox</sender>
+ <signal>rejected()</signal>
+ <receiver>FmtxSettingsDialog</receiver>
+ <slot>reject()</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>316</x>
+ <y>260</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>286</x>
+ <y>274</y>
+ </hint>
+ </hints>
+ </connection>
+ </connections>
+</ui>
<item>
<widget class="QPushButton" name="hwButton">
<property name="text">
- <string>Hardware</string>
+ <string>System</string>
</property>
<property name="checkable">
<bool>true</bool>
<property name="currentIndex">
<number>2</number>
</property>
- <widget class="QWidget" name="stackedWidgetPage1" native="true">
+ <widget class="QWidget" name="stackedWidgetPage1">
<layout class="QVBoxLayout" name="verticalLayout_13">
<property name="spacing">
<number>0</number>
</item>
</layout>
</widget>
- <widget class="QWidget" name="stackedWidgetPage2" native="true">
+ <widget class="QWidget" name="stackedWidgetPage2">
<layout class="QVBoxLayout" name="verticalLayout_15">
<property name="spacing">
<number>0</number>
</item>
</layout>
</widget>
- <widget class="QWidget" name="stackedWidgetPage3" native="true">
+ <widget class="QWidget" name="stackedWidgetPage3">
<layout class="QVBoxLayout" name="verticalLayout_17">
<property name="spacing">
<number>0</number>
</widget>
</item>
<item>
+ <widget class="QGroupBox" name="fmtxGroupBox">
+ <property name="title">
+ <string>Use FMTX</string>
+ </property>
+ <property name="checkable">
+ <bool>true</bool>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout_6">
+ <property name="spacing">
+ <number>6</number>
+ </property>
+ <property name="leftMargin">
+ <number>0</number>
+ </property>
+ <property name="rightMargin">
+ <number>0</number>
+ </property>
+ <property name="bottomMargin">
+ <number>0</number>
+ </property>
+ <item>
+ <widget class="QLabel" name="label">
+ <property name="text">
+ <string/>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="fmtxSettingsButton">
+ <property name="text">
+ <string>Settings</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item>
<spacer name="verticalSpacer_3">
<property name="orientation">
<enum>Qt::Vertical</enum>