aboutsummaryrefslogtreecommitdiff
path: root/lumina-desktop/panel-plugins/systemstart/ItemWidget.cpp
diff options
context:
space:
mode:
authorKen Moore <moorekou@gmail.com>2016-04-25 13:08:12 -0400
committerKen Moore <moorekou@gmail.com>2016-04-25 13:08:12 -0400
commited5ecf7ea7a482b4649e66ecb35fbc60af680684 (patch)
treeacc0fa17d228259e847f55c678db9fb0a9b50f0c /lumina-desktop/panel-plugins/systemstart/ItemWidget.cpp
parentMerge branch 'master' of github.com:pcbsd/lumina (diff)
downloadlumina-ed5ecf7ea7a482b4649e66ecb35fbc60af680684.tar.gz
lumina-ed5ecf7ea7a482b4649e66ecb35fbc60af680684.tar.bz2
lumina-ed5ecf7ea7a482b4649e66ecb35fbc60af680684.zip
Rearrange the Lumina source tree quite a bit:
Now the utilites are arranged by category (core, core-utils, desktop-utils), so all the -utils may be excluded by a package system (or turned into separate packages) as needed.
Diffstat (limited to 'lumina-desktop/panel-plugins/systemstart/ItemWidget.cpp')
-rw-r--r--lumina-desktop/panel-plugins/systemstart/ItemWidget.cpp256
1 files changed, 0 insertions, 256 deletions
diff --git a/lumina-desktop/panel-plugins/systemstart/ItemWidget.cpp b/lumina-desktop/panel-plugins/systemstart/ItemWidget.cpp
deleted file mode 100644
index bdd13b18..00000000
--- a/lumina-desktop/panel-plugins/systemstart/ItemWidget.cpp
+++ /dev/null
@@ -1,256 +0,0 @@
-//===========================================
-// Lumina-DE source code
-// Copyright (c) 2014-2015, Ken Moore
-// Available under the 3-clause BSD license
-// See the LICENSE file for full details
-//===========================================
-#include "ItemWidget.h"
-#include <LuminaUtils.h>
-#include <QMenu>
-#include "../../LSession.h"
-
-
-ItemWidget::ItemWidget(QWidget *parent, QString itemPath, QString type, bool goback) : QFrame(parent){
- createWidget();
- //Now fill it appropriately
- bool inHome = type.endsWith("-home"); //internal code
- if(inHome){ type = type.remove("-home"); }
- if(itemPath.endsWith(".desktop") || type=="app"){
- bool ok = false;
- XDGDesktop item = LXDG::loadDesktopFile(itemPath, ok);
- if(ok && LXDG::checkValidity(item) ){
- icon->setPixmap( LXDG::findIcon(item.icon, "preferences-system-windows-actions").pixmap(32,32) );
- iconPath = item.icon;
- text = item.name;
- if(!item.genericName.isEmpty() && item.name!=item.genericName){ text.append("<br><i> -- "+item.genericName+"</i>"); }
- name->setText(text);
- name->setToolTip(item.comment);
- setupActions(item);
- }else{
- gooditem = false;
- return;
- }
- }else if(type=="dir"){
- actButton->setVisible(false);
- if(itemPath.endsWith("/")){ itemPath.chop(1); }
- if(goback){
- icon->setPixmap( LXDG::findIcon("go-previous","").pixmap(64,64) );
- iconPath = "go-previous";
- text = tr("Go Back");
- name->setText( text );
- }else{
- icon->setPixmap( LXDG::findIcon("folder","").pixmap(64,64) );
- iconPath = "folder";
- name->setText( itemPath.section("/",-1));
- text = itemPath.section("/",-1);
- }
- }else if(type.startsWith("chcat::::")){
- //Category given
- actButton->setVisible(false);
- iconPath = LXDG::DesktopCatToIcon(type.section("::::",1,50));
- if(goback){ iconPath = "go-previous"; type = "chcat::::"; itemPath = "<B>("+itemPath+")</B>"; }
- icon->setPixmap( LXDG::findIcon(iconPath,"applications-other").pixmap(64,64) );
- name->setText(itemPath);
- text = itemPath;
- icon->setWhatsThis(type);
- linkPath = type;
- }else{
- actButton->setVisible(false);
- if(itemPath.endsWith("/")){ itemPath.chop(1); }
- if(QFileInfo(itemPath).isDir()){
- type = "dir";
- icon->setPixmap( LXDG::findIcon("folder","").pixmap(64,64) );
- iconPath = "folder";
- }else if(LUtils::imageExtensions().contains(itemPath.section("/",-1).section(".",-1).toLower()) ){
- icon->setPixmap( QIcon(itemPath).pixmap(64,64) );
- }else{
- icon->setPixmap( LXDG::findMimeIcon(itemPath.section("/",-1)).pixmap(64,64) );
- }
- name->setText( itemPath.section("/",-1) ); //this->fontMetrics().elidedText(itemPath.section("/",-1), Qt::ElideRight, TEXTCUTOFF) );
- text = itemPath.section("/",-1) ;
- }
- icon->setWhatsThis(itemPath);
- if(!goback){ this->setWhatsThis(name->text()); }
- isDirectory = (type=="dir"); //save this for later
- if(LUtils::isFavorite(itemPath)){
- linkPath = itemPath;
- isShortcut=true;
- }else if( inHome ){//|| itemPath.section("/",0,-2)==QDir::homePath()+"/Desktop" ){
- isShortcut = true;
- }else{
- isShortcut = false;
- }
- if(isShortcut && name->toolTip().isEmpty()){
- name->setToolTip(icon->whatsThis()); //also allow the user to see the full shortcut path
- }
- //Now setup the button appropriately
- setupContextMenu();
-}
-
-// - Application constructor
-ItemWidget::ItemWidget(QWidget *parent, XDGDesktop item) : QFrame(parent){
- createWidget();
- isDirectory = false;
- if(LUtils::isFavorite(item.filePath)){
- linkPath = item.filePath;
- isShortcut=true;
- }else if( item.filePath.section("/",0,-2)==QDir::homePath()+"/Desktop" ){
- isShortcut = true;
- }else{
- isShortcut = false;
- }
- if(isShortcut){
- name->setToolTip(icon->whatsThis()); //also allow the user to see the full shortcut path
- }
- //Now fill it appropriately
- icon->setPixmap( LXDG::findIcon(item.icon,"preferences-system-windows-actions").pixmap(64,64) );
- text = item.name;
- if(!item.genericName.isEmpty() && item.name!=item.genericName){ text.append("<br><i> -- "+item.genericName+"</i>"); }
- name->setText(text);
- name->setToolTip(item.comment);
- this->setWhatsThis(item.name);
- icon->setWhatsThis(item.filePath);
- iconPath = item.icon;
- //Now setup the buttons appropriately
- setupContextMenu();
- setupActions(item);
-}
-
-ItemWidget::~ItemWidget(){
-}
-
-void ItemWidget::createWidget(){
- //Initialize the widgets
- gooditem = true;
- menuopen = false;
- menureset = new QTimer(this);
- menureset->setSingleShot(true);
- menureset->setInterval(1000); //1 second
- this->setContentsMargins(0,0,0,0);
- contextMenu = new QMenu();
- connect(contextMenu, SIGNAL(aboutToShow()), this, SLOT(actionMenuOpen()) );
- connect(contextMenu, SIGNAL(aboutToHide()), this, SLOT(actionMenuClosed()) );
- actButton = new QToolButton(this);
- actButton->setPopupMode(QToolButton::InstantPopup);
- actButton->setArrowType(Qt::DownArrow);
- icon = new QLabel(this);
- name = new QLabel(this);
- name->setWordWrap(true);
- name->setTextFormat(Qt::RichText);
- name->setTextInteractionFlags(Qt::NoTextInteraction);
- //Add them to the layout
- this->setLayout(new QHBoxLayout());
- this->layout()->setContentsMargins(1,1,1,1);
- this->layout()->addWidget(icon);
- this->layout()->addWidget(actButton);
- this->layout()->addWidget(name);
- //Set a custom object name so this can be tied into the Lumina Theme stylesheets
- this->setObjectName("LuminaItemWidget");
-}
-
-void ItemWidget::setupContextMenu(){
- //Now refresh the context menu
- contextMenu->clear();
- if(!QFile::exists(QDir::homePath()+"/Desktop/"+icon->whatsThis().section("/",-1)) ){
- //Does not have a desktop link
- contextMenu->addAction( LXDG::findIcon("preferences-desktop-icons",""), tr("Pin to Desktop"), this, SLOT(PinToDesktop()) );
- }
- //Favorite Item
- if( LUtils::isFavorite(icon->whatsThis()) ){ //Favorite Item - can always remove this
- contextMenu->addAction( LXDG::findIcon("edit-delete",""), tr("Remove from Favorites"), this, SLOT(RemoveFavorite()) );
- }else{
- //This file does not have a shortcut yet -- allow the user to add it
- contextMenu->addAction( LXDG::findIcon("bookmark-toolbar",""), tr("Add to Favorites"), this, SLOT(AddFavorite()) );
- }
- //QuickLaunch Item
- if(LSession::handle()->sessionSettings()->value("QuicklaunchApps",QStringList()).toStringList().contains(icon->whatsThis()) ){ //Favorite Item - can always remove this
- contextMenu->addAction( LXDG::findIcon("edit-delete",""), tr("Remove from Quicklaunch"), this, SLOT(RemoveQL()) );
- }else{
- //This file does not have a shortcut yet -- allow the user to add it
- contextMenu->addAction( LXDG::findIcon("quickopen",""), tr("Add to Quicklaunch"), this, SLOT(AddQL()) );
- }
-}
-
-void ItemWidget::setupActions(XDGDesktop app){
- if(app.actions.isEmpty()){ actButton->setVisible(false); return; }
- //Actions Available - go ahead and list them all
- actButton->setMenu( new QMenu(this) );
- for(int i=0; i<app.actions.length(); i++){
- QAction *act = new QAction(LXDG::findIcon(app.actions[i].icon, app.icon), app.actions[i].name, this);
- act->setToolTip(app.actions[i].ID);
- act->setWhatsThis(app.actions[i].ID);
- actButton->menu()->addAction(act);
- }
- connect(actButton->menu(), SIGNAL(triggered(QAction*)), this, SLOT(actionClicked(QAction*)) );
- connect(actButton->menu(), SIGNAL(aboutToShow()), this, SLOT(actionMenuOpen()) );
- connect(actButton->menu(), SIGNAL(aboutToHide()), this, SLOT(actionMenuClosed()) );
- connect(menureset, SIGNAL(timeout()), this, SLOT(resetmenuflag()) );
-}
-
-void ItemWidget::updateItems(){
- //update the text/icon to match sizes
- int H = 2.3*name->fontMetrics().height(); //make sure the height is large enough for two lines
- icon->setFixedSize(QSize(H-4, H-4));
- actButton->setFixedSize( QSize( (H-4)/2, H-4) );
- QStringList newname = text.split("<br>");
- for(int i=0; i<newname.length(); i++){ newname[i] = name->fontMetrics().elidedText(newname[i], Qt::ElideRight, name->width()); }
- name->setText( newname.join("<br>") );
- //Now reload the icon if necessary
- if(icon->pixmap()->size().height() < (H-4) ){
- if(iconPath.isEmpty()){
- //Use item path (thumbnail or mimetype)
- if(LUtils::imageExtensions().contains(icon->whatsThis().section("/",-1).section(".",-1).toLower()) ){
- icon->setPixmap( QIcon(icon->whatsThis()).pixmap(H-4,H-4).scaledToHeight(H-4,Qt::SmoothTransformation) );
- }else{
- icon->setPixmap( LXDG::findMimeIcon(icon->whatsThis().section("/",-1)).pixmap(H-4,H-4).scaledToHeight(H-4,Qt::SmoothTransformation) );
- }
- }else{
- icon->setPixmap( LXDG::findIcon(iconPath,"preferences-system-windows-actions").pixmap(H-4,H-4).scaledToHeight(H-4,Qt::SmoothTransformation) );
- }
- }else if(icon->pixmap()->size().height() > (H-4) ){
- icon->setPixmap( icon->pixmap()->scaled(H-4, H-4, Qt::IgnoreAspectRatio, Qt::SmoothTransformation) );
- }
-}
-
-void ItemWidget::PinToDesktop(){
- qDebug() << "Create Link on Desktop:" << icon->whatsThis();
- bool ok = QFile::link(icon->whatsThis(), QDir::homePath()+"/Desktop/"+icon->whatsThis().section("/",-1));
- qDebug() << " - " << (ok ? "Success": "Failure");
-}
-
-void ItemWidget::RemoveFavorite(){
- LUtils::removeFavorite(icon->whatsThis());
- linkPath.clear();
- emit RemovedShortcut();
-}
-
-void ItemWidget::AddFavorite(){
- if( LUtils::addFavorite(icon->whatsThis()) ){
- linkPath = icon->whatsThis();
- emit NewShortcut();
- }
-
-}
-void ItemWidget::RemoveQL(){
- qDebug() << "Remove QuickLaunch Button:" << icon->whatsThis();
- emit toggleQuickLaunch(icon->whatsThis(), false);
-}
-
-void ItemWidget::AddQL(){
- qDebug() << "Add QuickLaunch Button:" << icon->whatsThis();
- emit toggleQuickLaunch(icon->whatsThis(), true);
-}
-
-
-void ItemWidget::ItemClicked(){
- if(!linkPath.isEmpty()){ emit RunItem(linkPath); }
- else{ emit RunItem(icon->whatsThis()); }
-}
-
-void ItemWidget::actionClicked(QAction *act){
- actButton->menu()->hide();
- QString cmd = "lumina-open -action \""+act->whatsThis()+"\" \"%1\"";
- if(!linkPath.isEmpty()){ cmd = cmd.arg(linkPath); }
- else{ cmd = cmd.arg(icon->whatsThis()); }
- emit RunItem(cmd);
-} \ No newline at end of file
bgstack15