Author: aldeck Date: 2010-11-18 23:36:03 +0100 (Thu, 18 Nov 2010) New Revision: 39488 Changeset: http://dev.haiku-os.org/changeset/39488 Added: haiku/branches/developer/aldeck/tracker_layout/data/artwork/icons/App_Vision2 haiku/branches/developer/aldeck/tracker_layout/headers/private/libroot/extended_system_info.h haiku/branches/developer/aldeck/tracker_layout/headers/private/system/extended_system_info_defs.h haiku/branches/developer/aldeck/tracker_layout/src/apps/terminal/ActiveProcessInfo.cpp haiku/branches/developer/aldeck/tracker_layout/src/apps/terminal/ActiveProcessInfo.h haiku/branches/developer/aldeck/tracker_layout/src/apps/terminal/PatternEvaluator.cpp haiku/branches/developer/aldeck/tracker_layout/src/apps/terminal/PatternEvaluator.h haiku/branches/developer/aldeck/tracker_layout/src/apps/terminal/ShellParameters.cpp haiku/branches/developer/aldeck/tracker_layout/src/apps/terminal/ShellParameters.h haiku/branches/developer/aldeck/tracker_layout/src/apps/terminal/TitlePlaceholderMapper.cpp haiku/branches/developer/aldeck/tracker_layout/src/apps/terminal/TitlePlaceholderMapper.h haiku/branches/developer/aldeck/tracker_layout/src/system/libroot/os/extended_system_info.cpp Modified: haiku/branches/developer/aldeck/tracker_layout/ haiku/branches/developer/aldeck/tracker_layout/headers/libs/png/png.h haiku/branches/developer/aldeck/tracker_layout/headers/libs/png/pngconf.h haiku/branches/developer/aldeck/tracker_layout/headers/libs/tiff/tiff.h haiku/branches/developer/aldeck/tracker_layout/headers/libs/tiff/tiffio.h haiku/branches/developer/aldeck/tracker_layout/headers/libs/tiff/tiffvers.h haiku/branches/developer/aldeck/tracker_layout/headers/os/app/MessageRunner.h haiku/branches/developer/aldeck/tracker_layout/headers/os/interface/LayoutBuilder.h haiku/branches/developer/aldeck/tracker_layout/headers/private/kernel/team.h haiku/branches/developer/aldeck/tracker_layout/headers/private/system/syscalls.h haiku/branches/developer/aldeck/tracker_layout/src/add-ons/decorators/SATDecorator/SATGroup.cpp haiku/branches/developer/aldeck/tracker_layout/src/add-ons/decorators/SATDecorator/SATGroup.h haiku/branches/developer/aldeck/tracker_layout/src/add-ons/decorators/SATDecorator/SATWindow.cpp haiku/branches/developer/aldeck/tracker_layout/src/add-ons/decorators/SATDecorator/SATWindow.h haiku/branches/developer/aldeck/tracker_layout/src/add-ons/decorators/SATDecorator/StackAndTile.cpp haiku/branches/developer/aldeck/tracker_layout/src/add-ons/decorators/SATDecorator/StackAndTile.h haiku/branches/developer/aldeck/tracker_layout/src/add-ons/index_server/audiotags/AudioTagAnalyser.cpp haiku/branches/developer/aldeck/tracker_layout/src/add-ons/kernel/bus_managers/acpi/ haiku/branches/developer/aldeck/tracker_layout/src/add-ons/kernel/drivers/network/wlan/atheroswifi/dev/ath/ haiku/branches/developer/aldeck/tracker_layout/src/add-ons/kernel/drivers/network/wlan/iprowifi4965/dev/iwn/ haiku/branches/developer/aldeck/tracker_layout/src/apps/debugger/user_interface/gui/teams_window/TeamsListView.cpp haiku/branches/developer/aldeck/tracker_layout/src/apps/debugger/user_interface/gui/teams_window/TeamsListView.h haiku/branches/developer/aldeck/tracker_layout/src/apps/debugger/user_interface/gui/teams_window/TeamsWindow.cpp haiku/branches/developer/aldeck/tracker_layout/src/apps/debugger/user_interface/gui/teams_window/TeamsWindow.h haiku/branches/developer/aldeck/tracker_layout/src/apps/installer/InstallerApp.cpp haiku/branches/developer/aldeck/tracker_layout/src/apps/showimage/ImageCache.cpp haiku/branches/developer/aldeck/tracker_layout/src/apps/showimage/ShowImageWindow.cpp haiku/branches/developer/aldeck/tracker_layout/src/apps/terminal/AppearPrefView.cpp haiku/branches/developer/aldeck/tracker_layout/src/apps/terminal/AppearPrefView.h haiku/branches/developer/aldeck/tracker_layout/src/apps/terminal/Jamfile haiku/branches/developer/aldeck/tracker_layout/src/apps/terminal/PrefHandler.cpp haiku/branches/developer/aldeck/tracker_layout/src/apps/terminal/PrefHandler.h haiku/branches/developer/aldeck/tracker_layout/src/apps/terminal/PrefWindow.cpp haiku/branches/developer/aldeck/tracker_layout/src/apps/terminal/Shell.cpp haiku/branches/developer/aldeck/tracker_layout/src/apps/terminal/Shell.h haiku/branches/developer/aldeck/tracker_layout/src/apps/terminal/SmartTabView.cpp haiku/branches/developer/aldeck/tracker_layout/src/apps/terminal/SmartTabView.h haiku/branches/developer/aldeck/tracker_layout/src/apps/terminal/TermApp.cpp haiku/branches/developer/aldeck/tracker_layout/src/apps/terminal/TermApp.h haiku/branches/developer/aldeck/tracker_layout/src/apps/terminal/TermConst.h haiku/branches/developer/aldeck/tracker_layout/src/apps/terminal/TermView.cpp haiku/branches/developer/aldeck/tracker_layout/src/apps/terminal/TermView.h haiku/branches/developer/aldeck/tracker_layout/src/apps/terminal/TermWindow.cpp haiku/branches/developer/aldeck/tracker_layout/src/apps/terminal/TermWindow.h haiku/branches/developer/aldeck/tracker_layout/src/build/libbe/storage/mime/ haiku/branches/developer/aldeck/tracker_layout/src/kits/app/MessageRunner.cpp haiku/branches/developer/aldeck/tracker_layout/src/kits/interface/ColumnListView.cpp haiku/branches/developer/aldeck/tracker_layout/src/kits/support/String.cpp haiku/branches/developer/aldeck/tracker_layout/src/kits/tracker/ContainerWindow.cpp haiku/branches/developer/aldeck/tracker_layout/src/libs/png/ haiku/branches/developer/aldeck/tracker_layout/src/libs/tiff/ haiku/branches/developer/aldeck/tracker_layout/src/system/kernel/messaging/KMessage.cpp haiku/branches/developer/aldeck/tracker_layout/src/system/kernel/team.cpp haiku/branches/developer/aldeck/tracker_layout/src/system/libroot/os/Jamfile Log: * Merged trunk changes from r39446 through r39487 Property changes on: haiku/branches/developer/aldeck/tracker_layout ___________________________________________________________________ Modified: svn:mergeinfo - /haiku/trunk:37809-39445 + /haiku/trunk:37809-39487 Copied: haiku/branches/developer/aldeck/tracker_layout/data/artwork/icons/App_Vision2 (from rev 39487, haiku/trunk/data/artwork/icons/App_Vision2) =================================================================== (Binary files differ) Property changes on: haiku/branches/developer/aldeck/tracker_layout/headers/libs/png/png.h ___________________________________________________________________ Modified: svn:mergeinfo - /haiku/trunk/headers/libs/png/png.h:37809-39445 /haiku/vendor/libpng/1.4.3/png.h:38698 /haiku/vendor/libpng/current/png.h:35840-38697 + /haiku/trunk/headers/libs/png/png.h:37809-39487 /haiku/vendor/libpng/1.4.3/png.h:38698 /haiku/vendor/libpng/current/png.h:35840-38697 Property changes on: haiku/branches/developer/aldeck/tracker_layout/headers/libs/png/pngconf.h ___________________________________________________________________ Modified: svn:mergeinfo - /haiku/trunk/headers/libs/png/pngconf.h:37809-39445 /haiku/vendor/libpng/1.4.3/pngconf.h:38698 /haiku/vendor/libpng/current/pngconf.h:35840-38697 + /haiku/trunk/headers/libs/png/pngconf.h:37809-39487 /haiku/vendor/libpng/1.4.3/pngconf.h:38698 /haiku/vendor/libpng/current/pngconf.h:35840-38697 Property changes on: haiku/branches/developer/aldeck/tracker_layout/headers/libs/tiff/tiff.h ___________________________________________________________________ Modified: svn:mergeinfo - /haiku/trunk/headers/libs/tiff/tiff.h:37809-39445 /haiku/vendor/libtiff/3.9.4/libtiff/tiff.h:38702 /haiku/vendor/libtiff/current/libtiff/tiff.h:38700-38701 + /haiku/trunk/headers/libs/tiff/tiff.h:37809-39487 /haiku/vendor/libtiff/3.9.4/libtiff/tiff.h:38702 /haiku/vendor/libtiff/current/libtiff/tiff.h:38700-38701 Property changes on: haiku/branches/developer/aldeck/tracker_layout/headers/libs/tiff/tiffio.h ___________________________________________________________________ Modified: svn:mergeinfo - /haiku/trunk/headers/libs/tiff/tiffio.h:37809-39445 /haiku/vendor/libtiff/3.9.4/libtiff/tiffio.h:38702 /haiku/vendor/libtiff/current/libtiff/tiffio.h:38700-38701 + /haiku/trunk/headers/libs/tiff/tiffio.h:37809-39487 /haiku/vendor/libtiff/3.9.4/libtiff/tiffio.h:38702 /haiku/vendor/libtiff/current/libtiff/tiffio.h:38700-38701 Property changes on: haiku/branches/developer/aldeck/tracker_layout/headers/libs/tiff/tiffvers.h ___________________________________________________________________ Modified: svn:mergeinfo - /haiku/trunk/headers/libs/tiff/tiffvers.h:37809-39445 /haiku/vendor/libtiff/3.9.4/libtiff/tiffvers.h:38702 /haiku/vendor/libtiff/current/libtiff/tiffvers.h:38700-38701 + /haiku/trunk/headers/libs/tiff/tiffvers.h:37809-39487 /haiku/vendor/libtiff/3.9.4/libtiff/tiffvers.h:38702 /haiku/vendor/libtiff/current/libtiff/tiffvers.h:38700-38701 Modified: haiku/branches/developer/aldeck/tracker_layout/headers/os/app/MessageRunner.h =================================================================== --- haiku/branches/developer/aldeck/tracker_layout/headers/os/app/MessageRunner.h 2010-11-18 17:16:56 UTC (rev 39487) +++ haiku/branches/developer/aldeck/tracker_layout/headers/os/app/MessageRunner.h 2010-11-18 22:36:03 UTC (rev 39488) @@ -1,9 +1,6 @@ /* - * Copyright 2001-2006, Haiku. + * Copyright 2001-2010, Haiku, Inc. * Distributed under the terms of the MIT License. - * - * Authors: - * Ingo Weinhold (bonefish@xxxxxxxxxxxx) */ #ifndef _MESSAGE_RUNNER_H #define _MESSAGE_RUNNER_H @@ -13,45 +10,63 @@ class BMessageRunner { - public: - BMessageRunner(BMessenger target, const BMessage *message, - bigtime_t interval, int32 count = -1); - BMessageRunner(BMessenger target, const BMessage *message, - bigtime_t interval, int32 count, BMessenger replyTo); - virtual ~BMessageRunner(); +public: + BMessageRunner(BMessenger target, + const BMessage* message, bigtime_t interval, + int32 count = -1); + BMessageRunner(BMessenger target, + const BMessage& message, bigtime_t interval, + int32 count = -1); + BMessageRunner(BMessenger target, + const BMessage* message, bigtime_t interval, + int32 count, BMessenger replyTo); + BMessageRunner(BMessenger target, + const BMessage& message, bigtime_t interval, + int32 count, BMessenger replyTo); + virtual ~BMessageRunner(); - status_t InitCheck() const; + status_t InitCheck() const; - status_t SetInterval(bigtime_t interval); - status_t SetCount(int32 count); - status_t GetInfo(bigtime_t *interval, int32 *count) const; + status_t SetInterval(bigtime_t interval); + status_t SetCount(int32 count); + status_t GetInfo(bigtime_t* interval, + int32* count) const; - static status_t StartSending(BMessenger target, const BMessage *message, - bigtime_t interval, int32 count); - static status_t StartSending(BMessenger target, const BMessage *message, - bigtime_t interval, int32 count, BMessenger replyTo); + static status_t StartSending(BMessenger target, + const BMessage* message, bigtime_t interval, + int32 count); + static status_t StartSending(BMessenger target, + const BMessage* message, bigtime_t interval, + int32 count, BMessenger replyTo); - private: - BMessageRunner(const BMessageRunner &); - BMessageRunner &operator=(const BMessageRunner &); +private: + BMessageRunner(const BMessageRunner &); + BMessageRunner &operator=( + const BMessageRunner &); - static int32 _RegisterRunner(BMessenger target, const BMessage *message, - bigtime_t interval, int32 count, bool detach, BMessenger replyTo); + static int32 _RegisterRunner(BMessenger target, + const BMessage* message, bigtime_t interval, + int32 count, bool detach, + BMessenger replyTo); - void _InitData(BMessenger target, const BMessage *message, bigtime_t interval, - int32 count, BMessenger replyTo); - status_t _SetParams(bool resetInterval, bigtime_t interval, bool resetCount, - int32 count); + void _InitData(BMessenger target, + const BMessage* message, bigtime_t interval, + int32 count, BMessenger replyTo); + status_t _SetParams(bool resetInterval, + bigtime_t interval, bool resetCount, + int32 count); - virtual void _ReservedMessageRunner1(); - virtual void _ReservedMessageRunner2(); - virtual void _ReservedMessageRunner3(); - virtual void _ReservedMessageRunner4(); - virtual void _ReservedMessageRunner5(); - virtual void _ReservedMessageRunner6(); + virtual void _ReservedMessageRunner1(); + virtual void _ReservedMessageRunner2(); + virtual void _ReservedMessageRunner3(); + virtual void _ReservedMessageRunner4(); + virtual void _ReservedMessageRunner5(); + virtual void _ReservedMessageRunner6(); - int32 fToken; - uint32 _reserved[6]; +private: + int32 fToken; + uint32 _reserved[6]; }; + #endif // _MESSAGE_RUNNER_H Modified: haiku/branches/developer/aldeck/tracker_layout/headers/os/interface/LayoutBuilder.h =================================================================== --- haiku/branches/developer/aldeck/tracker_layout/headers/os/interface/LayoutBuilder.h 2010-11-18 17:16:56 UTC (rev 39487) +++ haiku/branches/developer/aldeck/tracker_layout/headers/os/interface/LayoutBuilder.h 2010-11-18 22:36:03 UTC (rev 39488) @@ -135,12 +135,16 @@ int32 column, int32 row, alignment labelAlignment = B_ALIGN_HORIZONTAL_UNSET, - int32 columnCount = 1, int32 rowCount = 1); + int32 labelColumnCount = 1, + int32 fieldColumnCount = 1, + int32 rowCount = 1); inline ThisBuilder& AddTextControl(BTextControl* textControl, int32 column, int32 row, alignment labelAlignment = B_ALIGN_HORIZONTAL_UNSET, - int32 columnCount = 1, int32 rowCount = 1); + int32 labelColumnCount = 1, + int32 textColumnCount = 1, + int32 rowCount = 1); inline GroupBuilder AddGroup(enum orientation orientation, float spacing, int32 column, int32 row, @@ -148,7 +152,7 @@ inline GroupBuilder AddGroup(BGroupView* groupView, int32 column, int32 row, int32 columnCount = 1, int32 rowCount = 1); - inline GroupBuilder AddGroup(BGroupLayout* groupLayout, + inline GroupBuilder AddGroup(BGroupLayout* groupLayout, int32 column, int32 row, int32 columnCount = 1, int32 rowCount = 1); @@ -608,14 +612,15 @@ template<typename ParentBuilder> typename Grid<ParentBuilder>::ThisBuilder& Grid<ParentBuilder>::AddMenuField(BMenuField* menuField, int32 column, - int32 row, alignment labelAlignment, int32 columnCount, int32 rowCount) + int32 row, alignment labelAlignment, int32 labelColumnCount, + int32 fieldColumnCount, int32 rowCount) { BLayoutItem* item = menuField->CreateLabelLayoutItem(); item->SetExplicitAlignment( BAlignment(labelAlignment, B_ALIGN_VERTICAL_UNSET)); - fLayout->AddItem(item, column, row, columnCount, rowCount); - fLayout->AddItem(menuField->CreateMenuBarLayoutItem(), column + columnCount, - row, columnCount, rowCount); + fLayout->AddItem(item, column, row, labelColumnCount, rowCount); + fLayout->AddItem(menuField->CreateMenuBarLayoutItem(), + column + labelColumnCount, row, fieldColumnCount, rowCount); return *this; } @@ -623,14 +628,15 @@ template<typename ParentBuilder> typename Grid<ParentBuilder>::ThisBuilder& Grid<ParentBuilder>::AddTextControl(BTextControl* textControl, int32 column, - int32 row, alignment labelAlignment, int32 columnCount, int32 rowCount) + int32 row, alignment labelAlignment, int32 labelColumnCount, + int32 textColumnCount, int32 rowCount) { BLayoutItem* item = textControl->CreateLabelLayoutItem(); item->SetExplicitAlignment( BAlignment(labelAlignment, B_ALIGN_VERTICAL_UNSET)); - fLayout->AddItem(item, column, row, columnCount, rowCount); + fLayout->AddItem(item, column, row, labelColumnCount, rowCount); fLayout->AddItem(textControl->CreateTextViewLayoutItem(), - column + columnCount, row, columnCount, rowCount); + column + labelColumnCount, row, textColumnCount, rowCount); return *this; } @@ -704,7 +710,7 @@ builder.SetParent(this); fLayout->AddView(builder.View(), column, row, columnCount, rowCount); return builder; -} +} template<typename ParentBuilder> @@ -716,7 +722,7 @@ builder.SetParent(this); fLayout->AddView(builder.View(), column, row, columnCount, rowCount); return builder; -} +} template<typename ParentBuilder> Modified: haiku/branches/developer/aldeck/tracker_layout/headers/private/kernel/team.h =================================================================== --- haiku/branches/developer/aldeck/tracker_layout/headers/private/kernel/team.h 2010-11-18 17:16:56 UTC (rev 39487) +++ haiku/branches/developer/aldeck/tracker_layout/headers/private/kernel/team.h 2010-11-18 22:36:03 UTC (rev 39488) @@ -84,6 +84,8 @@ status_t _user_get_next_team_info(int32 *cookie, team_info *info); status_t _user_get_team_usage_info(team_id team, int32 who, team_usage_info *info, size_t size); +status_t _user_get_extended_team_info(team_id teamID, uint32 flags, + void* buffer, size_t size, size_t* _sizeNeeded); #ifdef __cplusplus } Copied: haiku/branches/developer/aldeck/tracker_layout/headers/private/libroot/extended_system_info.h (from rev 39487, haiku/trunk/headers/private/libroot/extended_system_info.h) =================================================================== --- haiku/branches/developer/aldeck/tracker_layout/headers/private/libroot/extended_system_info.h (rev 0) +++ haiku/branches/developer/aldeck/tracker_layout/headers/private/libroot/extended_system_info.h 2010-11-18 22:36:03 UTC (rev 39488) @@ -0,0 +1,31 @@ +/* + * Copyright 2010, Ingo Weinhold, ingo_weinhold@xxxxxxx + * Distributed under the terms of the MIT License. + */ +#ifndef _LIBROOT_EXTENDED_SYSTEM_INFO_H +#define _LIBROOT_EXTENDED_SYSTEM_INFO_H + + +/* This is C++ only API. */ +#ifdef __cplusplus + + +#include <OS.h> + + +namespace BPrivate { + + +struct KMessage; + + +status_t get_extended_team_info(team_id teamID, uint32 flags, KMessage& info); + + +} // namespace BPrivate + + +#endif /* __cplusplus */ + + +#endif /* _LIBROOT_EXTENDED_SYSTEM_INFO_H */ Copied: haiku/branches/developer/aldeck/tracker_layout/headers/private/system/extended_system_info_defs.h (from rev 39487, haiku/trunk/headers/private/system/extended_system_info_defs.h) =================================================================== --- haiku/branches/developer/aldeck/tracker_layout/headers/private/system/extended_system_info_defs.h (rev 0) +++ haiku/branches/developer/aldeck/tracker_layout/headers/private/system/extended_system_info_defs.h 2010-11-18 22:36:03 UTC (rev 39488) @@ -0,0 +1,20 @@ +/* + * Copyright 2010, Ingo Weinhold, ingo_weinhold@xxxxxxx + * Distributed under the terms of the MIT License. + */ +#ifndef _SYSTEM_EXTENDED_SYSTEM_INFO_DEFS_H +#define _SYSTEM_EXTENDED_SYSTEM_INFO_DEFS_H + + +enum { + B_TEAM_INFO_BASIC = 0x01, // basic general info + B_TEAM_INFO_THREADS = 0x02, // list of threads + B_TEAM_INFO_IMAGES = 0x04, // list of images + B_TEAM_INFO_AREAS = 0x08, // list of areas + B_TEAM_INFO_SEMAPHORES = 0x10, // list of semaphores + B_TEAM_INFO_PORTS = 0x20, // list of ports + B_TEAM_INFO_FILE_DESCRIPTORS = 0x40 // list of file descriptors +}; + + +#endif /* _SYSTEM_EXTENDED_SYSTEM_INFO_DEFS_H */ Modified: haiku/branches/developer/aldeck/tracker_layout/headers/private/system/syscalls.h =================================================================== --- haiku/branches/developer/aldeck/tracker_layout/headers/private/system/syscalls.h 2010-11-18 17:16:56 UTC (rev 39487) +++ haiku/branches/developer/aldeck/tracker_layout/headers/private/system/syscalls.h 2010-11-18 22:36:03 UTC (rev 39488) @@ -171,6 +171,8 @@ extern status_t _kern_get_next_team_info(int32 *cookie, team_info *info); extern status_t _kern_get_team_usage_info(team_id team, int32 who, team_usage_info *info, size_t size); +extern status_t _kern_get_extended_team_info(team_id teamID, uint32 flags, + void* buffer, size_t size, size_t* _sizeNeeded); extern status_t _kern_block_thread(uint32 flags, bigtime_t timeout); extern status_t _kern_unblock_thread(thread_id thread, status_t status); Modified: haiku/branches/developer/aldeck/tracker_layout/src/add-ons/decorators/SATDecorator/SATGroup.cpp =================================================================== --- haiku/branches/developer/aldeck/tracker_layout/src/add-ons/decorators/SATDecorator/SATGroup.cpp 2010-11-18 17:16:56 UTC (rev 39487) +++ haiku/branches/developer/aldeck/tracker_layout/src/add-ons/decorators/SATDecorator/SATGroup.cpp 2010-11-18 22:36:03 UTC (rev 39488) @@ -9,13 +9,19 @@ #include "SATGroup.h" +#include <vector> + #include <Debug.h> +#include <Message.h> #include "SATWindow.h" #include "StackAndTile.h" #include "Window.h" +using namespace std; + + WindowArea::WindowArea(Crossing* leftTop, Crossing* rightTop, Crossing* leftBottom, Crossing* rightBottom) : @@ -46,6 +52,9 @@ WindowArea::~WindowArea() { + if (fGroup) + fGroup->WindowAreaRemoved(this); + _CleanupCorners(); SetGroup(NULL); } @@ -706,8 +715,6 @@ if (!fSATWindowList.RemoveItem(window)) return false; - _SplitGroupIfNecessary(window); - WindowArea* area = window->GetWindowArea(); if (area) area->_RemoveWindow(window); @@ -784,6 +791,119 @@ } +void +SATGroup::WindowAreaRemoved(WindowArea* area) +{ + _SplitGroupIfNecessary(area); +} + + +status_t +SATGroup::RestoreGroup(const BMessage& archive, StackAndTile* sat) +{ + // create new group + SATGroup* group = new (std::nothrow)SATGroup; + if (!group) + return B_NO_MEMORY; + BReference<SATGroup> groupRef; + groupRef.SetTo(group, true); + + int32 nHTabs, nVTabs; + status_t status; + status = archive.FindInt32("htab_count", &nHTabs); + if (status != B_OK) + return status; + status = archive.FindInt32("vtab_count", &nVTabs); + if (status != B_OK) + return status; + + vector<BReference<Tab> > tempHTabs; + for (int i = 0; i < nHTabs; i++) { + BReference<Tab> tab = group->_AddHorizontalTab(); + if (!tab) + return B_NO_MEMORY; + tempHTabs.push_back(tab); + } + vector<BReference<Tab> > tempVTabs; + for (int i = 0; i < nVTabs; i++) { + BReference<Tab> tab = group->_AddVerticalTab(); + if (!tab) + return B_NO_MEMORY; + tempVTabs.push_back(tab); + } + + BMessage areaArchive; + for (int32 i = 0; archive.FindMessage("area", i, &areaArchive) == B_OK; + i++) { + uint32 leftTab, rightTab, topTab, bottomTab; + if (areaArchive.FindInt32("left_tab", (int32*)&leftTab) != B_OK + || areaArchive.FindInt32("right_tab", (int32*)&rightTab) != B_OK + || areaArchive.FindInt32("top_tab", (int32*)&topTab) != B_OK + || areaArchive.FindInt32("bottom_tab", (int32*)&bottomTab) != B_OK) + return B_ERROR; + + if (leftTab >= tempVTabs.size() || rightTab >= tempVTabs.size()) + return B_BAD_VALUE; + if (topTab >= tempHTabs.size() || bottomTab >= tempHTabs.size()) + return B_BAD_VALUE; + + Tab* left = tempVTabs[leftTab]; + Tab* right = tempVTabs[rightTab]; + Tab* top = tempHTabs[topTab]; + Tab* bottom = tempHTabs[bottomTab]; + + // adding windows to area + int64 windowId; + WindowArea* area = NULL; + for (int32 i = 0; + areaArchive.FindInt64("window", i, &windowId) == B_OK; i++) { + SATWindow* window = sat->FindSATWindow(windowId); + if (!window) + continue; + + if (area == NULL) { + if (!group->AddWindow(window, left, top, right, bottom)) + return B_ERROR; + area = window->GetWindowArea(); + } else { + if (!group->AddWindow(window, area)) + return B_ERROR; + } + } + } + return B_OK; +} + + +status_t +SATGroup::ArchiveGroup(BMessage& archive) +{ + archive.AddInt32("htab_count", fHorizontalTabs.CountItems()); + archive.AddInt32("vtab_count", fVerticalTabs.CountItems()); + + for (int i = 0; i < fWindowAreaList.CountItems(); i++) { + WindowArea* area = fWindowAreaList.ItemAt(i); + int32 leftTab = fVerticalTabs.IndexOf(area->LeftTab()); + int32 rightTab = fVerticalTabs.IndexOf(area->RightTab()); + int32 topTab = fHorizontalTabs.IndexOf(area->TopTab()); + int32 bottomTab = fHorizontalTabs.IndexOf(area->BottomTab()); + + BMessage areaMessage; + areaMessage.AddInt32("left_tab", leftTab); + areaMessage.AddInt32("right_tab", rightTab); + areaMessage.AddInt32("top_tab", topTab); + areaMessage.AddInt32("bottom_tab", bottomTab); + + const SATWindowList& windowList = area->WindowList(); + for (int a = 0; a < windowList.CountItems(); a++) + areaMessage.AddInt64("window", windowList.ItemAt(a)->Id()); + + archive.AddMessage("area", &areaMessage); + } + return B_OK; +} + + BReference<Tab> SATGroup::_AddHorizontalTab(float position) { @@ -860,20 +980,19 @@ void -SATGroup::_SplitGroupIfNecessary(SATWindow* removedWindow) +SATGroup::_SplitGroupIfNecessary(WindowArea* removedArea) { // if there are windows stacked in the area we don't need to split - WindowArea* area = removedWindow->GetWindowArea(); - if (!area || area->WindowList().CountItems() > 1) + if (!removedArea || removedArea->WindowList().CountItems() > 1) return; WindowAreaList neighbourWindows; - _FillNeighbourList(neighbourWindows, removedWindow->GetWindowArea()); + _FillNeighbourList(neighbourWindows, removedArea); bool ownGroupProcessed = false; WindowAreaList newGroup; - while (_FindConnectedGroup(neighbourWindows, removedWindow, newGroup)) { + while (_FindConnectedGroup(neighbourWindows, removedArea, newGroup)) { STRACE_SAT("Connected group found; %i windows:\n", (int)newGroup.CountItems()); for (int i = 0; i < newGroup.CountItems(); i++) { @@ -903,8 +1022,6 @@ SATGroup::_FillNeighbourList(WindowAreaList& neighbourWindows, WindowArea* area) { - if (!area) - return; _LeftNeighbours(neighbourWindows, area); _RightNeighbours(neighbourWindows, area); _TopNeighbours(neighbourWindows, area); @@ -1018,19 +1135,16 @@ bool -SATGroup::_FindConnectedGroup(WindowAreaList& seedList, - SATWindow* removedWindow, WindowAreaList& newGroup) +SATGroup::_FindConnectedGroup(WindowAreaList& seedList, WindowArea* removedArea, + WindowAreaList& newGroup) { if (seedList.CountItems() == 0) return false; - WindowArea* vetoArea = removedWindow->GetWindowArea(); - if (!vetoArea) - return false; WindowArea* area = seedList.RemoveItemAt(0); newGroup.AddItem(area); - _FollowSeed(area, vetoArea, seedList, newGroup); + _FollowSeed(area, removedArea, seedList, newGroup); return true; } Modified: haiku/branches/developer/aldeck/tracker_layout/src/add-ons/decorators/SATDecorator/SATGroup.h =================================================================== --- haiku/branches/developer/aldeck/tracker_layout/src/add-ons/decorators/SATDecorator/SATGroup.h 2010-11-18 17:16:56 UTC (rev 39487) +++ haiku/branches/developer/aldeck/tracker_layout/src/add-ons/decorators/SATDecorator/SATGroup.h 2010-11-18 22:36:03 UTC (rev 39488) @@ -133,7 +133,7 @@ Crossing* rightBottom); ~WindowArea(); - bool SetGroup(SATGroup* group); + bool SetGroup(SATGroup* group); const SATWindowList& WindowList() { return fWindowList; } const SATWindowList& LayerOrder() { return fWindowLayerOrder; } @@ -200,7 +200,10 @@ typedef BObjectList<WindowArea> WindowAreaList; typedef BObjectList<Tab> TabList; +class BMessage; +class StackAndTile; + class SATGroup : public BReferenceable { public: friend class Tab; @@ -233,6 +236,12 @@ Tab* FindHorizontalTab(float position); Tab* FindVerticalTab(float position); + void WindowAreaRemoved(WindowArea* area); + + static status_t RestoreGroup(const BMessage& archive, + StackAndTile* sat); + status_t ArchiveGroup(BMessage& archive); + private: BReference<Tab> _AddHorizontalTab(float position = 0); BReference<Tab> _AddVerticalTab(float position = 0); @@ -243,7 +252,7 @@ Tab* _FindTab(const TabList& list, float position); void _SplitGroupIfNecessary( - SATWindow* removedWindow); + WindowArea* removedArea); void _FillNeighbourList( WindowAreaList& neighbourWindows, WindowArea* area); @@ -260,7 +269,7 @@ WindowAreaList& neighbourWindows, WindowArea* window); bool _FindConnectedGroup(WindowAreaList& seedList, - SATWindow* removedWindow, + WindowArea* removedArea, WindowAreaList& newGroup); void _FollowSeed(WindowArea* area, WindowArea* veto, WindowAreaList& seedList, Modified: haiku/branches/developer/aldeck/tracker_layout/src/add-ons/decorators/SATDecorator/SATWindow.cpp =================================================================== --- haiku/branches/developer/aldeck/tracker_layout/src/add-ons/decorators/SATDecorator/SATWindow.cpp 2010-11-18 17:16:56 UTC (rev 39487) +++ haiku/branches/developer/aldeck/tracker_layout/src/add-ons/decorators/SATDecorator/SATWindow.cpp 2010-11-18 22:36:03 UTC (rev 39488) @@ -289,6 +289,8 @@ fSATTiling(this), fShutdown(false) { + fId = _GenerateId(); + fDesktop = fWindow->Desktop(); fGroupCookie = &fOwnGroupCookie; @@ -680,7 +682,30 @@ } +uint64 +SATWindow::Id() +{ + return fId; +} + + +bool +SATWindow::SetSettings(const BMessage& message) +{ + if (message.FindInt64("window_id", (int64*)&fId) != B_OK) + return false; + return true; +} + + void +SATWindow::GetSettings(BMessage& message) +{ + message.AddInt64("window_id", fId); +} + + +void SATWindow::_InitGroup() { ASSERT(fGroupCookie == &fOwnGroupCookie); @@ -744,3 +769,13 @@ fGroupCookie->SetSizeLimits(minWidth, B_SIZE_UNLIMITED, minHeight, B_SIZE_UNLIMITED); } + + +uint64 +SATWindow::_GenerateId() +{ + bigtime_t time = real_time_clock_usecs(); + srand(time); + int16 randNumber = rand(); + return (time & ~0xFFFF) | randNumber; +} Modified: haiku/branches/developer/aldeck/tracker_layout/src/add-ons/decorators/SATDecorator/SATWindow.h =================================================================== --- haiku/branches/developer/aldeck/tracker_layout/src/add-ons/decorators/SATDecorator/SATWindow.h 2010-11-18 17:16:56 UTC (rev 39487) +++ haiku/branches/developer/aldeck/tracker_layout/src/add-ons/decorators/SATDecorator/SATWindow.h 2010-11-18 22:36:03 UTC (rev 39488) @@ -128,9 +128,14 @@ bool SetStackedTabMoving(bool moving = true); void TabLocationMoved(float location, bool shifting); + uint64 Id(); + + bool SetSettings(const BMessage& message); + void GetSettings(BMessage& message); private: void _InitGroup(); void _UpdateSizeLimits(); + uint64 _GenerateId(); Window* fWindow; StackAndTile* fStackAndTile; @@ -158,6 +163,8 @@ float fOriginalWidth; float fOriginalHeight; + + uint64 fId; }; Modified: haiku/branches/developer/aldeck/tracker_layout/src/add-ons/decorators/SATDecorator/StackAndTile.cpp =================================================================== --- haiku/branches/developer/aldeck/tracker_layout/src/add-ons/decorators/SATDecorator/StackAndTile.cpp 2010-11-18 17:16:56 UTC (rev 39487) +++ haiku/branches/developer/aldeck/tracker_layout/src/add-ons/decorators/SATDecorator/StackAndTile.cpp 2010-11-18 22:36:03 UTC (rev 39488) @@ -334,8 +334,7 @@ if (!satWindow) return false; - //return satWindow->SetSettings(settings); - return false; + return satWindow->SetSettings(settings); } @@ -346,7 +345,7 @@ if (!satWindow) return; - //satWindow->GetSettings(&settings); + satWindow->GetSettings(settings); } @@ -358,19 +357,29 @@ if (it != fSATWindowMap.end()) return it->second; - // for now don't create window on the fly - return NULL; // If we don't know this window, memory allocation might has been failed - // previously. Try to add window now -/* SATWindow* satWindow = new (std::nothrow)SATWindow( - window, this); + // previously. Try to add the window now. + SATWindow* satWindow = new (std::nothrow)SATWindow(this, window); if (satWindow) fSATWindowMap[window] = satWindow; - return satWindow;*/ + return satWindow; } +SATWindow* +StackAndTile::FindSATWindow(uint64 id) +{ + for (SATWindowMap::const_iterator it = fSATWindowMap.begin(); + it != fSATWindowMap.end(); it++) { + SATWindow* window = it->second; + if (window->Id() == id) + return window; + } + return NULL; +} + + void StackAndTile::_StartSAT() { Modified: haiku/branches/developer/aldeck/tracker_layout/src/add-ons/decorators/SATDecorator/StackAndTile.h =================================================================== --- haiku/branches/developer/aldeck/tracker_layout/src/add-ons/decorators/SATDecorator/StackAndTile.h 2010-11-18 17:16:56 UTC (rev 39487) +++ haiku/branches/developer/aldeck/tracker_layout/src/add-ons/decorators/SATDecorator/StackAndTile.h 2010-11-18 22:36:03 UTC (rev 39488) @@ -89,6 +89,7 @@ { return fSATKeyPressed; } SATWindow* GetSATWindow(Window* window); + SATWindow* FindSATWindow(uint64 id); private: void _StartSAT(); Modified: haiku/branches/developer/aldeck/tracker_layout/src/add-ons/index_server/audiotags/AudioTagAnalyser.cpp =================================================================== --- haiku/branches/developer/aldeck/tracker_layout/src/add-ons/index_server/audiotags/AudioTagAnalyser.cpp 2010-11-18 17:16:56 UTC (rev 39487) +++ haiku/branches/developer/aldeck/tracker_layout/src/add-ons/index_server/audiotags/AudioTagAnalyser.cpp 2010-11-18 22:36:03 UTC (rev 39488) @@ -2,6 +2,7 @@ #include <new> +#include <MediaFile.h> #include <Path.h> #include <audioproperties.h> @@ -24,7 +25,7 @@ } -#include <stdio.h> + void AudioTagAnalyser::AnalyseEntry(const entry_ref& ref) { @@ -41,16 +42,43 @@ printf("artist: %s, title: %s, album: %s\n", artist.toCString(), title.toCString(), album.toCString()); - BFile file(path.Path(), B_READ_ONLY); + BFile file(&ref, B_READ_ONLY); if (file.InitCheck() != B_OK) return; const char* cArtist = artist.toCString(true); - file.WriteAttr("Media:Artist", B_STRING_TYPE, 0, cArtist, strlen(cArtist)); + file.WriteAttr("Audio:Artist", B_STRING_TYPE, 0, cArtist, strlen(cArtist)); const char* cTitle = title.toCString(true); file.WriteAttr("Media:Title", B_STRING_TYPE, 0, cTitle, strlen(cTitle)); const char* cAlbum = album.toCString(true); - file.WriteAttr("Media:Album", B_STRING_TYPE, 0, cAlbum, strlen(cAlbum)); + file.WriteAttr("Audio:Album", B_STRING_TYPE, 0, cAlbum, strlen(cAlbum)); +/* + BMediaFile mediaFile(&ref); + if (mediaFile.InitCheck() != B_OK) + return; + + BMessage metaData; + if (mediaFile.GetMetaData(&metaData) != B_OK) + return; + + BFile file(&ref, B_READ_ONLY); + if (file.InitCheck() != B_OK) + return; + + BString dataString; + if (metaData.FindString("artist", &dataString) == B_OK) + file.WriteAttr("Audio:Artist", B_STRING_TYPE, 0, dataString.String(), + dataString.Length()); + if (metaData.FindString("title", &dataString) == B_OK) + file.WriteAttr("Media:Title", B_STRING_TYPE, 0, dataString.String(), + dataString.Length()); + if (metaData.FindString("album", &dataString) == B_OK) + file.WriteAttr("Audio:Album", B_STRING_TYPE, 0, dataString.String(), + dataString.Length()); + if (metaData.FindString("track", &dataString) == B_OK) + file.WriteAttr("Audio:Track", B_STRING_TYPE, 0, dataString.String(), + dataString.Length());*/ + } Property changes on: haiku/branches/developer/aldeck/tracker_layout/src/add-ons/kernel/bus_managers/acpi ___________________________________________________________________ Modified: svn:mergeinfo - /haiku/trunk/src/add-ons/kernel/bus_managers/acpi:37809-39445 /haiku/vendor/acpica/current:33139-36866 + /haiku/trunk/src/add-ons/kernel/bus_managers/acpi:37809-39487 /haiku/vendor/acpica/current:33139-36866 Property changes on: haiku/branches/developer/aldeck/tracker_layout/src/add-ons/kernel/drivers/network/wlan/atheroswifi/dev/ath ___________________________________________________________________ Modified: svn:mergeinfo - /haiku/trunk/src/add-ons/kernel/drivers/network/wlan/atheroswifi/dev/ath:37809-39445 /haiku/vendor/freebsd/HEAD/dev/ath/r204100:35677-35713 /haiku/vendor/freebsd/current/dev/ath:34314-35676 + /haiku/trunk/src/add-ons/kernel/drivers/network/wlan/atheroswifi/dev/ath:37809-39487 /haiku/vendor/freebsd/HEAD/dev/ath/r204100:35677-35713 /haiku/vendor/freebsd/current/dev/ath:34314-35676 Property changes on: haiku/branches/developer/aldeck/tracker_layout/src/add-ons/kernel/drivers/network/wlan/iprowifi4965/dev/iwn ___________________________________________________________________ Modified: svn:mergeinfo - /haiku/trunk/src/add-ons/kernel/drivers/network/wlan/iprowifi4965/dev/iwn:37809-39445 /haiku/vendor/freebsd/RELEASE_8_1_0/dev/iwn:38717 /haiku/vendor/freebsd/current/dev/iwn:34314-38716 + /haiku/trunk/src/add-ons/kernel/drivers/network/wlan/iprowifi4965/dev/iwn:37809-39487 /haiku/vendor/freebsd/RELEASE_8_1_0/dev/iwn:38717 /haiku/vendor/freebsd/current/dev/iwn:34314-38716 Modified: haiku/branches/developer/aldeck/tracker_layout/src/apps/debugger/user_interface/gui/teams_window/TeamsListView.cpp =================================================================== --- haiku/branches/developer/aldeck/tracker_layout/src/apps/debugger/user_interface/gui/teams_window/TeamsListView.cpp 2010-11-18 17:16:56 UTC (rev 39487) +++ haiku/branches/developer/aldeck/tracker_layout/src/apps/debugger/user_interface/gui/teams_window/TeamsListView.cpp 2010-11-18 22:36:03 UTC (rev 39488) @@ -9,122 +9,199 @@ #include <stdio.h> #include <string.h> -#include <ListView.h> #include <Bitmap.h> +#include <ColumnTypes.h> #include <FindDirectory.h> +#include <MimeType.h> +#include <MessageRunner.h> #include <NodeInfo.h> #include <Path.h> #include <Roster.h> -#include <MimeType.h> -#include <MessageRunner.h> #include <String.h> #include "TeamsListView.h" -TeamListItem::TeamListItem(team_info& info) +// #pragma mark - BitmapStringField + + +BBitmapStringField::BBitmapStringField(BBitmap* bitmap, const char* string) : - BStringItem("", false), - fIcon(NULL) + Inherited(string), + fBitmap(bitmap) { - _SetTo(info); } -TeamListItem::TeamListItem(team_id team) - : - BStringItem("", false), - fIcon(NULL) +BBitmapStringField::~BBitmapStringField() { - team_info info; - get_team_info(team, &info); - _SetTo(info); + delete fBitmap; } -TeamListItem::~TeamListItem() +void +BBitmapStringField::SetBitmap(BBitmap* bitmap) { - delete fIcon; + delete fBitmap; + fBitmap = bitmap; + // TODO: cause a redraw? } +// #pragma mark - TeamsColumn + + +float TeamsColumn::sTextMargin = 0.0; + + +TeamsColumn::TeamsColumn(const char* title, float width, float minWidth, + float maxWidth, uint32 truncateMode, alignment align) + : + Inherited(title, width, minWidth, maxWidth, align), + fTruncateMode(truncateMode) +{ + SetWantsEvents(true); +} + + void -TeamListItem::DrawItem(BView* owner, BRect frame, bool complete) +TeamsColumn::DrawField(BField* field, BRect rect, BView* parent) { - BRect rect = frame; + BBitmapStringField* bitmapField + = dynamic_cast<BBitmapStringField*>(field); + BStringField* stringField = dynamic_cast<BStringField*>(field); - if (fIcon) { - rgb_color highColor = owner->HighColor(); - rgb_color lowColor = owner->LowColor(); + if (bitmapField) { + const BBitmap* bitmap = bitmapField->Bitmap(); - if (IsSelected() || complete) { - // Draw the background... - if (IsSelected()) - owner->SetLowColor(tint_color(lowColor, B_DARKEN_2_TINT)); + // figure out the placement + float x = 0.0; + BRect r = bitmap ? bitmap->Bounds() : BRect(0, 0, 15, 15); + float y = rect.top + ((rect.Height() - r.Height()) / 2); + float width = 0.0; [... truncated: 4712 lines follow ...]