Merged with trunk
Ported the icon cache FossilOrigin-Name: 713625d58306a081885455e8f3869723fe649fdd
This commit is contained in:
commit
009c3d055d
14
manifest
14
manifest
@ -1,5 +1,5 @@
|
|||||||
C Fixed\sbug\swhere\sa\sfossil\soutput\sline\swould\snot\sbe\soutput\sunder\scertain\sconditions
|
C Merged\swith\strunk\nPorted\sthe\sicon\scache
|
||||||
D 2015-05-03T17:57:33.003
|
D 2015-05-03T19:27:50.028
|
||||||
F .travis.yml 77966888a81c4ceee1fcc79bce842c9667ad8a35
|
F .travis.yml 77966888a81c4ceee1fcc79bce842c9667ad8a35
|
||||||
F debian/changelog eb4304dfcb6bb66850ec740838090eb50ce1249b
|
F debian/changelog eb4304dfcb6bb66850ec740838090eb50ce1249b
|
||||||
F debian/compat b6abd567fa79cbe0196d093a067271361dc6ca8b
|
F debian/compat b6abd567fa79cbe0196d093a067271361dc6ca8b
|
||||||
@ -200,8 +200,8 @@ F src/Fossil.cpp ca7ad24622e1fc1a03c92d7ae9b51afc17f7c09c
|
|||||||
F src/Fossil.h d65a7461d213bcc30f08724d3306c6ee00843217
|
F src/Fossil.h d65a7461d213bcc30f08724d3306c6ee00843217
|
||||||
F src/LoggedProcess.cpp 2a1e5c94bc1e57c8984563e66c210e43a14dc60c
|
F src/LoggedProcess.cpp 2a1e5c94bc1e57c8984563e66c210e43a14dc60c
|
||||||
F src/LoggedProcess.h 85df7c635c807a5a0e8c4763f17a0752aaff7261
|
F src/LoggedProcess.h 85df7c635c807a5a0e8c4763f17a0752aaff7261
|
||||||
F src/MainWindow.cpp 0a5183c05ff08b635cd9517182b2357240ea52be
|
F src/MainWindow.cpp e56d3fe486a388a27f39648de7a58fab8be2824e
|
||||||
F src/MainWindow.h 725b4b5ed259029fd3de4bda65ca89f35c37e55e
|
F src/MainWindow.h 2b84fe52f8184364d63a7c9518500017b866e8ea
|
||||||
F src/RevisionDialog.cpp 51065c65a07c118dd1a7363da4a55a135d1c6c9c
|
F src/RevisionDialog.cpp 51065c65a07c118dd1a7363da4a55a135d1c6c9c
|
||||||
F src/RevisionDialog.h b718c3009342eaabad39c8a11a253a4e4fef7a73
|
F src/RevisionDialog.h b718c3009342eaabad39c8a11a253a4e4fef7a73
|
||||||
F src/SettingsDialog.cpp a46cff5e5dd425e3dbdd15632abfd5829f5562b4
|
F src/SettingsDialog.cpp a46cff5e5dd425e3dbdd15632abfd5829f5562b4
|
||||||
@ -220,7 +220,7 @@ F ui/FileActionDialog.ui 89bb4dc2d0b8adcd41adcb11ec65f2028a09a12d
|
|||||||
F ui/MainWindow.ui 9dd0f9ef3f486413c9af912ac557c0e7bf9c6f50
|
F ui/MainWindow.ui 9dd0f9ef3f486413c9af912ac557c0e7bf9c6f50
|
||||||
F ui/RevisionDialog.ui 27c3b98c665fec014a50cbf3352c0627f75e68cd
|
F ui/RevisionDialog.ui 27c3b98c665fec014a50cbf3352c0627f75e68cd
|
||||||
F ui/SettingsDialog.ui 2b7c2870e0054b0f4106f495d85d02c0b814df8b
|
F ui/SettingsDialog.ui 2b7c2870e0054b0f4106f495d85d02c0b814df8b
|
||||||
P a297f70942e3dccf9904c054fb9e633edb9c59cb
|
P 2744a0db324c05cb0f4e2e73128d8c3837d66479 964b28f34fae482959ce8a96cbc6106f8702fb33
|
||||||
R e0fe347c0fa4907206bddff7538284f8
|
R 5246702db3f74ca03143a4c68bf370e8
|
||||||
U kostas
|
U kostas
|
||||||
Z 101db116ff5c22dbcc32decf8bc34dd6
|
Z 59727ab2a076e48750a62615838a345e
|
||||||
|
@ -1 +1 @@
|
|||||||
2744a0db324c05cb0f4e2e73128d8c3837d66479
|
713625d58306a081885455e8f3869723fe649fdd
|
@ -6,7 +6,6 @@
|
|||||||
#include <QDrag>
|
#include <QDrag>
|
||||||
#include <QDragEnterEvent>
|
#include <QDragEnterEvent>
|
||||||
#include <QFileDialog>
|
#include <QFileDialog>
|
||||||
#include <QFileIconProvider>
|
|
||||||
#include <QInputDialog>
|
#include <QInputDialog>
|
||||||
#include <QMimeData>
|
#include <QMimeData>
|
||||||
#include <QProgressBar>
|
#include <QProgressBar>
|
||||||
@ -623,7 +622,7 @@ void MainWindow::scanWorkspace()
|
|||||||
}
|
}
|
||||||
|
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
static void addPathToTree(QStandardItem &root, const QString &path)
|
static void addPathToTree(QStandardItem &root, const QString &path, const QIcon &folderIcon)
|
||||||
{
|
{
|
||||||
QStringList dirs = path.split('/');
|
QStringList dirs = path.split('/');
|
||||||
QStandardItem *parent = &root;
|
QStandardItem *parent = &root;
|
||||||
@ -649,7 +648,7 @@ static void addPathToTree(QStandardItem &root, const QString &path)
|
|||||||
|
|
||||||
if(!found) // Generate it
|
if(!found) // Generate it
|
||||||
{
|
{
|
||||||
QStandardItem *child = new QStandardItem(QIcon(":icons/icons/Folder-01.png"), dir);
|
QStandardItem *child = new QStandardItem(folderIcon, dir);
|
||||||
child->setData(WorkspaceItem(WorkspaceItem::TYPE_FOLDER, fullpath), ROLE_WORKSPACE_ITEM);
|
child->setData(WorkspaceItem(WorkspaceItem::TYPE_FOLDER, fullpath), ROLE_WORKSPACE_ITEM);
|
||||||
parent->appendRow(child);
|
parent->appendRow(child);
|
||||||
parent = child;
|
parent = child;
|
||||||
@ -668,7 +667,7 @@ void MainWindow::updateWorkspaceView()
|
|||||||
header << tr("Workspace");
|
header << tr("Workspace");
|
||||||
getWorkspace().getDirModel().setHorizontalHeaderLabels(header);
|
getWorkspace().getDirModel().setHorizontalHeaderLabels(header);
|
||||||
|
|
||||||
QStandardItem *workspace = new QStandardItem(QIcon(":icons/icons/Folder-01.png"), tr("Files") );
|
QStandardItem *workspace = new QStandardItem(getInternalIcon(":icons/icons/Folder-01.png"), tr("Files") );
|
||||||
workspace->setData(WorkspaceItem(WorkspaceItem::TYPE_WORKSPACE, ""), ROLE_WORKSPACE_ITEM);
|
workspace->setData(WorkspaceItem(WorkspaceItem::TYPE_WORKSPACE, ""), ROLE_WORKSPACE_ITEM);
|
||||||
workspace->setEditable(false);
|
workspace->setEditable(false);
|
||||||
|
|
||||||
@ -681,56 +680,56 @@ void MainWindow::updateWorkspaceView()
|
|||||||
if(dir.isEmpty())
|
if(dir.isEmpty())
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
addPathToTree(*workspace, dir);
|
addPathToTree(*workspace, dir, getInternalIcon(":icons/icons/Folder-01.png"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Branches
|
// Branches
|
||||||
QStandardItem *branches = new QStandardItem(QIcon(":icons/icons/Document Organization Chart-01.png"), "Branches");
|
QStandardItem *branches = new QStandardItem(getInternalIcon(":icons/icons/Document Organization Chart-01.png"), "Branches");
|
||||||
branches->setData(WorkspaceItem(WorkspaceItem::TYPE_BRANCHES, ""), ROLE_WORKSPACE_ITEM);
|
branches->setData(WorkspaceItem(WorkspaceItem::TYPE_BRANCHES, ""), ROLE_WORKSPACE_ITEM);
|
||||||
branches->setEditable(false);
|
branches->setEditable(false);
|
||||||
getWorkspace().getDirModel().appendRow(branches);
|
getWorkspace().getDirModel().appendRow(branches);
|
||||||
foreach(const QString &branch_name, getWorkspace().getBranches())
|
foreach(const QString &branch_name, getWorkspace().getBranches())
|
||||||
{
|
{
|
||||||
QStandardItem *branch = new QStandardItem(QIcon(":icons/icons/Document Organization Chart-01.png"), branch_name);
|
QStandardItem *branch = new QStandardItem(getInternalIcon(":icons/icons/Document Organization Chart-01.png"), branch_name);
|
||||||
branch->setData(WorkspaceItem(WorkspaceItem::TYPE_BRANCH, branch_name), ROLE_WORKSPACE_ITEM);
|
branch->setData(WorkspaceItem(WorkspaceItem::TYPE_BRANCH, branch_name), ROLE_WORKSPACE_ITEM);
|
||||||
branches->appendRow(branch);
|
branches->appendRow(branch);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Tags
|
// Tags
|
||||||
QStandardItem *tags = new QStandardItem(QIcon(":icons/icons/Book-01.png"), "Tags");
|
QStandardItem *tags = new QStandardItem(getInternalIcon(":icons/icons/Book-01.png"), "Tags");
|
||||||
tags->setData(WorkspaceItem(WorkspaceItem::TYPE_TAGS, ""), ROLE_WORKSPACE_ITEM);
|
tags->setData(WorkspaceItem(WorkspaceItem::TYPE_TAGS, ""), ROLE_WORKSPACE_ITEM);
|
||||||
tags->setEditable(false);
|
tags->setEditable(false);
|
||||||
getWorkspace().getDirModel().appendRow(tags);
|
getWorkspace().getDirModel().appendRow(tags);
|
||||||
for(QStringMap::const_iterator it=getWorkspace().getTags().begin(); it!=getWorkspace().getTags().end(); ++it)
|
for(QStringMap::const_iterator it=getWorkspace().getTags().begin(); it!=getWorkspace().getTags().end(); ++it)
|
||||||
{
|
{
|
||||||
const QString &tag_name = it.key();
|
const QString &tag_name = it.key();
|
||||||
QStandardItem *tag = new QStandardItem(QIcon(":icons/icons/Book-01.png"), tag_name);
|
QStandardItem *tag = new QStandardItem(getInternalIcon(":icons/icons/Book-01.png"), tag_name);
|
||||||
tag->setData(WorkspaceItem(WorkspaceItem::TYPE_TAG, tag_name), ROLE_WORKSPACE_ITEM);
|
tag->setData(WorkspaceItem(WorkspaceItem::TYPE_TAG, tag_name), ROLE_WORKSPACE_ITEM);
|
||||||
tags->appendRow(tag);
|
tags->appendRow(tag);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Stashes
|
// Stashes
|
||||||
QStandardItem *stashes = new QStandardItem(QIcon(":icons/icons/My Documents-01.png"), "Stashes");
|
QStandardItem *stashes = new QStandardItem(getInternalIcon(":icons/icons/My Documents-01.png"), "Stashes");
|
||||||
stashes->setData(WorkspaceItem(WorkspaceItem::TYPE_STASHES, ""), ROLE_WORKSPACE_ITEM);
|
stashes->setData(WorkspaceItem(WorkspaceItem::TYPE_STASHES, ""), ROLE_WORKSPACE_ITEM);
|
||||||
stashes->setEditable(false);
|
stashes->setEditable(false);
|
||||||
getWorkspace().getDirModel().appendRow(stashes);
|
getWorkspace().getDirModel().appendRow(stashes);
|
||||||
for(stashmap_t::const_iterator it= getWorkspace().getStashes().begin(); it!=getWorkspace().getStashes().end(); ++it)
|
for(stashmap_t::const_iterator it= getWorkspace().getStashes().begin(); it!=getWorkspace().getStashes().end(); ++it)
|
||||||
{
|
{
|
||||||
QStandardItem *stash = new QStandardItem(QIcon(":icons/icons/My Documents-01.png"), it.key());
|
QStandardItem *stash = new QStandardItem(getInternalIcon(":icons/icons/My Documents-01.png"), it.key());
|
||||||
stash->setData(WorkspaceItem(WorkspaceItem::TYPE_STASH, it.value()), ROLE_WORKSPACE_ITEM);
|
stash->setData(WorkspaceItem(WorkspaceItem::TYPE_STASH, it.value()), ROLE_WORKSPACE_ITEM);
|
||||||
stashes->appendRow(stash);
|
stashes->appendRow(stash);
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 0 // Unimplemented for now
|
#if 0 // Unimplemented for now
|
||||||
// Remotes
|
// Remotes
|
||||||
QStandardItem *remotes = new QStandardItem(QIcon(":icons/icons/Network PC-01.png"), "Remotes");
|
QStandardItem *remotes = new QStandardItem(getInternalIcon(":icons/icons/Network PC-01.png"), "Remotes");
|
||||||
remotes->setData(WorkspaceItem(WorkspaceItem::TYPE_REMOTES, ""), ROLE_WORKSPACE_ITEM);
|
remotes->setData(WorkspaceItem(WorkspaceItem::TYPE_REMOTES, ""), ROLE_WORKSPACE_ITEM);
|
||||||
remotes->setEditable(false);
|
remotes->setEditable(false);
|
||||||
getWorkspace().getDirModel().appendRow(remotes);
|
getWorkspace().getDirModel().appendRow(remotes);
|
||||||
|
|
||||||
// Settings
|
// Settings
|
||||||
QStandardItem *settings = new QStandardItem(QIcon(":icons/icons/Gear-01.png"), "Settings");
|
QStandardItem *settings = new QStandardItem(getInternalIcon(":icons/icons/Gear-01.png"), "Settings");
|
||||||
settings->setData(WorkspaceItem(WorkspaceItem::TYPE_SETTINGS, ""), ROLE_WORKSPACE_ITEM);
|
settings->setData(WorkspaceItem(WorkspaceItem::TYPE_SETTINGS, ""), ROLE_WORKSPACE_ITEM);
|
||||||
settings->setEditable(false);
|
settings->setEditable(false);
|
||||||
getWorkspace().getDirModel().appendRow(settings);
|
getWorkspace().getDirModel().appendRow(settings);
|
||||||
@ -758,8 +757,6 @@ void MainWindow::updateFileView()
|
|||||||
{ WorkspaceFile::TYPE_MERGED, tr("Merged"), ":icons/icons/Button Blank Yellow-01.png" },
|
{ WorkspaceFile::TYPE_MERGED, tr("Merged"), ":icons/icons/Button Blank Yellow-01.png" },
|
||||||
};
|
};
|
||||||
|
|
||||||
QFileIconProvider icon_provider;
|
|
||||||
|
|
||||||
bool display_path = viewMode==VIEWMODE_LIST || selectedDirs.count() > 1;
|
bool display_path = viewMode==VIEWMODE_LIST || selectedDirs.count() > 1;
|
||||||
|
|
||||||
size_t item_id=0;
|
size_t item_id=0;
|
||||||
@ -786,20 +783,26 @@ void MainWindow::updateFileView()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
QStandardItem *status = new QStandardItem(QIcon(status_icon_path), status_text);
|
QStandardItem *status = new QStandardItem(getInternalIcon(status_icon_path), status_text);
|
||||||
status->setToolTip(status_text);
|
status->setToolTip(status_text);
|
||||||
getWorkspace().getFileModel().setItem(item_id, COLUMN_STATUS, status);
|
getWorkspace().getFileModel().setItem(item_id, COLUMN_STATUS, status);
|
||||||
|
|
||||||
QFileInfo finfo = e.getFileInfo();
|
QFileInfo finfo = e.getFileInfo();
|
||||||
QIcon icon = icon_provider.icon(finfo);
|
QString icon_type = iconProvider.type(finfo);
|
||||||
|
|
||||||
|
|
||||||
|
if(!iconCache.contains(icon_type))
|
||||||
|
iconCache.insert(icon_type, iconProvider.icon(finfo));
|
||||||
|
|
||||||
|
const QIcon *icon = &iconCache[icon_type];
|
||||||
|
|
||||||
QStandardItem *filename_item = 0;
|
QStandardItem *filename_item = 0;
|
||||||
getWorkspace().getFileModel().setItem(item_id, COLUMN_PATH, new QStandardItem(path));
|
getWorkspace().getFileModel().setItem(item_id, COLUMN_PATH, new QStandardItem(path));
|
||||||
|
|
||||||
if(display_path)
|
if(display_path)
|
||||||
filename_item = new QStandardItem(icon, QDir::toNativeSeparators(e.getFilePath()));
|
filename_item = new QStandardItem(*icon, QDir::toNativeSeparators(e.getFilePath()));
|
||||||
else
|
else
|
||||||
filename_item = new QStandardItem(icon, e.getFilename());
|
filename_item = new QStandardItem(*icon, e.getFilename());
|
||||||
|
|
||||||
Q_ASSERT(filename_item);
|
Q_ASSERT(filename_item);
|
||||||
// Keep the path in the user data
|
// Keep the path in the user data
|
||||||
@ -1834,6 +1837,16 @@ QMenu * MainWindow::createPopupMenu()
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
const QIcon &MainWindow::getInternalIcon(const char* name)
|
||||||
|
{
|
||||||
|
if(iconCache.contains(name))
|
||||||
|
return iconCache[name];
|
||||||
|
|
||||||
|
iconCache.insert(name, QIcon(name));
|
||||||
|
return iconCache[name];
|
||||||
|
}
|
||||||
|
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
void MainWindow::on_actionNewStash_triggered()
|
void MainWindow::on_actionNewStash_triggered()
|
||||||
{
|
{
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
|
|
||||||
#include <QMainWindow>
|
#include <QMainWindow>
|
||||||
#include <QStringList>
|
#include <QStringList>
|
||||||
|
#include <QFileIconProvider>
|
||||||
#include "SettingsDialog.h"
|
#include "SettingsDialog.h"
|
||||||
#include "Workspace.h"
|
#include "Workspace.h"
|
||||||
|
|
||||||
@ -58,6 +59,7 @@ private:
|
|||||||
void dropEvent(class QDropEvent *event);
|
void dropEvent(class QDropEvent *event);
|
||||||
void setBusy(bool busy);
|
void setBusy(bool busy);
|
||||||
virtual QMenu *createPopupMenu();
|
virtual QMenu *createPopupMenu();
|
||||||
|
const QIcon& getInternalIcon(const char *name);
|
||||||
|
|
||||||
enum ViewMode
|
enum ViewMode
|
||||||
{
|
{
|
||||||
@ -149,7 +151,11 @@ private:
|
|||||||
MAX_RECENT=5
|
MAX_RECENT=5
|
||||||
};
|
};
|
||||||
|
|
||||||
|
typedef QMap<QString, QIcon> icon_map_t;
|
||||||
|
|
||||||
Ui::MainWindow *ui;
|
Ui::MainWindow *ui;
|
||||||
|
QFileIconProvider iconProvider;
|
||||||
|
icon_map_t iconCache;
|
||||||
class QAction *recentWorkspaceActs[MAX_RECENT];
|
class QAction *recentWorkspaceActs[MAX_RECENT];
|
||||||
class QProgressBar *progressBar;
|
class QProgressBar *progressBar;
|
||||||
class QLabel *lblRevision;
|
class QLabel *lblRevision;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user