Changeset 66e23d4


Ignore:
Timestamp:
05/13/14 06:53:58 (11 months ago)
Author:
Ken Moore <ken@…>
Branches:
master, releng/10.0.2, releng/10.0.3, releng/10.1, releng/10.1.1
Children:
29587c6
Parents:
6cf6893
Message:

Add the ability for lumina-config to be able to change:
(a) the default terminal application
(b) the order/items on the desktop right-click menu (utilitizing another plugin system)

Location:
lumina/lumina-config
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • lumina/lumina-config/LPlugins.cpp

    r6cf6893 r66e23d4  
    1010  LoadPanelPlugins(); 
    1111  LoadDesktopPlugins(); 
     12  LoadMenuPlugins(); 
    1213} 
    1314 
     
    2223  return DESKTOP.keys(); 
    2324} 
     25QStringList LPlugins::menuPlugins(){ 
     26  return MENU.keys(); 
     27} 
    2428 
    2529//Information on individual plugins 
     
    3034LPI LPlugins::desktopPluginInfo(QString plug){ 
    3135  if(DESKTOP.contains(plug)){ return DESKTOP[plug]; } 
     36  else{ return LPI(); } 
     37} 
     38LPI LPlugins::menuPluginInfo(QString plug){ 
     39  if(MENU.contains(plug)){ return MENU[plug]; } 
    3240  else{ return LPI(); } 
    3341} 
     
    8694  //No desktop plugins yet 
    8795} 
     96 
     97void LPlugins::LoadMenuPlugins(){ 
     98  MENU.clear(); 
     99  //Terminal 
     100  LPI info; 
     101    info.name = QObject::tr("Terminal"); 
     102    info.description = QObject::tr("Start the default system terminal."); 
     103    info.ID = "terminal"; 
     104    info.icon = "utilities-terminal"; 
     105  MENU.insert(info.ID, info); 
     106  //Applications 
     107  info = LPI(); //clear it 
     108    info.name = QObject::tr("Applications"); 
     109    info.description = QObject::tr("Show the system applications menu."); 
     110    info.ID = "applications"; 
     111    info.icon = "system-run"; 
     112  MENU.insert(info.ID, info); 
     113  //Line seperator 
     114  info = LPI(); //clear it 
     115    info.name = QObject::tr("Separator"); 
     116    info.description = QObject::tr("Static horizontal line."); 
     117    info.ID = "line"; 
     118    info.icon = "insert-horizontal-rule"; 
     119  MENU.insert(info.ID, info); 
     120  //Settings 
     121  info = LPI(); //clear it 
     122    info.name = QObject::tr("Settings"); 
     123    info.description = QObject::tr("Show the desktop settings menu."); 
     124    info.ID = "settings"; 
     125    info.icon = "configure"; 
     126  MENU.insert(info.ID, info); 
     127 
     128} 
  • lumina/lumina-config/LPlugins.h

    rb464dcd r66e23d4  
    3131        QStringList panelPlugins(); 
    3232        QStringList desktopPlugins(); 
     33        QStringList menuPlugins(); 
    3334        //Information on individual plugins 
    3435        LPI panelPluginInfo(QString); 
    3536        LPI desktopPluginInfo(QString); 
     37        LPI menuPluginInfo(QString); 
    3638 
    3739private: 
    38         QHash<QString, LPI> PANEL, DESKTOP; 
     40        QHash<QString, LPI> PANEL, DESKTOP, MENU; 
    3941        void LoadPanelPlugins(); 
    4042        void LoadDesktopPlugins(); 
     43        void LoadMenuPlugins(); 
    4144}; 
    4245#endif 
  • lumina/lumina-config/mainUI.cpp

    r6cf6893 r66e23d4  
    1414  ppmenu = new QMenu(this); // panel plugin menu 
    1515    ui->tool_tb_addplugin->setMenu(ppmenu); 
     16  mpmenu = new QMenu(this); //menu plugin menu 
     17    ui->tool_menu_add->setMenu(mpmenu); 
    1618  //Be careful about the QSettings setup, it must match the lumina-desktop setup 
    1719  QSettings::setPath(QSettings::NativeFormat, QSettings::UserScope, QDir::homePath()+"/.lumina"); 
     
    4446  connect(ui->tool_tb_rightplugin, SIGNAL(clicked()), this, SLOT(mvRPPlugin()) ); 
    4547  connect(ui->tool_tb_rmplugin, SIGNAL(clicked()), this, SLOT(rmPPlugin()) ); 
     48  // - menu tab 
     49  connect(ui->tool_menu_findterminal, SIGNAL(clicked()), this, SLOT(findTerminalBinary()) ); 
     50  connect(mpmenu, SIGNAL(triggered(QAction*)), this, SLOT(addMenuItem(QAction*)) ); 
     51  connect(ui->tool_menu_rm, SIGNAL(clicked()), this, SLOT(rmMenuItem()) ); 
     52  connect(ui->tool_menu_up, SIGNAL(clicked()), this, SLOT(upMenuItem()) ); 
     53  connect(ui->tool_menu_down, SIGNAL(clicked()), this, SLOT(downMenuItem()) ); 
    4654  //Now finish setting up the UI 
    4755  setupIcons(); 
     
    8492  ui->tool_tb_addpanel->setIcon( LXDG::findIcon("list-add", "") ); 
    8593  ui->tool_tb_rmpanel->setIcon( LXDG::findIcon("list-remove", "") ); 
     94  // - Menu tab 
     95  ui->tool_menu_add->setIcon( LXDG::findIcon("list-add","") ); 
     96  ui->tool_menu_rm->setIcon( LXDG::findIcon("list-remove","") ); 
     97  ui->tool_menu_up->setIcon( LXDG::findIcon("go-up","") ); 
     98  ui->tool_menu_down->setIcon( LXDG::findIcon("go-down","") ); 
     99  ui->tool_menu_findterminal->setIcon( LXDG::findIcon("edit-find","") ); 
     100         
    86101  //  - General UI buttons 
    87102  ui->push_save->setIcon( LXDG::findIcon("document-save","") ); 
     
    89104 
    90105void MainUI::setupMenus(){ 
     106  //Panel Plugin Menu 
    91107  ppmenu->clear(); 
    92108  QStringList plugs = PINFO->panelPlugins(); 
     
    99115    ppmenu->addAction(act); 
    100116  } 
    101    
     117  //Menu Plugin Menu 
     118  mpmenu->clear(); 
     119  plugs = PINFO->menuPlugins(); 
     120  plugs.sort(); 
     121  for(int i=0; i<plugs.length(); i++){ 
     122    LPI info = PINFO->menuPluginInfo(plugs[i]); 
     123    QAction *act = new QAction(  LXDG::findIcon(info.icon,""), info.name, this); 
     124          act->setWhatsThis(info.ID); 
     125          act->setToolTip(info.description); 
     126    mpmenu->addAction(act); 
     127  } 
    102128} 
    103129 
     
    153179  //Now load the current panel settings 
    154180  loadPanelSettings(); 
     181  loadMenuSettings(); 
    155182} 
    156183 
     
    176203    //Panels tab 
    177204    savePanelSettings(); 
     205    saveMenuSettings(); 
    178206    //All done - make sure the changes get saved to file right now 
    179207    settings->sync(); 
     
    283311  if(ui->list_tb_plugins->currentRow()<0){ return; } //no selection 
    284312  delete ui->list_tb_plugins->takeItem( ui->list_tb_plugins->currentRow() ); 
    285    
    286313} 
    287314 
     
    299326  ui->list_tb_plugins->setCurrentRow(row+1); 
    300327} 
     328 
     329//================== 
     330//     Menu Tab Functions 
     331//================== 
     332void MainUI::loadMenuSettings(){ 
     333  // NOTE: These are screen-independent 
     334  //Default terminal binary 
     335  ui->line_menu_terminal->setText( settings->value("default-terminal","xterm").toString() ); 
     336  //Menu Items 
     337  QStringList items = settings->value("menu/itemlist", QStringList() ).toStringList(); 
     338  if(items.isEmpty()){ items << "terminal" << "applications" << "line" << "settings"; } 
     339  //qDebug() << "Menu Items:" << items; 
     340  ui->list_menu_items->clear(); 
     341  for(int i=0; i<items.length(); i++){ 
     342    LPI info = PINFO->menuPluginInfo(items[i]); 
     343    if(info.ID.isEmpty()){ continue; } //invalid plugin 
     344    //qDebug() << "Add Menu Item:" << info.ID; 
     345    QListWidgetItem *item = new QListWidgetItem(); 
     346      item->setWhatsThis( info.ID ); 
     347      item->setIcon( LXDG::findIcon(info.icon,"") ); 
     348      item->setText( info.name ); 
     349      item->setToolTip( info.description ); 
     350    ui->list_menu_items->addItem(item); 
     351  } 
     352} 
     353 
     354void MainUI::saveMenuSettings(){ 
     355  //Default terminal binary 
     356  settings->setValue( "default-terminal", ui->line_menu_terminal->text() ); 
     357  //Menu Items 
     358  QStringList items; 
     359  for(int i=0; i<ui->list_menu_items->count(); i++){ 
     360    items << ui->list_menu_items->item(i)->whatsThis(); 
     361  } 
     362  settings->setValue("menu/itemlist", items); 
     363} 
     364 
     365void MainUI::findTerminalBinary(){ 
     366  QString chkpath = "/usr/local/bin"; 
     367  if(!QFile::exists(chkpath)){ chkpath = QDir::homePath(); } 
     368  QString bin = QFileDialog::getOpenFileName(this, tr("Set Default Terminal Application"), chkpath, tr("Application Binaries (*)") ); 
     369  if( bin.isEmpty() || !QFile::exists(bin) ){ return; } //cancelled 
     370  if( !QFileInfo(bin).isExecutable() ){  
     371    QMessageBox::warning(this, tr("Invalid Binary"), tr("The selected file is not executable!")); 
     372    return; 
     373  } 
     374  ui->line_menu_terminal->setText(bin); 
     375} 
     376 
     377void MainUI::addMenuItem(QAction* act){ 
     378  QListWidgetItem *item = new QListWidgetItem(); 
     379    item->setWhatsThis( act->whatsThis() ); 
     380    item->setIcon( act->icon() ); 
     381    item->setText( act->text() ); 
     382    item->setToolTip( act->toolTip() ); 
     383  ui->list_menu_items->addItem(item); 
     384} 
     385 
     386void MainUI::rmMenuItem(){ 
     387  if(ui->list_menu_items->currentRow()<0){ return; } //no selection 
     388  delete ui->list_menu_items->takeItem( ui->list_menu_items->currentRow() ); 
     389} 
     390 
     391void MainUI::upMenuItem(){ 
     392  int row = ui->list_menu_items->currentRow(); 
     393  if(row<=0){ return; } //no selection or already 0 
     394  ui->list_menu_items->insertItem(row-1, ui->list_menu_items->takeItem(row)); 
     395  ui->list_menu_items->setCurrentRow(row-1);     
     396} 
     397 
     398void MainUI::downMenuItem(){ 
     399  int row = ui->list_menu_items->currentRow(); 
     400  if(row<0 || row==(ui->list_menu_items->count()-1) ){ return; } //no selection or already at end 
     401  ui->list_menu_items->insertItem(row+1, ui->list_menu_items->takeItem(row)); 
     402  ui->list_menu_items->setCurrentRow(row+1);     
     403} 
     404 
  • lumina/lumina-config/mainUI.h

    rb464dcd r66e23d4  
    1212#include <QTimer> 
    1313#include <QFileDialog> 
     14#include <QFile> 
     15#include <QMessageBox> 
    1416 
    1517// libLumina includes 
     
    3739        QDesktopWidget *desktop; 
    3840        LPlugins *PINFO; 
    39         QMenu *ppmenu; 
     41        QMenu *ppmenu, *mpmenu; 
    4042 
    4143        //General purpose functions (not connected to buttons) 
     
    6870        void mvRPPlugin(); 
    6971 
     72        //Menu Tab Functions 
     73        void loadMenuSettings(); 
     74        void saveMenuSettings(); 
     75        void findTerminalBinary(); 
     76        void addMenuItem(QAction*); 
     77        void rmMenuItem(); 
     78        void upMenuItem(); 
     79        void downMenuItem(); 
     80 
    7081}; 
    7182 
  • lumina/lumina-config/mainUI.ui

    r6cf6893 r66e23d4  
    7373      </property> 
    7474      <property name="currentIndex"> 
    75        <number>0</number> 
     75       <number>2</number> 
    7676      </property> 
    7777      <widget class="QWidget" name="tab_background"> 
     
    8181       <layout class="QGridLayout" name="gridLayout"> 
    8282        <item row="1" column="0"> 
    83          <widget class="QListWidget" name="list_backgrounds"/> 
     83         <widget class="QListWidget" name="list_backgrounds"> 
     84          <property name="uniformItemSizes"> 
     85           <bool>true</bool> 
     86          </property> 
     87         </widget> 
    8488        </item> 
    8589        <item row="1" column="1"> 
     
    544548          </widget> 
    545549         </widget> 
     550        </item> 
     551       </layout> 
     552      </widget> 
     553      <widget class="QWidget" name="tab_menus"> 
     554       <attribute name="title"> 
     555        <string>Menu</string> 
     556       </attribute> 
     557       <layout class="QFormLayout" name="formLayout_2"> 
     558        <item row="0" column="0"> 
     559         <widget class="QLabel" name="label_4"> 
     560          <property name="text"> 
     561           <string>Default Terminal:</string> 
     562          </property> 
     563         </widget> 
     564        </item> 
     565        <item row="0" column="1"> 
     566         <layout class="QHBoxLayout" name="horizontalLayout_8"> 
     567          <item> 
     568           <widget class="QLineEdit" name="line_menu_terminal"/> 
     569          </item> 
     570          <item> 
     571           <widget class="QToolButton" name="tool_menu_findterminal"> 
     572            <property name="text"> 
     573             <string notr="true">find</string> 
     574            </property> 
     575           </widget> 
     576          </item> 
     577         </layout> 
     578        </item> 
     579        <item row="2" column="0"> 
     580         <widget class="QLabel" name="label_5"> 
     581          <property name="text"> 
     582           <string>Menu Items:</string> 
     583          </property> 
     584         </widget> 
     585        </item> 
     586        <item row="2" column="1"> 
     587         <layout class="QHBoxLayout" name="horizontalLayout_9"> 
     588          <item> 
     589           <widget class="QListWidget" name="list_menu_items"> 
     590            <property name="uniformItemSizes"> 
     591             <bool>true</bool> 
     592            </property> 
     593           </widget> 
     594          </item> 
     595          <item> 
     596           <layout class="QVBoxLayout" name="verticalLayout_3"> 
     597            <item> 
     598             <widget class="QToolButton" name="tool_menu_add"> 
     599              <property name="text"> 
     600               <string notr="true">ad</string> 
     601              </property> 
     602              <property name="popupMode"> 
     603               <enum>QToolButton::InstantPopup</enum> 
     604              </property> 
     605             </widget> 
     606            </item> 
     607            <item> 
     608             <widget class="QToolButton" name="tool_menu_rm"> 
     609              <property name="text"> 
     610               <string notr="true">rm</string> 
     611              </property> 
     612             </widget> 
     613            </item> 
     614            <item> 
     615             <spacer name="verticalSpacer_4"> 
     616              <property name="orientation"> 
     617               <enum>Qt::Vertical</enum> 
     618              </property> 
     619              <property name="sizeHint" stdset="0"> 
     620               <size> 
     621                <width>20</width> 
     622                <height>40</height> 
     623               </size> 
     624              </property> 
     625             </spacer> 
     626            </item> 
     627            <item> 
     628             <widget class="QToolButton" name="tool_menu_up"> 
     629              <property name="text"> 
     630               <string notr="true">up</string> 
     631              </property> 
     632             </widget> 
     633            </item> 
     634            <item> 
     635             <widget class="QToolButton" name="tool_menu_down"> 
     636              <property name="text"> 
     637               <string notr="true">dn</string> 
     638              </property> 
     639             </widget> 
     640            </item> 
     641           </layout> 
     642          </item> 
     643         </layout> 
    546644        </item> 
    547645       </layout> 
Note: See TracChangeset for help on using the changeset viewer.