00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #include "advancedfm.h"
00013
00014
00015 #include <opie2/odebug.h>
00016 #include <opie2/oresource.h>
00017 #include <qpe/applnk.h>
00018 #include <qpe/storage.h>
00019 #include <qpe/qpeapplication.h>
00020 #include <qpe/menubutton.h>
00021 using namespace Opie::Core;
00022 using namespace Opie::Ui;
00023
00024
00025 #include <qframe.h>
00026 #include <qlayout.h>
00027 #include <qhbox.h>
00028 #include <qmenubar.h>
00029 #include <qcombobox.h>
00030 #include <qtoolbutton.h>
00031 #include <qlineedit.h>
00032 #include <qlistview.h>
00033
00034
00035 #include <sys/utsname.h>
00036
00037 void AdvancedFm::init() {
00038 b = false;
00039 setCaption( tr( "AdvancedFm" ) );
00040
00041
00042
00043
00044
00045 QVBoxLayout *layout = new QVBoxLayout( this);
00046 layout->setSpacing( 2);
00047 layout->setMargin( 0);
00048
00049 QMenuBar *menuBar = new QMenuBar(this);
00050 menuBar->setMargin( 0 );
00051 fileMenu = new QPopupMenu( this );
00052 viewMenu = new QPopupMenu( this );
00053
00054
00055 layout->addWidget( menuBar );
00056
00057 menuBar->insertItem( tr( "File" ), fileMenu);
00058 menuBar->insertItem( tr( "View" ), viewMenu);
00059
00060 bool useBigIcon = qApp->desktop()->size().width() > 330;
00061
00062 cdUpButton = new QToolButton( 0,"cdUpButton");
00063 cdUpButton->setUsesBigPixmap( useBigIcon );
00064 cdUpButton->setPixmap( Opie::Core::OResource::loadPixmap( "up", Opie::Core::OResource::SmallIcon ) );
00065 cdUpButton->setAutoRaise( true );
00066 menuBar->insertItem( cdUpButton );
00067
00068 qpeDirButton= new QToolButton( 0,"QPEButton");
00069 qpeDirButton->setUsesBigPixmap( useBigIcon );
00070 qpeDirButton->setPixmap( Opie::Core::OResource::loadPixmap( "logo/opielogo", Opie::Core::OResource::SmallIcon ) );
00071 qpeDirButton->setAutoRaise( true );
00072 menuBar->insertItem( qpeDirButton );
00073
00074 cfButton = new QToolButton( 0, "CFButton");
00075 cfButton->setUsesBigPixmap( useBigIcon );
00076 cfButton->setPixmap( Opie::Core::OResource::loadPixmap( "pcmcia", Opie::Core::OResource::SmallIcon ) );
00077 cfButton->setAutoRaise( true );
00078 menuBar->insertItem( cfButton );
00079
00080 sdButton = new QToolButton( 0, "SDButton");
00081 sdButton->setUsesBigPixmap( useBigIcon );
00082 sdButton->setPixmap( Opie::Core::OResource::loadPixmap( "advancedfm/sdcard", Opie::Core::OResource::SmallIcon ) );
00083 sdButton->setAutoRaise( true );
00084 menuBar->insertItem( sdButton );
00085
00086 docButton = new QToolButton( 0,"docsButton");
00087 docButton->setUsesBigPixmap( useBigIcon );
00088 docButton->setPixmap( Opie::Core::OResource::loadPixmap( "DocsIcon", Opie::Core::OResource::SmallIcon ) );
00089 docButton->setAutoRaise( true );
00090 menuBar->insertItem( docButton );
00091
00092 homeButton = new QToolButton( 0, "homeButton");
00093 homeButton->setUsesBigPixmap( useBigIcon );
00094 homeButton->setPixmap( Opie::Core::OResource::loadPixmap( "home", Opie::Core::OResource::SmallIcon ) );
00095 homeButton->setAutoRaise( true );
00096 menuBar->insertItem( homeButton );
00097
00098 fileMenu->insertItem( tr( "Show Hidden Files" ), this, SLOT( showMenuHidden() ));
00099 fileMenu->setItemChecked( fileMenu->idAt(0),TRUE);
00100 fileMenu->insertSeparator();
00101 fileMenu->insertItem( tr( "File Search" ), this, SLOT( openSearch() ));
00102 fileMenu->insertSeparator();
00103 fileMenu->insertItem( tr( "Make Directory" ), this, SLOT( mkDir() ));
00104 fileMenu->insertItem( tr( "Rename" ), this, SLOT( rn() ));
00105 fileMenu->insertItem( tr( "Run Command" ), this, SLOT( runCommandStd() ));
00106 fileMenu->insertItem( tr( "Run Command with Output" ), this, SLOT( runCommand() ));
00107 fileMenu->insertSeparator();
00108 fileMenu->insertItem( tr( "Make Symlink" ), this, SLOT( mkSym() ));
00109 fileMenu->insertItem( tr( "Select All" ), this, SLOT( selectAll() ));
00110 fileMenu->insertItem( tr( "Add To Documents" ), this, SLOT( addToDocs() ));
00111 fileMenu->insertItem( tr( "Delete" ), this, SLOT( del() ));
00112 fileMenu->setCheckable(TRUE);
00113
00114 viewMenu->insertItem( tr( "Switch to View 1" ), this, SLOT( switchToLocalTab()));
00115 viewMenu->insertItem( tr( "Switch to View 2" ), this, SLOT( switchToRemoteTab()));
00116 viewMenu->insertItem( tr( "Refresh" ), this, SLOT( refreshCurrentTab()));
00117
00118
00119 viewMenu->setCheckable(true);
00120 viewMenu->setItemChecked( viewMenu->idAt(0), true);
00121 viewMenu->setItemChecked( viewMenu->idAt(1), false);
00122
00123 s_addBookmark = tr("Bookmark Directory");
00124 s_removeBookmark = tr("Remove Current Directory from Bookmarks");
00125
00126
00127
00128
00129
00130
00131
00132 QHBoxLayout *CBHB = new QHBoxLayout();
00133 CBHB->setMargin( 0 );
00134 CBHB->setSpacing( 1 );
00135
00136 menuButton = new MenuButton( this );
00137
00138 menuButton->setUseLabel(false);
00139 menuButton->setMaximumWidth( 20 );
00140 menuButton->insertItem( s_addBookmark);
00141 menuButton->insertItem( s_removeBookmark);
00142 menuButton->insertSeparator();
00143
00144 CBHB->addWidget( menuButton );
00145
00146 customDirsToMenu();
00147
00148 currentPathCombo = new QComboBox( FALSE, this, "currentPathCombo" );
00149 currentPathCombo->setEditable(TRUE);
00150 currentPathCombo->lineEdit()->setText( currentDir.canonicalPath());
00151
00152 CBHB->addWidget( currentPathCombo );
00153
00154 layout->addLayout( CBHB );
00155
00156 TabWidget = new OSplitter( Horizontal, this, "TabWidget" );
00157
00158 layout->addWidget( TabWidget, 4 );
00159
00160 tab = new QWidget( TabWidget, "tab" );
00161 tabLayout = new QGridLayout( tab );
00162 tabLayout->setSpacing( 2);
00163 tabLayout->setMargin( 2);
00164
00165 Local_View = new QListView( tab, "Local_View" );
00166 Local_View->addColumn( tr("File"),130);
00167 Local_View->addColumn( tr("Size"),-1);
00168 Local_View->setColumnAlignment(1,QListView::AlignRight);
00169 Local_View->addColumn( tr("Date"),-1);
00170 Local_View->setColumnAlignment(2,QListView::AlignRight);
00171 Local_View->setAllColumnsShowFocus(TRUE);
00172 Local_View->setMultiSelection( TRUE );
00173 Local_View->setSelectionMode(QListView::Extended);
00174 Local_View->setFocusPolicy(StrongFocus);
00175 Local_View->installEventFilter( this );
00176
00177 QPEApplication::setStylusOperation( Local_View->viewport() , QPEApplication::RightOnHold);
00178
00179 tabLayout->addWidget( Local_View, 0, 0 );
00180
00181 TabWidget->addWidget( tab,"advancedfm/smFileBrowser.png", tr("1"));
00182
00183
00184 tab_2 = new QWidget( TabWidget, "tab_2" );
00185 tabLayout_2 = new QGridLayout( tab_2 );
00186 tabLayout_2->setSpacing( 2);
00187 tabLayout_2->setMargin( 2);
00188
00189 Remote_View = new QListView( tab_2, "Remote_View" );
00190 Remote_View->addColumn( tr("File"),130);
00191 Remote_View->addColumn( tr("Size"),-1);
00192 Remote_View->setColumnAlignment(1,QListView::AlignRight);
00193 Remote_View->addColumn( tr("Date"),-1);
00194 Remote_View->setColumnAlignment(2,QListView::AlignRight);
00195 Remote_View->setAllColumnsShowFocus(TRUE);
00196 Remote_View->setMultiSelection( TRUE );
00197 Remote_View->setSelectionMode(QListView::Extended);
00198 Remote_View->setFocusPolicy(StrongFocus);
00199 Remote_View->installEventFilter( this );
00200
00201 QPEApplication::setStylusOperation( Remote_View->viewport(), QPEApplication::RightOnHold);
00202
00203 tabLayout_2->addWidget( Remote_View, 0, 0 );
00204
00205 TabWidget->addWidget( tab_2, "advancedfm/smFileBrowser.png",tr( "2"));
00206 TabWidget->setSizeChange( 370 );
00207
00208
00209
00210
00211
00212
00213
00214
00215
00216
00217
00218
00219
00220
00221
00222
00223
00224
00225
00226
00227
00228
00229
00231
00232 if( !StorageInfo::hasSd() || !StorageInfo::hasMmc()) {
00233 sdButton->hide();
00234 }
00235 if( !StorageInfo::hasCf() ) {
00236 cfButton->hide();
00237 }
00238 currentDir.setFilter( QDir::Files | QDir::Dirs | QDir::Hidden | QDir::All);
00239 currentDir.setPath( QDir::currentDirPath());
00240
00241 currentRemoteDir.setFilter( QDir::Files | QDir::Dirs | QDir::Hidden | QDir::All);
00242 currentRemoteDir.setPath( QDir::currentDirPath());
00243
00244 filterStr="*";
00245 showMenuHidden();
00246 TabWidget->setCurrentWidget(0);
00247
00248 }
00249
00250 void AdvancedFm::initConnections()
00251 {
00252
00253 connect(qApp,SIGNAL(aboutToQuit()),this,SLOT(cleanUp()));
00254 connect(qpeDirButton,SIGNAL(released()),this,SLOT(QPEButtonPushed()));
00255 connect(cfButton,SIGNAL(released()),this,SLOT(CFButtonPushed()));
00256 connect(sdButton,SIGNAL(released()),this,SLOT(SDButtonPushed()));
00257 connect(cdUpButton,SIGNAL(released()),this,SLOT(upDir()));
00258 connect(docButton,SIGNAL(released()),this,SLOT(docButtonPushed()));
00259 connect(homeButton,SIGNAL(released()),this,SLOT(homeButtonPushed()));
00260 connect(currentPathCombo,SIGNAL(activated(const QString&)),this,SLOT(changeTo(const QString&)));
00261
00262 connect(currentPathCombo->lineEdit(),SIGNAL(returnPressed()),this,SLOT(currentPathComboChanged()));
00263
00264 connect(Local_View,SIGNAL(clicked(QListViewItem*)),this,SLOT( ListClicked(QListViewItem*)));
00265
00266 connect(Local_View,SIGNAL(mouseButtonPressed(int,QListViewItem*,const QPoint&,int)),this,SLOT( ListPressed(int,QListViewItem*,const QPoint&,int)) );
00267
00268 connect(Remote_View,SIGNAL(clicked(QListViewItem*)),this,SLOT(ListClicked(QListViewItem*)));
00269 connect(Remote_View,SIGNAL(mouseButtonPressed(int,QListViewItem*,const QPoint&,int)),this,SLOT(ListPressed(int,QListViewItem*,const QPoint&,int)));
00270
00271 connect(TabWidget,SIGNAL(currentChanged(QWidget*)),this,SLOT(tabChanged(QWidget*)));
00272
00273 connect(Remote_View,SIGNAL(rightButtonPressed(QListViewItem*,const QPoint&,int)),this,SLOT(showFileMenu()));
00274 connect(Local_View,SIGNAL(rightButtonPressed(QListViewItem*,const QPoint&,int)),this,SLOT(showFileMenu()));
00275
00276 connect(menuButton,SIGNAL(selected(const QString&)),SLOT(gotoCustomDir(const QString&)));
00277
00278 connect(viewMenu,SIGNAL(activated(int)),this,SLOT(slotSwitchMenu(int)));
00279
00280
00281 }
00282