Changeset cb56f7e


Ignore:
Timestamp:
06/20/14 15:10:24 (15 months ago)
Author:
Ken Moore <ken@…>
Branches:
master, enter/10, releng/10.0.3, releng/10.1, releng/10.1.1, releng/10.1.2, releng/10.2, stable/10
Children:
9601678
Parents:
f77fbb1a
Message:

Get the lumina-fm ZFS snapshot detection/display working. The actual file restore/copy buttons are not connected yet.

Location:
lumina/lumina-fm
Files:
3 edited

Legend:

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

    rf77fbb1a rcb56f7e  
    2323    ui->tree_dir_view->sortByColumn(0,Qt::AscendingOrder); 
    2424    ui->tree_dir_view->setContextMenuPolicy(Qt::CustomContextMenu); 
     25  snapmod = new QFileSystemModel(this); 
     26    ui->tree_zfs_dir->setModel(snapmod); 
     27    ui->tree_zfs_dir->sortByColumn(0, Qt::AscendingOrder); 
    2528  contextMenu = new QMenu(this); 
    2629  setupIcons(); 
     
    105108  connect(ui->tool_image_goNext, SIGNAL(clicked()), this, SLOT(nextPicture()) ); 
    106109  connect(ui->tool_image_goPrev, SIGNAL(clicked()), this, SLOT(prevPicture()) ); 
     110         
     111  //ZFS Restore page 
     112  connect(ui->slider_zfs_snapshot, SIGNAL(valueChanged(int)), this, SLOT(showSnapshot()) ); 
     113  connect(ui->tool_zfs_nextSnap, SIGNAL(clicked()), this, SLOT(nextSnapshot()) ); 
     114  connect(ui->tool_zfs_prevSnap, SIGNAL(clicked()), this, SLOT(prevSnapshot()) ); 
    107115} 
    108116 
     
    195203  snapDirs.clear(); //clear the internal variable 
    196204  //Now recursively try to find snapshots of this directory 
    197   /*QString cdir = getCurrentDir(); 
     205  QString cdir = getCurrentDir(); 
    198206  QDir dir(cdir); 
    199207  bool found = false; 
    200208  while(dir.absolutePath()!="/" && !found){ 
    201            
     209    if(dir.exists(".zfs/snapshot")){ found = true;} 
     210    else{ dir.cdUp(); } 
    202211  } 
    203212  //Now find the snapshots that contain this directory and save them 
    204213  if(found){ 
    205            
     214    QString reldir = getCurrentDir(); 
     215          reldir.remove(dir.absolutePath()); 
     216    dir.cd(".zfs/snapshot"); 
     217    snapDirs = dir.entryList(QDir::Dirs | QDir::NoDotAndDotDot, QDir::Time); 
     218    //Check that the current directory exists in each snapshot 
     219    for(int i=0; i<snapDirs.length(); i++){ 
     220      if( !dir.exists(snapDirs[i]+"/"+reldir) ){ 
     221        snapDirs.removeAt(i); 
     222        i--; 
     223      }else{ 
     224        snapDirs[i] = QFileInfo(dir, snapDirs[i]+"/"+reldir).created().toString("yyyyMMddhhmmsszzz")+"::::"+snapDirs[i]; 
     225      } 
     226    } 
     227    snapDirs.sort(); 
     228    //Sort the snapshots by time (newest last) and format them 
     229    for(int i=0; i<snapDirs.length(); i++){ 
     230      snapDirs[i] = dir.absolutePath()+"/"+snapDirs[i].section("::::",1,50)+"/"+reldir; 
     231    } 
     232    //qDebug() << "Found snapshots:" << snapDirs; 
    206233  } 
    207234  //Now enable the button if any snapshots available 
    208   ui->tool_goToRestore->setVisible(snapDirs.isEmpty());*/ 
     235  ui->tool_goToRestore->setVisible(!snapDirs.isEmpty()); 
    209236} 
    210237 
     
    255282  ui->menuBookmarks->setEnabled(false); 
    256283  ui->menuExternal_Devices->setEnabled(false); 
     284  //Load all the info into the file restore page 
     285  ui->slider_zfs_snapshot->setRange(1,snapDirs.length()); 
     286  ui->slider_zfs_snapshot->setValue(snapDirs.length()); 
    257287  //Now go to the file restore page 
    258288  ui->stackedWidget->setCurrentWidget(ui->page_zfs);     
     
    274304  ui->menuExternal_Devices->setEnabled(false); 
    275305  //Now go to the Slideshow player 
    276   //showNewPicture(); //update the image viewer first 
    277306  ui->stackedWidget->setCurrentWidget(ui->page_image_view); 
    278307} 
     
    466495} 
    467496 
     497//ZFS Restore Functions 
     498void MainUI::showSnapshot(){ 
     499  ui->tool_zfs_prevSnap->setEnabled(ui->slider_zfs_snapshot->value()!=1); 
     500  ui->tool_zfs_nextSnap->setEnabled(ui->slider_zfs_snapshot->value()!=ui->slider_zfs_snapshot->maximum()); 
     501  ui->label_zfs_snap->setText( snapDirs[ui->slider_zfs_snapshot->value()-1].section("/.zfs/snapshot/",1,1).section("/",0,0) ); 
     502  //Load the dir contents 
     503  ui->tree_zfs_dir->setRootIndex(snapmod->setRootPath(snapDirs[ui->slider_zfs_snapshot->value()-1])); 
     504} 
     505 
     506void MainUI::prevSnapshot(){ 
     507  ui->slider_zfs_snapshot->setValue(ui->slider_zfs_snapshot->value()-1); 
     508} 
     509 
     510void MainUI::nextSnapshot(){ 
     511  ui->slider_zfs_snapshot->setValue(ui->slider_zfs_snapshot->value()+1); 
     512} 
     513 
    468514// Context Menu Actions 
    469515void MainUI::OpenItem(){ 
  • lumina/lumina-fm/MainUI.h

    rf77fbb1a rcb56f7e  
    1515#include <QDir> 
    1616#include <QTimer> 
     17#include <QDateTime> 
    1718 
    1819// libLumina includes 
     
    3839        QTabBar *tabBar; 
    3940        QLineEdit *currentDir; 
    40         QFileSystemModel *fsmod; 
     41        QFileSystemModel *fsmod, *snapmod; 
    4142        QMenu *contextMenu; 
    42  
    4343 
    4444        //Internal variables 
     
    102102        void lastPicture(); 
    103103         
     104        //ZFS Restore Functions 
     105        void showSnapshot(); 
     106        void nextSnapshot(); 
     107        void prevSnapshot(); 
     108         
    104109        //Context Menu Actions 
    105110        void OpenItem(); //run "lumina-open" on it 
  • lumina/lumina-fm/MainUI.ui

    rf77fbb1a rcb56f7e  
    1919     <widget class="QStackedWidget" name="stackedWidget"> 
    2020      <property name="currentIndex"> 
    21        <number>0</number> 
     21       <number>3</number> 
    2222      </property> 
    2323      <widget class="QWidget" name="page_browser"> 
     
    347347            <item> 
    348348             <widget class="QSlider" name="slider_zfs_snapshot"> 
     349              <property name="maximum"> 
     350               <number>20</number> 
     351              </property> 
    349352              <property name="orientation"> 
    350353               <enum>Qt::Horizontal</enum> 
    351354              </property> 
     355              <property name="tickPosition"> 
     356               <enum>QSlider::TicksAbove</enum> 
     357              </property> 
     358              <property name="tickInterval"> 
     359               <number>1</number> 
     360              </property> 
    352361             </widget> 
    353362            </item> 
     
    374383        </item> 
    375384        <item> 
    376          <widget class="QTreeWidget" name="tree_zfs_view"> 
    377           <property name="uniformRowHeights"> 
     385         <widget class="QTreeView" name="tree_zfs_dir"> 
     386          <property name="rootIsDecorated"> 
     387           <bool>false</bool> 
     388          </property> 
     389          <property name="itemsExpandable"> 
     390           <bool>false</bool> 
     391          </property> 
     392          <property name="sortingEnabled"> 
    378393           <bool>true</bool> 
    379394          </property> 
    380           <property name="allColumnsShowFocus"> 
     395          <property name="expandsOnDoubleClick"> 
    381396           <bool>false</bool> 
    382397          </property> 
    383           <attribute name="headerDefaultSectionSize"> 
    384            <number>100</number> 
    385           </attribute> 
    386           <column> 
    387            <property name="text"> 
    388             <string>Name</string> 
    389            </property> 
    390           </column> 
    391           <column> 
    392            <property name="text"> 
    393             <string>Date Modified</string> 
    394            </property> 
    395           </column> 
    396           <column> 
    397            <property name="text"> 
    398             <string>Size</string> 
    399            </property> 
    400           </column> 
    401           <column> 
    402            <property name="text"> 
    403             <string>Owner</string> 
    404            </property> 
    405           </column> 
    406398         </widget> 
    407399        </item> 
Note: See TracChangeset for help on using the changeset viewer.