summaryrefslogtreecommitdiff
path: root/indra/newview/llfirstuse.h
blob: 48943cd9ab1b70a4ff742c9cf6eba640794e9b64 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
/** 
 * @file llfirstuse.h
 * @brief Methods that spawn "first-use" dialogs.
 *
 * $LicenseInfo:firstyear=2003&license=viewergpl$
 * 
 * Copyright (c) 2003-2009, Linden Research, Inc.
 * 
 * Second Life Viewer Source Code
 * The source code in this file ("Source Code") is provided by Linden Lab
 * to you under the terms of the GNU General Public License, version 2.0
 * ("GPL"), unless you have obtained a separate licensing agreement
 * ("Other License"), formally executed by you and Linden Lab.  Terms of
 * the GPL can be found in doc/GPL-license.txt in this distribution, or
 * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
 * 
 * There are special exceptions to the terms and conditions of the GPL as
 * it is applied to this Source Code. View the full text of the exception
 * in the file doc/FLOSS-exception.txt in this software distribution, or
 * online at
 * http://secondlifegrid.net/programs/open_source/licensing/flossexception
 * 
 * By copying, modifying or distributing this software, you acknowledge
 * that you have read and understood your obligations described above,
 * and agree to abide by those obligations.
 * 
 * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
 * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
 * COMPLETENESS OR PERFORMANCE.
 * $/LicenseInfo$
 */

#ifndef LL_LLFIRSTUSE_H
#define LL_LLFIRSTUSE_H

#include <vector>
#include "llstring.h"

/*
1.  On first use of 'sit here', explain how to get up and rotate view. 

2.  On first use of map, explain dbl-click = telport, how hubs/beacons work,
click-drag to move map

3.  First use of pie 'Go To', explain other ways to move around 

4.  First use of 'Create' or 'Edit', explain build toolbar, that you can create
things if build enabled, edit things you own, and that you can ESC to exit it. 

5.  First use of 'Talk to' explain difference between that and regular chat,
reduced range, how to leave conversation, arrow keys to orbit. 

6.  First lft-click that does nothing (land,object):  Explain that rgt-click
gives menu, lft-click interacts or moves if physical

7.  On first receipt of L$ (not rez/derez) explain that objects or people may
give you L$, and how to give someone or something money ('Pay...'). 

8.  After first teleporting and being sent to nearest hub, a dialog explaining
how to find and move toward the beacon. 

9.  On first accept/auto-accept permissions, explain that some objects may be
activated by entering mouselook 'M', or may override your movement keys with
other functions. 

10.  FIrst use of 'wear' or drag object from inventory onto self: 'You can
attach objects to your body by dragging ontl yourelf of rgt-clk->wear from
object or from inventory.

11.  FIrst time you run the client on a system without QuickTime installed.

12. First time you create a flexible object.

13. First time you open the debug menus (ctrl-alt-shift D)

14. First time you create/edit a sculpted prim.
*/

class LLNotification;


class LLFirstUse
{
public:

	// Add a config variable to be reset on resetFirstUse()
	static void addConfigVariable(const std::string& var);
	
	// Sets all controls back to show the dialogs.
	static void disableFirstUse();
	static void resetFirstUse();

	static void useOverrideKeys();
	static void otherAvatarChatFirst(bool enable = true);
	static void sit(bool enable = true);
	static void notUsingDestinationGuide(bool enable = true);
	static void notUsingSidePanel(bool enable = true);
	static void notMoving(bool enable = true);
	static void inventoryOffer(bool enable = true);
	static void receiveLindens(bool enable = true);
	static void useSandbox();
	
protected:
	static void firstUseNotification(const std::string& control_var, bool enable, const std::string& notification_name, LLSD args = LLSD(), LLSD payload = LLSD());
	static std::set<std::string> sConfigVariables;
	static std::map<std::string, boost::shared_ptr<LLNotification> > sNotifications;
};

#endif
// EOF