Skip to content

Commit

Permalink
reordering of some items on the toolbar, as discussed on kde-usability
Browse files Browse the repository at this point in the history
summary:

 o "new directory" promoted to its own button on the toolbar
 o seperate dirs and preview are no longer mutually exclusive
 o "gear menu" changed to the config icon and non-config options moved out
 o "delete" and "properties" demoted to RMB only as they are power user
   options, and power users know about RMB

only thing i'm not really sure i'm satisfied with is:

  int KFileDialog::pathComboIndex()

which returns the index in the toolbar of the path combobox. it is a
protected method and to be used by subclasses when inserting custom widgets
this removes the need for hardcoding this value in, as kedit did (with
rather poor results when changes are made to the UI)

svn path=/trunk/kdelibs/; revision=164083
  • Loading branch information
aseigo committed Jul 1, 2002
1 parent 58a89ad commit 8e26f74
Show file tree
Hide file tree
Showing 5 changed files with 83 additions and 75 deletions.
111 changes: 51 additions & 60 deletions kio/kfile/kdiroperator.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -72,15 +72,13 @@ class KDirOperator::KDirOperatorPrivate
KDirOperatorPrivate() {
onlyDoubleClickSelectsFiles = false;
progressDelayTimer = 0L;
dirHighlighting = false;
restorePreview = KFile::Simple;
dirHighlighting = false;
}

~KDirOperatorPrivate() {
delete progressDelayTimer;
}

int restorePreview; // the view that is restored when preview is toggled
bool dirHighlighting;
QString lastURL; // used for highlighting a directory on cdUp
bool onlyDoubleClickSelectsFiles;
Expand Down Expand Up @@ -243,29 +241,23 @@ void KDirOperator::slotToggleHidden( bool show )
m_fileView->listingCompleted();
}

void KDirOperator::slotSingleView()
{
KFile::FileView view = static_cast<KFile::FileView>(
m_viewKind & ~(KFile::PreviewContents |
KFile::PreviewInfo |
KFile::SeparateDirs ));

setView( view );
}

void KDirOperator::slotSeparateDirs()
{
KFile::FileView view = static_cast<KFile::FileView>(
(m_viewKind & ~(KFile::PreviewContents |
KFile::PreviewInfo)
| KFile::SeparateDirs ));

setView( view );
if (separateDirsAction->isChecked())
{
KFile::FileView view = static_cast<KFile::FileView>( m_viewKind | KFile::SeparateDirs );
setView( view );
}
else
{
KFile::FileView view = static_cast<KFile::FileView>( m_viewKind & ~KFile::SeparateDirs );
setView( view );
}
}

void KDirOperator::slotDefaultPreview()
{
m_viewKind = (m_viewKind | KFile::PreviewContents) & ~KFile::SeparateDirs;
m_viewKind = m_viewKind | KFile::PreviewContents;
if ( !myPreview ) {
myPreview = new KImageFilePreview( this );
(static_cast<KToggleAction*>( myActionCollection->action("preview") ))->setChecked(true);
Expand Down Expand Up @@ -745,50 +737,58 @@ bool KDirOperator::checkPreviewInternal() const

return false;
}

KFileView* KDirOperator::createView( QWidget* parent, KFile::FileView view ) {
KFileView* new_view = 0L;
bool separateDirs = KFile::isSeparateDirs( view );
bool preview=( (view & KFile::PreviewInfo) == KFile::PreviewInfo ||
(view & KFile::PreviewContents) == KFile::PreviewContents );

if( separateDirs ) {
KCombiView *combi = new KCombiView( parent, "combi view" );
combi->setOnlyDoubleClickSelectsFiles(d->onlyDoubleClickSelectsFiles);
bool preview = ( KFile::isPreviewInfo(view) || KFile::isPreviewContents( view ) );

if( separateDirs || preview ) {
KCombiView *combi = 0L;

if (separateDirs)
{
combi = new KCombiView( parent, "combi view" );
combi->setOnlyDoubleClickSelectsFiles(d->onlyDoubleClickSelectsFiles);
}

KFileView* v = 0L;
if ( (view & KFile::Simple) == KFile::Simple )
v = createView( combi, KFile::Simple );
else
v = createView( combi, KFile::Detail );
combi->setRight( v );
new_view = combi;

if (combi)
{
combi->setRight( v );
}

if (preview)
{
KFilePreview* pView = new KFilePreview( combi ? combi : v, parent, "preview" );
pView->setOnlyDoubleClickSelectsFiles(d->onlyDoubleClickSelectsFiles);
new_view = pView;
}
else
{
new_view = combi;
}
}
else if( (view & KFile::Detail) == KFile::Detail && !preview ) {
new_view = new KFileDetailView( parent, "detail view");
}
else if ((view & KFile::Simple) == KFile::Simple && !preview ) {
else /* if ((view & KFile::Simple) == KFile::Simple && !preview ) */ {
new_view = new KFileIconView( parent, "simple view");
new_view->setViewName( i18n("Short View") );
}
else { // preview
KFileView* v = 0L; // will get reparented by KFilePreview
if ( (view & KFile::Simple ) == KFile::Simple )
v = createView( 0L, KFile::Simple );
else
v = createView( 0L, KFile::Detail );

KFilePreview* pView = new KFilePreview( v, parent, "preview" );
pView->setOnlyDoubleClickSelectsFiles(d->onlyDoubleClickSelectsFiles);
new_view = pView;
}


return new_view;
}

void KDirOperator::setView( KFile::FileView view )
{
bool separateDirs = KFile::isSeparateDirs( view );
bool preview=( (view & KFile::PreviewInfo) == KFile::PreviewInfo ||
(view & KFile::PreviewContents) == KFile::PreviewContents );
bool preview=( KFile::isPreviewInfo(view) || KFile::isPreviewContents( view ) );

if (view == KFile::Default) {
if ( KFile::isDetailView( (KFile::FileView) defaultView ) )
Expand All @@ -804,12 +804,11 @@ void KDirOperator::setView( KFile::FileView view )

if ( preview ) { // instantiates KImageFilePreview and calls setView()
m_viewKind = view;
d->restorePreview = m_viewKind;
slotDefaultPreview();
return;
}
else if ( !separateDirs )
(static_cast<KRadioAction*>( myActionCollection->action("single") ))->setChecked(true);
separateDirsAction->setChecked(true);

}

Expand All @@ -834,7 +833,6 @@ void KDirOperator::setView( KFile::FileView view )
dynamic_cast<KFilePreview*>(new_view)->setPreviewWidget(myPreview, url());
}

d->restorePreview = m_viewKind;
setView( new_view );
}

Expand Down Expand Up @@ -1141,26 +1139,18 @@ void KDirOperator::setupActions()

showHiddenAction = new KToggleAction( i18n("Show Hidden Files"), 0,
myActionCollection, "show hidden" );
KRadioAction *singleAction = new KRadioAction( i18n("Single View"), 0,
this,
SLOT( slotSingleView() ),
myActionCollection, "single" );
separateDirsAction = new KRadioAction( i18n("Separate Directories"), 0,
separateDirsAction = new KToggleAction( i18n("Separate Directories"), 0,
this,
SLOT(slotSeparateDirs()),
myActionCollection, "separate dirs" );
KToggleAction *previewAction = new KToggleAction(i18n("Preview"),
KToggleAction *previewAction = new KToggleAction(i18n("Show Preview"),
"thumbnail", 0,
myActionCollection,
"preview" );
connect( previewAction, SIGNAL( toggled( bool )),
SLOT( togglePreview( bool )));


QString combiView = QString::fromLatin1("combiview");
singleAction->setExclusiveGroup( combiView );
separateDirsAction->setExclusiveGroup( combiView );

QString viewGroup = QString::fromLatin1("view");
shortAction->setExclusiveGroup( viewGroup );
detailedAction->setExclusiveGroup( viewGroup );
Expand Down Expand Up @@ -1190,9 +1180,11 @@ void KDirOperator::setupMenu()
// viewActionMenu->insert( shortAction );
// viewActionMenu->insert( detailedAction );
// viewActionMenu->insert( actionSeparator );
viewActionMenu->insert( showHiddenAction );
viewActionMenu->insert( myActionCollection->action( "short view" ) );
viewActionMenu->insert( myActionCollection->action( "detailed view" ) );
viewActionMenu->insert( actionSeparator );
viewActionMenu->insert( myActionCollection->action( "single" ));
viewActionMenu->insert( showHiddenAction );
// viewActionMenu->insert( myActionCollection->action( "single" ));
viewActionMenu->insert( separateDirsAction );
// Warning: adjust slotViewActionAdded() and slotViewActionRemoved()
// when you add/remove actions here!
Expand Down Expand Up @@ -1511,8 +1503,7 @@ void KDirOperator::togglePreview( bool on )
if ( on )
slotDefaultPreview();
else
setView( (KFile::FileView) (d->restorePreview &
~(KFile::PreviewContents|KFile::PreviewInfo)) );
setView( (KFile::FileView) (m_viewKind & ~(KFile::PreviewContents|KFile::PreviewInfo)) );
}

void KDirOperator::slotRefreshItems( const KFileItemList& items )
Expand Down
1 change: 0 additions & 1 deletion kio/kfile/kdiroperator.h
Original file line number Diff line number Diff line change
Expand Up @@ -772,7 +772,6 @@ private slots:
void slotSimpleView();
void slotToggleHidden( bool );

void slotSingleView();
void slotSeparateDirs();
void slotDefaultPreview();
void togglePreview( bool );
Expand Down
4 changes: 4 additions & 0 deletions kio/kfile/kfile.h
Original file line number Diff line number Diff line change
Expand Up @@ -113,6 +113,10 @@ class KFile
return (view & PreviewContents) == PreviewContents;
}

static bool isPreviewInfo( const FileView& view ) {
return (view & PreviewInfo) == PreviewContents;
}

};

#endif // KFILE_H
36 changes: 22 additions & 14 deletions kio/kfile/kfiledialog.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -150,6 +150,9 @@ struct KFileDialogPrivate
QString fileClass;

KFileBookmarkHandler *bookmarkHandler;

// the ID of the path drop down so subclasses can place their custom widgets properly
int m_pathComboIndex;
};

KURL *KFileDialog::lastDirectory; // to set the start path
Expand Down Expand Up @@ -303,7 +306,8 @@ KFileDialog::KFileDialog(const QString& startDir, const QString& filter,
coll->action( "forward" )->plug( toolbar );
coll->action( "home" )->plug( toolbar );
coll->action( "reload" )->plug( toolbar );

coll->action( "mkdir" )->plug( toolbar );

d->bookmarkHandler = new KFileBookmarkHandler( this );
toolbar->insertButton(QString::fromLatin1("bookmark"),
(int)HOTLIST_BUTTON, true,
Expand All @@ -318,35 +322,34 @@ KFileDialog::KFileDialog(const QString& startDir, const QString& filter,
(int)CONFIGURE_BUTTON, true,
i18n("Configure this dialog"));
*/

KToggleAction *showSidebarAction =
new KToggleAction(i18n("Show Sidebar"), Key_F9, coll,"toggleSpeedbar");
connect( showSidebarAction, SIGNAL( toggled( bool ) ),
SLOT( toggleSpeedbar( bool )) );

KActionMenu *menu = new KActionMenu( i18n("Extras"), "misc", this, "extra menu" );
menu->insert( coll->action( "mkdir" ));
menu->insert( coll->action( "delete" ));
menu->insert( coll->action( "separator" ));
KActionMenu *menu = new KActionMenu( i18n("Extras"), "configure", this, "extra menu" );
menu->insert( coll->action( "sorting menu" ));
menu->insert( coll->action( "separator" ));
menu->insert( coll->action( "view menu" ));
menu->insert( showSidebarAction );
menu->insert( coll->action( "short view" ));
menu->insert( coll->action( "detailed view" ));
menu->insert( coll->action( "separator" ));
menu->insert( coll->action( "properties" ));
coll->action( "show hidden" )->setShortcut(Key_F8);
menu->insert( coll->action( "show hidden" ));
menu->insert( showSidebarAction );
coll->action( "preview" )->setShortcut(Key_F10);
menu->insert( coll->action( "preview" ));
coll->action( "separate dirs" )->setShortcut(Key_F11);
menu->insert( coll->action( "separate dirs" ));

menu->setDelayed( false );
connect( menu->popupMenu(), SIGNAL( aboutToShow() ),
ops, SLOT( updateSelectionDependentActions() ));
menu->plug( toolbar );

coll->action( "short view" )->plug( toolbar );
coll->action( "detailed view" )->plug( toolbar );
coll->action( "preview")->plug( toolbar );

connect(toolbar, SIGNAL(clicked(int)),
SLOT(toolbarCallback(int)));

toolbar->insertWidget(PATH_COMBO, 0, d->pathCombo);
d->m_pathComboIndex = toolbar->insertWidget(PATH_COMBO, 0, d->pathCombo);

toolbar->setItemAutoSized (PATH_COMBO);
toolbar->setIconText(KToolBar::IconOnly);
Expand Down Expand Up @@ -1705,6 +1708,11 @@ void KFileDialog::toggleSpeedbar( bool show )
d->urlBar->hide();
}

int KFileDialog::pathComboIndex()
{
return d->m_pathComboIndex;
}

void KFileDialog::virtual_hook( int id, void* data )
{ KDialogBase::virtual_hook( id, data ); }

Expand Down
6 changes: 6 additions & 0 deletions kio/kfile/kfiledialog.h
Original file line number Diff line number Diff line change
Expand Up @@ -643,6 +643,12 @@ class KFileDialog : public KDialogBase
*/
KActionCollection *actionCollection() const;

/**
* @returns the index of the path combobox so when inserting widgets into
* the dialog (e.g. subclasses) they can do so without hardcoding in an index
*/
int pathComboIndex();

signals:
/**
* Emitted when the user selects a file. It is only emitted in single-
Expand Down

0 comments on commit 8e26f74

Please sign in to comment.