From 8c051235aa461ef4dd6c44ac8b0900317f58fc9e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9F=D0=B5=D0=BB=D0=B8=D0=BF=D0=B5=D0=BD=D0=BA=D0=BE=20?= =?UTF-8?q?=D0=98=D0=B2=D0=B0=D0=BD?= Date: Thu, 26 Mar 2015 11:51:43 +0000 Subject: [PATCH] pisd git-svn-id: svn://db.shs.com.ru/pip@43 12ceb7fc-bf1f-11e4-8940-5bc7170c53b5 --- src/console/piscreentile.cpp | 1 + src/console/piscreentiles.cpp | 4 ++++ utils/system_daemon/daemon.cpp | 3 ++- utils/system_daemon/daemon.h | 4 ++-- utils/system_daemon/file_manager.h | 2 +- utils/system_daemon/main.cpp | 2 +- 6 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/console/piscreentile.cpp b/src/console/piscreentile.cpp index 9225ac01..bf07c4c7 100644 --- a/src/console/piscreentile.cpp +++ b/src/console/piscreentile.cpp @@ -161,6 +161,7 @@ void PIScreenTile::sizeHint(int & w, int & h) const { if (direction == Horizontal) w += sl; else h += sl; piForeachC (PIScreenTile * t, tiles) { + if (!t->visible) continue; int cw(0), ch(0); t->sizeHint(cw, ch); cw = piClampi(cw, t->minimumWidth, t->maximumWidth); diff --git a/src/console/piscreentiles.cpp b/src/console/piscreentiles.cpp index 041381ae..ba750dfb 100644 --- a/src/console/piscreentiles.cpp +++ b/src/console/piscreentiles.cpp @@ -95,8 +95,10 @@ void TileList::sizeHint(int & w, int & h) const { void TileList::drawEvent(PIScreenDrawer * d) { lhei = height - 2; + int osp = piMini(3, lhei / 4); int is = piClampi(offset, 0, piMaxi(0, content.size_s() - 1)), ie = piClampi(offset + lhei, 0, content.size_s()); if (is > 0) d->drawText(x, y, PIString(" /\\ ").repeat(width / 4), Green, Default, Bold); + //piCout << is << ie << offset << lhei << content.size_s(); for (int i = is; i < ie; ++i) { Row & r(content[i]); bool sel = i == cur && has_focus; @@ -178,6 +180,7 @@ bool TileList::keyEvent(PIKbdListener::KeyEvent key) { if (cur >= content.size_s()) cur = content.size_s() - 1; if (cur - offset >= lhei - osp) offset += oo; if (offset >= content.size_s() - lhei) offset = content.size_s() - lhei; + if (offset < 0) offset = 0; return true; case PIKbdListener::Home: cur = offset = 0; @@ -185,6 +188,7 @@ bool TileList::keyEvent(PIKbdListener::KeyEvent key) { case PIKbdListener::End: cur = content.size_s() - 1; offset = content.size_s() - lhei; + if (offset < 0) offset = 0; return true; case PIKbdListener::Return: if (cur >= 0 && cur < content.size_s()) diff --git a/utils/system_daemon/daemon.cpp b/utils/system_daemon/daemon.cpp index a595e358..bb216d5a 100644 --- a/utils/system_daemon/daemon.cpp +++ b/utils/system_daemon/daemon.cpp @@ -4,7 +4,7 @@ extern PIScreen screen; -Daemon::Daemon(): PIPeer("_pisd_" + PISystemInfo::instance()->hostname + "_" + PIString(rand() % 100)) { +Daemon::Daemon(): PIPeer("_pisd_" + PISystemInfo::instance()->hostname + "_" + PIString(rand() % 100)), fm(this) { setName("Daemon"); timer.setName("__S__Daemon_timer"); mode = offset = cur = height = 0; @@ -58,6 +58,7 @@ void Daemon::hideAll() { list_actions->hide(); tile_info->hide(); list_daemons->hide(); + tile_fm->hide(); } diff --git a/utils/system_daemon/daemon.h b/utils/system_daemon/daemon.h index 377d1b47..2fce9c29 100644 --- a/utils/system_daemon/daemon.h +++ b/utils/system_daemon/daemon.h @@ -82,8 +82,8 @@ private: PISystemMonitor sys_mon_other; HostInfo info_my, info_other; FileManager fm; - PIScreenTile * tile_root; - TileSimple * tile_info, * tile_fm, * tile_header; + PIScreenTile * tile_root, * tile_fm; + TileSimple * tile_info, * tile_header; TileList * list_daemons, * list_actions; int mode, offset, cur, height; diff --git a/utils/system_daemon/file_manager.h b/utils/system_daemon/file_manager.h index 17a86d2c..8b4a37f2 100644 --- a/utils/system_daemon/file_manager.h +++ b/utils/system_daemon/file_manager.h @@ -9,7 +9,7 @@ class Daemon; class FileManager: public PIObject { PIOBJECT(FileManager) public: - FileManager(Daemon * d); + FileManager(Daemon * d = 0); PIScreenTile * tile() const; diff --git a/utils/system_daemon/main.cpp b/utils/system_daemon/main.cpp index 21b91d4c..c23c24e3 100755 --- a/utils/system_daemon/main.cpp +++ b/utils/system_daemon/main.cpp @@ -33,7 +33,7 @@ _Init _pisd_init; PIScreen screen(false); PISystemMonitor sys_mon; Daemon daemon_; -FileManager file_manager(&daemon_); +FileManager file_manager; class MainMenu: public PITimer {