Hello community,
here is the log from the commit of package icecream-monitor for
openSUSE:Factory checked in at 2019-09-18 13:09:29
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/icecream-monitor (Old)
and /work/SRC/openSUSE:Factory/.icecream-monitor.new.7948 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "icecream-monitor"
Wed Sep 18 13:09:29 2019 rev:30 rq:730434 version:3.3
Changes:
--------
--- /work/SRC/openSUSE:Factory/icecream-monitor/icecream-monitor.changes
2019-04-17 10:10:12.438903797 +0200
+++
/work/SRC/openSUSE:Factory/.icecream-monitor.new.7948/icecream-monitor.changes
2019-09-18 13:09:31.440714079 +0200
@@ -1,0 +2,14 @@
+Thu Sep 12 14:49:53 UTC 2019 - Lubos Lunak <[email protected]>
+
+- Update to version 3.3:
+ - Display node protocol version and features in detailed host view
+ - Several more icecream flavors added
+ - Add --port option to specify the scheduler port
+ - Remote hardcoded background color (#39)
+ - Fix data loss when switching views
+ - Avoid a possible QSocketNotifier crash (#47)
+ - Improve column widths in views
+ - Require extra-cmake-modules for building
+ - Fix finding icecc pkgconfig file
+
+-------------------------------------------------------------------
Old:
----
icemon-3.2.0.tar.xz
New:
----
icemon-3.3.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ icecream-monitor.spec ++++++
--- /var/tmp/diff_new_pack.XR42uk/_old 2019-09-18 13:09:32.836713786 +0200
+++ /var/tmp/diff_new_pack.XR42uk/_new 2019-09-18 13:09:32.876713778 +0200
@@ -17,7 +17,7 @@
Name: icecream-monitor
-Version: 3.2.0
+Version: 3.3
Release: 0
Summary: Monitor Program for the icecream Compile Farm
License: GPL-2.0-or-later
@@ -26,6 +26,7 @@
Source0: icemon-%{version}.tar.xz
BuildRequires: cmake
BuildRequires: docbook2x
+BuildRequires: extra-cmake-modules
BuildRequires: hicolor-icon-theme
BuildRequires: lzo-devel
BuildRequires: pkgconfig
++++++ _service ++++++
--- /var/tmp/diff_new_pack.XR42uk/_old 2019-09-18 13:09:33.188713712 +0200
+++ /var/tmp/diff_new_pack.XR42uk/_new 2019-09-18 13:09:33.228713704 +0200
@@ -1,8 +1,8 @@
<services>
<service name="tar_scm" mode="disabled">
- <param name="versionformat">3.2.0</param>
+ <param name="versionformat">3.3</param>
<param name="url">http://github.com/icecc/icemon.git</param>
- <param name="revision">refs/tags/v3.2.0</param>
+ <param name="revision">refs/tags/v3.3</param>
<param name="scm">git</param>
</service>
<service name="recompress" mode="disabled">
++++++ icemon-3.2.0.tar.xz -> icemon-3.3.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/icemon-3.2.0/.gitignore new/icemon-3.3/.gitignore
--- old/icemon-3.2.0/.gitignore 1970-01-01 01:00:00.000000000 +0100
+++ new/icemon-3.3/.gitignore 2019-09-11 19:37:46.000000000 +0200
@@ -0,0 +1,87 @@
+# This file is used to ignore files which are generated
+# ----------------------------------------------------------------------------
+
+*~
+*.a
+*.core
+*.moc
+*.o
+*.obj
+*.orig
+*.rej
+*.so
+*_pch.h.cpp
+*_resource.rc
+*.part
+*.qm
+.#*
+*.*#
+core
+!core/
+tags
+.DS_Store
+*.debug
+Makefile*
+*.prl
+*.app
+moc_*.cpp
+ui_*.h
+qrc_*.cpp
+Thumbs.db
+*.user*
+
+# xemacs temporary files
+# ---------------------
+*.flc
+
+# Vim temporary files
+# ---------------------
+.*.swp
+
+# KDevelop
+# ---------------------
+*.kdev4
+.kdev4/
+
+# Visual Studio generated files
+# ---------------------
+*.ib_pdb_index
+*.idb
+*.ilk
+*.pdb
+*.sln
+*.suo
+*.vcproj
+*vcproj.*.*.user
+*.ncb
+
+# MinGW generated files
+# ---------------------
+*.Debug
+*.Release
+
+# Directories to ignore
+# ---------------------
+debug
+lib/*
+lib64/*
+release
+doc/html/*
+doc/html-dev/*
+doc/api/html/*
+doc/pluginhowto/html/*
+.rcc
+.pch
+
+# Binaries
+# --------
+*.dll
+*.exe
+icemon
+
+# From Git merge
+# --------------
+*.BACKUP.*
+*.BASE.*
+*.LOCAL.*
+*.REMOTE.*
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/icemon-3.2.0/.travis.yml new/icemon-3.3/.travis.yml
--- old/icemon-3.2.0/.travis.yml 2018-12-10 10:04:43.000000000 +0100
+++ new/icemon-3.3/.travis.yml 2019-09-11 19:37:46.000000000 +0200
@@ -1,5 +1,5 @@
sudo: required
-dist: trusty
+dist: xenial
language: cpp
@@ -7,16 +7,32 @@
- gcc
- clang
-before_install:
-- sudo apt-get update -qq
-- sudo apt-get install -qq cmake qtbase5-dev libicecc-dev
-
before_script:
+- |
+ git clone --depth=50 --branch=master https://github.com/icecc/icecream.git
icecream
+ pushd icecream
+ autoreconf -fiv
+ ./configure --prefix=$(pwd)
+ make install -C services -s -j $(getconf _NPROCESSORS_ONLN)
+ popd
+
- cmake --version
- qtchooser -run-tool=qmake -qt=qt5 --version
- mkdir build
- cd build
-- cmake ..
+- PKG_CONFIG_PATH=../icecream/lib/pkgconfig cmake ..
script: make
+
+addons:
+ apt:
+ packages:
+ - cmake
+ - qtbase5-dev
+ - extra-cmake-modules
+ # for icecream
+ - libcap-ng-dev
+ - liblzo2-dev
+ - libzstd1-dev
+ - libarchive-dev
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/icemon-3.2.0/CHANGELOG.md new/icemon-3.3/CHANGELOG.md
--- old/icemon-3.2.0/CHANGELOG.md 2018-12-10 10:04:43.000000000 +0100
+++ new/icemon-3.3/CHANGELOG.md 2019-09-11 19:37:46.000000000 +0200
@@ -1,3 +1,20 @@
+## 3.3.0 (2019-09-11)
+
+Features:
+- Display node protocol version and features in detailed host view
+- Several more icecream flavors added
+- Add --port option to specify the scheduler port
+
+Bugfixes:
+- Remote hardcoded background color (#39)
+- Fix data loss when switching views
+- Avoid a possible QSocketNotifier crash (#47)
+- Improve column widths in views
+
+Internal Changes:
+- Require extra-cmake-modules for building
+- Fix finding icecc pkgconfig file
+
## 3.2.0 (2018-12-10)
Bugfixes:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/icemon-3.2.0/CMakeLists.txt
new/icemon-3.3/CMakeLists.txt
--- old/icemon-3.2.0/CMakeLists.txt 2018-12-10 10:04:43.000000000 +0100
+++ new/icemon-3.3/CMakeLists.txt 2019-09-11 19:37:46.000000000 +0200
@@ -1,24 +1,20 @@
-project(icemon)
+cmake_minimum_required(VERSION 3.1.0)
+project(icemon VERSION 3.3)
-cmake_minimum_required(VERSION 2.8.9)
+find_package(ECM REQUIRED NO_MODULE)
-set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH}
${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules)
+set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH}
${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules ${ECM_MODULE_PATH})
set(CMAKE_AUTOMOC ON)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
include(CheckCXXCompilerFlag)
include(CheckCXXSourceCompiles)
include(GNUInstallDirs)
-include(KDE4Macros-Icecream)
include(CheckIncludeFileCXX)
include(FeatureSummary)
+include(ECMInstallIcons)
-# version info
-set(ICEMON_VERSION_MAJOR "3")
-set(ICEMON_VERSION_MINOR "2")
-set(ICEMON_VERSION_PATCH "0")
-set(ICEMON_VERSION
"${ICEMON_VERSION_MAJOR}.${ICEMON_VERSION_MINOR}.${ICEMON_VERSION_PATCH}")
-set(ICEMON_VERSION_STRING "${ICEMON_VERSION}")
+set(ICEMON_VERSION_STRING "${PROJECT_VERSION}")
if(EXISTS "${CMAKE_SOURCE_DIR}/.git")
find_package(Git)
@@ -33,7 +29,7 @@
endif()
endif()
-set(QT_MIN_VERSION "5.2.0")
+set(QT_MIN_VERSION "5.4.0") # Because of QByteArray::fromStdString
find_package(Qt5 ${QT_MIN_VERSION} CONFIG REQUIRED Core Widgets)
find_package(Icecream)
set_package_properties(Icecream PROPERTIES
@@ -64,11 +60,11 @@
)
endif()
-if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang" OR
CMAKE_CXX_COMPILER_ID STREQUAL "Intel")
+if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang" OR
CMAKE_CXX_COMPILER_ID STREQUAL "Intel")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
endif()
-if(CMAKE_COMPILER_IS_GNUCXX OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
+if(CMAKE_COMPILER_IS_GNUCXX OR "${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang")
check_cxx_compiler_flag(-Wunused-but-set-variable HAVE_GCC_UNUSED_BUT_SET)
check_cxx_compiler_flag(-Wlogical-op HAVE_GCC_LOGICAL_OP)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-deprecated -Wextra
-Woverloaded-virtual -Winit-self -Wmissing-include-dirs -Wunused
-Wno-div-by-zero -Wundef -Wpointer-arith -Wcast-qual -Wcast-align
-Wmissing-noreturn -Werror=return-type -pedantic")
@@ -138,3 +134,9 @@
add_subdirectory(doc)
feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES)
+
+set(ARCHIVE_NAME ${CMAKE_PROJECT_NAME}-${PROJECT_VERSION})
+add_custom_target(dist
+ COMMAND git archive --prefix=${ARCHIVE_NAME}/ HEAD
+ | xz -T0 > ${CMAKE_BINARY_DIR}/${ARCHIVE_NAME}.tar.xz
+ WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/icemon-3.2.0/README.md new/icemon-3.3/README.md
--- old/icemon-3.2.0/README.md 2018-12-10 10:04:43.000000000 +0100
+++ new/icemon-3.3/README.md 2019-09-11 19:37:46.000000000 +0200
@@ -18,9 +18,9 @@
$ apt-get install pkg-config libicecc-dev
-Finally, make sure you have g++, Qt and cmake installed
+Finally, make sure you have g++, Qt, cmake and ECM installed
- $ apt-get install build-essential qtbase5-dev cmake
+ $ apt-get install build-essential qtbase5-dev cmake extra-cmake-modules
Finally, compile and install the application:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/icemon-3.2.0/cmake/modules/FindIcecream.cmake
new/icemon-3.3/cmake/modules/FindIcecream.cmake
--- old/icemon-3.2.0/cmake/modules/FindIcecream.cmake 2018-12-10
10:04:43.000000000 +0100
+++ new/icemon-3.3/cmake/modules/FindIcecream.cmake 2019-09-11
19:37:46.000000000 +0200
@@ -27,7 +27,7 @@
# use pkg-config to get the directories and then use these values
# in the FIND_PATH() and FIND_LIBRARY() calls
find_package(PkgConfig REQUIRED)
- pkg_check_modules(PC_ICECC icecc)
+ pkg_check_modules(PC_ICECC icecc>=1.3 REQUIRED)
# The icecream lib may optionally need linking to -lcap-ng, so dig it out
# of pkg-config data.
# Somewhat hackish, but I can't find a simpler way to do this with CMake.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/icemon-3.2.0/cmake/modules/KDE4Macros-Icecream.cmake
new/icemon-3.3/cmake/modules/KDE4Macros-Icecream.cmake
--- old/icemon-3.2.0/cmake/modules/KDE4Macros-Icecream.cmake 2018-12-10
10:04:43.000000000 +0100
+++ new/icemon-3.3/cmake/modules/KDE4Macros-Icecream.cmake 1970-01-01
01:00:00.000000000 +0100
@@ -1,136 +0,0 @@
-# for documentation look at FindKDE4Internal.cmake
-
-# this file contains the following macros (or functions):
-# KDE4_UPDATE_ICONCACHE
-# KDE4_INSTALL_ICONS
-
-# Copyright (c) 2006-2009 Alexander Neundorf, <[email protected]>
-# Copyright (c) 2006, 2007, Laurent Montel, <[email protected]>
-# Copyright (c) 2007 Matthias Kretz <[email protected]>
-#
-# Redistribution and use is allowed according to the terms of the BSD license.
-# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
-
-macro (KDE4_UPDATE_ICONCACHE)
- # Update mtime of hicolor icon theme dir.
- # We don't always have touch command (e.g. on Windows), so instead create
- # and delete a temporary file in the theme dir.
- install(CODE "
- set(DESTDIR_VALUE \"\$ENV{DESTDIR}\")
- if (NOT DESTDIR_VALUE)
- file(WRITE \"${ICON_INSTALL_DIR}/hicolor/temp.txt\" \"update\")
- file(REMOVE \"${ICON_INSTALL_DIR}/hicolor/temp.txt\")
- endif (NOT DESTDIR_VALUE)
- ")
-endmacro (KDE4_UPDATE_ICONCACHE)
-
-# a "map" of short type names to the directories
-# unknown names should give empty results
-# KDE 3 compatibility
-set(_KDE4_ICON_GROUP_mime "mimetypes")
-set(_KDE4_ICON_GROUP_filesys "places")
-set(_KDE4_ICON_GROUP_device "devices")
-set(_KDE4_ICON_GROUP_app "apps")
-set(_KDE4_ICON_GROUP_action "actions")
-# KDE 4 / icon naming specification compatibility
-set(_KDE4_ICON_GROUP_mimetypes "mimetypes")
-set(_KDE4_ICON_GROUP_places "places")
-set(_KDE4_ICON_GROUP_devices "devices")
-set(_KDE4_ICON_GROUP_apps "apps")
-set(_KDE4_ICON_GROUP_actions "actions")
-set(_KDE4_ICON_GROUP_categories "categories")
-set(_KDE4_ICON_GROUP_status "status")
-set(_KDE4_ICON_GROUP_emblems "emblems")
-set(_KDE4_ICON_GROUP_emotes "emotes")
-set(_KDE4_ICON_GROUP_animations "animations")
-set(_KDE4_ICON_GROUP_intl "intl")
-
-# a "map" of short theme names to the theme directory
-set(_KDE4_ICON_THEME_ox "oxygen")
-set(_KDE4_ICON_THEME_cr "crystalsvg")
-set(_KDE4_ICON_THEME_lo "locolor")
-set(_KDE4_ICON_THEME_hi "hicolor")
-
-
-# only used internally by KDE4_INSTALL_ICONS
-macro (_KDE4_ADD_ICON_INSTALL_RULE _install_SCRIPT _install_PATH _group
_orig_NAME _install_NAME _l10n_SUBDIR)
-
- # if the string doesn't match the pattern, the result is the full string,
so all three have the same content
- if (NOT ${_group} STREQUAL ${_install_NAME} )
- set(_icon_GROUP ${_KDE4_ICON_GROUP_${_group}})
- if(NOT _icon_GROUP)
- set(_icon_GROUP "actions")
- endif(NOT _icon_GROUP)
-# message(STATUS "icon: ${_current_ICON} size: ${_size} group: ${_group}
name: ${_name} l10n: ${_l10n_SUBDIR}")
- install(FILES ${_orig_NAME} DESTINATION
${_install_PATH}/${_icon_GROUP}/${_l10n_SUBDIR}/ RENAME ${_install_NAME} )
- endif (NOT ${_group} STREQUAL ${_install_NAME} )
-
-endmacro (_KDE4_ADD_ICON_INSTALL_RULE)
-
-
-macro (KDE4_INSTALL_ICONS _defaultpath )
-
- # the l10n-subdir if language given as second argument (localized icon)
- set(_lang ${ARGV1})
- if(_lang)
- set(_l10n_SUBDIR l10n/${_lang})
- else(_lang)
- set(_l10n_SUBDIR ".")
- endif(_lang)
-
- # first the png icons
- file(GLOB _icons *.png)
- foreach (_current_ICON ${_icons} )
- # since CMake 2.6 regex matches are stored in special variables
CMAKE_MATCH_x, if it didn't match, they are empty
- string(REGEX MATCH "^.*/([a-zA-Z]+)([0-9]+)\\-([a-z]+)\\-(.+\\.png)$"
_dummy "${_current_ICON}")
- set(_type "${CMAKE_MATCH_1}")
- set(_size "${CMAKE_MATCH_2}")
- set(_group "${CMAKE_MATCH_3}")
- set(_name "${CMAKE_MATCH_4}")
-
- set(_theme_GROUP ${_KDE4_ICON_THEME_${_type}})
- if( _theme_GROUP)
-
_KDE4_ADD_ICON_INSTALL_RULE(${CMAKE_CURRENT_BINARY_DIR}/install_icons.cmake
- ${_defaultpath}/${_theme_GROUP}/${_size}x${_size}
- ${_group} ${_current_ICON} ${_name} ${_l10n_SUBDIR})
- endif( _theme_GROUP)
- endforeach (_current_ICON)
-
- # mng icons
- file(GLOB _icons *.mng)
- foreach (_current_ICON ${_icons} )
- # since CMake 2.6 regex matches are stored in special variables
CMAKE_MATCH_x, if it didn't match, they are empty
- string(REGEX MATCH "^.*/([a-zA-Z]+)([0-9]+)\\-([a-z]+)\\-(.+\\.mng)$"
_dummy "${_current_ICON}")
- set(_type "${CMAKE_MATCH_1}")
- set(_size "${CMAKE_MATCH_2}")
- set(_group "${CMAKE_MATCH_3}")
- set(_name "${CMAKE_MATCH_4}")
-
- set(_theme_GROUP ${_KDE4_ICON_THEME_${_type}})
- if( _theme_GROUP)
-
_KDE4_ADD_ICON_INSTALL_RULE(${CMAKE_CURRENT_BINARY_DIR}/install_icons.cmake
- ${_defaultpath}/${_theme_GROUP}/${_size}x${_size}
- ${_group} ${_current_ICON} ${_name} ${_l10n_SUBDIR})
- endif( _theme_GROUP)
- endforeach (_current_ICON)
-
- # and now the svg icons
- file(GLOB _icons *.svgz)
- foreach (_current_ICON ${_icons} )
- # since CMake 2.6 regex matches are stored in special variables
CMAKE_MATCH_x, if it didn't match, they are empty
- string(REGEX MATCH "^.*/([a-zA-Z]+)sc\\-([a-z]+)\\-(.+\\.svgz)$" _dummy
"${_current_ICON}")
- set(_type "${CMAKE_MATCH_1}")
- set(_group "${CMAKE_MATCH_2}")
- set(_name "${CMAKE_MATCH_3}")
-
- set(_theme_GROUP ${_KDE4_ICON_THEME_${_type}})
- if( _theme_GROUP)
-
_KDE4_ADD_ICON_INSTALL_RULE(${CMAKE_CURRENT_BINARY_DIR}/install_icons.cmake
- ${_defaultpath}/${_theme_GROUP}/scalable
- ${_group} ${_current_ICON} ${_name}
${_l10n_SUBDIR})
- endif( _theme_GROUP)
- endforeach (_current_ICON)
-
- kde4_update_iconcache()
-
-endmacro (KDE4_INSTALL_ICONS)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/icemon-3.2.0/src/CMakeLists.txt
new/icemon-3.3/src/CMakeLists.txt
--- old/icemon-3.2.0/src/CMakeLists.txt 2018-12-10 10:04:43.000000000 +0100
+++ new/icemon-3.3/src/CMakeLists.txt 2019-09-11 19:37:46.000000000 +0200
@@ -21,7 +21,6 @@
views/hostlistview.cc
views/joblistview.cc
views/listview.cc
- #views/poolview.cc
views/starview.cc
views/summaryview.cc
)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/icemon-3.2.0/src/fakemonitor.cc
new/icemon-3.3/src/fakemonitor.cc
--- old/icemon-3.2.0/src/fakemonitor.cc 2018-12-10 10:04:43.000000000 +0100
+++ new/icemon-3.3/src/fakemonitor.cc 2019-09-11 19:37:46.000000000 +0200
@@ -29,6 +29,8 @@
#include <QTime>
#include <QTimer>
+#include <icecc/comm.h>
+
namespace {
// counter variable
int JOB_ID = 0;
@@ -83,6 +85,8 @@
info.setOffline(false);
info.setNoRemote(false);
info.setPlatform(randomPlatform());
+ info.setProtocol(PROTOCOL_VERSION);
+ info.setFeatures(id % 2 == 0 ? QStringLiteral("env_xz") :
QStringLiteral("env_zstd"));
info.setServerLoad(1.0);
info.setServerSpeed(10);
hostInfoManager()->checkNode(info);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/icemon-3.2.0/src/hostinfo.cc
new/icemon-3.3/src/hostinfo.cc
--- old/icemon-3.2.0/src/hostinfo.cc 2018-12-10 10:04:43.000000000 +0100
+++ new/icemon-3.3/src/hostinfo.cc 2019-09-11 19:37:46.000000000 +0200
@@ -39,6 +39,7 @@
initColor(QStringLiteral("#db1230"), QApplication::tr("strawberry"));
initColor(QStringLiteral("#a6ea5e"), QApplication::tr("apple"));
initColor(QStringLiteral("#D6A3D8"), QApplication::tr("bubblegum"));
+
initColor(QStringLiteral("#f2aa4d"), QApplication::tr("peach"));
initColor(QStringLiteral("#aa1387"), QApplication::tr("plum"));
initColor(QStringLiteral("#26c3f7"), QApplication::tr("polar sea"));
@@ -49,14 +50,17 @@
initColor(QStringLiteral("#1e1407"), QApplication::tr("mocha"));
initColor(QStringLiteral("#29B450"), QApplication::tr("kiwi"));
initColor(QStringLiteral("#F8DD31"), QApplication::tr("lemon"));
+
initColor(QStringLiteral("#fa7e91"), QApplication::tr("raspberry"));
initColor(QStringLiteral("#c5a243"), QApplication::tr("caramel"));
initColor(QStringLiteral("#b8bcff"), QApplication::tr("blueberry"));
+ initColor(QStringLiteral("#af3765"), QApplication::tr("blackcurrant"));
+ initColor(QStringLiteral("#f7d36f"), QApplication::tr("passionfruit"));
+ initColor(QStringLiteral("#d51013"), QApplication::tr("pomegranate"));
+ initColor(QStringLiteral("#C2C032"), QApplication::tr("pumpkin"));
+ initColor(QStringLiteral("#f0e8e3"), QApplication::tr("vanilla"));
+ initColor(QStringLiteral("#d8e0e3"), QApplication::tr("stracciatella"));
// try to make the count a prime number (reminder: 19, 23, 29, 31)
- // initColor( "#ffb8c0", QApplication::tr("blackcurrant"));
- // initColor( "#f7d36f", QApplication::tr("passionfruit"));
- // initColor( "#d51013", QApplication::tr("pomegranate"));
- // initColor( "#C2C032", QApplication::tr("pumpkin" ) );
}
void HostInfo::initColor(const QString &value, const QString &name)
@@ -108,6 +112,8 @@
mColor = createColor(mName);
mIp = stats[QStringLiteral("IP")];
mPlatform = stats[QStringLiteral("Platform")];
+ mProtocol = stats[QStringLiteral("Version")].toInt();
+ mFeatures = stats[QStringLiteral("Features")];
}
mNoRemote =
(stats[QStringLiteral("NoRemote")].compare(QLatin1String("true"),
Qt::CaseInsensitive) == 0);
@@ -188,6 +194,12 @@
}
hostInfo->updateFromStatsMap(stats);
+ if (hostInfo->isOffline()) {
+ mHostMap.remove(hostid);
+ delete hostInfo;
+ hostInfo = nullptr;
+ }
+
emit hostMapChanged();
return hostInfo;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/icemon-3.2.0/src/hostinfo.h
new/icemon-3.3/src/hostinfo.h
--- old/icemon-3.2.0/src/hostinfo.h 2018-12-10 10:04:43.000000000 +0100
+++ new/icemon-3.3/src/hostinfo.h 2019-09-11 19:37:46.000000000 +0200
@@ -47,6 +47,9 @@
void setMaxJobs(unsigned int jobs) { mMaxJobs = jobs; }
unsigned int maxJobs() const { return mMaxJobs; }
+ void incJobs() { mNumJobs++; }
+ void decJobs() { if (mNumJobs) mNumJobs--; }
+ unsigned int numJobs() const { return mNumJobs; }
void setOffline(bool offline) { mOffline = offline; }
bool isOffline() const { return mOffline; }
@@ -66,6 +69,12 @@
void setServerLoad(unsigned int load) { mServerLoad = load; }
unsigned int serverLoad() const { return mServerLoad; }
+ void setProtocol(unsigned int protocol) { mProtocol = protocol; }
+ int protocol() const { return mProtocol; }
+
+ void setFeatures(const QString& features) { mFeatures = features; }
+ QString features() const { return mFeatures; }
+
QString toolTip() const;
bool operator==(const HostInfo &rhs) const { return mId == rhs.mId; }
@@ -89,11 +98,13 @@
QString mIp;
unsigned int mMaxJobs = 0;
+ unsigned int mNumJobs = 0;
bool mOffline = false;
bool mNoRemote = true;
+ int mProtocol = 0;
+ QString mFeatures;
float mServerSpeed = 0.0;
-
unsigned int mServerLoad = 0;
static QVector<QColor> mColorTable;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/icemon-3.2.0/src/icecreammonitor.cc
new/icemon-3.3/src/icecreammonitor.cc
--- old/icemon-3.2.0/src/icecreammonitor.cc 2018-12-10 10:04:43.000000000
+0100
+++ new/icemon-3.3/src/icecreammonitor.cc 2019-09-11 19:37:46.000000000
+0200
@@ -43,16 +43,6 @@
using namespace std;
-namespace {
-
-// TODO: Just use QByteArray static methods when depending on Qt 5.4
-inline QByteArray QBA_fromStdString(const std::string& s)
-{ return QByteArray(s.data(), int(s.size())); }
-inline std::string QBA_toStdString(const QByteArray& s)
-{ return std::string(s.constData(), s.length()); }
-
-}
-
IcecreamMonitor::IcecreamMonitor(HostInfoManager *manager, QObject *parent)
: Monitor(manager, parent)
, m_scheduler(nullptr)
@@ -96,11 +86,18 @@
void IcecreamMonitor::registerNotify(int fd, QSocketNotifier::Type type, const
char *slot)
{
if (m_fd_notify) {
+ if(m_fd_notify->socket() != fd || m_fd_notify->type() != type) {
+ m_fd_notify->disconnect(this);
+ m_fd_notify->deleteLater();
+ m_fd_notify = nullptr;
+ }
+ // Reuse, but the slot will change.
m_fd_notify->disconnect(this);
- m_fd_notify->deleteLater();
}
- m_fd_notify = new QSocketNotifier(fd, type, this);
- m_fd_type = type;
+ if (!m_fd_notify) {
+ m_fd_notify = new QSocketNotifier(fd, type, this);
+ m_fd_type = type;
+ }
QObject::connect(m_fd_notify, SIGNAL(activated(int)), slot);
}
@@ -112,6 +109,7 @@
const string hostname = currentSchedname().isEmpty() ? "" :
currentSchedname().data();
list<string> names;
+ const uint port = currentSchedport();
if (!currentNetname().isEmpty()) {
names.push_front(currentNetname().data());
@@ -122,13 +120,12 @@
if (!qgetenv("USE_SCHEDULER").isEmpty()) {
names.push_front(""); // try $USE_SCHEDULER
}
- for (list<string>::const_iterator it = names.begin(); it != names.end();
- ++it) {
- setCurrentNetname(QBA_fromStdString(*it));
+ for (auto it = names.begin(); it != names.end(); ++it) {
+ setCurrentNetname(QByteArray::fromStdString(*it));
if (!m_discover
|| ((m_scheduler = m_discover->try_get_scheduler()) == NULL &&
m_discover->timed_out())) {
delete m_discover;
- m_discover = new DiscoverSched(QBA_toStdString(currentNetname()),
2, hostname);
+ m_discover = new DiscoverSched(currentNetname().toStdString(), 2,
hostname, port);
}
if (m_scheduler) {
@@ -288,7 +285,7 @@
HostInfo *hostInfo = hostInfoManager()->checkNode(m->hostid, stats);
- if (hostInfo->isOffline()) {
+ if (!hostInfo) {
emit nodeRemoved(m->hostid);
} else {
emit nodeUpdated(m->hostid);
@@ -308,6 +305,10 @@
return;
}
+ HostInfo *hostInfo = hostInfoManager()->find(m->hostid);
+ if (hostInfo)
+ hostInfo->incJobs();
+
(*it).server = m->hostid;
(*it).startTime = m->stime;
(*it).state = Job::Compiling;
@@ -328,6 +329,10 @@
return;
}
+ HostInfo *hostInfo = hostInfoManager()->find((*it).server);
+ if (hostInfo)
+ hostInfo->decJobs();
+
(*it).exitcode = m->exitcode;
if (m->exitcode) {
(*it).state = Job::Failed;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/icemon-3.2.0/src/icemon.qrc
new/icemon-3.3/src/icemon.qrc
--- old/icemon-3.2.0/src/icemon.qrc 2018-12-10 10:04:43.000000000 +0100
+++ new/icemon-3.3/src/icemon.qrc 2019-09-11 19:37:46.000000000 +0200
@@ -1,10 +1,10 @@
<RCC>
<qresource prefix="">
- <file>images/hi128-app-icemon.png</file>
+ <file>images/128-apps-icemon.png</file>
<file>images/icemonnode.png</file>
- <file>images/hi16-app-icemon.png</file>
- <file>images/hi48-app-icemon.png</file>
- <file>images/hi22-app-icemon.png</file>
- <file>images/hi32-app-icemon.png</file>
+ <file>images/16-apps-icemon.png</file>
+ <file>images/48-apps-icemon.png</file>
+ <file>images/22-apps-icemon.png</file>
+ <file>images/32-apps-icemon.png</file>
</qresource>
</RCC>
Binary files old/icemon-3.2.0/src/images/128-apps-icemon.png and
new/icemon-3.3/src/images/128-apps-icemon.png differ
Binary files old/icemon-3.2.0/src/images/16-apps-icemon.png and
new/icemon-3.3/src/images/16-apps-icemon.png differ
Binary files old/icemon-3.2.0/src/images/22-apps-icemon.png and
new/icemon-3.3/src/images/22-apps-icemon.png differ
Binary files old/icemon-3.2.0/src/images/32-apps-icemon.png and
new/icemon-3.3/src/images/32-apps-icemon.png differ
Binary files old/icemon-3.2.0/src/images/48-apps-icemon.png and
new/icemon-3.3/src/images/48-apps-icemon.png differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/icemon-3.2.0/src/images/CMakeLists.txt
new/icemon-3.3/src/images/CMakeLists.txt
--- old/icemon-3.2.0/src/images/CMakeLists.txt 2018-12-10 10:04:43.000000000
+0100
+++ new/icemon-3.3/src/images/CMakeLists.txt 2019-09-11 19:37:46.000000000
+0200
@@ -1 +1,12 @@
-kde4_install_icons(${ICON_INSTALL_DIR})
+set(icons
+ 128-apps-icemon.png
+ 16-apps-icemon.png
+ 22-apps-icemon.png
+ 32-apps-icemon.png
+ 48-apps-icemon.png
+)
+ecm_install_icons(
+ ICONS ${icons}
+ DESTINATION ${ICON_INSTALL_DIR}
+ THEME hicolor
+)
Binary files old/icemon-3.2.0/src/images/hi128-app-icemon.png and
new/icemon-3.3/src/images/hi128-app-icemon.png differ
Binary files old/icemon-3.2.0/src/images/hi16-app-icemon.png and
new/icemon-3.3/src/images/hi16-app-icemon.png differ
Binary files old/icemon-3.2.0/src/images/hi22-app-icemon.png and
new/icemon-3.3/src/images/hi22-app-icemon.png differ
Binary files old/icemon-3.2.0/src/images/hi32-app-icemon.png and
new/icemon-3.3/src/images/hi32-app-icemon.png differ
Binary files old/icemon-3.2.0/src/images/hi48-app-icemon.png and
new/icemon-3.3/src/images/hi48-app-icemon.png differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/icemon-3.2.0/src/main.cc new/icemon-3.3/src/main.cc
--- old/icemon-3.2.0/src/main.cc 2018-12-10 10:04:43.000000000 +0100
+++ new/icemon-3.3/src/main.cc 2019-09-11 19:37:46.000000000 +0200
@@ -47,6 +47,10 @@
QCoreApplication::translate("main", "Icecream scheduler hostname"),
QCoreApplication::translate("main", "hostname", "scheduler hostname"));
parser.addOption(schednameOption);
+ QCommandLineOption schedportOption(QStringList() << QStringLiteral("p") <<
QStringLiteral("port"),
+ QCoreApplication::translate("main", "Icecream scheduler port"),
+ QCoreApplication::translate("main", "port", "scheduler port"));
+ parser.addOption(schedportOption);
QCommandLineOption testmodeOption(QStringLiteral("testmode"),
QCoreApplication::translate("main", "Testing mode."));
parser.addOption(testmodeOption);
@@ -63,6 +67,10 @@
if (!schedName.isEmpty()) {
mainWindow.setCurrentSched(schedName);
}
+ if (!parser.value(schedportOption).isEmpty())
+ {
+ mainWindow.setCurrentPort(parser.value(schedportOption).toUInt());
+ }
if (parser.isSet(testmodeOption)) {
mainWindow.setTestModeEnabled(true);
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/icemon-3.2.0/src/mainwindow.cc
new/icemon-3.3/src/mainwindow.cc
--- old/icemon-3.2.0/src/mainwindow.cc 2018-12-10 10:04:43.000000000 +0100
+++ new/icemon-3.3/src/mainwindow.cc 2019-09-11 19:37:46.000000000 +0200
@@ -62,11 +62,11 @@
, m_view(nullptr)
{
QIcon appIcon = QIcon();
- appIcon.addFile(QStringLiteral(":/images/hi128-app-icemon.png"),
QSize(128, 128));
- appIcon.addFile(QStringLiteral(":/images/hi48-app-icemon.png"), QSize(48,
48));
- appIcon.addFile(QStringLiteral(":/images/hi32-app-icemon.png"), QSize(32,
32));
- appIcon.addFile(QStringLiteral(":/images/hi22-app-icemon.png"), QSize(22,
22));
- appIcon.addFile(QStringLiteral(":/images/hi16-app-icemon.png"), QSize(16,
16));
+ appIcon.addFile(QStringLiteral(":/images/128-apps-icemon.png"), QSize(128,
128));
+ appIcon.addFile(QStringLiteral(":/images/48-apps-icemon.png"), QSize(48,
48));
+ appIcon.addFile(QStringLiteral(":/images/32-apps-icemon.png"), QSize(32,
32));
+ appIcon.addFile(QStringLiteral(":/images/22-apps-icemon.png"), QSize(22,
22));
+ appIcon.addFile(QStringLiteral(":/images/16-apps-icemon.png"), QSize(16,
16));
setWindowIcon(appIcon);
setWindowTitle(QApplication::translate("appName",
Icemon::Version::appName));
@@ -317,7 +317,7 @@
}
for (JobList::const_iterator i = m_activeJobs.constBegin(); i !=
m_activeJobs.constEnd(); ++i) {
const HostInfo *server = hostMap[i.value().server != 0 ?
i.value().server : i.value().client];
- if (!server->isOffline() && !server->noRemote()) {
+ if (server && !server->isOffline() && !server->noRemote()) {
++perPlatformStats[server->platform()].jobs;
}
}
@@ -364,6 +364,11 @@
m_monitor->setCurrentSchedname(schedname);
}
+void MainWindow::setCurrentPort(uint schedport)
+{
+ m_monitor->setCurrentSchedport(schedport);
+}
+
void MainWindow::handleViewModeActionTriggered(QAction *action)
{
const QString viewId = action->data().toString();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/icemon-3.2.0/src/mainwindow.h
new/icemon-3.3/src/mainwindow.h
--- old/icemon-3.2.0/src/mainwindow.h 2018-12-10 10:04:43.000000000 +0100
+++ new/icemon-3.3/src/mainwindow.h 2019-09-11 19:37:46.000000000 +0200
@@ -47,6 +47,7 @@
void setCurrentNet(const QByteArray &netname);
void setCurrentSched(const QByteArray &schedname);
+ void setCurrentPort(uint schedport);
Monitor *monitor() const;
StatusView *view() const;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/icemon-3.2.0/src/models/hostlistmodel.cc
new/icemon-3.3/src/models/hostlistmodel.cc
--- old/icemon-3.2.0/src/models/hostlistmodel.cc 2018-12-10
10:04:43.000000000 +0100
+++ new/icemon-3.3/src/models/hostlistmodel.cc 2019-09-11 19:37:46.000000000
+0200
@@ -76,6 +76,10 @@
return tr("IP");
case ColumnPlatform:
return tr("Platform");
+ case ColumnProtocol:
+ return tr("Protocol");
+ case ColumnFeatures:
+ return tr("Features");
case ColumnMaxJobs:
return tr("Max Jobs");
case ColumnSpeed:
@@ -114,6 +118,10 @@
return info.ip();
case ColumnPlatform:
return info.platform();
+ case ColumnProtocol:
+ return info.protocol() > 0 ? QString::number(info.protocol()) :
QStringLiteral("?");
+ case ColumnFeatures:
+ return info.features().isEmpty() ? QStringLiteral( " - " ) :
info.features();
case ColumnMaxJobs:
return info.maxJobs();
case ColumnSpeed:
@@ -129,6 +137,8 @@
return Qt::AlignRight;
case ColumnNoRemote:
return Qt::AlignCenter;
+ case ColumnProtocol:
+ return Qt::AlignRight;
case ColumnMaxJobs:
return Qt::AlignRight;
case ColumnSpeed:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/icemon-3.2.0/src/models/hostlistmodel.h
new/icemon-3.3/src/models/hostlistmodel.h
--- old/icemon-3.2.0/src/models/hostlistmodel.h 2018-12-10 10:04:43.000000000
+0100
+++ new/icemon-3.3/src/models/hostlistmodel.h 2019-09-11 19:37:46.000000000
+0200
@@ -43,6 +43,8 @@
ColumnColor,
ColumnIP,
ColumnPlatform,
+ ColumnProtocol,
+ ColumnFeatures,
ColumnMaxJobs,
ColumnSpeed,
ColumnLoad,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/icemon-3.2.0/src/monitor.cc
new/icemon-3.3/src/monitor.cc
--- old/icemon-3.2.0/src/monitor.cc 2018-12-10 10:04:43.000000000 +0100
+++ new/icemon-3.3/src/monitor.cc 2019-09-11 19:37:46.000000000 +0200
@@ -26,6 +26,7 @@
: QObject(parent)
, m_hostInfoManager(manager)
, m_schedulerState(Offline)
+ , m_currentSchedport(0)
{
}
@@ -49,6 +50,15 @@
m_currentSchedname = schedname;
}
+uint Monitor::currentSchedport() const
+{
+ return m_currentSchedport;
+}
+void Monitor::setCurrentSchedport(uint port)
+{
+ m_currentSchedport = port;
+}
+
Monitor::SchedulerState Monitor::schedulerState() const
{
return m_schedulerState;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/icemon-3.2.0/src/monitor.h
new/icemon-3.3/src/monitor.h
--- old/icemon-3.2.0/src/monitor.h 2018-12-10 10:04:43.000000000 +0100
+++ new/icemon-3.3/src/monitor.h 2019-09-11 19:37:46.000000000 +0200
@@ -54,6 +54,9 @@
QByteArray currentSchedname() const;
void setCurrentSchedname(const QByteArray &);
+ uint currentSchedport() const;
+ void setCurrentSchedport(uint port);
+
SchedulerState schedulerState() const;
virtual QList<Job> jobHistory() const;
@@ -74,6 +77,7 @@
HostInfoManager *m_hostInfoManager;
QByteArray m_currentNetname;
QByteArray m_currentSchedname;
+ uint m_currentSchedport;
SchedulerState m_schedulerState;
};
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/icemon-3.2.0/src/views/flowtableview.cc
new/icemon-3.3/src/views/flowtableview.cc
--- old/icemon-3.2.0/src/views/flowtableview.cc 2018-12-10 10:04:43.000000000
+0100
+++ new/icemon-3.3/src/views/flowtableview.cc 2019-09-11 19:37:46.000000000
+0200
@@ -75,19 +75,22 @@
FlowTableView::FlowTableView(QObject *parent)
: StatusView(parent)
- , m_updateTimer(new QTimer)
, m_widget(new QTableWidget)
+ , m_updateTimer(new QTimer)
{
m_widget->setColumnCount(4);
QStringList labels;
labels << tr("Host") << tr("File") << tr("History") << tr("State");
m_widget->setHorizontalHeaderLabels(labels);
m_widget->horizontalHeader()->setSectionResizeMode(2,
QHeaderView::Stretch);
+ m_widget->horizontalHeader()->setSectionResizeMode(0,
QHeaderView::ResizeToContents);
m_widget->verticalHeader()->hide();
m_widget->setSelectionMode(QAbstractItemView::NoSelection);
m_updateTimer->setInterval(50);
m_updateTimer->start();
+
+ createKnownHosts();
}
void FlowTableView::update(const Job &job)
@@ -126,19 +129,12 @@
// update the host column for the server requesting the job
QTableWidgetItem *hostNameItem = m_widget->item(serverRow, 0);
- int usageCount = hostNameItem->data(Qt::UserRole).toInt();
- if (job.state == Job::LocalOnly || job.state == Job::Compiling) {
- ++usageCount;
- } else if (job.state == Job::Finished || job.state == Job::Failed) {
- --usageCount;
- }
-
- hostNameItem->setData(Qt::UserRole, usageCount);
+ HostInfo *hostInfo = hostInfoManager()->find(serverId);
QFont f = m_widget->font();
- f.setBold(usageCount > 0);
+ f.setBold(hostInfo->numJobs() > 0);
hostNameItem->setFont(f);
- hostNameItem->setText(hostInfoText(hostInfoManager()->find(serverId),
usageCount));
+ hostNameItem->setText(hostInfoText(hostInfo));
}
QWidget *FlowTableView::widget() const
@@ -146,14 +142,38 @@
return m_widget.data();
}
-QString FlowTableView::hostInfoText(HostInfo *hostInfo, int runningProcesses) {
- if (hostInfo->serverSpeed() == 0) { // host disabled
+QString FlowTableView::hostInfoText(HostInfo *hostInfo) {
+ if ((hostInfo->serverSpeed() == 0) && (hostInfo->numJobs() == 0)) { //
host disabled
return tr("%1 (Disabled)").arg(hostInfo->name());
} else {
- return tr("%1
(%2/%3)").arg(hostInfo->name()).arg(runningProcesses).arg(hostInfo->maxJobs());
+ return tr("%1
(%2/%3)").arg(hostInfo->name()).arg(hostInfo->numJobs()).arg(hostInfo->maxJobs());
}
}
+void FlowTableView::createKnownHosts()
+{
+ if (!hostInfoManager()) {
+ return;
+ }
+
+ m_widget->setRowCount(0);
+ m_idToRowMap.clear();
+
+ const HostInfoManager::HostMap hosts(hostInfoManager()->hostMap());
+
+ foreach(int hostid, hosts.keys()) {
+ checkNode(hostid);
+ }
+}
+
+void FlowTableView::setMonitor(Monitor *monitor)
+{
+ StatusView::setMonitor(monitor);
+
+ if (monitor)
+ createKnownHosts();
+}
+
void FlowTableView::checkNode(unsigned int hostId)
{
if (m_idToRowMap.contains(hostId)) {
@@ -165,8 +185,6 @@
widgetItem->setIcon(QIcon(QStringLiteral(":/images/icemonnode.png")));
widgetItem->setToolTip(hostInfo->toolTip());
widgetItem->setBackgroundColor(hostInfo->color());
- // usage count
- widgetItem->setData(Qt::UserRole, 0);
widgetItem->setFlags(Qt::ItemIsEnabled);
int insertRow = m_widget->rowCount();
m_widget->setRowCount(insertRow + 1);
@@ -191,6 +209,7 @@
void FlowTableView::removeNode(unsigned int hostId)
{
- m_widget->removeRow(m_idToRowMap.value(hostId));
- m_idToRowMap.remove(hostId);
+ Q_UNUSED(hostId);
+
+ createKnownHosts();
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/icemon-3.2.0/src/views/flowtableview.h
new/icemon-3.3/src/views/flowtableview.h
--- old/icemon-3.2.0/src/views/flowtableview.h 2018-12-10 10:04:43.000000000
+0100
+++ new/icemon-3.3/src/views/flowtableview.h 2019-09-11 19:37:46.000000000
+0200
@@ -62,6 +62,8 @@
QWidget *widget() const override;
+ void setMonitor(Monitor *monitor) override;
+
void update(const Job &job) override;
void checkNode(unsigned int hostid) override;
void removeNode(unsigned int hostid) override;
@@ -76,9 +78,11 @@
private:
QScopedPointer<QTableWidget> m_widget;
- QString hostInfoText(HostInfo *hostInfo, int runningProcesses = 0);
+ QString hostInfoText(HostInfo *hostInfo);
HostIdRowMap m_idToRowMap;
QTimer *m_updateTimer;
+
+ void createKnownHosts();
};
#endif // FLOWTABLEVIEW_H
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/icemon-3.2.0/src/views/ganttstatusview.cc
new/icemon-3.3/src/views/ganttstatusview.cc
--- old/icemon-3.2.0/src/views/ganttstatusview.cc 2018-12-10
10:04:43.000000000 +0100
+++ new/icemon-3.3/src/views/ganttstatusview.cc 2019-09-11 19:37:46.000000000
+0200
@@ -40,6 +40,7 @@
#include <QResizeEvent>
#include <QPaintEvent>
#include <QScrollBar>
+#include <QDialogButtonBox>
GanttConfigDialog::GanttConfigDialog(QWidget *parent)
: QDialog(parent)
@@ -62,9 +63,9 @@
buttonLayout->addStretch(1);
- QPushButton *button = new QPushButton(tr("&Close"), this);
- buttonLayout->addWidget(button);
- connect(button, SIGNAL(clicked()), SLOT(hide()));
+ QDialogButtonBox *buttonBox = new
QDialogButtonBox(QDialogButtonBox::Close, this);
+ buttonLayout->addWidget(buttonBox);
+ connect(buttonBox, SIGNAL(rejected()), SLOT(hide()));
setWindowTitle(tr("Configure Gantt View"));
// apply some minimum size
@@ -381,6 +382,11 @@
return m_widget.data();
}
+void GanttStatusView::removeNode(unsigned int hostid)
+{
+ unregisterNode(hostid);
+}
+
void GanttStatusView::checkNode(unsigned int hostid)
{
if (!mRunning) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/icemon-3.2.0/src/views/ganttstatusview.h
new/icemon-3.3/src/views/ganttstatusview.h
--- old/icemon-3.2.0/src/views/ganttstatusview.h 2018-12-10
10:04:43.000000000 +0100
+++ new/icemon-3.3/src/views/ganttstatusview.h 2019-09-11 19:37:46.000000000
+0200
@@ -129,6 +129,7 @@
QString id() const override { return QStringLiteral("gantt"); }
+ void removeNode(unsigned int hostid) override;
void checkNode(unsigned int hostid) override;
void start() override;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/icemon-3.2.0/src/views/hostlistview.cc
new/icemon-3.3/src/views/hostlistview.cc
--- old/icemon-3.2.0/src/views/hostlistview.cc 2018-12-10 10:04:43.000000000
+0100
+++ new/icemon-3.3/src/views/hostlistview.cc 2019-09-11 19:37:46.000000000
+0200
@@ -23,6 +23,8 @@
#include "models/hostlistmodel.h"
+#include <QHeaderView>
+
HostListView::HostListView(QWidget *parent)
: QTreeView(parent)
{
@@ -34,9 +36,13 @@
void HostListView::setModel(QAbstractItemModel *model)
{
+ QTreeView::setModel(model);
if (model) {
sortByColumn(HostListModel::ColumnID);
+ header()->setStretchLastSection(false);
+ header()->setSectionResizeMode(HostListModel::ColumnName,
QHeaderView::Stretch);
+ header()->setSectionResizeMode(HostListModel::ColumnColor,
QHeaderView::ResizeToContents);
+ header()->setSectionResizeMode(HostListModel::ColumnIP,
QHeaderView::ResizeToContents);
+ header()->setSectionResizeMode(HostListModel::ColumnPlatform,
QHeaderView::ResizeToContents);
}
-
- QTreeView::setModel(model);
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/icemon-3.2.0/src/views/joblistview.cc
new/icemon-3.3/src/views/joblistview.cc
--- old/icemon-3.2.0/src/views/joblistview.cc 2018-12-10 10:04:43.000000000
+0100
+++ new/icemon-3.3/src/views/joblistview.cc 2019-09-11 19:37:46.000000000
+0200
@@ -44,11 +44,14 @@
void JobListView::setModel(QAbstractItemModel *model)
{
+ QTreeView::setModel(model);
if (model) {
sortByColumn(JobListModel::JobColumnID);
+ header()->setStretchLastSection(false);
+ header()->setSectionResizeMode(JobListModel::JobColumnFilename,
QHeaderView::Stretch);
+ header()->setSectionResizeMode(JobListModel::JobColumnClient,
QHeaderView::ResizeToContents);
+ header()->setSectionResizeMode(JobListModel::JobColumnServer,
QHeaderView::ResizeToContents);
}
-
- QTreeView::setModel(model);
}
bool JobListView::isClientColumnVisible() const
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/icemon-3.2.0/src/views/starview.cc
new/icemon-3.3/src/views/starview.cc
--- old/icemon-3.2.0/src/views/starview.cc 2018-12-10 10:04:43.000000000
+0100
+++ new/icemon-3.3/src/views/starview.cc 2019-09-11 19:37:46.000000000
+0200
@@ -40,6 +40,7 @@
#include <QResizeEvent>
#include <QGraphicsScene>
#include <QGraphicsView>
+#include <QDialogButtonBox>
#include <math.h>
@@ -85,14 +86,14 @@
hline->setFrameShape(QFrame::HLine);
hline->setFrameShadow(QFrame::Sunken);
topLayout->addWidget(hline);
- QPushButton *closeButton = new QPushButton(tr("&Close"));
- closeButton->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Preferred);
- topLayout->addWidget(closeButton, 0, Qt::AlignRight);
+
+ QDialogButtonBox *buttonBox = new
QDialogButtonBox(QDialogButtonBox::Close, this);
+ topLayout->addWidget(buttonBox);
connect(mSuppressDomainName, SIGNAL(toggled(bool)),
SLOT(slotSuppressDomainName(bool)));
- connect(closeButton, SIGNAL(clicked()), SLOT(accept()));
+ connect(buttonBox, SIGNAL(rejected()), SLOT(accept()));
}
void StarViewConfigDialog::slotNodesPerRingChanged(int nodes)
@@ -478,23 +479,10 @@
HostItem *hostItem = findHostItem(hostid);
- if (hostItem && hostItem->hostInfo()->isOffline()) {
- removeItem(hostItem);
- }
-}
-
-void StarView::forceRemoveNode(unsigned int hostid)
-{
- HostItem *hostItem = findHostItem(hostid);
-
- if (hostItem) {
- removeItem(hostItem);
- }
-}
+ if (!hostItem)
+ return;
-void StarView::removeItem(HostItem *hostItem)
-{
- m_hostItems.remove(hostItem->hostInfo()->id());
+ m_hostItems.remove(hostid);
QList<unsigned int> obsoleteJobs;
@@ -621,7 +609,7 @@
if (filterArch(*it)) {
checkNode(it.key());
} else {
- forceRemoveNode(it.key());
+ removeNode(it.key());
}
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/icemon-3.2.0/src/views/starview.h
new/icemon-3.3/src/views/starview.h
--- old/icemon-3.2.0/src/views/starview.h 2018-12-10 10:04:43.000000000
+0100
+++ new/icemon-3.3/src/views/starview.h 2019-09-11 19:37:46.000000000 +0200
@@ -210,9 +210,6 @@
*/
bool filterArch(HostInfo *);
- void removeItem(HostItem *);
- void forceRemoveNode(unsigned int hostid);
-
protected slots:
void slotConfigChanged();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/icemon-3.2.0/src/views/summaryview.cc
new/icemon-3.3/src/views/summaryview.cc
--- old/icemon-3.2.0/src/views/summaryview.cc 2018-12-10 10:04:43.000000000
+0100
+++ new/icemon-3.3/src/views/summaryview.cc 2019-09-11 19:37:46.000000000
+0200
@@ -274,7 +274,6 @@
, m_widget(new SummaryViewScrollArea)
{
m_base = new QWidget;
- m_base->setStyleSheet(QStringLiteral("QWidget { background-color: 'white';
}"));
m_widget->setWidget(m_base);
m_layout = new QGridLayout(m_base);
@@ -284,6 +283,7 @@
m_widget->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
m_widget->setMinimumHeight(150);
+ createKnownHosts();
}
SummaryView::~SummaryView()
@@ -297,29 +297,47 @@
void SummaryView::update(const Job &job)
{
- if (!job.server) {
+ if (!job.server)
return;
- }
SummaryViewItem *i = m_items[job.server];
- if (!i) {
- i = new SummaryViewItem(job.server, m_base, this, m_layout);
- m_items.insert(job.server, i);
-
m_widget->widget()->setMinimumHeight(m_widget->widget()->sizeHint().height());
+ if (i)
+ i->update(job);
+
+ i= m_items[job.client];
+ if (i)
+ i->updateClient(job);
+}
+
+void SummaryView::createKnownHosts()
+{
+ if (!hostInfoManager()) {
+ return;
}
- i->update(job);
- i = m_items[job.client];
- if (i) {
- i->updateClient(job);
+ qDeleteAll(m_items);
+ m_items.clear();
+
+ const HostInfoManager::HostMap hosts(hostInfoManager()->hostMap());
+
+ foreach(int hostid, hosts.keys()) {
+ checkNode(hostid);
}
}
+void SummaryView::setMonitor(Monitor *monitor)
+{
+ StatusView::setMonitor(monitor);
+
+ if (monitor)
+ createKnownHosts();
+}
+
void SummaryView::checkNode(unsigned int hostid)
{
HostInfo *hostInfo = hostInfoManager()->find(hostid);
- if (hostInfo && nameForHost(hostid).isNull()) {
+ if (!hostInfo) {
delete m_items[hostid];
m_items.remove(hostid);
} else if (!m_items[hostid]) {
@@ -328,3 +346,8 @@
m_widget->widget()->setMinimumHeight(m_widget->widget()->sizeHint().height());
}
}
+void SummaryView::removeNode(unsigned int hostid)
+{
+ delete m_items[hostid];
+ m_items.remove(hostid);
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/icemon-3.2.0/src/views/summaryview.h
new/icemon-3.3/src/views/summaryview.h
--- old/icemon-3.2.0/src/views/summaryview.h 2018-12-10 10:04:43.000000000
+0100
+++ new/icemon-3.3/src/views/summaryview.h 2019-09-11 19:37:46.000000000
+0200
@@ -85,7 +85,10 @@
~SummaryView() override;
QWidget *widget() const override;
+
+ void setMonitor(Monitor *monitor) override;
void update(const Job &job) override;
+ void removeNode(unsigned int hostid) override;
void checkNode(unsigned int hostid) override;
QString id() const override { return QStringLiteral("summary"); }
@@ -95,6 +98,8 @@
QMap<unsigned int, SummaryViewItem *> m_items;
QGridLayout *m_layout;
QWidget *m_base;
+
+ void createKnownHosts();
};
#endif