LnLauncher: fix editing settings.

* While rebuilding the menu is not needed, we still must update it with
  the current settings each time it is open.
This commit is contained in:
Adrien Destugues
2015-11-10 16:02:18 +01:00
parent 4a98c821a7
commit fbcf2df56f

View File

@@ -126,16 +126,17 @@ index 38622e3..34f6da5 100644
2.2.2
From 2b15cabcd06ae85b2af80aa2611989586f048c3c Mon Sep 17 00:00:00 2001
From c8eeace21e37cf80782c5bb43a978e40bfcce511 Mon Sep 17 00:00:00 2001
From: Adrien Destugues <pulkomandy@pulkomandy.tk>
Date: Tue, 10 Nov 2015 14:08:30 +0100
Subject: Remove rescue, add autostart
* remove "rescue" menu, as launch daemon takes care of that now
* add "autostart" menu to allow LnLauncher to not autostart
* only build the menu once instead of each time it is invoked.
diff --git a/source/HandleView.cpp b/source/HandleView.cpp
index 3c46b49..cdef440 100644
index 3c46b49..04c58b3 100644
--- a/source/HandleView.cpp
+++ b/source/HandleView.cpp
@@ -45,9 +45,6 @@ static const char* kPanelRemove = B_TRANSLATE_MARK("Remove This");
@@ -194,7 +195,27 @@ index 3c46b49..cdef440 100644
case 'PSTE':
{ // color drop
rgb_color * col;
@@ -462,11 +469,12 @@ HandleView::ShowPopup( BPoint pos )
@@ -418,19 +425,6 @@ HandleView::MessageReceived( BMessage * msg )
{ // Hide replicants
BDragger::HideAllDraggers();
} break;
- case 'reTR':
- case 'reDB':
- case 'reTE':
- { // rescue menu
- BRoster roster;
- if (msg->what == 'reTR')
- roster.Launch("application/x-vnd.Be-TRAK");
- if (msg->what == 'reDB')
- roster.Launch("application/x-vnd.Be-TSKB");
- if (msg->what == 'reTE')
- roster.Launch("application/x-vnd.Haiku-Terminal");
- }
- break;
case kMsgShutdownSystem:
case kMsgRebootSystem:
{
@@ -462,147 +456,134 @@ HandleView::ShowPopup( BPoint pos )
{
PanelWindow * panel = (PanelWindow*)Window();
@@ -210,128 +231,276 @@ index 3c46b49..cdef440 100644
+ false // label from marked
+ );
BMenu * sub_menu;
@@ -492,7 +500,7 @@ HandleView::ShowPopup( BPoint pos )
sub_menu->FindItem(B_TRANSLATE(kSmallIco))->SetMarked(true);
- BMenu * sub_menu;
-
- sub_menu = new BMenu( B_TRANSLATE(kIcoSize) );
- // check if large
- bool large_icons = false;
- if ( Bounds().Width() > Bounds().Height() )
- {
- if ( Bounds().Width() > 20 )
- large_icons = true;
- } else
- {
- if ( Bounds().Height() > 20 )
- large_icons = true;
- }
+ fIconSizeMenu = new BMenu( B_TRANSLATE(kIcoSize) );
// create items
- sub_menu->AddItem( new BMenuItem(B_TRANSLATE(kLargeIco), new BMessage('Lico')) );
- sub_menu->AddItem( new BMenuItem(B_TRANSLATE(kSmallIco), new BMessage('Sico')) );
- // set mark
- if ( large_icons )
- sub_menu->FindItem(B_TRANSLATE(kLargeIco))->SetMarked(true);
- else
- sub_menu->FindItem(B_TRANSLATE(kSmallIco))->SetMarked(true);
+ fIconSizeMenu->AddItem( new BMenuItem(B_TRANSLATE(kLargeIco), new BMessage('Lico')) );
+ fIconSizeMenu->AddItem( new BMenuItem(B_TRANSLATE(kSmallIco), new BMessage('Sico')) );
// set target
sub_menu->SetTargetForItems( this );
- sub_menu->SetTargetForItems( this );
- menu->AddItem( sub_menu );
+ fMenu->AddItem( sub_menu );
sub_menu = new BMenu( B_TRANSLATE(kThickness));
// check if thick
@@ -511,7 +519,7 @@ HandleView::ShowPopup( BPoint pos )
sub_menu->FindItem(B_TRANSLATE(kThickThin))->SetMarked(true);
-
- sub_menu = new BMenu( B_TRANSLATE(kThickness));
- // check if thick
- bool thin_handle = false;
- if ( Bounds().Width() == 1 || Bounds().Height() == 1 )
- {
- thin_handle = true;
- }
+ fIconSizeMenu->SetTargetForItems( this );
+ fMenu->AddItem(fIconSizeMenu);
+
+ fThicknessMenu = new BMenu( B_TRANSLATE(kThickness));
// create items
- sub_menu->AddItem( new BMenuItem(B_TRANSLATE(kThickNormal), new BMessage('THno')) );
- sub_menu->AddItem( new BMenuItem(B_TRANSLATE(kThickThin), new BMessage('THth')) );
- // set mark
- if ( !thin_handle )
- sub_menu->FindItem(B_TRANSLATE(kThickNormal))->SetMarked(true);
- else
- sub_menu->FindItem(B_TRANSLATE(kThickThin))->SetMarked(true);
+ fThicknessMenu->AddItem( new BMenuItem(B_TRANSLATE(kThickNormal), new BMessage('THno')) );
+ fThicknessMenu->AddItem( new BMenuItem(B_TRANSLATE(kThickThin), new BMessage('THth')) );
// set target
sub_menu->SetTargetForItems( this );
- sub_menu->SetTargetForItems( this );
- menu->AddItem( sub_menu );
+ fMenu->AddItem( sub_menu );
sub_menu = new BMenu( B_TRANSLATE(kScrollspeed));
sub_menu->AddItem( new BMenuItem(B_TRANSLATE(kSpeedSlow), new BMessage('SCsl')) );
@@ -529,7 +537,7 @@ HandleView::ShowPopup( BPoint pos )
sub_menu->FindItem(B_TRANSLATE(kSpeedInstant))->SetMarked(true);
-
- sub_menu = new BMenu( B_TRANSLATE(kScrollspeed));
- sub_menu->AddItem( new BMenuItem(B_TRANSLATE(kSpeedSlow), new BMessage('SCsl')) );
- sub_menu->AddItem( new BMenuItem(B_TRANSLATE(kSpeedNormal), new BMessage('SCno')) );
- sub_menu->AddItem( new BMenuItem(B_TRANSLATE(kSpeedFast), new BMessage('SCfa')) );
- sub_menu->AddItem( new BMenuItem(B_TRANSLATE(kSpeedInstant), new BMessage('SCin')) );
- // check mark
- if ( panel->AnimationDelay() == 500000 )
- sub_menu->FindItem(B_TRANSLATE(kSpeedSlow))->SetMarked(true);
- if ( panel->AnimationDelay() == 100000 )
- sub_menu->FindItem(B_TRANSLATE(kSpeedNormal))->SetMarked(true);
- if ( panel->AnimationDelay() == 20000 )
- sub_menu->FindItem(B_TRANSLATE(kSpeedFast))->SetMarked(true);
- if ( panel->AnimationDelay() == 0 )
- sub_menu->FindItem(B_TRANSLATE(kSpeedInstant))->SetMarked(true);
+ fThicknessMenu->SetTargetForItems( this );
+ fMenu->AddItem(fThicknessMenu);
+
+ fScrollSpeedMenu = new BMenu( B_TRANSLATE(kScrollspeed));
+ fScrollSpeedMenu->AddItem( new BMenuItem(B_TRANSLATE(kSpeedSlow), new BMessage('SCsl')) );
+ fScrollSpeedMenu->AddItem( new BMenuItem(B_TRANSLATE(kSpeedNormal), new BMessage('SCno')) );
+ fScrollSpeedMenu->AddItem( new BMenuItem(B_TRANSLATE(kSpeedFast), new BMessage('SCfa')) );
+ fScrollSpeedMenu->AddItem( new BMenuItem(B_TRANSLATE(kSpeedInstant), new BMessage('SCin')) );
// set target
sub_menu->SetTargetForItems( this );
- sub_menu->SetTargetForItems( this );
- menu->AddItem( sub_menu );
+ fMenu->AddItem( sub_menu );
sub_menu = new BMenu( B_TRANSLATE(kExpOnMouseOver));
sub_menu->AddItem( new BMenuItem(B_TRANSLATE(kOn), new BMessage('Semo')) );
@@ -541,7 +549,7 @@ HandleView::ShowPopup( BPoint pos )
sub_menu->FindItem(B_TRANSLATE(kOff))->SetMarked(true);
-
- sub_menu = new BMenu( B_TRANSLATE(kExpOnMouseOver));
- sub_menu->AddItem( new BMenuItem(B_TRANSLATE(kOn), new BMessage('Semo')) );
- sub_menu->AddItem( new BMenuItem(B_TRANSLATE(kOff), new BMessage('Semf')) );
- // set mark
- if ( panel->IsExpandOnMouseOver() )
- sub_menu->FindItem(B_TRANSLATE(kOn))->SetMarked(true);
- else
- sub_menu->FindItem(B_TRANSLATE(kOff))->SetMarked(true);
+ fScrollSpeedMenu->SetTargetForItems( this );
+ fMenu->AddItem(fScrollSpeedMenu);
+
+ fExpandMenu = new BMenu( B_TRANSLATE(kExpOnMouseOver));
+ fExpandMenu->AddItem( new BMenuItem(B_TRANSLATE(kOn), new BMessage('Semo')) );
+ fExpandMenu->AddItem( new BMenuItem(B_TRANSLATE(kOff), new BMessage('Semf')) );
// set target
sub_menu->SetTargetForItems( this );
- sub_menu->SetTargetForItems( this );
- menu->AddItem( sub_menu );
+ fMenu->AddItem( sub_menu );
sub_menu = new BMenu( B_TRANSLATE(kFloating));
sub_menu->AddItem( new BMenuItem(B_TRANSLATE(kOn), new BMessage('Sfly')) );
@@ -553,7 +561,7 @@ HandleView::ShowPopup( BPoint pos )
sub_menu->FindItem(B_TRANSLATE(kOff))->SetMarked(true);
-
- sub_menu = new BMenu( B_TRANSLATE(kFloating));
- sub_menu->AddItem( new BMenuItem(B_TRANSLATE(kOn), new BMessage('Sfly')) );
- sub_menu->AddItem( new BMenuItem(B_TRANSLATE(kOff), new BMessage('Sfln')) );
- // set mark
- if ( Window()->Feel() == B_FLOATING_ALL_WINDOW_FEEL )
- sub_menu->FindItem(B_TRANSLATE(kOn))->SetMarked(true);
- else
- sub_menu->FindItem(B_TRANSLATE(kOff))->SetMarked(true);
+ fExpandMenu->SetTargetForItems( this );
+ fMenu->AddItem(fExpandMenu);
+
+ fFloatMenu = new BMenu( B_TRANSLATE(kFloating));
+ fFloatMenu->AddItem( new BMenuItem(B_TRANSLATE(kOn), new BMessage('Sfly')) );
+ fFloatMenu->AddItem( new BMenuItem(B_TRANSLATE(kOff), new BMessage('Sfln')) );
// set target
sub_menu->SetTargetForItems( this );
- sub_menu->SetTargetForItems( this );
- menu->AddItem( sub_menu );
+ fMenu->AddItem( sub_menu );
sub_menu = new BMenu( B_TRANSLATE(kPanel));
@@ -561,9 +569,9 @@ HandleView::ShowPopup( BPoint pos )
-
-
- sub_menu = new BMenu( B_TRANSLATE(kPanel));
+ fFloatMenu->SetTargetForItems( this );
+ fMenu->AddItem(fFloatMenu);
+
+ BMenu* sub_menu;
+ sub_menu = new BMenu( B_TRANSLATE(kPanel));
sub_menu->AddItem( new BMenuItem(B_TRANSLATE(kPanelNew), new BMessage('Npan')) );
sub_menu->AddItem( new BMenuItem(B_TRANSLATE(kPanelRemove), new BMessage('Rpan')) );
// set target
sub_menu->SetTargetForItems( this );
- menu->AddItem( sub_menu );
+ fMenu->AddItem( sub_menu );
-
- menu->AddSeparatorItem();
+ fMenu->AddSeparatorItem();
sub_menu = new BMenu( B_TRANSLATE(kReplicants));
sub_menu->AddItem( new BMenuItem(B_TRANSLATE(kRepShow), new BMessage('REsh')) );
@@ -575,34 +583,26 @@ HandleView::ShowPopup( BPoint pos )
sub_menu->FindItem(B_TRANSLATE(kRepHide))->SetMarked(true);
// set target
sub_menu->SetTargetForItems( this );
-
- sub_menu = new BMenu( B_TRANSLATE(kReplicants));
- sub_menu->AddItem( new BMenuItem(B_TRANSLATE(kRepShow), new BMessage('REsh')) );
- sub_menu->AddItem( new BMenuItem(B_TRANSLATE(kRepHide), new BMessage('REhi')) );
- // set mark
- if ( BDragger::AreDraggersDrawn() )
- sub_menu->FindItem(B_TRANSLATE(kRepShow))->SetMarked(true);
- else
- sub_menu->FindItem(B_TRANSLATE(kRepHide))->SetMarked(true);
- // set target
- sub_menu->SetTargetForItems( this );
- menu->AddItem( sub_menu );
-
- sub_menu = new BMenu( B_TRANSLATE(kRescue));
- sub_menu->AddItem( new BMenuItem(B_TRANSLATE(kRescueTracker), new BMessage('reTR')) );
- sub_menu->AddItem( new BMenuItem(B_TRANSLATE(kRescueDeskbar), new BMessage('reDB')) );
- sub_menu->AddItem( new BMenuItem(B_TRANSLATE(kStartTerminal), new BMessage('reTE')) );
- // set target
+ fMenu->AddItem( sub_menu );
+
+ fMenu->AddSeparatorItem();
+
+ fReplicantsMenu = new BMenu( B_TRANSLATE(kReplicants));
+ fReplicantsMenu->AddItem( new BMenuItem(B_TRANSLATE(kRepShow), new BMessage('REsh')) );
+ fReplicantsMenu->AddItem( new BMenuItem(B_TRANSLATE(kRepHide), new BMessage('REhi')) );
// set target
- sub_menu->SetTargetForItems( this );
- menu->AddItem( sub_menu );
+ fMenu->AddItem( sub_menu );
sub_menu = new BMenu( B_TRANSLATE(kShutdown));
-
- sub_menu = new BMenu( B_TRANSLATE(kShutdown));
+ fReplicantsMenu->SetTargetForItems( this );
+ fMenu->AddItem(fReplicantsMenu);
+
+ sub_menu = new BMenu( B_TRANSLATE(kShutdown));
sub_menu->AddItem( new BMenuItem(B_TRANSLATE(kShutdownReboot), new BMessage(kMsgRebootSystem)) );
sub_menu->AddItem( new BMenuItem(B_TRANSLATE(kShutdownPoweroff), new BMessage(kMsgShutdownSystem)) );
// set target
sub_menu->SetTargetForItems( this );
- menu->AddItem( sub_menu );
+ fMenu->AddItem( sub_menu );
-
- menu->AddSeparatorItem();
+ fMenu->AddSeparatorItem();
-
- menu->AddItem( new BMenuItem(B_TRANSLATE(kQuit), new BMessage('Quit')) );
+ fMenu->AddItem( fAutoStartMenu = new BMenuItem(B_TRANSLATE("Autostart"), new BMessage('Auto')) );
+ fMenu->AddItem( new BMenuItem(B_TRANSLATE(kQuit), new BMessage('Quit')) );
- menu->SetTargetForItems( this );
+ fMenu->SetTargetForItems( this );
+ fMenu->AddItem( sub_menu );
+
+ fMenu->AddSeparatorItem();
+
+ fMenu->AddItem( fAutoStartMenu = new BMenuItem(B_TRANSLATE("Autostart"), new BMessage('Auto')) );
+ fMenu->AddItem( new BMenuItem(B_TRANSLATE(kQuit), new BMessage('Quit')) );
+
+ fMenu->SetTargetForItems( this );
+ }
- menu->SetTargetForItems( this );
+ // check if large
+ bool large_icons = false;
+ if ( Bounds().Width() > Bounds().Height() )
+ {
+ if ( Bounds().Width() > 20 )
+ large_icons = true;
+ } else
+ {
+ if ( Bounds().Height() > 20 )
+ large_icons = true;
+ }
+ // set mark
+ fIconSizeMenu->FindItem(B_TRANSLATE(kLargeIco))->SetMarked(large_icons);
+ fIconSizeMenu->FindItem(B_TRANSLATE(kSmallIco))->SetMarked(!large_icons);
- menu->Go(
+ fMenu->Go(
pos,
true, // delivers msg
true // open anyway
);
- pos,
- true, // delivers msg
- true // open anyway
- );
-
- delete menu;
+ // check if thick
+ bool thin_handle = false;
+ if ( Bounds().Width() == 1 || Bounds().Height() == 1 )
+ {
+ thin_handle = true;
+ }
+ // set mark
+ fThicknessMenu->FindItem(B_TRANSLATE(kThickNormal))->SetMarked(thin_handle);
+ fThicknessMenu->FindItem(B_TRANSLATE(kThickThin))->SetMarked(!thin_handle);
+
+ // check mark
+ int delay = panel->AnimationDelay();
+ fScrollSpeedMenu->FindItem(B_TRANSLATE(kSpeedSlow))->SetMarked(delay == 500000);
+ fScrollSpeedMenu->FindItem(B_TRANSLATE(kSpeedNormal))->SetMarked(delay == 100000);
+ fScrollSpeedMenu->FindItem(B_TRANSLATE(kSpeedFast))->SetMarked(delay == 20000);
+ fScrollSpeedMenu->FindItem(B_TRANSLATE(kSpeedInstant))->SetMarked(delay == 0);
+
+ // set mark
+ bool floating = Window()->Feel() == B_FLOATING_ALL_WINDOW_FEEL;
+ fFloatMenu->FindItem(B_TRANSLATE(kOn))->SetMarked(floating);
+ fFloatMenu->FindItem(B_TRANSLATE(kOff))->SetMarked(!floating);
+
+ // set mark
+ bool expand = panel->IsExpandOnMouseOver();
+ fExpandMenu->FindItem(B_TRANSLATE(kOn))->SetMarked(expand);
+ fExpandMenu->FindItem(B_TRANSLATE(kOff))->SetMarked(!expand);
+
+ // set mark
+ bool dragger = BDragger::AreDraggersDrawn();
+ fReplicantsMenu->FindItem(B_TRANSLATE(kRepShow))->SetMarked(dragger);
+ fReplicantsMenu->FindItem(B_TRANSLATE(kRepHide))->SetMarked(!dragger);
+
+ fMenu->Go(
+ pos,
+ true, // delivers msg
+ true // open anyway
+ );
}
diff --git a/source/HandleView.h b/source/HandleView.h
index 86d84a6..02c3c9f 100644
index 86d84a6..b143738 100644
--- a/source/HandleView.h
+++ b/source/HandleView.h
@@ -3,6 +3,9 @@
@@ -3,6 +3,10 @@
#include <View.h>
+class BMenu;
+class BMenuItem;
+class BPopUpMenu;
+
class HandleView : public BView
{
public:
@@ -25,6 +28,9 @@ class HandleView : public BView
@@ -25,6 +29,15 @@ class HandleView : public BView
bool m_mouse_down;
bool m_moving_panel;
int32 m_buttons;
+
+ BPopUpMenu* fMenu;
+ BMenu* fIconSizeMenu;
+ BMenu* fThicknessMenu;
+ BMenu* fScrollSpeedMenu;
+ BMenu* fExpandMenu;
+ BMenu* fFloatMenu;
+ BMenu* fReplicantsMenu;
+ BMenuItem* fAutoStartMenu;
void ShowPopup( BPoint );