From f7d9c0110d591407d0dd572b281d8fbbf706a29f Mon Sep 17 00:00:00 2001 From: Alexander von Gluck IV Date: Thu, 8 Dec 2016 18:43:39 +0000 Subject: [PATCH] SoftwareUpdater: Initial work on a GUI software updater * Planning on having a notification box when updates available. * Clicking the notification box will pop up the SoftwareUpdater with a simple "Apply Updates" button * Currently users need to know to 'pkgman update' --- data/artwork/icons/App_SoftwareUpdater | Bin 0 -> 43027 bytes src/apps/Jamfile | 1 + src/apps/softwareupdater/Jamfile | 10 +++ src/apps/softwareupdater/SoftwareUpdater.rdef | 65 ++++++++++++++++++ .../softwareupdater/SoftwareUpdaterApp.cpp | 48 +++++++++++++ src/apps/softwareupdater/SoftwareUpdaterApp.h | 23 +++++++ .../softwareupdater/SoftwareUpdaterWindow.cpp | 63 +++++++++++++++++ .../softwareupdater/SoftwareUpdaterWindow.h | 23 +++++++ 8 files changed, 233 insertions(+) create mode 100644 data/artwork/icons/App_SoftwareUpdater create mode 100644 src/apps/softwareupdater/Jamfile create mode 100644 src/apps/softwareupdater/SoftwareUpdater.rdef create mode 100644 src/apps/softwareupdater/SoftwareUpdaterApp.cpp create mode 100644 src/apps/softwareupdater/SoftwareUpdaterApp.h create mode 100644 src/apps/softwareupdater/SoftwareUpdaterWindow.cpp create mode 100644 src/apps/softwareupdater/SoftwareUpdaterWindow.h diff --git a/data/artwork/icons/App_SoftwareUpdater b/data/artwork/icons/App_SoftwareUpdater new file mode 100644 index 0000000000000000000000000000000000000000..3ede2c58e8df488e91958f7ef413050b59664774 GIT binary patch literal 43027 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�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 literal 0 HcmV?d00001 diff --git a/src/apps/Jamfile b/src/apps/Jamfile index 18985682b9..5833742768 100644 --- a/src/apps/Jamfile +++ b/src/apps/Jamfile @@ -49,6 +49,7 @@ HaikuSubInclude resedit ; HaikuSubInclude screenshot ; HaikuSubInclude serialconnect ; HaikuSubInclude showimage ; +HaikuSubInclude softwareupdater ; HaikuSubInclude soundrecorder ; HaikuSubInclude stylededit ; HaikuSubInclude sudoku ; diff --git a/src/apps/softwareupdater/Jamfile b/src/apps/softwareupdater/Jamfile new file mode 100644 index 0000000000..7342a2aed4 --- /dev/null +++ b/src/apps/softwareupdater/Jamfile @@ -0,0 +1,10 @@ +SubDir HAIKU_TOP src apps softwareupdater ; + +UsePrivateHeaders interface shared ; + +Application SoftwareUpdater : + SoftwareUpdaterApp.cpp + SoftwareUpdaterWindow.cpp + : be localestub tracker translation [ TargetLibsupc++ ] + : SoftwareUpdater.rdef +; diff --git a/src/apps/softwareupdater/SoftwareUpdater.rdef b/src/apps/softwareupdater/SoftwareUpdater.rdef new file mode 100644 index 0000000000..d970cd9fb9 --- /dev/null +++ b/src/apps/softwareupdater/SoftwareUpdater.rdef @@ -0,0 +1,65 @@ +resource app_signature "application/x-vnd.haiku-softwareupdater"; + +resource app_flags B_SINGLE_LAUNCH; + +resource app_version { + major = 1, + middle = 0, + minor = 0, + variety = B_APPV_BETA, + internal = 0, + short_info = "SoftwareUpdater", + long_info = "Software Updater ©2008-2016 Haiku" +}; + +resource vector_icon { + $"6E6369661F0500040065035D2B0C0385501C0200060238B0AD39B313BC39613B" + $"3C1049FADA48DA6900663200FF834F1C02000602BAC477B68B1E383D42BC6FBF" + $"4A77B34B835900A3784BFF76401C020006023A5A93364779BA1E153E2FD44ABA" + $"0945BA0400E5B07BFFFFCE9E03945F2C02000602B9A55E3826F4BA0888BB71D4" + $"49A1AB4BD47500BE8852FFDCA977020006023A32CCB3AE813614FC3C7C854AB1" + $"F4444C1900FCCC9DFFEEB78103FFDCBA020006023CBAB636B0FDB853093E5B6E" + $"484D0548998100FFE3C7FFF3B476020006023A6157385DA4B8EDF53AF2894AF1" + $"C14968F500FFD5ACFFB0784202000602B56B53389A1FBC6007B91EFD4A160A4B" + $"0820007C4E28FFA1754505000200060237E670B8880E39469D39AE144A52234B" + $"0D2500C6D7F5FF6B94DD03EC6666020006023B2B47BB18653D0FA53D22514829" + $"7046CA1900FFEC4BFFF0A506020006023B3049396B0ABA90833C646E4A101543" + $"299500FFFFFFFFFFF289020006023C71E33A0C78BA15E43C7D21490555494557" + $"00E3EDFFFF9EC2FF03FFACAC020006023A1DA6393F04BBB5BC3C6B074AEA3648" + $"091100F99B05FFFCB23D03003CB00200060230B31E3A09B9BB024238A12F4BAB" + $"534AFF0B00A3043CFFFFDCE603CD4D4D030D296402000602BD498B3E1159BF21" + $"9BBE7D2F4BE71F4AB31300C13E3EFFE27A7A0500020006023B739F3B784BBD5E" + $"1B3D59924AE607487DCF00A9FF00FD038336020006023A3F27371338BB135B3E" + $"3F414A364447949404CBFF67FF04B0040401541C0A07405E485E4C605D4BC93C" + $"C3195C46544508052A472A51405C524A52440A0C384E22432A3B223B382E3E2E" + $"4526562C52375E3A4C4C40460A043E2E423E524552360A053E2E423E5245C3AC" + $"C2453E410A052A3B3E2E3E41BC85C2182ABF590A043E41BC85C2184046C162C1" + $"3E0A0440465234524A405C0A0340464A4640500A06B7BDC1592E4E4057405C2A" + $"512AC1570A04404640572E4EB7BDC1590A044526562C52373E2E0A042243384E" + $"40462A3B0A04223B382E3E2E2A3B0A04404652375E3A4C4C0A06322E323E4246" + $"4C3C4C2C3D260A04322E323E424642350A04322E42354C2C3D260A0442354246" + $"4C3C4C2C0A0338423C4D3C440A0422422252325A32490A04224232493C402D3A" + $"0A043249325A3C503C400A043E42C35DC27AC751BEF3493A0A04C35DC27A4E49" + $"5840C751BEF30A05424BC08BC7B74E5A4E49C35DC27A0A053E423E52C08BC7B7" + $"424BC35DC27A0A07BF592D4DBE2746BE2746C48738C48738BE2731BE27250A01" + $"0100000A0001011001178402040A050107000A020108000A080109000A0D010A" + $"000A0001021001178402040A040105000A060103000A070104000A030106000A" + $"09010B000A0A010D000A0E010F123E34F70000000000003E34F7449611488403" + $"01178400040A0F0110023E34F70000000000003E34F74496114884030A160112" + $"023E34F70000000000003E34F74496114884030A190113023E34F70000000000" + $"003E34F74780004669200A0F0115023E34F70000000000003E34F74780004645" + $"D10A0E010F123E34F70000000000003E34F74893DC48840301178400040A1001" + $"19023E34F70000000000003E34F74780004645D10A18011A023E34F700000000" + $"00003E34F74780004645D10A170112023E34F70000000000003E34F74893DC48" + $"84030A140118023E34F70000000000003E34F74780004645D10A1A0117023E34" + $"F70000000000003E34F74780004645D10A0E010F123E34F70000000000003E34" + $"F74780004645D101178400040A110110023E34F70000000000003E34F7478000" + $"4645D10A120111023E34F70000000000003E34F74780004645D10A150112023E" + $"34F70000000000003E34F74780004645D10A0C010E000A0B010C000A1E011B12" + $"3F10F70000000000003EBC0B40632BC2218601158602040A1E011B123F10F700" + $"00000000003EBC0B40632BC2218601158402040A1E011B123F10F70000000000" + $"003EBC0B40632BC2218601158202040A1E011B023F10F70000000000003EBC0B" + $"40632BC221860A1B011B123F10F70000000000003EBC0BC03647C2D089011784" + $"00040A1D011B023F10F70000000000003EBC0BC03647C2D0890A1C011B123F10" + $"F70000000000003EBC0BC03647C2D08901157C0004" +}; diff --git a/src/apps/softwareupdater/SoftwareUpdaterApp.cpp b/src/apps/softwareupdater/SoftwareUpdaterApp.cpp new file mode 100644 index 0000000000..05b33c4156 --- /dev/null +++ b/src/apps/softwareupdater/SoftwareUpdaterApp.cpp @@ -0,0 +1,48 @@ +/* + * Copyright 2016 Haiku, Inc. All rights reserved. + * Distributed under the terms of the MIT license + * + * Authors: + * Alexander von Gluck IV + */ + +#include "SoftwareUpdaterApp.h" + +#include + +#include + +#include "SoftwareUpdaterWindow.h" + + +#undef B_TRANSLATION_CONTEXT +#define B_TRANSLATION_CONTEXT "SoftwareUpdater" + + +SoftwareUpdaterApp::SoftwareUpdaterApp() + : + BApplication("application/x-vnd.haiku-softwareupdater") +{ +} + + +SoftwareUpdaterApp::~SoftwareUpdaterApp() +{ +} + + +void +SoftwareUpdaterApp::ReadyToRun() +{ + SoftwareUpdaterWindow* window = new SoftwareUpdaterWindow(); + if (window) + window->Show(); +} + + +int +main() +{ + SoftwareUpdaterApp app; + return app.Run(); +} diff --git a/src/apps/softwareupdater/SoftwareUpdaterApp.h b/src/apps/softwareupdater/SoftwareUpdaterApp.h new file mode 100644 index 0000000000..6231e45df5 --- /dev/null +++ b/src/apps/softwareupdater/SoftwareUpdaterApp.h @@ -0,0 +1,23 @@ +/* + * Copyright 2016 Haiku, Inc. All rights reserved. + * Distributed under the terms of the MIT license + * + * Authors: + * Alexander von Gluck IV + */ +#ifndef _SOFTWARE_UPDATER_APP_H +#define _SOFTWARE_UPDATER_APP_H + +#include + + +class SoftwareUpdaterApp : public BApplication { +public: + SoftwareUpdaterApp(); + ~SoftwareUpdaterApp(); + + void ReadyToRun(); +}; + + +#endif diff --git a/src/apps/softwareupdater/SoftwareUpdaterWindow.cpp b/src/apps/softwareupdater/SoftwareUpdaterWindow.cpp new file mode 100644 index 0000000000..c15dcd069c --- /dev/null +++ b/src/apps/softwareupdater/SoftwareUpdaterWindow.cpp @@ -0,0 +1,63 @@ +/* + * Copyright 2016 Haiku, Inc. All rights reserved. + * Distributed under the terms of the MIT license + * + * Authors: + * Alexander von Gluck IV + */ + + +#include "SoftwareUpdaterWindow.h" + +#include + +#include +#include +#include +#include +#include +#include +#include +#include + + +#undef B_TRANSLATION_CONTEXT +#define B_TRANSLATION_CONTEXT "SoftwareUpdater" + + +const uint32 UPDATE_MESSAGE = 'iUPD'; + + +SoftwareUpdaterWindow::SoftwareUpdaterWindow() + : + BWindow(BRect(0, 0, 500, 300), "Software Update", + B_TITLED_WINDOW, B_AUTO_UPDATE_SIZE_LIMITS | B_NOT_ZOOMABLE) +{ + BStringView* introText = new BStringView("intro", + "Software updates are available.", B_WILL_DRAW); + + BButton* updateButton = new BButton("Apply Updates", + new BMessage(UPDATE_MESSAGE)); + + BLayoutBuilder::Group<>(this, B_VERTICAL, 0) + .AddGroup(B_VERTICAL, B_USE_ITEM_SPACING) + .SetInsets(B_USE_WINDOW_SPACING) + .Add(introText) + .Add(updateButton) + ; + CenterOnScreen(); + Show(); +} + + +SoftwareUpdaterWindow::~SoftwareUpdaterWindow() +{ +} + + +bool +SoftwareUpdaterWindow::QuitRequested() +{ + be_app->PostMessage(B_QUIT_REQUESTED); + return true; +} diff --git a/src/apps/softwareupdater/SoftwareUpdaterWindow.h b/src/apps/softwareupdater/SoftwareUpdaterWindow.h new file mode 100644 index 0000000000..2797530ac6 --- /dev/null +++ b/src/apps/softwareupdater/SoftwareUpdaterWindow.h @@ -0,0 +1,23 @@ +/* + * Copyright 2016 Haiku, Inc. All rights reserved. + * Distributed under the terms of the MIT license + * + * Authors: + * Alexander von Gluck IV + */ +#ifndef _SOFTWARE_UPDATER_WINDOW_H +#define _SOFTWARE_UPDATER_WINDOW_H + + +#include + + +class SoftwareUpdaterWindow : public BWindow { +public: + SoftwareUpdaterWindow(); + ~SoftwareUpdaterWindow(); + bool QuitRequested(); +}; + + +#endif