2009年6月19日 星期五

Qt寫的Xmms2播放介面第一版發布.

最新的,看起來有點像樣了,可聽線上廣播,新增時鐘,可調音量,多增一個列表區,面板和按鈕作一些調整,還沒上傳,等在調整好一些在上傳,debian5.0,和ubuntu9.04測試OK,其他版LINUX應該也OK.






























































據續上篇,把空格檔名無法加入xmms2 list,和一些小BUG解掉,增加暫停,添加功能,自動從使用者展開檔案tree,滑鼠小提示.
添加歌曲改成用下面,空格檔名就能加到xmms2 list,試很久才成功
---------------------------------------------------------------------------------
QProcess *myP = new QProcess(this); //宣告QProcess
QStringList arguments;
arguments << "add" <<>

---------------------------------------------------------------------------------
取得user name我在網路上找到,修改一下user_name.replace("\n",""),必須去掉換行,試很久才成功
--------------------------------------------------------------------------------

char text[255];
//FILE *name;
FILE *name;
name = popen("whoami", "r");
fgets(text, sizeof(text), name);
pclose(name);
user_name=text; //使用者name
user_name=user_name.replace("\n",""); //要把換行去掉
user_path = "/home/"+user_name.replace("\n",""); //使用者目錄
----------------------------------------------------------------------------------

開放原碼:

xmms2播放介面下載(new)


來幾張執行結果:















































這張是加了Icon比較漂亮(要先取得Qt執行檔位置,加icon才不會跑掉)

strPath = QApplication::applicationDirPath();//Qt取得執行檔位置

















把介面弄好看一些,加上顯示正在播放歌曲,即時時間,這部份要寫接收信號,搞很久才成功,進度顯示棒還沒完成,比之前那版好多了.
















進度棒也寫好了,主要是處理接收xmms2 status 的信號後,要如何得到一首歌共幾秒,和目前播到第幾秒,QRegExp 是Qt正規表示很像bash shell的正規表示,然後用replace換掉就可得到想要的.





void MainWindow::progressBar_step_set(QString str)
{
QString strx1=str;
QString strx2=str;
QRegExp rx1(" of .*$");
QRegExp rx2("^.* of ");
QString timer_set_str=strx1.replace(rx1,"");
QString timer_max_str=strx2.replace(rx2,"");
QRegExp mrx(":.*$");
QRegExp srx("^.*:");
QString m_timer_set_str=timer_set_str;
QString s_timer_set_str=timer_set_str;
QString msrt_set=m_timer_set_str.replace(mrx,""); //minute_set
QString ssrt_set=s_timer_set_str.replace(srx,""); //second_set
QString m_timer_max_str=timer_max_str;
QString s_timer_max_str=timer_max_str;
QString msrt_max=m_timer_max_str.replace(mrx,""); //minute_max
QString ssrt_max=s_timer_max_str.replace(srx,""); //second_max
int m_set = m_timer_set_str.toInt();
int s_set = s_timer_set_str.toInt();
int m_max = m_timer_max_str.toInt();
int s_max = s_timer_max_str.toInt();
int max_value = m_max*60 + s_max; //整首歌有幾秒
int set_value = m_set*60 + s_set; //正播到第幾秒
ui->progressBar->setValue(set_value);
ui->progressBar->setMaximum(max_value);


}

加上音量控制,還發現只要把串流加到xmms2,就可聽線上廣播(下一版的重點).

沒有留言: