summaryrefslogtreecommitdiff
path: root/indra/newview/llfloaterbulkpermission.h
blob: 23ca45b6115f17ee4cabc35e33564ebc974113ed (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
111
112
113
114
115
116
117
118
119
120
/**
 * @file llfloaterbulkpermissions.h
 * @brief Allow multiple task inventory properties to be set in one go.
 * @author Michelle2 Zenovka
 *
 * $LicenseInfo:firstyear=2008&license=viewerlgpl$
 * Second Life Viewer Source Code
 * Copyright (C) 2010, Linden Research, Inc.
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation;
 * version 2.1 of the License only.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
 * $/LicenseInfo$
 */

#ifndef LL_LLBULKPERMISSION_H
#define LL_LLBULKPERMISSION_H

#include "llinventory.h"
#include "llviewerobject.h"
#include "llvoinventorylistener.h"
#include "lluuid.h"

#include "llfloater.h"
#include "llscrolllistctrl.h"

class LLFloaterBulkPermission : public LLFloater, public LLVOInventoryListener
{
    friend class LLFloaterReg;
public:

    bool postBuild();

private:

    LLFloaterBulkPermission(const LLSD& seed);
    virtual ~LLFloaterBulkPermission() {}

    bool start(); // returns true if the queue has started, otherwise false.
    bool nextObject();
    bool popNext();

    // This is the callback method for the viewer object currently
    // being worked on.
    /*virtual*/ void inventoryChanged(LLViewerObject* obj,
                                 LLInventoryObject::object_list_t* inv,
                                 S32 serial_num,
                                 void* queue);

    // This is called by inventoryChanged
    void handleInventory(LLViewerObject* viewer_obj,
                                LLInventoryObject::object_list_t* inv);


    void updateInventory(LLViewerObject* object,
                                LLViewerInventoryItem* item,
                                U8 key,
                                bool is_new);

    void onCloseBtn();
    void onOkBtn();
    void onApplyBtn();
    void onCommitCopy();
    void onCheckAll() { doCheckUncheckAll(true); }
    void onUncheckAll() { doCheckUncheckAll(false); }

    // returns true if this is done
    bool isDone() const { return (mCurrentObjectID.isNull() || (mObjectIDs.size() == 0)); }

    //Read the settings and Apply the permissions
    void doApply();
    void doCheckUncheckAll(bool check);

private:
    // UI
    LLScrollListCtrl* mMessages;
    LLButton* mCloseBtn;

    // Object Queue
    std::vector<LLUUID> mObjectIDs;
    LLUUID mCurrentObjectID;
    bool mDone;

    bool mBulkChangeIncludeAnimations;
    bool mBulkChangeIncludeBodyParts;
    bool mBulkChangeIncludeClothing;
    bool mBulkChangeIncludeGestures;
    bool mBulkChangeIncludeNotecards;
    bool mBulkChangeIncludeObjects;
    bool mBulkChangeIncludeScripts;
    bool mBulkChangeIncludeSounds;
    bool mBulkChangeIncludeTextures;
    bool mBulkChangeIncludeSettings;
    bool mBulkChangeIncludeMaterials;

    bool mBulkChangeShareWithGroup;
    bool mBulkChangeEveryoneCopy;
    bool mBulkChangeNextOwnerModify;
    bool mBulkChangeNextOwnerCopy;
    bool mBulkChangeNextOwnerTransfer;

    LLUUID mID;

    const char* mStartString;
};

#endif