summaryrefslogtreecommitdiffstats
path: root/parts/filelist/filelist_item.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'parts/filelist/filelist_item.cpp')
-rw-r--r--parts/filelist/filelist_item.cpp104
1 files changed, 104 insertions, 0 deletions
diff --git a/parts/filelist/filelist_item.cpp b/parts/filelist/filelist_item.cpp
new file mode 100644
index 00000000..d528cc2c
--- /dev/null
+++ b/parts/filelist/filelist_item.cpp
@@ -0,0 +1,104 @@
+/***************************************************************************
+ * Copyright (C) 2004 by Jens Dagerbo *
+ * jens.dagerbo@swipnet.se *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#include <kiconloader.h>
+#include <qfontmetrics.h>
+#include <qfileinfo.h>
+
+#include "filelist_item.h"
+
+#include <kiconloader.h>
+#include <kfileitem.h>
+
+FileListItem * FileListItem::s_activeItem = 0;
+
+FileListItem::FileListItem( QListView * parent, KURL const & url, DocumentState state )
+ : QListViewItem( parent, url.fileName() ),
+ _url( url )
+
+{
+ KFileItem fileItem( KFileItem::Unknown, KFileItem::Unknown, _url );
+ _icon = fileItem.pixmap(KIcon::SizeSmall);
+ setState( state );
+}
+
+KURL FileListItem::url()
+{
+ return _url;
+}
+
+DocumentState FileListItem::state( )
+{
+ return _state;
+}
+
+void FileListItem::setState( DocumentState state )
+{
+ _state = state;
+
+ switch( state )
+ {
+ case Clean:
+ setPixmap( 0, _icon);
+// setPixmap( 0, 0L );
+ break;
+ case Modified:
+ setPixmap( 0, SmallIcon("filesave") );
+ break;
+ case Dirty:
+ setPixmap( 0, SmallIcon("revert") );
+ break;
+ case DirtyAndModified:
+ setPixmap( 0, SmallIcon("stop") );
+ break;
+ }
+}
+
+void FileListItem::setHeight( int )
+{
+ QListViewItem::setHeight( KIcon::SizeSmall > listView()->fontMetrics().height() ? KIcon::SizeSmall : listView()->fontMetrics().height() );
+}
+
+void FileListItem::paintCell( QPainter * p, const QColorGroup & cg, int column, int width, int align )
+{
+ QColorGroup mcg = cg;
+
+ if ( isActive() )
+ {
+ mcg.setColor( QColorGroup::Base, Qt::yellow );
+ }
+
+ QListViewItem::paintCell( p, mcg, column, width, align );
+}
+
+bool FileListItem::isActive( )
+{
+ return ( s_activeItem == this );
+}
+
+//static
+void FileListItem::setActive( FileListItem * item )
+{
+ s_activeItem = item;
+}
+
+int FileListItem::compare( QListViewItem * i, int col, bool ascending ) const
+{
+ QFileInfo info1( key( col, ascending ) ); //this
+ QFileInfo info2( i->key( col, ascending ) ); //that
+ int fileComp = info1.fileName().compare( info2.fileName() );
+ if ( fileComp != 0 )
+ return fileComp;
+ else
+ return info1.extension().compare( info2.extension() );
+}
+
+// kate: space-indent off; indent-width 4; tab-width 4; show-tabs off;