Compare commits
11 Commits
f3f98450e8
...
main
Author | SHA1 | Date | |
---|---|---|---|
|
4045938bb7 | ||
|
26c10b8ccc | ||
4c18fa3944 | |||
8e2ff6c116 | |||
2408dc32ea | |||
|
0a6c764ce3 | ||
|
dc38809146 | ||
f308c6845e | |||
bfbb45d5cc | |||
7503db9059 | |||
|
25b78bd8d8 |
34
.github/workflows/build.yml
vendored
34
.github/workflows/build.yml
vendored
@ -7,29 +7,34 @@ jobs:
|
||||
build-msvc:
|
||||
name: Build Windows
|
||||
runs-on: windows-latest
|
||||
env:
|
||||
BUILD_TOOLS_PATH: C:\apps\build-tools\
|
||||
steps:
|
||||
- name: Add Conan to path
|
||||
run: echo "C:\Program Files\Conan\conan\" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
|
||||
- run: echo $env:BUILD_TOOLS_PATH | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
|
||||
|
||||
- uses: actions/checkout@v2.3.4
|
||||
- uses: actions/checkout@v3
|
||||
with:
|
||||
submodules: true
|
||||
|
||||
- name: Install deps
|
||||
run: choco install jom conan -y
|
||||
- name: Install Build tools
|
||||
shell: cmake -P {0}
|
||||
run: |
|
||||
file(MAKE_DIRECTORY $ENV{BUILD_TOOLS_PATH})
|
||||
file(DOWNLOAD https://cdn.anotherfoxguy.com/build-tools.zip "$ENV{TMP}/build-tools.zip" SHOW_PROGRESS)
|
||||
execute_process(COMMAND ${CMAKE_COMMAND} -E tar xzf "$ENV{TMP}/build-tools.zip" WORKING_DIRECTORY "$ENV{BUILD_TOOLS_PATH}")
|
||||
|
||||
- name: Enable Developer Command Prompt
|
||||
uses: ilammy/msvc-dev-cmd@v1.10.0
|
||||
|
||||
- name: Cache conan packages
|
||||
uses: actions/cache@v2.1.6
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
key: win-conan-${{ hashFiles('**/conanfile.txt') }}
|
||||
path: ~/.conan/
|
||||
|
||||
- name: Cache Qt
|
||||
id: cache-qt
|
||||
uses: actions/cache@v2.1.6
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: "${{ github.workspace }}/qt/"
|
||||
key: ${{ runner.os }}-QtCache
|
||||
@ -41,23 +46,22 @@ jobs:
|
||||
modules: qtwebengine
|
||||
dir: "${{ github.workspace }}/qt/"
|
||||
|
||||
- name: Export qtkeychain
|
||||
run: |
|
||||
conan export recipes/qtkeychain
|
||||
- name: Add conan remote
|
||||
run: conan remote add fuel-scm https://artifactory.anotherfoxguy.com/artifactory/api/conan/fuel-scm -f
|
||||
|
||||
- name: Build
|
||||
run: |
|
||||
mkdir build
|
||||
cd build
|
||||
conan install .. --build=missing
|
||||
cmake -G"NMake Makefiles JOM" -DCMAKE_INSTALL_PREFIX=redist ..
|
||||
jom
|
||||
cmake -GNinja -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=redist ..
|
||||
ninja
|
||||
shell: cmd
|
||||
|
||||
- name: Install
|
||||
run: |
|
||||
cd build
|
||||
jom install
|
||||
ninja install
|
||||
shell: cmd
|
||||
|
||||
- name: Upload redist folder
|
||||
@ -70,7 +74,7 @@ jobs:
|
||||
name: Build Linux
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2.3.4
|
||||
- uses: actions/checkout@v3
|
||||
with:
|
||||
submodules: true
|
||||
|
||||
@ -85,4 +89,4 @@ jobs:
|
||||
cd build
|
||||
cmake -DCMAKE_BUILD_TYPE=Release ..
|
||||
make -j4
|
||||
shell: bash
|
||||
shell: bash
|
||||
|
3
.gitignore
vendored
3
.gitignore
vendored
@ -44,4 +44,5 @@ CMakeLists.txt.user*
|
||||
|
||||
*.qm
|
||||
/build*
|
||||
.idea/
|
||||
.idea/
|
||||
test-pr
|
@ -155,7 +155,9 @@ endif ()
|
||||
# ------------------------------------------------------------------------------------------------#
|
||||
|
||||
include(GNUInstallDirs)
|
||||
include(FetchContent)
|
||||
|
||||
set(CMAKE_INSTALL_DEFAULT_COMPONENT_NAME "${PROJECT_NAME}")
|
||||
set(CPACK_PACKAGE_NAME "${PROJECT_NAME}")
|
||||
set(CPACK_PACKAGE_VENDOR "${PROJECT_NAME}")
|
||||
set(CPACK_PACKAGE_DESCRIPTION "A GUI front-end for the Fossil SCM")
|
||||
@ -191,22 +193,34 @@ if (WIN32)
|
||||
|
||||
install(CODE "execute_process(COMMAND ${QT_BIN_DIR}/windeployqt.exe $<TARGET_FILE:${PROJECT_NAME}> --release --no-opengl-sw --dir \${CMAKE_INSTALL_PREFIX})")
|
||||
|
||||
|
||||
FetchContent_Declare(
|
||||
fossil
|
||||
URL https://fossil-scm.org/home/uv/fossil-w64-2.17.zip
|
||||
URL_MD5 f62b6e28846871741e057cfd09acdfc8
|
||||
)
|
||||
FetchContent_MakeAvailable(fossil)
|
||||
|
||||
install(
|
||||
PROGRAMS ${fossil_SOURCE_DIR}/fossil.exe
|
||||
DESTINATION .
|
||||
COMPONENT Fossil
|
||||
EXCLUDE_FROM_ALL
|
||||
)
|
||||
|
||||
# For Windows Desktop shortcuts
|
||||
set(CPACK_CREATE_DESKTOP_LINKS "${PROJECT_NAME}" "${PROJECT_NAME}")
|
||||
|
||||
# Windows Add or Remove Program properties
|
||||
set(CPACK_WIX_PROGRAM_MENU_FOLDER "${PROJECT_NAME}")
|
||||
set(CPACK_WIX_PROPERTY_ARPCOMMENTS "${CPACK_PACKAGE_DESCRIPTION_SUMMARY}")
|
||||
set(CPACK_WIX_PROPERTY_ARPURLINFOABOUT "https://fuel-scm.org")
|
||||
set(CPACK_WIX_PROPERTY_URLUPDATEINFO "https://fuel-scm.org")
|
||||
|
||||
set(CPACK_WIX_PRODUCT_ICON "${CMAKE_SOURCE_DIR}/rsrc/icons/fuel.ico")
|
||||
|
||||
set(CPACK_WIX_LICENSE_RTF "${CPACK_RESOURCE_FILE_LICENSE}")
|
||||
set(CPACK_WIX_UPGRADE_GUID "462522bf-36e4-4ce9-93e1-a4200f23096e")
|
||||
set(CPACK_NSIS_EXECUTABLES_DIRECTORY ".")
|
||||
set(CPACK_NSIS_MODIFY_PATH "ON")
|
||||
set(CPACK_NSIS_HELP_LINK "https://fuel-scm.org")
|
||||
set(CPACK_NSIS_URL_INFO_ABOUT "https://fuel-scm.org")
|
||||
SET(CPACK_NSIS_INSTALLED_ICON_NAME "Fuel.exe")
|
||||
SET(CPACK_NSIS_MUI_ICON "${CMAKE_SOURCE_DIR}/rsrc/icons/fuel.ico")
|
||||
SET(CPACK_NSIS_MUI_UNIICON "${CMAKE_SOURCE_DIR}/rsrc/icons/fuel.ico")
|
||||
|
||||
set(CPACK_PACKAGE_INSTALL_DIRECTORY "${PROJECT_NAME}")
|
||||
set(CPACK_GENERATOR ${CPACK_GENERATOR};WIX)
|
||||
set(CPACK_GENERATOR ${CPACK_GENERATOR} NSIS)
|
||||
set(CPACK_MODULE_PATH "")
|
||||
endif ()
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
[requires]
|
||||
qtkeychain/0.12.0
|
||||
qtkeychain/0.13.2
|
||||
|
||||
[generators]
|
||||
qmake
|
||||
|
8
dist/debian/changelog
vendored
8
dist/debian/changelog
vendored
@ -1,8 +0,0 @@
|
||||
fuel (1.0.0-1) unstable; urgency=low
|
||||
* Feature: Long Operations can now be aborted by pressing the Escape key
|
||||
* Improvement: Better support for commit messages with international characters
|
||||
* Improvement: Fossil queries about CR/NL inconsistencies are now handled better
|
||||
* Improvement: Files in Conflicted state are now shown
|
||||
* Added localisations: Russia, Portuguese
|
||||
|
||||
-- Kostas <karanikolas@gmail.com> Sat, 28 Mar 2015 12:00:00 +0200
|
1
dist/debian/compat
vendored
1
dist/debian/compat
vendored
@ -1 +0,0 @@
|
||||
9
|
17
dist/debian/control
vendored
17
dist/debian/control
vendored
@ -1,17 +0,0 @@
|
||||
Source: fuel
|
||||
Section: x11
|
||||
Priority: optional
|
||||
Maintainer: Kostas Karanikolas <karanikolas@gmail.com>
|
||||
Build-Depends: cdbs, debhelper (>= 8.0.0), qtbase5-dev, qttools5-dev-tools,
|
||||
libqt5webkit5-dev
|
||||
Standards-Version: 3.9.4
|
||||
Homepage: http://fuelscm.org
|
||||
#Vcs-Git: git://git.debian.org/collab-maint/fuel.git
|
||||
#Vcs-Browser: http://git.debian.org/?p=collab-maint/fuel.git;a=summary
|
||||
|
||||
Package: fuel
|
||||
Architecture: any
|
||||
Depends: ${shlibs:Depends}, ${misc:Depends}
|
||||
Recommends: fossil
|
||||
Description: Fossil SCM GUI
|
||||
Fuel is cross-platform GUI front-end for the Fossil SCM tool written in Qt.
|
38
dist/debian/copyright
vendored
38
dist/debian/copyright
vendored
@ -1,38 +0,0 @@
|
||||
Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
|
||||
Upstream-Name: fuel
|
||||
Source: <url://example.com>
|
||||
|
||||
Files: *
|
||||
Copyright: <years> <put author's name and email here>
|
||||
<years> <likewise for another author>
|
||||
License: <special license>
|
||||
<Put the license of the package here indented by 1 space>
|
||||
<This follows the format of Description: lines in control file>
|
||||
.
|
||||
<Including paragraphs>
|
||||
|
||||
# If you want to use GPL v2 or later for the /debian/* files use
|
||||
# the following clauses, or change it to suit. Delete these two lines
|
||||
Files: debian/*
|
||||
Copyright: 2014 Kostas <kostas@unknown>
|
||||
License: GPL-2+
|
||||
This package 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.
|
||||
.
|
||||
This package is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
.
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>
|
||||
.
|
||||
On Debian systems, the complete text of the GNU General
|
||||
Public License version 2 can be found in "/usr/share/common-licenses/GPL-2".
|
||||
|
||||
# Please also look if there are files or directories which have a
|
||||
# different copyright/license attached and list them here.
|
||||
# Please avoid to pick license terms that are more restrictive than the
|
||||
# packaged work, as it may make Debian's contributions unacceptable upstream.
|
1
dist/debian/fuel.install
vendored
1
dist/debian/fuel.install
vendored
@ -1 +0,0 @@
|
||||
rsrc/icons/fuel.png usr/share/pixmaps
|
6
dist/debian/menu
vendored
6
dist/debian/menu
vendored
@ -1,6 +0,0 @@
|
||||
?package(fuel):\
|
||||
needs="X11"\
|
||||
section="Applications/File Management"\
|
||||
title="Fuel"\
|
||||
icon32x32="/usr/share/pixmaps/fuel.png"\
|
||||
command="/usr/bin/fuel"
|
6
dist/debian/rules
vendored
6
dist/debian/rules
vendored
@ -1,6 +0,0 @@
|
||||
#!/usr/bin/make -f
|
||||
# -*- makefile -*-
|
||||
|
||||
include /usr/share/cdbs/1/rules/debhelper.mk
|
||||
include /usr/share/cdbs/1/class/qmake.mk
|
||||
|
1
dist/debian/source/format
vendored
1
dist/debian/source/format
vendored
@ -1 +0,0 @@
|
||||
3.0 (quilt)
|
24
dist/debian/watch
vendored
24
dist/debian/watch
vendored
@ -1,24 +0,0 @@
|
||||
# Example watch control file for uscan
|
||||
# Rename this file to "watch" and then you can run the "uscan" command
|
||||
# to check for upstream updates and more.
|
||||
# See uscan(1) for format
|
||||
|
||||
# Compulsory line, this is a version 3 file
|
||||
version=3
|
||||
|
||||
# Uncomment to examine a Webpage
|
||||
# <Webpage URL> <string match>
|
||||
#http://www.example.com/downloads.php fuel-(.*)\.tar\.gz
|
||||
http://fuelscm.org/files/releases fuel-(.*)\.tar\.gz
|
||||
|
||||
# Uncomment to examine a Webserver directory
|
||||
#http://www.example.com/pub/fuel-(.*)\.tar\.gz
|
||||
|
||||
# Uncommment to examine a FTP server
|
||||
#ftp://ftp.example.com/pub/fuel-(.*)\.tar\.gz debian uupdate
|
||||
|
||||
# Uncomment to find new files on sourceforge, for devscripts >= 2.9
|
||||
# http://sf.net/fuel/fuel-(.*)\.tar\.gz
|
||||
|
||||
# Uncomment to find new files on GooglePages
|
||||
# http://example.googlepages.com/foo.html fuel-(.*)\.tar\.gz
|
27
dist/makedeb/PKGBUILD
vendored
Normal file
27
dist/makedeb/PKGBUILD
vendored
Normal file
@ -0,0 +1,27 @@
|
||||
# Maintainer: Edgar <Edgar{at}AnotherFoxGuy.com>
|
||||
pkgname=fuel-git
|
||||
pkgver=2.0.0
|
||||
pkgrel=1
|
||||
pkgdesc="A GUI front-end to Fossil SCM"
|
||||
arch=(i686 x86_64)
|
||||
url="https://fuel-scm.org/"
|
||||
license=('GPL2')
|
||||
depends=('qtbase5-dev' 'qtwebengine5-dev' 'qttools5-dev' 'fossil' 'qt5keychain-dev')
|
||||
makedepends=('git' 'cmake')
|
||||
source=("git://github.com/AnotherFoxGuy/fuel-scm")
|
||||
md5sums=('SKIP')
|
||||
|
||||
build() {
|
||||
cd "$srcdir/fuel-scm"
|
||||
[ -d build ] && rm -r build
|
||||
mkdir build
|
||||
cd build
|
||||
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr ..
|
||||
make -j$(nproc)
|
||||
}
|
||||
|
||||
package() {
|
||||
cd "$srcdir/fuel-scm/build"
|
||||
make DESTDIR="${pkgdir}" install
|
||||
}
|
||||
|
@ -3,7 +3,7 @@ from conans import ConanFile, CMake, tools
|
||||
|
||||
class QtkeychainConan(ConanFile):
|
||||
name = "qtkeychain"
|
||||
version = "0.12.0"
|
||||
version = "0.13.2"
|
||||
license = "BSD-3"
|
||||
author = "Edgar"
|
||||
url = "https://github.com/AnotherFoxGuy/fuel-scm"
|
||||
@ -14,7 +14,7 @@ class QtkeychainConan(ConanFile):
|
||||
scm = {
|
||||
"type": "git",
|
||||
"url": "https://github.com/frankosterfeld/qtkeychain.git",
|
||||
"revision": "v0.12.0"
|
||||
"revision": "v0.13.2"
|
||||
}
|
||||
|
||||
def build(self):
|
||||
|
@ -123,7 +123,7 @@ void Settings::SetFossilValue(const QString &name, const QVariant &value)
|
||||
//-----------------------------------------------------------------------------
|
||||
bool Settings::SupportsLang(const QString &langId) const
|
||||
{
|
||||
QString locale_path = QString(":intl/intl/%0.qm").arg(langId);
|
||||
QString locale_path = QString(":intl/%0.qm").arg(langId);
|
||||
QResource res(locale_path);
|
||||
return res.isValid();
|
||||
}
|
||||
|
@ -48,7 +48,7 @@ bool CloneDialog::run(QWidget *parent, QUrl &url, QString &repository, QUrl &url
|
||||
QString urltext = dlg.ui->lineURL->text();
|
||||
|
||||
// Check if the url is a local file
|
||||
if (QFileInfo(urltext).exists())
|
||||
if (QFileInfo::exists(urltext))
|
||||
url = QUrl::fromLocalFile(urltext);
|
||||
else
|
||||
{
|
||||
|
@ -36,14 +36,14 @@ WorkspaceState Fossil::getWorkspaceState()
|
||||
bool run_ok = exit_code == EXIT_SUCCESS;
|
||||
|
||||
activeTags.clear();
|
||||
for (QStringList::iterator it = res.begin(); it != res.end(); ++it)
|
||||
for (auto &re : res)
|
||||
{
|
||||
int col_index = it->indexOf(':');
|
||||
int col_index = re.indexOf(':');
|
||||
if (col_index == -1)
|
||||
continue;
|
||||
|
||||
QString key = it->left(col_index).trimmed();
|
||||
QString value = it->mid(col_index + 1).trimmed();
|
||||
QString key = re.left(col_index).trimmed();
|
||||
QString value = re.mid(col_index + 1).trimmed();
|
||||
|
||||
if (key == "fossil")
|
||||
{
|
||||
@ -363,7 +363,7 @@ bool Fossil::revertFiles(const QStringList &fileList)
|
||||
bool Fossil::renameFile(const QString &beforePath, const QString &afterPath, bool renameLocal)
|
||||
{
|
||||
// Ensure we can rename the file
|
||||
if (!QFileInfo(beforePath).exists() || QFileInfo(afterPath).exists())
|
||||
if (!QFileInfo::exists(beforePath) || QFileInfo::exists(afterPath))
|
||||
return false;
|
||||
|
||||
// Do Rename
|
||||
@ -449,7 +449,7 @@ bool Fossil::setRemoteUrl(const QUrl &url)
|
||||
|
||||
// FIXME: Fossil ignores any password passed via the URL
|
||||
// Run as silent to avoid displaying credentials in the log
|
||||
bool ok = runFossil(QStringList() << "remote-url" << u, 0, RUNFLAGS_SILENT_INPUT);
|
||||
bool ok = runFossil(QStringList() << "remote-url" << u, nullptr, RUNFLAGS_SILENT_INPUT);
|
||||
|
||||
return ok;
|
||||
}
|
||||
@ -817,7 +817,7 @@ bool Fossil::runFossilRaw(const QStringList &args, QStringList *output, int *exi
|
||||
// Create fossil process
|
||||
// FIXME: when we are sure this works delete this
|
||||
// LoggedProcess process(parentWidget*/);
|
||||
LoggedProcess process(0);
|
||||
LoggedProcess process(nullptr);
|
||||
|
||||
process.setWorkingDirectory(wkdir);
|
||||
|
||||
@ -860,11 +860,7 @@ bool Fossil::runFossilRaw(const QStringList &args, QStringList *output, int *exi
|
||||
|
||||
if (uiCallback->processAborted())
|
||||
{
|
||||
#ifdef Q_OS_WIN // Verify this is still true on Qt5
|
||||
process.kill(); // QT on windows cannot terminate console processes with QProcess::terminate
|
||||
#else
|
||||
process.terminate();
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
|
||||
@ -1109,7 +1105,7 @@ bool Fossil::isWorkspace(const QString &path)
|
||||
QString checkout_file1 = wkspace + PATH_SEPARATOR + FOSSIL_CHECKOUT1;
|
||||
QString checkout_file2 = wkspace + PATH_SEPARATOR + FOSSIL_CHECKOUT2;
|
||||
|
||||
return (QFileInfo(checkout_file1).exists() || QFileInfo(checkout_file2).exists());
|
||||
return (QFileInfo::exists(checkout_file1) || QFileInfo::exists(checkout_file2));
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
@ -1204,11 +1200,7 @@ void Fossil::stopUI()
|
||||
{
|
||||
if (uiRunning())
|
||||
{
|
||||
#ifdef Q_WS_WIN
|
||||
fossilUI.kill(); // QT on windows cannot terminate console processes with QProcess::terminate
|
||||
#else
|
||||
fossilUI.terminate();
|
||||
#endif
|
||||
}
|
||||
fossilUI.close();
|
||||
fossilUIPort.clear();
|
||||
|
@ -199,12 +199,12 @@ MainWindow::MainWindow(Settings &_settings, QWidget *parent, QString *workspaceP
|
||||
}
|
||||
}
|
||||
Q_ASSERT(recent_sep);
|
||||
for (int i = 0; i < MAX_RECENT; ++i)
|
||||
for (auto &recentWorkspaceAct : recentWorkspaceActs)
|
||||
{
|
||||
recentWorkspaceActs[i] = new QAction(this);
|
||||
recentWorkspaceActs[i]->setVisible(false);
|
||||
connect(recentWorkspaceActs[i], SIGNAL(triggered()), this, SLOT(onOpenRecent()));
|
||||
ui->menuFile->insertAction(recent_sep, recentWorkspaceActs[i]);
|
||||
recentWorkspaceAct = new QAction(this);
|
||||
recentWorkspaceAct->setVisible(false);
|
||||
connect(recentWorkspaceAct, SIGNAL(triggered()), this, SLOT(onOpenRecent()));
|
||||
ui->menuFile->insertAction(recent_sep, recentWorkspaceAct);
|
||||
}
|
||||
|
||||
// Custom Actions
|
||||
@ -368,7 +368,7 @@ bool MainWindow::openWorkspace(const QString &path)
|
||||
QString checkout_file1 = wkspace + PATH_SEPARATOR + FOSSIL_CHECKOUT1;
|
||||
QString checkout_file2 = wkspace + PATH_SEPARATOR + FOSSIL_CHECKOUT2;
|
||||
|
||||
if (!(QFileInfo(checkout_file1).exists() || QFileInfo(checkout_file2).exists()))
|
||||
if (!(QFileInfo::exists(checkout_file1) || QFileInfo::exists(checkout_file2)))
|
||||
{
|
||||
if (QMessageBox::Yes != DialogQuery(this, tr("Open Workspace"), tr("A workspace does not exist in this folder.\nWould you like to create one here?")))
|
||||
{
|
||||
@ -569,8 +569,8 @@ void MainWindow::on_actionCloneRepository_triggered()
|
||||
//------------------------------------------------------------------------------
|
||||
void MainWindow::rebuildRecent()
|
||||
{
|
||||
for (int i = 0; i < MAX_RECENT; ++i)
|
||||
recentWorkspaceActs[i]->setVisible(false);
|
||||
for (auto &recentWorkspaceAct : recentWorkspaceActs)
|
||||
recentWorkspaceAct->setVisible(false);
|
||||
|
||||
int enabled_acts = qMin<int>(MAX_RECENT, workspaceHistory.size());
|
||||
|
||||
@ -610,8 +610,8 @@ void MainWindow::enableActions(bool on)
|
||||
ui->actionViewIgnored, ui->actionViewModifedOnly, ui->actionViewModified, ui->actionViewUnchanged,
|
||||
ui->actionViewUnknown};
|
||||
|
||||
for (size_t i = 0; i < COUNTOF(actions); ++i)
|
||||
actions[i]->setEnabled(on);
|
||||
for (auto &action : actions)
|
||||
action->setEnabled(on);
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
@ -710,9 +710,8 @@ static void addPathToTree(QStandardItem &root, const QString &path, const QIcon
|
||||
QStandardItem *parent = &root;
|
||||
|
||||
QString fullpath;
|
||||
for (QStringList::iterator it = dirs.begin(); it != dirs.end(); ++it)
|
||||
for (auto &dir : dirs)
|
||||
{
|
||||
const QString &dir = *it;
|
||||
fullpath += dir;
|
||||
|
||||
// Find the child that matches this subdirectory
|
||||
@ -810,7 +809,7 @@ void MainWindow::updateWorkspaceView()
|
||||
if (viewMode == VIEWMODE_TREE)
|
||||
{
|
||||
// FIXME: Change paths to map to allow for automatic sorting
|
||||
QStringList paths = getWorkspace().getPaths().toList();
|
||||
QStringList paths = getWorkspace().getPaths().values();
|
||||
paths.sort();
|
||||
|
||||
foreach (const QString &dir, paths)
|
||||
@ -885,15 +884,15 @@ void MainWindow::updateWorkspaceView()
|
||||
remotes->setData(WorkspaceItem(WorkspaceItem::TYPE_REMOTES, ""), ROLE_WORKSPACE_ITEM);
|
||||
remotes->setEditable(false);
|
||||
getWorkspace().getTreeModel().appendRow(remotes);
|
||||
for (remote_map_t::const_iterator it = getWorkspace().getRemotes().begin(); it != getWorkspace().getRemotes().end(); ++it)
|
||||
for (const auto &it : getWorkspace().getRemotes())
|
||||
{
|
||||
QStandardItem *remote_item = new QStandardItem(getCachedIcon(":icons/icon-item-remote"), it->name);
|
||||
remote_item->setData(WorkspaceItem(WorkspaceItem::TYPE_REMOTE, it->url.toString()), ROLE_WORKSPACE_ITEM);
|
||||
QStandardItem *remote_item = new QStandardItem(getCachedIcon(":icons/icon-item-remote"), it.name);
|
||||
remote_item->setData(WorkspaceItem(WorkspaceItem::TYPE_REMOTE, it.url.toString()), ROLE_WORKSPACE_ITEM);
|
||||
|
||||
remote_item->setToolTip(UrlToStringDisplay(it->url));
|
||||
remote_item->setToolTip(UrlToStringDisplay(it.url));
|
||||
|
||||
// Mark the default url as bold
|
||||
if (it->isDefault)
|
||||
if (it.isDefault)
|
||||
{
|
||||
QFont font = remote_item->font();
|
||||
font.setBold(true);
|
||||
@ -972,12 +971,12 @@ void MainWindow::updateFileView()
|
||||
const QString *status_text = &status_unknown;
|
||||
const char *status_icon_path = ":icons/icon-item-unknown"; // Default icon
|
||||
|
||||
for (size_t t = 0; t < COUNTOF(stats); ++t)
|
||||
for (auto &stat : stats)
|
||||
{
|
||||
if (e.getType() == stats[t].type)
|
||||
if (e.getType() == stat.type)
|
||||
{
|
||||
status_text = &stats[t].text;
|
||||
status_icon_path = stats[t].icon;
|
||||
status_text = &stat.text;
|
||||
status_icon_path = stat.icon;
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -1188,9 +1187,8 @@ void MainWindow::updateSettings()
|
||||
Settings::custom_actions_t &actions = settings.GetCustomActions();
|
||||
store->beginWriteArray("CustomActions", actions.size());
|
||||
int active_actions = 0;
|
||||
for (int i = 0; i < actions.size(); ++i)
|
||||
for (auto &action : actions)
|
||||
{
|
||||
CustomAction &action = actions[i];
|
||||
if (!action.IsValid())
|
||||
continue;
|
||||
store->setArrayIndex(active_actions);
|
||||
|
@ -41,9 +41,8 @@ SettingsDialog::SettingsDialog(QWidget *parent, Settings &_settings) : QDialog(p
|
||||
|
||||
GetCustomAction(0);
|
||||
|
||||
for (int i = 0; i < currentCustomActions.size(); ++i)
|
||||
for (auto &a : currentCustomActions)
|
||||
{
|
||||
CustomAction &a = currentCustomActions[i];
|
||||
ui->cmbCustomAction->addItem(a.Id);
|
||||
}
|
||||
ui->cmbCustomAction->setCurrentIndex(0);
|
||||
@ -79,9 +78,8 @@ void SettingsDialog::on_buttonBox_accepted()
|
||||
if (curr_langid != new_langid)
|
||||
QMessageBox::information(this, tr("Restart required"), tr("The language change will take effect after restarting the application"), QMessageBox::Ok);
|
||||
|
||||
for (int i = 0; i < currentCustomActions.size(); ++i)
|
||||
for (auto &a : currentCustomActions)
|
||||
{
|
||||
CustomAction &a = currentCustomActions[i];
|
||||
a.Description = a.Description.trimmed();
|
||||
a.Command = a.Command.trimmed();
|
||||
}
|
||||
|
@ -39,15 +39,15 @@ void Workspace::storeWorkspace(QSettings &store)
|
||||
|
||||
store.beginWriteArray(workspace_hash);
|
||||
int index = 0;
|
||||
for (remote_map_t::iterator it = remotes.begin(); it != remotes.end(); ++it, ++index)
|
||||
for (auto &re : remotes)
|
||||
{
|
||||
store.setArrayIndex(index);
|
||||
store.setValue("Name", it->name);
|
||||
QUrl url = it->url;
|
||||
store.setValue("Name", re.name);
|
||||
QUrl url = re.url;
|
||||
url.setPassword("");
|
||||
store.setValue("Url", url);
|
||||
if (it->isDefault)
|
||||
store.setValue("Default", it->isDefault);
|
||||
if (re.isDefault)
|
||||
store.setValue("Default", re.isDefault);
|
||||
else
|
||||
store.remove("Default");
|
||||
}
|
||||
@ -77,10 +77,7 @@ bool Workspace::switchWorkspace(const QString &workspace, QSettings &store)
|
||||
// Load Remotes
|
||||
QString workspace_hash = HashString(QDir::toNativeSeparators(new_workspace));
|
||||
|
||||
QString gr = store.group();
|
||||
|
||||
store.beginGroup("Remotes");
|
||||
gr = store.group();
|
||||
int num_remotes = store.beginReadArray(workspace_hash);
|
||||
for (int i = 0; i < num_remotes; ++i)
|
||||
{
|
||||
@ -124,12 +121,11 @@ bool Workspace::scanDirectory(QFileInfoList &entries, const QString &dirPath, co
|
||||
uiCallback.updateProcess(dirPath);
|
||||
|
||||
QFileInfoList list = dir.entryInfoList(QDir::Dirs | QDir::Files | QDir::Hidden | QDir::NoDotAndDotDot);
|
||||
for (int i = 0; i < list.count(); ++i)
|
||||
for (auto &info : list)
|
||||
{
|
||||
if (uiCallback.processAborted())
|
||||
return false;
|
||||
|
||||
QFileInfo info = list[i];
|
||||
QString filepath = info.filePath();
|
||||
QString rel_path = filepath;
|
||||
rel_path.remove(baseDir + PATH_SEPARATOR);
|
||||
@ -188,10 +184,10 @@ void Workspace::scanWorkspace(bool scanLocal, bool scanIgnored, bool scanModifie
|
||||
if (!scanDirectory(all_files, wkdir, wkdir, ignore, uiCallback))
|
||||
goto _done;
|
||||
|
||||
for (QFileInfoList::iterator it = all_files.begin(); it != all_files.end(); ++it)
|
||||
for (auto &all_file : all_files)
|
||||
{
|
||||
QString filename = it->fileName();
|
||||
QString fullpath = it->absoluteFilePath();
|
||||
QString filename = all_file.fileName();
|
||||
QString fullpath = all_file.absoluteFilePath();
|
||||
|
||||
// Skip fossil files
|
||||
if (filename == FOSSIL_CHECKOUT1 || filename == FOSSIL_CHECKOUT2 || (!fossil().getRepositoryFile().isEmpty() && QFileInfo(fullpath) == QFileInfo(fossil().getRepositoryFile())))
|
||||
@ -199,7 +195,7 @@ void Workspace::scanWorkspace(bool scanLocal, bool scanIgnored, bool scanModifie
|
||||
|
||||
WorkspaceFile::Type type = WorkspaceFile::TYPE_UNKNOWN;
|
||||
|
||||
WorkspaceFile *rf = new WorkspaceFile(*it, type, wkdir);
|
||||
WorkspaceFile *rf = new WorkspaceFile(all_file, type, wkdir);
|
||||
const QString &path = rf->getPath();
|
||||
getFiles().insert(rf->getFilePath(), rf);
|
||||
getPaths().insert(path);
|
||||
@ -220,9 +216,9 @@ void Workspace::scanWorkspace(bool scanLocal, bool scanIgnored, bool scanModifie
|
||||
uiCallback.beginProcess(QObject::tr("Updating..."));
|
||||
|
||||
// Update Files and Directories
|
||||
for (QStringList::iterator line_it = res.begin(); line_it != res.end(); ++line_it)
|
||||
for (auto &re : res)
|
||||
{
|
||||
QString line = (*line_it).trimmed();
|
||||
QString line = re.trimmed();
|
||||
if (line.length() == 0)
|
||||
continue;
|
||||
|
||||
@ -323,9 +319,9 @@ void Workspace::scanWorkspace(bool scanLocal, bool scanIgnored, bool scanModifie
|
||||
parent_path = "";
|
||||
|
||||
// Merge path of child to parent
|
||||
pathstate_map_t::iterator state_it = pathState.find(parent_path);
|
||||
if (state_it != pathState.end())
|
||||
state_it.value() = static_cast<WorkspaceFile::Type>(state_it.value() | state);
|
||||
pathstate_map_t::iterator state_it2 = pathState.find(parent_path);
|
||||
if (state_it2 != pathState.end())
|
||||
state_it2.value() = static_cast<WorkspaceFile::Type>(state_it2.value() | state);
|
||||
else
|
||||
pathState.insert(parent_path, state);
|
||||
}
|
||||
@ -386,15 +382,15 @@ bool Workspace::setRemoteDefault(const QUrl &url)
|
||||
const QString &url_str = url.toString();
|
||||
|
||||
bool found = false;
|
||||
for (remote_map_t::iterator it = remotes.begin(); it != remotes.end(); ++it)
|
||||
for (auto &remote : remotes)
|
||||
{
|
||||
if (it->url.toString() == url_str) // FIXME: Use strings as QUrl to QUrl comparisons sometime fail!?
|
||||
if (remote.url.toString() == url_str) // FIXME: Use strings as QUrl to QUrl comparisons sometime fail!?
|
||||
{
|
||||
it->isDefault = true;
|
||||
remote.isDefault = true;
|
||||
found = true;
|
||||
}
|
||||
else
|
||||
it->isDefault = false;
|
||||
remote.isDefault = false;
|
||||
}
|
||||
return found;
|
||||
}
|
||||
@ -402,10 +398,10 @@ bool Workspace::setRemoteDefault(const QUrl &url)
|
||||
//------------------------------------------------------------------------------
|
||||
QUrl Workspace::getRemoteDefault() const
|
||||
{
|
||||
for (remote_map_t::const_iterator it = remotes.begin(); it != remotes.end(); ++it)
|
||||
for (const auto &remote : remotes)
|
||||
{
|
||||
if (it->isDefault)
|
||||
return it->url;
|
||||
if (remote.isDefault)
|
||||
return remote.url;
|
||||
}
|
||||
|
||||
return QUrl();
|
||||
|
Loading…
x
Reference in New Issue
Block a user