diff options
author | Ken Moore <ken@pcbsd.org> | 2014-11-03 11:41:29 -0500 |
---|---|---|
committer | Ken Moore <ken@pcbsd.org> | 2014-11-03 11:41:29 -0500 |
commit | 53ce9ffd7903e59a6a215e50c39d8da194c0d42e (patch) | |
tree | 9ebaa097c957e9297f8026f6673af7df0e5fdce7 /lumina-desktop/desktop-plugins/desktopview/DesktopViewPlugin.cpp | |
parent | Large quality of life update to Lumina: (diff) | |
download | lumina-53ce9ffd7903e59a6a215e50c39d8da194c0d42e.tar.gz lumina-53ce9ffd7903e59a6a215e50c39d8da194c0d42e.tar.bz2 lumina-53ce9ffd7903e59a6a215e50c39d8da194c0d42e.zip |
Add a new desktop plugin: desktopview
This plugin provides an area of the screen for automatically displaying icons for anything in the ~/Desktop folder. An icon can be opened/run via a double-click of the mouse.
Diffstat (limited to 'lumina-desktop/desktop-plugins/desktopview/DesktopViewPlugin.cpp')
-rw-r--r-- | lumina-desktop/desktop-plugins/desktopview/DesktopViewPlugin.cpp | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/lumina-desktop/desktop-plugins/desktopview/DesktopViewPlugin.cpp b/lumina-desktop/desktop-plugins/desktopview/DesktopViewPlugin.cpp new file mode 100644 index 00000000..98d132ac --- /dev/null +++ b/lumina-desktop/desktop-plugins/desktopview/DesktopViewPlugin.cpp @@ -0,0 +1,69 @@ +#include "DesktopViewPlugin.h" + +#include <QFileInfo> +#include <QDir> + +#include <LuminaXDG.h> +#include "LSession.h" + + +DesktopViewPlugin::DesktopViewPlugin(QWidget* parent, QString ID) : LDPlugin(parent, ID){ + this->setLayout( new QVBoxLayout()); + this->layout()->setContentsMargins(0,0,0,0); + list = new QListWidget(this); + list->setUniformItemSizes(true); + list->setViewMode(QListView::IconMode); + list->setLayoutMode(QListView::Batched); + list->setBatchSize(10); //keep it snappy + list->setSpacing(2); + list->setSelectionBehavior(QAbstractItemView::SelectItems); + list->setSelectionMode(QAbstractItemView::NoSelection); + list->setStyleSheet( "QListWidget{ background: transparent; }" ); + list->setIconSize(QSize(64,64)); + list->setGridSize(QSize(80,80)); + this->layout()->addWidget(list); + this->setInitialSize(200,300); + watcher = new QFileSystemWatcher(this); + watcher->addPath(QDir::homePath()+"/Desktop"); + connect(watcher, SIGNAL(directoryChanged(QString)), this, SLOT(updateContents()) ); + + connect(list, SIGNAL(itemDoubleClicked(QListWidgetItem*)), this, SLOT(runItem(QListWidgetItem*)) ); + QTimer::singleShot(0,this, SLOT(updateContents()) ); +} + +DesktopViewPlugin::~DesktopViewPlugin(){ + +} + +void DesktopViewPlugin::runItem(QListWidgetItem *item){ + LSession::LaunchApplication("lumina-open \""+item->whatsThis()+"\""); +} + +void DesktopViewPlugin::updateContents(){ + list->clear(); + QDir dir(QDir::homePath()+"/Desktop"); + QFileInfoList files = dir.entryInfoList(QDir::Files | QDir::Dirs | QDir::NoDotAndDotDot, QDir::Name | QDir::Type | QDir::DirsFirst); + for(int i=0; i<files.length(); i++){ + QListWidgetItem *it = new QListWidgetItem; + it->setWhatsThis(files[i].absoluteFilePath()); + if(files[i].isDir()){ + it->setIcon( LXDG::findIcon("folder","") ); + it->setText( files[i].fileName() ); + }else if(files[i].suffix() == "desktop" ){ + bool ok = false; + XDGDesktop desk = LXDG::loadDesktopFile(files[i].absoluteFilePath(), ok); + if(ok){ + it->setIcon( LXDG::findIcon(desk.icon,"") ); + it->setText( desk.name ); + }else{ + //Revert back to a standard file handling + it->setIcon( LXDG::findMimeIcon(files[i].suffix()) ); + it->setText( files[i].fileName() ); + } + }else{ + it->setIcon( LXDG::findMimeIcon(files[i].suffix()) ); + it->setText( files[i].fileName() ); + } + list->addItem(it); + } +}
\ No newline at end of file |