Changeset 603a75a


Ignore:
Timestamp:
06/23/14 13:33:31 (9 months ago)
Author:
Ken Moore <ken@…>
Branches:
master, releng/10.0.3, releng/10.1, releng/10.1.1
Children:
f100c57d
Parents:
fd6b78d
Message:

Add a ton of keyboard shortcuts to lumina-fm, and also add the ability to manually type/browse directories.

Location:
lumina/lumina-fm
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • lumina/lumina-fm/MainUI.cpp

    rad7e6ca r603a75a  
    2929    ui->tree_dir_view->sortByColumn(0,Qt::AscendingOrder); 
    3030    ui->tree_dir_view->setContextMenuPolicy(Qt::CustomContextMenu); 
     31  dirCompleter = new QCompleter(fsmod, this); 
     32    currentDir->setCompleter(dirCompleter); 
    3133  snapmod = new QFileSystemModel(this); 
    3234    ui->tree_zfs_dir->setModel(snapmod); 
    3335    ui->tree_zfs_dir->sortByColumn(0, Qt::AscendingOrder); 
    3436  contextMenu = new QMenu(this); 
     37  //Setup any specialty keyboard shortcuts 
     38  nextTabLShort = new QShortcut( QKeySequence(tr("Shift+Left")), this); 
     39  nextTabRShort = new QShortcut( QKeySequence(tr("Shift+Right")), this); 
     40  closeTabShort = new QShortcut( QKeySequence(tr("Ctrl+W")), this); 
     41  //Finish loading the interface 
    3542  setupIcons(); 
    3643  setupConnections(); 
     
    6370         
    6471  //Setup all the icons using libLumina 
    65   ui->actionClose->setIcon( LXDG::findIcon("application-close","") ); 
     72  ui->actionClose->setIcon( LXDG::findIcon("application-exit","") ); 
    6673  ui->actionNew_Tab->setIcon( LXDG::findIcon("tab-new-background","") ); 
    6774  ui->action_Preferences->setIcon( LXDG::findIcon("configure","") ); 
     
    93100 
    94101void MainUI::setupConnections(){ 
     102  connect(QApplication::instance(), SIGNAL(focusChanged(QWidget*, QWidget*)), this, SLOT(startEditDir(QWidget*, QWidget*)) ); 
    95103  connect(tabBar, SIGNAL(currentChanged(int)), this, SLOT(tabChanged(int)) ); 
    96104  connect(tabBar, SIGNAL(tabCloseRequested(int)), this, SLOT(tabClosed(int)) ); 
    97105  connect(ui->tree_dir_view, SIGNAL(customContextMenuRequested(const QPoint&)), this, SLOT(OpenContextMenu(const QPoint&)) ); 
    98106  connect(ui->menuBookmarks, SIGNAL(triggered(QAction*)), this, SLOT(goToBookmark(QAction*)) ); 
     107  connect(currentDir, SIGNAL(returnPressed()), this, SLOT(goToDirectory())); 
     108         
    99109  //Tree Widget interaction 
    100   connect(ui->tree_dir_view, SIGNAL(doubleClicked(const QModelIndex &)), this, SLOT(ItemRun(const QModelIndex &)) ); 
     110  connect(ui->tree_dir_view, SIGNAL(activated(const QModelIndex &)), this, SLOT(ItemRun(const QModelIndex &)) ); 
     111  connect(fsmod, SIGNAL(directoryLoaded(QString)), this, SLOT(directoryLoaded()) ); 
    101112         
    102113  //Page Switching 
     
    114125         
    115126  //ZFS Restore page 
     127  connect(snapmod, SIGNAL(directoryLoaded(QString)), this, SLOT(snapshotLoaded()) ); 
    116128  connect(ui->slider_zfs_snapshot, SIGNAL(valueChanged(int)), this, SLOT(showSnapshot()) ); 
    117129  connect(ui->tool_zfs_nextSnap, SIGNAL(clicked()), this, SLOT(nextSnapshot()) ); 
    118130  connect(ui->tool_zfs_prevSnap, SIGNAL(clicked()), this, SLOT(prevSnapshot()) ); 
    119131  connect(ui->tool_zfs_restoreItem, SIGNAL(clicked()), this, SLOT(restoreItems()) ); 
     132   
     133  //Special Keyboard Shortcuts 
     134  connect(nextTabLShort, SIGNAL(activated()), this, SLOT( prevTab() ) ); 
     135  connect(nextTabRShort, SIGNAL(activated()), this, SLOT( nextTab() ) ); 
     136  connect(closeTabShort, SIGNAL(activated()), this, SLOT( tabClosed() ) ); 
    120137} 
    121138 
     
    160177 
    161178QString MainUI::getCurrentDir(){ 
    162   QString dir = currentDir->text(); 
    163         dir.replace("~/", QDir::homePath()+"/"); 
    164   return dir; 
     179  return currentDir->whatsThis(); 
    165180} 
    166181 
    167182void MainUI::setCurrentDir(QString dir){ 
    168   if(dir.isEmpty() || !QFile::exists(dir)){  
     183  if(dir.isEmpty()){ return; } 
     184  QFileInfo info(dir); 
     185  if(!info.isDir() || !info.exists() ){  
    169186    qDebug() << "Invalid Directory:" << dir; 
    170187    return;  
    171188  } //do nothing 
    172189  //qDebug() << "Show Directory:" << dir; 
     190  isUserWritable = info.isWritable(); 
    173191  if(dir.endsWith("/") && dir!="/" ){ dir.chop(1); } 
     192  currentDir->setWhatsThis(dir); //save the full path internally 
    174193  QString rawdir = dir; 
    175194  //Update the directory viewer and update the line edit 
     
    207226  //Check for ZFS snapshots not implemented yet! 
    208227  snapDirs.clear(); //clear the internal variable 
     228  if(!isUserWritable){ return; } //cannot restore files into a non-writable directory 
    209229  //Now recursively try to find snapshots of this directory 
    210230  QString cdir = getCurrentDir(); 
     
    337357} 
    338358 
     359void MainUI::on_actionClose_triggered(){ 
     360  if(tabBar->count() > 1){ 
     361    if(QMessageBox::Yes != QMessageBox::question(this, tr("Verify Quit"), tr("You have multiple tabs open. Are you sure you want to quit?"), QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes ) ){ 
     362      return; 
     363    } 
     364  } 
     365  qDebug() << "Closing Down..."; 
     366  this->close(); 
     367} 
     368 
    339369void MainUI::goToBookmark(QAction *act){ 
    340370  if(act==ui->actionManage_Bookmarks){ 
     
    401431 
    402432//Browser Functions 
     433void MainUI::startEditDir(QWidget *old, QWidget *now){ 
     434  if(now==currentDir){ 
     435    //The dir edit just got focus 
     436    QString dir = currentDir->text(); 
     437      dir.replace("~/", QDir::homePath()+"/"); 
     438      currentDir->setText(dir); 
     439      //Try to move to the end 
     440      currentDir->selectAll(); 
     441  }else if(old==currentDir){ 
     442    QString dir = currentDir->text(); 
     443      dir.replace(QDir::homePath()+"/", "~/"); 
     444      currentDir->setText(dir); 
     445  } 
     446} 
     447 
     448void MainUI::goToDirectory(){ 
     449  QString dir = currentDir->text(); 
     450  dir.replace("~/",QDir::homePath()+"/"); 
     451  setCurrentDir(dir); 
     452} 
     453 
     454void MainUI::directoryLoaded(){ 
     455  ui->tree_dir_view->resizeColumnToContents(0); 
     456} 
     457 
    403458void MainUI::on_tool_addToDir_clicked(){ 
    404459  bool ok = false; 
     
    426481  QString dir = tabBar->tabWhatsThis(tab); //get the full directory 
    427482  setCurrentDir(dir); //display this as the current dir 
    428   //ui->tree_dir_view->setRootIndex( fsmod->setRootPath(dir) ); //Now update the browser 
    429483} 
    430484 
    431485void MainUI::tabClosed(int tab){ 
     486  if(tabBar->count()==1){ return; } //Can't close the only tab 
     487  if(tab < 0){ tab = tabBar->currentIndex(); } 
    432488  //Remove the tab (will automatically move to a different one); 
    433489  qDebug() << "Closing tab:" << tab << tabBar->tabText(tab); 
    434490  tabBar->removeTab(tab); 
    435491  tabBar->setVisible( tabBar->count() > 1 ); 
     492} 
     493 
     494void MainUI::prevTab(){ 
     495  int cur = tabBar->currentIndex(); 
     496  if(cur == 0){ tabBar->setCurrentIndex( tabBar->count()-1 ); } 
     497  else{ tabBar->setCurrentIndex( cur-1 ); } 
     498} 
     499 
     500void MainUI::nextTab(){ 
     501  int cur = tabBar->currentIndex(); 
     502  if(cur == (tabBar->count()-1) ){ tabBar->setCurrentIndex(0); } 
     503  else{ tabBar->setCurrentIndex( cur+1 ); }      
    436504} 
    437505 
     
    504572 
    505573//ZFS Restore Functions 
     574void MainUI::snapshotLoaded(){ 
     575  ui->tree_zfs_dir->resizeColumnToContents(0); 
     576} 
     577 
    506578void MainUI::showSnapshot(){ 
    507579  ui->tool_zfs_prevSnap->setEnabled(ui->slider_zfs_snapshot->value()!=1); 
     
    583655 
    584656void MainUI::RemoveItem(){ 
     657   if(!isUserWritable){ 
     658     QMessageBox::warning(this, tr("Invalid Permissions"), tr("You do not have permission to edit the files in this directory!") ); 
     659     return; 
     660   } 
    585661   //Get the selected items 
    586662   QStringList sel, names; 
  • lumina/lumina-fm/MainUI.h

    rb3b0822 r603a75a  
    2424#include <QTimer> 
    2525#include <QDateTime> 
     26#include <QShortcut> 
     27#include <QCompleter> 
    2628 
    2729// libLumina includes 
     
    5557        QModelIndex CItem; //the item that was right-clicked (for the context menu) 
    5658        QSettings *settings; 
     59        QShortcut *nextTabLShort, *nextTabRShort, *closeTabShort; 
     60        QCompleter *dirCompleter; 
     61        bool isUserWritable; 
    5762 
    5863        //Simplification Functions 
     
    8994        //Menu Actions 
    9095        void on_actionNew_Tab_triggered(); 
     96        void on_actionClose_triggered(); 
    9197        void goToBookmark(QAction*); 
    9298         
     
    98104 
    99105        //Browser Functions 
     106        void startEditDir(QWidget *old, QWidget *now); 
     107        void goToDirectory(); //go to a manually typed in directory 
     108        void directoryLoaded(); 
    100109        void on_tool_addToDir_clicked(); 
    101110        void tabChanged(int tab); 
    102         void tabClosed(int tab); 
     111        void tabClosed(int tab = -1); 
     112        void prevTab(); 
     113        void nextTab(); 
    103114        void ItemRun( const QModelIndex&); 
    104115        void OpenContextMenu(const QPoint&); 
     
    112123         
    113124        //ZFS Restore Functions 
     125        void snapshotLoaded(); 
    114126        void showSnapshot(); 
    115127        void nextSnapshot(); 
  • lumina/lumina-fm/MainUI.ui

    rad7e6ca r603a75a  
    1919     <widget class="QStackedWidget" name="stackedWidget"> 
    2020      <property name="currentIndex"> 
    21        <number>2</number> 
     21       <number>0</number> 
    2222      </property> 
    2323      <widget class="QWidget" name="page_browser"> 
     
    9191              </property> 
    9292              <property name="text"> 
    93                <string>Slideshow</string> 
     93               <string>&amp;Slideshow</string> 
     94              </property> 
     95              <property name="shortcut"> 
     96               <string>Ctrl+K</string> 
    9497              </property> 
    9598              <property name="toolButtonStyle"> 
     
    107110              </property> 
    108111              <property name="text"> 
    109                <string>Backups</string> 
     112               <string>&amp;Backups</string> 
     113              </property> 
     114              <property name="shortcut"> 
     115               <string>Ctrl+B</string> 
    110116              </property> 
    111117              <property name="toolButtonStyle"> 
     
    197203          </property> 
    198204          <property name="frameShape"> 
    199            <enum>QFrame::Panel</enum> 
     205           <enum>QFrame::StyledPanel</enum> 
    200206          </property> 
    201207          <property name="frameShadow"> 
     
    230236          <item> 
    231237           <widget class="QToolButton" name="tool_image_goBegin"> 
     238            <property name="focusPolicy"> 
     239             <enum>Qt::NoFocus</enum> 
     240            </property> 
    232241            <property name="toolTip"> 
    233242             <string>Go to Beginning</string> 
     
    236245             <string>...</string> 
    237246            </property> 
     247            <property name="shortcut"> 
     248             <string>Shift+Left</string> 
     249            </property> 
    238250           </widget> 
    239251          </item> 
    240252          <item> 
    241253           <widget class="QToolButton" name="tool_image_goPrev"> 
     254            <property name="focusPolicy"> 
     255             <enum>Qt::NoFocus</enum> 
     256            </property> 
    242257            <property name="toolTip"> 
    243258             <string>Go to Previous</string> 
     
    245260            <property name="text"> 
    246261             <string>...</string> 
     262            </property> 
     263            <property name="shortcut"> 
     264             <string>Left</string> 
    247265            </property> 
    248266           </widget> 
     
    269287             </font> 
    270288            </property> 
     289            <property name="focusPolicy"> 
     290             <enum>Qt::StrongFocus</enum> 
     291            </property> 
    271292            <property name="frame"> 
    272293             <bool>true</bool> 
     
    304325          <item> 
    305326           <widget class="QToolButton" name="tool_image_goNext"> 
     327            <property name="focusPolicy"> 
     328             <enum>Qt::NoFocus</enum> 
     329            </property> 
    306330            <property name="toolTip"> 
    307331             <string>Go to Next</string> 
     
    310334             <string>...</string> 
    311335            </property> 
     336            <property name="shortcut"> 
     337             <string>Right</string> 
     338            </property> 
    312339           </widget> 
    313340          </item> 
    314341          <item> 
    315342           <widget class="QToolButton" name="tool_image_goEnd"> 
     343            <property name="focusPolicy"> 
     344             <enum>Qt::NoFocus</enum> 
     345            </property> 
    316346            <property name="toolTip"> 
    317347             <string>Go to End</string> 
     
    319349            <property name="text"> 
    320350             <string>...</string> 
     351            </property> 
     352            <property name="shortcut"> 
     353             <string>Shift+Right</string> 
    321354            </property> 
    322355           </widget> 
     
    345378          <item> 
    346379           <widget class="QToolButton" name="tool_zfs_prevSnap"> 
    347             <property name="text"> 
    348              <string>...</string> 
     380            <property name="focusPolicy"> 
     381             <enum>Qt::NoFocus</enum> 
     382            </property> 
     383            <property name="text"> 
     384             <string>Older</string> 
     385            </property> 
     386            <property name="shortcut"> 
     387             <string>Left</string> 
     388            </property> 
     389            <property name="toolButtonStyle"> 
     390             <enum>Qt::ToolButtonTextUnderIcon</enum> 
    349391            </property> 
    350392           </widget> 
     
    354396            <item> 
    355397             <widget class="QSlider" name="slider_zfs_snapshot"> 
     398              <property name="focusPolicy"> 
     399               <enum>Qt::NoFocus</enum> 
     400              </property> 
    356401              <property name="maximum"> 
    357402               <number>20</number> 
     
    382427          <item> 
    383428           <widget class="QToolButton" name="tool_zfs_nextSnap"> 
    384             <property name="text"> 
    385              <string>...</string> 
     429            <property name="focusPolicy"> 
     430             <enum>Qt::NoFocus</enum> 
     431            </property> 
     432            <property name="text"> 
     433             <string>Newer</string> 
     434            </property> 
     435            <property name="shortcut"> 
     436             <string>Right</string> 
     437            </property> 
     438            <property name="toolButtonStyle"> 
     439             <enum>Qt::ToolButtonTextUnderIcon</enum> 
    386440            </property> 
    387441           </widget> 
     
    391445        <item> 
    392446         <widget class="QTreeView" name="tree_zfs_dir"> 
     447          <property name="focusPolicy"> 
     448           <enum>Qt::StrongFocus</enum> 
     449          </property> 
    393450          <property name="selectionMode"> 
    394451           <enum>QAbstractItemView::ExtendedSelection</enum> 
     
    419476            </property> 
    420477            <property name="text"> 
    421              <string>Restore Selection</string> 
     478             <string>&amp;Restore Selection</string> 
     479            </property> 
     480            <property name="shortcut"> 
     481             <string>Ctrl+R</string> 
    422482            </property> 
    423483            <property name="toolButtonStyle"> 
     
    442502           <widget class="QCheckBox" name="check_zfs_overwrite"> 
    443503            <property name="text"> 
    444              <string>Overwrite Existing Files</string> 
     504             <string>&amp;Overwrite Existing Files</string> 
     505            </property> 
     506            <property name="shortcut"> 
     507             <string>Ctrl+O</string> 
    445508            </property> 
    446509           </widget> 
     
    531594    <string>New &amp;Tab</string> 
    532595   </property> 
     596   <property name="shortcut"> 
     597    <string>Ctrl+T</string> 
     598   </property> 
    533599  </action> 
    534600  <action name="actionClose"> 
    535601   <property name="text"> 
    536602    <string>E&amp;xit</string> 
     603   </property> 
     604   <property name="shortcut"> 
     605    <string>Ctrl+Q</string> 
    537606   </property> 
    538607  </action> 
     
    549618    <string>Go up one directory</string> 
    550619   </property> 
     620   <property name="shortcut"> 
     621    <string>Alt+Up</string> 
     622   </property> 
    551623  </action> 
    552624  <action name="actionHome"> 
    553625   <property name="text"> 
    554     <string>Home</string> 
     626    <string>&amp;Home</string> 
    555627   </property> 
    556628   <property name="toolTip"> 
    557629    <string>Go to your home directory</string> 
     630   </property> 
     631   <property name="shortcut"> 
     632    <string>Alt+H</string> 
    558633   </property> 
    559634  </action> 
     
    576651    <string>Back to directory</string> 
    577652   </property> 
     653   <property name="shortcut"> 
     654    <string>Alt+Left</string> 
     655   </property> 
    578656  </action> 
    579657  <action name="actionRefresh"> 
     
    595673    <string>Bookmark this directory</string> 
    596674   </property> 
     675   <property name="shortcut"> 
     676    <string>Ctrl+D</string> 
     677   </property> 
    597678  </action> 
    598679  <action name="actionScan"> 
     
    610691   <property name="toolTip"> 
    611692    <string>Back to the system</string> 
     693   </property> 
     694   <property name="shortcut"> 
     695    <string>Alt+Left</string> 
    612696   </property> 
    613697  </action> 
Note: See TracChangeset for help on using the changeset viewer.