From 8723363378b7eb979af12d73c05f3f9a083f7e33 Mon Sep 17 00:00:00 2001 From: trialuser02 Date: Sun, 16 May 2010 10:13:48 +0000 Subject: added tint2/lxpanel support git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@1736 90c681e8-e032-0410-971d-27865f9a5e38 --- src/ui/CMakeLists.txt | 8 +- src/ui/eqwidget.cpp | 12 +++ src/ui/eqwidget.h | 12 ++- src/ui/playlist.cpp | 12 ++- src/ui/playlist.h | 24 +++-- src/ui/translations/qmmp_cs.ts | 130 ++++++++++++------------ src/ui/translations/qmmp_de.ts | 130 ++++++++++++------------ src/ui/translations/qmmp_hu.ts | 130 ++++++++++++------------ src/ui/translations/qmmp_it.ts | 130 ++++++++++++------------ src/ui/translations/qmmp_lt.ts | 130 ++++++++++++------------ src/ui/translations/qmmp_pl_PL.ts | 130 ++++++++++++------------ src/ui/translations/qmmp_pt_BR.ts | 130 ++++++++++++------------ src/ui/translations/qmmp_ru.ts | 130 ++++++++++++------------ src/ui/translations/qmmp_tr.ts | 130 ++++++++++++------------ src/ui/translations/qmmp_uk_UA.ts | 130 ++++++++++++------------ src/ui/translations/qmmp_zh_CN.ts | 130 ++++++++++++------------ src/ui/translations/qmmp_zh_TW.ts | 130 ++++++++++++------------ src/ui/ui.pro | 13 ++- src/ui/windowsystem.cpp | 205 ++++++++++++++++++++++++++++++++++++++ src/ui/windowsystem.h | 37 +++++++ 20 files changed, 1083 insertions(+), 800 deletions(-) create mode 100644 src/ui/windowsystem.cpp create mode 100644 src/ui/windowsystem.h (limited to 'src/ui') diff --git a/src/ui/CMakeLists.txt b/src/ui/CMakeLists.txt index e30ed1c3c..07987cd9a 100644 --- a/src/ui/CMakeLists.txt +++ b/src/ui/CMakeLists.txt @@ -28,6 +28,10 @@ link_directories(${CMAKE_INSTALL_PREFIX}/${LIB_DIR}) link_directories(${CMAKE_CURRENT_BINARY_DIR}/../qmmpui) link_directories(${CMAKE_CURRENT_BINARY_DIR}/../qmmp) +# X11 +include_directories(${X11_INCLUDE_DIRS}) +link_directories(${X11_LIBRARY_DIRS}) + SET(ui_SRCS fft.c aboutdialog.cpp @@ -80,6 +84,7 @@ SET(ui_SRCS playlistselector.cpp popupwidget.cpp popupsettings.cpp + windowsystem.cpp ) SET(ui_MOC_HDRS @@ -134,6 +139,7 @@ SET(ui_MOC_HDRS playlistselector.h popupwidget.h popupsettings.h + windowsystem.h ) SET(ui_RCCS images/images.qrc stuff.qrc translations/qmmp_locales.qrc) @@ -163,7 +169,7 @@ include_directories(${CMAKE_CURRENT_BINARY_DIR}) ADD_EXECUTABLE(qmmp ${ui_SRCS} ${ui_MOC_SRCS} ${ui_UIS_H} ${ui_RCC_SRCS}) -target_link_libraries(qmmp ${QT_LIBRARIES} libqmmp qmmpui) +target_link_libraries(qmmp ${QT_LIBRARIES} libqmmp qmmpui ${X11_LDFLAGS}) add_dependencies(qmmp qmmpui libqmmp) install(TARGETS qmmp DESTINATION bin) install(FILES qmmp.desktop DESTINATION share/applications) diff --git a/src/ui/eqwidget.cpp b/src/ui/eqwidget.cpp index ba6d82210..176394f35 100644 --- a/src/ui/eqwidget.cpp +++ b/src/ui/eqwidget.cpp @@ -34,6 +34,7 @@ #include "preseteditor.h" #include "mainwindow.h" #include "playlist.h" +#include "windowsystem.h" #include "eqwidget.h" EqWidget::EqWidget (QWidget *parent) @@ -441,6 +442,15 @@ void EqWidget::keyPressEvent (QKeyEvent *ke) QApplication::sendEvent(qobject_cast(parent())->playlist(), &event); } +#ifdef Q_WS_X11 +bool EqWidget::event (QEvent *event) +{ + if(event->type() == QEvent::WinIdChange || event->type() == QEvent::Show) + WindowSystem::ghostWindow(winId()); + return QWidget::event(event); +} +#endif + void EqWidget::updateMask() { clearMask(); @@ -450,3 +460,5 @@ void EqWidget::updateMask() setMask(region); } + + diff --git a/src/ui/eqwidget.h b/src/ui/eqwidget.h index 4417cf1c0..09ead5d9e 100644 --- a/src/ui/eqwidget.h +++ b/src/ui/eqwidget.h @@ -79,7 +79,14 @@ private: void createActions(); void updateMask(); EQPreset *findPreset(const QString &name); + //events virtual void keyPressEvent (QKeyEvent *); + virtual void changeEvent(QEvent*); + virtual void closeEvent(QCloseEvent*); +#ifdef Q_WS_X11 + virtual bool event (QEvent *event); +#endif + Skin *m_skin; EqTitleBar *m_titleBar; EqSlider *m_preamp; @@ -94,11 +101,6 @@ private: QList m_autoPresets; QString m_autoName; bool m_shaded; - -protected: - virtual void changeEvent(QEvent*); - virtual void closeEvent(QCloseEvent*); - }; #endif diff --git a/src/ui/playlist.cpp b/src/ui/playlist.cpp index 248fb3453..fa9a273f2 100644 --- a/src/ui/playlist.cpp +++ b/src/ui/playlist.cpp @@ -40,6 +40,7 @@ #include "keyboardmanager.h" #include "playlistbrowser.h" #include "playlistselector.h" +#include "windowsystem.h" #include #include #include @@ -493,12 +494,21 @@ void PlayList::readSettings() settings.value("General/metacity_compat", false).toBool()) setWindowFlags (Qt::Tool | Qt::FramelessWindowHint); else - setWindowFlags (Qt::Dialog | Qt::FramelessWindowHint); + setWindowFlags (Qt::Dialog | Qt::FramelessWindowHint); move (settings.value ("PlayList/pos", QPoint (100, 332)).toPoint()); //position m_update = true; } } +#ifdef Q_WS_X11 +bool PlayList::event (QEvent *event) +{ + if(event->type() == QEvent::WinIdChange || event->type() == QEvent::Show) + WindowSystem::ghostWindow(winId()); + return QWidget::event(event); +} +#endif + void PlayList::writeSettings() { QSettings settings (Qmmp::configFile(), QSettings::IniFormat); diff --git a/src/ui/playlist.h b/src/ui/playlist.h index 0ca76adfa..ae6ea520e 100644 --- a/src/ui/playlist.h +++ b/src/ui/playlist.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2006-2009 by Ilya Kotov * + * Copyright (C) 2006-2010 by Ilya Kotov * * forkotov02@hotmail.ru * * * * This program is free software; you can redistribute it and/or modify * @@ -92,6 +92,18 @@ class PlayList : public QWidget void writeSettings(); void createMenus(); void createActions(); + //events + virtual void paintEvent (QPaintEvent *); + virtual void resizeEvent (QResizeEvent *); + virtual void mouseMoveEvent (QMouseEvent *); + virtual void mousePressEvent (QMouseEvent *); + virtual void mouseReleaseEvent (QMouseEvent *); + virtual void changeEvent (QEvent*); + virtual void closeEvent (QCloseEvent*); + virtual void keyPressEvent (QKeyEvent*); +#ifdef Q_WS_X11 + virtual bool event (QEvent *event); +#endif QMenu *m_addMenu; QMenu *m_subMenu; QMenu *m_selectMenu; @@ -124,15 +136,7 @@ class PlayList : public QWidget QPointer m_pl_browser; PlayListSelector *m_pl_selector; - protected: - virtual void paintEvent (QPaintEvent *); - virtual void resizeEvent (QResizeEvent *); - virtual void mouseMoveEvent (QMouseEvent *); - virtual void mousePressEvent (QMouseEvent *); - virtual void mouseReleaseEvent (QMouseEvent *); - virtual void changeEvent (QEvent*); - virtual void closeEvent (QCloseEvent*); - virtual void keyPressEvent (QKeyEvent*); + }; #endif diff --git a/src/ui/translations/qmmp_cs.ts b/src/ui/translations/qmmp_cs.ts index fb51a07f3..1de290dfc 100644 --- a/src/ui/translations/qmmp_cs.ts +++ b/src/ui/translations/qmmp_cs.ts @@ -663,53 +663,53 @@ EqWidget - - + + preset předvolba - + &Load/Delete &Načíst/Odstranit - + &Save Preset &Uložit předvolbu - + &Save Auto-load Preset Uložit &automatickou předvolbu - + &Import &Importovat - + &Clear &Vynulovat - + Saving Preset Uložení předvolby - + Preset name: Název předvolby: - + preset # předvolba # - + Import Preset Importovat předvolbu @@ -1133,244 +1133,244 @@ PlayList - + &Add File Přidat &soubor - + F F - + &Add Directory Přidat &adresář - + D D - + &Remove Selected &Odstranit vybrané - + Del Del - + &Remove All Odstranit &vše - + &Remove Unselected Odstranit &nevybrané - + Remove unavailable files Odstranit nedostupné soubory - + Remove duplicates Odstranit duplicity - + &View Track Details Zobrazit &informace o skladbě - + Alt+I Alt+I - + Sort List Seřadit seznam - - + + By Title Podle názvu skladby - - + + By Album Podle alba - - + + By Artist Podle umělce - - + + By Filename Podle názvu souboru - - + + By Path + Filename Podle cesty a názvu souboru - - + + By Date Podle data - + Sort Selection Seřadit výběr - + Randomize List Zamíchat seznam - + Reverse List Obrátit pořadí seznamu - + Invert Selection Invertovat výběr - + &Select None &Zrušit výběr - + Shift+A Shift+A - + &Select All &Vybrat vše - + Ctrl+A Ctrl+A - + &New List &Nový seznam - + Ctrl+T Ctrl+T - + Ctrl+W Ctrl+W - + &Select Next Playlist Vybrat další &seznam skladeb - + Ctrl+PgDown Ctrl+PgDown - + &Select Previous Playlist Vybrat předchozí &seznam skladeb - + Ctrl+PgUp Ctrl+PgUp - + &Show Playlists Zobrazit &seznamy skladeb - + P P - + &Delete List O&dstranit seznam - + &Load List Načíst &seznam - + O O - + &Save List &Uložit seznam - + Shift+S Shift+S - + &Add Url Přidat &URL - + U U - - + + By Track Number Podle čísla skladby - + &Queue &Fronta - + Q Q - + Actions Činnosti diff --git a/src/ui/translations/qmmp_de.ts b/src/ui/translations/qmmp_de.ts index 1531efaea..13ac58449 100644 --- a/src/ui/translations/qmmp_de.ts +++ b/src/ui/translations/qmmp_de.ts @@ -663,53 +663,53 @@ EqWidget - - + + preset Voreinstellung - + &Load/Delete &Laden/Löschen - + &Save Preset &Voreinstellung speichern - + &Save Auto-load Preset &Automatische Voreinstellungen speichern - + &Import &Importieren - + &Clear &Zurücksetzen - + Saving Preset Voreinstellung speichern - + Preset name: Name der Voreinstellung: - + preset # Voreinstellung # - + Import Preset Voreinstellung importieren @@ -1133,244 +1133,244 @@ PlayList - + &Add File &Datei hinzufügen - + F F - + &Add Directory &Verzeichnis hinzufügen - + D D - + &Remove Selected &Ausgewählte entfernen - + Del Entf - + &Remove All Alle &entfernen - + &Remove Unselected &Nicht ausgewählte entfernen - + Remove unavailable files Nichtverfügbare Dateien entfernen - + Remove duplicates - + &View Track Details &Titeldetails anzeigen - + Alt+I Alt+I - + Sort List Wiedergabeliste sortieren - - + + By Title Nach Titel - - + + By Album Nach Album - - + + By Artist Nach Interpret - - + + By Filename Nach Dateinamen - - + + By Path + Filename Nach Pfad + Dateinamen - - + + By Date Nach Datum - + Sort Selection Auswahl sortieren - + Randomize List Wiedergabeliste mischen - + Reverse List Wiedergabeliste umkehren - + Invert Selection Auswahl umkehren - + &Select None &Auswahl aufheben - + Shift+A Umschalt+A - + &Select All Alle aus&wählen - + Ctrl+A Strg+A - + &New List &Neue Wiedergabeliste - + Ctrl+T Strg+T - + Ctrl+W Strg+W - + &Select Next Playlist - + Ctrl+PgDown Strg+Bild ab - + &Select Previous Playlist Vorherige Wiedergabeli&ste auswählen - + Ctrl+PgUp Strg+Bild auf - + &Show Playlists Wiedergabeli&sten anzeigen - + P P - + &Delete List &Liste löschen - + &Load List Wiedergabeliste &laden - + O O - + &Save List Wiedergabeliste &speichern - + Shift+S Umschalt+S - + &Add Url &URL hinzufügen - + U U - - + + By Track Number Nach Titelnummer - + &Queue &Warteschlange - + Q Q - + Actions Aktionen diff --git a/src/ui/translations/qmmp_hu.ts b/src/ui/translations/qmmp_hu.ts index eacff859c..5db987adb 100644 --- a/src/ui/translations/qmmp_hu.ts +++ b/src/ui/translations/qmmp_hu.ts @@ -663,53 +663,53 @@ EqWidget - - + + preset beállítás - + &Load/Delete &Betölt/Töröl - + &Save Preset Beálítás &mentése - + &Save Auto-load Preset &Automatikusan betöltödő beállítás mentése - + &Import &Importálás - + &Clear &Törlés - + Saving Preset Beállítások mentése - + Preset name: Beállítás neve: - + preset # beállítás # - + Import Preset Beállítás importálása @@ -1133,244 +1133,244 @@ PlayList - + &Add File &Fájl hozzáadása - + F F - + &Add Directory &Könyvtár hazááadása - + D D - + &Add Url &Url hozzáadása - + U U - + &Remove Selected &Megjelöltek eltávolítása - + Del Del - + &Remove All &Összes eltávolítása - + &Remove Unselected &Jelöletlenek eltávolítása - + Remove unavailable files Elérhetetlen fájlok eltávolítása - + Remove duplicates Duplikációk eltávolítása - + &View Track Details Szám adatainak &megnézése - + Alt+I Alt+I - + Sort List Lista rendezése - - + + By Title Cím szerint - - + + By Album Album szerint - - + + By Artist Előadó szerint - - + + By Filename Fájlnév szerint - - + + By Path + Filename Elérési út és fájlnév szerint - - + + By Date Dátum szerint - - + + By Track Number Zene sorszáma szerint - + Sort Selection Jelöltek rendezése - + Randomize List Lista összekeverése - + Reverse List Fordított lista - + Actions Tevékenységek - + &Queue &Sorba tesz - + Q Q - + Invert Selection Fordított kijelölés - + &Select None &Kijelölés megszűntetése - + Shift+A Shift+A - + &Select All &Összes kijelölése - + Ctrl+A Ctrl+A - + &New List &Új lista - + Ctrl+T Ctrl+T - + &Delete List &Lista törlése - + Ctrl+W Ctrl+W - + &Select Next Playlist &Következő lista választása - + Ctrl+PgDown Ctrl+PgDown - + &Select Previous Playlist &Előző lista választása - + Ctrl+PgUp Ctrl+PgUp - + &Show Playlists &Lejátszási lista mutatása - + P P - + &Load List &Lista betöltése - + O O - + &Save List Lista &mentése - + Shift+S Shift+S diff --git a/src/ui/translations/qmmp_it.ts b/src/ui/translations/qmmp_it.ts index 2718c43fa..73fccee88 100644 --- a/src/ui/translations/qmmp_it.ts +++ b/src/ui/translations/qmmp_it.ts @@ -663,53 +663,53 @@ EqWidget - - + + preset Impostazione - + &Load/Delete &Carica/Elimina - + &Save Preset &Salva preimpostazione - + &Save Auto-load Preset &Salvare preimpostazioni caricate automaticamente - + &Clear &Cancella - + Saving Preset Salvataggio preimpostazioni - + Preset name: Nome delle preimpostazioni: - + preset # Preimpostazione # - + &Import &Importa - + Import Preset Importa preimpostazione @@ -1133,244 +1133,244 @@ PlayList - + F F - + D D - + Alt+I Alt+I - + Ctrl+A Ctrl+A - + Ctrl+T Ctrl+T - + Ctrl+W Ctrl+W - + O O - + &Add File &Aggiungi brani - + &Add Directory &Aggiungi cartelle - + &Remove Selected &Elimina la selezione - + &Remove All &Elimina tutto - + &Remove Unselected &Elimina i non selezionati - + Remove unavailable files Rimuovi files non disponibili - + Remove duplicates Rimuovi duplicati - + &View Track Details &Dettagli della traccia - + Sort List Riordina la lista - - + + By Title Per titolo - - + + By Album Per album - - + + By Artist PEr interprete - - + + By Filename Per titolo del brano - - + + By Path + Filename per percorso più titolo del brano - - + + By Date Per data - + Sort Selection Riordina la selezione - + Randomize List Mescola i brnai della lista - + Reverse List Inverti la lista - + Invert Selection Inverti la selezione - + &Select None &Non scegliere alcun brano - + Shift+A Shift+A - + &Select All &Seleziona tutto - + &New List &Nuova lista - + &Select Next Playlist &Seleziona la successiva lista esecuzione brani - + Ctrl+PgDown Ctrl+PgDown - + &Select Previous Playlist &Seleziona la rpecedente lista esecuzione brani - + Ctrl+PgUp Ctrl+PgUp - + &Show Playlists Mostra lista esecuzione brani - + P P - + &Delete List &Cancella lista - + &Load List &Carica lista - + &Save List &Salva lista - + Shift+S Shift+S - + Del Canc - + &Add Url &Aggiungi URL - + U U - - + + By Track Number Per numero di traccia - + &Queue &Metti in coda - + Q Q - + Actions Azioni diff --git a/src/ui/translations/qmmp_lt.ts b/src/ui/translations/qmmp_lt.ts index bdb5493f1..430b61cc7 100644 --- a/src/ui/translations/qmmp_lt.ts +++ b/src/ui/translations/qmmp_lt.ts @@ -664,53 +664,53 @@ EqWidget - - + + preset Nustatymas - + &Load/Delete &Įkelti/Pašalinti - + &Save Preset &Išsaugoti nustatymus - + &Save Auto-load Preset &Išsaugoti auto-nustatymą - + &Clear &išvalyti - + Saving Preset Išsaugojamas nustatymas - + Preset name: Nustatymo pavadinimas: - + preset # Nustatymas # - + &Import &Importuoti - + Import Preset Importuoti nustatymus @@ -1134,244 +1134,244 @@ PlayList - + F - + D - + Alt+I - + Ctrl+A - + Ctrl+T - + Ctrl+W - + O - + &Add File &Pridėti bylą - + &Add Directory &Pridėti aplanką - + &Remove Selected &Pašalinti pasirinktus - + &Remove All &Pašalinti visus - + &Remove Unselected &Pašalinti NEpasirinktus - + Remove unavailable files Pašalinti nesamas bylas - + Remove duplicates Pašalinti besidubliuojančius pavadinimus - + &View Track Details &Takelio informacija - + Sort List Rūšiuoti - - + + By Title Pagal dainos pavadinimą - - + + By Album Pagal albumą - - + + By Artist Pagal atlikėją - - + + By Filename Pagal bylos pavadinimą - - + + By Path + Filename Pagal kelią iki bylos - - + + By Date Pagal datą - + Sort Selection Rūšiuoti pasirinktus - + Randomize List Sumaišyti sąrašą - + Reverse List Apversti - + Invert Selection Pasirinkti visus, išskyrus pažymėtą - + &Select None &Nepasirinkti nei vieno - + Shift+A - + &Select All &Pasirinkti visus - + &New List &Naujas sąrašas - + &Select Next Playlist &Pasirinkti sekantį grojaraštį - + Ctrl+PgDown - + &Select Previous Playlist &Pasirinkti ankstesnį grojaraštį - + Ctrl+PgUp - + &Show Playlists &Rodyti grojaraščius - + P - + &Delete List &Pašalinti sąrašą - + &Load List &Įkelti sąrašą - + &Save List &Išsaugoti sąrašą - + Shift+S - + Del - + &Add Url &Pridėti interneto adresą - + U - - + + By Track Number Pagal takelio numerį - + &Queue &Į eilę - + Q - + Actions Veiksmai diff --git a/src/ui/translations/qmmp_pl_PL.ts b/src/ui/translations/qmmp_pl_PL.ts index 374f83fc3..0265dd9eb 100644 --- a/src/ui/translations/qmmp_pl_PL.ts +++ b/src/ui/translations/qmmp_pl_PL.ts @@ -663,53 +663,53 @@ EqWidget - - + + preset profil - + &Load/Delete Wczytaj/&Usuń - + &Save Preset Zapi&sz Profil - + &Save Auto-load Preset Zapi&sz Auto-ładowanie Profilu - + &Clear &Wyczyść - + Saving Preset Zapisywanie Profilu - + Preset name: Nazwa Profilu: - + preset # profil # - + &Import &Importuj - + Import Preset Importuj Profil @@ -1133,244 +1133,244 @@ PlayList - + F F - + D D - + Alt+I Alt+I - + Ctrl+A Ctrl+A - + Ctrl+T - + Ctrl+W - + O O - + &Add File &Dodaj plik - + &Add Directory Dodaj &katalog - + &Remove Selected &Usuń zaznaczone - + &Remove All Usuń &wszystkie - + &Remove Unselected Usuń &niezaznaczone - + Remove unavailable files Usuń niedostępne pliki - + Remove duplicates Usuń duplikaty - + &View Track Details &Pokaż informacje o pliku - + Sort List Sortuj listę - - + + By Title Według nazwy - - + + By Album Według nazwy albumu - - + + By Artist Według artysty - - + + By Filename Według nazwy pliku - - + + By Path + Filename Według Ścieżki + Nazwy pliku - - + + By Date Wg Daty - + Sort Selection Sortuj zaznaczone - + Randomize List Tasuj listę - + Reverse List Odwróć listę - + Invert Selection Odwróć zaznaczenie - + &Select None &Odznacz wszystkie - + Shift+A - + &Select All &Zaznacz wszystkie - + &New List &Nowa lista - + &Select Next Playlist Wybierz na&stępną listę - + Ctrl+PgDown - + &Select Previous Playlist Wybierz poprzednią li&stę - + Ctrl+PgUp - + &Show Playlists Pokaż li&sty odtwarzania - + P - + &Delete List Usuń listę o&dtwarzana - + &Load List &Ładuj listę - + &Save List &Zapisz listę - + Shift+S Shift+S - + Del Del - + &Add Url Dod&aj Url - + U U - - + + By Track Number Wg numeru utworu - + &Queue &Kolejkuj - + Q Q - + Actions Akcje diff --git a/src/ui/translations/qmmp_pt_BR.ts b/src/ui/translations/qmmp_pt_BR.ts index 025f0dad6..7b4d691fc 100644 --- a/src/ui/translations/qmmp_pt_BR.ts +++ b/src/ui/translations/qmmp_pt_BR.ts @@ -663,53 +663,53 @@ EqWidget - - + + preset preset - + &Load/Delete &Carregar/Deletar - + &Save Preset %Salvar preset - + &Save Auto-load Preset &Salvar Auto-Carregar preset - + &Clear &Limpar - + Saving Preset Salvando Preset - + Preset name: Nome Preset: - + preset # Preset # - + &Import &Importar - + Import Preset Importar Preset @@ -1133,244 +1133,244 @@ PlayList - + F - + D - + Alt+I - + Ctrl+A - + Ctrl+T - + Ctrl+W - + O - + &Add File &Adicionar arquivo - + &Add Directory &Adicionar Diretorio - + &Remove Selected &Remover selecionadas - + &Remove All &Remover tudo - + &Remove Unselected &Remover não selecionadas - + Remove unavailable files - + Remove duplicates - + &View Track Details &Ver detalhes da Faixa - + Sort List Classificar lista - - + + By Title Por Título - - + + By Album - - + + By Artist - - + + By Filename Por Nome - - + + By Path + Filename Por Dirertório + Nome - - + + By Date Por Data - + Sort Selection Classificar por Seleção - + Randomize List Lista Eleatória - + Reverse List Lista Revertida - + Invert Selection Inverter Seleção - + &Select None &Nenhum selecionado - + Shift+A - + &Select All &Selecionar tudo - + &New List &Nova lista - + &Select Next Playlist - + Ctrl+PgDown - + &Select Previous Playlist - + Ctrl+PgUp - + &Show Playlists - + P - + &Delete List - + &Load List &Carregar lista - + &Save List &Salvar lista - + Shift+S - + Del - + &Add Url - + U - - + + By Track Number - + &Queue Na fila - + Q - + Actions diff --git a/src/ui/translations/qmmp_ru.ts b/src/ui/translations/qmmp_ru.ts index 4d19b26f2..73e57c3a2 100644 --- a/src/ui/translations/qmmp_ru.ts +++ b/src/ui/translations/qmmp_ru.ts @@ -663,53 +663,53 @@ EqWidget - - + + preset предустановка - + &Load/Delete &Загрузить/Удалить - + &Save Preset &Сохранить предустановку - + &Save Auto-load Preset &Сохранить авто-предустановку - + &Clear &Очистить - + Saving Preset Сохранение предустановки - + Preset name: Имя предустановки: - + preset # предустановка # - + &Import &Импортировать - + Import Preset Импорт предустановки @@ -1133,244 +1133,244 @@ PlayList - + F - + D - + Alt+I - + Ctrl+A - + Ctrl+T - + Ctrl+W - + O - + &Add File &Добавить файл - + &Add Directory &Добавить директорию - + &Remove Selected &Удалить выделенное - + &Remove All &Удалить всё - + &Remove Unselected &Удалить невыделенное - + Remove unavailable files Удалить недоступные файлы - + Remove duplicates Удалить дубликаты - + &View Track Details &Информация - + Sort List Сортировать - - + + By Title По названию - - + + By Album По альбому - - + + By Artist По исполнителю - - + + By Filename По имени файла - - + + By Path + Filename По пути и файлу - - + + By Date По дате - + Sort Selection Сортировать выделенное - + Randomize List Перемешать - + Reverse List Перевернуть - + Invert Selection Инвертировать выделение - + &Select None &Снять выделение - + Shift+A - + &Select All &Выделить всё - + &New List &Новый список - + &Select Next Playlist &Выбрать следующий список - + Ctrl+PgDown - + &Select Previous Playlist &Выбрать предыдущий список - + Ctrl+PgUp - + &Show Playlists &Показать списки - + P - + &Delete List &Удалить список - + &Load List &Загрузить список - + &Save List &Сохранить список - + Shift+S - + Del - + &Add Url &Добавить URL - + U - - + + By Track Number По номеру трека - + &Queue &В очередь - + Q - + Actions Действия diff --git a/src/ui/translations/qmmp_tr.ts b/src/ui/translations/qmmp_tr.ts index 3cd36b57c..398a50e79 100644 --- a/src/ui/translations/qmmp_tr.ts +++ b/src/ui/translations/qmmp_tr.ts @@ -663,53 +663,53 @@ EqWidget - - + + preset tanımlanmış ayar - + &Load/Delete &Yükle/Sil - + &Save Preset Tanımlanmış &Ayarları Kaydet - + &Save Auto-load Preset &Otomatik Tanımlanmış Ayarları Kaydet - + &Clear &Temizle - + Saving Preset Tanımlanmış Ayarla Kaydediliyor - + Preset name: Tanımlanmış ayar adı: - + preset # tanımlanmış ayar # - + &Import &İçe Aktar - + Import Preset Tanımlanmış Ayarları Al @@ -1133,244 +1133,244 @@ PlayList - + F F - + D D - + Alt+I Alt+I - + Ctrl+A Ctrl+A - + Ctrl+T - + Ctrl+W - + O O - + &Add File &Dosya Ekle - + &Add Directory &Dizin Ekle - + &Remove Selected &Seçileni Kaldır - + &Remove All &Hepsini Kaldır - + &Remove Unselected &Seçilmemişleri Kaldır - + Remove unavailable files - + Remove duplicates - + &View Track Details &Parça Detaylarını Göster - + Sort List Listeyi Sınıflandır - - + + By Title Başlığa Göre - - + + By Album - - + + By Artist - - + + By Filename Dosya Adına Göre - - + + By Path + Filename Dosya Yolu + Dosya Adına Göre - - + + By Date Tarihe Göre - + Sort Selection Seçilenleri Sınıflandır - + Randomize List Rastgele Listele - + Reverse List Listeyi Ters Çevir - + Invert Selection Seçimi Tersine Çevir - + &Select None &Hiçbirini Seçme - + Shift+A - + &Select All &Tümünü Seç - + &New List &Yeni Liste - + &Select Next Playlist - + Ctrl+PgDown - + &Select Previous Playlist - + Ctrl+PgUp - + &Show Playlists - + P - + &Delete List - + &Load List &Liste Yükle - + &Save List &Listeyi Kaydet - + Shift+S Shift+S - + Del Del - + &Add Url &Url Ekle - + U U - - + + By Track Number Parça Numarasına Göre - + &Queue &Kuyruğa ekle - + Q Q - + Actions Eylemler diff --git a/src/ui/translations/qmmp_uk_UA.ts b/src/ui/translations/qmmp_uk_UA.ts index cb538418f..670e76447 100644 --- a/src/ui/translations/qmmp_uk_UA.ts +++ b/src/ui/translations/qmmp_uk_UA.ts @@ -663,53 +663,53 @@ EqWidget - - + + preset предвстановлення - + &Load/Delete &Завантажити/Видалити - + &Save Preset &Зберегти предвстановлення - + &Save Auto-load Preset &Зберегти авто-предвстановлення - + &Clear &Очистити - + Saving Preset Збережені предвстановлення - + Preset name: Ім'я предвстановлення: - + preset # предвстановлення # - + &Import &Імпортувати - + Import Preset Імпорт предвстановлення @@ -1133,244 +1133,244 @@ PlayList - + F - + D - + Alt+I - + Ctrl+A - + Ctrl+T - + Ctrl+W - + O - + &Add File &Додати файл - + &Add Directory &Додати теку - + &Remove Selected &Видалити вибране - + &Remove All &Видалити все - + &Remove Unselected &Видалити не вибране - + Remove unavailable files Видалити недоступні файли - + Remove duplicates Видалити дублікати - + &View Track Details &Інформація - + Sort List Сортувати - - + + By Title За назвою - - + + By Album За альбомом - - + + By Artist За артистом - - + + By Filename За ім'ям файлу - - + + By Path + Filename За шляхом та файлом - - + + By Date За датою - + Sort Selection Сортувати вибране - + Randomize List Перемішати - + Reverse List Перевернути - + Invert Selection Інвертувати вибране - + &Select None &Зняти виділення - + Shift+A - + &Select All &Вибрати все - + &New List &Новий список - + &Select Next Playlist Вибрати &наступний список - + Ctrl+PgDown - + &Select Previous Playlist Вибрати &попередній список - + Ctrl+PgUp - + &Show Playlists Показати &всі списки - + P - + &Delete List &Видалити список - + &Load List &Завантажити список - + &Save List &Зберегти список - + Shift+S - + Del - + &Add Url &Додати адресу - + U - - + + By Track Number - + &Queue &В чергу - + Q - + Actions Дії diff --git a/src/ui/translations/qmmp_zh_CN.ts b/src/ui/translations/qmmp_zh_CN.ts index 29d1c4c4d..486c9b0f8 100644 --- a/src/ui/translations/qmmp_zh_CN.ts +++ b/src/ui/translations/qmmp_zh_CN.ts @@ -663,53 +663,53 @@ EqWidget - - + + preset 预设 - + &Load/Delete 载入/删除(&L) - + &Save Preset 保存预设(&S) - + &Save Auto-load Preset 保存自动载入预设(&S) - + &Clear 清除(&C) - + Saving Preset 保存预设 - + Preset name: 预设名称: - + preset # 预设 # - + &Import 导入(&I) - + Import Preset 导入预设 @@ -1133,244 +1133,244 @@ PlayList - + F F - + D D - + Alt+I Alt+I - + Ctrl+A Ctrl+A - + Ctrl+T - + Ctrl+W - + O O - + &Add File 添加文件(&A) - + &Add Directory 添加文件夹(&A) - + &Remove Selected 删除所选(&R) - + &Remove All 删除全部(&R) - + &Remove Unselected 删除未选(&R) - + Remove unavailable files - + Remove duplicates - + &View Track Details 查看音轨详细信息(&V) - + Sort List 列表排序 - - + + By Title 按标题 - - + + By Album - - + + By Artist - - + + By Filename 按文件名 - - + + By Path + Filename 按路径+文件名 - - + + By Date 按日期 - + Sort Selection 选择排序 - + Randomize List 随机产生列表 - + Reverse List 逆序列表 - + Invert Selection 反选 - + &Select None 无选择(&S) - + Shift+A - + &Select All 选择全部(&S) - + &New List 新建列表(&N) - + &Select Next Playlist - + Ctrl+PgDown - + &Select Previous Playlist - + Ctrl+PgUp - + &Show Playlists - + P - + &Delete List - + &Load List 载入列表(&L) - + &Save List 保存列表(&S) - + Shift+S Shift+S - + Del Del - + &Add Url 添加 URL (&A) - + U U - - + + By Track Number 按音轨 - + &Queue 队列(&Q) - + Q Q - + Actions 动作 diff --git a/src/ui/translations/qmmp_zh_TW.ts b/src/ui/translations/qmmp_zh_TW.ts index 46e544bef..aacecbbb3 100644 --- a/src/ui/translations/qmmp_zh_TW.ts +++ b/src/ui/translations/qmmp_zh_TW.ts @@ -663,53 +663,53 @@ EqWidget - - + + preset 預設 - + &Load/Delete 載入/移除(&L) - + &Save Preset 儲存預設(&S) - + &Save Auto-load Preset 儲存自動載入預設(&S) - + &Clear 清除(&C) - + Saving Preset 儲存預設 - + Preset name: 預設名稱: - + preset # 預設 # - + &Import 導入(&I) - + Import Preset 導入預設 @@ -1133,244 +1133,244 @@ PlayList - + F F - + D D - + Alt+I Alt+I - + Ctrl+A Ctrl+A - + Ctrl+T - + Ctrl+W - + O O - + &Add File 添加檔案(&A) - + &Add Directory 添加檔案夾(&A) - + &Remove Selected 移除所選(&R) - + &Remove All 移除全部(&R) - + &Remove Unselected 移除未選(&R) - + Remove unavailable files - + Remove duplicates - + &View Track Details 檢視音軌詳細資訊(&V) - + Sort List 清單排序 - - + + By Title 按標題 - - + + By Album - - + + By Artist - - + + By Filename 按檔名 - - + + By Path + Filename 按路徑+檔名 - - + + By Date 按日期 - + Sort Selection 選取排序 - + Randomize List 隨機產生清單 - + Reverse List 逆串列表 - + Invert Selection 反選 - + &Select None 無選取(&S) - + Shift+A - + &Select All 選取全部(&S) - + &New List 新建清單(&N) - + &Select Next Playlist - + Ctrl+PgDown - + &Select Previous Playlist - + Ctrl+PgUp - + &Show Playlists - + P - + &Delete List - + &Load List 載入清單(&L) - + &Save List 儲存清單(&S) - + Shift+S Shift+S - + Del Del - + &Add Url 添加 URL (&A) - + U U - - + + By Track Number 按音軌 - + &Queue 佇列(&Q) - + Q Q - + Actions 動作 diff --git a/src/ui/ui.pro b/src/ui/ui.pro index c239bef5e..dcd01e573 100644 --- a/src/ui/ui.pro +++ b/src/ui/ui.pro @@ -55,7 +55,8 @@ HEADERS += mainwindow.h \ playlistbrowser.h \ playlistselector.h \ popupwidget.h \ - popupsettings.h + popupsettings.h \ + windowsystem.h SOURCES += mainwindow.cpp \ mp3player.cpp \ button.cpp \ @@ -105,7 +106,8 @@ SOURCES += mainwindow.cpp \ playlistbrowser.cpp \ playlistselector.cpp \ popupwidget.cpp \ - popupsettings.cpp + popupsettings.cpp \ + windowsystem.cpp win32:HEADERS += ../qmmp/visual.h unix { HEADERS += unixdomainsocket.h @@ -143,7 +145,8 @@ unix { icon16.files = images/16x16/qmmp.png icon32.files = images/32x32/qmmp.png icon48.files = images/48x48/qmmp.png - icon_svg.files = images/scalable/qmmp.png images/scalable/qmmp.png + icon_svg.files = images/scalable/qmmp.png \ + images/scalable/qmmp.png icon16.path = /share/icons/hicolor/16x16/apps icon32.path = /share/icons/hicolor/32x32/apps icon48.path = /share/icons/hicolor/48x48/apps @@ -169,3 +172,7 @@ TRANSLATIONS = translations/qmmp_ru.ts \ translations/qmmp_lt.ts \ translations/qmmp_hu.ts +x11{ +CONFIG += link_pkgconfig +PKGCONFIG += x11 +} diff --git a/src/ui/windowsystem.cpp b/src/ui/windowsystem.cpp new file mode 100644 index 000000000..a85748584 --- /dev/null +++ b/src/ui/windowsystem.cpp @@ -0,0 +1,205 @@ +/*************************************************************************** + * Based on Licq * + * Copyright (C) 2006-2009 Licq developers * + * * + * 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., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + ***************************************************************************/ + +#include "windowsystem.h" +#include +#ifdef Q_WS_X11 +#include +#include +#include +#include +#include +#endif + +#ifdef Q_WS_X11 +void WindowSystem::ghostWindow(WId win) +{ + Display* dsp = QX11Info::display(); + Window root = DefaultRootWindow(dsp); + + Atom win_state = XInternAtom(dsp, "_NET_WM_STATE", False); + Atom win_state_add = XInternAtom(dsp, "_NET_WM_STATE_ADD", False); + Atom win_state_settings[] = + { + XInternAtom(dsp, "_NET_WM_STATE_SKIP_TASKBAR", False), + XInternAtom(dsp, "_NET_WM_STATE_SKIP_PAGER", False) + }; + XChangeProperty(dsp, win, win_state, XA_ATOM, 32, PropModeReplace, + reinterpret_cast(&win_state_settings), 2); + + XEvent xev; + xev.type = ClientMessage; + xev.xclient.type = ClientMessage; + xev.xclient.display = dsp; + xev.xclient.window = win; + xev.xclient.message_type = win_state; + xev.xclient.format = 32; + xev.xclient.data.l[0] = win_state_add; + xev.xclient.data.l[1] = win_state_settings[0]; + xev.xclient.data.l[2] = win_state_settings[1]; + + XSendEvent(dsp, root, false, + SubstructureRedirectMask | SubstructureNotifyMask, &xev); +} + +char* WindowSystem::netWindowManagerName() +{ + char* name = NULL; + + Display* dsp = QX11Info::display(); + WId root = DefaultRootWindow(dsp); + + unsigned char* retValue1 = NULL; + unsigned char* retValue2 = NULL; + + retValue1 = getWindowProperty(root, "_NET_SUPPORTING_WM_CHECK"); + if (retValue1 == NULL) + return NULL; + + WId win = *(reinterpret_cast(retValue1)); + + retValue2 = getWindowProperty(win, "_NET_SUPPORTING_WM_CHECK"); + if (retValue2 == NULL) + { + XFree(retValue1); + return NULL; + } + + if (win != *(reinterpret_cast(retValue2))) + { + XFree(retValue1); + XFree(retValue2); + return NULL; + } + + XFree(retValue2); + retValue2 = NULL; + + retValue2 = getWindowProperty(win, "_NET_WM_NAME"); + XFree(retValue1); + if (retValue2 == NULL) + return NULL; + + name = strdup(reinterpret_cast(retValue2)); + + XFree(retValue2); + + return name; +} + +void WindowSystem::changeWinSticky(WId win, bool stick) +{ + qDebug("WindowSystem: setting sticky state of window 0x%lx to %s.\n", + static_cast(win), stick ? "true" : "false"); + Display* dsp = QX11Info::display(); + Window root = DefaultRootWindow(dsp); + + unsigned long desktop = ~(0UL); + + if (!stick) + { + unsigned char* tmp = getWindowProperty(root, "_NET_CURRENT_DESKTOP"); + + if (tmp == NULL) + qWarning("WindowSystem: error reading current desktop property."); + else + { + desktop = *(reinterpret_cast(tmp)); + XFree(tmp); + } + } + + XEvent xev; + xev.type = ClientMessage; + xev.xclient.type = ClientMessage; + xev.xclient.display = dsp; + xev.xclient.window = win; + xev.xclient.message_type = XInternAtom(dsp, "_NET_WM_DESKTOP", False); + xev.xclient.format = 32; + xev.xclient.data.l[0] = desktop; + + XSendEvent(dsp, root, False, + SubstructureRedirectMask | SubstructureNotifyMask, &xev); +} + +unsigned char* WindowSystem::getWindowProperty(WId win, const char* prop) +{ + Display* dsp = QX11Info::display(); + + // We inhibit new Atom creation since if you request for it + // then such Atom most probably exists already. + // Otherwise, no surprise we return NULL here. + Atom reqAtom = XInternAtom(dsp, prop, True); + + if (reqAtom == None) + return NULL; + + int retCheck = None; + Atom retType = None; + int retFormat = 0; + unsigned long retItems = 0UL; + unsigned long retMoreBytes = 0UL; + unsigned char* retValue = NULL; + + // Check if the property exists and calculate its length. + retCheck = XGetWindowProperty(dsp, win, + reqAtom, 0L, 0L, False, AnyPropertyType, + &retType, &retFormat, &retItems, &retMoreBytes, &retValue); + + // The value is most probably empty, since we requested to read + // only 0L length, thus, it's just useless... + if (retValue != NULL) + { + XFree(retValue); + retValue = NULL; + } + + if (retCheck != Success || + retType == None || + retMoreBytes == 0) + return NULL; + + // These are not needed for now. + retCheck = None; + retFormat = 0; + retItems = 0UL; + + // Convert the byte length into 32bit multiples. + if (retMoreBytes % 4 != 0) + retMoreBytes += 4 - retMoreBytes % 4; + retMoreBytes /= 4; + + // Now request the actual property value with correct length and type. + retCheck = XGetWindowProperty(dsp, win, + reqAtom, 0L, retMoreBytes, False, retType, + &retType, &retFormat, &retItems, &retMoreBytes, &retValue); + + if (retCheck != Success || + retMoreBytes != 0) + { + if (retValue != NULL) + XFree(retValue); + return NULL; + } + + return retValue; +} + +#endif diff --git a/src/ui/windowsystem.h b/src/ui/windowsystem.h new file mode 100644 index 000000000..bc317f426 --- /dev/null +++ b/src/ui/windowsystem.h @@ -0,0 +1,37 @@ +/*************************************************************************** + * Based on Licq * + * Copyright (C) 2006-2009 Licq developers * + * * + * 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., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + ***************************************************************************/ + +#ifndef WINDOWSYSTEM_H +#define WINDOWSYSTEM_H + +#include + +class WindowSystem +{ +public: +#ifdef Q_WS_X11 + static void ghostWindow(WId id); + static char* netWindowManagerName(); + static void changeWinSticky(WId win, bool stick); +private: + static unsigned char* getWindowProperty(WId win, const char* prop); +#endif +}; +#endif // WINDOWSYSTEM_H -- cgit v1.2.3-13-gbd6f